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.1.90.20100721 (which is 7.2 pre-release). Date: Thu, 23 Jul 2026 18:29:30 GMT Message-ID: <178483137064.1.1152682549257061082.rpms-gdb-dd46ae6cd02d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: dd46ae6cd02dbc9eb72438ede33b83f57ed40471 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogZGQ0NmFlNmNkMDJkYmM5ZWI3MjQzOGVkZTMzYjgzZjU3 ZWQ0MDQ3MQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVjdC5v cmc+CkRhdGUgICA6IDIwMTAtMDctMjFUMjE6MzA6MjArMDA6MDAKU3RhdHMgIDogKzc5OTYvLTUy MjUyIGluIDEwOCBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3Jn L3JwbXMvZ2RiL2MvZGQ0NmFlNmNkMDJkYmM5ZWI3MjQzOGVkZTMzYjgzZjU3ZWQ0MDQ3MT9icmFu Y2g9Zml4LWR1cC1wYXRjaAoKTG9nOgotIFJlYmFzZSB0byBGU0YgR0RCIDcuMS45MC4yMDEwMDcy MSAod2hpY2ggaXMgNy4yIHByZS1yZWxlYXNlKS4KCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9y ZSBiLy5jdnNpZ25vcmUKaW5kZXggNDdjN2NkNi4uNGIwZTRiNCAxMDA2NDQKLS0tIGEvLmN2c2ln bm9yZQorKysgYi8uY3ZzaWdub3JlCkBAIC0xLDIgKzEgQEAKLWdkYi03LjEudGFyLmJ6MgotbGli c3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKK2dkYi03LjEuOTAuMjAxMDA3MjEudGFy LmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtYXR0YWNoLXNlZS12ZHNvLXRlc3QucGF0Y2ggYi9n ZGItNi4zLWF0dGFjaC1zZWUtdmRzby10ZXN0LnBhdGNoCmluZGV4IDU4YTE1ZGIuLmEwOTIzZjgg MTAwNjQ0Ci0tLSBhL2dkYi02LjMtYXR0YWNoLXNlZS12ZHNvLXRlc3QucGF0Y2gKKysrIGIvZ2Ri LTYuMy1hdHRhY2gtc2VlLXZkc28tdGVzdC5wYXRjaApAQCAtMjgsNyArMjgsNyBAQAogK30KIC0t LSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAogKysrIC4vZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9hdHRhY2gtc2VlLXZkc28uZXhwCTYgSnVsIDIwMDcgMTQ6MTQ6NDQgLTAwMDAK LUBAIC0wLDAgKzEsNzkgQEAKK0BAIC0wLDAgKzEsNzIgQEAKICsjIENvcHlyaWdodCAyMDA3CiAr CiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQpAQCAtNDcsMTMgKzQ3LDYgQEAKICsKICsjIFRoaXMgZmlsZSB3YXMg Y3JlYXRlZCBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCiAr Ci0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsK LStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArIyBUaGlzIHRlc3Qgb25seSB3b3Jr cyBvbiBMaW51eAogK2lmIHsgIVtpc3RhcmdldCAiKi0qLWxpbnV4LWdudSoiXSB9IHsKICsgICAg cmV0dXJuIDAKCmRpZmYgLS1naXQgYS9nZGItNi4zLWJ0LXBhc3QtemVyby0yMDA1MTIwMS5wYXRj aCBiL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUxMjAxLnBhdGNoCmluZGV4IDRkNmUyZDguLjEx Yjk0NmQgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUxMjAxLnBhdGNoCisr KyBiL2dkYi02LjMtYnQtcGFzdC16ZXJvLTIwMDUxMjAxLnBhdGNoCkBAIC0xNSwxMSArMTUsMTEg QEAgdGVzdHN1aXRlL2dkYi5iYXNlOgogCiAJUG9ydCB0byBHREItNi43LgogCi1JbmRleDogZ2Ri LTYuNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NldHNob3cuZXhwCitJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NldHNob3cuZXhwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTYuNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2V0c2hvdy5leHAJMjAw Ny0wOC0yMyAyMDoxNDoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi43L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvc2V0c2hvdy5leHAJMjAwNy0xMC0xNSAyMTozNDo1Mi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xMDYsNiArMTA2LDE2IEBAIGlmIHsgIVt0YXJnZXRfaW5mbyBleGlzdHMgdXNlX2dk Yl9zdHViXSAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9zZXRzaG93LmV4cAkyMDEwLTA2LTExIDIyOjU2OjA2LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXRzaG93LmV4cAky MDEwLTA3LTEyIDEwOjQ2OjA2LjAwMDAwMDAwMCArMDIwMAorQEAgLTk2LDYgKzk2LDE2IEBAIGlm IHsgIVt0YXJnZXRfaW5mbyBleGlzdHMgdXNlX2dkYl9zdHViXSAKICAgICAgZGVsZXRlX2JyZWFr cG9pbnRzCiAgICAgIGdkYl90ZXN0ICJydW4iICJTdGFydGluZyBwcm9ncmFtOi4qZm9vIGJhciBi bHVwIGJheiBidWJibGUuKiIgInBhc3NpbmcgYXJncyIKICB9CkBAIC0zNCwxMyArMzQsMTMgQEAg SW5kZXg6IGdkYi02LjcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXRzaG93LmV4cAogKyN0ZXN0 IHNob3cgYmFja3RyYWNlIHBhc3QtemVyby1wYwogK2dkYl90ZXN0ICJzaG93IGJhY2t0cmFjZSBw YXN0LXplcm8tcGMiICJXaGV0aGVyIGJhY2t0cmFjZXMgc2hvdWxkIGNvbnRpbnVlIHBhc3QgYSB6 ZXJvIHBjIHZhbHVlIGlzIG9mZi4iICJzaG93IGJhY2t0cmFjZSBwYXN0LXplcm8tcGMgKG9mZiki CiAgI3Rlc3Qgc2V0IGNoZWNrIHJhbmdlIG9uCi0gZ2RiX3Rlc3QgInNldCBjaGVjayByYW5nZSBv biIgIiIgInNldCBjaGVjayByYW5nZSBvbiIgCisgZ2RiX3Rlc3QgInNldCBjaGVjayByYW5nZSBv biIgIi4qIiAic2V0IGNoZWNrIHJhbmdlIG9uIiAKICAjdGVzdCBzaG93IGNoZWNrIHJhbmdlIG9u Ci1JbmRleDogZ2RiLTYuNy9nZGIvZnJhbWUuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL2ZyYW1lLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi43Lm9yaWcvZ2RiL2ZyYW1lLmMJMjAw Ny0xMC0xMiAyMjozNTo1OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi43L2dkYi9mcmFtZS5j CTIwMDctMTAtMTUgMjE6MzQ6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTMzLDYgKzEzMywxNiBA QCBXaGV0aGVyIGJhY2t0cmFjZXMgc2hvdWxkIGNvbnRpbnVlIHBhc3QgCistLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9mcmFtZS5jCTIwMTAtMDctMTIgMTA6MDA6NTYuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZnJhbWUuYwkyMDEwLTA3LTEyIDEw OjQ1OjE4LjAwMDAwMDAwMCArMDIwMAorQEAgLTE4NSw2ICsxODUsMTYgQEAgV2hldGhlciBiYWNr dHJhY2VzIHNob3VsZCBjb250aW51ZSBwYXN0IAogIAkJICAgIHZhbHVlKTsKICB9CiAgCkBAIC01 Nyw3ICs1Nyw3IEBAIEluZGV4OiBnZGItNi43L2dkYi9mcmFtZS5jCiAgc3RhdGljIGludCBiYWNr dHJhY2VfcGFzdF9lbnRyeTsKICBzdGF0aWMgdm9pZAogIHNob3dfYmFja3RyYWNlX3Bhc3RfZW50 cnkgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi1AQCAtMTQ4Myw5ICsxNDkz LDcgQEAgZ2V0X3ByZXZfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzXworQEAgLTE3ODQs OSArMTc5NCw3IEBAIGdldF9wcmV2X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc18KICAg ICAgfQogIAogICAgaWYgKHRoaXNfZnJhbWUtPmxldmVsID4gMApAQCAtNjgsNyArNjgsNyBAQCBJ bmRleDogZ2RiLTYuNy9nZGIvZnJhbWUuYwogICAgICAgICYmIGdldF9mcmFtZV90eXBlICh0aGlz X2ZyYW1lKSA9PSBOT1JNQUxfRlJBTUUKICAgICAgICAmJiBnZXRfZnJhbWVfdHlwZSAoZ2V0X25l eHRfZnJhbWUgKHRoaXNfZnJhbWUpKSA9PSBOT1JNQUxfRlJBTUUKICAgICAgICAmJiBnZXRfZnJh bWVfcGMgKHRoaXNfZnJhbWUpID09IDApCi1AQCAtMTg1MCw2ICsxODU4LDE3IEBAIHRoZSByZXN0 IG9mIHRoZSBzdGFjayB0cmFjZS4iKSwKK0BAIC0yMjcxLDYgKzIyNzksMTcgQEAgdGhlIHJlc3Qg b2YgdGhlIHN0YWNrIHRyYWNlLiIpLAogIAkJCSAgICZzZXRfYmFja3RyYWNlX2NtZGxpc3QsCiAg CQkJICAgJnNob3dfYmFja3RyYWNlX2NtZGxpc3QpOwogIAoKZGlmZiAtLWdpdCBhL2dkYi02LjMt YnoxNDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNoIGIvZ2RiLTYuMy1iejE0MDUzMi1wcGMt dW53aW5kaW5nLXRlc3QucGF0Y2gKaW5kZXggZDMyNWVlMy4uNjQ5NGNkZSAxMDA2NDQKLS0tIGEv Z2RiLTYuMy1iejE0MDUzMi1wcGMtdW53aW5kaW5nLXRlc3QucGF0Y2gKKysrIGIvZ2RiLTYuMy1i ejE0MDUzMi1wcGMtdW53aW5kaW5nLXRlc3QucGF0Y2gKQEAgLTIxOCw3ICsyMTgsNyBAQCBkaWZm IC11IC1ydU5wIGdkYi02LjMtdW5wYXRjaGVkL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJw Yy1iY2wtcHJvbG9ndWUuYyBnZAogZGlmZiAtdSAtcnVOcCBnZGItNi4zLXVucGF0Y2hlZC9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL3Bvd2VycGMtYmNsLXByb2xvZ3VlLmV4cCBnZGItNi4zL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1iY2wtcHJvbG9ndWUuZXhwCiAtLS0gZ2RiLTYuMy11 bnBhdGNoZWQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9wb3dlcnBjLWJjbC1wcm9sb2d1ZS5leHAJ MTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKICsrKyBnZGItNi4zL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1iY2wtcHJvbG9ndWUuZXhwCTIwMDctMDgtMDIgMTQ6MjE6 MjkuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMCwwICsxLDc5IEBACitAQCAtMCwwICsxLDcyIEBACiAr IyAgIENvcHlyaWdodCAyMDA2LCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKQEAgLTIzOCwxMyArMjM4LDYgQEAgZGlmZiAtdSAtcnVOcCBnZGIt Ni4zLXVucGF0Y2hlZC9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3Bvd2VycGMtYmNsLXByb2xvZ3Vl LmV4cCAKICsjIFRlc3QgdW53aW5kaW5nIGZpeGVzIG9mIHRoZSBQUEMgcGxhdGZvcm0sIHNwZWNp ZmljYWxseSBvbiB0aGUgY29waW5nIHdpdGggQkNMCiArIyBqdW1wIG9mIHRoZSBQSUUgY29kZS4K ICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQot KwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKICtpZiAhW2lzdGFyZ2V0ICJwb3dl cnBjKi0qLWxpbnV4KiJdIHRoZW4gewogKyAgICB2ZXJib3NlICJTa2lwcGluZyBwb3dlcnBjLWxp bnV4IHByb2xvZ3VlIHRlc3RzLiIKICsgICAgcmV0dXJuCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1p YTY0LWluZm8tZnJhbWUtZml4LTIwMDUwNzI1LnBhdGNoIGIvZ2RiLTYuMy1pYTY0LWluZm8tZnJh bWUtZml4LTIwMDUwNzI1LnBhdGNoCmluZGV4IDlkNjEzZmQuLjJlYmFiOWUgMTAwNjQ0Ci0tLSBh L2dkYi02LjMtaWE2NC1pbmZvLWZyYW1lLWZpeC0yMDA1MDcyNS5wYXRjaAorKysgYi9nZGItNi4z LWlhNjQtaW5mby1mcmFtZS1maXgtMjAwNTA3MjUucGF0Y2gKQEAgLTQxLDcgKzQxLDcgQEAgdGVz dHN1aXRlOgogKwogLS0tIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0LXNpZ3Ry YW1wLmV4cC5maXgJMjAwNS0wNy0yNSAxNjo0Mjo1MC4wMDAwMDAwMDAgLTA0MDAKICsrKyBnZGIt Ni4zL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaWE2NC1zaWd0cmFtcC5leHAJMjAwNS0wNy0yNSAx Njo0MjowMS4wMDAwMDAwMDAgLTA0MDAKLUBAIC0wLDAgKzEsNzMgQEAKK0BAIC0wLDAgKzEsNjMg QEAKICsjICAgQ29weXJpZ2h0IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAr CiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQpAQCAtNjMsMTYgKzYzLDYgQEAgdGVzdHN1aXRlOgogKwogKyMgVGhp cyBmaWxlIHdhcyB3cml0dGVuIGJ5IEplZmYgSm9obnN0b24gKGpqb2huc3RuQHJlZGhhdC5jb20p CiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30K LSsKLSsjCi0rIyB0ZXN0IHJ1bm5pbmcgcHJvZ3JhbXMKLSsjCi0rc2V0IHBybXNfaWQgMAotK3Nl dCBidWdfaWQgMAotKwogK2lmICFbaXN0YXJnZXQgImlhNjQtKi0qIl0gdGhlbiB7CiArICAgIHJl dHVybgogK30KCmRpZmYgLS1naXQgYS9nZGItNi4zLWlhNjQtc2lnaWxsLTIwMDUxMTE1LnBhdGNo IGIvZ2RiLTYuMy1pYTY0LXNpZ2lsbC0yMDA1MTExNS5wYXRjaAppbmRleCA1Yzk0MTYwLi4wN2E2 YjQ2IDEwMDY0NAotLS0gYS9nZGItNi4zLWlhNjQtc2lnaWxsLTIwMDUxMTE1LnBhdGNoCisrKyBi L2dkYi02LjMtaWE2NC1zaWdpbGwtMjAwNTExMTUucGF0Y2gKQEAgLTE2LDcgKzE2LDcgQEAgSW5k ZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pYTY0LXNpZ2ls bC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKICsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gvaWE2NC1zaWdpbGwuZXhwCTIwMDgtMTItMDIgMjE6MTA6NTcuMDAwMDAwMDAwICswMTAwCi1A QCAtMCwwICsxLDU5IEBACitAQCAtMCwwICsxLDQ5IEBACiArIyAgIENvcHlyaWdodCAyMDA1IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTM4LDE2 ICszOCw2IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gvaWE2NC1zaWdpbGwuZXhwCiArCiArIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmVmZiBK b2huc3RvbiAoampvaG5zdG5AcmVkaGF0LmNvbSkKICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsK LSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotKyMKLSsjIHRlc3QgcnVubmluZyBwcm9n cmFtcwotKyMKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiAraWYgIVtpc3Rhcmdl dCAiaWE2NC0qLSoiXSB0aGVuIHsKICsgICAgcmV0dXJuCiArfQoKZGlmZiAtLWdpdCBhL2dkYi02 LjMtaW5mZXJpb3Itbm90aWZpY2F0aW9uLTIwMDUwNzIxLnBhdGNoIGIvZ2RiLTYuMy1pbmZlcmlv ci1ub3RpZmljYXRpb24tMjAwNTA3MjEucGF0Y2gKaW5kZXggNWEwMTRmZi4uYTc4OWIxYiAxMDA2 NDQKLS0tIGEvZ2RiLTYuMy1pbmZlcmlvci1ub3RpZmljYXRpb24tMjAwNTA3MjEucGF0Y2gKKysr IGIvZ2RiLTYuMy1pbmZlcmlvci1ub3RpZmljYXRpb24tMjAwNTA3MjEucGF0Y2gKQEAgLTM4LDcg KzM4LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9hdHRhY2gtMzIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2F0dGFjaC0zMi5leHAJMjAwOC0xMi0wNyAxMDowODo1Mi4wMDAwMDAwMDAg KzAxMDAKLUBAIC0wLDAgKzEsMjUyIEBACitAQCAtMCwwICsxLDI0NSBAQAogKyMgQ29weXJpZ2h0 IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpA QCAtNTcsMTMgKzU3LDYgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9hdHRhY2gtMzIuZXhwCiArIwogKyMgVGhpcyB0ZXN0IHdhcyBiYXNlZCBvbiBh dHRhY2guZXhwIGFuZCBtb2RpZmllZCBmb3IgMzIvNjQgYml0IExpbnV4IHN5c3RlbXMuICovCiAr Ci0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsK LStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArIyBPbiBIUC1VWCAxMS4wLCB0aGlz IHRlc3QgaXMgY2F1c2luZyBhIHByb2Nlc3MgcnVubmluZyB0aGUgcHJvZ3JhbQogKyMgImF0dGFj aCIgdG8gYmUgbGVmdCBhcm91bmQgc3Bpbm5pbmcuICBVbnRpbCB3ZSBmaWd1cmUgb3V0IHdoeSwg SSBhbQogKyMgY29tbWVudGluZyBvdXQgdGhlIHRlc3QgdG8gYXZvaWQgcG9sbHV0aW5nIHRpYW1h dCAob3VyIDExLjAgbmlnaHRseQoKZGlmZiAtLWdpdCBhL2dkYi02LjMtaW5oZXJpdGFuY2V0ZXN0 LTIwMDUwNzI2LnBhdGNoIGIvZ2RiLTYuMy1pbmhlcml0YW5jZXRlc3QtMjAwNTA3MjYucGF0Y2gK aW5kZXggNWYzMzU3MS4uYWI4MTk3NiAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1pbmhlcml0YW5jZXRl c3QtMjAwNTA3MjYucGF0Y2gKKysrIGIvZ2RiLTYuMy1pbmhlcml0YW5jZXRlc3QtMjAwNTA3MjYu cGF0Y2gKQEAgLTYyLDcgKzYyLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvYjE0NjgzNS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKICsrKyBnZGItNi44LjUwLjIwMDkwODEx L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2IxNDY4MzUuZXhwCTIwMDktMDgtMTIgMDY6NTg6MjguMDAw MDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDU0IEBACitAQCAtMCwwICsxLDQ3IEBACiArIyBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwogKyMgQ29weXJp Z2h0IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC04NCwxMyArODQsNiBA QCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9iMTQ2ODM1 LmV4cAogKyMgQ2hlY2sgdGhhdCBHREIgY2FuIHByb3Blcmx5IHByaW50IGFuIGluaGVyaXRlZCBt ZW1iZXIgdmFyaWFibGUKICsjIChCdWd6aWxsYSAxNDY4MzUpCiArCi0raWYgJHRyYWNlbGV2ZWwg ewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBi dWdfaWQgMAotKwogK3NldCB0ZXN0ZmlsZSAiYjE0NjgzNSIKICtzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5jYwogK3NldCBzcmNmaWxlMiAke3Rlc3RmaWxlfWIuY2MKCmRpZmYgLS1naXQgYS9nZGIt Ni4zLWxhcmdlLWNvcmUtMjAwNTEyMDYucGF0Y2ggYi9nZGItNi4zLWxhcmdlLWNvcmUtMjAwNTEy MDYucGF0Y2gKaW5kZXggNmY5NDQwMi4uODc4OWE2YSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1sYXJn ZS1jb3JlLTIwMDUxMjA2LnBhdGNoCisrKyBiL2dkYi02LjMtbGFyZ2UtY29yZS0yMDA1MTIwNi5w YXRjaApAQCAtMjUsMTAgKzI1LDEwIEBACiAKIAlQb3J0IHRvIEdEQi02LjcuCiAKLUluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1maWxlLW1lbS5jCitJbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvc3ltZmlsZS1tZW0uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAx MDAxMTUub3JpZy9nZGIvc3ltZmlsZS1tZW0uYwkyMDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bWZpbGUtbWVtLmMJMjAxMC0w MS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL3N5bWZpbGUtbWVtLmMJMjAxMC0wMS0wMSAwODozMTo0Mi4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLW1lbS5jCTIwMTAtMDctMTIgMTA6 NDY6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtNTcsNiArNTcsMTQgQEAKICAjaW5jbHVkZSAiZWxm L2NvbW1vbi5oIgogIApAQCAtNTMsMjAgKzUzLDIwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9zeW1maWxlLW1lbS5jCiAgICBpZiAobmJmZCA9PSBOVUxMKQogICAgICBlcnJvciAo XygiRmFpbGVkIHRvIHJlYWQgYSB2YWxpZCBvYmplY3QgZmlsZSBpbWFnZSBmcm9tIG1lbW9yeS4i KSk7CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMKK0luZGV4OiBn ZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvdGFyZ2V0LmMJMjAxMC0wMS0xNSAwMzoyMjoxMy4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90YXJnZXQuYwkyMDEwLTAxLTE1 IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAotQEAgLTU5LDcgKzU5LDcgQEAgc3RhdGljIGludCBu b3N5bWJvbCAoY2hhciAqLCBDT1JFX0FERFIgKgorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvdGFyZ2V0LmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwkyMDEwLTA3LTEyIDEwOjQ3OjA0LjAwMDAw MDAwMCArMDIwMAorQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGludCBub3N5bWJvbCAoY2hhciAq LCBDT1JFX0FERFIgKgogIAotIHN0YXRpYyB2b2lkIHRjb21wbGFpbiAodm9pZCkgQVRUUl9OT1JF VFVSTjsKKyBzdGF0aWMgdm9pZCB0Y29tcGxhaW4gKHZvaWQpIEFUVFJJQlVURV9OT1JFVFVSTjsK ICAKIC1zdGF0aWMgaW50IG5vbWVtb3J5IChDT1JFX0FERFIsIGNoYXIgKiwgaW50LCBpbnQsIHN0 cnVjdCB0YXJnZXRfb3BzICopOwogK3N0YXRpYyBMT05HRVNUIG5vbWVtb3J5IChDT1JFX0FERFIs IGNoYXIgKiwgaW50LCBpbnQsIHN0cnVjdCB0YXJnZXRfb3BzICopOwogIAogIHN0YXRpYyBpbnQg cmV0dXJuX3plcm8gKHZvaWQpOwogIAotQEAgLTQ5NCw3ICs0OTQsNyBAQCB0YXJnZXRfdGVybWlu YWxfaW5mZXJpb3IgKHZvaWQpCitAQCAtNTEzLDcgKzUxMyw3IEBAIHRhcmdldF90ZXJtaW5hbF9p bmZlcmlvciAodm9pZCkKICAgICgqY3VycmVudF90YXJnZXQudG9fdGVybWluYWxfaW5mZXJpb3Ip ICgpOwogIH0KICAKQEAgLTc1LDcgKzc1LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3RhcmdldC5jCiAgbm9tZW1vcnkgKENPUkVfQUREUiBtZW1hZGRyLCBjaGFyICpteWFkZHIs IGludCBsZW4sIGludCB3cml0ZSwKICAJICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKICB7Ci1AQCAt NzI2LDcgKzcyNiw3IEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKK0BAIC03MTgsNyAr NzE4LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQogIAkgICAgKHZvaWQgKCopIChz dHJ1Y3QgcmVnY2FjaGUgKikpCiAgCSAgICBub3Byb2Nlc3MpOwogICAgZGVfZmF1bHQgKGRlcHJl Y2F0ZWRfeGZlcl9tZW1vcnksCkBAIC04NCw3ICs4NCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi90YXJnZXQuYwogIAkgICAgbm9tZW1vcnkpOwogICAgZGVfZmF1bHQgKHRvX2Zp bGVzX2luZm8sCiAgCSAgICAodm9pZCAoKikgKHN0cnVjdCB0YXJnZXRfb3BzICopKQotQEAgLTE0 OTcsNyArMTQ5Nyw3IEBAIHRhcmdldF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICoK K0BAIC0xNTI2LDcgKzE1MjYsNyBAQCB0YXJnZXRfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqCiAgICAgaXQgbWFrZXMgbm8gcHJvZ3Jlc3MsIGFuZCB0aGVuIHJldHVybiBob3cgbXVj aCB3YXMgdHJhbnNmZXJyZWQpLiAqLwogIAogIGludApAQCAtOTMsNyArOTMsNyBAQCBJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMKICB7CiAgICAvKiBEaXNwYXRjaCB0byB0 aGUgdG9wbW9zdCB0YXJnZXQsIG5vdCB0aGUgZmxhdHRlbmVkIGN1cnJlbnRfdGFyZ2V0LgogICAg ICAgTWVtb3J5IGFjY2Vzc2VzIGNoZWNrIHRhcmdldC0+dG9faGFzXyhhbGxfKW1lbW9yeSwgYW5k IHRoZQotQEAgLTE1MTMsNyArMTUxMyw3IEBAIHRhcmdldF9yZWFkX21lbW9yeSAoQ09SRV9BRERS IG1lbWFkZHIsIGcKK0BAIC0xNTQyLDcgKzE1NDIsNyBAQCB0YXJnZXRfcmVhZF9tZW1vcnkgKENP UkVfQUREUiBtZW1hZGRyLCBnCiAgICAgdGhlIHRhcmdldCdzIHN0YWNrLiAgVGhpcyBtYXkgdHJp Z2dlciBkaWZmZXJlbnQgY2FjaGUgYmVoYXZpb3IuICAqLwogIAogIGludApAQCAtMTAyLDcgKzEw Miw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90YXJnZXQuYwogIHsKICAgIC8q IERpc3BhdGNoIHRvIHRoZSB0b3Btb3N0IHRhcmdldCwgbm90IHRoZSBmbGF0dGVuZWQgY3VycmVu dF90YXJnZXQuCiAgICAgICBNZW1vcnkgYWNjZXNzZXMgY2hlY2sgdGFyZ2V0LT50b19oYXNfKGFs bF8pbWVtb3J5LCBhbmQgdGhlCi1AQCAtMTUzMiw3ICsxNTMyLDcgQEAgdGFyZ2V0X3JlYWRfc3Rh Y2sgKENPUkVfQUREUiBtZW1hZGRyLCBnZAorQEAgLTE1NjEsNyArMTU2MSw3IEBAIHRhcmdldF9y ZWFkX3N0YWNrIChDT1JFX0FERFIgbWVtYWRkciwgZ2QKICAgICBDYWxsZXJzIHRoYXQgY2FuIGRl YWwgd2l0aCBwYXJ0aWFsIHdyaXRlcyBzaG91bGQgY2FsbCB0YXJnZXRfd3JpdGUuICAqLwogIAog IGludApAQCAtMTExLDcgKzExMSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90 YXJnZXQuYwogIHsKICAgIC8qIERpc3BhdGNoIHRvIHRoZSB0b3Btb3N0IHRhcmdldCwgbm90IHRo ZSBmbGF0dGVuZWQgY3VycmVudF90YXJnZXQuCiAgICAgICBNZW1vcnkgYWNjZXNzZXMgY2hlY2sg dGFyZ2V0LT50b19oYXNfKGFsbF8pbWVtb3J5LCBhbmQgdGhlCi1AQCAtMzA5OCw4ICszMDk4LDgg QEAgZGVidWdfdG9fcHJlcGFyZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhYworQEAgLTMyMTgsOCAr MzIxOCw4IEBAIGRlYnVnX3RvX3ByZXBhcmVfdG9fc3RvcmUgKHN0cnVjdCByZWdjYWMKICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgInRhcmdldF9wcmVwYXJlX3RvX3N0b3JlICgp XG4iKTsKICB9CiAgCkBAIC0xMjIsNyArMTIyLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL3RhcmdldC5jCiAgCQkJICAgICAgaW50IHdyaXRlLCBzdHJ1Y3QgbWVtX2F0dHJpYiAq YXR0cmliLAogIAkJCSAgICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQpCiAgewotQEAgLTMx MDksOCArMzEwOSw4IEBAIGRlcHJlY2F0ZWRfZGVidWdfeGZlcl9tZW1vcnkgKENPUkVfQUREUiAK K0BAIC0zMjI5LDggKzMyMjksOCBAQCBkZXByZWNhdGVkX2RlYnVnX3hmZXJfbWVtb3J5IChDT1JF X0FERFIgCiAgCQkJCQkJYXR0cmliLCB0YXJnZXQpOwogIAogICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLApAQCAtMTMzLDExICsxMzMsMTEgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3RhcmdldC5jCiAgCQkgICAgICB3cml0ZSA/ICJ3cml0ZSIgOiAicmVhZCIsIHJl dHZhbCk7CiAgCiAgICBpZiAocmV0dmFsID4gMCkKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90YXJnZXQuaAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90YXJnZXQuaAkyMDEw LTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3RhcmdldC5oCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCi1AQCAtNDA2 LDEwICs0MDYsMTAgQEAgc3RydWN0IHRhcmdldF9vcHMKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzEx Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMTAtMDctMTIgMTA6MDA6NTYuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGFyZ2V0LmgJMjAxMC0wNy0xMiAxMDo0NjoyNC4w MDAwMDAwMDAgKzAyMDAKK0BAIC00MTcsMTAgKzQxNywxMCBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwog ICAgICAgICBOT1RFOiBjYWduZXkvMjAwNC0xMC0wMTogVGhpcyBoYXMgYmVlbiBlbnRpcmVseSBz dXBlcnNlZWRlZCBieQogICAgICAgICB0b194ZmVyX3BhcnRpYWwgYW5kIGluZmVyaW9yIGluaGVy aXRhbmNlLiAgKi8KICAKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvdGFyZ2V0LmgKICAKICAgICAgdm9pZCAoKnRvX2ZpbGVzX2luZm8pIChzdHJ1Y3Qg dGFyZ2V0X29wcyAqKTsKICAgICAgaW50ICgqdG9faW5zZXJ0X2JyZWFrcG9pbnQpIChzdHJ1Y3Qg Z2RiYXJjaCAqLCBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKik7Ci1AQCAtNzg2LDEyICs3ODYsMTIg QEAgZXh0ZXJuIHZvaWQgdGFyZ2V0X2RjYWNoZV9pbnZhbGlkYXRlICh2bworQEAgLTgzOCwxMiAr ODM4LDEyIEBAIGV4dGVybiB2b2lkIHRhcmdldF9kY2FjaGVfaW52YWxpZGF0ZSAodm8KICAKICBl eHRlcm4gaW50IHRhcmdldF9yZWFkX3N0cmluZyAoQ09SRV9BRERSLCBjaGFyICoqLCBpbnQsIGlu dCAqKTsKICAKQEAgLTE2OCwxMSArMTY4LDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90YXJnZXQuaAogIAogIC8qIEZldGNoZXMgdGhlIHRhcmdldCdzIG1lbW9yeSBtYXAuICBJ ZiBvbmUgaXMgZm91bmQgaXQgaXMgc29ydGVkCiAgICAgYW5kIHJldHVybmVkLCBhZnRlciBzb21l IGNvbnNpc3RlbmN5IGNoZWNraW5nLiAgT3RoZXJ3aXNlLCBOVUxMCi1JbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvZGNhY2hlLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9k Y2FjaGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZGNh Y2hlLmMJMjAxMC0wMS0wMSAwODozMTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi9kY2FjaGUuYwkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEw MAotQEAgLTQ2OCwxMCArNDY4LDEwIEBAIGRjYWNoZV9mcmVlIChEQ0FDSEUgKmRjYWNoZSkKKy0t LSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2RjYWNoZS5jCTIwMTAtMDUtMTQgMTk6NTM6 MTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZGNhY2hlLmMJ MjAxMC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NjUsMTAgKzQ2NSwxMCBA QCBkY2FjaGVfZnJlZSAoRENBQ0hFICpkY2FjaGUpCiAgICAgTk9URTogVGhpcyBpcyBkaWZmZXJl bnQgdGhhbiB0aGUgdG9feGZlcl9wYXJ0aWFsIGludGVyZmFjZSwgaW4gd2hpY2gKICAgICBwb3Np dGl2ZSB2YWx1ZXMgbGVzcyB0aGFuIExFTiBtZWFuIGZ1cnRoZXIgdHJhbnNmZXJzIG1heSBiZSBw b3NzaWJsZS4gICovCiAgCkBAIC0xODUsMTAgKzE4NSwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvZGNhY2hlLmMKICB7CiAgICBpbnQgaTsKICAgIGludCByZXM7Ci1JbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmgKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9kY2FjaGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3Jp Zy9nZGIvZGNhY2hlLmgJMjAxMC0wMS0wMSAwODozMTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kY2FjaGUuaAkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAw MDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZGNhY2hlLmgJMjAx MC0wMS0wMSAwODozMTozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi9kY2FjaGUuaAkyMDEwLTA3LTEyIDEwOjQ2OjI0LjAwMDAwMDAwMCArMDIwMAogQEAgLTM1 LDggKzM1LDggQEAgdm9pZCBkY2FjaGVfZnJlZSAoRENBQ0hFICopOwogIAogIC8qIFNpbXBsZSB0 byBjYWxsIGZyb20gPHJlbW90ZT5feGZlcl9tZW1vcnkgKi8KQEAgLTIwMCwxMSArMjAwLDExIEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kY2FjaGUuaAogIAogIHZvaWQgZGNhY2hl X3VwZGF0ZSAoRENBQ0hFICpkY2FjaGUsIENPUkVfQUREUiBtZW1hZGRyLCBnZGJfYnl0ZSAqbXlh ZGRyLAogIAkJICAgIGludCBsZW4pOwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2V4 ZWMuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4ZWMuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZXhlYy5jCTIwMTAtMDEtMTQgMjI6MDE6 MjQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZXhlYy5jCTIw MTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCi1AQCAtNTc4LDcgKzU3OCw3IEBAIG1h cF92bWFwIChiZmQgKmFiZmQsIGJmZCAqYXJjaCkKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL2V4ZWMuYwkyMDEwLTA1LTE0IDIwOjM1OjExLjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4ZWMuYwkyMDEwLTA3LTEyIDEwOjQ2OjI0LjAwMDAwMDAw MCArMDIwMAorQEAgLTU3MSw3ICs1NzEsNyBAQCBtYXBfdm1hcCAoYmZkICphYmZkLCBiZmQgKmFy Y2gpCiAgfQogIAwKICAKQEAgLTIxMywxMSArMjEzLDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9leGVjLmMKICBzZWN0aW9uX3RhYmxlX3hmZXJfbWVtb3J5X3BhcnRpYWwgKGdk Yl9ieXRlICpyZWFkYnVmLCBjb25zdCBnZGJfYnl0ZSAqd3JpdGVidWYsCiAgCQkJCSAgIFVMT05H RVNUIG9mZnNldCwgTE9OR0VTVCBsZW4sCiAgCQkJCSAgIHN0cnVjdCB0YXJnZXRfc2VjdGlvbiAq c2VjdGlvbnMsCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMKK0lu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoy MjoxNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1u YXQuYwkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAotQEAgLTUxMTcsNyArNTEx Nyw3IEBAIGxpbnV4X3hmZXJfcGFydGlhbCAoc3RydWN0IHRhcmdldF9vcHMgKm8KKy0tLSBnZGIt Ny4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDctMTIgMTA6NDQ6MzYu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmMJ MjAxMC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC01MTk3LDcgKzUxOTcsNyBA QCBsaW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvCiAgI2VuZGlmCiAgICAg ICAgaWYgKGl0ZXJhdGVfb3Zlcl9sd3BzIChpYTY0X2xpbnV4X2NoZWNrX3N0YWNrX3JlZ2lvbiwg JnJhbmdlKSAhPSBOVUxMKQogIAl7IC8qIFRoaXMgcmVnaW9uIGNvbnRhaW5zIGlhNjQgcnNlIHJl Z2lzdGVycywgd2UgaGF2ZSB0byByZS1yZWFkLiAgKi8KQEAgLTIyNiwxMCArMjI2LDEwIEBAIElu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwogIAogIAkgIC8qIFJlLXJl YWQgcmVnaXN0ZXIgc3RhY2sgYXJlYS4gICovCiAgCSAgeHhmZXIgPSBzdXBlcl94ZmVyX3BhcnRp YWwgKG9wcywgb2JqZWN0LCBhbm5leCwKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9y ZW1vdGUuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3JlbW90ZS5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9yZW1vdGUuYwkyMDEwLTAxLTEy IDIyOjQwOjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Jl bW90ZS5jCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9yZW1vdGUuYwkyMDEwLTA3LTA3IDE4OjE1OjE2LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3JlbW90ZS5jCTIwMTAtMDctMTIg MTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtMjUsNiArMjUsNyBAQAogICNpbmNsdWRlICJn ZGJfc3RyaW5nLmgiCiAgI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC0yMzgsNyArMjM4LDcgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3JlbW90ZS5jCiAgI2luY2x1ZGUgImluZmVyaW9y LmgiCiAgI2luY2x1ZGUgImJmZC5oIgogICNpbmNsdWRlICJzeW1maWxlLmgiCi1AQCAtNjE3NSwx MiArNjE3NiwxOSBAQCBoYW5kbGVfbm90aWZpY2F0aW9uIChjaGFyICpidWYsIHNpemVfdCBsCitA QCAtNjUxNSwxMiArNjUxNiwxOSBAQCBoYW5kbGVfbm90aWZpY2F0aW9uIChjaGFyICpidWYsIHNp emVfdCBsCiAgICAgaWYgU0hPVUxEX1dSSVRFIGlzIG5vbnplcm8uICBSZXR1cm5zIGxlbmd0aCBv ZiBkYXRhIHdyaXR0ZW4gb3IKICAgICByZWFkOyAwIGZvciBlcnJvci4gIFRBUkdFVCBpcyB1bnVz ZWQuICAqLwogIApAQCAtMjYwLDcgKzI2MCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9yZW1vdGUuYwogIAogICAgc2V0X2dlbmVyYWxfdGhyZWFkIChpbmZlcmlvcl9wdGlkKTsK ICAKLUBAIC02MTg5LDcgKzYxOTcsNyBAQCByZW1vdGVfeGZlcl9tZW1vcnkgKENPUkVfQUREUiBt ZW1fYWRkciwgCitAQCAtNjUyOSw3ICs2NTM3LDcgQEAgcmVtb3RlX3hmZXJfbWVtb3J5IChDT1JF X0FERFIgbWVtX2FkZHIsIAogICAgZWxzZQogICAgICByZXMgPSByZW1vdGVfcmVhZF9ieXRlcyAo bWVtX2FkZHIsIGJ1ZmZlciwgbWVtX2xlbik7CiAgCkBAIC0yNjksMTEgKzI2OSwxMSBAQCBJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcmVtb3RlLmMKICB9CiAgCiAgLyogU2VuZHMgYSBw YWNrZXQgd2l0aCBjb250ZW50IGRldGVybWluZWQgYnkgdGhlIHByaW50ZiBmb3JtYXQgc3RyaW5n Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvcmVtb3RlLXNpbS5jCitJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvcmVtb3RlLXNpbS5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wMS0wMSAwODozMTo0MC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9yZW1vdGUtc2ltLmMJ MjAxMC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC03NTIsMTEgKzc1MiwxNCBA QCBnZGJzaW1fcHJlcGFyZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhY2hlCistLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wNS0xNiAyMzoxMToxNC4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9yZW1vdGUtc2ltLmMJMjAx MC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC03NTksMTEgKzc1OSwxNCBAQCBn ZGJzaW1fcHJlcGFyZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhY2hlCiAgCiAgICAgUmV0dXJucyB0 aGUgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkLiAqLwogIApAQCAtMjkwLDEwICsyOTAsMTAg QEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3JlbW90ZS1zaW0uYwogICAgLyogSWYg bm8gcHJvZ3JhbSBpcyBydW5uaW5nIHlldCwgdGhlbiBpZ25vcmUgdGhlIHNpbXVsYXRvciBmb3IK ICAgICAgIG1lbW9yeS4gIFBhc3MgdGhlIHJlcXVlc3QgZG93biB0byB0aGUgbmV4dCB0YXJnZXQs IGhvcGVmdWxseQogICAgICAgYW4gZXhlYyBmaWxlLiAgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9leGVjLmgKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGVjLmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2V4ZWMuaAkyMDEw LTAxLTAxIDA4OjMxOjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2V4ZWMuaAkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03 LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZXhlYy5oCTIwMTAtMDEtMDEgMDg6MzE6MzEuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5oCTIwMTAtMDctMTIg MTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtNjAsNyArNjAsNyBAQCBleHRlcm4gaW50IHJl c2l6ZV9zZWN0aW9uX3RhYmxlIChzdHJ1Y3QgCiAgCiAgICAgT25lLCBhbmQgb25seSBvbmUsIG9m IHJlYWRidWYgb3Igd3JpdGVidWYgbXVzdCBiZSBub24tTlVMTC4gICovCgpkaWZmIC0tZ2l0IGEv Z2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2ggYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1 MDkwNy5wYXRjaAppbmRleCAxMzJmM2JmLi5jMmYwZWE4IDEwMDY0NAotLS0gYS9nZGItNi4zLXJl YWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysgYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5w YXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAKICAgICAgICAgKiBnZGIudGV4aW5mbyAoRmlsZSBP cHRpb25zKTogRG9jdW1lbnQgLS1yZWFkbmV2ZXIuCiAKLUluZGV4OiBnZGItNy4wLjkwLjIwMTAw MzA2L2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9k b2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjkwLjIwMTAwMzA2Lm9yaWcv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTAzLTA2IDIzOjE5OjEzLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTAzLTA2IDIz OjIwOjM1LjAwMDAwMDAwMCArMDEwMAotQEAgLTk5NSw2ICs5OTUsMTIgQEAgUmVhZCBlYWNoIHN5 bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDctMDEgMTk6NDA6MDQuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDctMTIg MTA6NDE6MTEuMDAwMDAwMDAwICswMjAwCitAQCAtOTk4LDYgKzk5OCwxMiBAQCBSZWFkIGVhY2gg c3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9sIHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRv IHJlYWQgaXQgaW5jcmVtZW50YWxseSBhcyBpdCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFy dHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1dHVyZSBvcGVyYXRpb25zIGZhc3Rlci4KICAKQEAgLTI4 LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvZG9jL2dkYi50ZXhp bmZvCiAgQGVuZCB0YWJsZQogIAogIEBub2RlIE1vZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjAu OTAuMjAxMDAzMDYvZ2RiL21haW4uYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL21h aW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMDYub3JpZy9nZGIvbWFpbi5j CTIwMTAtMDMtMDYgMjM6MjA6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC45MC4yMDEw MDMwNi9nZGIvbWFpbi5jCTIwMTAtMDMtMDYgMjM6MjA6MzUuMDAwMDAwMDAwICswMTAwCi1AQCAt MzgyLDYgKzM4Miw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wNy0xMiAxMDoxNzoyNi4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9tYWluLmMJMjAxMC0wNy0xMiAxMDo0 MTozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zODgsNiArMzg4LDcgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKICAgICAgICB7InhkYiIsIG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAx fSwKICAgICAgICB7ImRieCIsIG5vX2FyZ3VtZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAg ICB7InJlYWRub3ciLCBub19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAg LTQwLDE5ICs0MCwxOSBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvbWFpbi5jCiAg ICAgICAgeyJyIiwgbm9fYXJndW1lbnQsICZyZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCiAgICAg ICAgeyJxdWlldCIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAogICAgICAgIHsicSIsIG5vX2Fy Z3VtZW50LCAmcXVpZXQsIDF9LAotQEAgLTEwMzMsNiArMTAzNCw3IEBAIE9wdGlvbnM6XG5cblwK LSAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKK0BAIC05ODAsNiArOTgxLDcgQEAgT3B0aW9uczpc blxuXAorICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCiAgICAtLXF1aWV0ICAgICAg ICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJl YWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxu XAogKyAgLS1yZWFkbmV2ZXIgICAgICAgIERvIG5vdCByZWFkIHN5bWJvbCBmaWxlcy5cblwKICAi KSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAg ICAgICBVc2UgRklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5k ZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAz MDYub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAtMDMtMDYgMjM6MTk6MTMuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvc3ltZmlsZS5jCTIwMTAtMDMtMDYgMjM6MjA6 MzUuMDAwMDAwMDAwICswMTAwCi1AQCAtNzksNiArNzksNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9z eW10YWJfdXNlcnNfY2xlYW51cCAoCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9z eW1maWxlLmMJMjAxMC0wNi0wMyAwMTowMTowMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLmMJMjAxMC0wNy0xMiAxMDo0MToxMS4wMDAwMDAwMDAg KzAyMDAKK0BAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19j bGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZSAqLwog IGludCByZWFkbm93X3N5bWJvbF9maWxlczsJLyogUmVhZCBmdWxsIHN5bWJvbHMgaW1tZWRpYXRl bHkgKi8KQEAgLTYwLDMzICs2MCwzNSBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIv c3ltZmlsZS5jCiAgCiAgLyogRXh0ZXJuYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgcmVmZXJl bmNlZC4gKi8KICAKLUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi9kd2FyZjJyZWFkLmMK K0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4wLjkwLjIwMTAwMzA2Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAzLTA2 IDIzOjE5OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2R3 YXJmMnJlYWQuYwkyMDEwLTAzLTA2IDIzOjIwOjU0LjAwMDAwMDAwMCArMDEwMAotQEAgLTUyLDYg KzUyLDcgQEAKLSAjaW5jbHVkZSAiZi1sYW5nLmgiCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMiAxMDo0 Mzo1My4wMDAwMDAwMDAgKzAyMDAKK0BAIC01MSw2ICs1MSw3IEBACiAgI2luY2x1ZGUgInR5cGVw cmludC5oIgogICNpbmNsdWRlICJqdi1sYW5nLmgiCisgI2luY2x1ZGUgInBzeW1wcml2LmgiCiAr I2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJnZGJf c3RyaW5nLmgiCi1AQCAtMTIyMiw3ICsxMjIzLDggQEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZQotIAorQEAgLTExNjEsOCArMTE2Miw5IEBAIGR3YXJmMl9oYXNfaW5m byAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAgICBiZmRfbWFwX292ZXJfc2VjdGlvbnMg KG9iamZpbGUtPm9iZmQsIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMsIE5VTEwpOworICAgICAgIGR3 YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0KIC0gIHJldHVybiAo ZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLmFzZWN0aW9uICE9IE5VTEwKLSsgIHJldHVybiAhcmVh ZG5ldmVyX3N5bWJvbF9maWxlcwotKyAgICAgICYmIChkd2FyZjJfcGVyX29iamZpbGUtPmluZm8u YXNlY3Rpb24gIT0gTlVMTAotIAkgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2LmFzZWN0 aW9uICE9IE5VTEwpOworLQkgICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWJicmV2LmFzZWN0aW9u ICE9IE5VTEwpOworKyAgcmV0dXJuICghIHJlYWRuZXZlcl9zeW1ib2xfZmlsZXMKKysJICAmJiAo ZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvLmFzZWN0aW9uICE9IE5VTEwKKysJICAgICAgJiYgZHdh cmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYuYXNlY3Rpb24gIT0gTlVMTCkpOwogIH0KICAKLUluZGV4 OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90b3AuaAorIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9u cywgd2UgY2FuIGVpdGhlciBsb29rIGZvciAiLjxuYW1lPiIsIG9yIGZvcgorSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL3RvcC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC45MC4yMDEw MDMwNi5vcmlnL2dkYi90b3AuaAkyMDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3RvcC5oCTIwMTAtMDMtMDYgMjM6MjA6MzUuMDAw MDAwMDAwICswMTAwCi1AQCAtNjMsNiArNjMsNyBAQCBleHRlcm4gdm9pZCBzZXRfcHJvbXB0IChj aGFyICopOworLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdG9wLmgJMjAxMC0wNC0w NyAxODo1NDozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90 b3AuaAkyMDEwLTA3LTEyIDEwOjQxOjExLjAwMDAwMDAwMCArMDIwMAorQEAgLTYxLDYgKzYxLDcg QEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21wdCAoY2hhciAqKTsKICAKICAvKiBGcm9tIHJhbmRvbSBw bGFjZXMuICAqLwogIGV4dGVybiBpbnQgcmVhZG5vd19zeW1ib2xfZmlsZXM7CgpkaWZmIC0tZ2l0 IGEvZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaCBiL2dkYi02LjMtcmgtdGVz dHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKaW5kZXggMjVhMTM1Ny4uNzgzOTIwMCAxMDA2NDQKLS0t IGEvZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaAorKysgYi9nZGItNi4zLXJo LXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCkBAIC0zLDE3ICszLDE3IEBACiAgICAgICAgICog Z2RiLmdkYi9zZWxmdGVzdC5leHA6IEFkZCBtYXRjaGluZyBvbiBzcGVjaWZpYyBSZWQgSGF0IG9u bHkgdmVyc2lvbgogICAgICAgICBzdHJpbmcuCiAKLUluZGV4OiBnZGItNi44L2dkYi90ZXN0c3Vp dGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90 ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44Lm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDA4LTAxLTI2IDE0OjU2OjM3 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0 ZXN0LmV4cAkyMDA4LTA3LTE0IDEwOjIzOjUwLjAwMDAwMDAwMCArMDIwMAotQEAgLTM1NCw2ICsz NTQsOSBAQCBwcm9jIHRlc3Rfd2l0aF9zZWxmIHsgZXhlY3V0YWJsZSB9IHsKKy0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEw LTA2LTI2IDA4OjQ0OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEwLTA3LTEyIDA5OjU5OjQyLjAw MDAwMDAwMCArMDIwMAorQEAgLTM0Miw2ICszNDIsOSBAQCBwcm9jIHRlc3Rfd2l0aF9zZWxmIHsg ZXhlY3V0YWJsZSB9IHsKICAJLXJlICIuXFswLTlcXSsgPSArLisgKzB4LipcWzAtOS5cXSsuKiRn ZGJfcHJvbXB0ICQiIHsKICAJICAgIHBhc3MgInByaW50ZWQgdmVyc2lvbiB3aXRoIGNhc3QiCiAg CX0KICsJLXJlICIuXFswLTlcXSsgPSAuKEZlZG9yYXxSZWQgSGF0IEVudGVycHJpc2UgTGludXgp IFxbXFwoXFwpMC05LmEtelxcLVxdKy4qJGdkYl9wcm9tcHQgJCIgewogKwkgICAgcGFzcyAicHJp bnRlZCB2ZXJzaW9uIEZlZG9yYSBvciBSZWQgSGF0IEVudGVycHJpc2UgTGludXggb25seSIKICsJ fQotIAktcmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJwcmludGVkIHZlcnNpb24iIH0KLSAJ dGltZW91dAkJeyBmYWlsICIodGltZW91dCkgcHJpbnRlZCB2ZXJzaW9uIiB9CiAgICAgIH0KKyAK KyAgICAgZG9fc3RlcHNfYW5kX25leHRzCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1zZWN1cml0eS1l cnJhdGEtMjAwNTA2MTAucGF0Y2ggYi9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1MDYxMC5w YXRjaAppbmRleCA1NTc4NTcwLi4zNzc2NWY5IDEwMDY0NAotLS0gYS9nZGItNi4zLXNlY3VyaXR5 LWVycmF0YS0yMDA1MDYxMC5wYXRjaAorKysgYi9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1 MDYxMC5wYXRjaApAQCAtMTksMjEgKzE5LDMwIEBAIFByb3Bvc2VkIHVwc3RyZWFtIGJ1dCBuZXZl ciBjb21taXR0ZWQgdXBzdHJlYW0uCiAgICAgICAgIChzb3VyY2VfY29tbWFuZCk6IFVwZGF0ZSBk b2N1bWVudGF0aW9uLiAgQ2hlY2sgcGVybWlzc2lvbnMgaWYKICAgICAgICAgRlJPTV9UVFkgaXMg LTEuCiAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9jbGkvY2xpLWNtZHMuYworSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21kcy5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMC41MC4yMDEwMDEyMS5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEwLTAxLTE4 IDA3OjI1OjIyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL2Ns aS9jbGktY21kcy5jCTIwMTAtMDEtMjEgMTU6MTI6MjguMDAwMDAwMDAwICswMTAwCi1AQCAtMzgs NiArMzgsNyBAQAotICNpbmNsdWRlICJvYmpmaWxlcy5oIgorLS0tIGdkYi03LjEuOTAuMjAxMDA3 MjAub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMC0wNS0xNyAyMToyODoxMi4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIwL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEwLTA3 LTIxIDIwOjMwOjMwLjAwMDAwMDAwMCArMDIwMAorQEAgLTM5LDYgKzM5LDcgQEAKICAjaW5jbHVk ZSAic291cmNlLmgiCiAgI2luY2x1ZGUgImRpc2FzbS5oIgorICNpbmNsdWRlICJ0cmFjZXBvaW50 LmgiCiArI2luY2x1ZGUgImdkYl9zdGF0LmgiCi0gZXh0ZXJuIHZvaWQgZGlzY29ubmVjdF9vcl9z dG9wX3RyYWNpbmcgKGludCBmcm9tX3R0eSk7CiAgCiAgI2luY2x1ZGUgInVpLW91dC5oIgotQEAg LTQ4OCw2ICs0ODksMjkgQEAgZmluZF9hbmRfb3Blbl9zY3JpcHQgKGludCBmcm9tX3R0eSwgY2hh cgotIAkgICAgICBmaWxlLCBPX1JET05MWSwgJmZ1bGxfcGF0aG5hbWUpOwotICAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgZnVsbF9wYXRobmFtZSk7CisgCitAQCAtNDg3LDcgKzQ4OCw3IEBAIFNjcmlw dCBmaWxlbmFtZSBleHRlbnNpb24gcmVjb2duaXRpb24gaXMKKyAKKyBpbnQKKyBmaW5kX2FuZF9v cGVuX3NjcmlwdCAoY29uc3QgY2hhciAqc2NyaXB0X2ZpbGUsIGludCBzZWFyY2hfcGF0aCwKKy0J CSAgICAgIEZJTEUgKipzdHJlYW1wLCBjaGFyICoqZnVsbF9wYXRocCkKKysJCSAgICAgIEZJTEUg KipzdHJlYW1wLCBjaGFyICoqZnVsbF9wYXRocCwgaW50IGZyb21fdHR5KQorIHsKKyAgIGNoYXIg KmZpbGU7CisgICBpbnQgZmQ7CitAQCAtNTEzLDYgKzUxNCwzMiBAQCBmaW5kX2FuZF9vcGVuX3Nj cmlwdCAoY29uc3QgY2hhciAqc2NyaXB0CisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KICAKICsj aWZkZWYgSEFWRV9HRVRVSUQKICsgIGlmIChmcm9tX3R0eSA9PSAtMSkKQEAgLTQyLDEwICs1MSwx MiBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvY2xpL2NsaS1jbWRzLmMKICsKICsg ICAgICBpZiAoZnN0YXQgKGZkLCAmc3RhdGJ1ZikgPCAwKQogKwl7CisrCSAgaW50IHNhdmVfZXJy bm8gPSBlcnJubzsKKysKICsJICBjbG9zZSAoZmQpOwotKwkgIC8qIERvIG5vdCBkb19jbGVhbnVw cyAob2xkX2NsZWFudXBzKSBhcyBGSUxFIGlzIGFsbG9jYXRlZCB0aGVyZS4KLSsJICAgICBwZXJy b3Jfd2l0aF9uYW1lIGNhbGxzIGVycm9yIHdoaWNoIHNob3VsZCBjYWxsIHRoZSBjbGVhbnVwcy4g ICovCi0rCSAgcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7CisrCSAgZG9fY2xlYW51cHMgKG9sZF9j bGVhbnVwcyk7CisrCSAgZXJybm8gPSBzYXZlX2Vycm5vOworKwkgIHJldHVybiAwOwogKwl9CiAr ICAgICAgaWYgKHN0YXRidWYuc3RfdWlkICE9IGdldHVpZCAoKSB8fCAoc3RhdGJ1Zi5zdF9tb2Rl ICYgU19JV09USCkpCiArCXsKQEAgLTUzLDM2ICs2NCwzNyBAQCBJbmRleDogZ2RiLTcuMC41MC4y MDEwMDEyMS9nZGIvY2xpL2NsaS1jbWRzLmMKICsJICB3YXJuaW5nIChfKCJub3QgdXNpbmcgdW50 cnVzdGVkIGZpbGUgXCIlc1wiIiksIGZpbGUpOwogKwkgIGNsb3NlIChmZCk7CiArCSAgZG9fY2xl YW51cHMgKG9sZF9jbGVhbnVwcyk7CisrCSAgZXJybm8gPSBFUEVSTTsKICsJICByZXR1cm4gMDsK ICsJfQogKyAgICB9CiArI2VuZGlmCiArCi0gICAvKiBVc2UgdGhlIGZ1bGwgcGF0aCBuYW1lLCBp ZiBpdCBpcyBmb3VuZC4gICovCi0gICBpZiAoZnVsbF9wYXRobmFtZSAhPSBOVUxMICYmIGZkICE9 IC0xKQotICAgICB7Ci1AQCAtNDk2LDcgKzUyMCw3IEBAIGZpbmRfYW5kX29wZW5fc2NyaXB0IChp bnQgZnJvbV90dHksIGNoYXIKKyAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOworIAorICAg KnN0cmVhbXAgPSBmZG9wZW4gKGZkLCBGT1BFTl9SVCk7CitAQCAtNTcyLDEzICs1OTksMTQgQEAg c291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCAoY29uc3QgY2hhciAqZgorICAgaWYgKGZpbGUgPT0g TlVMTCB8fCAqZmlsZSA9PSAwKQorICAgICBlcnJvciAoXygic291cmNlIGNvbW1hbmQgcmVxdWly ZXMgZmlsZSBuYW1lIG9mIGZpbGUgdG8gc291cmNlLiIpKTsKICAKLSAgIGlmIChmZCA9PSAtMSkK Ky0gIGlmICghZmluZF9hbmRfb3Blbl9zY3JpcHQgKGZpbGUsIHNlYXJjaF9wYXRoLCAmc3RyZWFt LCAmZnVsbF9wYXRoKSkKKysgIGlmICghZmluZF9hbmRfb3Blbl9zY3JpcHQgKGZpbGUsIHNlYXJj aF9wYXRoLCAmc3RyZWFtLCAmZnVsbF9wYXRoLAorKwkJCSAgICAgZnJvbV90dHkpKQogICAgICB7 CisgICAgICAgLyogVGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQsIG9yIHdhcyBvdGhlcndpc2UgaW5h Y2Nlc3NpYmxlLgorIAkgSWYgdGhlIHNvdXJjZSBjb21tYW5kIHdhcyBpbnZva2VkIGludGVyYWN0 aXZlbHksIHRocm93IGFuIGVycm9yLgorIAkgT3RoZXJ3aXNlIChlLmcuIGlmIGl0IHdhcyBpbnZv a2VkIGJ5IGEgc2NyaXB0KSwgc2lsZW50bHkgaWdub3JlCisgCSB0aGUgZXJyb3IuICAqLwogLSAg ICAgIGlmIChmcm9tX3R0eSkKICsgICAgICBpZiAoZnJvbV90dHkgPiAwKQogIAlwZXJyb3Jfd2l0 aF9uYW1lIChmaWxlKTsKICAgICAgICBlbHNlCi0gCXsKLUBAIC01NTQsNiArNTc4LDcgQEAgc291 cmNlX3NjcmlwdCAoY2hhciAqZmlsZSwgaW50IGZyb21fdHR5KQotICAgZWxzZQotICAgICBzY3Jp cHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUpOwotIAotKyAgLyogRklMRSBnZXRzIGZyZWVkIGJ5 IGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpLiAgKi8KLSAgIGRvX2NsZWFudXBzIChvbGRfY2xl YW51cHMpOwotIH0KLSAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZ2RiaW5pdC5leHAKKyAJcmV0dXJuOworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAu NTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAkyMDEwLTAxLTIx IDE1OjExOjE4LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw5OCBAQAorKysrIGdkYi03LjEu OTAuMjAxMDA3MjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAkyMDEwLTA3LTIw IDIyOjI1OjQwLjAwMDAwMDAwMCArMDIwMAorQEAgLTAsMCArMSw5MSBAQAogKyMgICBDb3B5cmln aHQgMjAwNQogKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEwNSwx MyArMTE3LDYgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9nZGJpbml0LmV4cAogKwogKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEplZmYgSm9o bnN0b24gPGpqb2huc3RuQHJlZGhhdC5jb20+LgogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewot KyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdf aWQgMAotKwogKyMgYXJlIHdlIG9uIGEgdGFyZ2V0IGJvYXJkCiAraWYgW2lzX3JlbW90ZSB0YXJn ZXRdIHsKICsgICAgcmV0dXJuCkBAIC0xODEsMTcgKzE4NiwxNyBAQCBJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDEyMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCiArfQogKwogK3Jl bW90ZV9leGVjIGJ1aWxkICJybSAuZ2RiaW5pdCIKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIx L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUKK0luZGV4OiBnZGItNy4xLjkw LjIwMTAwNzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1w bGUJMjAxMC0wMS0yMSAxNToxMToxOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4xLjkwLjIw MTAwNzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC5zYW1wbGUJMjAxMC0wNy0yMCAy MjoyNTo0MC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEgQEAKICtlY2hvICJcbmluIGdkYmlu aXQiCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyMS9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcyMC9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEw MDEyMS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wMS0yMSAxNToxMTowOS4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tYWluLmMJMjAxMC0wMS0yMSAxNToxMToxOC4w MDAwMDAwMDAgKzAxMDAKLUBAIC04MTgsNyArODE4LDcgQEAgRXhjZXNzIGNvbW1hbmQgbGluZSBh cmd1bWVudHMgaWdub3JlZC4gKAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjAub3JpZy9nZGIvbWFp bi5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4y MDEwMDcyMC9nZGIvbWFpbi5jCTIwMTAtMDctMjEgMjA6MDk6MDMuMDAwMDAwMDAwICswMjAwCitA QCAtNzk0LDcgKzc5NCw3IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGlnbm9yZWQu ICgKICAgICAgIGRlYnVnZ2luZyBvciB3aGF0IGRpcmVjdG9yeSB5b3UgYXJlIGluLiAgKi8KICAK ICAgIGlmIChob21lX2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKQEAgLTIwMCwxMiArMjA1 LDM5IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTIxL2dkYi9tYWluLmMKICAKICAgIC8qIE5v dyBwZXJmb3JtIGFsbCB0aGUgYWN0aW9ucyBpbmRpY2F0ZWQgYnkgdGhlIGFyZ3VtZW50cy4gICov CiAgICBpZiAoY2RhcmcgIT0gTlVMTCkKLUBAIC04ODcsNyArODg3LDcgQEAgQ2FuJ3QgYXR0YWNo IHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjbworQEAgLTg2OCw3ICs4NjgsNyBAQCBDYW4ndCBh dHRhY2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBhIGNvCiAgICAvKiBSZWFkIHRoZSAuZ2RiaW5p dCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBpc24ndAogICAgICAgdGhl IHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUgKGl0IHNob3VsZCBleGlzdCwgYWxzbyku ICAqLwogICAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKIC0gICAgY2F0 Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsIFJFVFVS Tl9NQVNLX0FMTCk7CiArICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBs b2NhbF9nZGJpbml0LCAtMSwgUkVUVVJOX01BU0tfQUxMKTsKICAKLSAgIGZvciAoaSA9IDA7IGkg PCBuY21kOyBpKyspCi0gICAgIHsKKyAgIC8qIE5vdyB0aGF0IGFsbCAuZ2RiaW5pdCdzIGhhdmUg YmVlbiByZWFkIGFuZCBhbGwgLWQgb3B0aW9ucyBoYXZlIGJlZW4KKyAgICAgIHByb2Nlc3NlZCwg d2UgY2FuIHJlYWQgYW55IHNjcmlwdHMgbWVudGlvbmVkIGluIFNZTUFSRy4KK0luZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBnZGItNy4xLjkwLjIwMTAwNzIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEw LTA1LTE3IDIzOjIzOjI1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MjAv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEwLTA3LTIwIDIyOjI1OjQwLjAwMDAwMDAwMCAr MDIwMAorQEAgLTIxOSw3ICsyMTksNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qg b2JqZmlsZSAqCisgCX0KKyAKKyAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9vcGVuX3NjcmlwdCAo ZmlsZSwgMSAvKnNlYXJjaF9wYXRoKi8sCistCQkJCSAgICAgJnN0cmVhbSwgJmZ1bGxfcGF0aCk7 CisrCQkJCSAgICAgJnN0cmVhbSwgJmZ1bGxfcGF0aCwgMSAvKiBmcm9tX3R0eSAqLyk7CisgCisg ICAgICAgLyogSWYgdGhlIGZpbGUgaXMgbm90IGZvdW5kLCB3ZSBzdGlsbCByZWNvcmQgdGhlIGZp bGUgaW4gdGhlIGhhc2ggdGFibGUsCisgCSB3ZSBvbmx5IHdhbnQgdG8gcHJpbnQgYW4gZXJyb3Ig bWVzc2FnZSBvbmNlLgorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21k cy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMC5vcmlnL2dkYi9jbGkvY2xp LWNtZHMuaAkyMDEwLTA1LTAzIDAxOjUyOjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEu OTAuMjAxMDA3MjAvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTAtMDctMjAgMjI6MjU6NDAuMDAwMDAw MDAwICswMjAwCitAQCAtMTI2LDcgKzEyNiw4IEBAIGV4dGVybiB2b2lkIHNvdXJjZV9zY3JpcHQg KGNoYXIgKiwgaW50KTsKKyAvKiBFeHBvcnRlZCB0byBvYmpmaWxlcy5jLiAgKi8KKyAKKyBleHRl cm4gaW50IGZpbmRfYW5kX29wZW5fc2NyaXB0IChjb25zdCBjaGFyICpmaWxlLCBpbnQgc2VhcmNo X3BhdGgsCistCQkJCSBGSUxFICoqc3RyZWFtcCwgY2hhciAqKmZ1bGxfcGF0aCk7CisrCQkJCSBG SUxFICoqc3RyZWFtcCwgY2hhciAqKmZ1bGxfcGF0aCwKKysJCQkJIGludCBmcm9tX3R0eSk7Cisg CisgLyogQ29tbWFuZCB0cmFjaW5nIHN0YXRlLiAgKi8KKyAKCmRpZmYgLS1naXQgYS9nZGItNi4z LXN0ZXAtdGhyZWFkLWV4aXQtMjAwNTAyMTEtdGVzdC5wYXRjaCBiL2dkYi02LjMtc3RlcC10aHJl YWQtZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNoCmluZGV4IGZjNzNkOWYuLjExYzJhNDQgMTAwNjQ0 Ci0tLSBhL2dkYi02LjMtc3RlcC10aHJlYWQtZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNoCisrKyBi L2dkYi02LjMtc3RlcC10aHJlYWQtZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNoCkBAIC02Miw3ICs2 Miw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvc3RlcC10aHJlYWQtZXhpdC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKICsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5leHAJMjAwOC0xMi0wOCAy MjoyMjoxNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTMwIEBACitAQCAtMCwwICsxLDEy MyBAQAogKyMgVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K ICsKICsjIENvcHlyaWdodCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAt ODMsMTMgKzgzLDYgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmV4cAogKwogKyMgQ2hlY2sgdGhhdCBHREIgY2Fu IHN0ZXAgb3ZlciBhIHRocmVhZCBleGl0LgogKwotK2lmICR0cmFjZWxldmVsIHsKLSsgICAgc3Ry YWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsK ICtzZXQgdGVzdGZpbGUgInN0ZXAtdGhyZWFkLWV4aXQiCiArc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uYwogK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KCmRpZmYg LS1naXQgYS9nZGItNi4zLXRlc3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaCBiL2dkYi02LjMtdGVz dC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoCmluZGV4IGJjYzQ1NjUuLjUxMzA4YmMgMTAwNjQ0Ci0t LSBhL2dkYi02LjMtdGVzdC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoCisrKyBiL2dkYi02LjMtdGVz dC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoCkBAIC0xMjksNyArMTI5LDcgQEAgSW5kZXg6IGdkYi90 ZXN0c3VpdGUvQ2hhbmdlTG9nCiArfQogLS0tIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av Y29uc3RydWN0b3J0ZXN0LmV4cC5maXgJRnJpIEphbiAyMSAxNzowNzowMiAyMDA1CiArKysgZ2Ri LTYuMy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuZXhwCUZyaSBKYW4gMjEg MTc6MDU6MjkgMjAwNQotQEAgLTAsMCArMSwxMzcgQEAKK0BAIC0wLDAgKzEsMTMwIEBACiArIyBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwogKyMgQ29w eXJpZ2h0IDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xNTAs MTMgKzE1MCw2IEBAIEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwogKwogKyMgQ2hlY2sg dGhhdCBHREIgY2FuIGJyZWFrIGF0IG11bHRpcGxlIGZvcm1zIG9mIGNvbnN0cnVjdG9ycy4KICsK LStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQg cHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlICJjb25zdHJ1Y3RvcnRl c3QiCiArc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKICtzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10ZXN0LW1vdmVkaXIt MjAwNTAxMjUucGF0Y2ggYi9nZGItNi4zLXRlc3QtbW92ZWRpci0yMDA1MDEyNS5wYXRjaAppbmRl eCBlYjNjZjczLi40YjA1YzEzIDEwMDY0NAotLS0gYS9nZGItNi4zLXRlc3QtbW92ZWRpci0yMDA1 MDEyNS5wYXRjaAorKysgYi9nZGItNi4zLXRlc3QtbW92ZWRpci0yMDA1MDEyNS5wYXRjaApAQCAt MjMsNyArMjMsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL21vdmUtZGlyLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAogKysrIGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9tb3ZlLWRpci5leHAJMjAwOC0xMi0wNyAxMDoxMzowMS4wMDAwMDAw MDAgKzAxMDAKLUBAIC0wLDAgKzEsNjcgQEAKK0BAIC0wLDAgKzEsNTcgQEAKICsjICAgQ29weXJp Z2h0IDIwMDUKICsjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC00MSwx NiArNDEsNiBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL21vdmUtZGlyLmV4cAogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKICsKLSsjIFBs ZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBm aWxlIHRvOgotKyMgYnVnLWdkYkBwcmVwLmFpLm1pdC5lZHUKLSsKLStpZiAkdHJhY2VsZXZlbCB0 aGVuIHsKLSsgICAgICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAw Ci0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlICJtb3ZlLWRpciIKICtzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jCiArc2V0IGluY2ZpbGUgJHt0ZXN0ZmlsZX0uaAoKZGlmZiAtLWdpdCBh L2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2ggYi9nZGItNi4zLXRlc3QtcGllLTIwMDUw MTA3LnBhdGNoCmluZGV4IGY5ZDViYjQuLjQ0MGIyODMgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVz dC1waWUtMjAwNTAxMDcucGF0Y2gKKysrIGIvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRj aApAQCAtNDM2LDcgKzQzNiw3IEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0 c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAkyMDEwLTAzLTA2IDIzOjE5OjMxLjAwMDAw MDAwMCArMDEwMAotQEAgLTAsMCArMSw0MzMgQEAKK0BAIC0wLDAgKzEsNDIzIEBACiArIyAgIENv cHlyaWdodCAxOTk3LCAxOTk5LCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKQEAgLTQ1MywxNiArNDUzLDYgQEAgSW5kZXg6IGdkYi03LjAuOTAu MjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKICsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiArIyBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx MTEtMTMwNywgVVNBLiAgKi8KICsKLSsjIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMs IGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyMgYnVnLWdkYkBwcmVwLmFpLm1p dC5lZHUKLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsJc3RyYWNlICR0cmFjZWxldmVsCi0r CX0KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArIyBPbiBIUC1VWCAxMS4w LCB0aGlzIHRlc3QgaXMgY2F1c2luZyBhIHByb2Nlc3MgcnVubmluZyB0aGUgcHJvZ3JhbQogKyMg ImF0dGFjaCIgdG8gYmUgbGVmdCBhcm91bmQgc3Bpbm5pbmcuICBVbnRpbCB3ZSBmaWd1cmUgb3V0 IHdoeSwgSSBhbQogKyMgY29tbWVudGluZyBvdXQgdGhlIHRlc3QgdG8gYXZvaWQgcG9sbHV0aW5n IHRpYW1hdCAob3VyIDExLjAgbmlnaHRseQpAQCAtODc0LDcgKzg2NCw3IEBAIEluZGV4OiBnZGIt Ny4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKICsr KyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAx MC0wMy0wNiAyMzoxOTozMS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsOTc3IEBACitAQCAt MCwwICsxLDk2NiBAQAogKyMgICBDb3B5cmlnaHQgMTk4OCwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5 NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKICsjICAgMjAwMCwgMjAwMiwgMjAwMywg MjAwNAogKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTkwMCwxNyArODkw LDYgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2Jy ZWFrLmV4cAogKwogKyMgVGVzdCB0aGUgc2FtZSBzdHVmZiBidXQgd2l0aCBQSUUgZXhlY3V0YWJs ZXMKICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0r fQotKwotKwotKyMKLSsjIHRlc3QgcnVubmluZyBwcm9ncmFtcwotKyMKLStzZXQgcHJtc19pZCAw Ci0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlICJicmVhayIKICtzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5jCiArc2V0IHNyY2ZpbGUxICR7dGVzdGZpbGV9MS5jCkBAIC0xODU2LDcgKzE4 MzUsNyBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUv Y29yZWZpbGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRl L2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTAtMDMtMDYgMjM6MTk6MzEuMDAwMDAwMDAwICswMTAw Ci1AQCAtMCwwICsxLDI0MyBAQAorQEAgLTAsMCArMSwyMzMgQEAKICsjIENvcHlyaWdodCAxOTky LCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwCiArIyBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTE4NzQsMTggKzE4NTMsOCBAQCBJbmRl eDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhw CiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQogKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAogKwotKyMgUGxlYXNlIGVtYWlsIGFueSBi dWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86Ci0rIyBidWct Z2RiQHByZXAuYWkubWl0LmVkdQotKwogKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEZyZWQg RmlzaC4gKGZuZkBjeWdudXMuY29tKQogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKwlzdHJh Y2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwog KyMgYXJlIHdlIG9uIGEgdGFyZ2V0IGJvYXJkCiAraWYgIVtpc25hdGl2ZV0gdGhlbiB7CiArICAg IHJldHVybgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGhyZWFkZWQtd2F0Y2hwb2ludHMyLTIwMDUw MjI1LnBhdGNoIGIvZ2RiLTYuMy10aHJlYWRlZC13YXRjaHBvaW50czItMjAwNTAyMjUucGF0Y2gK aW5kZXggODU5NjM4ZC4uMTg3YTMzZSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy10aHJlYWRlZC13YXRj aHBvaW50czItMjAwNTAyMjUucGF0Y2gKKysrIGIvZ2RiLTYuMy10aHJlYWRlZC13YXRjaHBvaW50 czItMjAwNTAyMjUucGF0Y2gKQEAgLTExNCw3ICsxMTQsNyBAQCBJbmRleDogZ2RiLTYuNS9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkczIuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTYu NS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy10aHJlYWRlZC5leHAJMjAw Ni0wNy0xMiAwMTo1NDoyOS4wMDAwMDAwMDAgLTAzMDAKLUBAIC0wLDAgKzEsMTMzIEBACitAQCAt MCwwICsxLDEyNiBAQAogKyMgVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KICsKICsjIENvcHlyaWdodCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgpAQCAtMTM1LDEzICsxMzUsNiBAQCBJbmRleDogZ2RiLTYuNS9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNodGhyZWFkczIuZXhwCiArCiArIyBDaGVjayB0aGF0IEdEQiBjYW4gc3Vw cG9ydCBtdWx0aXBsZSB3YXRjaHBvaW50cyBhY3Jvc3MgdGhyZWFkcy4KICsKLStpZiAkdHJhY2Vs ZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0r c2V0IGJ1Z19pZCAwCi0rCiArIyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHdhdGNocG9pbnQg aXMgZGV0ZWN0ZWQgaW4gdGhlIHByb3BlciB0aHJlYWQKICsjIHNvIHRoZSB0ZXN0IGlzIG9ubHkg bWVhbmluZ2Z1bCBvbiBhIHN5c3RlbSB3aXRoIGhhcmR3YXJlIHdhdGNocG9pbnRzLgogK2lmIFt0 YXJnZXRfaW5mbyBleGlzdHMgZ2RiLG5vX2hhcmR3YXJlX3dhdGNocG9pbnRzXSB7CgpkaWZmIC0t Z2l0IGEvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5w YXRjaCBiL2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIu cGF0Y2gKaW5kZXggNmI4NzhhMC4uOTRjMDA3MiAxMDA2NDQKLS0tIGEvZ2RiLTYuNS1iejE4NTMz Ny1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaAorKysgYi9nZGItNi41LWJ6 MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoCkBAIC0xNzEsNyAr MTcxLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1lcnJuby5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKICsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uZXhwCTIwMTAtMDEtMjggMTI6NTI6NDguMDAwMDAw MDAwICswMTAwCi1AQCAtMCwwICsxLDY3IEBACitAQCAtMCwwICsxLDYwIEBACiArIyBDb3B5cmln aHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CkBAIC0xODcsMTMgKzE4Nyw2IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uZXhwCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAot K30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlIGR3 Mi1lcnJubwogK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICtzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1iejIxNjcxMS1j bG9uZS1pcy1vdXRlcm1vc3QucGF0Y2ggYi9nZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVy bW9zdC5wYXRjaAppbmRleCBiZDAzOTg1Li5iYjcwMzhmIDEwMDY0NAotLS0gYS9nZGItNi41LWJ6 MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAorKysgYi9nZGItNi41LWJ6MjE2NzExLWNs b25lLWlzLW91dGVybW9zdC5wYXRjaApAQCAtMjMsMjk2ICsyMyw2IEBAIGluc3RlYWQuCiAKIAlQ b3J0IHRvIEdEQi02LjcuCiAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9hbWQ2NC1s aW51eC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAyLm9yaWcvZ2Ri L2FtZDY0LWxpbnV4LXRkZXAuYwkyMDA5LTA3LTAyIDE5OjI1OjUyLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDA5LTA4LTAz IDE1OjUwOjA4LjAwMDAwMDAwMCArMDIwMAotQEAgLTIzOCw2ICsyMzgsODAgQEAgYW1kNjRfbGlu dXhfcmVnaXN0ZXJfcmVnZ3JvdXBfcCAoc3RydWN0IAotIAotIC8qIFNldCB0aGUgcHJvZ3JhbSBj b3VudGVyIGZvciBwcm9jZXNzIFBUSUQgdG8gUEMuICAqLwotIAotKy8qIERldGVjdCB0aGUgb3V0 ZXJtb3N0IGZyYW1lOyBkdXJpbmcgdW53aW5kIG9mCi0rICAgCSM1ICAweDAwMDAwMDMwNWNlYzY4 YzMgaW4gY2xvbmUgKCkgZnJvbSAvbGliNjQvdGxzL2xpYmMuc28uNgotKyAgIGF2b2lkIHRoZSBh ZGRpdGlvbmFsIGJvZ3VzIGZyYW1lCi0rICAgCSM2ICAweDAwMDAwMDAwMDAwMDAwMDAgaW4gPz8K LSsgICBXZSBjb21wYXJlIGlmIHRoZSBgbGludXhfY2xvbmVfY29kZScgYmxvY2sgaXMgX2JlZm9y ZV8gdW53b3VuZCBQQy4gICovCi0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgbGludXhf Y2xvbmVfY29kZVtdID0KLSt7Ci0rLyogbGliYy9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZf NjQvY2xvbmUuUyAqLwotKy8qICNpZmRlZiBSRVNFVF9QSUQgKi8KLSsvKiAuLi4gKi8KLSsvKiAJ bW92CSRTWVNfaWZ5KGdldHBpZCksICVlYXggKi8KLSsvKiAweGI4LCAweDI3LCAweDAwLCAweDAw LCAweDAwICovCi0rLyogT1IgKi8KLSsvKiAJbW92CSRTWVNfaWZ5KGdldHBpZCksICVyYXggKi8K LSsvKiAweDQ4LCAweGM3LCAweGMwLCAweDI3LCAweDAwLCAweDAwLCAweDAwICovCi0rLyogc28g anVzdDogKi8KLSsgIDB4MjcsIDB4MDAsIDB4MDAsIDB4MDAsCi0rLyogCXN5c2NhbGwgKi8KLSsg IDB4MGYsIDB4MDUsCi0rLyogCW1vdmwJJWVheCwgJWZzOlBJRCAqLwotKyAgMHg2NCwgMHg4OSwg MHgwNCwgMHgyNSwgMHg5NCwgMHgwMCwgMHgwMCwgMHgwMCwKLSsvKiAJbW92bAklZWF4LCAlZnM6 VElEICovCi0rICAweDY0LCAweDg5LCAweDA0LCAweDI1LCAweDkwLCAweDAwLCAweDAwLCAweDAw LAotKy8qICNlbmRpZiAqLwotKy8qIAl8KiBTZXQgdXAgYXJndW1lbnRzIGZvciB0aGUgZnVuY3Rp b24gY2FsbC4gICp8ICovCi0rLyogCXBvcHEJJXJheAkJfCogRnVuY3Rpb24gdG8gY2FsbC4gICp8 ICovCi0rICAweDU4LAotKy8qIAlwb3BxCSVyZGkJCXwqIEFyZ3VtZW50LiAgKnwgKi8KLSsgIDB4 NWYsCi0rLyogCWNhbGwJKiVyYXgkICAgKi8KLSsgIDB4ZmYsIDB4ZDAKLSt9OwotKwotKyNkZWZp bmUgTElOVVhfQ0xPTkVfTEVOIChzaXplb2YgbGludXhfY2xvbmVfY29kZSkKLSsKLStzdGF0aWMg aW50Ci0rYW1kNjRfbGludXhfY2xvbmVfcnVubmluZyAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNf ZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2ZyYW1lKTsK LSsgIHVuc2lnbmVkIGNoYXIgYnVmW0xJTlVYX0NMT05FX0xFTl07Ci0rCi0rICBpZiAoIXNhZmVf ZnJhbWVfdW53aW5kX21lbW9yeSAodGhpc19mcmFtZSwgcGMgLSBMSU5VWF9DTE9ORV9MRU4sIGJ1 ZiwKLSsJCQkJIExJTlVYX0NMT05FX0xFTikpCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKG1l bWNtcCAoYnVmLCBsaW51eF9jbG9uZV9jb2RlLCBMSU5VWF9DTE9ORV9MRU4pICE9IDApCi0rICAg IHJldHVybiAwOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSthbWQ2NF9s aW51eF9vdXRlcm1vc3RfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQotK3sK LSsgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSk7Ci0rICBjaGFyICpu YW1lOwotKwotKyAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWUsIE5VTEwsIE5V TEwpOwotKwotKyAgLyogSWYgd2UgaGF2ZSBOQU1FLCB3ZSBjYW4gb3B0aW1pemUgdGhlIHNlYXJj aC4KLSsgICAgIGBjbG9uZScgTkFNRSBzdGlsbCBuZWVkcyB0byBoYXZlIHRoZSBjb2RlIGNoZWNr ZWQgYXMgaXRzIG5hbWUgbWF5IGJlCi0rICAgICBwcmVzZW50IGluIHRoZSB1c2VyIGNvZGUuCi0r ICAgICBgX19jbG9uZScgTkFNRSBzaG91bGQgbm90IGJlIHByZXNlbnQgaW4gdGhlIHVzZXIgY29k ZSBidXQgaW4gdGhlIGluaXRpYWwKLSsgICAgIHBhcnRzIG9mIHRoZSBgX19jbG9uZScgaW1wbGVt ZW50YXRpb24gdGhlIHVud2luZCBzdGlsbCBtYWtlcyBzZW5zZS4KLSsgICAgIE1vcmUgZGV0YWls ZWQgdW53aW5kaW5nIGRlY2lzaW9uIHdvdWxkIGJlIHRvbyBtdWNoIHNlbnNpdGl2ZSB0byBwb3Nz aWJsZQotKyAgICAgc3VidGxlIGNoYW5nZXMgaW4gc3BlY2lmaWMgZ2xpYmMgcmV2aXNpb25zLiAg Ki8KLSsgIGlmIChuYW1lID09IE5VTEwgfHwgc3RyY21wIChuYW1lLCAiY2xvbmUiKSA9PSAwCi0r ICAgICAgfHwgc3RyY21wICgiX19jbG9uZSIsIG5hbWUpID09IDApCi0rICAgIHJldHVybiAoYW1k NjRfbGludXhfY2xvbmVfcnVubmluZyAodGhpc19mcmFtZSkgIT0gMCk7Ci0rCi0rICByZXR1cm4g MDsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF93cml0ZV9wYyAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIHBjKQotIHsKLUBAIC0yNzYsNiArMzUwLDggQEAg YW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgotICAgdGRlcC0+c2NfcmVn X29mZnNldCA9IGFtZDY0X2xpbnV4X3NjX3JlZ19vZmZzZXQ7Ci0gICB0ZGVwLT5zY19udW1fcmVn cyA9IEFSUkFZX1NJWkUgKGFtZDY0X2xpbnV4X3NjX3JlZ19vZmZzZXQpOwotIAotKyAgdGRlcC0+ b3V0ZXJtb3N0X2ZyYW1lX3AgPSBhbWQ2NF9saW51eF9vdXRlcm1vc3RfZnJhbWU7Ci0rCi0gICAv KiBHTlUvTGludXggdXNlcyBTVlI0LXN0eWxlIHNoYXJlZCBsaWJyYXJpZXMuICAqLwotICAgc2V0 X3NvbGliX3N2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cwotICAgICAoZ2RiYXJjaCwgc3ZyNF9s cDY0X2ZldGNoX2xpbmtfbWFwX29mZnNldHMpOwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIv Z2RiL2FtZDY0LXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3Jp Zy9nZGIvYW1kNjQtdGRlcC5jCTIwMDktMDctMDIgMTk6MjU6NTIuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvYW1kNjQtdGRlcC5jCTIwMDktMDgtMDMgMTU6NTA6 MDguMDAwMDAwMDAwICswMjAwCi1AQCAtMTczNiwxMSArMTczNiwxNiBAQCBhbWQ2NF9mcmFtZV90 aGlzX2lkIChzdHJ1Y3QgZnJhbWVfaW5mbyAqCi0gewotICAgc3RydWN0IGFtZDY0X2ZyYW1lX2Nh Y2hlICpjYWNoZSA9Ci0gICAgIGFtZDY0X2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2Nh Y2hlKTsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdldF9m cmFtZV9hcmNoICh0aGlzX2ZyYW1lKSk7Ci0gCi0gICAvKiBUaGlzIG1hcmtzIHRoZSBvdXRlcm1v c3QgZnJhbWUuICAqLwotICAgaWYgKGNhY2hlLT5iYXNlID09IDApCi0gICAgIHJldHVybjsKLSAK LSsgIC8qIERldGVjdCBPUyBkZXBlbmRlbnQgb3V0ZXJtb3N0IGZyYW1lczsgc3VjaCBhcyBgY2xv bmUnLiAgKi8KLSsgIGlmICh0ZGVwLT5vdXRlcm1vc3RfZnJhbWVfcCAmJiB0ZGVwLT5vdXRlcm1v c3RfZnJhbWVfcCAodGhpc19mcmFtZSkpCi0rICAgIHJldHVybjsKLSsKLSAgICgqdGhpc19pZCkg PSBmcmFtZV9pZF9idWlsZCAoY2FjaGUtPmJhc2UgKyAxNiwgY2FjaGUtPnBjKTsKLSB9Ci0gCi0t LS0gZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvaTM4Ni10ZGVwLmMub3JpZwkyMDA5LTA4LTEwIDA1 OjAyOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL2kzODYt dGRlcC5jCTIwMDktMDgtMTEgMTY6MzM6NTEuMDAwMDAwMDAwICswMjAwCi1AQCAtNTQzMiw2ICs1 NDMyLDkgQEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAgdGRl cC0+c2NfcGNfb2Zmc2V0ID0gLTE7Ci0gICB0ZGVwLT5zY19zcF9vZmZzZXQgPSAtMTsKLSAKLSsg IC8qIFVud2luZGluZyBzdG9wcyBvbiBpMzg2IGF1dG9tYXRpY2FsbHkuICAqLwotKyAgdGRlcC0+ b3V0ZXJtb3N0X2ZyYW1lX3AgPSBOVUxMOwotKwotICAgdGRlcC0+cmVjb3JkX3JlZ21hcCA9IGkz ODZfcmVjb3JkX3JlZ21hcDsKLSAKLSAgIC8qIFRoZSBmb3JtYXQgdXNlZCBmb3IgYGxvbmcgZG91 YmxlJyBvbiBhbG1vc3QgYWxsIGkzODYgdGFyZ2V0cyBpcwotLS0tIGdkYi02LjguNTAuMjAwOTA4 MTEvZ2RiL2kzODYtdGRlcC5oLm9yaWcJMjAwOS0wOC0xMCAwNTowMjozOS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODExL2dkYi9pMzg2LXRkZXAuaAkyMDA5LTA4LTExIDE2 OjM0OjA4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEyMCw2ICsxMjAsOSBAQCBzdHJ1Y3QgZ2RiYXJj aF90ZGVwCi0gICBpbnQgKCppMzg2X3N5c2VudGVyX3JlY29yZCkgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUpOwotICAgLyogUGFyc2Ugc3lzY2FsbCBhcmdzLiAgKi8KLSAgIGludCAoKmkzODZf c3lzY2FsbF9yZWNvcmQpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsKLSsKLSsgIC8qIERl dGVjdCBPUyBkZXBlbmRlbnQgb3V0ZXJtb3N0IGZyYW1lczsgc3VjaCBhcyBgY2xvbmUnLiAgKi8K LSsgIGludCAoKm91dGVybW9zdF9mcmFtZV9wKSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJh bWUpOwotIH07Ci0gCi0gLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLS0tLSBhL2dk Yi9pYTY0LXRkZXAuYwotKysrIGIvZ2RiL2lhNjQtdGRlcC5jCi1AQCAtMjEyMiw2ICsyMTIyLDEz OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCBpYTY0X2ZyYW1lX3Vud2luZCA9 Ci0gICBkZWZhdWx0X2ZyYW1lX3NuaWZmZXIKLSB9OwotIAotKy8qIERldGVjdCB0aGUgb3V0ZXJt b3N0IGZyYW1lOyBkdXJpbmcgdW53aW5kIG9mCi0rICAgCSM2ICAweDIwMDAwMDAwMDAzNDcxMDAg aW4gX19jbG9uZTIgKCkgZnJvbSAvbGliL2xpYmMuc28uNi4xCi0rICAgYXZvaWQgdGhlIGFkZGl0 aW9uYWwgYm9ndXMgZnJhbWUKLSsgICAJIzcgIDB4MDAwMDAwMDAwMDAwMDAwMCBpbiA/PyAoKSAg Ki8KLSsKLStzdGF0aWMgY2hhciBsaW51eF9jbG9uZTJfY29kZVtdID0KLSt7Ci0rLyogbGliYy9z eXNkZXBzL3VuaXgvc3lzdi9saW51eC9pYTY0L2Nsb25lMi5TICovCi0rICAweDA5LCAweDAwLCAw eDIwLCAweDEyLCAweDkwLCAweDExLCAweDAwLCAweDQwLAotKyAgMHgyOCwgMHgyMCwgMHgyMywg MHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwKLSsvKiAgICAgICAgIHN0NCBbcjldPXI4ICov Ci0rLyogICAgICAgICBzdDQgW3IxMF09cjggKi8KLSsvKiAgICAgICAgIDs7ICovCi0rLyogI2Vu ZGlmICovCi0rICAweDAyLCAweDUwLCAweDIxLCAweDQwLCAweDE4LCAweDE0LCAweDkwLCAweDAy LAotKyAgMHg5MCwgMHgwMCwgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwKLSsv KiAxOiAgICAgIGxkOCBvdXQxPVtpbjBdLDggICAgICAgIHwqIFJldHJpZXZlIGNvZGUgcG9pbnRl ci4gICAgICAgKnwgKi8KLSsvKiAgICAgICAgIG1vdiBvdXQwPWluNCAgICAgICAgICAgIHwqIFBh c3MgcHJvcGVyIGFyZ3VtZW50IHRvIGZuICp8ICovCi0rLyogICAgICAgICA7OyAqLwotKyAgMHgx MSwgMHgwOCwgMHgwMCwgMHg0MCwgMHgxOCwgMHgxMCwgMHg2MCwgMHg1MCwKLSsgIDB4MDUsIDB4 ODAsIDB4MDMsIDB4MDAsIDB4NjgsIDB4MDAsIDB4ODAsIDB4MTIsCi0rLyogICAgICAgICBsZDgg Z3A9W2luMF0gICAgICAgICAgICB8KiBMb2FkIGZ1bmN0aW9uIGdwLiAgICAgICAgICAgICp8ICov Ci0rLyogICAgICAgICBtb3YgYjY9b3V0MSAqLwotKy8qICAgICAgICAgYnIuY2FsbC5kcHRrLm1h bnkgcnA9YjYgfCogQ2FsbCBmbihhcmcpIGluIHRoZSBjaGlsZCAgICAqfCAqLwotKy8qICAgICAg ICAgOzsgKi8KLSsgIDB4MTAsIDB4NDgsIDB4MDEsIDB4MTAsIDB4MDAsIDB4MjEsIDB4MTAsIDB4 MDAsCi0rICAweGEwLCAweDAwLCAweDQyLCAweDAwLCAweDk4LCAweGRmLCAweGY3LCAweDViLAot Ky8qICAgICAgICAgbW92IG91dDA9cjggICAgICAgICAgICAgfCogQXJndW1lbnQgdG8gX2V4aXQg ICAgICAgICAgICAqfCAqLwotKy8qICAgICAgICAgbW92IGdwPWxvYzAgKi8KLSsvKiAgICAgICAg IC5nbG9ibCBISURERU5fSlVNUFRBUkdFVChfZXhpdCkgKi8KLSsvKiAgICAgICAgIGJyLmNhbGwu ZHBudC5tYW55IHJwPUhJRERFTl9KVU1QVEFSR0VUKF9leGl0KSAqLwotKy8qICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCogY2FsbCBfZXhpdCB3aXRoIHJlc3VsdCBmcm9tIGZuLiAg ICAgICp8ICovCi0rICAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDAwLCAw eDAwLAotKyAgMHgwMCwgMHgwMiwgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHg4NCwgMHgwMAot Ky8qICAgICAgICAgcmV0ICAgICAgICAgICAgICAgICAgICAgfCogTm90IHJlYWNoZWQuICAgICAg ICAgKnwgKi8KLSt9OwotKwotKyNkZWZpbmUgTElOVVhfQ0xPTkVfUFJFX1NMT1RTIDMJLyogTnVt YmVyIG9mIHNsb3RzIGJlZm9yZSBQQy4gICovCi0rI2RlZmluZSBMSU5VWF9DTE9ORV9MRU4gKHNp emVvZiBsaW51eF9jbG9uZTJfY29kZSkKLSsKLStzdGF0aWMgaW50Ci0raWE2NF9saW51eF9jbG9u ZTJfcnVubmluZyAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCi0rewotKyAgQ09SRV9B RERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2ZyYW1lKTsKLSsgIGNoYXIgYnVmW0xJTlVYX0NM T05FX0xFTl07Ci0rICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1pbnN5bTsKLSsgIGxvbmcgbG9u ZyBpbnN0cjsKLSsKLSsgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5ICh0aGlzX2ZyYW1l LCBwYyAtIExJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2LAotKwkJCQkgYnVmLCBMSU5VWF9DTE9O RV9MRU4pKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChtZW1jbXAgKGJ1ZiwgbGludXhfY2xv bmUyX2NvZGUsIExJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2KSAhPSAwKQotKyAgICByZXR1cm4g MDsKLSsKLSsgIC8qIEFkanVzdCB0aGUgZXhwZWN0ZWQgIl9leGl0IiBhZGRyZXNzLiAgKi8KLSsg IG1pbnN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0ICgiX2V4aXQiLCBOVUxMKTsKLSsg IGlmIChtaW5zeW0gPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpbnN0ciA9IHNsb3RO X2NvbnRlbnRzICgmbGludXhfY2xvbmUyX2NvZGVbTElOVVhfQ0xPTkVfUFJFX1NMT1RTICogMTZd LCAyKTsKLSsgIGluc3RyICY9IH4oKCgxTCA8PCAyMCkgLSAxKSA8PCAxMyk7Ci0rICAvKiBBZGRy ZXNzIGlzIHJlbGF0aXZlIHRvIHRoZSBqdW1wIGluc3RydWN0aW9uIHNsb3QsIG5vdCB0aGUgbmV4 dCBvbmUuICAqLwotKyAgaW5zdHIgfD0gKCgoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1pbnN5bSkg LSAocGMgJiB+MHhmTCkpID4+IDQpCi0rCSAgICAmICgoMUwgPDwgMjApIC0gMSkpIDw8IDEzOwot KyAgcmVwbGFjZV9zbG90Tl9jb250ZW50cyAoJmxpbnV4X2Nsb25lMl9jb2RlW0xJTlVYX0NMT05F X1BSRV9TTE9UUyAqIDE2XSwgaW5zdHIsCi0rCQkJICAyKTsKLSsKLSsgIGlmIChtZW1jbXAgKCZi dWZbTElOVVhfQ0xPTkVfUFJFX1NMT1RTICogMTZdLAotKyAgICAgICAgICAgICAgJmxpbnV4X2Ns b25lMl9jb2RlW0xJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2XSwKLSsJICAgICAgTElOVVhfQ0xP TkVfTEVOIC0gKExJTlVYX0NMT05FX1BSRV9TTE9UUyAqIDE2KSkgIT0gMCkKLSsgICAgcmV0dXJu IDA7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludAotK2lhNjRfb3V0ZXJtb3N0 X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKLSt7Ci0rICBDT1JFX0FERFIg cGMgPSBnZXRfZnJhbWVfcGMgKHRoaXNfZnJhbWUpOwotKyAgY2hhciAqbmFtZTsKLSsKLSsgIGZp bmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZuYW1lLCBOVUxMLCBOVUxMKTsKLSsKLSsgIC8q IElmIHdlIGhhdmUgTkFNRSwgd2UgY2FuIG9wdGltaXplIHRoZSBzZWFyY2guCi0rICAgICBgY2xv bmUnIE5BTUUgc3RpbGwgbmVlZHMgdG8gaGF2ZSB0aGUgY29kZSBjaGVja2VkIGFzIGl0cyBuYW1l IG1heSBiZQotKyAgICAgcHJlc2VudCBpbiB0aGUgdXNlciBjb2RlLgotKyAgICAgYF9fY2xvbmUn IE5BTUUgc2hvdWxkIG5vdCBiZSBwcmVzZW50IGluIHRoZSB1c2VyIGNvZGUgYnV0IGluIHRoZSBp bml0aWFsCi0rICAgICBwYXJ0cyBvZiB0aGUgYF9fY2xvbmUnIGltcGxlbWVudGF0aW9uIHRoZSB1 bndpbmQgc3RpbGwgbWFrZXMgc2Vuc2UuCi0rICAgICBNb3JlIGRldGFpbGVkIHVud2luZGluZyBk ZWNpc2lvbiB3b3VsZCBiZSB0b28gbXVjaCBzZW5zaXRpdmUgdG8gcG9zc2libGUKLSsgICAgIHN1 YnRsZSBjaGFuZ2VzIGluIHNwZWNpZmljIGdsaWJjIHJldmlzaW9ucy4gICovCi0rICBpZiAobmFt ZSA9PSBOVUxMIHx8IHN0cmNtcCAobmFtZSwgImNsb25lMiIpID09IDAKLSsgICAgICB8fCBzdHJj bXAgKCJfX2Nsb25lMiIsIG5hbWUpID09IDApCi0rICAgIHJldHVybiAoaWE2NF9saW51eF9jbG9u ZTJfcnVubmluZyAodGhpc19mcmFtZSkgIT0gMCk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0r c3RhdGljIHZvaWQKLStpYTY0X2Nsb25lMl9mcmFtZV90aGlzX2lkIChzdHJ1Y3QgZnJhbWVfaW5m byAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUsCi0rCQkJICAgc3RydWN0IGZyYW1lX2lk ICp0aGlzX2lkKQotK3sKLSsgIC8qIExlYXZlIHRoZSBkZWZhdWx0IG91dGVybW9zdCBmcmFtZSBh dCAqVEhJU19JRC4gICovCi0rfQotKwotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotK2lhNjRfY2xv bmUyX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAot KwkJCQkgdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCi0rewotKyAgcmV0dXJuIGZyYW1l X3Vud2luZF9nb3RfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHJlZ251bSwgcmVnbnVtKTsKLSt9Ci0r Ci0rc3RhdGljIGludAotK2lhNjRfY2xvbmUyX2ZyYW1lX3NuaWZmZXIgKGNvbnN0IHN0cnVjdCBm cmFtZV91bndpbmQgKnNlbGYsCi0rCQkJICAgc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUs Ci0rCQkJICAgdm9pZCAqKnRoaXNfcHJvbG9ndWVfY2FjaGUpCi0rewotKyAgaWYgKGlhNjRfb3V0 ZXJtb3N0X2ZyYW1lICh0aGlzX2ZyYW1lKSkKLSsgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4g MDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgaWE2NF9jbG9uZTJf ZnJhbWVfdW53aW5kID0KLSt7Ci0rICBOT1JNQUxfRlJBTUUsCi0rICAmaWE2NF9jbG9uZTJfZnJh bWVfdGhpc19pZCwKLSsgICZpYTY0X2Nsb25lMl9mcmFtZV9wcmV2X3JlZ2lzdGVyLAotKyAgTlVM TCwKLSsgICZpYTY0X2Nsb25lMl9mcmFtZV9zbmlmZmVyCi0rfTsKLSsKLSAvKiBTaWduYWwgdHJh bXBvbGluZXMuICAqLwotIAotIHN0YXRpYyB2b2lkCi1AQCAtMzgyNCw2ICszOTU1LDcgQEAgaWE2 NF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hf bGlzdCAqYXJjaGVzKQotICAgc2V0X2dkYmFyY2hfZHVtbXlfaWQgKGdkYmFyY2gsIGlhNjRfZHVt bXlfaWQpOwotIAotICAgc2V0X2dkYmFyY2hfdW53aW5kX3BjIChnZGJhcmNoLCBpYTY0X3Vud2lu ZF9wYyk7Ci0rICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmaWE2NF9j bG9uZTJfZnJhbWVfdW53aW5kKTsKLSAjaWZkZWYgSEFWRV9MSUJVTldJTkRfSUE2NF9ICi0gICBm cmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmlhNjRfbGlidW53aW5kX3NpZ3RyYW1wX2ZyYW1lX3Vud2luZCk7Ci1J bmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNs b25lLXN0b3AuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAogKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmMJMjAwOS0wOC0wMyAxNTo1MDowOC4wMDAwMDAwMDAg KzAyMDAKIEBAIC0wLDAgKzEsMzkgQEAKCmRpZmYgLS1naXQgYS9nZGItNi41LWJ6MjQzODQ1LXN0 YWxlLXRlc3Rpbmctem9tYmllLXRlc3QucGF0Y2ggYi9nZGItNi41LWJ6MjQzODQ1LXN0YWxlLXRl c3Rpbmctem9tYmllLXRlc3QucGF0Y2gKaW5kZXggYWE1MTRjMi4uMWM5YjFmMiAxMDA2NDQKLS0t IGEvZ2RiLTYuNS1iejI0Mzg0NS1zdGFsZS10ZXN0aW5nLXpvbWJpZS10ZXN0LnBhdGNoCisrKyBi L2dkYi02LjUtYnoyNDM4NDUtc3RhbGUtdGVzdGluZy16b21iaWUtdGVzdC5wYXRjaApAQCAtMSw3 ICsxLDcgQEAKIGRpZmYgLXUgLXJ1TnAgZ2RiLTYuMy11bnBhdGNoZWQvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS90cmFjZWZvcmstem9tYmllLmV4cCBnZGItNi4zL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvdHJhY2Vmb3JrLXpvbWJpZS5leHAKIC0tLSBnZGItNi4zLXVucGF0Y2hlZC9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3RyYWNlZm9yay16b21iaWUuZXhwCTE5NjktMTItMzEgMTk6MDA6MDAuMDAw MDAwMDAwIC0wNTAwCiArKysgZ2RiLTYuMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3RyYWNlZm9y ay16b21iaWUuZXhwCTIwMDctMDctMzEgMTM6MDQ6MTIuMDAwMDAwMDAwIC0wNDAwCi1AQCAtMCww ICsxLDgyIEBACitAQCAtMCwwICsxLDc1IEBACiArIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0xOCwxMyArMTgsNiBA QCBkaWZmIC11IC1ydU5wIGdkYi02LjMtdW5wYXRjaGVkL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dHJhY2Vmb3JrLXpvbWJpZS5leHAgZ2RiLQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICsjIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAq LwogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9 Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogKyMgYXJlIHdlIG9uIGEgdGFy Z2V0IGJvYXJkCiAraWYgW2lzX3JlbW90ZSB0YXJnZXRdIHRoZW4gewogKyAgICByZXR1cm4gMAoK ZGlmZiAtLWdpdCBhL2dkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cucGF0Y2ggYi9nZGItNi41 LWR3YXJmLXN0YWNrLW92ZXJmbG93LnBhdGNoCmluZGV4IDQ3NmJhYzIuLjBkMTA3YjMgMTAwNjQ0 Ci0tLSBhL2dkYi02LjUtZHdhcmYtc3RhY2stb3ZlcmZsb3cucGF0Y2gKKysrIGIvZ2RiLTYuNS1k d2FyZi1zdGFjay1vdmVyZmxvdy5wYXRjaApAQCAtMTAsMTEgKzEwLDExIEBAIGZvciBnZGIvQ2hh bmdlTG9nOgogCiAJUG9ydCB0byBHREItNi43LgogCi1JbmRleDogZ2RiLTYuNy9nZGIvZHdhcmYy cmVhZC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTYuNy5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAwNy0xMC0xNSAwMDow ODozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi43L2dkYi9kd2FyZjJyZWFkLmMJMjAwNy0x MC0xNSAyMTo0Mjo0My4wMDAwMDAwMDAgKzAyMDAKLUBAIC05MDcwLDggKzkwNzAsNyBAQCBkd2Fy ZjJfZnVuZGFtZW50YWxfdHlwZSAoc3RydWN0IG9iamZpbGUgCistLS0gZ2RiLTcuMS45MC4yMDEw MDcxMS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMiAxMDo0Mzo1My4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0x MiAxMDo0OTozMi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMTM4Miw4ICsxMTM4Miw3IEBAIHJlYWRf c2lnbmF0dXJlZF90eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2IKICAgICBjYWxsZXJzIHdpbGwgb25s eSB3YW50IGEgdmVyeSBiYXNpYyByZXN1bHQgYW5kIHRoaXMgY2FuIGJlY29tZSBhCiAgICAgY29t cGxhaW50LgogIApAQCAtMjQsNyArMjQsNyBAQCBJbmRleDogZ2RiLTYuNy9nZGIvZHdhcmYycmVh ZC5jCiAgCiAgc3RhdGljIENPUkVfQUREUgogIGRlY29kZV9sb2NkZXNjIChzdHJ1Y3QgZHdhcmZf YmxvY2sgKmJsaywgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi1AQCAtOTA4OCw3ICs5MDg3LDcgQEAg ZGVjb2RlX2xvY2Rlc2MgKHN0cnVjdCBkd2FyZl9ibG9jayAqYmxrLAorQEAgLTExMzk5LDcgKzEx Mzk4LDcgQEAgZGVjb2RlX2xvY2Rlc2MgKHN0cnVjdCBkd2FyZl9ibG9jayAqYmxrLAogIAogICAg aSA9IDA7CiAgICBzdGFja2kgPSAwOwpAQCAtMzMsOCArMzMsOCBAQCBJbmRleDogZ2RiLTYuNy9n ZGIvZHdhcmYycmVhZC5jCiAgCiAgICB3aGlsZSAoaSA8IHNpemUpCiAgICAgIHsKLUBAIC05Mjcw LDYgKzkyNjksMTYgQEAgZGVjb2RlX2xvY2Rlc2MgKHN0cnVjdCBkd2FyZl9ibG9jayAqYmxrLAot IAkJICAgICBkd2FyZl9zdGFja19vcF9uYW1lIChvcCkpOworQEAgLTExNTgxLDYgKzExNTgwLDE2 IEBAIGRlY29kZV9sb2NkZXNjIChzdHJ1Y3QgZHdhcmZfYmxvY2sgKmJsaywKKyAJCSAgICAgZHdh cmZfc3RhY2tfb3BfbmFtZSAob3AsIDEpKTsKICAJICByZXR1cm4gKHN0YWNrW3N0YWNraV0pOwog IAl9CiArICAgICAgLyogRW5mb3JjZSBtYXhpbXVtIHN0YWNrIGRlcHRoIG9mIHNpemUtMSB0byBh dm9pZCArK3N0YWNraSB3cml0aW5nCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1nY29yZS1idWZmZXIt bGltaXQtdGVzdC5wYXRjaCBiL2dkYi02LjUtZ2NvcmUtYnVmZmVyLWxpbWl0LXRlc3QucGF0Y2gK aW5kZXggOTQ0MjE5OC4uZGFkNDgzMyAxMDA2NDQKLS0tIGEvZ2RiLTYuNS1nY29yZS1idWZmZXIt bGltaXQtdGVzdC5wYXRjaAorKysgYi9nZGItNi41LWdjb3JlLWJ1ZmZlci1saW1pdC10ZXN0LnBh dGNoCkBAIC00Miw3ICs0Miw3IEBAIGRpZmYgLXUgLVggL2hvbWUvamtyYXRvY2gvLmRpZmZpLmxp c3QgLXJ1TnAgZ2RiLTYuNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlCiBkaWZmIC11IC1Y IC9ob21lL2prcmF0b2NoLy5kaWZmaS5saXN0IC1ydU5wIGdkYi02LjUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nY29yZS1leGNlc3NpdmUtbWVtb3J5LmV4cCBnZGItNi41LXVua25vd24vZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1leGNlc3NpdmUtbWVtb3J5LmV4cAogLS0tIGdkYi02LjUv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1leGNlc3NpdmUtbWVtb3J5LmV4cAkxOTcwLTAx LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAogKysrIGdkYi02LjUtdW5rbm93bi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2djb3JlLWV4Y2Vzc2l2ZS1tZW1vcnkuZXhwCTIwMDgtMDEtMDggMTE6 NDc6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDEwMSBAQAorQEAgLTAsMCArMSw5NCBA QAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiAr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQpAQCAtNTksMTMgKzU5LDYgQEAgZGlmZiAtdSAtWCAvaG9tZS9qa3JhdG9j aC8uZGlmZmkubGlzdCAtcnVOcCBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUK ICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCiArIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7 Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1 Z19pZCAwCi0rCiArc2V0IHRlc3RmaWxlIGdjb3JlLWV4Y2Vzc2l2ZS1tZW1vcnkKICtzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jCiArc2V0IHNoZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9LWdkYi5zaAoKZGlmZiAtLWdpdCBhL2dkYi02LjUtZ2NvcmUtaTM4Ni1vbi1hbWQ2NC5w YXRjaCBiL2dkYi02LjUtZ2NvcmUtaTM4Ni1vbi1hbWQ2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMzRhYzEzZS4uMDAwMDAwMAotLS0gYS9nZGItNi41LWdjb3JlLWkzODYt b24tYW1kNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NDcgKzAsMCBAQAotMjAwNi0xMC0w MSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCSAgICBGdWpp dHN1Ci0KLQkqIGFtZDY0LWxpbnV4LW5hdC5jOiBTdXBwb3J0IG5ldyBsaW51eF9lbGZjb3JlX3dy aXRlX3BycHNpbmZvLAotCWxpbnV4X2VsZmNvcmVfd3JpdGVfcHJzdGF0dXMsIGxpbnV4X2VsZmNv cmVfd3JpdGVfcHJmcHJlZy4KLQkoaTM4Nl9saW51eF9ncmVnc2V0MzJfcmVnX29mZnNldCk6IE5l dyBtYXBwaW5nIGZvciBpMzg2IG9uIGFtZDY0LgotCSogZ2NvcmUuYyAoZ2NvcmVfY3JlYXRlX2Nh bGxiYWNrKTogQ29tbWVudCB2ZHNvIExpbnV4IGtlcm5lbCBidWcuCi0JKiBjb25maWd1cmUuYWM6 IENoZWNrIGZvciA8c3lzL3VzZXIzMi5oPiwgPHN5cy9wcm9jZnMzMi5oPi4KLQkqIGNvbmZpZ3Vy ZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KLQkqIGdkYl91c2VyMzIuaCwgZ2RiX3Byb2NmczMy Lmg6IERlZmluZSAzMi1iaXQgY29yZSBmaWxlcyBldmVuIGZvcgotCTY0LWJpdCBnZGIsIHByb3Zp ZGUgZmFsbGJhY2tzIGZvciA8c3lzL3VzZXIzMi5oPiBhbmQgPHN5cy9wcm9jZnMzMi5oPi4KLQkq IGxpbnV4LW5hdC5jOiBWaXJ0dWFsaXplIGBlbGZjb3JlXyonIGJ5ICgqYGxpbnV4X2VsZmNvcmVf KicpLgotCShsaW51eF9uYXRfZG9fdGhyZWFkX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotCShsaW51 eF9uYXRfbWFrZV9jb3JlZmlsZV9ub3Rlcyk6IExpa2V3aXNlLgotCSogbGludXgtbmF0Lmg6IExp a2V3aXNlLgotCSogTWFrZWZpbGUuaW46IERlcGVuZGVuY2llcyB1cGRhdGVkLgotCi0yMDA3LTEw LTE2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0 IHRvIEdEQi02LjcuCi0KLTIwMDgtMDItMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCVBvcnQgdG8gR0RCLTYuOHByZS4KLQotSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEwLTAxLTE1IDAzOjE2 OjQzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FtZDY0LWxp bnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCi1AQCAtNTEsNiAr NTEsOSBAQAotICNpbmNsdWRlICJpMzg2LWxpbnV4LXRkZXAuaCIKLSAjaW5jbHVkZSAiYW1kNjQt bmF0LmgiCi0gI2luY2x1ZGUgImkzODYtbmF0LmgiCi0rI2luY2x1ZGUgImkzODctdGRlcC5oIgot KyNpbmNsdWRlICJlbGYtYmZkLmgiCi0rI2luY2x1ZGUgImdkYl9wcm9jZnMzMi5oIgotIAotIC8q IE1hcHBpbmcgYmV0d2VlbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyBpbiBHTlUvTGlu dXggeDg2LTY0Ci0gICAgYHN0cnVjdCB1c2VyJyBmb3JtYXQgYW5kIEdEQidzIHJlZ2lzdGVyIGNh Y2hlIGxheW91dC4gICovCi1AQCAtODUsNiArODgsMzUgQEAgc3RhdGljIGludCBhbWQ2NF9saW51 eF9ncmVnc2V0NjRfcmVnX29mZgotICAgIEdOVS9MaW51eCBpMzg2IHJlZ2lzdGVycyBhcmUgYWxs IDMyLWJpdCwgYnV0IHNpbmNlIHdlJ3JlCi0gICAgbGl0dGxlLWVuZGlhbiB3ZSBnZXQgYXdheSB3 aXRoIHRoYXQuICAqLwotIAotKy8qIFRoaXMgaW5mbyBpcyBub3QgcmV1c2FibGUgZnJvbSAiaTM4 Ni1saW51eC1uYXQuYyIgYXMgZ2RiIGl0c2VsZiBydW5zIGluCi0rICAgNjQtYml0IG1vZGUgYW5k IHNvIHB0cmFjZSgyKSBoYXMgNjQtYml0IHN0cnVjdHVyZSBsYXlvdXQuCi0rICAgSnVzdCB0aGUg Y29yZWZpbGUgYmVpbmcgZ2VuZXJhdGVkIGhhcyAzMi1iaXQgbGF5b3V0IHNvIHdlIG5lZWQgdG8g ZG8KLSsgICBhIGNvbnZlcnNpb24gc3BlY2lmaWMgdG8gdGhlIGkzODYtb24tYW1kNjQgY29tcGF0 aWJpbGl0eSBtb2RlLiAgKi8KLStzdGF0aWMgaW50IGkzODZfbGludXhfZ3JlZ3NldDMyX3JlZ19v ZmZzZXRbXSA9Ci0rewotKyAgNiAqIDQsCQkJLyogJWVheCAqLwotKyAgMSAqIDQsCQkJLyogJWVj eCAqLwotKyAgMiAqIDQsCQkJLyogJWVkeCAqLwotKyAgMCAqIDQsCQkJLyogJWVieCAqLwotKyAg MTUgKiA0LAkJCS8qICVlc3AgKi8KLSsgIDUgKiA0LAkJCS8qICVlYnAgKi8KLSsgIDMgKiA0LAkJ CS8qICVlc2kgKi8KLSsgIDQgKiA0LAkJCS8qICVlZGkgKi8KLSsgIDEyICogNCwJCQkvKiAlZWlw ICovCi0rICAxNCAqIDQsCQkJLyogJWVmbGFncyAqLwotKyAgMTMgKiA0LAkJCS8qICVjcyAqLwot KyAgMTYgKiA0LAkJCS8qICVzcyAqLwotKyAgNyAqIDQsCQkJLyogJWRzICovCi0rICA4ICogNCwJ CQkvKiAlZXMgKi8KLSsgIDkgKiA0LAkJCS8qICVmcyAqLwotKyAgMTAgKiA0LAkJCS8qICVncyAq LwotKyAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotKyAgLTEsIC0xLCAtMSwgLTEs IC0xLCAtMSwgLTEsIC0xLAotKyAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotKyAg LTEsCi0rICAxMSAqIDQJCQkvKiAib3JpZ19lYXgiICovCi0rfTsKLSsKLSAvKiBGcm9tIDxzeXMv cmVnLmg+IG9uIEdOVS9MaW51eCBpMzg2LiAgKi8KLSBzdGF0aWMgaW50IGFtZDY0X2xpbnV4X2dy ZWdzZXQzMl9yZWdfb2Zmc2V0W10gPQotIHsKLUBAIC0xMDMsNiArMTM1LDk2IEBAIHN0YXRpYyBp bnQgYW1kNjRfbGludXhfZ3JlZ3NldDMyX3JlZ19vZmYKLSB9OwotIAwKLSAKLSsvKiBUaGlzIGZ1 bmN0aW9ucyBtYWtlIEVMRjMyIDMyLWJpdCBlbGZjb3JlIG5vdGUgc2VjdGlvbnMKLSsgICBvbiBh bWQ2NCBlbnZpcm9ubWVudC4gKi8KLSsKLStzdGF0aWMgY2hhciAqCi0rYW1kNjRfbGludXhfZWxm Y29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICphYmZkLCBjaGFyICpidWYsIGludCAqYnVmc2l6LAot KwkJCQkgICAgY29uc3QgY2hhciAqZm5hbWUsIGNvbnN0IGNoYXIgKnBzYXJncykKLSt7Ci0rICBp ZiAoZ2RiYXJjaF9wdHJfYml0ICh0YXJnZXRfZ2RiYXJjaCkgPT0gMzIpCi0rICAgIHsKLSsgICAg ICBpbnQgbm90ZV90eXBlOwotKyAgICAgIGNoYXIgKm5vdGVfbmFtZSA9ICJDT1JFIjsKLSsgICAg ICBzdHJ1Y3QgZWxmX3BycHNpbmZvMzIgZGF0YTsKLSsgICAgICBub3RlX3R5cGUgPSBOVF9QUlBT SU5GTzsKLSsKLSsgICAgICBtZW1zZXQgKCZkYXRhLCAwLCBzaXplb2YgKGRhdGEpKTsKLSsgICAg ICBzdHJuY3B5IChkYXRhLnByX2ZuYW1lLCBmbmFtZSwgc2l6ZW9mIChkYXRhLnByX2ZuYW1lKSk7 Ci0rICAgICAgc3RybmNweSAoZGF0YS5wcl9wc2FyZ3MsIHBzYXJncywgc2l6ZW9mIChkYXRhLnBy X3BzYXJncykpOwotKyAgICAgIHJldHVybiBlbGZjb3JlX3dyaXRlX25vdGUgKGFiZmQsIGJ1Ziwg YnVmc2l6LAotKwkJCQkgbm90ZV9uYW1lLCBub3RlX3R5cGUsICZkYXRhLCBzaXplb2YgKGRhdGEp KTsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXR1cm4gZWxmY29yZV93cml0ZV9wcnBzaW5mbyAo YWJmZCwgYnVmLCBidWZzaXosIGZuYW1lLCBwc2FyZ3MpOwotK30KLSsKLStzdGF0aWMgdm9pZAot K2FtZDY0X2xpbnV4X3NldF9yZWdpc3RlcnMgKGNvbnN0IGdkYl9ieXRlICpncmVncywgZ2RiX2J5 dGUgKmJ1ZikKLSt7Ci0rICBpbnQgaTsKLSsgIC8qIENvcHkgdGhlIGkzODYgcmVnaXN0ZXJzIGlu IHRoZSBhbWQ2NCBsYXlvdXQgaW50byBpMzg2IGxheW91dC4gICovCi0rICBmb3IgKGkgPSAwOyBp IDwgSTM4Nl9OVU1fR1JFR1M7IGkrKykKLSsgICAgbWVtY3B5KGJ1ZiArIGkzODZfbGludXhfZ3Jl Z3NldDMyX3JlZ19vZmZzZXRbaV0sCi0rCSAgIGdyZWdzICsgYW1kNjRfbGludXhfZ3JlZ3NldDMy X3JlZ19vZmZzZXRbaV0sIDQpOwotKyAgZm9yIChpID0gSTM4Nl9DU19SRUdOVU07IGkgPD0gSTM4 Nl9HU19SRUdOVU07IGkrKykKLSsgICAgbWVtY3B5KGJ1ZiArIGkzODZfbGludXhfZ3JlZ3NldDMy X3JlZ19vZmZzZXRbaV0sCi0rCSAgIGdyZWdzICsgYW1kNjRfbGludXhfZ3JlZ3NldDMyX3JlZ19v ZmZzZXRbaV0sIDQpOwotK30KLSsKLStzdGF0aWMgY2hhciAqCi0rYW1kNjRfbGludXhfZWxmY29y ZV93cml0ZV9wcnN0YXR1cyAoYmZkICphYmZkLCBjaGFyICpidWYsIGludCAqYnVmc2l6LAotKwkJ CSAgICAgIGxvbmcgcGlkLCBpbnQgY3Vyc2lnLCBjb25zdCB2b2lkICpncmVncykKLSt7Ci0rICBp ZiAoZ2RiYXJjaF9wdHJfYml0ICh0YXJnZXRfZ2RiYXJjaCkgPT0gMzIpCi0rICAgIHsKLSsgICAg ICBjaGFyICpub3RlX25hbWUgPSAiQ09SRSI7Ci0rICAgICAgc3RydWN0IGVsZl9wcnN0YXR1czMy IHByc3RhdDsKLSsgICAgICBtZW1zZXQgKCZwcnN0YXQsIDAsIHNpemVvZiAocHJzdGF0KSk7Ci0r ICAgICAgcHJzdGF0LnByX3BpZCA9IHBpZDsKLSsgICAgICBwcnN0YXQucHJfY3Vyc2lnID0gY3Vy c2lnOwotKyAgICAgIGFtZDY0X2xpbnV4X3NldF9yZWdpc3RlcnMgKGdyZWdzLCAoZ2RiX2J5dGUg KikgJnByc3RhdC5wcl9yZWcpOwotKyAgICAgIHJldHVybiBlbGZjb3JlX3dyaXRlX25vdGUgKGFi ZmQsIGJ1ZiwgYnVmc2l6LCBub3RlX25hbWUsCi0rCQkJCSBOVF9QUlNUQVRVUywgJnByc3RhdCwg c2l6ZW9mIChwcnN0YXQpKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXR1cm4gZWxmY29yZV93 cml0ZV9wcnN0YXR1cyAoYWJmZCwgYnVmLCBidWZzaXosIHBpZCwgY3Vyc2lnLCBncmVncyk7Ci0r fQotKwotK3N0YXRpYyBjaGFyICoKLSthbWQ2NF9lbGZjb3JlX3dyaXRlX3ByeGZwcmVnMzIgKGJm ZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNpeiwKLSsJCQkJc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSkKLSt7Ci0rICBjaGFyICpub3RlX25hbWUgPSAiTElOVVgiOwotKyAgZWxmX2ZweHJl Z3NldDMyX3QgZnB4cmVnczMyOwotKwotKyAgaTM4N19jb2xsZWN0X2Z4c2F2ZSAocmVnY2FjaGUs IC0xLCAmZnB4cmVnczMyKTsKLSsgIHJldHVybiBlbGZjb3JlX3dyaXRlX25vdGUoYWJmZCwgYnVm LCBidWZzaXosCi0rCQkJCSAgICAgbm90ZV9uYW1lLCBOVF9QUlhGUFJFRywgJmZweHJlZ3MzMiwK LSsJCQkJICAgICBzaXplb2YoZnB4cmVnczMyKSk7Ci0rfQotKwotK3N0YXRpYyBjaGFyICoKLSth bWQ2NF9saW51eF9lbGZjb3JlX3dyaXRlX3ByZnByZWcgKGJmZCAqYWJmZCwgY2hhciAqYnVmLAot KwkJCQkgICBpbnQgKmJ1ZnNpeiwgY29uc3Qgdm9pZCAqZnByZWdzLCBpbnQgc2l6ZSwKLSsJCQkJ ICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSkKLSt7Ci0rICBpZiAoZ2RiYXJjaF9wdHJfYml0 ICh0YXJnZXRfZ2RiYXJjaCkgPT0gMzIpCi0rICAgIHsKLSsgICAgICBjaGFyICpub3RlX25hbWUg PSAiQ09SRSI7Ci0rICAgICAgZWxmX2ZwcmVnc2V0MzJfdCBmcHJlZ3MzMjsKLSsgIAotKyAgICAg IGkzODdfY29sbGVjdF9mc2F2ZSAocmVnY2FjaGUsIC0xLCAmZnByZWdzMzIpOwotKyAgICAgIGJ1 ZiA9IGVsZmNvcmVfd3JpdGVfbm90ZShhYmZkLCBidWYsIGJ1ZnNpeiwgbm90ZV9uYW1lLAotKwkJ CSAgICAgICBOVF9GUFJFR1NFVCwgJmZwcmVnczMyLCBzaXplb2YoZnByZWdzMzIpKTsKLSsKLSsg ICAgICByZXR1cm4gYW1kNjRfZWxmY29yZV93cml0ZV9wcnhmcHJlZzMyIChhYmZkLCBidWYsIGJ1 ZnNpeiwgcmVnY2FjaGUpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHJldHVybiBlbGZjb3JlX3dy aXRlX3ByZnByZWcgKGFiZmQsIGJ1ZiwgYnVmc2l6LCBmcHJlZ3MsIHNpemUpOwotK30KLSsKLSsK LSAvKiBUcmFuc2ZlcmluZyB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyBiZXR3ZWVuIEdE QiwgaW5mZXJpb3JzCi0gICAgYW5kIGNvcmUgZmlsZXMuICAqLwotIAotQEAgLTcyNyw2ICs4NDks MTEgQEAgX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0ICh2b2lkKQotICAgdC0+dG9fZmV0Y2hf cmVnaXN0ZXJzID0gYW1kNjRfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzOwotICAgdC0+ dG9fc3RvcmVfcmVnaXN0ZXJzID0gYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJz OwotIAotKyAgLyogVGhpcyBmdW5jdGlvbnMgbWFrZSBlbGZjb3JlIG5vdGUgc2VjdGlvbnMuICov Ci0rICBsaW51eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZvID0gYW1kNjRfbGludXhfZWxmY29yZV93 cml0ZV9wcnBzaW5mbzsKLSsgIGxpbnV4X2VsZmNvcmVfd3JpdGVfcHJzdGF0dXMgPSBhbWQ2NF9s aW51eF9lbGZjb3JlX3dyaXRlX3Byc3RhdHVzOwotKyAgbGludXhfZWxmY29yZV93cml0ZV9wcmZw cmVnID0gYW1kNjRfbGludXhfZWxmY29yZV93cml0ZV9wcmZwcmVnOwotKwotICAgLyogUmVnaXN0 ZXIgdGhlIHRhcmdldC4gICovCi0gICBsaW51eF9uYXRfYWRkX3RhcmdldCAodCk7Ci0gICBsaW51 eF9uYXRfc2V0X25ld190aHJlYWQgKHQsIGFtZDY0X2xpbnV4X25ld190aHJlYWQpOwotSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlnLmluCTIwMTAt MDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCi1AQCAtMTQ5LDYgKzE0OSw5IEBACi0gLyog RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlbGZfaHAuaD4gaGVhZGVyIGZpbGUuICovCi0g I3VuZGVmIEhBVkVfRUxGX0hQX0gKLSAKLSsvKiBEZWZpbmUgaWYgc3RydWN0IGVsZl9wcnN0YXR1 czMyIGlzIGF2YWlsYWJsZS4gKi8KLSsjdW5kZWYgSEFWRV9FTEZfUFJTVEFUVVMzMgotKwotIC8q IERlZmluZSB0byAxIGlmIHlvdXIgc3lzdGVtIGhhcyB0aGUgZXRleHQgdmFyaWFibGUuICovCi0g I3VuZGVmIEhBVkVfRVRFWFQKLSAKLUBAIC00OTAsNiArNDkzLDkgQEAKLSAvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wb2xsLmg+IGhlYWRlciBmaWxlLiAqLwotICN1bmRlZiBI QVZFX1NZU19QT0xMX0gKLSAKLSsvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9w cm9jZnMzMi5oPiBoZWFkZXIgZmlsZS4gKi8KLSsjdW5kZWYgSEFWRV9TWVNfUFJPQ0ZTMzJfSAot KwotIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Byb2Nmcy5oPiBoZWFkZXIg ZmlsZS4gKi8KLSAjdW5kZWYgSEFWRV9TWVNfUFJPQ0ZTX0gKLSAKLUBAIC01MTcsNiArNTIzLDkg QEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIg ZmlsZS4gKi8KLSAjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSAotIAotKy8qIERlZmluZSB0byAxIGlm IHlvdSBoYXZlIHRoZSA8c3lzL3VzZXIzMi5oPiBoZWFkZXIgZmlsZS4gKi8KLSsjdW5kZWYgSEFW RV9TWVNfVVNFUjMyX0gKLSsKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91 c2VyLmg+IGhlYWRlciBmaWxlLiAqLwotICN1bmRlZiBIQVZFX1NZU19VU0VSX0gKLSAKLUluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEwLTAxLTE1IDAzOjE2OjQzLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZQkyMDEw LTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCArMDEwMAotQEAgLTEwMDQzLDYgKzEwMDQzLDI2OCBA QCAkYXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mCi0gCi0gZmkKLSAKLSsK LSsKLStmb3IgYWNfaGVhZGVyIGluIHN5cy91c2VyMzIuaCBzeXMvcHJvY2ZzMzIuaAotK2RvCi0r YXNfYWNfSGVhZGVyPWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hg Ci0raWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgot KyAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKLStl Y2hvICRFQ0hPX04gImNoZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgotK2lm IGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRoZW4KLSsgIGVj aG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZmkKLStlY2hvICIkYXNfbWU6JExJ TkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY1Ci0rZWNo byAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNgotK2Vsc2UK LSsgICMgSXMgdGhlIGhlYWRlciBjb21waWxhYmxlPwotK2VjaG8gIiRhc19tZTokTElORU5POiBj aGVja2luZyAkYWNfaGVhZGVyIHVzYWJpbGl0eSIgPiY1Ci0rZWNobyAkRUNIT19OICJjaGVja2lu ZyAkYWNfaGVhZGVyIHVzYWJpbGl0eS4uLiAkRUNIT19DIiA+JjYKLStjYXQgPmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKLSsvKiBjb25mZGVmcy5oLiAgKi8KLStfQUNFT0YKLStjYXQgY29uZmRl ZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLStjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyRhY19pbmNsdWRlc19kZWZhdWx0Ci0rI2luY2x1 ZGUgPCRhY19oZWFkZXI+Ci0rX0FDRU9GCi0rcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dAotK2lm IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NvbXBpbGVcIiIpID4mNQotKyAg KGV2YWwgJGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXIxCi0rICBhY19zdGF0dXM9JD8KLSsgIGdy ZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0rICBybSAtZiBjb25mdGVz dC5lcjEKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBlY2hvICIkYXNfbWU6JExJTkVOTzog XCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfSAmJgotKwkgeyBh Y190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgotKwkJCSB8fCB0ZXN0ICEgLXMgY29u ZnRlc3QuZXJyJwotKyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIi KSA+JjUKLSsgIChldmFsICRhY190cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgZWNobyAi JGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgKGV4aXQgJGFjX3N0YXR1 cyk7IH07IH0gJiYKLSsJIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0LiRhY19vYmpleHQnCi0r ICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotKyAgKGV2 YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfTsgdGhl bgotKyAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcwotK2Vsc2UKLSsgIGVjaG8gIiRhc19tZTogZmFp bGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0rc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4m NQotKwotK2FjX2hlYWRlcl9jb21waWxlcj1ubwotK2ZpCi0rcm0gLWYgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotK2VjaG8gIiRhc19tZTokTElORU5P OiByZXN1bHQ6ICRhY19oZWFkZXJfY29tcGlsZXIiID4mNQotK2VjaG8gIiR7RUNIT19UfSRhY19o ZWFkZXJfY29tcGlsZXIiID4mNgotKwotKyMgSXMgdGhlIGhlYWRlciBwcmVzZW50PwotK2VjaG8g IiRhc19tZTokTElORU5POiBjaGVja2luZyAkYWNfaGVhZGVyIHByZXNlbmNlIiA+JjUKLStlY2hv ICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2UuLi4gJEVDSE9fQyIgPiY2Ci0r Y2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogY29uZmRlZnMuaC4gICovCi0rX0FD RU9GCi0rY2F0IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0rY2F0ID4+Y29uZnRlc3Qu JGFjX2V4dCA8PF9BQ0VPRgotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsjaW5jbHVkZSA8JGFj X2hlYWRlcj4KLStfQUNFT0YKLStpZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRh Y19jcHAgY29uZnRlc3QuJGFjX2V4dFwiIikgPiY1Ci0rICAoZXZhbCAkYWNfY3BwIGNvbmZ0ZXN0 LiRhY19leHQpIDI+Y29uZnRlc3QuZXIxCi0rICBhY19zdGF0dXM9JD8KLSsgIGdyZXAgLXYgJ14g KisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0rICBybSAtZiBjb25mdGVzdC5lcjEKLSsg IGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfSA+L2Rldi9udWxsOyB0aGVuCi0r ICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotKyAgICBhY19jcHBfZXJyPSRhY19jX3By ZXByb2Nfd2Fybl9mbGFnCi0rICAgIGFjX2NwcF9lcnI9JGFjX2NwcF9lcnIkYWNfY193ZXJyb3Jf ZmxhZwotKyAgZWxzZQotKyAgICBhY19jcHBfZXJyPQotKyAgZmkKLStlbHNlCi0rICBhY19jcHBf ZXJyPXllcwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2NwcF9lcnIiOyB0aGVuCi0rICBhY19oZWFk ZXJfcHJlcHJvYz15ZXMKLStlbHNlCi0rICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdh czoiID4mNQotK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKLSsKLSsgIGFjX2hl YWRlcl9wcmVwcm9jPW5vCi0rZmkKLStybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4 dAotK2VjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRhY19oZWFkZXJfcHJlcHJvYyIgPiY1 Ci0rZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9wcmVwcm9jIiA+JjYKLSsKLSsjIFNvPyAgV2hh dCBhYm91dCB0aGlzIGhlYWRlcj8KLStjYXNlICRhY19oZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRl cl9wcmVwcm9jOiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluCi0rICB5ZXM6bm86ICkKLSsgICAg eyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogYWNjZXB0ZWQgYnkg dGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJvY2Vzc29yISIgPiY1Ci0rZWNobyAi JGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJl amVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjI7fQotKyAgICB7IGVjaG8gIiRhc19tZTok TElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVy J3MgcmVzdWx0IiA+JjUKLStlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHByb2Nl ZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9Ci0rICAgIGFjX2hlYWRlcl9w cmVwcm9jPXllcwotKyAgICA7OwotKyAgbm86eWVzOiogKQotKyAgICB7IGVjaG8gIiRhc19tZTok TElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGls ZWQiID4mNQotK2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJlc2VudCBidXQg Y2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQotKyAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBX QVJOSU5HOiAkYWNfaGVhZGVyOiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhl YWRlcnM/IiA+JjUKLStlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6ICAgICBjaGVj ayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mMjt9Ci0rICAgIHsgZWNobyAi JGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IHNlZSB0aGUgQXV0b2NvbmYgZG9j dW1lbnRhdGlvbiIgPiY1Ci0rZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBzZWUg dGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4mMjt9Ci0rICAgIHsgZWNobyAiJGFzX21lOiRM SU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fu bm90IEJlIENvbXBpbGVkXCIiID4mNQotK2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRl cjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGlsZWRcIiIgPiYyO30K LSsgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2Vl ZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyByZXN1bHQiID4mNQotK2VjaG8gIiRhc19tZTog V0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBwcmVwcm9jZXNzb3IncyBy ZXN1bHQiID4mMjt9Ci0rICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19o ZWFkZXI6IGluIHRoZSBmdXR1cmUsIHRoZSBjb21waWxlciB3aWxsIHRha2UgcHJlY2VkZW5jZSIg PiY1Ci0rZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBpbiB0aGUgZnV0dXJlLCB0 aGUgY29tcGlsZXIgd2lsbCB0YWtlIHByZWNlZGVuY2UiID4mMjt9Ci0rICAgICgKLSsgICAgICBj YXQgPDxcX0FTQk9YCi0rIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tICMjCi0rIyMgUmVwb3J0IHRoaXMgdG8gdGhlIEFDX1BBQ0tBR0VfTkFNRSBsaXN0cy4gICMj Ci0rIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCi0rX0FT Qk9YCi0rICAgICkgfAotKyAgICAgIHNlZCAicy9eLyRhc19tZTogV0FSTklORzogICAgIC8iID4m MgotKyAgICA7OwotK2VzYWMKLStlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRh Y19oZWFkZXIiID4mNQotK2VjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4g JEVDSE9fQyIgPiY2Ci0raWYgZXZhbCAidGVzdCBcIlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0g c2V0IjsgdGhlbgotKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLStlbHNl Ci0rICBldmFsICIkYXNfYWNfSGVhZGVyPVwkYWNfaGVhZGVyX3ByZXByb2MiCi0rZmkKLStlY2hv ICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30n YCIgPiY1Ci0rZWNobyAiJHtFQ0hPX1R9YGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2Ai ID4mNgotKwotK2ZpCi0raWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCA9 IHllczsgdGhlbgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgYGVjaG8g IkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsKLStk b25lCi0rCi0rZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZvciBzdHJ1Y3QgZWxmX3By c3RhdHVzMzIucHJfcmVnIiA+JjUKLStlY2hvICRFQ0hPX04gImNoZWNraW5nIGZvciBzdHJ1Y3Qg ZWxmX3Byc3RhdHVzMzIucHJfcmVnLi4uICRFQ0hPX0MiID4mNgotK2lmIHRlc3QgIiR7YWNfY3Zf bWVtYmVyX3N0cnVjdF9lbGZfcHJzdGF0dXMzMl9wcl9yZWcrc2V0fSIgPSBzZXQ7IHRoZW4KLSsg IGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0rZWxzZQotKyAgY2F0ID5jb25m dGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogY29uZmRlZnMuaC4gICovCi0rX0FDRU9GCi0rY2F0 IGNvbmZkZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0Ci0rY2F0ID4+Y29uZnRlc3QuJGFjX2V4dCA8 PF9BQ0VPRgotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsjaW5jbHVkZSA8c3lzL3Byb2Nmcy5o PgotKwotK2ludAotK21haW4gKCkKLSt7Ci0rc3RhdGljIHN0cnVjdCBlbGZfcHJzdGF0dXMzMiBh Y19hZ2dyOwotK2lmIChhY19hZ2dyLnByX3JlZykKLStyZXR1cm4gMDsKLSsgIDsKLSsgIHJldHVy biAwOwotK30KLStfQUNFT0YKLStybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0raWYgeyAoZXZh bCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0rICAoZXZhbCAk YWNfY29tcGlsZSkgMj5jb25mdGVzdC5lcjEKLSsgIGFjX3N0YXR1cz0kPwotKyAgZ3JlcCAtdiAn XiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSsgIHJtIC1mIGNvbmZ0ZXN0LmVyMQot KyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAk YWNfc3RhdHVzIiA+JjUKLSsgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0rCSB7IGFjX3RyeT0n dGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCi0rCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5l cnInCi0rICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQot KyAgKGV2YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsg fSAmJgotKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSsgIHsgKGV2 YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0rICAoZXZhbCAkYWNf dHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8g PSAkYWNfc3RhdHVzIiA+JjUKLSsgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0rICBh Y19jdl9tZW1iZXJfc3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3JlZz15ZXMKLStlbHNlCi0rICBl Y2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQotK3NlZCAncy9eL3wgLycgY29u ZnRlc3QuJGFjX2V4dCA+JjUKLSsKLStjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSsv KiBjb25mZGVmcy5oLiAgKi8KLStfQUNFT0YKLStjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRh Y19leHQKLStjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogZW5kIGNvbmZkZWZz LmguICAqLwotKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sK LStzdGF0aWMgc3RydWN0IGVsZl9wcnN0YXR1czMyIGFjX2FnZ3I7Ci0raWYgKHNpemVvZiBhY19h Z2dyLnByX3JlZykKLStyZXR1cm4gMDsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YK LStybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0raWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJ TkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0rICAoZXZhbCAkYWNfY29tcGlsZSkgMj5jb25m dGVzdC5lcjEKLSsgIGFjX3N0YXR1cz0kPwotKyAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIx ID5jb25mdGVzdC5lcnIKLSsgIHJtIC1mIGNvbmZ0ZXN0LmVyMQotKyAgY2F0IGNvbmZ0ZXN0LmVy ciA+JjUKLSsgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsg IChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0rCSB7IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vy cm9yX2ZsYWciCi0rCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCi0rICB7IChldmFsIGVj aG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotKyAgKGV2YWwgJGFjX3RyeSkg Mj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFj X3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgotKwkgeyBhY190cnk9 J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLSsgIHsgKGV2YWwgZWNobyAiJGFzX21lOiRM SU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0rICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0rICBhY19z dGF0dXM9JD8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUK LSsgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0rICBhY19jdl9tZW1iZXJfc3RydWN0 X2VsZl9wcnN0YXR1czMyX3ByX3JlZz15ZXMKLStlbHNlCi0rICBlY2hvICIkYXNfbWU6IGZhaWxl ZCBwcm9ncmFtIHdhczoiID4mNQotK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUK LSsKLSthY19jdl9tZW1iZXJfc3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3JlZz1ubwotK2ZpCi0r cm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAot K2ZpCi0rcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj X2V4dAotK2ZpCi0rZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2N2X21lbWJlcl9z dHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnIiA+JjUKLStlY2hvICIke0VDSE9fVH0kYWNfY3Zf bWVtYmVyX3N0cnVjdF9lbGZfcHJzdGF0dXMzMl9wcl9yZWciID4mNgotK2lmIHRlc3QgJGFjX2N2 X21lbWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnID0geWVzOyB0aGVuCi0rCi0rY2F0 ID4+Y29uZmRlZnMuaCA8PFxfQUNFT0YKLSsjZGVmaW5lIEhBVkVfRUxGX1BSU1RBVFVTMzIgMQot K19BQ0VPRgotKwotK2ZpCi0rCi0gIyBlbGZfaHAuaCBpcyBmb3IgSFAvVVggNjQtYml0IHNoYXJl ZCBsaWJyYXJ5IHN1cHBvcnQuCi0gIyBGSVhNRToga2V0dGVuaXMvMjAwMzAxMDI6IEluIG1vc3Qg Y2FzZXMgd2UgaW5jbHVkZSB0aGVzZSAoY3R5cGUuaCwgdGltZS5oKQotICMgdW5jb25kaXRpb25h bGx5LCBzbyB3aGF0J3MgdGhlIHBvaW50IGluIGNoZWNraW5nIHRoZXNlPwotSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlLmFjCTIw MTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCi1AQCAtNzU4LDYgKzc1OCwxMSBAQCBB Q19TVUJTVChQWVRIT05fQ0ZMQUdTKQotIEFDX0hFQURFUl9ESVJFTlQKLSBBQ19IRUFERVJfU1RB VAotIEFDX0hFQURFUl9TVERDCi0rQUNfQ0hFQ0tfSEVBREVSUyhbc3lzL3VzZXIzMi5oIHN5cy9w cm9jZnMzMi5oXSkKLStBQ19DSEVDS19NRU1CRVIoW3N0cnVjdCBlbGZfcHJzdGF0dXMzMi5wcl9y ZWddLAotKwkJW0FDX0RFRklORShIQVZFX0VMRl9QUlNUQVRVUzMyLCAxLAotKwkJCSAgIFtEZWZp bmUgaWYgc3RydWN0IGVsZl9wcnN0YXR1czMyIGlzIGF2YWlsYWJsZS4gXSldLAotKwkJW10sIFsj aW5jbHVkZSA8c3lzL3Byb2Nmcy5oPl0pCi0gIyBlbGZfaHAuaCBpcyBmb3IgSFAvVVggNjQtYml0 IHNoYXJlZCBsaWJyYXJ5IHN1cHBvcnQuCi0gIyBGSVhNRToga2V0dGVuaXMvMjAwMzAxMDI6IElu IG1vc3QgY2FzZXMgd2UgaW5jbHVkZSB0aGVzZSAoY3R5cGUuaCwgdGltZS5oKQotICMgdW5jb25k aXRpb25hbGx5LCBzbyB3aGF0J3MgdGhlIHBvaW50IGluIGNoZWNraW5nIHRoZXNlPwotSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2djb3JlLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2djb3JlLmMJMjAxMC0wMS0xNSAwMzoxNzo1OS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nY29yZS5jCTIwMTAtMDEtMTUg MDM6MjA6NTguMDAwMDAwMDAwICswMTAwCi1AQCAtMzc2LDYgKzM3NiwxMSBAQCBnY29yZV9jcmVh dGVfY2FsbGJhY2sgKENPUkVfQUREUiB2YWRkciwgCi0gICBhc2VjdGlvbiAqb3NlYzsKLSAgIGZs YWd3b3JkIGZsYWdzID0gU0VDX0FMTE9DIHwgU0VDX0hBU19DT05URU5UUyB8IFNFQ19MT0FEOwot IAotKyAgLyogU29tZSBMaW51eCBrZXJuZWwgdmVyc2lvbnMgYXJvdW5kIDIuNi4xNyBoYXZlIGZv ciBpMzg2IGluZmVyaW9ycyBydW5uaW5nCi0rICAgICBpbiBjb21wYXRpYmlsaXR5IG1vZGUgb24g YW1kNjQga2VybmVsIHRoZWlyIFZTWVNDQUxMIHBhZ2UgKGF0IDB4ZmZmZmUwMDApCi0rICAgICBw cm90ZWN0ZWQgYXMgUldYPT0wMDAgYnkgZGVmYXVsdCBhbmQgZ2RiIGZhaWxzIHRvIHJlYWQgdGhl IGxpYnJhcnkgaGVhZGVyCi0rICAgICB1cG9uIGxvYWRpbmcgdGhlIGNvcmUuICBUaGlzIGlzIGEg TGludXgga2VybmVsIGJ1ZyBiZWluZyBmaXhlZC4gICovCi0rCi0gICAvKiBJZiB0aGUgbWVtb3J5 IHNlZ21lbnQgaGFzIG5vIHBlcm1pc3Npb25zIHNldCwgaWdub3JlIGl0LCBvdGhlcndpc2UKLSAg ICAgIHdoZW4gd2UgbGF0ZXIgdHJ5IHRvIGFjY2VzcyBpdCBmb3IgcmVhZC93cml0ZSwgd2UnbGwg Z2V0IGFuIGVycm9yCi0gICAgICBvciBqYW0gdGhlIGtlcm5lbC4gICovCi1JbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvZ2RiX3Byb2NmczMyLmgKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9nZGJfcHJvY2ZzMzIuaAkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCAr MDEwMAotQEAgLTAsMCArMSwxMjggQEAKLSsjaWZkZWYgSEFWRV9TWVNfUFJPQ0ZTMzJfSAotKyNp bmNsdWRlIDxzeXMvcHJvY2ZzMzIuaD4KLSsjZWxpZiAhZGVmaW5lZCBIQVZFX0VMRl9QUlNUQVRV UzMyCi0rCi0rLyogQ29weXJpZ2h0IChDKSAyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAg IFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05V IEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFs b25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsg ICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQQotKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9TWVNfUFJP Q0ZTMzJfSAotKyNkZWZpbmUgX1NZU19QUk9DRlMzMl9ICTEKLSsKLSsvKiBUaGlzIGlzIHNvbWV3 aGF0IG1vZGVsbGVkIGFmdGVyIHRoZSBmaWxlIG9mIHRoZSBzYW1lIG5hbWUgb24gU1ZSNAotKyAg IHN5c3RlbXMuICBJdCBwcm92aWRlcyBhIGRlZmluaXRpb24gb2YgdGhlIGNvcmUgZmlsZSBmb3Jt YXQgZm9yIEVMRgotKyAgIHVzZWQgb24gTGludXguICBJdCBkb2Vzbid0IGhhdmUgYW55dGhpbmcg dG8gZG8gd2l0aCB0aGUgL3Byb2MgZmlsZQotKyAgIHN5c3RlbSwgZXZlbiB0aG91Z2ggTGludXgg aGFzIG9uZS4KLSsKLSsgICBBbnl3YXksIHRoZSB3aG9sZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBp cyBmb3IgR0RCIGFuZCBHREIgb25seS4KLSsgICBEb24ndCByZWFkIHRvbyBtdWNoIGludG8gaXQu ICBEb24ndCB1c2UgaXQgZm9yIGFueXRoaW5nIG90aGVyIHRoYW4KLSsgICBHREIgdW5sZXNzIHlv dSBrbm93IHdoYXQgeW91IGFyZSBkb2luZy4gICovCi0rCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+ Ci0rI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNs dWRlICJnZGJfdXNlcjMyLmgiCi0rCi0rLyogV2UgZGVmaW5lIGhlcmUgb25seSB0aGUgc3ltYm9s cyBkaWZmZXJpbmcgZnJvbSB0aGVpciA2NC1iaXQgdmFyaWFudC4gICovCi0rI2luY2x1ZGUgPHN5 cy9wcm9jZnMuaD4KLSsKLStfX0JFR0lOX0RFQ0xTCi0rCi0rLyogVHlwZSBmb3IgYSBnZW5lcmFs LXB1cnBvc2UgcmVnaXN0ZXIuICAqLwotK3R5cGVkZWYgdW5zaWduZWQgaW50IGVsZl9ncmVnMzJf dDsKLSsKLSsvKiBBbmQgdGhlIHdob2xlIGJ1bmNoIG9mIHRoZW0uICBXZSBjb3VsZCBoYXZlIHVz ZWQgYHN0cnVjdAotKyAgIHVzZXJfcmVnc19zdHJ1Y3QnIGRpcmVjdGx5IGluIHRoZSB0eXBlZGVm LCBidXQgdHJhZGl0aW9uIHNheXMgdGhhdAotKyAgIHRoZSByZWdpc3RlciBzZXQgaXMgYW4gYXJy YXksIHdoaWNoIGRvZXMgaGF2ZSBzb21lIHBlY3VsaWFyCi0rICAgc2VtYW50aWNzLCBzbyBsZWF2 ZSBpdCB0aGF0IHdheS4gICovCi0rI2RlZmluZSBFTEZfTkdSRUczMiAoc2l6ZW9mIChzdHJ1Y3Qg dXNlcl9yZWdzMzJfc3RydWN0KSAvIHNpemVvZihlbGZfZ3JlZzMyX3QpKQotK3R5cGVkZWYgZWxm X2dyZWczMl90IGVsZl9ncmVnc2V0MzJfdFtFTEZfTkdSRUczMl07Ci0rCi0rLyogUmVnaXN0ZXIg c2V0IGZvciB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLSt0eXBlZGVmIHN0cnVj dCB1c2VyX2ZwcmVnczMyX3N0cnVjdCBlbGZfZnByZWdzZXQzMl90OwotKwotKy8qIFJlZ2lzdGVy IHNldCBmb3IgdGhlIGV4dGVuZGVkIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gIEluY2x1ZGVz Ci0rICAgdGhlIFBlbnRpdW0gSUlJIFNTRSByZWdpc3RlcnMgaW4gYWRkaXRpb24gdG8gdGhlIGNs YXNzaWMKLSsgICBmbG9hdGluZy1wb2ludCBzdHVmZi4gICovCi0rdHlwZWRlZiBzdHJ1Y3QgdXNl cl9mcHhyZWdzMzJfc3RydWN0IGVsZl9mcHhyZWdzZXQzMl90OwotKwotKwotKy8qIERlZmluaXRp b25zIHRvIGdlbmVyYXRlIEludGVsIFNWUjQtbGlrZSBjb3JlIGZpbGVzLiAgVGhlc2UgbW9zdGx5 Ci0rICAgaGF2ZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgU1ZSNCB0eXBlcyB3aXRoICJlbGZfIiB0 YWNrZWQgb24gdGhlCi0rICAgZnJvbnQgdG8gcHJldmVudCBjbGFzaGVzIHdpdGggTGludXggZGVm aW5pdGlvbnMsIGFuZCB0aGUgdHlwZWRlZgotKyAgIGZvcm1zIGhhdmUgYmVlbiBhdm9pZGVkLiAg VGhpcyBpcyBtb3N0bHkgbGlrZSB0aGUgU1ZSNCBzdHJ1Y3R1cmUsCi0rICAgYnV0IG1vcmUgTGlu dXh5LCB3aXRoIHRoaW5ncyB0aGF0IExpbnV4IGRvZXMgbm90IHN1cHBvcnQgYW5kIHdoaWNoCi0r ICAgR0RCIGRvZXNuJ3QgcmVhbGx5IHVzZSBleGNsdWRlZC4gICovCi0rCi0rc3RydWN0IHByc3Rh dHVzMzJfdGltZXZhbAotKyAgewotKyAgICBpbnQgdHZfc2VjOwotKyAgICBpbnQgdHZfdXNlYzsK LSsgIH07Ci0rCi0rc3RydWN0IGVsZl9wcnN0YXR1czMyCi0rICB7Ci0rICAgIHN0cnVjdCBlbGZf c2lnaW5mbyBwcl9pbmZvOwkJLyogSW5mbyBhc3NvY2lhdGVkIHdpdGggc2lnbmFsLiAgKi8KLSsg ICAgc2hvcnQgaW50IHByX2N1cnNpZzsJCS8qIEN1cnJlbnQgc2lnbmFsLiAgKi8KLSsgICAgdW5z aWduZWQgaW50IHByX3NpZ3BlbmQ7CQkvKiBTZXQgb2YgcGVuZGluZyBzaWduYWxzLiAgKi8KLSsg ICAgdW5zaWduZWQgaW50IHByX3NpZ2hvbGQ7CQkvKiBTZXQgb2YgaGVsZCBzaWduYWxzLiAgKi8K LSsgICAgX19waWRfdCBwcl9waWQ7Ci0rICAgIF9fcGlkX3QgcHJfcHBpZDsKLSsgICAgX19waWRf dCBwcl9wZ3JwOwotKyAgICBfX3BpZF90IHByX3NpZDsKLSsgICAgc3RydWN0IHByc3RhdHVzMzJf dGltZXZhbCBwcl91dGltZTsJCS8qIFVzZXIgdGltZS4gICovCi0rICAgIHN0cnVjdCBwcnN0YXR1 czMyX3RpbWV2YWwgcHJfc3RpbWU7CQkvKiBTeXN0ZW0gdGltZS4gICovCi0rICAgIHN0cnVjdCBw cnN0YXR1czMyX3RpbWV2YWwgcHJfY3V0aW1lOwkvKiBDdW11bGF0aXZlIHVzZXIgdGltZS4gICov Ci0rICAgIHN0cnVjdCBwcnN0YXR1czMyX3RpbWV2YWwgcHJfY3N0aW1lOwkvKiBDdW11bGF0aXZl IHN5c3RlbSB0aW1lLiAgKi8KLSsgICAgZWxmX2dyZWdzZXQzMl90IHByX3JlZzsJCS8qIEdQIHJl Z2lzdGVycy4gICovCi0rICAgIGludCBwcl9mcHZhbGlkOwkJCS8qIFRydWUgaWYgbWF0aCBjb3By byBiZWluZyB1c2VkLiAgKi8KLSsgIH07Ci0rCi0rCi0rc3RydWN0IGVsZl9wcnBzaW5mbzMyCi0r ICB7Ci0rICAgIGNoYXIgcHJfc3RhdGU7CQkJLyogTnVtZXJpYyBwcm9jZXNzIHN0YXRlLiAgKi8K LSsgICAgY2hhciBwcl9zbmFtZTsJCQkvKiBDaGFyIGZvciBwcl9zdGF0ZS4gICovCi0rICAgIGNo YXIgcHJfem9tYjsJCQkvKiBab21iaWUuICAqLwotKyAgICBjaGFyIHByX25pY2U7CQkJLyogTmlj ZSB2YWwuICAqLwotKyAgICB1bnNpZ25lZCBpbnQgcHJfZmxhZzsJCS8qIEZsYWdzLiAgKi8KLSsg ICAgdW5zaWduZWQgc2hvcnQgaW50IHByX3VpZDsKLSsgICAgdW5zaWduZWQgc2hvcnQgaW50IHBy X2dpZDsKLSsgICAgaW50IHByX3BpZCwgcHJfcHBpZCwgcHJfcGdycCwgcHJfc2lkOwotKyAgICAv KiBMb3RzIG1pc3NpbmcgKi8KLSsgICAgY2hhciBwcl9mbmFtZVsxNl07CQkJLyogRmlsZW5hbWUg b2YgZXhlY3V0YWJsZS4gICovCi0rICAgIGNoYXIgcHJfcHNhcmdzW0VMRl9QUkFSR1NaXTsJLyog SW5pdGlhbCBwYXJ0IG9mIGFyZyBsaXN0LiAgKi8KLSsgIH07Ci0rCi0rCi0rLyogVGhlIHJlc3Qg b2YgdGhpcyBmaWxlIHByb3ZpZGVzIHRoZSB0eXBlcyBmb3IgZW11bGF0aW9uIG9mIHRoZQotKyAg IFNvbGFyaXMgPHByb2Nfc2VydmljZS5oPiBpbnRlcmZhY2VzIHRoYXQgc2hvdWxkIGJlIGltcGxl bWVudGVkIGJ5Ci0rICAgdXNlcnMgb2YgbGlidGhyZWFkX2RiLiAgKi8KLSsKLSsvKiBSZWdpc3Rl ciBzZXRzLiAgTGludXggaGFzIGRpZmZlcmVudCBuYW1lcy4gICovCi0rdHlwZWRlZiBlbGZfZ3Jl Z3NldF90IHByZ3JlZ3NldDMyX3Q7Ci0rdHlwZWRlZiBlbGZfZnByZWdzZXRfdCBwcmZwcmVnc2V0 MzJfdDsKLSsKLSsvKiBQcm9jZXNzIHN0YXR1cyBhbmQgaW5mby4gIEluIHRoZSBlbmQgd2UgZG8g cHJvdmlkZSB0eXBlZGVmcyBmb3IgdGhlbS4gICovCi0rdHlwZWRlZiBzdHJ1Y3QgZWxmX3Byc3Rh dHVzMzIgcHJzdGF0dXMzMl90OwotK3R5cGVkZWYgc3RydWN0IGVsZl9wcnBzaW5mbzMyIHBycHNp bmZvMzJfdDsKLSsKLStfX0VORF9ERUNMUwotKwotKyNlbmRpZgkvKiBfU1lTX1BST0NGUzMyX0gg Ki8KLSsKLSsjZW5kaWYgLyogSEFWRV9TWVNfUFJPQ0ZTMzJfSCAqLwotSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2dkYl91c2VyMzIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2dkYl91c2VyMzIuaAkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCArMDEwMAot QEAgLTAsMCArMSwxMDggQEAKLSsjaWZkZWYgSEFWRV9TWVNfVVNFUjMyX0gKLSsjaW5jbHVkZSA8 c3lzL3VzZXIzMi5oPgotKyNlbHNlCi0rCi0rI2lmZGVmIEhBVkVfU1RESU5UX0gKLSsjaW5jbHVk ZSA8c3RkaW50Lmg+Ci0rdHlwZWRlZiAgaW50MzJfdCAgZ2RiX2ludDMyX3Q7Ci0rdHlwZWRlZiB1 aW50MzJfdCBnZGJfdWludDMyX3Q7Ci0rI2Vsc2UKLSt0eXBlZGVmICAgc2lnbmVkIGludCBnZGJf dWludDMyX3Q7Ci0rdHlwZWRlZiB1bnNpZ25lZCBpbnQgZ2RiX3VpbnQzMl90OwotKyNlbmRpZgot KwotKy8qIENvcHlyaWdodCAoQykgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUg R05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3 aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2lmbmRlZiBfU1lTX1VTRVIzMl9I Ci0rI2RlZmluZSBfU1lTX1VTRVIzMl9ICTEKLSsKLSsvKiBUaGVzZSBhcmUgdGhlIDMyLWJpdCB4 ODYgc3RydWN0dXJlcy4gICovCi0rCi0rc3RydWN0IHVzZXJfZnByZWdzMzJfc3RydWN0Ci0rewot KyAgaW50MzJfdCBjd2Q7Ci0rICBpbnQzMl90IHN3ZDsKLSsgIGludDMyX3QgdHdkOwotKyAgaW50 MzJfdCBmaXA7Ci0rICBpbnQzMl90IGZjczsKLSsgIGludDMyX3QgZm9vOwotKyAgaW50MzJfdCBm b3M7Ci0rICBpbnQzMl90IHN0X3NwYWNlIFsyMF07Ci0rfTsKLSsKLStzdHJ1Y3QgdXNlcl9mcHhy ZWdzMzJfc3RydWN0Ci0rewotKyAgdW5zaWduZWQgc2hvcnQgaW50IGN3ZDsKLSsgIHVuc2lnbmVk IHNob3J0IGludCBzd2Q7Ci0rICB1bnNpZ25lZCBzaG9ydCBpbnQgdHdkOwotKyAgdW5zaWduZWQg c2hvcnQgaW50IGZvcDsKLSsgIGludDMyX3QgZmlwOwotKyAgaW50MzJfdCBmY3M7Ci0rICBpbnQz Ml90IGZvbzsKLSsgIGludDMyX3QgZm9zOwotKyAgaW50MzJfdCBteGNzcjsKLSsgIGludDMyX3Qg cmVzZXJ2ZWQ7Ci0rICBpbnQzMl90IHN0X3NwYWNlWzMyXTsgICAvKiA4KjE2IGJ5dGVzIGZvciBl YWNoIEZQLXJlZyA9IDEyOCBieXRlcyAqLwotKyAgaW50MzJfdCB4bW1fc3BhY2VbMzJdOyAgLyog OCoxNiBieXRlcyBmb3IgZWFjaCBYTU0tcmVnID0gMTI4IGJ5dGVzICovCi0rICBpbnQzMl90IHBh ZGRpbmdbNTZdOwotK307Ci0rCi0rc3RydWN0IHVzZXJfcmVnczMyX3N0cnVjdAotK3sKLSsgIGlu dDMyX3QgZWJ4OwotKyAgaW50MzJfdCBlY3g7Ci0rICBpbnQzMl90IGVkeDsKLSsgIGludDMyX3Qg ZXNpOwotKyAgaW50MzJfdCBlZGk7Ci0rICBpbnQzMl90IGVicDsKLSsgIGludDMyX3QgZWF4Owot KyAgaW50MzJfdCB4ZHM7Ci0rICBpbnQzMl90IHhlczsKLSsgIGludDMyX3QgeGZzOwotKyAgaW50 MzJfdCB4Z3M7Ci0rICBpbnQzMl90IG9yaWdfZWF4OwotKyAgaW50MzJfdCBlaXA7Ci0rICBpbnQz Ml90IHhjczsKLSsgIGludDMyX3QgZWZsYWdzOwotKyAgaW50MzJfdCBlc3A7Ci0rICBpbnQzMl90 IHhzczsKLSt9OwotKwotK3N0cnVjdCB1c2VyMzIKLSt7Ci0rICBzdHJ1Y3QgdXNlcl9yZWdzMzJf c3RydWN0CXJlZ3M7Ci0rICBpbnQJCQkJdV9mcHZhbGlkOwotKyAgc3RydWN0IHVzZXJfZnByZWdz MzJfc3RydWN0CWkzODc7Ci0rICB1aW50MzJfdAkJCXVfdHNpemU7Ci0rICB1aW50MzJfdAkJCXVf ZHNpemU7Ci0rICB1aW50MzJfdAkJCXVfc3NpemU7Ci0rICB1aW50MzJfdAkJCXN0YXJ0X2NvZGU7 Ci0rICB1aW50MzJfdAkJCXN0YXJ0X3N0YWNrOwotKyAgaW50MzJfdAkJCXNpZ25hbDsKLSsgIGlu dAkJCQlyZXNlcnZlZDsKLSsgIHN0cnVjdCB1c2VyX3JlZ3MzMl9zdHJ1Y3QqCXVfYXIwOwotKyAg c3RydWN0IHVzZXJfZnByZWdzMzJfc3RydWN0Kgl1X2Zwc3RhdGU7Ci0rICB1aW50MzJfdAkJCW1h Z2ljOwotKyAgY2hhcgkJCQl1X2NvbW0gWzMyXTsKLSsgIGludAkJCQl1X2RlYnVncmVnIFs4XTsK LSt9OwotKwotKyNlbmRpZgkvKiBfU1lTX1VTRVIzMl9IICovCi0rCi0rI2VuZGlmIC8qIEhBVkVf U1lTX1VTRVIzMl9IICovCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0 LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5h dC5jCTIwMTAtMDEtMTUgMDM6MjA6NDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoyMDo1OC4wMDAwMDAwMDAgKzAx MDAKLUBAIC0yMjUsNiArMjI1LDIxIEBAIHN0YXRpYyBMT05HRVNUICgqc3VwZXJfeGZlcl9wYXJ0 aWFsKSAoc3QKLSAJCQkJICAgICAgY29uc3QgZ2RiX2J5dGUgKiwKLSAJCQkJICAgICAgVUxPTkdF U1QsIExPTkdFU1QpOwotIAotKy8qIFRoaXMgZnVuY3Rpb25zIG1ha2UgZWxmY29yZSBub3RlIHNl Y3Rpb25zLgotKyAgIFRoZXkgbWF5IGdldCBvdmVycmlkZW4gYnkgY29kZSBhZGp1c3RpbmcgZGF0 YSBmb3IgbXVsdGktdGFyZ2V0IGJ1aWxkcy4gICovCi0rY2hhciAqKCpsaW51eF9lbGZjb3JlX3dy aXRlX3BycHNpbmZvKQotKyAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGNv bnN0IGNoYXIgKikgPSBlbGZjb3JlX3dyaXRlX3BycHNpbmZvOwotK2NoYXIgKigqbGludXhfZWxm Y29yZV93cml0ZV9wcnN0YXR1cykKLSsgIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgbG9uZywgaW50 LCBjb25zdCB2b2lkICopID0gZWxmY29yZV93cml0ZV9wcnN0YXR1czsKLStzdGF0aWMgY2hhciAq Ci0rbGludXhfZWxmY29yZV93cml0ZV9wcmZwcmVnX2JmZCAoYmZkICphYmZkLCBjaGFyICpidWYs IGludCAqYnVmc2l6LAotKwkJCQkgY29uc3Qgdm9pZCAqZnByZWdzLCBpbnQgc2l6ZSwgc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSkKLSt7Ci0rICByZXR1cm4gZWxmY29yZV93cml0ZV9wcmZwcmVn IChhYmZkLCBidWYsIGJ1ZnNpeiwgZnByZWdzLCBzaXplKTsKLSt9Ci0rY2hhciAqKCpsaW51eF9l bGZjb3JlX3dyaXRlX3ByZnByZWcpIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgY29uc3Qgdm9pZCAq LCBpbnQsCi0rCQkJICAgc3RydWN0IHJlZ2NhY2hlICopID0gbGludXhfZWxmY29yZV93cml0ZV9w cmZwcmVnX2JmZDsKLSsKLSBzdGF0aWMgaW50IGRlYnVnX2xpbnV4X25hdDsKLSBzdGF0aWMgdm9p ZAotIHNob3dfZGVidWdfbGludXhfbmF0IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21f dHR5LAotQEAgLTQxODcsNyArNDIwMiw3IEBAIGxpbnV4X25hdF9kb190aHJlYWRfcmVnaXN0ZXJz IChiZmQgKm9iZmQKLSAgIGVsc2UKLSAgICAgZmlsbF9ncmVnc2V0IChyZWdjYWNoZSwgJmdyZWdz LCAtMSk7Ci0gCi0tICBub3RlX2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dyaXRlX3Byc3RhdHVz IChvYmZkLAotKyAgbm90ZV9kYXRhID0gKGNoYXIgKikgbGludXhfZWxmY29yZV93cml0ZV9wcnN0 YXR1cyAob2JmZCwKLSAJCQkJCSAgICAgICBub3RlX2RhdGEsCi0gCQkJCQkgICAgICAgbm90ZV9z aXplLAotIAkJCQkJICAgICAgIGx3cCwKLUBAIC00MjM3LDEwICs0MjUyLDEwIEBAIGxpbnV4X25h dF9kb190aHJlYWRfcmVnaXN0ZXJzIChiZmQgKm9iZmQKLSAgICAgICBlbHNlCi0gCWZpbGxfZnBy ZWdzZXQgKHJlZ2NhY2hlLCAmZnByZWdzLCAtMSk7Ci0gCi0tICAgICAgbm90ZV9kYXRhID0gKGNo YXIgKikgZWxmY29yZV93cml0ZV9wcmZwcmVnIChvYmZkLAotKyAgICAgIG5vdGVfZGF0YSA9IChj aGFyICopIGxpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZyAob2JmZCwKLSAJCQkJCQkgIG5vdGVf ZGF0YSwKLSAJCQkJCQkgIG5vdGVfc2l6ZSwKLS0JCQkJCQkgICZmcHJlZ3MsIHNpemVvZiAoZnBy ZWdzKSk7Ci0rCQkJCQkJICAmZnByZWdzLCBzaXplb2YgKGZwcmVncyksIHJlZ2NhY2hlKTsKLSAg ICAgfQotIAotICAgcmV0dXJuIG5vdGVfZGF0YTsKLUBAIC00NDIzLDkgKzQ0MzgsOSBAQCBsaW51 eF9uYXRfbWFrZV9jb3JlZmlsZV9ub3RlcyAoYmZkICpvYmZkCi0gCQkgICAgICAgcHNhcmdzX2Vu ZCAtIHN0cmluZ19lbmQpOwotIAkgICAgfQotIAl9Ci0tICAgICAgbm90ZV9kYXRhID0gKGNoYXIg KikgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAob2JmZCwKLS0JCQkJCQkgICBub3RlX2RhdGEsCi0t CQkJCQkJICAgbm90ZV9zaXplLCBmbmFtZSwgcHNhcmdzKTsKLSsgICAgICBub3RlX2RhdGEgPSAo Y2hhciAqKSBsaW51eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZvIChvYmZkLCBub3RlX2RhdGEsCi0r CQkJCQkJCSBub3RlX3NpemUsIGZuYW1lLAotKwkJCQkJCQkgcHNhcmdzKTsKLSAgICAgfQotIAot ICAgLyogRHVtcCBpbmZvcm1hdGlvbiBmb3IgdGhyZWFkcy4gICovCi1JbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIw MTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDEtMTUgMDM6MTc6MDcuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmgJMjAxMC0wMS0x NSAwMzoyMToyNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNjksMyArMTY5LDEyIEBAIHN0cnVjdCBz aWdpbmZvICpsaW51eF9uYXRfZ2V0X3NpZ2luZm8gKHAKLSAKLSAvKiBDb21wdXRlIGFuZCByZXR1 cm4gdGhlIHByb2Nlc3NvciBjb3JlIG9mIGEgZ2l2ZW4gdGhyZWFkLiAgKi8KLSBpbnQgbGludXhf bmF0X2NvcmVfb2ZfdGhyZWFkXzEgKHB0aWRfdCBwdGlkKTsKLSsKLSsvKiBUaGVzZSBmdW5jdGlv bnMgbWFrZSBlbGZjb3JlIG5vdGUgc2VjdGlvbnMuCi0rICAgVGhleSBtYXkgZ2V0IG92ZXJyaWRl biBieSBjb2RlIGFkanVzdGluZyBkYXRhIGZvciBtdWx0aS10YXJnZXQgYnVpbGRzLiAgKi8KLStl eHRlcm4gY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZvKQotKyAgKGJmZCAqLCBj aGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0rZXh0ZXJuIGNoYXIg KigqbGludXhfZWxmY29yZV93cml0ZV9wcnN0YXR1cykKLSsgIChiZmQgKiwgY2hhciAqLCBpbnQg KiwgbG9uZywgaW50LCBjb25zdCB2b2lkICopOwotK2V4dGVybiBjaGFyICooKmxpbnV4X2VsZmNv cmVfd3JpdGVfcHJmcHJlZykKLSsgIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgY29uc3Qgdm9pZCAq LCBpbnQsIHN0cnVjdCByZWdjYWNoZSAqKTsKCmRpZmYgLS1naXQgYS9nZGItNi41LWlhNjQtbGli dW53aW5kLWxlYWstdGVzdC5wYXRjaCBiL2dkYi02LjUtaWE2NC1saWJ1bndpbmQtbGVhay10ZXN0 LnBhdGNoCmluZGV4IDc5YTQ3NTMuLmM3N2M2NzcgMTAwNjQ0Ci0tLSBhL2dkYi02LjUtaWE2NC1s aWJ1bndpbmQtbGVhay10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjUtaWE2NC1saWJ1bndpbmQtbGVh ay10ZXN0LnBhdGNoCkBAIC0zNCw3ICszNCw3IEBAIGRpZmYgLXUgLXJ1cCBnZGItNi4zLW9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS91bndpbmQtbGVhay5jIGdkYi02LjMvZ2RiL3Rlc3RzCiBk aWZmIC11IC1ydXAgZ2RiLTYuMy1vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdW53aW5kLWxl YWsuZXhwIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS91bndpbmQtbGVhay5leHAKIC0t LSBnZGItNi4zLW9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS91bndpbmQtbGVhay5leHAJMjAw Ny0xMi0xOSAxNToxMjo1My4wMDAwMDAwMDAgLTA1MDAKICsrKyBnZGItNi4zL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdW53aW5kLWxlYWsuZXhwCTIwMDctMTItMTkgMTU6MTE6MzUuMDAwMDAwMDAw IC0wNTAwCi1AQCAtMCwwICsxLDkwIEBACitAQCAtMCwwICsxLDgzIEBACiArIyBDb3B5cmlnaHQg MjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBA IC01MSwxMyArNTEsNiBAQCBkaWZmIC11IC1ydXAgZ2RiLTYuMy1vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdW53aW5kLWxlYWsuZXhwIGdkYi02LjMvZ2RiL3RlcwogKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICsjIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAKICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0 cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKICtzZXQg dGVzdGZpbGUgdW53aW5kLWxlYWsKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiArc2V0IHNo ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5zaAoKZGlmZiAtLWdpdCBh L2dkYi02LjUtbWlzc2VkLXRyYXAtb24tc3RlcC10ZXN0LnBhdGNoIGIvZ2RiLTYuNS1taXNzZWQt dHJhcC1vbi1zdGVwLXRlc3QucGF0Y2gKaW5kZXggY2I1NTE5My4uMmY0NDM2ZCAxMDA2NDQKLS0t IGEvZ2RiLTYuNS1taXNzZWQtdHJhcC1vbi1zdGVwLXRlc3QucGF0Y2gKKysrIGIvZ2RiLTYuNS1t aXNzZWQtdHJhcC1vbi1zdGVwLXRlc3QucGF0Y2gKQEAgLTMsNyArMyw3IEBAIEZpeCBoYXMgYmVl biBjb21taXR0ZWQgdG86CiAKIC0tLSAvZGV2L251bGwJMjAwNy0xMi0xNCAyMDo0NTowOS4xMTMw Mzk1MTcgKzAxMDAKICsrKyBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2lu dC1kdXJpbmctc3RlcC5leHAJMjAwNy0xMi0yNCAxOTo0MjowMC4wMDAwMDAwMDAgKzAxMDAKLUBA IC0wLDAgKzEsNTEgQEAKK0BAIC0wLDAgKzEsNDQgQEAKICsjIENvcHlyaWdodCAyMDA3IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTIwLDEzICsy MCw2IEBAIEZpeCBoYXMgYmVlbiBjb21taXR0ZWQgdG86CiArIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKyMgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4gIAogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2 ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogK3NldCB0ZXN0Zmls ZSB3YXRjaHBvaW50LWR1cmluZy1zdGVwCiArc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwogK3Nl dCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KCmRpZmYgLS1naXQgYS9n ZGItNi41LXRscy1vZi1zZXBhcmF0ZS1kZWJ1Z2luZm8ucGF0Y2ggYi9nZGItNi41LXRscy1vZi1z ZXBhcmF0ZS1kZWJ1Z2luZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4 MzgwODEuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuNS10bHMtb2Ytc2VwYXJhdGUtZGVidWdpbmZvLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRGVwZW5kZW5jeSBvbjogZ2RiLTYu NS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaAotCi0KLTIw MDYtMDktMDEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQot CSogdGFyZ2V0LmMgKHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3MpOiBGaXggZm9yIHNlcGFy YXRlIGRlYnVnaW5mby4KLQotCi1kaWZmIC1ydXAgZ2RiLTYuNS5vcmlnL2dkYi90YXJnZXQuYyBn ZGItNi41L2dkYi90YXJnZXQuYwotLS0tIGdkYi02LjUub3JpZy9nZGIvdGFyZ2V0LmMJMjAwNi0w OS0yMCAxNzoxMzozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBnZGItNi41L2dkYi90YXJnZXQuYwky MDA2LTA5LTIwIDE3OjE1OjUzLjAwMDAwMDAwMCAtMDQwMAotQEAgLTc2OSw2ICs3NjksMTIgQEAg dGFyZ2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoc3RydWN0IG9iagotICAgICAgIHB0aWRfdCBw dGlkID0gaW5mZXJpb3JfcHRpZDsKLSAgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlv biBleDsKLSAKLSsgICAgICAvKiBSZXNvbHZlOiBDYW5ub3QgZmluZCBzaGFyZWQgbGlicmFyeQot KwkgYC91c3IvbGliL2RlYnVnL2xpYi9saWIuLi4uc28uZGVidWcnIGluIGR5bmFtaWMgbGlua2Vy J3MgbG9hZAotKwkgbW9kdWxlIGxpc3QgICovCi0rICAgICAgaWYgKG9iamZpbGUtPnNlcGFyYXRl X2RlYnVnX29iamZpbGVfYmFja2xpbmsgIT0gTlVMTCkKLSsJb2JqZmlsZSA9IG9iamZpbGUtPnNl cGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbms7Ci0rCi0gICAgICAgVFJZX0NBVENIIChleCwg UkVUVVJOX01BU0tfQUxMKQotIAl7Ci0gCSAgQ09SRV9BRERSIGxtX2FkZHI7CgpkaWZmIC0tZ2l0 IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaCBiL2dkYi02LjYtYnVp bGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKaW5kZXggNzgwOTk0MC4uYTQzMDY2NyAxMDA2 NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAorKysgYi9n ZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCkBAIC01OCw4ICs1OCwxMCBA QCBIdHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5o dG1sCiAJKiBleGVjLmMgKGV4ZWNfZmlsZV9hdHRhY2gpOiBQcmludCBhIG1vcmUgdXNlZnVsIGVy cm9yIG1lc3NhZ2UgaWYgdGhlCiAJdXNlciBkaWQgImdkYiBjb3JlIi4KIAotLS0tIC4vZ2RiL2V4 Y2VwdGlvbnMuaAkyMDEwLTA0LTExIDIyOjMxOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2Ri L2V4Y2VwdGlvbnMuaAkyMDEwLTA0LTExIDIyOjMxOjQ3LjAwMDAwMDAwMCArMDIwMAorSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V4Y2VwdGlvbnMuaAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZXhjZXB0aW9ucy5oCTIwMTAtMDUtMDMgMDE6NTI6 MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhjZXB0aW9u cy5oCTIwMTAtMDctMTMgMjI6NTY6MjkuMDAwMDAwMDAwICswMjAwCiBAQCAtNzgsNiArNzgsOSBA QCBlbnVtIGVycm9ycyB7CiAgICAvKiBGZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBj b3B5IG9mIEdEQi4gICovCiAgICBVTlNVUFBPUlRFRF9FUlJPUiwKQEAgLTcwLDggKzcyLDEwIEBA IEh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNTE3Lmh0 bWwKICAgIC8qIEFkZCBtb3JlIGVycm9ycyBoZXJlLiAgKi8KICAgIE5SX0VSUk9SUwogIH07Ci0t LS0gLi9nZGIvZXhlYy5jCTIwMTAtMDQtMTEgMjI6MzE6MzAuMDAwMDAwMDAwICswMjAwCi0rKysg Li9nZGIvZXhlYy5jCTIwMTAtMDQtMTEgMjI6NDE6MjYuMDAwMDAwMDAwICswMjAwCitJbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9leGVjLmMJMjAxMC0wNy0xMiAyMzowNzozNC4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGVjLmMJMjAxMC0wNy0xMyAyMjo1 NjoyOS4wMDAwMDAwMDAgKzAyMDAKIEBAIC0zNCw2ICszNCw3IEBACiAgI2luY2x1ZGUgImFyY2gt dXRpbHMuaCIKICAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCkBAIC04MCw3ICs4NCw3IEBAIEh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNTE3Lmh0bWwKICAK ICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKLUBA IC0yNTYsMTIgKzI1NywyNyBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZSwgaW50 IGZyCitAQCAtMjUzLDEyICsyNTQsMjcgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5h bWUsIGludCBmcgogIAogICAgICAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdF9tYXRjaGVzIChleGVj X2JmZCwgYmZkX29iamVjdCwgJm1hdGNoaW5nKSkKICAJewpAQCAtMTExLDggKzExNSwxMCBAQCBI dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1s CiAgCX0KICAKICAgICAgICAvKiBGSVhNRSAtIFRoaXMgc2hvdWxkIG9ubHkgYmUgcnVuIGZvciBS UzYwMDAsIGJ1dCB0aGUgaWZkZWYgaXMgYSBwb29yCi0tLS0gLi9nZGIvbWFpbi5jCTIwMTAtMDQt MTEgMjI6MzE6MzAuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvbWFpbi5jCTIwMTAtMDQtMTEg MjI6MzE6NDcuMDAwMDAwMDAwICswMjAwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv bWFpbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9tYWlu LmMJMjAxMC0wNy0xMiAyMzowNzozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi9tYWluLmMJMjAxMC0wNy0xMyAyMjo1ODoyMC4wMDAwMDAwMDAgKzAyMDAKIEBA IC0yNDEsNiArMjQxLDM2IEBAIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkKICAg IHJldHVybiAxOwogIH0KQEAgLTE1MCw3ICsxNTYsNyBAQCBIdHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCiAgc3RhdGljIGludAogIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgewotQEAgLTcwMyw2ICs3MzMsOCBAQCBleHRlcm4gaW50 IGdkYnRrX3Rlc3QgKGNoYXIgKik7CitAQCAtNjc4LDYgKzcwOCw4IEBAIGV4dGVybiBpbnQgZ2Ri dGtfdGVzdCAoY2hhciAqKTsKICAJewogIAkgIHN5bWFyZyA9IGFyZ3Zbb3B0aW5kXTsKICAJICBl eGVjYXJnID0gYXJndltvcHRpbmRdOwpAQCAtMTU5LDcgKzE2NSw3IEBAIEh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNTE3Lmh0bWwKICAJICBvcHRpbmQr KzsKICAJfQogIAotQEAgLTgzNSwxMCArODY3LDI1IEBAIEV4Y2VzcyBjb21tYW5kIGxpbmUgYXJn dW1lbnRzIGlnbm9yZWQuICgKK0BAIC04MTYsMTAgKzg0OCwyNSBAQCBFeGNlc3MgY29tbWFuZCBs aW5lIGFyZ3VtZW50cyBpZ25vcmVkLiAoCiAgICAgICAgJiYgc3ltYXJnICE9IE5VTEwKICAgICAg ICAmJiBzdHJjbXAgKGV4ZWNhcmcsIHN5bWFyZykgPT0gMCkKICAgICAgewpAQCAtMTc4LDEzICsx ODQsMTMgQEAgSHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNn MDA1MTcuaHRtbAogICAgICAgIC8qIFRoZSBleGVjIGZpbGUgYW5kIHRoZSBzeW1ib2wtZmlsZSBh cmUgdGhlIHNhbWUuICBJZiB3ZSBjYW4ndAogLSAgICAgICAgIG9wZW4gaXQsIGJldHRlciBvbmx5 IHByaW50IG9uZSBlcnJvciBtZXNzYWdlLgogLSAgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3Jz IHJldHVybnMgbm9uLXplcm8gb24gc3VjY2VzcyEgKi8KLS0gICAgICBpZiAoY2F0Y2hfY29tbWFu ZF9lcnJvcnMgKGV4ZWNfZmlsZV9hdHRhY2gsIGV4ZWNhcmcsICFiYXRjaCwgUkVUVVJOX01BU0tf QUxMKSkKKy0gICAgICBpZiAoY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWNfZmlsZV9hdHRhY2gs IGV4ZWNhcmcsICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpKQogKwkgb3BlbiBpdCwgYmV0 dGVyIG9ubHkgcHJpbnQgb25lIGVycm9yIG1lc3NhZ2UuCiArCSBjYXRjaF9jb21tYW5kX2Vycm9y cyByZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MhCiArCSBEbyBub3QgbG9hZCBFWEVDQVJHIGFz IGEgc3ltYm9sIGZpbGUgaWYgaXQgaGFzIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQKICsJIGFzIGEg Y29yZSBmaWxlLiAgKi8KLSsgICAgICBpZiAoY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGZ1bmMsIGV4 ZWNhcmcsICFiYXRjaCwgUkVUVVJOX01BU0tfQUxMKQorKyAgICAgIGlmIChjYXRjaF9jb21tYW5k X2Vycm9ycyAoZnVuYywgZXhlY2FyZywgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCkKICsJ ICAmJiBjb3JlX2JmZCA9PSBOVUxMKQotIAljYXRjaF9jb21tYW5kX2Vycm9ycyAoc3ltYm9sX2Zp bGVfYWRkX21haW4sIHN5bWFyZywgIWJhdGNoLCBSRVRVUk5fTUFTS19BTEwpOworIAljYXRjaF9j b21tYW5kX2Vycm9ycyAoc3ltYm9sX2ZpbGVfYWRkX21haW4sIHN5bWFyZywgIWJhdGNoX2ZsYWcs IFJFVFVSTl9NQVNLX0FMTCk7CiAgICAgIH0KICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItNi42 LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBh dGNoCmluZGV4IDFhYWUzMzkuLjgyNzE5OTIgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUtcnBtLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCkBA IC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2V2ZW50LXRvcC5j CitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXZlbnQtdG9wLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMDEtMDEg MDg6MzE6MzEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZXZl bnQtdG9wLmMJMjAxMC0wMS0xNSAxMTo0NToyMC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXZlbnQtdG9wLmMJMjAx MC0wNy0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0zMyw2ICszMyw3IEBACiAgI2lu Y2x1ZGUgImNsaS9jbGktc2NyaXB0LmgiICAgICAvKiBmb3IgcmVzZXRfY29tbWFuZF9uZXN0X2Rl cHRoICovCiAgI2luY2x1ZGUgIm1haW4uaCIKQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZXZlbnQtdG9wLmMKICAgIC8qIEVhY2ggaW50ZXJwcmV0ZXIg aGFzIGl0cyBvd24gcnVsZXMgb24gZGlzcGxheWluZyB0aGUgY29tbWFuZAogICAgICAgcHJvbXB0 LiAgKi8KICAgIGlmICghY3VycmVudF9pbnRlcnBfZGlzcGxheV9wcm9tcHRfcCAoKSkKLUluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDExOjQzOjMwLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDExOjQ1OjM0 LjAwMDAwMDAwMCArMDEwMAotQEAgLTQwLDYgKzQwLDcgQEAKKy0tLSBnZGItNy4xLjkwLjIwMTAw NzExLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTA3LTEyIDExOjMwOjMwLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2VsZnJlYWQuYwkyMDEwLTA3LTEyIDExOjM3 OjA0LjAwMDAwMDAwMCArMDIwMAorQEAgLTQyLDYgKzQyLDcgQEAKICAjaW5jbHVkZSAiZ2RiY29y ZS5oIgogICNpbmNsdWRlICJnZGJjbWQuaCIKICAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKQEAgLTQw LDcgKzQwLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogIAog IGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOwogIAotQEAgLTExMTksOCAr MTEyMCwzNTMgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYgorQEAg LTEzNjgsOCArMTM2OSwzNTMgQEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9p ZCAqYgogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC0zOTUsNyArMzk1LDcgQEAgSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogICAgIGF2b2lkYW5jZS4gICovCiAg CiAgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIKLUBAIC0xMTc0LDExICsxNTIwLDE3IEBAIG1pc3Np bmdfZmlsZXBhaXJfY2hhbmdlICh2b2lkKQorQEAgLTE0MjMsMTEgKzE3NjksMTcgQEAgbWlzc2lu Z19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCiAgICAgICAgLyogQWxsIHRoZWlyIG1lbW9yeSBjYW1l IGp1c3QgZnJvbSBtaXNzaW5nX2ZpbGVwYWlyX09CU1RBQ0suICAqLwogICAgICAgIG1pc3Npbmdf ZmlsZXBhaXJfaGFzaCA9IE5VTEw7CiAgICAgIH0KQEAgLTQxMyw3ICs0MTMsNyBAQCBJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiAgICBtaXNzaW5nX2ZpbGVwYWlyX2No YW5nZSAoKTsKICB9CiAgCi1AQCAtMTI0NSwxNCArMTU5NywzNCBAQCBkZWJ1Z19wcmludF9taXNz aW5nIChjb25zdCBjaGFyICpiaW5hcnksCitAQCAtMTQ5NCwxNCArMTg0NiwzNCBAQCBkZWJ1Z19w cmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksCiAgCiAgICAqc2xvdCA9IG1pc3Npbmdf ZmlsZXBhaXI7CiAgCkBAIC00NTUsMTEgKzQ1NSwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvZWxmcmVhZC5jCiAgfQogIAogIHN0YXRpYyBjaGFyICoKLUluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L3N5bWZpbGUuaAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bWZpbGUuaAkyMDEwLTAxLTE1IDExOjQ1OjIwLjAwMDAwMDAw MCArMDEwMAotQEAgLTM5OCw2ICszOTgsNyBAQCBleHRlcm4gc3RydWN0IGJ1aWxkX2lkICpidWls ZF9pZF9hZGRyX2dlCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9zeW1maWxlLmgJ MjAxMC0wNy0xMiAxMTowNjoxOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9zeW1maWxlLmgJMjAxMC0wNy0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKK0BA IC01NjgsNiArNTY4LDcgQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9n ZQogIGV4dGVybiBjaGFyICpidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpi dWlsZF9pZCwKICAJCQkJICAgY2hhciAqKmxpbmtfcmV0dXJuLCBpbnQgYWRkX2RlYnVnX3N1ZmZp eCk7CiAgZXh0ZXJuIHZvaWQgZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5 LCBjb25zdCBjaGFyICpkZWJ1Zyk7CkBAIC00NjcsMTEgKzQ2NywxMSBAQCBJbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvc3ltZmlsZS5oCiAgCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8K ICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAK K0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTAxLTE1IDExOjQ1OjIw LjAwMDAwMDAwMCArMDEwMAotQEAgLTEyNDgsNyArMTI0OCw3IEBAIHByb2MgZGVmYXVsdF9nZGJf c3RhcnQgeyB9IHsKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAkyMDEwLTA3LTEyIDExOjA1OjU3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTA3LTEyIDExOjM3 OjA0LjAwMDAwMDAwMCArMDIwMAorQEAgLTEzNTMsNyArMTM1Myw3IEBAIHByb2MgZGVmYXVsdF9n ZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8g MC4iCiAgCX0KICAgICAgfQpAQCAtNDgwLDEwICs0ODAsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogICAgICBzZW5kX2dkYiAic2V0IGJ1 aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIkZ2RiX3By b21wdCAkIiB7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2xpYi9t aS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9s aWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9y aWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wMS0xNSAxMToxMjozMy4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvbGli L21pLXN1cHBvcnQuZXhwCTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCistLS0g Z2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhw CTIwMTAtMDctMTIgMTE6MDU6NTcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTA3LTEyIDExOjM3OjA0 LjAwMDAwMDAwMCArMDIwMAogQEAgLTIyMSw3ICsyMjEsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2Ri X3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIH0KICAgICAgCX0KQEAgLTQ5MywxMCArNDkzLDEwIEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCiAgICAgIHNlbmRfZ2RiICIxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAg ICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiLioxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3Nl IDBcclxuMTkwXFxcXmRvbmVcclxuJG1pX2dkYl9wcm9tcHQkIiB7Ci1JbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvdHVpL3R1aS1pbnRlcnAuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL3R1aS90dWktaW50ZXJwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMC0wMS0wMSAwODozMjowNy4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90dWkvdHVpLWludGVycC5jCTIw MTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcx MS5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTAtMDUtMTggMDA6MjE6NDMuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEw LTA3LTEyIDExOjM3OjA0LjAwMDAwMDAwMCArMDIwMAogQEAgLTMwLDYgKzMwLDcgQEAKICAjaW5j bHVkZSAidHVpL3R1aS5oIgogICNpbmNsdWRlICJ0dWkvdHVpLWlvLmgiCkBAIC01MDUsNyArNTA1 LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3R1aS90dWktaW50ZXJwLmMKICAK ICAvKiBTZXQgdG8gMSB3aGVuIHRoZSBUVUkgbW9kZSBtdXN0IGJlIGFjdGl2YXRlZCB3aGVuIHdl IGZpcnN0IHN0YXJ0CiAgICAgZ2RiLiAgKi8KLUBAIC0xMjgsNiArMTI5LDggQEAgdHVpX2NvbW1h bmRfbG9vcCAodm9pZCAqZGF0YSkKK0BAIC0xNDYsNiArMTQ3LDggQEAgdHVpX2NvbW1hbmRfbG9v cCAodm9pZCAqZGF0YSkKICAgICAgICBjaGFyICphX3Byb21wdDsKICAgICAgICBjaGFyICpnZGJf cHJvbXB0ID0gZ2V0X3Byb21wdCAoKTsKICAKQEAgLTUxNCwxMCArNTE0LDEwIEBAIEluZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90dWkvdHVpLWludGVycC5jCiAgICAgICAgLyogVGVsbCBy ZWFkbGluZSB3aGF0IHRoZSBwcm9tcHQgdG8gZGlzcGxheSBpcyBhbmQgd2hhdCBmdW5jdGlvbgog ICAgICAgICAgIGl0IHdpbGwgbmVlZCB0byBjYWxsIGFmdGVyIGEgd2hvbGUgbGluZSBpcyByZWFk LiBUaGlzIGFsc28KICAgICAgICAgICBkaXNwbGF5cyB0aGUgZmlyc3QgcHJvbXB0LiAgKi8KLUlu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9hY2xvY2FsLm00CitJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvYWNsb2NhbC5tNAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAx MDAxMTUub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDA5LTExLTExIDA1OjQyOjM5LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FjbG9jYWwubTQJMjAxMC0wMS0xNSAx MTo0NToyMC4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2Ri L2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1Njo1OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9hY2xvY2FsLm00CTIwMTAtMDctMTIgMTE6Mzc6MDQuMDAwMDAw MDAwICswMjAwCiBAQCAtMTksNiArMTksMTYyIEBAIFlvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBv ZiBhdXRvY29uZi4gIEkKICBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJl Z2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KICBUbyBkbyBzbywgdXNlIHRoZSBw cm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5IGBhdXRvcmVjb25m Jy5dKV0pCkBAIC02ODEsMTEgKzY4MSwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvYWNsb2NhbC5tNAogICMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1LCAyMDA2LCAy MDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICAjCiAgIyBUaGlzIGZp bGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgorSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL2NvbmZpZy5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUu b3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlnLmluCTIwMTAtMDEtMTUgMTE6NDU6MjAu MDAwMDAwMDAwICswMTAwCi1AQCAtNDIsNiArNDIsOSBAQAorLS0tIGdkYi03LjEuOTAuMjAxMDA3 MTEub3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMDctMDYgMjE6MDM6MTEuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvY29uZmlnLmluCTIwMTAtMDctMTIgMTE6Mzg6 MzAuMDAwMDAwMDAwICswMjAwCitAQCAtNDYsNiArNDYsOSBAQAogIC8qIERlZmluZSB0byBCRkQn cyBkZWZhdWx0IHRhcmdldCB2ZWN0b3IuICovCiAgI3VuZGVmIERFRkFVTFRfQkZEX1ZFQwogIApA QCAtNjk1LDkgKzY5NSw5IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWcu aW4KICAvKiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRv IHRoZSB1c2VyJ3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwogICN1bmRl ZiBFTkFCTEVfTkxTCi1AQCAtMjIxLDYgKzIyNCw5IEBACi0gLyogRGVmaW5lIGlmIFB5dGhvbiAy LjYgaXMgYmVpbmcgdXNlZC4gKi8KLSAjdW5kZWYgSEFWRV9MSUJQWVRIT04yXzYKK0BAIC0yMzIs NiArMjM1LDkgQEAKKyAvKiBEZWZpbmUgaWYgUHl0aG9uIDIuNyBpcyBiZWluZyB1c2VkLiAqLwor ICN1bmRlZiBIQVZFX0xJQlBZVEhPTjJfNwogIAogKy8qIERlZmluZSBpZiBsaWJycG0gbGlicmFy eSBpcyBiZWluZyB1c2VkLiAqLwogKyN1bmRlZiBIQVZFX0xJQlJQTQpAQCAtNzA1LDI5ICs3MDUs MjkgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmlu ZSBpZiBsaWJ1bndpbmQgbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJ QlVOV0lORAogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZQorSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlndXJlCTIwMTAtMDEtMTUgMDM6MjI6MzEu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlCTIw MTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCi1AQCAtNjc2LDYgKzY3Niw5IEBAIFJF UE9SVF9CVUdTX1RPCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9jb25maWd1cmUJ MjAxMC0wNy0wNyAxOTozNjozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9jb25maWd1cmUJMjAxMC0wNy0xMiAxMTozODoxNS4wMDAwMDAwMDAgKzAyMDAKK0BA IC02NzksNiArNjc5LDkgQEAgUkVQT1JUX0JVR1NfVE8KICBQS0dWRVJTSU9OCiAgVEFSR0VUX09C UwogIHN1YmRpcnMKICtSUE1fTElCUwogK1JQTV9DRkxBR1MKICtQS0dfQ09ORklHCi0gcHl0aG9u ZGlyCi0gR0RCX0RBVEFESVJfUEFUSAogIEdEQl9EQVRBRElSCi1AQCAtODg4LDYgKzg5MSw3IEBA IHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCisgREVCVUdESVIKKyBhbV9fZmFzdGRlcENDX0ZBTFNF CitAQCAtOTQ1LDYgKzk0OCw3IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCisgd2l0aF9z ZXBhcmF0ZV9kZWJ1Z19kaXIKICB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291 cmNlcwotIHdpdGhfcHl0aG9uZGlyCiArd2l0aF9ycG0KICBlbmFibGVfdGFyZ2V0cwogIGVuYWJs ZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAgLTkyOCw2ICs5MzIsOSBAQCBMREZMQUdT CitAQCAtOTg1LDYgKzk4OSw5IEBAIExERkxBR1MKICBMSUJTCiAgQ1BQRkxBR1MKICBDUFAKQEAg LTczNywxNiArNzM3LDE2IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1 cmUKICBZQUNDCiAgWUZMQUdTCiAgWE1LTUYnCi1AQCAtMTU5Myw2ICsxNjAwLDggQEAgT3B0aW9u YWwgUGFja2FnZXM6CitAQCAtMTY0Niw2ICsxNjUzLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCi0gICAtLXdpdGgtcHl0aG9u ZGlyICAgICAgICBpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiL3B5dGhvbl0KKyAgIC0td2l0aC1yZWxv Y2F0ZWQtc291cmNlcz1QQVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNh bGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCiArICAtLXdpdGgtcnBtICAg ICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVz L25vLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKICAg IC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1 cHBvcnQKICAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkg aW5zdGVhZCBvZiB0aGUgdGVybWNhcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFy eQotQEAgLTE2MjcsNiArMTYzNiw5IEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFy aWFibGVzOgorQEAgLTE2ODEsNiArMTY5MCw5IEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1l bnQgdmFyaWFibGVzOgogICAgQ1BQRkxBR1MgICAgQy9DKysvT2JqZWN0aXZlIEMgcHJlcHJvY2Vz c29yIGZsYWdzLCBlLmcuIC1JPGluY2x1ZGUgZGlyPiBpZgogICAgICAgICAgICAgICAgeW91IGhh dmUgaGVhZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+CiAgICBD UFAgICAgICAgICBDIHByZXByb2Nlc3NvcgpAQCAtNzU2LDcgKzc1Niw3IEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUKICAgIFlBQ0MgICAgICAgIFRoZSBgWWV0IEFu b3RoZXIgQyBDb21waWxlcicgaW1wbGVtZW50YXRpb24gdG8gdXNlLiBEZWZhdWx0cyB0bwogICAg ICAgICAgICAgICAgdGhlIGZpcnN0IHByb2dyYW0gZm91bmQgb3V0IG9mOiBgYmlzb24gLXknLCBg YnlhY2MnLCBgeWFjYycuCiAgICBZRkxBR1MgICAgICBUaGUgbGlzdCBvZiBhcmd1bWVudHMgdGhh dCB3aWxsIGJlIHBhc3NlZCBieSBkZWZhdWx0IHRvICRZQUNDLgotQEAgLTY3NjAsNiArNjc3Miw0 ODYgQEAgZWxzZQorQEAgLTc4NzgsNiArNzg5MCw0ODYgQEAgX0FDRU9GCiAgZmkKICAKICAKQEAg LTEyNDIsMjkwICsxMjQyLDE0IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25m aWd1cmUKICsKICAKICAKLSAKLUBAIC0xMDA0MywyNjUgKzEwNTM1LDI1IEBAICRhc19lY2hvICIj ZGVmaW5lIFNURENfSEVBREVSUyAxIiA+PmNvbmYKLSAKLSBmaQotIAotLQotLQotIGZvciBhY19o ZWFkZXIgaW4gc3lzL3VzZXIzMi5oIHN5cy9wcm9jZnMzMi5oCi0tZG8KLS1hc19hY19IZWFkZXI9 YGVjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKLS1pZiBldmFsICJ0 ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCi0tICBlY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgZm9yICRhY19oZWFkZXIiID4mNQotLWVjaG8gJEVDSE9fTiAi Y2hlY2tpbmcgZm9yICRhY19oZWFkZXIuLi4gJEVDSE9fQyIgPiY2Ci0taWYgZXZhbCAidGVzdCBc IlwkeyRhc19hY19IZWFkZXIrc2V0fVwiID0gc2V0IjsgdGhlbgotLSAgZWNobyAkRUNIT19OICIo Y2FjaGVkKSAkRUNIT19DIiA+JjYKLS1maQotLWVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6 IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKLS1lY2hvICIke0VDSE9fVH1g ZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2Ci0tZWxzZQotLSAgIyBJcyB0aGUg aGVhZGVyIGNvbXBpbGFibGU/Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nICRhY19o ZWFkZXIgdXNhYmlsaXR5IiA+JjUKLS1lY2hvICRFQ0hPX04gImNoZWNraW5nICRhY19oZWFkZXIg dXNhYmlsaXR5Li4uICRFQ0hPX0MiID4mNgotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VP RgotLS8qIGNvbmZkZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRl c3QuJGFjX2V4dAotLWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29u ZmRlZnMuaC4gICovCi0tJGFjX2luY2x1ZGVzX2RlZmF1bHQKLS0jaW5jbHVkZSA8JGFjX2hlYWRl cj4KLS1fQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0Ci0taWYgeyAoZXZhbCBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY29tcGlsZVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfY29t cGlsZSkgMj5jb25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycg Y29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0 IGNvbmZ0ZXN0LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0tCSB7IGFjX3RyeT0ndGVzdCAt eiAiJGFjX2Nfd2Vycm9yX2ZsYWciCi0tCQkJIHx8IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCi0t ICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQotLSAgKGV2 YWwgJGFjX3RyeSkgMj4mNQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBlY2hvICIkYXNfbWU6JExJTkVO TzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsgfTsgfSAmJgot LQkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QuJGFjX29iamV4dCcKLS0gIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAy PiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9OyB0aGVuCi0tICBhY19oZWFk ZXJfY29tcGlsZXI9eWVzCi0tZWxzZQotLSAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3 YXM6IiA+JjUKLS1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1Ci0tCi0tYWNfaGVh ZGVyX2NvbXBpbGVyPW5vCi0tZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGFj X2hlYWRlcl9jb21waWxlciIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9JGFjX2hlYWRlcl9jb21waWxl ciIgPiY2Ci0tCi0tIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Ci0tZWNobyAiJGFzX21lOiRMSU5F Tk86IGNoZWNraW5nICRhY19oZWFkZXIgcHJlc2VuY2UiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hl Y2tpbmcgJGFjX2hlYWRlciBwcmVzZW5jZS4uLiAkRUNIT19DIiA+JjYKLS1jYXQgPmNvbmZ0ZXN0 LiRhY19leHQgPDxfQUNFT0YKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29u ZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FD RU9GCi0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDwkYWNfaGVhZGVyPgotLV9B Q0VPRgotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2NwcCBjb25mdGVz dC4kYWNfZXh0XCIiKSA+JjUKLS0gIChldmFsICRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCkgMj5j b25mdGVzdC5lcjEKLS0gIGFjX3N0YXR1cz0kPwotLSAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qu ZXIxID5jb25mdGVzdC5lcnIKLS0gIHJtIC1mIGNvbmZ0ZXN0LmVyMQotLSAgY2F0IGNvbmZ0ZXN0 LmVyciA+JjUKLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUK LS0gIChleGl0ICRhY19zdGF0dXMpOyB9ID4vZGV2L251bGw7IHRoZW4KLS0gIGlmIHRlc3QgLXMg Y29uZnRlc3QuZXJyOyB0aGVuCi0tICAgIGFjX2NwcF9lcnI9JGFjX2NfcHJlcHJvY193YXJuX2Zs YWcKLS0gICAgYWNfY3BwX2Vycj0kYWNfY3BwX2VyciRhY19jX3dlcnJvcl9mbGFnCi0tICBlbHNl Ci0tICAgIGFjX2NwcF9lcnI9Ci0tICBmaQotLWVsc2UKLS0gIGFjX2NwcF9lcnI9eWVzCi0tZmkK LS1pZiB0ZXN0IC16ICIkYWNfY3BwX2VyciI7IHRoZW4KLS0gIGFjX2hlYWRlcl9wcmVwcm9jPXll cwotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2Vk ICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLSAgYWNfaGVhZGVyX3ByZXByb2M9 bm8KLS1maQotLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0Ci0tZWNobyAiJGFz X21lOiRMSU5FTk86IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKLS1lY2hvICIke0VD SE9fVH0kYWNfaGVhZGVyX3ByZXByb2MiID4mNgotLQotLSMgU28/ICBXaGF0IGFib3V0IHRoaXMg aGVhZGVyPwotLWNhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVyX3ByZXByb2M6JGFj X2NfcHJlcHJvY193YXJuX2ZsYWcgaW4KLS0gIHllczpubzogKQotLSAgICB7IGVjaG8gIiRhc19t ZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIs IHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNzb3IhIiA+JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5J Tkc6ICRhY19oZWFkZXI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhl IHByZXByb2Nlc3NvciEiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5J Tkc6ICRhY19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4m NQotLWVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRo ZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KLS0gICAgYWNfaGVhZGVyX3ByZXByb2M9eWVzCi0t ICAgIDs7Ci0tICBubzp5ZXM6KiApCi0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5J Tkc6ICRhY19oZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiY1Ci0tZWNo byAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29t cGlsZWQiID4mMjt9Ci0tICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19o ZWFkZXI6ICAgICBjaGVjayBmb3IgbWlzc2luZyBwcmVyZXF1aXNpdGUgaGVhZGVycz8iID4mNQot LWVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogICAgIGNoZWNrIGZvciBtaXNzaW5n IHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVO TzogV0FSTklORzogJGFjX2hlYWRlcjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+ JjUKLS1lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IHNlZSB0aGUgQXV0b2NvbmYg ZG9jdW1lbnRhdGlvbiIgPiYyO30KLS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklO RzogJGFjX2hlYWRlcjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1dCBDYW5ub3QgQmUgQ29tcGls ZWRcIiIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVyOiAgICAgc2VjdGlv biBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQotLSAgICB7IGVjaG8g IiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhl IHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNf aGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIHByZXByb2Nlc3NvcidzIHJlc3VsdCIgPiYyO30K LS0gICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hlYWRlcjogaW4gdGhl IGZ1dHVyZSwgdGhlIGNvbXBpbGVyIHdpbGwgdGFrZSBwcmVjZWRlbmNlIiA+JjUKLS1lY2hvICIk YXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6IGluIHRoZSBmdXR1cmUsIHRoZSBjb21waWxlciB3 aWxsIHRha2UgcHJlY2VkZW5jZSIgPiYyO30KLS0gICAgKAotLSAgICAgIGNhdCA8PFxfQVNCT1gK LS0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS0jIyBS ZXBvcnQgdGhpcyB0byB0aGUgQUNfUEFDS0FHRV9OQU1FIGxpc3RzLiAgIyMKLS0jIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKLS1fQVNCT1gKLS0gICAgKSB8 Ci0tICAgICAgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCi0tICAgIDs7Ci0t ZXNhYwotLWVjaG8gIiRhc19tZTokTElORU5POiBjaGVja2luZyBmb3IgJGFjX2hlYWRlciIgPiY1 Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYK LS1pZiBldmFsICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVuCi0t ICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgotLWVsc2UKLS0gIGV2YWwgIiRh c19hY19IZWFkZXI9XCRhY19oZWFkZXJfcHJlcHJvYyIKLS1maQotLWVjaG8gIiRhc19tZTokTElO RU5POiByZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjUKLS1lY2hv ICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfSGVhZGVyJ30nYCIgPiY2Ci0tCi0tZmkK LS1pZiB0ZXN0IGBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgID0geWVzOyB0aGVuCi0r ZG8gOgotKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIi IHwgJGFzX3RyX3NoYAotK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICIk YWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotK2V2YWwg YXNfdmFsPVwkJGFzX2FjX0hlYWRlcgotKyAgIGlmIHRlc3QgIngkYXNfdmFsIiA9IHgiInllczsg dGhlbiA6Ci0gICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0tI2RlZmluZSBgZWNobyAiSEFW RV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKLSsjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8k YWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKLSBfQUNFT0YKLSAKLSBmaQotIAotIGRvbmUKLSAK LS1lY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHN0cnVjdCBlbGZfcHJzdGF0dXMz Mi5wcl9yZWciID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHN0cnVjdCBlbGZfcHJz dGF0dXMzMi5wcl9yZWcuLi4gJEVDSE9fQyIgPiY2Ci0taWYgdGVzdCAiJHthY19jdl9tZW1iZXJf c3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3JlZytzZXR9IiA9IHNldDsgdGhlbgotLSAgZWNobyAk RUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLS1lbHNlCi0tICBjYXQgPmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YKLS1jYXQgY29uZmRl ZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9G Ci0tLyogZW5kIGNvbmZkZWZzLmguICAqLwotLSNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci0tCi0t aW50Ci0tbWFpbiAoKQotLXsKLS1zdGF0aWMgc3RydWN0IGVsZl9wcnN0YXR1czMyIGFjX2FnZ3I7 Ci0taWYgKGFjX2FnZ3IucHJfcmVnKQotLXJldHVybiAwOwotLSAgOwotLSAgcmV0dXJuIDA7Ci0t fQotLV9BQ0VPRgotLXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8g IiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21w aWxlKSAyPmNvbmZ0ZXN0LmVyMQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBj b25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQg Y29uZnRlc3QuZXJyID4mNQotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0 dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYKLS0JIHsgYWNfdHJ5PSd0ZXN0IC16 ICIkYWNfY193ZXJyb3JfZmxhZyIKLS0JCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKLS0g IHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZh bCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5P OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCi0t CSB7IGFjX3RyeT0ndGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+ JjUKLS0gIGFjX3N0YXR1cz0kPwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19z dGF0dXMiID4mNQotLSAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGFjX2N2X21l bWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnPXllcwotLWVsc2UKLS0gIGVjaG8gIiRh c19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4k YWNfZXh0ID4mNQotLQotLWNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9BQ0VPRgotLS8qIGNvbmZk ZWZzLmguICAqLwotLV9BQ0VPRgotLWNhdCBjb25mZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAot LWNhdCA+PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBlbmQgY29uZmRlZnMuaC4gICov Ci0tI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLS0KLS1pbnQKLS1tYWluICgpCi0tewotLXN0YXRp YyBzdHJ1Y3QgZWxmX3Byc3RhdHVzMzIgYWNfYWdncjsKLS1pZiAoc2l6ZW9mIGFjX2FnZ3IucHJf cmVnKQotLXJldHVybiAwOwotLSAgOwotLSAgcmV0dXJuIDA7Ci0tfQotLV9BQ0VPRgotLXJtIC1m IGNvbmZ0ZXN0LiRhY19vYmpleHQKLS1pZiB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBc IiRhY19jb21waWxlXCIiKSA+JjUKLS0gIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVy MQotLSAgYWNfc3RhdHVzPSQ/Ci0tICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0 ZXN0LmVycgotLSAgcm0gLWYgY29uZnRlc3QuZXIxCi0tICBjYXQgY29uZnRlc3QuZXJyID4mNQot LSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4aXQg JGFjX3N0YXR1cyk7IH0gJiYKLS0JIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxh ZyIKLS0JCQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKLS0gIHsgKGV2YWwgZWNobyAiJGFz X21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0t ICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVz IiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMpOyB9OyB9ICYmCi0tCSB7IGFjX3RyeT0ndGVzdCAt cyBjb25mdGVzdC4kYWNfb2JqZXh0JwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog XCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0k PwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4 aXQgJGFjX3N0YXR1cyk7IH07IH07IHRoZW4KLS0gIGFjX2N2X21lbWJlcl9zdHJ1Y3RfZWxmX3By c3RhdHVzMzJfcHJfcmVnPXllcwotLWVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dy YW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotLQotLWFj X2N2X21lbWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnPW5vCi0tZmkKLS1ybSAtZiBj b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tZmkKLS1y bSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0t ZmkKLS1lY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfY3ZfbWVtYmVyX3N0cnVjdF9l bGZfcHJzdGF0dXMzMl9wcl9yZWciID4mNQotLWVjaG8gIiR7RUNIT19UfSRhY19jdl9tZW1iZXJf c3RydWN0X2VsZl9wcnN0YXR1czMyX3ByX3JlZyIgPiY2Ci0taWYgdGVzdCAkYWNfY3ZfbWVtYmVy X3N0cnVjdF9lbGZfcHJzdGF0dXMzMl9wcl9yZWcgPSB5ZXM7IHRoZW4KLSthY19mbl9jX2NoZWNr X21lbWJlciAiJExJTkVOTyIgInN0cnVjdCBlbGZfcHJzdGF0dXMzMiIgInByX3JlZyIgImFjX2N2 X21lbWJlcl9zdHJ1Y3RfZWxmX3Byc3RhdHVzMzJfcHJfcmVnIiAiI2luY2x1ZGUgPHN5cy9wcm9j ZnMuaD4KLSsiCi0raWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X2VsZl9wcnN0YXR1czMy X3ByX3JlZyIgPSB4IiJ5ZXM7IHRoZW4gOgotIAotLWNhdCA+PmNvbmZkZWZzLmggPDxcX0FDRU9G Ci0tI2RlZmluZSBIQVZFX0VMRl9QUlNUQVRVUzMyIDEKLS1fQUNFT0YKLSskYXNfZWNobyAiI2Rl ZmluZSBIQVZFX0VMRl9QUlNUQVRVUzMyIDEiID4+Y29uZmRlZnMuaAotIAotIGZpCi0gCi1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlLmFjCisgc3ViZGlycz0iJHN1YmRp cnMgZG9jIHRlc3RzdWl0ZSIKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWd1 cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2NvbmZp Z3VyZS5hYwkyMDEwLTAxLTE1IDAzOjIyOjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTAxLTE1IDExOjQ1OjIwLjAwMDAwMDAw MCArMDEwMAotQEAgLTE1Miw2ICsxNTIsMTk5IEBAIGVsc2UKLSBmaQotIEFDX1NVQlNUKHB5dGhv bmRpcikKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEw LTA3LTA3IDE5OjM2OjM5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTA3LTEyIDExOjM4OjAyLjAwMDAwMDAwMCArMDIwMAorQEAg LTEwOCw2ICsxMDgsMTk5IEBAIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcmVsb2NhdGVkLXNvdXJj ZXMKKyAgICAgICAgICAgICAgIFtSZWxvY2F0ZWQgZGlyZWN0b3J5IGZvciBzb3VyY2UgZmlsZXMu IF0pCisgXSkKICAKICsjIEludGVncmF0aW9uIHdpdGggcnBtIGxpYnJhcnkgdG8gc3VwcG9ydCBt aXNzaW5nIGRlYnVnaW5mbyBzdWdnZXN0aW9ucy4KICsjIC0td2l0aG91dC1ycG06IERpc2FibGUg YW55IHJwbSBzdXBwb3J0LgpAQCAtMTcyMCwxMyArMTQ0NCwxMyBAQCBJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvY29uZmlndXJlLmFjCiArICBmaQogK2ZpCiArCi0gCiAgQUNfQ09ORklH X1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9hY2luY2x1ZGUubTQKKyAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0 YXJnZXQgY29uZmlndXJhdGlvbnMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9hY2lu Y2x1ZGUubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2Fj aW5jbHVkZS5tNAkyMDEwLTAxLTA4IDA4OjE2OjQzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2FjaW5jbHVkZS5tNAkyMDEwLTAxLTE1IDExOjQ1OjIwLjAwMDAw MDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvYWNpbmNsdWRlLm00 CTIwMTAtMDUtMjcgMDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDctMTIgMTE6Mzc6MDQuMDAwMDAwMDAwICswMjAw CiBAQCAtMSwzICsxLDUgQEAKICsjIHNlcmlhbCAxCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKaW5kZXgg NzdiYmM3Zi4uZmYxMzRmMSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRj aAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCkBAIC0xLDE5ICsxLDE4IEBACi1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMC0wMS0wNCAxNTo1Nzo0My4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb3JlbG93LmMJMjAxMC0wMS0xNSAxMTox NDowNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00Niw2ICs0NiwxMCBAQAotICNpbmNsdWRlICJzb2xp Yi5oIgorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvY29yZWxvdy5jCTIwMTAtMDUt MTQgMDE6NTM6MzIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv Y29yZWxvdy5jCTIwMTAtMDctMTIgMTE6MDc6MzMuMDAwMDAwMDAwICswMjAwCitAQCAtNDcsNiAr NDcsOSBAQAogICNpbmNsdWRlICJmaWxlbmFtZXMuaCIKICAjaW5jbHVkZSAicHJvZ3NwYWNlLmgi CisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiArI2luY2x1ZGUgImF1eHYuaCIKICsjaW5jbHVkZSAi ZWxmL2NvbW1vbi5oIgotKyNpbmNsdWRlICJvYmpmaWxlcy5oIgogKyNpbmNsdWRlICJnZGJjbWQu aCIKICAKICAKICAjaWZuZGVmIE9fTEFSR0VGSUxFCi1AQCAtMjkwLDYgKzI5NCw1MiBAQCBhZGRf dG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24gCitAQCAtMjg5LDYgKzI5Miw1MiBA QCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24gCiAgICAgIGluZmVyaW9y X3B0aWQgPSBwdGlkOwkJCSAvKiBZZXMsIG1ha2UgaXQgY3VycmVudCAqLwogIH0KICAKQEAgLTY2 LDcgKzY1LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvcmVsb3cuYwogIC8q IFRoaXMgcm91dGluZSBvcGVucyBhbmQgc2V0cyB1cCB0aGUgY29yZSBmaWxlIGJmZC4gICovCiAg CiAgc3RhdGljIHZvaWQKLUBAIC0zODcsNiArNDM3LDEyIEBAIGNvcmVfb3BlbiAoY2hhciAqZmls ZW5hbWUsIGludCBmcm9tX3R0eSkKK0BAIC0zODYsNiArNDM1LDEyIEBAIGNvcmVfb3BlbiAoY2hh ciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKICAgIHB1c2hfdGFyZ2V0ICgmY29yZV9vcHMpOwog ICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKICAKQEAgLTc5LDcgKzc4LDcgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvcmVsb3cuYwogICAgLyogRG8gdGhpcyBiZWZv cmUgYWNrbm93bGVkZ2luZyB0aGUgaW5mZXJpb3IsIHNvIGlmCiAgICAgICBwb3N0X2NyZWF0ZV9p bmZlcmlvciB0aHJvd3MgKGNhbiBoYXBwZW4gZWFzaWxseSBpZiB5b3UncmUgbG9hZGluZwogICAg ICAgYSBjb3JlIGZpbGUgd2l0aCB0aGUgd3JvbmcgZXhlYyksIHdlIGFyZW4ndCBsZWZ0IHdpdGgg dGhyZWFkcwotQEAgLTkyNSw0ICs5ODEsMTEgQEAgX2luaXRpYWxpemVfY29yZWxvdyAodm9pZCkK K0BAIC05MjQsNCArOTc5LDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKHZvaWQpCiAgICBpbml0 X2NvcmVfb3BzICgpOwogIAogICAgYWRkX3RhcmdldCAoJmNvcmVfb3BzKTsKQEAgLTkxLDExICs5 MCwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29yZWxvdy5jCiArCQkJICAg TlVMTCwgTlVMTCwgTlVMTCwKICsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKICB9Ci1JbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAwMzoyMzo1 MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNDI1OCw2ICsx NDI1OCwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA3LTEyIDEwOjU5OjMwLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA3LTEy IDExOjA1OjU3LjAwMDAwMDAwMCArMDIwMAorQEAgLTE0OTgwLDYgKzE0OTgwLDI3IEBAIGluZm9y bWF0aW9uIGZpbGVzLgogIAogIEBlbmQgdGFibGUKICAKQEAgLTEyMywxMSArMTIyLDExIEBAIElu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAY2luZGV4IEBj b2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcgbGluayBzZWN0aW9u cwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUgZXhlY3V0YWJsZSBm aWxlIG5hbWVkCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29saWItc3ZyNC5jCitJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc29saWItc3ZyNC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMC0wMS0xNSAw MzoyMjoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zb2xp Yi1zdnI0LmMJMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMTE2LDkg KzExMTYsNDkgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKKy0tLSBnZGItNy4xLjkwLjIwMTAw NzExLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEwLTA3LTEyIDEwOjAwOjU2LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3NvbGliLXN2cjQuYwkyMDEwLTA3LTEy IDExOjA1OjU3LjAwMDAwMDAwMCArMDIwMAorQEAgLTExODEsOSArMTE4MSw0OSBAQCBzdnI0X2N1 cnJlbnRfc29zICh2b2lkKQogIAkJICAgICBzYWZlX3N0cmVycm9yIChlcnJjb2RlKSk7CiAgCSAg ZWxzZQogIAkgICAgewpAQCAtMTgwLDE0ICsxNzksMTQgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3NvbGliLXN2cjQuYwogIAkgICAgfQogIAkgIHhmcmVlIChidWZmZXIpOwogIAot SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYworSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2VsZnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAx MDAxMTUub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTAtMDEtMTUgMDM6MjI6MTMuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCTIwMTAtMDEtMTUgMTE6 NDM6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMzYsNiArMzYsMTAgQEAKLSAjaW5jbHVkZSAiZ2Ri LXN0YWJzLmgiCi0gI2luY2x1ZGUgImNvbXBsYWludHMuaCIKKy0tLSBnZGItNy4xLjkwLjIwMTAw NzExLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTA3LTEyIDEwOjAwOjU2LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2VsZnJlYWQuYwkyMDEwLTA3LTEyIDExOjMw OjMwLjAwMDAwMDAwMCArMDIwMAorQEAgLTM4LDYgKzM4LDEwIEBACiAgI2luY2x1ZGUgImRlbWFu Z2xlLmgiCisgI2luY2x1ZGUgInBzeW1wcml2LmgiCisgI2luY2x1ZGUgImdkYnR5cGVzLmgiCiAr I2luY2x1ZGUgImxpYmJmZC5oIgogKyNpbmNsdWRlICJnZGJjb3JlLmgiCiArI2luY2x1ZGUgImdk YmNtZC5oIgpAQCAtMTk1LDEwICsxOTQsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2VsZnJlYWQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQp OwogIAotQEAgLTU2Nyw2ICs1NzEsMjAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZQotIAl9Ci0gICAgIH0KK0BAIC04MTgsMTYgKzgyMiw2NSBAQCByZXNvbHZlX2du dV9pZnVuYyAoY29uc3QgY2hhciAqZnVuY3Rpb25fCisgICByZXR1cm4gMDsKICB9CisgCiArLyog TG9jYXRlIE5UX0dOVV9CVUlMRF9JRCBhbmQgcmV0dXJuIGl0cyBtYXRjaGluZyBkZWJ1ZyBmaWxl bmFtZS4KICsgICBGSVhNRTogTk9URSBkZWNvZGluZyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIHRo ZSBCRkQgY29yZSBub3RlcyBkZWNvZGluZy4gICovCiArCkBAIC0yMTMsMTAgKzIxMiwxMCBAQCBJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiArICBmcHJpbnRmX2ZpbHRl cmVkIChmaWxlLCBfKCJWZXJib3NpdHkgbGV2ZWwgb2YgdGhlIGJ1aWxkLWlkIGxvY2F0b3IgaXMg JXMuXG4iKSwKICsJCSAgICB2YWx1ZSk7CiArfQotIAorKwogIHN0cnVjdCBidWlsZF9pZAogICAg ewotQEAgLTU3NCwxMCArNTkyLDQ0IEBAIHN0cnVjdCBidWlsZF9pZAorICAgICBzaXplX3Qgc2l6 ZTsKICAgICAgZ2RiX2J5dGUgZGF0YVsxXTsKICAgIH07CiAgCkBAIC0yNjMsNyArMjYyLDcgQEAg SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogIHsKICAgIHN0cnVjdCBi dWlsZF9pZCAqcmV0dmFsOwogIAotQEAgLTU5Myw2ICs2NDUsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9n ZXQgKGJmZCAqYWJmZCkKK0BAIC04NDMsNiArODk2LDM0OCBAQCBidWlsZF9pZF9iZmRfZ2V0IChi ZmQgKmFiZmQpCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTYxMiw3ICs2MTEsNyBAQCBJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiAgLyogUmV0dXJuIGlmIEZJ TEVOQU1FIGhhcyBOVF9HTlVfQlVJTERfSUQgbWF0Y2hpbmcgdGhlIENIRUNLIHZhbHVlLiAgKi8K ICAKICBzdGF0aWMgaW50Ci1AQCAtNjA3LDcgKzEwMDEsNyBAQCBidWlsZF9pZF92ZXJpZnkgKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtODU3LDcgKzEyNTIsNyBAQCBidWlsZF9pZF92ZXJp ZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCiAgICBpZiAoYWJmZCA9PSBOVUxMKQogICAgICBy ZXR1cm4gMDsKICAKQEAgLTYyMSw3ICs2MjAsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvZWxmcmVhZC5jCiAgCiAgICBpZiAoZm91bmQgPT0gTlVMTCkKICAgICAgd2FybmluZyAo XygiRmlsZSBcIiVzXCIgaGFzIG5vIGJ1aWxkLWlkLCBmaWxlIHNraXBwZWQiKSwgZmlsZW5hbWUp OwotQEAgLTYyNiwxNCArMTAyMCwxNiBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBzCitAQCAtODc0LDE0ICsxMjY5LDE2IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3Qg Y2hhciAqZmlsZW5hbWUsIHMKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNjQyLDcgKzY0 MSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKICAKICAgIC8q IEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNUT1JZ IGJlaW5nICIiIHdpbGwKICAgICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4gICov Ci1AQCAtNjY0LDcgKzEwNjAsMTAgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVj dCBidWlsZAorQEAgLTkxMiw3ICsxMzA5LDEwIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1l IChzdHJ1Y3QgYnVpbGQKICAJKnMrKyA9ICcvJzsKICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkK ICAJcyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7CkBAIC02NTQs NyArNjUzLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogIAog ICAgICAgIC8qIGxyZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZvciB0aGUgdXN1YWxseSBu b24tZXhpc3RlbnQgZmlsZXMuICAqLwogICAgICAgIGlmIChhY2Nlc3MgKGxpbmssIEZfT0spID09 IDApCi1AQCAtNjc3LDE3ICsxMDc2LDE4OCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAo c3RydWN0IGJ1aWxkCitAQCAtOTI1LDI2ICsxMzI1LDIwMSBAQCBidWlsZF9pZF90b19kZWJ1Z19m aWxlbmFtZSAoc3RydWN0IGJ1aWxkCiAgCX0KICAKICAgICAgICBpZiAocmV0dmFsICE9IE5VTEwp CkBAIC02OTksOSArNjk4LDkgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJl YWQuYwogKyAgeGZyZWUgKGxpbmspOwogKyAgeGZyZWUgKGxpbmtfYWxsKTsKICsKLSAgIHJldHVy biByZXR2YWw7Ci0gfQotIAorKyAgcmV0dXJuIHJldHZhbDsKKyt9CisrCiArLyogVGhpcyBNSVNT SU5HX0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBpcyB1c2VkIG9ubHkgZm9yIHRoZSBkdXBsaWNpdGUg bWVzc2FnZXMKICsgICAgIFRyeSB0byBpbnN0YWxsIHRoZSBoYXNoIGZpbGUgLi4uCiArICAgYXZv aWRhbmNlLiAgKi8KQEAgLTcyNCw5ICs3MjMsOSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvZWxmcmVhZC5jCiArCiArICByZXR2YWwgPSBvYnN0YWNrX2FsbG9jICgmbWlzc2luZ19m aWxlcGFpcl9vYnN0YWNrLCBzaXplKTsKICsgIG1lbXNldCAocmV0dmFsLCAwLCBzaXplKTsKLSsg IHJldHVybiByZXR2YWw7Ci0rfQotKworICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCiArc3RhdGlj IGhhc2h2YWxfdAogK21pc3NpbmdfZmlsZXBhaXJfaGFzaF9mdW5jIChjb25zdCBzdHJ1Y3QgbWlz c2luZ19maWxlcGFpciAqZWxlbSkKICt7CkBAIC04NDMsMTAgKzg0Miw2IEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKICtmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVf YnlfYnVpbGRpZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkJCSAgICAgY2hhciAqKmJ1 aWxkX2lkX2ZpbGVuYW1lX3JldHVybikKICB7Ci0gICBhc2VjdGlvbiAqc2VjdDsKLSAgIGNoYXIg KmJhc2VuYW1lLCAqbmFtZV9jb3B5LCAqZGVidWdkaXI7Ci1AQCAtNjk5LDEyICsxMjY5LDE2IEBA IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKLSAgIGludCBpOwogICAg c3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZDsKICAKIC0gIGJ1aWxkX2lkID0gYnVpbGRfaWRfYmZk X2dldCAob2JqZmlsZS0+b2JmZCk7CkBAIC04NjQsNyArODU5LDcgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwogICAgICAgIHhmcmVlIChidWlsZF9pZCk7CiAgICAg ICAgLyogUHJldmVudCBsb29waW5nIG9uIGEgc3RyaXBwZWQgLmRlYnVnIGZpbGUuICAqLwogICAg ICAgIGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwgJiYgc3RyY21wIChidWlsZF9pZF9uYW1lLCBv YmpmaWxlLT5uYW1lKSA9PSAwKQotQEAgLTcxNCw3ICsxMjg4LDcgQEAgZmluZF9zZXBhcmF0ZV9k ZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgorQEAgLTk1NCw3ICsxNTI5LDcgQEAgZmluZF9zZXBh cmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgogIAkgIHhmcmVlIChidWlsZF9pZF9uYW1l KTsKICAJfQogICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCkKQEAgLTg3Myw5 ICs4NjgsOSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiAgICAg IH0KICAgIHJldHVybiBOVUxMOwogIH0KLUBAIC04ODcsOSArMTQ2MSwxMCBAQCBlbGZfc3ltZmls ZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTEzMSw5ICsxNzA2LDEwIEBAIGVs Zl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAgICAgIGAuZ251X2RlYnVn bGluaycgbWF5IG5vIGxvbmdlciBiZSBwcmVzZW50IHdpdGggYC5ub3RlLmdudS5idWlsZC1pZCcu ICAqLwotICAgZWxzZQorICAgaWYgKCFvYmpmaWxlX2hhc19wYXJ0aWFsX3N5bWJvbHMgKG9iamZp bGUpKQogICAgICB7CiAtICAgICAgY2hhciAqZGVidWdmaWxlOwogKyAgICAgIGNoYXIgKmRlYnVn ZmlsZSwgKmJ1aWxkX2lkX2ZpbGVuYW1lOwpAQCAtODg2LDcgKzg4MSw3IEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKICAKICAgICAgICBpZiAoZGVidWdmaWxlID09 IE5VTEwpCiAgCWRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9kZWJ1Z2xp bmsgKG9iamZpbGUpOwotQEAgLTkwMCw2ICsxNDc1LDEyIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWwKK0BAIC0xMTQ1LDYgKzE3MjEsMTIgQEAgZWxmX3N5bWZpbGVf cmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAogIAkgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0 ZSAoYWJmZCwgc3ltZmlsZV9mbGFncywgb2JqZmlsZSk7CiAgCSAgeGZyZWUgKGRlYnVnZmlsZSk7 CiAgCX0KQEAgLTg5OSw3ICs4OTQsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv ZWxmcmVhZC5jCiAgICAgIH0KICB9CiAgCi1AQCAtMTA3Miw0ICsxNjUzLDE2IEBAIHZvaWQKK0BA IC0xMzA0LDQgKzE4ODYsMTYgQEAgdm9pZAogIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCiAg ewogICAgYWRkX3N5bXRhYl9mbnMgKCZlbGZfc3ltX2Zucyk7CkBAIC05MTYsMTMgKzkxMSwxMyBA QCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiArCiArICBvYnNlcnZl cl9hdHRhY2hfZXhlY3V0YWJsZV9jaGFuZ2VkIChkZWJ1Z19wcmludF9leGVjdXRhYmxlX2NoYW5n ZWQpOwogIH0KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1maWxlLmgKK0luZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bWZpbGUuaAkyMDEw LTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAotQEAgLTM5Miw2ICszOTIsMTMgQEAgZXh0 ZXJuIGludCBzeW1maWxlX21hcF9vZmZzZXRzX3RvX3NlZ21lbgotIHN0cnVjdCBzeW1maWxlX3Nl Z21lbnRfZGF0YSAqZ2V0X3N5bWZpbGVfc2VnbWVudF9kYXRhIChiZmQgKmFiZmQpOwotIHZvaWQg ZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHN5bWZpbGVfc2VnbWVudF9kYXRhICpk YXRhKTsKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEwLTA1 LTA4IDA2OjU4OjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3N5bWZpbGUuaAkyMDEwLTA3LTEyIDExOjA2OjE4LjAwMDAwMDAwMCArMDIwMAorQEAgLTU2Miw2 ICs1NjIsMTMgQEAgdm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRhIChzdHJ1Y3QgcworIAor IGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqaW5jcmVtZW50X3JlYWRpbmdfc3ltdGFiICh2b2lkKTsK ICAKICsvKiBidWlsZC1pZCBzdXBwb3J0LiAgKi8KICtzdHJ1Y3QgYnVpbGRfaWQ7CkBAIC05MzQs MTEgKzkyOSwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltZmlsZS5oCiAg LyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKICBleHRlcm4gaW50IGR3YXJmMl9oYXNfaW5mbyAo c3RydWN0IG9iamZpbGUgKik7Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMC0wMS0xNSAwMzoyMjoxMy4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAx MC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjQ4LDYgKzEyNDgsMTYgQEAg cHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMDctMTIgMTA6MDA6NTYuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw CTIwMTAtMDctMTIgMTE6MDU6NTcuMDAwMDAwMDAwICswMjAwCitAQCAtMTM1Myw2ICsxMzUzLDE2 IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0 IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtOTU1LDEwICs5NTAsMTAgQEAg SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogICAg ICByZXR1cm4gMDsKICB9CiAgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rl c3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIw MTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wMS0xMiAy Mjo0MDoyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMDEtMTUgMTE6MTI6MzMuMDAwMDAwMDAwICsw MTAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1 cHBvcnQuZXhwCTIwMTAtMDMtMTUgMDQ6NDM6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTA3LTEy IDExOjA1OjU3LjAwMDAwMDAwMCArMDIwMAogQEAgLTIyMSw2ICsyMjEsMTYgQEAgcHJvYyBkZWZh dWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9CkBAIC05NzYsMTMg Kzk3MSwxMyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2xpYi9t aS1zdXBwb3J0LmV4cAogIAogICAgICBkZXRlY3RfYXN5bmMKICAKLUluZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi9vYmpmaWxlcy5oCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv b2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIv b2JqZmlsZXMuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL29iamZpbGVzLmgJMjAxMC0wMS0xNSAxMToxNDo0Mi4wMDAwMDAw MDAgKzAxMDAKLUBAIC00NDAsNiArNDQwLDEwIEBAIHN0cnVjdCBvYmpmaWxlCistLS0gZ2RiLTcu MS45MC4yMDEwMDcxMS5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTAtMDQtMTQgMTk6MjY6MTEuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvb2JqZmlsZXMuaAkyMDEw LTA3LTEyIDExOjA3OjA4LjAwMDAwMDAwMCArMDIwMAorQEAgLTQyNiw2ICs0MjYsMTAgQEAgc3Ry dWN0IG9iamZpbGUKICAKLSAjZGVmaW5lIE9CSkZfTUFJTiAoMSA8PCA3KQorICNkZWZpbmUgT0JK Rl9VU0VSTE9BREVECSgxIDw8IDMpCS8qIFVzZXIgbG9hZGVkICovCiAgCiArLyogVGhpcyBmaWxl IHdhcyBsb2FkZWQgYWNjb3JkaW5nIHRvIHRoZSBCVUlMRF9JRF9DT1JFX0xPQURTIHJ1bGVzLiAg Ki8KICsKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ6MjI1NzgzLXByZWxpbmstcGF0aC5wYXRjaCBi L2dkYi02LjYtYnoyMjU3ODMtcHJlbGluay1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAyMmM4ODI5Li4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnoyMjU3ODMtcHJlbGlu ay1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotaHR0cHM6Ly9idWd6 aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjU3ODMKLQotLS0tIGdk Yi02LjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmV4cC5vcmlnCTIwMDgtMDctMTIg MDg6NTY6NDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ByZWxpbmsuZXhwCTIwMDgtMDctMTIgMDg6NTk6NTkuMDAwMDAwMDAwICswMjAwCi1AQCAt NTUsNyArNTUsNyBAQCBpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8kCi0g IyBzaW5nbGUgbmV3IHVucHJlbGlua2VkIGxpYnJhcnkgYWRkcmVzcyB3aXRob3V0IHdhc3Rpbmcg dGhlIGZpcnN0IG9uZS90d28KLSAjIG1lbW9yeSBhcmVhcy4gIFdlIGRvIG5vdCBjYXJlIG9mIHRo ZSBlZmZpY2llbmN5IG9mIGxvYWRpbmcgc3VjaCByZXN1bHRpbmcKLSAjIGV4ZWMtc2hpZWxkIHVu ZnJpZW5kbHkgcHJlbGlua2VkIGxpYnJhcnkuCi0taWYge1tjYXRjaCAic3lzdGVtIFwicHJlbGlu ayAtcU5SIC0tbm8tZXhlYy1zaGllbGQgJHtsaWJmaWxlfVwiIl0gIT0gMH0gewotK2lmIHtbY2F0 Y2ggInN5c3RlbSBcIi91c3Ivc2Jpbi9wcmVsaW5rIC1xTlIgLS1uby1leGVjLXNoaWVsZCAke2xp YmZpbGV9XCIiXSAhPSAwfSB7Ci0gICAgICMgTWF5YmUgd2UgZG9uJ3QgaGF2ZSBwcmVsaW5rLgot ICAgICByZXR1cm4gLTEKLSB9Ci1AQCAtOTYsMTEgKzk2LDExIEBAIGlmIHsgJGZvdW5kID09IDAg IH0gewotICAgICByZXR1cm4gMAotIH0KLSAKLS1pZiB7W2NhdGNoICJzeXN0ZW0gXCJwcmVsaW5r IC11TiAke2xpYmZpbGV9XCIiXSAhPSAwfSB7Ci0raWYge1tjYXRjaCAic3lzdGVtIFwiL3Vzci9z YmluL3ByZWxpbmsgLXVOICR7bGliZmlsZX1cIiJdICE9IDB9IHsKLSAgICAgdW50ZXN0ZWQgIiR7 dGVzdGZpbGV9LnNvIHdhcyBub3QgcHJlbGlua2VkLCBtYXliZSBzeXN0ZW0gbGlicmFyaWVzIGFy ZSBub3QgcHJlbGlua2VkPyIKLSAgICAgcmV0dXJuIDAKLSB9Ci0tY2F0Y2ggInN5c3RlbSBcInBy ZWxpbmsgLXFOUiAtLW5vLWV4ZWMtc2hpZWxkICR7bGliZmlsZX1cIiIKLStjYXRjaCAic3lzdGVt IFwiL3Vzci9zYmluL3ByZWxpbmsgLXFOUiAtLW5vLWV4ZWMtc2hpZWxkICR7bGliZmlsZX1cIiIK LSAKLSAjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIKLSAKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ6 MjI5NTE3LWdjb3JlLXdpdGhvdXQtdGVybWluYWwucGF0Y2ggYi9nZGItNi42LWJ6MjI5NTE3LWdj b3JlLXdpdGhvdXQtdGVybWluYWwucGF0Y2gKaW5kZXggZGUzNGVkNS4uNjg2YmI5ZCAxMDA2NDQK LS0tIGEvZ2RiLTYuNi1iejIyOTUxNy1nY29yZS13aXRob3V0LXRlcm1pbmFsLnBhdGNoCisrKyBi L2dkYi02LjYtYnoyMjk1MTctZ2NvcmUtd2l0aG91dC10ZXJtaW5hbC5wYXRjaApAQCAtNjgsNyAr NjgsNyBAQAogK30KIC0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAogKysr IC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZWJnLmV4cAkyNSBGZWIgMjAwNyAxMjoyMToy MCAtMDAwMAotQEAgLTAsMCArMSwxMjAgQEAKK0BAIC0wLDAgKzEsMTEzIEBACiArIyBDb3B5cmln aHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CkBAIC05MywxMyArOTMsNiBAQAogKyMgSXQgYWxzbyB0ZXN0cyBhIHJlZ3Jlc3Npb24gd2l0aCBg Z2RiX2djb3JlLnNoJyBiZWluZyBydW4gd2l0aG91dCBpdHMKICsjIGFjY2Vzc2libGUgdGVybWlu YWwuCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rCXN0cmFjZSAkdHJhY2VsZXZlbAotK30K LSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiAraWYgIVtpbmZvIGV4aXN0cyBH Q09SRV0gewogKyAgICBzZXQgR0NPUkUgIiR7c3JjZGlyfS8uLi9nZGJfZ2NvcmUuc2giCiArfQoK ZGlmZiAtLWdpdCBhL2dkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaCBiL2dk Yi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaAppbmRleCAwNzVlMTE4Li42NGJj Njg2IDEwMDY0NAotLS0gYS9nZGItNi42LWJ6MjM1MTk3LWZvcmstZGV0YWNoLWluZm8ucGF0Y2gK KysrIGIvZ2RiLTYuNi1iejIzNTE5Ny1mb3JrLWRldGFjaC1pbmZvLnBhdGNoCkBAIC04Miw3ICs4 Miw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Zm9yay1kZXRhY2guZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCiArKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmV4cAkyMDEwLTAxLTE1IDAzOjIyOjUyLjAwMDAwMDAw MCArMDEwMAotQEAgLTAsMCArMSw0MyBAQAorQEAgLTAsMCArMSwzNiBAQAogKyMgQ29weXJpZ2h0 IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpA QCAtOTksMTMgKzk5LDYgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5leHAKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiArIyBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgog KwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0r Ci0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogK3NldCB0ZXN0ZmlsZSBmb3JrLWRl dGFjaAogK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKICtzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1nY29yZTMyLXRlc3Qu cGF0Y2ggYi9nZGItNi42LWdjb3JlMzItdGVzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggOGU0ZjQ4Zi4uMDAwMDAwMAotLS0gYS9nZGItNi42LWdjb3JlMzItdGVzdC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi1UZXN0IEdDT1JFIG9uIDMyYml0IGlu ZmVyaW9ycyBvbiA2NGJpdCBwbGF0Zm9ybXMuCi0KLVVOU1VQUE9SVEVEIHJlc3VsdHMgYXJlIHZh bGlkIGZvciBgLW02NCcgb24gMzJiaXQgdGFyZ2V0cy4KLQotCi1JbmRleDogZ2RiLTcuMC41MC4y MDEwMDIwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLmV4cAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjAuNTAuMjAxMDAyMDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlLmV4 cAkyMDEwLTAyLTAxIDE4OjE1OjM2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAx MDAyMDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS5leHAJMjAxMC0wMi0wMyAwNjozOTo1 NC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yOCw5ICsyOCwxNCBAQCBzZXQgdGVzdGZpbGUgImdjb3Jl IgotIHNldCBzcmNmaWxlICAke3Rlc3RmaWxlfS5jCi0gc2V0IGJpbmZpbGUgICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSAKLS1pZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0g IiIgfSB7Ci0tICAgICB1bnRlc3RlZCBnY29yZS5leHAKLS0gICAgIHJldHVybiAtMQotKyMgYC1z dGF0aWMtbGliZ2NjJyB0byBhdm9pZCBkZXBlbmRlbmN5IG9uIGBsaWJnY2Mue2kzODYscHBjfScu Ci0rZm9yZWFjaCBhZGRpdGlvbmFsX2ZsYWdzIHt7fSB7LW0zMiAtc3RhdGljLWxpYmdjY30gey1t NjQgLXN0YXRpYy1saWJnY2N9fSB7Ci0rCi0rc2V0IHByZWZpeCAiYXJjaHskYWRkaXRpb25hbF9m bGFnc306IgotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2Zs YWdzPSRhZGRpdGlvbmFsX2ZsYWdzXV0gIT0gIiIgfSB7Ci0rICAgICB1bnN1cHBvcnRlZCAiJHtw cmVmaXh9IGdjb3JlLmV4cCIKLSsgICAgIGNvbnRpbnVlCi0gfQotIAotICMgU3RhcnQgd2l0aCBh IGZyZXNoIGdkYi4KLUBAIC00NSwyMyArNTAsMjMgQEAgc2VuZF9nZGIgImhlbHAgZ2NvcmVcbiIK LSBnZGJfZXhwZWN0IHsKLSAgICAgLXJlICJVbmRlZmluZWQgY29tbWFuZDogLmdjb3JlLiokZ2Ri X3Byb21wdCAkIiB7Ci0gCSMgZ2NvcmUgY29tbWFuZCBub3Qgc3VwcG9ydGVkIC0tIG5vdGhpbmcg dG8gdGVzdCBoZXJlLgotLQl1bnN1cHBvcnRlZCAiZ2RiIGRvZXMgbm90IHN1cHBvcnQgZ2NvcmUg b24gdGhpcyB0YXJnZXQiCi0tCXJldHVybiAtMTsKLSsJdW5zdXBwb3J0ZWQgIiR7cHJlZml4fSBn ZGIgZG9lcyBub3Qgc3VwcG9ydCBnY29yZSBvbiB0aGlzIHRhcmdldCIKLSsJY29udGludWUKLSAg ICAgfQotICAgICAtcmUgIlNhdmUgYSBjb3JlIGZpbGUgLiokZ2RiX3Byb21wdCAkIiB7Ci0tCXBh c3MgImhlbHAgZ2NvcmUiCi0rCXBhc3MgIiR7cHJlZml4fSBoZWxwIGdjb3JlIgotICAgICB9Ci0g ICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0tCWZhaWwgImhlbHAgZ2NvcmUiCi0rCWZhaWwg IiR7cHJlZml4fSBoZWxwIGdjb3JlIgotICAgICB9Ci0gICAgIHRpbWVvdXQgewotLQlmYWlsICJo ZWxwIGdjb3JlICh0aW1lb3V0KSIKLSsJZmFpbCAiJHtwcmVmaXh9IGhlbHAgZ2NvcmUgKHRpbWVv dXQpIgotICAgICB9Ci0gfQotIAotIGlmIHsgISBbIHJ1bnRvX21haW4gXSB9IHRoZW4gewotLSAg ICB1bnRlc3RlZCBnY29yZS5leHAKLS0gICAgcmV0dXJuIC0xCi0rICAgIHVudGVzdGVkICIke3By ZWZpeH0gZ2NvcmUuZXhwIgotKyAgICBjb250aW51ZQotIH0KLSAKLSBwcm9jIGNhcHR1cmVfY29t bWFuZF9vdXRwdXQgeyBjb21tYW5kIHByZWZpeCB9IHsKLUBAIC02OSw3ICs3NCw3IEBAIHByb2Mg Y2FwdHVyZV9jb21tYW5kX291dHB1dCB7IGNvbW1hbmQgcHIKLSAgICAgZ2xvYmFsIGV4cGVjdF9v dXQKLSAKLSAgICAgc2V0IG91dHB1dF9zdHJpbmcgIiIKLS0gICAgZ2RiX3Rlc3RfbXVsdGlwbGUg IiRjb21tYW5kIiAiY2FwdHVyZV9jb21tYW5kX291dHB1dCBmb3IgJGNvbW1hbmQiIHsKLSsgICAg Z2RiX3Rlc3RfbXVsdGlwbGUgIiRjb21tYW5kIiAiJHtwcmVmaXh9IGNhcHR1cmVfY29tbWFuZF9v dXRwdXQgZm9yICRjb21tYW5kIiB7Ci0gCS1yZSAiJHtjb21tYW5kfVxbXHJcblxdKyR7cHJlZml4 fSguKilcW1xyXG5cXSskZ2RiX3Byb21wdCAkIiB7Ci0gCSAgICBzZXQgb3V0cHV0X3N0cmluZyAk ZXhwZWN0X291dCgxLHN0cmluZykKLSAJfQotQEAgLTEwMywyMiArMTA4LDIyIEBAIHNldCBlc2Nh cGVkZmlsZW5hbWUgW3N0cmluZ190b19yZWdleHAgJHsKLSAKLSBzZXQgY29yZV9zdXBwb3J0ZWQg MAotIGdkYl90ZXN0X211bHRpcGxlICJnY29yZSAke29iamRpcn0vJHtzdWJkaXJ9L2djb3JlLnRl c3QiIFwKLS0JInNhdmUgYSBjb3JlZmlsZSIgXAotKwkiJHtwcmVmaXh9IHNhdmUgYSBjb3JlZmls ZSIgXAotIHsKLSAgIC1yZSAiU2F2ZWQgY29yZWZpbGUgJHtlc2NhcGVkZmlsZW5hbWV9XFtcclxu XF0rJGdkYl9wcm9tcHQgJCIgewotLSAgICBwYXNzICJzYXZlIGEgY29yZWZpbGUiCi0rICAgIHBh c3MgIiR7cHJlZml4fSBzYXZlIGEgY29yZWZpbGUiCi0gICAgIGdsb2JhbCBjb3JlX3N1cHBvcnRl ZAotICAgICBzZXQgY29yZV9zdXBwb3J0ZWQgMQotICAgfQotICAgLXJlICJDYW4ndCBjcmVhdGUg YSBjb3JlZmlsZVxbXHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKLS0gICAgdW5zdXBwb3J0ZWQgInNh dmUgYSBjb3JlZmlsZSIKLSsgICAgdW5zdXBwb3J0ZWQgIiR7cHJlZml4fSBzYXZlIGEgY29yZWZp bGUiCi0gICAgIGdsb2JhbCBjb3JlX3N1cHBvcnRlZAotICAgICBzZXQgY29yZV9zdXBwb3J0ZWQg MAotICAgfQotIH0KLSAKLSBpZiB7ISRjb3JlX3N1cHBvcnRlZH0gewotLSAgcmV0dXJuIC0xCi0r ICAgIGNvbnRpbnVlCi0gfQotIAotICMgTm93IHJlc3RhcnQgZ2RiIGFuZCBsb2FkIHRoZSBjb3Jl ZmlsZS4KLUBAIC0xMzAsMzEgKzEzNSwzMSBAQCBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gc2VuZF9n ZGIgImNvcmUgJHtvYmpkaXJ9LyR7c3ViZGlyfS9nY29yZS50ZXN0XG4iCi0gZ2RiX2V4cGVjdCB7 Ci0gICAgIC1yZSAiLiogaXMgbm90IGEgY29yZSBkdW1wOi4qJGdkYl9wcm9tcHQgJCIgewotLQlm YWlsICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSAoYmFkIGZpbGUgZm9ybWF0KSIKLSsJZmFp bCAiJHtwcmVmaXh9IHJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChiYWQgZmlsZSBmb3JtYXQp IgotIAkjIE5vIHVzZSBwcm9jZWVkaW5nIGZyb20gaGVyZS4KLS0JcmV0dXJuOwkKLSsJY29udGlu dWUKLSAgICAgfQotICAgICAtcmUgIi4qOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LiokZ2Ri X3Byb21wdCAkIiB7Ci0tCWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIChmaWxlIG5v dCBmb3VuZCkiCi0rCWZhaWwgIiR7cHJlZml4fSByZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSAo ZmlsZSBub3QgZm91bmQpIgotIAkjIE5vIHVzZSBwcm9jZWVkaW5nIGZyb20gaGVyZS4KLS0JcmV0 dXJuOwkKLSsJY29udGludWUKLSAgICAgfQotICAgICAtcmUgIi4qQ291bGRuJ3QgZmluZCAuKiBy ZWdpc3RlcnMgaW4gY29yZSBmaWxlLiokZ2RiX3Byb21wdCAkIiB7Ci0tCWZhaWwgInJlLWxvYWQg Z2VuZXJhdGVkIGNvcmVmaWxlIChpbmNvbXBsZXRlIG5vdGUgc2VjdGlvbikiCi0rCWZhaWwgIiR7 cHJlZml4fSByZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSAoaW5jb21wbGV0ZSBub3RlIHNlY3Rp b24pIgotICAgICB9Ci0gICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qJGdkYl9wcm9t cHQgJCIgewotLQlwYXNzICJyZS1sb2FkIGdlbmVyYXRlZCBjb3JlZmlsZSIKLSsJcGFzcyAiJHtw cmVmaXh9IHJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIgotICAgICB9Ci0gICAgIC1yZSAiLiok Z2RiX3Byb21wdCAkIiB7Ci0tCWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlIgotKwlm YWlsICIke3ByZWZpeH0gcmUtbG9hZCBnZW5lcmF0ZWQgY29yZWZpbGUiCi0gICAgIH0KLSAgICAg dGltZW91dCB7Ci0tCWZhaWwgInJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlICh0aW1lb3V0KSIK LSsJZmFpbCAiJHtwcmVmaXh9IHJlLWxvYWQgZ2VuZXJhdGVkIGNvcmVmaWxlICh0aW1lb3V0KSIK LSAgICAgfQotIH0KLSAKLSBzZW5kX2dkYiAid2hlcmVcbiIKLS1nZGJfZXhwZWN0X2xpc3QgIndo ZXJlIGluIGNvcmVmaWxlIiAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rZ2RiX2V4cGVjdF9saXN0ICIk e3ByZWZpeH0gd2hlcmUgaW4gY29yZWZpbGUiICIuKiRnZGJfcHJvbXB0ICQiIHsKLSAgICAgIi4q XFtcclxuXF0rIzAgLiogdGVybWluYWxfZnVuYyBcXChcXCkgYXQgIgotICAgICAiLipcW1xyXG5c XSsjMSAuKiBhcnJheV9mdW5jIFxcKFxcKSBhdCAiCi0gICAgICIuKlxbXHJcblxdKyMyIC4qIGZh Y3RvcmlhbF9mdW5jIFxcKHZhbHVlPTFcXCkgYXQgIgotQEAgLTE2OCw2MSArMTczLDY0IEBAIGdk Yl9leHBlY3RfbGlzdCAid2hlcmUgaW4gY29yZWZpbGUiICIuKiQKLSAKLSBzZXQgcG9zdF9jb3Jl ZmlsZV9yZWdzIFtjYXB0dXJlX2NvbW1hbmRfb3V0cHV0ICJpbmZvIHJlZ2lzdGVycyIgIiJdCi0g aWYgIVtzdHJpbmcgY29tcGFyZSAkcHJlX2NvcmVmaWxlX3JlZ3MgJHBvc3RfY29yZWZpbGVfcmVn c10gdGhlbiB7Ci0tICAgIHBhc3MgImNvcmVmaWxlIHJlc3RvcmVkIGdlbmVyYWwgcmVnaXN0ZXJz IgotKyAgICBwYXNzICIke3ByZWZpeH0gY29yZWZpbGUgcmVzdG9yZWQgZ2VuZXJhbCByZWdpc3Rl cnMiCi0gfSBlbHNlIHsKLS0gICAgZmFpbCAiY29yZWZpbGUgcmVzdG9yZWQgZ2VuZXJhbCByZWdp c3RlcnMiCi0rICAgIGZhaWwgIiR7cHJlZml4fSBjb3JlZmlsZSByZXN0b3JlZCBnZW5lcmFsIHJl Z2lzdGVycyIKLSB9Ci0gCi0gc2V0IHBvc3RfY29yZWZpbGVfYWxscmVncyBbY2FwdHVyZV9jb21t YW5kX291dHB1dCAiaW5mbyBhbGwtcmVnIiAiIl0KLSBpZiAhW3N0cmluZyBjb21wYXJlICRwcmVf Y29yZWZpbGVfYWxscmVncyAkcG9zdF9jb3JlZmlsZV9hbGxyZWdzXSB0aGVuIHsKLS0gICAgcGFz cyAiY29yZWZpbGUgcmVzdG9yZWQgYWxsIHJlZ2lzdGVycyIKLSsgICAgcGFzcyAiJHtwcmVmaXh9 IGNvcmVmaWxlIHJlc3RvcmVkIGFsbCByZWdpc3RlcnMiCi0gfSBlbHNlIHsKLS0gICAgZmFpbCAi Y29yZWZpbGUgcmVzdG9yZWQgYWxsIHJlZ2lzdGVycyIKLSsgICAgZmFpbCAiJHtwcmVmaXh9IGNv cmVmaWxlIHJlc3RvcmVkIGFsbCByZWdpc3RlcnMiCi0gfQotIAotIHNldCBwb3N0X2NvcmVmaWxl X2V4dGVybl9hcnJheSBcCi0gCVtjYXB0dXJlX2NvbW1hbmRfb3V0cHV0ICJwcmludCBleHRlcm5f YXJyYXkiICIkcHJpbnRfcHJlZml4Il0KLSBpZiAhW3N0cmluZyBjb21wYXJlICRwcmVfY29yZWZp bGVfZXh0ZXJuX2FycmF5ICRwb3N0X2NvcmVmaWxlX2V4dGVybl9hcnJheV0gIHsKLS0gICAgcGFz cyAiY29yZWZpbGUgcmVzdG9yZWQgZXh0ZXJuIGFycmF5IgotKyAgICBwYXNzICIke3ByZWZpeH0g Y29yZWZpbGUgcmVzdG9yZWQgZXh0ZXJuIGFycmF5IgotIH0gZWxzZSB7Ci0tICAgIGZhaWwgImNv cmVmaWxlIHJlc3RvcmVkIGV4dGVybiBhcnJheSIKLSsgICAgZmFpbCAiJHtwcmVmaXh9IGNvcmVm aWxlIHJlc3RvcmVkIGV4dGVybiBhcnJheSIKLSB9Ci0gCi0gc2V0IHBvc3RfY29yZWZpbGVfc3Rh dGljX2FycmF5IFwKLSAJW2NhcHR1cmVfY29tbWFuZF9vdXRwdXQgInByaW50IHN0YXRpY19hcnJh eSIgIiRwcmludF9wcmVmaXgiXQotIGlmICFbc3RyaW5nIGNvbXBhcmUgJHByZV9jb3JlZmlsZV9z dGF0aWNfYXJyYXkgJHBvc3RfY29yZWZpbGVfc3RhdGljX2FycmF5XSAgewotLSAgICBwYXNzICJj b3JlZmlsZSByZXN0b3JlZCBzdGF0aWMgYXJyYXkiCi0rICAgIHBhc3MgIiR7cHJlZml4fSBjb3Jl ZmlsZSByZXN0b3JlZCBzdGF0aWMgYXJyYXkiCi0gfSBlbHNlIHsKLS0gICAgZmFpbCAiY29yZWZp bGUgcmVzdG9yZWQgc3RhdGljIGFycmF5IgotKyAgICBmYWlsICIke3ByZWZpeH0gY29yZWZpbGUg cmVzdG9yZWQgc3RhdGljIGFycmF5IgotIH0KLSAKLSBzZXQgcG9zdF9jb3JlZmlsZV91bmluaXRf YXJyYXkgXAotIAlbY2FwdHVyZV9jb21tYW5kX291dHB1dCAicHJpbnQgdW5faW5pdGlhbGl6ZWRf YXJyYXkiICIkcHJpbnRfcHJlZml4Il0KLSBpZiAhW3N0cmluZyBjb21wYXJlICRwcmVfY29yZWZp bGVfdW5pbml0X2FycmF5ICRwb3N0X2NvcmVmaWxlX3VuaW5pdF9hcnJheV0gIHsKLS0gICAgcGFz cyAiY29yZWZpbGUgcmVzdG9yZWQgdW4taW5pdGlhbGl6ZWQgYXJyYXkiCi0rICAgIHBhc3MgIiR7 cHJlZml4fSBjb3JlZmlsZSByZXN0b3JlZCB1bi1pbml0aWFsaXplZCBhcnJheSIKLSB9IGVsc2Ug ewotLSAgICBmYWlsICJjb3JlZmlsZSByZXN0b3JlZCB1bi1pbml0aWFsaXplZCBhcnJheSIKLSsg ICAgZmFpbCAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIHVuLWluaXRpYWxpemVkIGFycmF5 IgotIH0KLSAKLSBzZXQgcG9zdF9jb3JlZmlsZV9oZWFwX3N0cmluZyBcCi0gCVtjYXB0dXJlX2Nv bW1hbmRfb3V0cHV0ICJwcmludCBoZWFwX3N0cmluZyIgIiRwcmludF9wcmVmaXgiXQotIGlmICFb c3RyaW5nIGNvbXBhcmUgJHByZV9jb3JlZmlsZV9oZWFwX3N0cmluZyAkcG9zdF9jb3JlZmlsZV9o ZWFwX3N0cmluZ10gIHsKLS0gICAgcGFzcyAiY29yZWZpbGUgcmVzdG9yZWQgaGVhcCBhcnJheSIK LSsgICAgcGFzcyAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGhlYXAgYXJyYXkiCi0gfSBl bHNlIHsKLS0gICAgZmFpbCAiY29yZWZpbGUgcmVzdG9yZWQgaGVhcCBhcnJheSIKLSsgICAgZmFp bCAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGhlYXAgYXJyYXkiCi0gfQotIAotIHNldCBw b3N0X2NvcmVmaWxlX2xvY2FsX2FycmF5IFwKLSAJW2NhcHR1cmVfY29tbWFuZF9vdXRwdXQgInBy aW50IGFycmF5X2Z1bmM6OmxvY2FsX2FycmF5IiAiJHByaW50X3ByZWZpeCJdCi0gaWYgIVtzdHJp bmcgY29tcGFyZSAkcHJlX2NvcmVmaWxlX2xvY2FsX2FycmF5ICRwb3N0X2NvcmVmaWxlX2xvY2Fs X2FycmF5XSAgewotLSAgICBwYXNzICJjb3JlZmlsZSByZXN0b3JlZCBzdGFjayBhcnJheSIKLSsg ICAgcGFzcyAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIHN0YWNrIGFycmF5IgotIH0gZWxz ZSB7Ci0tICAgIGZhaWwgImNvcmVmaWxlIHJlc3RvcmVkIHN0YWNrIGFycmF5IgotKyAgICBmYWls ICIke3ByZWZpeH0gY29yZWZpbGUgcmVzdG9yZWQgc3RhY2sgYXJyYXkiCi0gfQotIAotIHNldCBw b3N0X2NvcmVmaWxlX2JhY2t0cmFjZSBbY2FwdHVyZV9jb21tYW5kX291dHB1dCAiYmFja3RyYWNl IiAiIl0KLSBpZiAhW3N0cmluZyBjb21wYXJlICRwcmVfY29yZWZpbGVfYmFja3RyYWNlICRwb3N0 X2NvcmVmaWxlX2JhY2t0cmFjZV0gIHsKLS0gICAgcGFzcyAiY29yZWZpbGUgcmVzdG9yZWQgYmFj a3RyYWNlIgotKyAgICBwYXNzICIke3ByZWZpeH0gY29yZWZpbGUgcmVzdG9yZWQgYmFja3RyYWNl IgotIH0gZWxzZSB7Ci0tICAgIGZhaWwgImNvcmVmaWxlIHJlc3RvcmVkIGJhY2t0cmFjZSIKLSsg ICAgZmFpbCAiJHtwcmVmaXh9IGNvcmVmaWxlIHJlc3RvcmVkIGJhY2t0cmFjZSIKLSt9Ci0rCi0r IyAkYWRkaXRpb25hbF9mbGFnczoKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1zY2hlZHVsZXJf bG9ja2luZy1zdGVwLWlzLWRlZmF1bHQucGF0Y2ggYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5n LXN0ZXAtaXMtZGVmYXVsdC5wYXRjaAppbmRleCA0NGUwMzE0Li40MjgxMDJjIDEwMDY0NAotLS0g YS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaAorKysgYi9n ZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaApAQCAtMSw4ICsx LDggQEAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9pbmZydW4uYworSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL2luZnJ1bi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41 MC4yMDA5MDgxMS5vcmlnL2dkYi9pbmZydW4uYwkyMDA5LTA4LTEyIDA2OjU2OjI5LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL2luZnJ1bi5jCTIwMDktMDgtMTIg MDc6MTM6MDguMDAwMDAwMDAwICswMjAwCi1AQCAtMTA3NSw3ICsxMDc1LDcgQEAgc3RhdGljIGNv bnN0IGNoYXIgKnNjaGVkdWxlcl9lbnVtc1tdID0geworLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEu b3JpZy9nZGIvaW5mcnVuLmMJMjAxMC0wNy0xMiAxMDowNToyNi4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwkyMDEwLTA3LTEyIDEwOjU4OjU2LjAw MDAwMDAwMCArMDIwMAorQEAgLTE0OTEsNyArMTQ5MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpz Y2hlZHVsZXJfZW51bXNbXSA9IHsKICAgIHNjaGVkbG9ja19zdGVwLAogICAgTlVMTAogIH07CkBA IC0xMSwxMCArMTEsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL2luZnJ1bi5j CiAgc3RhdGljIHZvaWQKICBzaG93X3NjaGVkdWxlcl9tb2RlIChzdHJ1Y3QgdWlfZmlsZSAqZmls ZSwgaW50IGZyb21fdHR5LAogIAkJICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29u c3QgY2hhciAqdmFsdWUpCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvdGVzdHN1aXRl L2dkYi5taS9taS1jb25zb2xlLmV4cAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUw LjIwMDkwODExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAJMjAwOS0w OC0xMiAwNjo1NjoyOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODExL2dk Yi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMDktMDgtMTIgMDY6NTg6NDUuMDAw MDAwMDAwICswMjAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDMuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xl LmV4cAkyMDEwLTA3LTEyIDEwOjU4OjU2LjAwMDAwMDAwMCArMDIwMAogQEAgLTQ3LDYgKzQ3LDkg QEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LwogIAogIG1pX3J1bl90 b19tYWluCkBAIC0yNSwxMCArMjUsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MTEvZ2Ri L3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKICAjIE5leHQgb3ZlciB0aGUgaGVsbG8o KSBjYWxsIHdoaWNoIHdpbGwgcHJvZHVjZSBsb3RzIG9mIG91dHB1dAogIG1pX2dkYl90ZXN0ICIy MjAtZXhlYy1uZXh0IiBcCiAgCSAgICAiMjIwXFxecnVubmluZyhcclxuXFwqcnVubmluZyx0aHJl YWQtaWQ9XCJhbGxcIik/IiBcCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taTItY29uc29sZS5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi90ZXN0c3VpdGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4cAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02 LjguNTAuMjAwOTA4MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAJ MjAwOS0wOC0xMiAwNjo1NjoyOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkw ODExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4cAkyMDA5LTA4LTEyIDA2OjU4 OjQ1LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5taS9taTItY29uc29sZS5leHAJMjAxMC0wNS0yNiAyMDoxMjoxMy4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p Mi1jb25zb2xlLmV4cAkyMDEwLTA3LTEyIDEwOjU5OjE0LjAwMDAwMDAwMCArMDIwMAogQEAgLTQ3 LDYgKzQ3LDkgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LwogIAog IG1pX3J1bl90b19tYWluCkBAIC0zNywxMyArMzcsMTMgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTA4MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCiArbWlfZ2RiX3Rlc3Qg IjIxMC1nZGItc2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiIgIjIxMFxcXmRvbmUiICJzZXQgc2No ZWR1bGVyLWxvY2tpbmcgb2ZmIgogKwogICMgTmV4dCBvdmVyIHRoZSBoZWxsbygpIGNhbGwgd2hp Y2ggd2lsbCBwcm9kdWNlIGxvdHMgb2Ygb3V0cHV0Ci0gc2VuZF9nZGIgIjIyMC1leGVjLW5leHRc biIKLSBnZGJfZXhwZWN0IHsKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pLWNsaS5leHAKKyBnZGJfdGVzdF9tdWx0aXBsZSAiMjIwLWV4ZWMtbmV4dCIg IlN0YXJ0ZWQgc3RlcCBvdmVyIGhlbGxvIiB7CisgICAgIC1yZSAiMjIwXFxecnVubmluZ1xyXG4o XFwqcnVubmluZyx0aHJlYWQtaWQ9XCJhbGxcIlxyXG4pPyRtaV9nZGJfcHJvbXB0IiB7CitJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pLWNsaS5leHAJMjAwOS0wNi0wOSAxOToxMjo0Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNi44LjUwLjIwMDkwODExL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAJMjAwOS0w OC0xMiAwNzoxMzozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNzMsNyArMTczLDcgQEAgbWlfZXhl Y3V0ZV90byAiZXhlYy1jb250aW51ZSIgImJyZWFrcG9pbgorLS0tIGdkYi03LjEuOTAuMjAxMDA3 MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTAtMDEtMTkgMDk6MDA6 MzkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRl L2dkYi5taS9taS1jbGkuZXhwCTIwMTAtMDctMTIgMTA6NTg6NTYuMDAwMDAwMDAwICswMjAwCitA QCAtMTc2LDcgKzE3Niw3IEBAIG1pX2V4ZWN1dGVfdG8gImV4ZWMtY29udGludWUiICJicmVha3Bv aW4KICAjIFRlc3QgdGhhdCB0aGUgdG9rZW4gaXMgb3V0cHV0IGV2ZW4gZm9yIENMSSBjb21tYW5k cwogICMgQWxzbyB0ZXN0IHRoYXQgKnN0b3BwZWQgaW5jbHVkZXMgZnJhbWUgaW5mb3JtYXRpb24u CiAgbWlfZ2RiX3Rlc3QgIjM0IG5leHQiIFwKCmRpZmYgLS1naXQgYS9nZGItNi42LXNjaGVkdWxl cl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoIGIvZ2RiLTYuNi1zY2hlZHVsZXJf bG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAppbmRleCA0ODczNjA4Li4wZWI4YTQ0 IDEwMDY0NAotLS0gYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2lu dHMyLnBhdGNoCisrKyBiL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBv aW50czIucGF0Y2gKQEAgLTIxLDExICsyMSwxMSBAQAogCiAJUG9ydCB0byBHREItNi44cHJlLgog Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mZXJpb3IuaAorSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL2luZmVyaW9yLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUw LjIwMTAwMTE1Lm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZlcmlvci5oCTIwMTAtMDEt MTUgMDM6MTc6MDcuMDAwMDAwMDAwICswMTAwCi1AQCAtMTg4LDcgKzE4OCwxNSBAQCBleHRlcm4g dm9pZCByZW9wZW5fZXhlY19maWxlICh2b2lkKTsKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL2luZmVyaW9yLmgJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZlcmlvci5oCTIwMTAtMDctMTIgMTA6MDQ6MjUu MDAwMDAwMDAwICswMjAwCitAQCAtMTk4LDcgKzE5OCwxNSBAQCBleHRlcm4gdm9pZCByZW9wZW5f ZXhlY19maWxlICh2b2lkKTsKICAvKiBUaGUgYHJlc3VtZScgcm91dGluZSBzaG91bGQgb25seSBi ZSBjYWxsZWQgaW4gc3BlY2lhbCBjaXJjdW1zdGFuY2VzLgogICAgIE5vcm1hbGx5LCB1c2UgYHBy b2NlZWQnLCB3aGljaCBoYW5kbGVzIGEgbG90IG9mIGJvb2trZWVwaW5nLiAgKi8KICAKQEAgLTQy LDExICs0MiwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mZXJpb3IuaAog IAogIC8qIEZyb20gbWlzYyBmaWxlcyAqLwogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2luZnJ1bi5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvaW5mcnVuLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTAt MDEtMTUgMDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvaW5mcnVuLmMJMjAxMC0wMS0xNSAwMzoxNzozMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC03Nyw3 ICs3Nyw3IEBAIHN0YXRpYyBpbnQgZm9sbG93X2ZvcmsgKHZvaWQpOworLS0tIGdkYi03LjEuOTAu MjAxMDA3MTEub3JpZy9nZGIvaW5mcnVuLmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwkyMDEwLTA3LTEyIDEw OjA1OjI2LjAwMDAwMDAwMCArMDIwMAorQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBmb2xs b3dfZm9yayAodm9pZCk7CiAgc3RhdGljIHZvaWQgc2V0X3NjaGVkbG9ja19mdW5jIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHksCiAgCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKTsKICAK QEAgLTU1LDcgKzU1LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZnJ1bi5j CiAgCiAgc3RhdGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4dGluZ19jYWxsYmFjayAo c3RydWN0IHRocmVhZF9pbmZvICp0cCwKICAJCQkJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0xMzYz LDcgKzEzNjMsNyBAQCBtYXliZV9zb2Z0d2FyZV9zaW5nbGVzdGVwIChzdHJ1Y3QgZ2RiYXJjCitA QCAtMTU0OSw3ICsxNTQ5LDcgQEAgbWF5YmVfc29mdHdhcmVfc2luZ2xlc3RlcCAoc3RydWN0IGdk YmFyYwogICAgIFNURVAgbm9uemVybyBpZiB3ZSBzaG91bGQgc3RlcCAoemVybyB0byBjb250aW51 ZSBpbnN0ZWFkKS4KICAgICBTSUcgaXMgdGhlIHNpZ25hbCB0byBnaXZlIHRoZSBpbmZlcmlvciAo emVybyBmb3Igbm9uZSkuICAqLwogIHZvaWQKQEAgLTY0LDcgKzY0LDcgQEAgSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2luZnJ1bi5jCiAgewogICAgaW50IHNob3VsZF9yZXN1bWUgPSAx OwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAocmVzdW1l X2NsZWFudXBzLCAwKTsKLUBAIC0xMzc2LDEwICsxMzc2LDEyIEBAIHJlc3VtZSAoaW50IHN0ZXAs IGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcKK0BAIC0xNTYyLDEwICsxNTYyLDEyIEBAIHJlc3VtZSAo aW50IHN0ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcKICAgIFFVSVQ7CiAgCiAgICBpZiAoZGVi dWdfaW5mcnVuKQpAQCAtNzksOSArNzksOSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvaW5mcnVuLmMKICsJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiUkVTVU1FX1NU RVBfTkVFREVEIikpLAogKwkJCXNpZywgdHAtPnRyYXBfZXhwZWN0ZWQpOwogIAotICAgLyogU29t ZSB0YXJnZXRzIChlLmcuIFNvbGFyaXMgeDg2KSBoYXZlIGEga2VybmVsIGJ1ZyB3aGVuIHN0ZXBw aW5nCi0gICAgICBvdmVyIGFuIGluc3RydWN0aW9uIHRoYXQgY2F1c2VzIGEgcGFnZSBmYXVsdCB3 aXRob3V0IHRyaWdnZXJpbmcKLUBAIC0xNTAxLDkgKzE1MDMsMTAgQEAgYSBjb21tYW5kIGxpa2Ug YHJldHVybicgb3IgYGp1bXAnIHRvIGNvbgorICAgLyogTm9ybWFsbHksIGJ5IHRoZSB0aW1lIHdl IHJlYWNoIGByZXN1bWUnLCB0aGUgYnJlYWtwb2ludHMgYXJlIGVpdGhlcgorICAgICAgcmVtb3Zl ZCBvciBpbnNlcnRlZCwgYXMgYXBwcm9wcmlhdGUuICBUaGUgZXhjZXB0aW9uIGlzIGlmIHdlJ3Jl IHNpdHRpbmcKK0BAIC0xNjc4LDkgKzE2ODAsMTAgQEAgYSBjb21tYW5kIGxpa2UgYHJldHVybicg b3IgYGp1bXAnIHRvIGNvbgogIAkgICAgIGluZGl2aWR1YWxseS4gICovCiAgCSAgcmVzdW1lX3B0 aWQgPSBpbmZlcmlvcl9wdGlkOwogIAl9CkBAIC05NCw3ICs5NCw3IEBAIEluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9pbmZydW4uYwogIAl7CiAgCSAgLyogVXNlci1zZXR0YWJsZSAnc2No ZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJlc3VtZS4gKi8KICAJICByZXN1bWVf cHRpZCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtMTcwOSw3ICsxNzEyLDcgQEAgcHJvY2VlZCAoQ09S RV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE4ODksNyArMTg5Miw3IEBAIHByb2Nl ZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAgIHN0cnVjdCB0aHJlYWRfaW5m byAqdHA7CiAgICBDT1JFX0FERFIgcGM7CiAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNl OwpAQCAtMTAzLDcgKzEwMyw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZy dW4uYwogIAogICAgLyogSWYgd2UncmUgc3RvcHBlZCBhdCBhIGZvcmsvdmZvcmssIGZvbGxvdyB0 aGUgYnJhbmNoIHNldCBieSB0aGUKICAgICAgICJzZXQgZm9sbG93LWZvcmstbW9kZSIgY29tbWFu ZDsgb3RoZXJ3aXNlLCB3ZSdsbCBqdXN0IHByb2NlZWQKLUBAIC0xNzQ0LDEzICsxNzQ3LDEzIEBA IHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0xOTI0LDEzICsx OTI3LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAJICAg YWN0dWFsbHkgYmUgZXhlY3V0aW5nIHRoZSBicmVha3BvaW50IGluc24gYW55d2F5LgogIAkgICBX ZSdsbCBiZSAodW4tKWV4ZWN1dGluZyB0aGUgcHJldmlvdXMgaW5zdHJ1Y3Rpb24uICAqLwogIApA QCAtMTE5LDcgKzExOSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZydW4u YwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKLUBAIC0xNzgxLDEzICsxNzg0LDEzIEBAIHByb2Nl ZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0xOTcxLDEzICsxOTc0LDEz IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAJIGlzIHJlcXVp cmVkIGl0IHJldHVybnMgVFJVRSBhbmQgc2V0cyB0aGUgY3VycmVudCB0aHJlYWQgdG8KICAJIHRo ZSBvbGQgdGhyZWFkLiAqLwogICAgICAgIGlmIChwcmVwYXJlX3RvX3Byb2NlZWQgKHN0ZXApKQpA QCAtMTM1LDcgKzEzNSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZydW4u YwogICAgICB7CiAgICAgICAgdHAtPnRyYXBfZXhwZWN0ZWQgPSAxOwogICAgICAgIC8qIElmIGRp c3BsYWNlZCBzdGVwcGluZyBpcyBlbmFibGVkLCB3ZSBjYW4gc3RlcCBvdmVyIHRoZQotQEAgLTE4 NzMsOCArMTg3NiwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2ln CitAQCAtMjA2NCw4ICsyMDY3LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRh cmdldF9zaWcKICAgIC8qIFJlc2V0IHRvIG5vcm1hbCBzdGF0ZS4gICovCiAgICBpbml0X2luZndh aXRfc3RhdGUgKCk7CiAgCkBAIC0xNTAsNyArMTUwLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2luZnJ1bi5jCiAgCiAgICAvKiBXYWl0IGZvciBpdCB0byBzdG9wIChpZiBub3Qg c3RhbmRhbG9uZSkKICAgICAgIGFuZCBpbiBhbnkgY2FzZSBkZWNvZGUgd2h5IGl0IHN0b3BwZWQs IGFuZCBhY3QgYWNjb3JkaW5nbHkuICAqLwotQEAgLTQ2NTUsMTMgKzQ2NjMsMTggQEAgaW5mcnVu OiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAorQEAgLTQ5MDMsMTMgKzQ5MTEsMTgg QEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAogIAogIC8qIElzIHRo cmVhZCBUUCBpbiB0aGUgbWlkZGxlIG9mIHNpbmdsZS1zdGVwcGluZz8gICovCiAgCkBAIC0xNzQs MTEgKzE3NCwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mcnVuLmMKICB9 CiAgCiAgLyogUmV0dXJucyB0cnVlIGlmIGFueSB0aHJlYWQgKmJ1dCogdGhlIG9uZSBwYXNzZWQg aW4gImRhdGEiIGlzIGluIHRoZQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4 LW5hdC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAt MDEtMTUgMDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoxNzowNy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0y ODgzLDcgKzI4ODMsMTAgQEAgY291bnRfZXZlbnRzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8g KgorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0wNy0x MiAxMDowMDo1Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9s aW51eC1uYXQuYwkyMDEwLTA3LTEyIDEwOjA0OjI1LjAwMDAwMDAwMCArMDIwMAorQEAgLTI4Mjcs NyArMjgyNywxMCBAQCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqCiAg c3RhdGljIGludAogIHNlbGVjdF9zaW5nbGVzdGVwX2x3cF9jYWxsYmFjayAoc3RydWN0IGx3cF9p bmZvICpscCwgdm9pZCAqZGF0YSkKICB7CkBAIC0xOTAsMTAgKzE5MCwxMCBAQCBJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMKICAgICAgcmV0dXJuIDE7CiAgICBlbHNl CiAgICAgIHJldHVybiAwOwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5h dC5oCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDEt MTIgMjI6NDA6MjQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv bGludXgtbmF0LmgJMjAxMC0wMS0xNSAwMzoxNzowNy4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGIt Ny4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDYtMTEgMTQ6MTA6MTIu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmgJ MjAxMC0wNy0xMiAxMDowNDoyNS4wMDAwMDAwMDAgKzAyMDAKIEBAIC01NSw4ICs1NSw4IEBAIHN0 cnVjdCBsd3BfaW5mbwogICAgLyogSWYgbm9uLXplcm8sIGEgcGVuZGluZyB3YWl0IHN0YXR1cy4g ICovCiAgICBpbnQgc3RhdHVzOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtdGhyZWFkcy1zdGF0aWMt dGVzdC5wYXRjaCBiL2dkYi02LjYtdGhyZWFkcy1zdGF0aWMtdGVzdC5wYXRjaAppbmRleCBlODc0 MWE4Li4yYmFjNzIyIDEwMDY0NAotLS0gYS9nZGItNi42LXRocmVhZHMtc3RhdGljLXRlc3QucGF0 Y2gKKysrIGIvZ2RiLTYuNi10aHJlYWRzLXN0YXRpYy10ZXN0LnBhdGNoCkBAIC0xLDEwICsxLDEx IEBACi0tLS0gZ2RiLTYuNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0YXRpY3RocmVhZHMu ZXhwLW9yaWcJMjAwNS0wNC0zMCAyMTo1Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi42 L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5leHAJMjAwOC0wMS0xMSAx NDozMDoxNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NCw5ICs0NCwyMSBAQCBnZGJfbG9hZCAke2Jp bmZpbGV9Ci0gZ2RiX3Rlc3QgInNldCBwcmludCBzZXZlbmJpdC1zdHJpbmdzIiAiIgotIAorSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0 aHJlYWRzLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0YXRpY3RocmVhZHMuZXhwCTIwMTAtMDYtMDIgMjM6NTM6 MjguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3N0YXRpY3RocmVhZHMuZXhwCTIwMTAtMDctMTIgMTE6NDM6MjYuMDAwMDAw MDAwICswMjAwCitAQCAtNDQsNiArNDQsMTggQEAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgcHJp bnQgc2V2ZW5iaXQtcworICMgU2VlIGlmIHRoZSBzdGF0aWMgbXVsdGktdGhyZWFkZWQgcHJvZ3Jh bSBydW5zLgogIAotK3J1bnRvX21haW4KKyBydW50b19tYWluCiArCiArIyBTZWUgaWYgd2UgZ2V0 IGV4Y2Vzc2l2ZSBMV1AgdGhlcmUgKHBhdGNoZWQgZ2xpYmMgd2l0aCB1bnBhdGNoZWQgR0RCKToK ICsjICogMiBUaHJlYWQgMTM1NjYxNjY0IChMV1AgMzg1NikgIG1haW4gKCkgYXQgdGhyZWFkbG9v cC5jOjQxCkBAIC0xNyw5ICsxOCw2IEBACiArICAgIH0KICt9CiArCi0gIyBTZWUgaWYgdGhlIHN0 YXRpYyBtdWx0aS10aHJlYWRlZCBwcm9ncmFtIHJ1bnMuCi0gCi0tcnVudG9fbWFpbgogIGdkYl90 ZXN0ICJicmVhayBzZW1fcG9zdCIKICBzZXQgdGVzdCAiQ29udGludWUgdG8gbWFpbidzIGNhbGwg b2Ygc2VtX3Bvc3QiCiAgZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAiJHRlc3QiIHsKCmRp ZmYgLS1naXQgYS9nZGItNi43LWJ6NDI2NjAwLURXX1RBR19pbnRlcmZhY2VfdHlwZS10ZXN0LnBh dGNoIGIvZ2RiLTYuNy1iejQyNjYwMC1EV19UQUdfaW50ZXJmYWNlX3R5cGUtdGVzdC5wYXRjaApp bmRleCAyZTM0NGNhLi45ZGM4YTdiIDEwMDY0NAotLS0gYS9nZGItNi43LWJ6NDI2NjAwLURXX1RB R19pbnRlcmZhY2VfdHlwZS10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjctYno0MjY2MDAtRFdfVEFH X2ludGVyZmFjZV90eXBlLXRlc3QucGF0Y2gKQEAgLTY0MSw3ICs2NDEsNyBAQCBodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwNy0xMi9tc2cwMDM5Ny5odG1sCiArCS5zZWN0 aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKIC0tLSAvZGV2L251bGwJMSBKYW4gMTk3 MCAwMDowMDowMCAtMDAwMAogKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pMzg2LWludGVy ZmFjZS5leHAJMjIgRGVjIDIwMDcgMTk6MDc6MjggLTAwMDAKLUBAIC0wLDAgKzEsNjYgQEAKK0BA IC0wLDAgKzEsNTkgQEAKICsjIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTY2NSwxMyArNjY1LDYgQEAgaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDctMTIvbXNnMDAzOTcuaHRtbAogKyMgVGVz dCBiYXNpcyByZWNvZ25pemF0aW9uIG9mIERXX1RBR19pbnRlcmZhY2VfdHlwZS4KICsjIEdDQyBq YXZhX2NsYXNzaWZ5X3JlY29yZCgpIHByb2R1Y2VzIGl0IGlmIHJldHVybnMgUkVDT1JEX0lTX0lO VEVSRkFDRS4KICsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAot K30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCiAraWYgeyFbaXN0YXJnZXQg Imk/ODYtKi0qIl0gJiYgIVtpc3RhcmdldCAieDg2XzY0LSotKiJdfSB0aGVuIHsKICsgICAgdmVy Ym9zZSAiU2tpcHBpbmcgaTM4NiBKYXZhIERXX1RBR19pbnRlcmZhY2VfdHlwZSB0ZXN0LiIKICsg ICAgcmV0dXJuCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy1jaGFyc2lnbi10ZXN0LnBhdGNoIGIvZ2Ri LTYuNy1jaGFyc2lnbi10ZXN0LnBhdGNoCmluZGV4IDJlMjg5YWMuLjc5M2ZmOGEgMTAwNjQ0Ci0t LSBhL2dkYi02LjctY2hhcnNpZ24tdGVzdC5wYXRjaAorKysgYi9nZGItNi43LWNoYXJzaWduLXRl c3QucGF0Y2gKQEAgLTUyLDcgKzUyLDcgQEAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1 Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjQxMjgKICtjaGFyX3UgdV90eXBlZFtdPSJBIjsKIC0t LSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAogKysrIC4vZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9jaGFyc2lnbi5leHAJMjYgSmFuIDIwMDcgMTA6MzI6MDAgLTAwMDAKLUBAIC0w LDAgKzEsNzAgQEAKK0BAIC0wLDAgKzEsNjMgQEAKICsjIENvcHlyaWdodCAyMDA3IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTY5LDEzICs2OSw2 IEBAIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9 MjI0MTI4CiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQogKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAogKwotK2lmICR0cmFjZWxldmVs IHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAot K3NldCBidWdfaWQgMAotKwogK3NldCB0ZXN0ZmlsZSBjaGFyc2lnbgogK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmMKICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi10ZXN0LnBh dGNoIGIvZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi10ZXN0LnBhdGNoCmluZGV4 IGI4YmE1YjAuLjc2MWQxMGYgMTAwNjQ0Ci0tLSBhL2dkYi02LjctcHBjLWNsb2JiZXJlZC1yZWdp c3RlcnMtTzItdGVzdC5wYXRjaAorKysgYi9nZGItNi43LXBwYy1jbG9iYmVyZWQtcmVnaXN0ZXJz LU8yLXRlc3QucGF0Y2gKQEAgLTM5LDcgKzM5LDcgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMDctMDkvbXNnMDAyMjguaHRtbAogK30KIC0tLSAvZGV2L251bGwJMSBK YW4gMTk3MCAwMDowMDowMCAtMDAwMAogKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9wcGMt Y2xvYmJlcmVkLXJlZ2lzdGVycy1PMi5leHAJMyBOb3YgMjAwNyAyMjoyMjoyOCAtMDAwMAotQEAg LTAsMCArMSw2MSBAQAorQEAgLTAsMCArMSw1NCBAQAogKyMgQ29weXJpZ2h0IDIwMDYgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTU4LDE2ICs1 OCw5IEBAIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA3LTA5L21zZzAw MjI4Lmh0bWwKICsjCiArIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4K ICsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKICsj IFRlc3QgZGlzcGxheWluZyBjYWxsIGNsb2JiZXJlZCByZWdpc3RlcnMgaW4gb3B0aW1pemVkIGJp bmFyaWVzIGZvciBwcGMuCiArIyBHREIgc2hvdWxkIG5vdCBzaG93IGluY29ycmVjdCB2YWx1ZXMu CiArCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwogK2lmICFbaXN0YXJnZXQgInBv d2VycGMqLSoiXSB0aGVuIHsKICsgICAgdmVyYm9zZSAiU2tpcHBpbmcgcG93ZXJwYyogY2FsbCBj bG9iYmVyZWQgcmVnaXN0ZXJzIHRlc3RpbmcuIgogKyAgICByZXR1cm4KCmRpZmYgLS1naXQgYS9n ZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy1wcmVsaW5rLnBhdGNoIGIvZ2RiLTYuNy10 ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMtcHJlbGluay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggM2M1MTU3Ny4uMDAwMDAwMAotLS0gYS9nZGItNi43LXRlc3RzdWl0ZS1zdGFi bGUtcmVzdWx0cy1wcmVsaW5rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDMvbXNnMDEwMDYuaHRt bAotU3ViamVjdDogW3BhdGNoIG9yIEZZSV0gdGVzdHN1aXRlOiBGaXggcHJlbGluay5leHAgb24g c3lzdGVtIHcvdW5wcmVsaW5rZWQgIHN5c3RlbSBsaWJzCi0KLUhpLAotCi10aGlzIGlzIGEgbW9y ZSBjb25zZXJ2YXRpdmUgdmFyaWFudCBzdXBlcnNlZGVkIGJ5OgotCVtwYXRjaCA0LzZdIHRlc3Rz dWl0ZTogVW5pZnkgdG8gbGliL3ByZWxpbmstc3VwcG9ydC5leHAKLQlodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMy9tc2cwMTAwMi5odG1sCi13aGVyZSBnZGIuYmFz ZS9wcmVsaW5rLmV4cCBpcyByZXdvcmtlZCBvbiBnZW5lcmljIGxpYi9wcmVsaW5rLXN1cHBvcnQu ZXhwLgotCi1JIHByZWZlciB0aGUgW3BhdGNoIDQvNl0gb3ZlciB0aGlzIHBhdGNoIGJ1dCB0aGlz IG1haWwgY2FuIHNlcnZlIGFsc28gYXMgYW4KLWlsbHVzdHJhdGlvbiBvZiB0aGUgY3VycmVudCBw cm9ibGVtLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSWYgeW91ciBzeXN0ZW0gZm9yIHNv bWUgcmVhc29uIGN1cnJlbnRseSBkb2VzIG5vdCBoYXZlIGFsbCB0aGUgbGlicmFyaWVzCi1wcmVs aW5rZWQgZ2RiLmJhc2UvcHJlbGluay5leHAgd2lsbCBnZXQgVU5SRVNPTFZFRCByYW5kb21seSBh bHNvIGFmZmVjdGluZwotdGVzdHN1aXRlIHJlc3VsdHMgZGlmZi4KLQotQXBwYXJlbnRseSB0aGUg dGVzdGNhc2UgYWxyZWFkeSB0cmllZCB0byBhdm9pZCBhbnkgc3lzdGVtIGxpYnJhcmllcwotZGVw ZW5kZW5jaWVzIGJ5ICItbm9kZWZhdWx0bGlicyIuICBCdXQgY3VycmVudGx5IGl0IGRvZXMgaGFz IG5vdCB3b3JrZWQgdGhhdAotd2F5LgotCi0iLWxtIiBpcyBjb250YWluZWQgYWxyZWFkeSBldmVu IGluIGRlamFnbnUncyBkZWZhdWx0X3RhcmdldF9jb21waWxlIChub3QganVzdAotaW4gZ2RiL3Rl c3RzdWl0ZS9saWIvYWRhLmV4cCkuICBCdXQgSSBkbyBub3Qga25vdyB3aHkgaXQgaXMgdGhlcmUg YW5kIHdoaWNoCi1zeXN0ZW1zIHdvdWxkIGdldCBicm9rZW4gYnkgc29tZSBnbG9iYWwgZ2RiL3Rl c3RzdWl0ZS8gIi1sbSIgcmVtb3ZhbC4KLQotCi1UaGFua3MsCi1KYW4KLQotCi0yMDEwLTAzLTI5 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlGaXggdGVz dGNhc2UgZmFsc2UgVU5SRVNPTFZFRCBpZiBzeXN0ZW0gbGlicmFyaWVzIGFyZSBub3QgcHJlbGlu a2VkLgotCSogZ2RiLmJhc2UvcHJlbGluay5leHA6IE5ldyB2YXJpYWJsZXMgY29tcGlsZSwgYm9h cmQsIGVyciBhbmQgbWF0aGxpYi4KLQlTZXQgY2xlYXIgYm9hcmQgbWF0aGxpYiBmb3IgJHtsaWJm aWxlfSBjb21waWxhdGlvbi4KLQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5r LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmV4cAotQEAgLTQyLDcg KzQyLDI1IEBAIHNldCB0ZXN0ZmlsZSAicHJlbGluayIKLSAKLSBzZXQgbGlic3JjZmlsZSAke3Rl c3RmaWxlfS1saWIuYwotIHNldCBsaWJmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0uc28KLS1pZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke2xpYnNyY2Zp bGV9IiAiJHtsaWJmaWxlfSIgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyAiYWRkaXRpb25hbF9mbGFn cz0tZnBpYyAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIl1dICE9ICIifSB7Ci0rCi0rIyBkZWZhdWx0 X3RhcmdldF9jb21waWxlIHdvdWxkIG90aGVyd2lzZSBhZGQgIi1sbSIgbWFraW5nIHRoZSB0ZXN0 Y2FzZQotKyMgZGVwZW5kZW50IG9uIHdoZXRoZXIgdGhlIHN5c3RlbSBsaWJyYXJpZXMgYXJlIGFs cmVhZHkgcHJlbGlua2VkLgotKyMgcHJlbGluazogQ291bGQgbm90IHNldCAvbGliNjQvbGlibS0y LjExLjEuc28gb3duZXIgb3IgbW9kZTogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQKLStzZXQgY29t cGlsZSB7Ci0rICAgIGdkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7bGlic3JjZmls ZX0iICIke2xpYmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICJhZGRpdGlvbmFsX2ZsYWdz PS1mcGljIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMiXQotK30KLStzZXQgYm9hcmQgW3RhcmdldF9p bmZvIG5hbWVdCi0raWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBtYXRobGliXSB7Ci0rICAg IHNldCBtYXRobGliIFtib2FyZF9pbmZvICRkZXN0IG1hdGhsaWJdCi0rICAgIHNldF9ib2FyZF9p bmZvIG1hdGhsaWIgIiIKLSsgICAgc2V0IGVyciBbZXZhbCAkY29tcGlsZV0KLSsgICAgc2V0X2Jv YXJkX2luZm8gbWF0aGxpYiAkbWF0aGxpYgotK30gZWxzZSB7Ci0rICAgIHNldF9ib2FyZF9pbmZv IG1hdGhsaWIgIiIKLSsgICAgc2V0IGVyciBbZXZhbCAkY29tcGlsZV0KLSsgICAgdW5zZXRfYm9h cmRfaW5mbyBtYXRobGliCi0rfQotK2lmIHskZXJyICE9ICIifSB7Ci0gICAgICMgSWYgY3JlYXRp bmcgdGhlIHNoYXJlZCBsaWJyYXJ5IGZhaWxzLCBtYXliZSB3ZSBkb24ndCBoYXZlIHRoZSByaWdo dCB0b29scwotICAgICByZXR1cm4gLTEKLSB9Ci0KCmRpZmYgLS1naXQgYS9nZGItNi43LXRlc3Rz dWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaCBiL2dkYi02LjctdGVzdHN1aXRlLXN0YWJsZS1yZXN1 bHRzLnBhdGNoCmluZGV4IDc1ZjY4YjMuLmE0YzE5NWMgMTAwNjQ0Ci0tLSBhL2dkYi02LjctdGVz dHN1aXRlLXN0YWJsZS1yZXN1bHRzLnBhdGNoCisrKyBiL2dkYi02LjctdGVzdHN1aXRlLXN0YWJs ZS1yZXN1bHRzLnBhdGNoCkBAIC0yMCw4ICsyMCwxMCBAQCByYW5kb20gRkFJTDogZ2RiLmJhc2Uv YXV4di5leHA6IG1hdGNoaW5nIGF1eHYgZGF0YSBmcm9tIGxpdmUgYW5kIGdjb3JlCiBnZGItNi44 LjUwLjIwMDkwMjA5L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHA6CiBmcmFtZXMt aW52YWxpZCBjYW4gaGFwcGVuIGFzeW5jaHJvbm91c2x5LgogCi0tLS0gLi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2ZpbGVpby5jCTEzIEp1biAyMDA2IDA4OjU1OjIyIC0wMDAwCTEuMTAKLSsrKyAu L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmMJOCBEZWMgMjAwNyAxNjowNDoxMCAtMDAw MAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxl aW8uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ZpbGVpby5jCTIwMDktMTAtMDEgMTc6Mzk6MTMuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5j CTIwMTAtMDctMTIgMTE6NDE6NDMuMDAwMDAwMDAwICswMjAwCiBAQCAtNTgsNiArNTgsOCBAQCBz eXN0ZW0gKGNvbnN0IGNoYXIgKiBzdHJpbmcpOwogIDEpIEludmFsaWQgc3RyaW5nL2NvbW1hbmQu IC0gIHJldHVybnMgMTI3LiAgKi8KICBzdGF0aWMgY29uc3QgY2hhciAqc3RyZXJybm8gKGludCBl cnIpOwpAQCAtNjksOSArNzEsMTEgQEAgZnJhbWVzLWludmFsaWQgY2FuIGhhcHBlbiBhc3luY2hy b25vdXNseS4KICAgIC8qIERvbid0IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIGNhbGxzLiAgVGhl eSBwYXJ0bHkgZGVwZW5kIG9uIGVhY2ggb3RoZXIgKi8KICAgIHRlc3Rfb3BlbiAoKTsKICAgIHRl c3Rfd3JpdGUgKCk7Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjMg QXVnIDIwMDcgMTg6MTQ6MTYgLTAwMDAJMS4xMgotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9maWxlaW8uZXhwCTggRGVjIDIwMDcgMTY6MDQ6MTAgLTAwMDAKLUBAIC00Niw4ICs0Niw4IEBA IGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7CitJbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8u ZXhwCTIwMTAtMDYtMDkgMDA6NTg6MDMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjAxMC0wNy0xMiAxMTo0 MjowNy4wMDAwMDAwMDAgKzAyMDAKK0BAIC00Miw4ICs0Miw4IEBAIGlmIFtnZXRfY29tcGlsZXJf aW5mbyAke2JpbmZpbGV9XSB7CiAgICAgIHJldHVybiAtMTsKICB9CiAgCkBAIC04MiwxNiArODYs MTYgQEAgZnJhbWVzLWludmFsaWQgY2FuIGhhcHBlbiBhc3luY2hyb25vdXNseS4KICAKICBzZXQg b2xkdGltZW91dCAkdGltZW91dAogIHNldCB0aW1lb3V0IFtleHByICIkdGltZW91dCArIDYwIl0K LUBAIC04OCw3ICs4OCw3IEBAIGdkYl90ZXN0IGNvbnRpbnVlIFwKLSAiT3BlbmluZyBub25leGlz dGFudCBmaWxlIHJldHVybnMgRU5PRU5UIgorQEAgLTg1LDcgKzg1LDcgQEAgZ2RiX3Rlc3QgY29u dGludWUgXAorIAorIGdkYl90ZXN0ICJjb250aW51ZSIgIi4qIiAiIgogIAotIHNlbmRfZ2RiICJj b250aW51ZVxuIiA7IGdkYl9leHBlY3QgLXJlICIkZ2RiX3Byb21wdCAkIgogLWNhdGNoICJzeXN0 ZW0gXCJjaG1vZCAtZiAtdyBub3dydC5maWxlaW8udGVzdFwiIgogK2NhdGNoICJzeXN0ZW0gXCJj aG1vZCAtZiAtdyBmaWxlaW8uZGlyL25vd3J0LmZpbGVpby50ZXN0XCIiCiAgCiAgZ2RiX3Rlc3Qg Y29udGludWUgXAogICJDb250aW51aW5nXFwuLipvcGVuIDU6LipFQUNDRVMkc3RvcF9tc2ciIFwK LUBAIC0yNTIsOCArMjUyLDggQEAgZ2RiX3Rlc3QgY29udGludWUgXAorQEAgLTI1MCw4ICsyNTAs OCBAQCBnZGJfdGVzdCBjb250aW51ZSBcCiAgc2VuZF9nZGIgInF1aXRcbiIKICBzZW5kX2dkYiAi eVxuIgogIAoKZGlmZiAtLWdpdCBhL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0 Y2ggYi9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoCmluZGV4IDI0OWFhODEu Ljg3ZmQyNTUgMTAwNjQ0Ci0tLSBhL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0 Y2gKKysrIGIvZ2RiLTYuOC1iejI1NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaApAQCAtMSwxNDYg KzEsMTE4IEBACi1JbmRleDogZ2RiLTcuMS9iZmQvZWxmLWJmZC5oCitJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9iZmQvZWxmLWJmZC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2Jm ZC9lbGYtYmZkLmgJMjAxMC0wMi0wOSAxMzoxNDo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4xL2JmZC9lbGYtYmZkLmgJMjAxMC0wNS0xNiAyMDoyMjozOC4wMDAwMDAwMDAgKzAyMDAKLUBA IC0yMTYwLDcgKzIxNjAsNyBAQCBleHRlcm4gRWxmX0ludGVybmFsX1BoZHIgKiBfYmZkX2VsZl9m aW5kCistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2JmZC9lbGYtYmZkLmgJMjAxMC0wNi0y NyAwNjowNzo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2JmZC9l bGYtYmZkLmgJMjAxMC0wNy0xMiAyMzowMDowNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yMTcxLDgg KzIxNzEsOSBAQCBleHRlcm4gRWxmX0ludGVybmFsX1BoZHIgKiBfYmZkX2VsZl9maW5kCisgLyog RXhwb3J0ZWQgaW50ZXJmYWNlIGZvciB3cml0aW5nIGVsZiBjb3JlZmlsZSBub3Rlcy4gKi8KICBl eHRlcm4gY2hhciAqZWxmY29yZV93cml0ZV9ub3RlCiAgICAoYmZkICosIGNoYXIgKiwgaW50ICos IGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCB2b2lkICosIGludCk7CisrI2luY2x1ZGUgPHN5cy9w cm9jZnMuaD4KICBleHRlcm4gY2hhciAqZWxmY29yZV93cml0ZV9wcnBzaW5mbwogLSAgKGJmZCAq LCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0rICAoYmZkICos IGNoYXIgKiwgaW50ICosIHZvaWQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworKyAg KGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBwcnBzaW5mb190ICopOwogIGV4dGVybiBjaGFy ICplbGZjb3JlX3dyaXRlX3Byc3RhdHVzCiAgICAoYmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcs IGludCwgY29uc3Qgdm9pZCAqKTsKICBleHRlcm4gY2hhciAqIGVsZmNvcmVfd3JpdGVfcHN0YXR1 cwotSW5kZXg6IGdkYi03LjEvYmZkL2VsZi5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9i ZmQvZWxmLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvYmZkL2VsZi5jCTIwMTAtMDIt MTggMDE6MDk6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9iZmQvZWxmLmMJMjAxMC0w NS0xNiAyMDoyNToxNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC04NTQ1LDYgKzg1NDUsNyBAQCBjaGFy ICoKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvYmZkL2VsZi5jCTIwMTAtMDUtMTggMDU6 MzE6MDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9iZmQvZWxmLmMJ MjAxMC0wNy0xMiAyMjo1MToxNy4wMDAwMDAwMDAgKzAyMDAKK0BAIC04NTgyLDEzICs4NTgyLDEy IEBAIGVsZmNvcmVfd3JpdGVfbm90ZSAoYmZkICphYmZkLAorICAgcmV0dXJuIGJ1ZjsKKyB9Cisg CistI2lmIGRlZmluZWQgKEhBVkVfUFJQU0lORk9fVCkgfHwgZGVmaW5lZCAoSEFWRV9QU0lORk9f VCkKKysjaWYgZGVmaW5lZCAoSEFWRV9QUlBTSU5GT19UKQorIGNoYXIgKgogIGVsZmNvcmVfd3Jp dGVfcHJwc2luZm8gKGJmZCAgKmFiZmQsCiAgCQkJY2hhciAqYnVmLAogIAkJCWludCAgKmJ1ZnNp eiwKLSsJCQl2b2lkICppbmZvLAotIAkJCWNvbnN0IGNoYXIgKmZuYW1lLAotIAkJCWNvbnN0IGNo YXIgKnBzYXJncykKKy0JCQljb25zdCBjaGFyICpmbmFtZSwKKy0JCQljb25zdCBjaGFyICpwc2Fy Z3MpCisrCQkJY29uc3QgcHJwc2luZm9fdCAqaW5wdXQpCiAgewotQEAgLTg1NzEsMjYgKzg1NzIs NDAgQEAgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwKKyAgIGNvbnN0IGNoYXIg Km5vdGVfbmFtZSA9ICJDT1JFIjsKKyAgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpi ZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7CitAQCAtODU5Niw0OCArODU5NSw1NSBA QCBlbGZjb3JlX3dyaXRlX3BycHNpbmZvIChiZmQgICphYmZkLAorICAgaWYgKGJlZC0+ZWxmX2Jh Y2tlbmRfd3JpdGVfY29yZV9ub3RlICE9IE5VTEwpCisgICAgIHsKKyAgICAgICBjaGFyICpyZXQ7 CisrICAgICAgY2hhciBmbmFtZVtzaXplb2YgKGlucHV0LT5wcl9mbmFtZSkgKyAxXTsKKysgICAg ICBjaGFyIHBzYXJnc1tzaXplb2YgKGlucHV0LT5wcl9wc2FyZ3MpICsgMV07CisrCisrICAgICAg c3RybmNweSAoZm5hbWUsIGlucHV0LT5wcl9mbmFtZSwgc2l6ZW9mIChpbnB1dC0+cHJfZm5hbWUp KTsKKysgICAgICBmbmFtZVtzaXplb2YgKGlucHV0LT5wcl9mbmFtZSldID0gMDsKKysgICAgICBz dHJuY3B5IChwc2FyZ3MsIGlucHV0LT5wcl9wc2FyZ3MsIHNpemVvZiAoaW5wdXQtPnByX3BzYXJn cykpOworKyAgICAgIHBzYXJnc1tzaXplb2YgKGlucHV0LT5wcl9wc2FyZ3MpXSA9IDA7CisrCisg ICAgICAgcmV0ID0gKCpiZWQtPmVsZl9iYWNrZW5kX3dyaXRlX2NvcmVfbm90ZSkgKGFiZmQsIGJ1 ZiwgYnVmc2l6LAorIAkJCQkJCSBOVF9QUlBTSU5GTywgZm5hbWUsIHBzYXJncyk7CisgICAgICAg aWYgKHJldCAhPSBOVUxMKQorIAlyZXR1cm4gcmV0OworICAgICB9CisgCistI2lmIGRlZmluZWQg KEhBVkVfUFJQU0lORk8zMl9UKSB8fCBkZWZpbmVkIChIQVZFX1BTSU5GTzMyX1QpCisrI2lmIGRl ZmluZWQgKEhBVkVfUFJQU0lORk8zMl9UKQorICAgaWYgKGJlZC0+cy0+ZWxmY2xhc3MgPT0gRUxG Q0xBU1MzMikKKyAgICAgeworLSNpZiBkZWZpbmVkIChIQVZFX1BTSU5GTzMyX1QpCistICAgICAg cHNpbmZvMzJfdCBkYXRhOworLSAgICAgIGludCBub3RlX3R5cGUgPSBOVF9QU0lORk87CistI2Vs c2UKKyAgICAgICBwcnBzaW5mbzMyX3QgZGF0YTsKICAgICAgICBpbnQgbm90ZV90eXBlID0gTlRf UFJQU0lORk87Ci0gI2VuZGlmCistI2VuZGlmCiAgCi0tICAgICAgbWVtc2V0ICgmZGF0YSwgMCwg c2l6ZW9mIChkYXRhKSk7CisgICAgICAgbWVtc2V0ICgmZGF0YSwgMCwgc2l6ZW9mIChkYXRhKSk7 CiAtICAgICAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwgZm5hbWUsIHNpemVvZiAoZGF0YS5wcl9m bmFtZSkpOwogLSAgICAgIHN0cm5jcHkgKGRhdGEucHJfcHNhcmdzLCBwc2FyZ3MsIHNpemVvZiAo ZGF0YS5wcl9wc2FyZ3MpKTsKLSsgICAgICBpZiAoaW5mbykKLSsJbWVtY3B5ICgmZGF0YSwgaW5m bywgc2l6ZW9mIChkYXRhKSk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgbWVtc2V0ICgmZGF0YSwg MCwgc2l6ZW9mIChkYXRhKSk7Ci0rCSAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwgZm5hbWUsIHNp emVvZiAoZGF0YS5wcl9mbmFtZSkpOwotKwkgIHN0cm5jcHkgKGRhdGEucHJfcHNhcmdzLCBwc2Fy Z3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsJfQotKworKyAgICAgIGRhdGEucHJfc3Rh dGUgPSBpbnB1dC0+cHJfc3RhdGU7CisrICAgICAgZGF0YS5wcl9zbmFtZSA9IGlucHV0LT5wcl9z bmFtZTsKKysgICAgICBkYXRhLnByX3pvbWIgPSBpbnB1dC0+cHJfem9tYjsKKysgICAgICBkYXRh LnByX25pY2UgPSBpbnB1dC0+cHJfbmljZTsKKysgICAgICBkYXRhLnByX2ZsYWcgPSBpbnB1dC0+ cHJfZmxhZzsKKysgICAgICBkYXRhLnByX3VpZCA9IGlucHV0LT5wcl91aWQ7CisrICAgICAgZGF0 YS5wcl9naWQgPSBpbnB1dC0+cHJfZ2lkOworKyAgICAgIGRhdGEucHJfcGlkID0gaW5wdXQtPnBy X3BpZDsKKysgICAgICBkYXRhLnByX3BwaWQgPSBpbnB1dC0+cHJfcHBpZDsKKysgICAgICBkYXRh LnByX3BncnAgPSBpbnB1dC0+cHJfcGdycDsKKysgICAgICBkYXRhLnByX3NpZCA9IGlucHV0LT5w cl9zaWQ7CisrICAgICAgQkZEX0FTU0VSVCAoc2l6ZW9mIChkYXRhLnByX2ZuYW1lKSA9PSBzaXpl b2YgKGlucHV0LT5wcl9mbmFtZSkpOworKyAgICAgIG1lbWNweSAoZGF0YS5wcl9mbmFtZSwgaW5w dXQtPnByX2ZuYW1lLCBzaXplb2YgKGRhdGEucHJfZm5hbWUpKTsKKysgICAgICBCRkRfQVNTRVJU IChzaXplb2YgKGRhdGEucHJfcHNhcmdzKSA9PSBzaXplb2YgKGlucHV0LT5wcl9wc2FyZ3MpKTsK KysgICAgICBtZW1jcHkgKGRhdGEucHJfcHNhcmdzLCBpbnB1dC0+cHJfcHNhcmdzLCBzaXplb2Yg KGRhdGEucHJfcHNhcmdzKSk7CiAgICAgICAgcmV0dXJuIGVsZmNvcmVfd3JpdGVfbm90ZSAoYWJm ZCwgYnVmLCBidWZzaXosCiAgCQkJCSBub3RlX25hbWUsIG5vdGVfdHlwZSwgJmRhdGEsIHNpemVv ZiAoZGF0YSkpOwogICAgICB9CiAgICBlbHNlCiAgI2VuZGlmCiAgICAgIHsKLSsvKiBnZGItNi44 LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoIG1pc2FwcGxpY2F0aW9uIGdsdWUuICAqLwot ICNpZiBkZWZpbmVkIChIQVZFX1BTSU5GT19UKQotICAgICAgIHBzaW5mb190IGRhdGE7Ci0rLyog Z2RiLTYuOC1iejI1NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaCBtaXNhcHBsaWNhdGlvbiBnbHVl LiAgKi8KLSAgICAgICBpbnQgbm90ZV90eXBlID0gTlRfUFNJTkZPOwotICNlbHNlCi0gICAgICAg cHJwc2luZm9fdCBkYXRhOworLSNpZiBkZWZpbmVkIChIQVZFX1BTSU5GT19UKQorLSAgICAgIHBz aW5mb190IGRhdGE7CistICAgICAgaW50IG5vdGVfdHlwZSA9IE5UX1BTSU5GTzsKKy0jZWxzZQor LSAgICAgIHBycHNpbmZvX3QgZGF0YTsKICAgICAgICBpbnQgbm90ZV90eXBlID0gTlRfUFJQU0lO Rk87Ci0gI2VuZGlmCistI2VuZGlmCiAgCiAtICAgICAgbWVtc2V0ICgmZGF0YSwgMCwgc2l6ZW9m IChkYXRhKSk7CiAtICAgICAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwgZm5hbWUsIHNpemVvZiAo ZGF0YS5wcl9mbmFtZSkpOwogLSAgICAgIHN0cm5jcHkgKGRhdGEucHJfcHNhcmdzLCBwc2FyZ3Ms IHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsgICAgICBpZiAoaW5mbykKLSsJbWVtY3B5ICgm ZGF0YSwgaW5mbywgc2l6ZW9mIChkYXRhKSk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgbWVtc2V0 ICgmZGF0YSwgMCwgc2l6ZW9mIChkYXRhKSk7Ci0rCSAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwg Zm5hbWUsIHNpemVvZiAoZGF0YS5wcl9mbmFtZSkpOwotKwkgIHN0cm5jcHkgKGRhdGEucHJfcHNh cmdzLCBwc2FyZ3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsJfQotKwogICAgICAgIHJl dHVybiBlbGZjb3JlX3dyaXRlX25vdGUgKGFiZmQsIGJ1ZiwgYnVmc2l6LAotIAkJCQkgbm90ZV9u YW1lLCBub3RlX3R5cGUsICZkYXRhLCBzaXplb2YgKGRhdGEpKTsKKy0JCQkJIG5vdGVfbmFtZSwg bm90ZV90eXBlLCAmZGF0YSwgc2l6ZW9mIChkYXRhKSk7CisrCQkJCSBub3RlX25hbWUsIG5vdGVf dHlwZSwgaW5wdXQsIHNpemVvZiAoKmlucHV0KSk7CiAgICAgIH0KLUluZGV4OiBnZGItNy4xL2dk Yi9hbWQ2NC1saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvYW1k NjQtbGludXgtbmF0LmMJMjAxMC0wNS0xNiAyMDoyMjozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4xL2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEwLTA1LTE2IDIwOjIyOjM4LjAwMDAwMDAw MCArMDIwMAotQEAgLTE0MCw2ICsxNDAsNyBAQCBzdGF0aWMgaW50IGFtZDY0X2xpbnV4X2dyZWdz ZXQzMl9yZWdfb2ZmCi0gCi0gc3RhdGljIGNoYXIgKgotIGFtZDY0X2xpbnV4X2VsZmNvcmVfd3Jp dGVfcHJwc2luZm8gKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNpeiwKLSsJCQkJICAg IHZvaWQgKmluZm8sCi0gCQkJCSAgICBjb25zdCBjaGFyICpmbmFtZSwgY29uc3QgY2hhciAqcHNh cmdzKQotIHsKLSAgIGlmIChnZGJhcmNoX3B0cl9iaXQgKHRhcmdldF9nZGJhcmNoKSA9PSAzMikK LUBAIC0xNDksMTQgKzE1MCwyMCBAQCBhbWQ2NF9saW51eF9lbGZjb3JlX3dyaXRlX3BycHNpbmZv IChiZmQgCi0gICAgICAgc3RydWN0IGVsZl9wcnBzaW5mbzMyIGRhdGE7Ci0gICAgICAgbm90ZV90 eXBlID0gTlRfUFJQU0lORk87Ci0gCi0tICAgICAgbWVtc2V0ICgmZGF0YSwgMCwgc2l6ZW9mIChk YXRhKSk7Ci0tICAgICAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwgZm5hbWUsIHNpemVvZiAoZGF0 YS5wcl9mbmFtZSkpOwotLSAgICAgIHN0cm5jcHkgKGRhdGEucHJfcHNhcmdzLCBwc2FyZ3MsIHNp emVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsgICAgICBpZiAoaW5mbykKLSsJbWVtY3B5ICgmZGF0 YSwgaW5mbywgc2l6ZW9mIChkYXRhKSk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgbWVtc2V0ICgm ZGF0YSwgMCwgc2l6ZW9mIChkYXRhKSk7Ci0rCSAgc3RybmNweSAoZGF0YS5wcl9mbmFtZSwgZm5h bWUsIHNpemVvZiAoZGF0YS5wcl9mbmFtZSkpOwotKwkgIHN0cm5jcHkgKGRhdGEucHJfcHNhcmdz LCBwc2FyZ3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKLSsJfQotKwotICAgICAgIHJldHVy biBlbGZjb3JlX3dyaXRlX25vdGUgKGFiZmQsIGJ1ZiwgYnVmc2l6LAotIAkJCQkgbm90ZV9uYW1l LCBub3RlX3R5cGUsICZkYXRhLCBzaXplb2YgKGRhdGEpKTsKLSAgICAgfQotICAgZWxzZQotLSAg ICByZXR1cm4gZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYWJmZCwgYnVmLCBidWZzaXosIGZuYW1l LCBwc2FyZ3MpOwotKyAgICByZXR1cm4gZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYWJmZCwgYnVm LCBidWZzaXosIGluZm8sIGZuYW1lLCBwc2FyZ3MpOwogIH0KKy0jZW5kaWYJLyogUFNJTkZPX1Qg b3IgUFJQU0lORk9fVCAqLworKyNlbmRpZgkvKiBQUlBTSU5GT19UICovCiAgCi0gc3RhdGljIHZv aWQKLUluZGV4OiBnZGItNy4xL2dkYi9mYnNkLW5hdC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MS5vcmlnL2dkYi9mYnNkLW5hdC5jCTIwMTAtMDEtMDEgMDg6MzE6MzEuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMS9nZGIvZmJzZC1uYXQuYwkyMDEwLTA1LTE2IDIwOjIyOjM4LjAwMDAwMDAw MCArMDIwMAotQEAgLTIxMSw2ICsyMTEsNyBAQCBmYnNkX21ha2VfY29yZWZpbGVfbm90ZXMgKGJm ZCAqb2JmZCwgaW50Ci0gCXBzYXJncyA9IHJlY29uY2F0IChwc2FyZ3MsIHBzYXJncywgIiAiLCBn ZXRfaW5mZXJpb3JfYXJncyAoKSwgTlVMTCk7Ci0gCi0gICAgICAgbm90ZV9kYXRhID0gZWxmY29y ZV93cml0ZV9wcnBzaW5mbyAob2JmZCwgbm90ZV9kYXRhLCBub3RlX3NpemUsCi0rCQkJCSAgICAg ICAgICBOVUxMLAotIAkJCQkJICBmbmFtZSwgcHNhcmdzKTsKLSAgICAgfQotIAotSW5kZXg6IGdk Yi03LjEvZ2RiL2xpbnV4LW5hdC5jCisgI2lmIGRlZmluZWQgKEhBVkVfUFJTVEFUVVNfVCkKKyBj aGFyICoKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9saW51eC1uYXQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0wNS0xNiAyMDoyMjoz OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9saW51eC1uYXQuYwkyMDEwLTA1LTE2 IDIwOjIyOjM4LjAwMDAwMDAwMCArMDIwMAotQEAgLTU2LDYgKzU2LDcgQEAKLSAjaW5jbHVkZSAi dGVybWluYWwuaCIKLSAjaW5jbHVkZSA8c3lzL3Zmcy5oPgotICNpbmNsdWRlICJzb2xpYi5oIgot KyNpbmNsdWRlICJnZGJfcHJvY2ZzMzIuaCIJLyogZm9yIHN0cnVjdCBlbGZfcHJwc2luZm8zMiAq LwotIAotICNpZm5kZWYgU1BVRlNfTUFHSUMKLSAjZGVmaW5lIFNQVUZTX01BR0lDIDB4MjNjOWI2 NGUKLUBAIC0yMjgsNyArMjI5LDcgQEAgc3RhdGljIExPTkdFU1QgKCpzdXBlcl94ZmVyX3BhcnRp YWwpIChzdAotIC8qIFRoaXMgZnVuY3Rpb25zIG1ha2UgZWxmY29yZSBub3RlIHNlY3Rpb25zLgot ICAgIFRoZXkgbWF5IGdldCBvdmVycmlkZW4gYnkgY29kZSBhZGp1c3RpbmcgZGF0YSBmb3IgbXVs dGktdGFyZ2V0IGJ1aWxkcy4gICovCi0gY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3BycHNp bmZvKQotLSAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg KikgPSBlbGZjb3JlX3dyaXRlX3BycHNpbmZvOwotKyAgKGJmZCAqLCBjaGFyICosIGludCAqLCB2 b2lkICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKSA9IGVsZmNvcmVfd3JpdGVfcHJwc2lu Zm87Ci0gY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3Byc3RhdHVzKQotICAgKGJmZCAqLCBj aGFyICosIGludCAqLCBsb25nLCBpbnQsIGNvbnN0IHZvaWQgKikgPSBlbGZjb3JlX3dyaXRlX3By c3RhdHVzOwotIHN0YXRpYyBjaGFyICoKLUBAIC00NTA3LDYgKzQ1MDgsMTU5IEBAIGxpbnV4X3Nw dV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzEx Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDctMTIgMjM6MDU6MjIuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmMJMjAxMC0wNy0xMiAyMjo1 NzozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NDY2LDYgKzQ0NjYsMTMxIEBAIGxpbnV4X3NwdV9t YWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKICAgIHJldHVybiBhcmdzLm5vdGVfZGF0YTsK ICB9CiAgCkBAIC0xNTMsNyArMTI1LDcgQEAgSW5kZXg6IGdkYi03LjEvZ2RiL2xpbnV4LW5hdC5j CiArICAgYmluZm10X2VsZi5jLiAgVW5rbm93biB2YWx1ZXMgYXJlIGZpbGxlZCB3aXRoIHplcm9l cy4gIFRoZSBzdHJ1Y3R1cmUgaXMKICsgICBtYWxsb2NlZC4gICovCiArCi0rc3RhdGljIHZvaWQq Cisrc3RhdGljIGNvbnN0IHBycHNpbmZvX3QgKgogK2ZpbGxfcHJwc2luZm8gKHZvaWQpCiArewog KyAgc3RydWN0IHN0YXQgc2I7CkBAIC0xNzMsNiArMTQ1LDcgQEAgSW5kZXg6IGdkYi03LjEvZ2Ri L2xpbnV4LW5hdC5jCiArICAgICBvYnNvbGV0ZSB0aGVyZSB0byA8bGludXgvc2NoZWQuaD4gVEFT S18qIGNvbnN0YW50cy4gICovCiArICBjb25zdCBjaGFyIHN0YXRlX3N0cmluZ1tdID0gIlJTRFRa VyI7CiArICBpbnQgc3RhdGVfbnVtOworKyAgc3RhdGljIHBycHNpbmZvX3QgcmV0dmFsOwogKwog KyAgLyogR2V0IC9wcm9jLyRQSUQvc3RhdC4gICovCiArICBwaWQgPSBwdGlkX2dldF9waWQgKGlu ZmVyaW9yX3B0aWQpOwpAQCAtMjQ5LDEwOCArMjIyLDYzIEBAIEluZGV4OiBnZGItNy4xL2dkYi9s aW51eC1uYXQuYwogKyAgICAgIHN0YXRlX251bSA9IDA7CiArICAgIH0KICsKLSsjaWYgVUxPTkdf TUFYID4gMHhmZmZmZmZmZlUKLSsgIC8qIFdlIHNraXAgdGhpcyBjb2RlIG9uIDMyLWJpdCBnZGIu ICAqLwotKyAgaWYgKGdkYmFyY2hfcHRyX2JpdCAodGFyZ2V0X2dkYmFyY2gpID09IDY0KQotKyAg ICB7Ci0rICAgICAgc3RydWN0IGVsZl9wcnBzaW5mbyAqaW5mbyA9IHh6YWxsb2MgKHNpemVvZiAo KmluZm8pKTsKLSsKLSsgICAgICBpbmZvLT5wcl9zdGF0ZSA9IHN0YXRlX251bTsKLSsgICAgICBp bmZvLT5wcl9zbmFtZSA9IHByb2Nfc3RhdGVbMF07Ci0rICAgICAgaW5mby0+cHJfem9tYiA9IChw cm9jX3N0YXRlWzBdID09ICdaJyk7Ci0rICAgICAgaW5mby0+cHJfbmljZSA9IHByb2NfbmljZTsK LSsgICAgICBpbmZvLT5wcl9mbGFnID0gZmxhZ3M7Ci0rICAgICAgaW5mby0+cHJfdWlkID0gc2Iu c3RfdWlkOwotKyAgICAgIGluZm8tPnByX2dpZCA9IHNiLnN0X2dpZDsKLSsgICAgICBpbmZvLT5w cl9waWQgPSBwaWQ7Ci0rICAgICAgaW5mby0+cHJfcHBpZCA9IHByb2NfcHBpZDsKLSsgICAgICBp bmZvLT5wcl9wZ3JwID0gcHJvY19wZ2lkOwotKyAgICAgIGluZm8tPnByX3NpZCA9IHByb2Nfc2lk OwotKyAgICAgIHN0cm5jcHkgKGluZm8tPnByX2ZuYW1lLCBwcm9jX2NvbW0sIHNpemVvZiAoaW5m by0+cHJfZm5hbWUpKTsKLSsgICAgICBzdHJuY3B5IChpbmZvLT5wcl9wc2FyZ3MsIHByb2NfY21k bGluZSwgc2l6ZW9mIChpbmZvLT5wcl9wc2FyZ3MpKTsKLSsKLSsgICAgICByZXR1cm4gaW5mbzsK LSsgICAgfQotKyNlbmRpZgotKyAgaWYgKGdkYmFyY2hfcHRyX2JpdCAodGFyZ2V0X2dkYmFyY2gp ID09IDMyKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGVsZl9wcnBzaW5mbzMyICppbmZvID0geHph bGxvYyAoc2l6ZW9mICgqaW5mbykpOwotKwotKyAgICAgIGluZm8tPnByX3N0YXRlID0gc3RhdGVf bnVtOwotKyAgICAgIGluZm8tPnByX3NuYW1lID0gcHJvY19zdGF0ZVswXTsKLSsgICAgICBpbmZv LT5wcl96b21iID0gKHByb2Nfc3RhdGVbMF0gPT0gJ1onKTsKLSsgICAgICBpbmZvLT5wcl9uaWNl ID0gcHJvY19uaWNlOwotKyAgICAgIGluZm8tPnByX2ZsYWcgPSBmbGFnczsKLSsgICAgICBpbmZv LT5wcl91aWQgPSBzYi5zdF91aWQ7Ci0rICAgICAgaW5mby0+cHJfZ2lkID0gc2Iuc3RfZ2lkOwot KyAgICAgIGluZm8tPnByX3BpZCA9IHBpZDsKLSsgICAgICBpbmZvLT5wcl9wcGlkID0gcHJvY19w cGlkOwotKyAgICAgIGluZm8tPnByX3BncnAgPSBwcm9jX3BnaWQ7Ci0rICAgICAgaW5mby0+cHJf c2lkID0gcHJvY19zaWQ7Ci0rICAgICAgc3RybmNweSAoaW5mby0+cHJfZm5hbWUsIHByb2NfY29t bSwgc2l6ZW9mIChpbmZvLT5wcl9mbmFtZSkpOwotKyAgICAgIHN0cm5jcHkgKGluZm8tPnByX3Bz YXJncywgcHJvY19jbWRsaW5lLCBzaXplb2YgKGluZm8tPnByX3BzYXJncykpOwotKwotKyAgICAg IHJldHVybiBpbmZvOwotKyAgICB9CisrICBtZW1zZXQgKCZyZXR2YWwsIDAsIHNpemVvZiAocmV0 dmFsKSk7CisrICByZXR2YWwucHJfc3RhdGUgPSBzdGF0ZV9udW07CisrICByZXR2YWwucHJfc25h bWUgPSBwcm9jX3N0YXRlWzBdOworKyAgcmV0dmFsLnByX3pvbWIgPSAocHJvY19zdGF0ZVswXSA9 PSAnWicpOworKyAgcmV0dmFsLnByX25pY2UgPSBwcm9jX25pY2U7CisrICByZXR2YWwucHJfZmxh ZyA9IGZsYWdzOworKyAgcmV0dmFsLnByX3VpZCA9IHNiLnN0X3VpZDsKKysgIHJldHZhbC5wcl9n aWQgPSBzYi5zdF9naWQ7CisrICByZXR2YWwucHJfcGlkID0gcGlkOworKyAgcmV0dmFsLnByX3Bw aWQgPSBwcm9jX3BwaWQ7CisrICByZXR2YWwucHJfcGdycCA9IHByb2NfcGdpZDsKKysgIHJldHZh bC5wcl9zaWQgPSBwcm9jX3NpZDsKKysgIHN0cm5jcHkgKHJldHZhbC5wcl9mbmFtZSwgcHJvY19j b21tLCBzaXplb2YgKHJldHZhbC5wcl9mbmFtZSkpOworKyAgc3RybmNweSAocmV0dmFsLnByX3Bz YXJncywgcHJvY19jbWRsaW5lLCBzaXplb2YgKHJldHZhbC5wcl9wc2FyZ3MpKTsKICsKLSsgIHJl dHVybiBOVUxMOworKyAgcmV0dXJuICZyZXR2YWw7CiArfQogKyNlbmRpZgogKwogIC8qIEZpbGxz IHRoZSAidG9fbWFrZV9jb3JlZmlsZV9ub3RlIiB0YXJnZXQgdmVjdG9yLiAgQnVpbGRzIHRoZSBu b3RlCiAgICAgc2VjdGlvbiBmb3IgYSBjb3JlZmlsZSwgYW5kIHJldHVybnMgaXQgaW4gYSBtYWxs b2MgYnVmZmVyLiAgKi8KICAKLUBAIC00NTI3LDggKzQ2ODEsMTQgQEAgbGludXhfbmF0X21ha2Vf Y29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAorQEAgLTQ0ODQsMjYgKzQ2MDksMTEgQEAgbGludXhf bmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAogIAogICAgaWYgKGdldF9leGVjX2Zp bGUgKDApKQogICAgICB7Ci0rI2lmIGRlZmluZWQgKEhBVkVfUFJQU0lORk9fVCkKLSsgICAgICB2 b2lkICpkYXRhID0gZmlsbF9wcnBzaW5mbyAoKTsKLSsjZGVmaW5lIERBVEFQVFIgZGF0YQotKyNl bHNlCi0rI2RlZmluZSBEQVRBUFRSIE5VTEwKLSAgICAgICBzdHJuY3B5IChmbmFtZSwgc3RycmNo ciAoZ2V0X2V4ZWNfZmlsZSAoMCksICcvJykgKyAxLCBzaXplb2YgKGZuYW1lKSk7Ci0gICAgICAg c3RybmNweSAocHNhcmdzLCBnZXRfZXhlY19maWxlICgwKSwgc2l6ZW9mIChwc2FyZ3MpKTsKLSsj ZW5kaWYKLSAgICAgICBpZiAoZ2V0X2luZmVyaW9yX2FyZ3MgKCkpCi0gCXsKLSAJICBjaGFyICpz dHJpbmdfZW5kOwotQEAgLTQ1NDQsOSArNDcwNCwxNSBAQCBsaW51eF9uYXRfbWFrZV9jb3JlZmls ZV9ub3RlcyAoYmZkICpvYmZkCi0gCQkgICAgICAgcHNhcmdzX2VuZCAtIHN0cmluZ19lbmQpOwot IAkgICAgfQotIAl9Ci0tICAgICAgbm90ZV9kYXRhID0gKGNoYXIgKikgbGludXhfZWxmY29yZV93 cml0ZV9wcnBzaW5mbyAob2JmZCwgbm90ZV9kYXRhLAotLQkJCQkJCQkgbm90ZV9zaXplLCBmbmFt ZSwKLSsgICAgICBub3RlX2RhdGEgPSAoY2hhciAqKSBsaW51eF9lbGZjb3JlX3dyaXRlX3BycHNp bmZvIChvYmZkLAotKwkJCQkJCQkgbm90ZV9kYXRhLCBub3RlX3NpemUsCi0rCQkJCQkJCSBEQVRB UFRSLAotKwkJCQkJCQkgZm5hbWUsCi0gCQkJCQkJCSBwc2FyZ3MpOwotKyNpZiBkZWZpbmVkIChI QVZFX1BSUFNJTkZPX1QpCi0rICAgICAgeGZyZWUgKERBVEFQVFIpOwotKyNlbmRpZgotKyN1bmRl ZiBEQVRBUFRSCistICAgICAgc3RybmNweSAoZm5hbWUsIHN0cnJjaHIgKGdldF9leGVjX2ZpbGUg KDApLCAnLycpICsgMSwgc2l6ZW9mIChmbmFtZSkpOworLSAgICAgIHN0cm5jcHkgKHBzYXJncywg Z2V0X2V4ZWNfZmlsZSAoMCksIHNpemVvZiAocHNhcmdzKSk7CistICAgICAgaWYgKGdldF9pbmZl cmlvcl9hcmdzICgpKQorLQl7CistCSAgY2hhciAqc3RyaW5nX2VuZDsKKy0JICBjaGFyICpwc2Fy Z3NfZW5kID0gcHNhcmdzICsgc2l6ZW9mIChwc2FyZ3MpOworLQorLQkgIC8qIGxpbnV4X2VsZmNv cmVfd3JpdGVfcHJwc2luZm8gKCkgaGFuZGxlcyB6ZXJvIHVudGVybWluYXRlZAorLQkgICAgIHN0 cmluZ3MgZmluZS4gICovCistCSAgc3RyaW5nX2VuZCA9IG1lbWNociAocHNhcmdzLCAwLCBzaXpl b2YgKHBzYXJncykpOworLQkgIGlmIChzdHJpbmdfZW5kICE9IE5VTEwpCistCSAgICB7CistCSAg ICAgICpzdHJpbmdfZW5kKysgPSAnICc7CistCSAgICAgIHN0cm5jcHkgKHN0cmluZ19lbmQsIGdl dF9pbmZlcmlvcl9hcmdzICgpLAorLQkJICAgICAgIHBzYXJnc19lbmQgLSBzdHJpbmdfZW5kKTsK Ky0JICAgIH0KKy0JfQorKyAgICAgIGNvbnN0IHBycHNpbmZvX3QgKmRhdGEgPSBmaWxsX3BycHNp bmZvICgpOworKworICAgICAgIG5vdGVfZGF0YSA9IChjaGFyICopIGVsZmNvcmVfd3JpdGVfcHJw c2luZm8gKG9iZmQsCisgCQkJCQkJICAgbm90ZV9kYXRhLAorLQkJCQkJCSAgIG5vdGVfc2l6ZSwg Zm5hbWUsIHBzYXJncyk7CisrCQkJCQkJICAgbm90ZV9zaXplLCBkYXRhKTsKICAgICAgfQogIAog ICAgLyogRHVtcCBpbmZvcm1hdGlvbiBmb3IgdGhyZWFkcy4gICovCi1JbmRleDogZ2RiLTcuMS9n ZGIvbGludXgtbmF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL2xpbnV4LW5h dC5oCTIwMTAtMDUtMTYgMjA6MjI6MzcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIv bGludXgtbmF0LmgJMjAxMC0wNS0xNiAyMDoyMjozOC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNzMs NyArMTczLDcgQEAgaW50IGxpbnV4X25hdF9jb3JlX29mX3RocmVhZF8xIChwdGlkX3QgcAotIC8q IFRoZXNlIGZ1bmN0aW9ucyBtYWtlIGVsZmNvcmUgbm90ZSBzZWN0aW9ucy4KLSAgICBUaGV5IG1h eSBnZXQgb3ZlcnJpZGVuIGJ5IGNvZGUgYWRqdXN0aW5nIGRhdGEgZm9yIG11bHRpLXRhcmdldCBi dWlsZHMuICAqLwotIGV4dGVybiBjaGFyICooKmxpbnV4X2VsZmNvcmVfd3JpdGVfcHJwc2luZm8p Ci0tICAoYmZkICosIGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsK LSsgIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgdm9pZCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNo YXIgKik7Ci0gZXh0ZXJuIGNoYXIgKigqbGludXhfZWxmY29yZV93cml0ZV9wcnN0YXR1cykKLSAg IChiZmQgKiwgY2hhciAqLCBpbnQgKiwgbG9uZywgaW50LCBjb25zdCB2b2lkICopOwotIGV4dGVy biBjaGFyICooKmxpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZykKLUluZGV4OiBnZGItNy4xL2dk Yi9wcm9jZnMuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Byb2Nmcy5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi9wcm9jZnMuYwkyMDEwLTAyLTE1IDE4OjM1OjQ5 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2RiL3Byb2Nmcy5jCTIwMTAtMDUtMTYgMjA6 MjI6MzguMDAwMDAwMDAwICswMjAwCi1AQCAtNjE4NCw2ICs2MTg0LDcgQEAgcHJvY2ZzX21ha2Vf bm90ZV9zZWN0aW9uIChiZmQgKm9iZmQsIGludAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvcHJvY2ZzLmMJMjAxMC0wNy0wNyAxODoxNToxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy4xLjkwLjIwMTAwNzExL2dkYi9wcm9jZnMuYwkyMDEwLTA3LTEyIDIzOjA1OjIzLjAwMDAw MDAwMCArMDIwMAorQEAgLTU3NzAsNiArNTc3MCw3IEBAIHByb2Nmc19tYWtlX25vdGVfc2VjdGlv biAoYmZkICpvYmZkLCBpbnQKICAgIG5vdGVfZGF0YSA9IChjaGFyICopIGVsZmNvcmVfd3JpdGVf cHJwc2luZm8gKG9iZmQsCiAgCQkJCQkgICAgICAgbm90ZV9kYXRhLAogIAkJCQkJICAgICAgIG5v dGVfc2l6ZSwKCmRpZmYgLS1naXQgYS9nZGItNi44LWJ6NDY2OTAxLWJhY2t0cmFjZS1mdWxsLXBy ZWxpbmtlZC5wYXRjaCBiL2dkYi02LjgtYno0NjY5MDEtYmFja3RyYWNlLWZ1bGwtcHJlbGlua2Vk LnBhdGNoCmluZGV4IGY5ZWMzNDkuLjIyMTFmYTMgMTAwNjQ0Ci0tLSBhL2dkYi02LjgtYno0NjY5 MDEtYmFja3RyYWNlLWZ1bGwtcHJlbGlua2VkLnBhdGNoCisrKyBiL2dkYi02LjgtYno0NjY5MDEt YmFja3RyYWNlLWZ1bGwtcHJlbGlua2VkLnBhdGNoCkBAIC0xLDIwICsxLDUgQEAKIEZpeCByZXNv bHZpbmcgb2YgdmFyaWFibGVzIGF0IGxvY2F0aW9ucyBsaXN0cyBpbiBwcmVsaW5rZWQgbGlicyAo QlogNDY2OTAxKS4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2R3YXJmMmxvYy5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9kd2FyZjJsb2Mu YwkyMDA5LTA5LTA5IDIwOjA4OjAzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAw OTA5MDkvZ2RiL2R3YXJmMmxvYy5jCTIwMDktMDktMDkgMjA6MTA6MzUuMDAwMDAwMDAwICswMjAw Ci1AQCAtNTYsNyArNTYsOSBAQCBmaW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKHN0cnVjdCBkd2Fy ZjJfCi0gICBDT1JFX0FERFIgbG93LCBoaWdoOwotICAgZ2RiX2J5dGUgKmxvY19wdHIsICpidWZf ZW5kOwotICAgaW50IGxlbmd0aDsKLS0gIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYy X3Blcl9jdV9vYmpmaWxlIChiYXRvbi0+cGVyX2N1KTsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlMSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAoYmF0b24tPnBlcl9jdSk7Ci0rICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IG9iamZpbGUxLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlCi0rCQkJ ICAgID8gb2JqZmlsZTEtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgOiBvYmpmaWxlMTsKLSAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0gICBl bnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7 Ci0gICB1bnNpZ25lZCBpbnQgYWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKGJh dG9uLT5wZXJfY3UpOwogSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1sb2NsaXN0LXByZWxpbmtlZC5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKCmRpZmYgLS1naXQgYS9n ZGItNi44LWNvbnN0YW50LXdhdGNocG9pbnRzLnBhdGNoIGIvZ2RiLTYuOC1jb25zdGFudC13YXRj aHBvaW50cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0YzBjNy4uMDAw MDAwMAotLS0gYS9nZGItNi44LWNvbnN0YW50LXdhdGNocG9pbnRzLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjM2ICswLDAgQEAKLTIwMDgtMDctMTAgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogYnJlYWtwb2ludC5jIChmZXRjaF93YXRjaHBvaW50 X3ZhbHVlKTogTmV3IGNvbW1lbnQgb24gdW5yZWFjaGFibGUKLQl2YWx1ZXMuCi0JKHdhdGNoX2Nv bW1hbmRfMSk6IE5ldyB2YXJpYWJsZSBWQUxfQ0hBSU4uICBSZWZ1c2UgY29uc3RhbnQgd2F0Y2hw b2ludHMuCi0JKiBnZGJ0eXBlcy5oIChUWVBFX0NPREVfRlVOQyk6IE5ldyBjb21tZW50IHJlZ2Fy ZGluZyBwb2ludGVycyB0byBpdC4KLQotMjAwOC0wNy0xMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIudGV4aW5mbyAoU2V0IFdhdGNocG9pbnRz KTogRG9jdW1lbnQgY29uc3RhbnQgdmFsdWUgd2F0Y2hwb2ludHMuCi0KLTIwMDgtMDctMTAgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2Uv d2F0Y2hwb2ludC5leHA6IENhbGwgVEVTVF9DT05TVEFOVF9XQVRDSFBPSU5ULgotCSh0ZXN0X2Nv bnN0YW50X3dhdGNocG9pbnQpOiBOZXcgZnVuY3Rpb24uCi0JKHRlc3RfaW5hY2Nlc3NpYmxlX3dh dGNocG9pbnQpOiBDbGVhbnVwIChkZWxldGUpIHRoZSB3YXRjaHBvaW50LgotCVRlc3QgYWxzbyBh IGRvdWJsZS1pbmRpcmVjdGlvbiB3YXRjaHBvaW50LgotCWdkYi5iYXNlL3dhdGNocG9pbnQuYyAo Z2xvYmFsX3B0cl9wdHIpOiBOZXcgdmFyaWFibGUuCi0JKGZ1bmM0KTogTmV3IHRlc3RpbmcgY29k ZSBmb3IgR0xPQkFMX1BUUl9QVFIuCi0KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9i cmVha3BvaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L2JyZWFrcG9pbnQuYwkyMDEwLTAxLTE1IDExOjQ2OjI5LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAxLTE1IDExOjQ5OjQ5LjAw MDAwMDAwMCArMDEwMAotQEAgLTk0Nyw3ICs5NDcsMTUgQEAgaXNfaGFyZHdhcmVfd2F0Y2hwb2lu dCAoc3RydWN0IGJyZWFrcG9pbgotICAgIElmIFZBTF9DSEFJTiBpcyBub24tTlVMTCwgKlZBTF9D SEFJTiB3aWxsIGJlIHJlbGVhc2VkIGZyb20gdGhlCi0gICAgdmFsdWUgY2hhaW4uICBUaGUgY2Fs bGVyIG11c3QgZnJlZSB0aGUgdmFsdWVzIGluZGl2aWR1YWxseS4gIElmCi0gICAgVkFMX0NIQUlO IGlzIE5VTEwsIGFsbCBnZW5lcmF0ZWQgdmFsdWVzIHdpbGwgYmUgbGVmdCBvbiB0aGUgdmFsdWUK LS0gICBjaGFpbi4gICovCi0rICAgY2hhaW4uCi0rICAgCi0rICAgSW5mZXJpb3IgdW5yZWFjaGFi bGUgdmFsdWVzIHJldHVybjoKLSsgICBJbmZlcmlvciBgaW50ICppbnRwID0gTlVMTDsnIHdpdGgg YHdhdGNoICppbnRwJzoKLSsgICAgICpWQUxQIGlzIE5VTEwsICpSRVNVTFRQIGNvbnRhaW5zIGxh enkgTFZBTF9NRU1PUlkgYWRkcmVzcyAwLCAqVkFMX0NIQUlOCi0rICAgICBjb250YWlucyB0aGUg KlJFU1VMVFAgZWxlbWVudCBhbmQgYWxzbyBJTlRQIGFzIExWQUxfTUVNT1JZLgotKyAgIEluZmVy aW9yIGBpbnQgKippbnRwcCA9IE5VTEw7JyB3aXRoIGB3YXRjaCAqKmludHBwJzoKLSsgICAgICpW QUxQIGlzIE5VTEwsICpSRVNVTFRQIGlzIE5VTEwsICpWQUxfQ0hBSU4gY29udGFpbnMgbGF6eSBM VkFMX01FTU9SWQotKyAgICAgYWRkcmVzcyAwIGFuZCBhbHNvIElOVFBQIGFzIExWQUxfTUVNT1JZ LiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIGZldGNoX3dhdGNocG9pbnRfdmFsdWUgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIHN0cnVjdCB2YWx1ZSAqKnZhbHAsCi1AQCAtNzI2NCw3ICs3MjcyLDcg QEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3NmbAotICAgc3RydWN0IGJy ZWFrcG9pbnQgKmIsICpzY29wZV9icmVha3BvaW50ID0gTlVMTDsKLSAgIHN0cnVjdCBleHByZXNz aW9uICpleHA7Ci0gICBzdHJ1Y3QgYmxvY2sgKmV4cF92YWxpZF9ibG9jazsKLS0gIHN0cnVjdCB2 YWx1ZSAqdmFsLCAqbWFyazsKLSsgIHN0cnVjdCB2YWx1ZSAqdmFsLCAqbWFyaywgKnZhbF9jaGFp bjsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKLSAgIGNoYXIgKmV4cF9zdGFydCA9IE5V TEw7Ci0gICBjaGFyICpleHBfZW5kID0gTlVMTDsKLUBAIC03MzUyLDYgKzczNjAsMjcgQEAgd2F0 Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3NmbAotICAgZXhwX3ZhbGlkX2Jsb2Nr ID0gaW5uZXJtb3N0X2Jsb2NrOwotICAgbWFyayA9IHZhbHVlX21hcmsgKCk7Ci0gICBmZXRjaF93 YXRjaHBvaW50X3ZhbHVlIChleHAsICZ2YWwsIE5VTEwsIE5VTEwpOwotKwotKyAgLyogVkFMVUVf TUFSSyBnZXRzIHVzIHRoZSBzYW1lIHZhbHVlIGFzIEZFVENIX1dBVENIUE9JTlRfVkFMVUUncyBW QUxfQ0hBSU4KLSsgICAgIHBhcmFtZXRlci4gIEp1c3QgdGhpcyB3YXkgd2UgZG8gbm90IGhhdmUg dG8gVkFMVUVfRlJFRSB0aGUgY2hhaW5lZCBWQUxVRXMKLSsgICAgIG91cnNlbHZlcy4gICovCi0r ICBmb3IgKHZhbF9jaGFpbiA9IHZhbHVlX21hcmsgKCk7Ci0rICAgICAgIHZhbF9jaGFpbiAhPSBt YXJrOwotKyAgICAgICB2YWxfY2hhaW4gPSB2YWx1ZV9uZXh0ICh2YWxfY2hhaW4pKQotKyAgICBp ZiAoKFZBTFVFX0xWQUwgKHZhbF9jaGFpbikgPT0gbHZhbF9tZW1vcnkKLSsJICYmIFRZUEVfQ09E RSAodmFsdWVfdHlwZSAodmFsX2NoYWluKSkgIT0gVFlQRV9DT0RFX0ZVTkMpCi0rCXx8IFZBTFVF X0xWQUwgKHZhbF9jaGFpbikgPT0gbHZhbF9yZWdpc3RlcikKLSsgICAgICBicmVhazsKLSsgIGlm ICh2YWxfY2hhaW4gPT0gbWFyaykKLSsgICAgewotKyAgICAgIGludCBsZW47Ci0rICAgICAgCi0r ICAgICAgbGVuID0gZXhwX2VuZCAtIGV4cF9zdGFydDsKLSsgICAgICB3aGlsZSAobGVuID4gMCAm JiBpc3NwYWNlIChleHBfc3RhcnRbbGVuIC0gMV0pKQotKwlsZW4tLTsKLSsgICAgICBlcnJvciAo XygiQ2Fubm90IHdhdGNoIGNvbnN0YW50IHZhbHVlICUuKnMuIiksIGxlbiwgZXhwX3N0YXJ0KTsK LSsgICAgfQotKyAgLyogQnJlYWsgdGhlIHZhbHVlcyBjaGFpbiBvbmx5IGFmdGVyIGl0cyBjaGVj ayBhYm92ZS4gICovCi0gICBpZiAodmFsICE9IE5VTEwpCi0gICAgIHJlbGVhc2VfdmFsdWUgKHZh bCk7Ci0gCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlwZXMuaAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEwLTAx LTE1IDAzOjIyOjMxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAxMTo0OToyNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC03Miw3 ICs3MiwyMiBAQCBlbnVtIHR5cGVfY29kZQotICAgICBUWVBFX0NPREVfVU5JT04sCQkvKiBDIHVu aW9uIG9yIFBhc2NhbCB2YXJpYW50IHBhcnQgKi8KLSAgICAgVFlQRV9DT0RFX0VOVU0sCQkvKiBF bnVtZXJhdGlvbiB0eXBlICovCi0gICAgIFRZUEVfQ09ERV9GTEFHUywJCS8qIEJpdCBmbGFncyB0 eXBlICovCi0tICAgIFRZUEVfQ09ERV9GVU5DLAkJLyogRnVuY3Rpb24gdHlwZSAqLwotKwotKyAg ICAvKiBGdW5jdGlvbiB0eXBlLiAgSXQgaXMgbm90IGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uLiAg RnVuY3Rpb24gcmVmZXJlbmNlCi0rICAgICAgIGJ5IGl0cyBuYW1lIChzdWNoIGFzIGBwcmludGYn KSBoYXMgdGhpcyB0eXBlLiAgQyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzCi0rICAgICAgIHRoaXMg ZnVuY3Rpb24gdHlwZSB0byBhIHBvaW50ZXIgdG8gZnVuY3Rpb24gZm9yIGFueSBvcGVyYXRpb24g ZXhjZXB0Ci0rICAgICAgIGBzaXplb2YgKGZ1bmN0aW9uX3R5cGUpJyBvciBgJmZ1bmN0aW9uX3R5 cGUnICh1bmFyeSAmKS4KLSsgICAgICAgYHNpemVvZiAoZnVuY3Rpb25fdHlwZSknIGlzIHVuZGVm aW5lZCBpbiBDLiAgQnV0IEdDQyBwcm92aWRlcyBleHRlbnNpb24KLSsgICAgICAgKGluZm8gJyhn Y2MpUG9pbnRlciBBcml0aCcpIGRlZmluaW5nIGl0cyBzaXplIGFzIDEgYnl0ZS4gIERXQVJGIGRv ZXMgbm90Ci0rICAgICAgIGRlZmluZSBpdHMgc2l6ZSBidXQgR0RCIGRlZmluZXMgdGhlIHNpemUg dGhlIEdDQyBjb21wYXRpYmxlIHdheSAtIEdEQgotKyAgICAgICBmdW5jdGlvbiBNQUtFX0ZVTkNU SU9OX1RZUEUuICBUaGUgYWRkcmVzcyBpdHNlbGYgaXMgbm90IG1vZGlmaWFibGUuCi0rICAgICAg IEFzIHRoZSBmdW5jdGlvbiB0eXBlIGhhcyBzaXplIDEgYnV0IGl0cyByZWFsIHZhbHVlIGhhcyBg c2l6ZW9mCi0rICAgICAgIChDT1JFX0FERFIpJyB3ZSBjYW5ub3QgdXNlIE5PVF9MVkFMIGNhdGVn b3J5IGJlY2F1c2UgdGhlIGFkZHJlc3Mgd291bGQKLSsgICAgICAgbm90IGZpdCBpbiB0aGUgVkFM VUVfQ09OVEVOVFNfUkFXIGNvbnRhaW5lciBvZiBpdHMgVkFMVUUuICBXZSB1c2UKLSsgICAgICAg TFZBTF9NRU1PUlkgKGFuZCBpdHMgVkFMVUVfQUREUkVTUyBmaWVsZCkgZm9yIGl0IGJ1dCB3ZSBt dXN0IGJlIGNhcmVmdWwKLSsgICAgICAgaXQgaXMgbm90IGx2YWx1ZSwgaXQgaXMgdGhlIG9ubHkg bm9uLW1vZGlmaWFibGUgTFZBTF9NRU1PUlkuICAqLwotKyAgICBUWVBFX0NPREVfRlVOQywKLSsK LSAgICAgVFlQRV9DT0RFX0lOVCwJCS8qIEludGVnZXIgdHlwZSAqLwotIAotICAgICAvKiBGbG9h dGluZyB0eXBlLiAgVGhpcyBpcyAqTk9UKiBhIGNvbXBsZXggdHlwZS4gIEJld2FyZSwgdGhlcmUg YXJlIHBhcnRzCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9jL2dkYi50ZXhpbmZv Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAxMTo0OToyNi4wMDAwMDAw MDAgKzAxMDAKLUBAIC0zNzIzLDYgKzM3MjMsMTggQEAgVGhpcyBjb21tYW5kIHByaW50cyBhIGxp c3Qgb2Ygd2F0Y2hwb2ludAotIGl0IGlzIHRoZSBzYW1lIGFzIEBjb2Rle2luZm8gYnJlYWt9IChA cHhyZWZ7U2V0IEJyZWFrc30pLgotIEBlbmQgdGFibGUKLSAKLStJZiB5b3Ugd2F0Y2ggZm9yIGEg Y2hhbmdlIGluIGEgbnVtZXJpY2FsbHkgZW50ZXJlZCBhZGRyZXNzIHlvdSBuZWVkIHRvCi0rZGVy ZWZlcmVuY2UgaXQgYXMgdGhlIGFkZHJlc3MgaXRzZWxmIGlzIGp1c3QgYSBjb25zdGFudCBudW1i ZXIgd2hpY2ggd2lsbCBuZXZlcgotK2NoYW5nZS4gIEB2YWx1ZXtHREJOfSByZWZ1c2VzIHRvIGNy ZWF0ZSBhIHdhdGNocG9pbnQgdGhhdCB3YXRjaGVzCi0rYSBuZXZlci1jaGFuZ2luZyB2YWx1ZToK LSsKLStAc21hbGxleGFtcGxlCi0rKEB2YWx1ZXtHREJQfSkgd2F0Y2ggMHg2MDA4NTAKLStDYW5u b3Qgd2F0Y2ggY29uc3RhbnQgdmFsdWUgMHg2MDA4NTAuCi0rKEB2YWx1ZXtHREJQfSkgd2F0Y2gg KihpbnQgKikgMHg2MDA4NTAKLStXYXRjaHBvaW50IDE6ICooaW50ICopIDYyOTM1ODQKLStAZW5k IHNtYWxsZXhhbXBsZQotKwotIEB2YWx1ZXtHREJOfSBzZXRzIGEgQGRmbntoYXJkd2FyZSB3YXRj aHBvaW50fSBpZiBwb3NzaWJsZS4gIEhhcmR3YXJlCi0gd2F0Y2hwb2ludHMgZXhlY3V0ZSB2ZXJ5 IHF1aWNrbHksIGFuZCB0aGUgZGVidWdnZXIgcmVwb3J0cyBhIGNoYW5nZSBpbgotIHZhbHVlIGF0 IHRoZSBleGFjdCBpbnN0cnVjdGlvbiB3aGVyZSB0aGUgY2hhbmdlIG9jY3Vycy4gIElmIEB2YWx1 ZXtHREJOfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS93YXRjaHBvaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmMJMjAwOS0xMi0zMCAxODozMzozNS4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2Uvd2F0Y2hwb2ludC5jCTIwMTAtMDEtMTUgMTE6NDk6MjYuMDAwMDAwMDAwICswMTAwCi1A QCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgZm9vIHN0cnVjdDEsIHN0cnVjdDIsICpwdHIxLCAqcHRy Ci0gaW50IGRvcmVhZCA9IDA7Ci0gCi0gY2hhciAqZ2xvYmFsX3B0cjsKLStjaGFyICoqZ2xvYmFs X3B0cl9wdHI7Ci0gCi0gdm9pZCBtYXJrZXIxICgpCi0gewotQEAgLTExOSw2ICsxMjAsMTAgQEAg ZnVuYzQgKCkKLSAgIGJ1ZlswXSA9IDM7Ci0gICBnbG9iYWxfcHRyID0gYnVmOwotICAgYnVmWzBd ID0gNzsKLSsgIGJ1ZlsxXSA9IDU7Ci0rICBnbG9iYWxfcHRyX3B0ciA9ICZnbG9iYWxfcHRyOwot KyAgYnVmWzBdID0gOTsKLSsgIGdsb2JhbF9wdHIrKzsKLSB9Ci0gCi0gaW50IG1haW4gKCkKLUlu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2lu dC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmV4cAkyMDEwLTAxLTAxIDA4OjMyOjAxLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LmV4cAkyMDEwLTAxLTE1IDExOjUwOjIxLjAwMDAwMDAwMCArMDEwMAotQEAgLTY0 MSw3ICs2NDEsMjEgQEAgcHJvYyB0ZXN0X3dhdGNocG9pbnRfYW5kX2JyZWFrcG9pbnQge30gewot IAl9Ci0gICAgIH0KLSB9Ci0tICAgIAotKwotK3Byb2MgdGVzdF9jb25zdGFudF93YXRjaHBvaW50 IHt9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsKLSsJZ2RiX3Rlc3QgIndhdGNoIDUiICJD YW5ub3Qgd2F0Y2ggY29uc3RhbnQgdmFsdWUgNS4iICJudW1iZXIgaXMgY29uc3RhbnQiCi0rCWdk Yl90ZXN0ICJ3YXRjaCBtYXJrZXIxIiAiQ2Fubm90IHdhdGNoIGNvbnN0YW50IHZhbHVlIG1hcmtl cjEuIiBcCi0rCQkgIm1hcmtlcjEgaXMgY29uc3RhbnQiCi0rCWdkYl90ZXN0ICJ3YXRjaCBjb3Vu dCArIDYiICIuKmF0Y2hwb2ludCBcWzAtOVxdKzogY291bnQgXFwrIDYiCi0rCWdkYl90ZXN0ICJz ZXQgXCRleHByX2JyZWFrcG9pbnRfbnVtYmVyID0gXCRicG51bSIgIiIKLSsJZ2RiX3Rlc3QgImRl bGV0ZSBcJGV4cHJfYnJlYWtwb2ludF9udW1iZXIiICIiCi0rCWdkYl90ZXN0ICJ3YXRjaCA3ICsg Y291bnQiICIuKmF0Y2hwb2ludCBcWzAtOVxdKzogNyBcXCsgY291bnQiCi0rCWdkYl90ZXN0ICJz ZXQgXCRleHByX2JyZWFrcG9pbnRfbnVtYmVyID0gXCRicG51bSIgIiIKLSsJZ2RiX3Rlc3QgImRl bGV0ZSBcJGV4cHJfYnJlYWtwb2ludF9udW1iZXIiICIiCi0rfQotKwotIHByb2MgdGVzdF9pbmFj Y2Vzc2libGVfd2F0Y2hwb2ludCB7fSB7Ci0gICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0gCi1AQCAt NjYyLDcgKzY3Niw4IEBAIHByb2MgdGVzdF9pbmFjY2Vzc2libGVfd2F0Y2hwb2ludCB7fSB7Ci0g CX0KLSAKLSAJZ2RiX3Rlc3QgIndhdGNoICpnbG9iYWxfcHRyIiAiLiphdGNocG9pbnQgXFswLTlc XSs6IFxcKmdsb2JhbF9wdHIiCi0tCWdkYl90ZXN0ICJuZXh0IiAiLipnbG9iYWxfcHRyID0gYnVm LioiCi0rCWdkYl90ZXN0ICJzZXQgXCRnbG9iYWxfcHRyX2JyZWFrcG9pbnRfbnVtYmVyID0gXCRi cG51bSIgIiIKLSsJZ2RiX3Rlc3QgIm5leHQiICIuKmdsb2JhbF9wdHIgPSBidWYuKiIgImdsb2Jh bF9wdHIgbmV4dCIKLSAJZ2RiX3Rlc3RfbXVsdGlwbGUgIm5leHQiICJuZXh0IG92ZXIgcHRyIGlu aXQiIHsKLSAJICAgIC1yZSAiLiphdGNocG9pbnQgXFswLTlcXSs6IFxcKmdsb2JhbF9wdHJcclxu XHJcbk9sZCB2YWx1ZSA9IC4qXHJcbk5ldyB2YWx1ZSA9IDMgLipcclxuLiokZ2RiX3Byb21wdCAk IiB7Ci0gCQkjIFdlIGNhbiBub3QgdGVzdCBmb3IgPHVua25vd24+IGhlcmUgYmVjYXVzZSBOVUxM IG1heSBiZSByZWFkYWJsZS4KLUBAIC02NzUsNiArNjkwLDI4IEBAIHByb2MgdGVzdF9pbmFjY2Vz c2libGVfd2F0Y2hwb2ludCB7fSB7Ci0gCQlwYXNzICJuZXh0IG92ZXIgYnVmZmVyIHNldCIKLSAJ ICAgIH0KLSAJfQotKwlnZGJfdGVzdCAiZGVsZXRlIFwkZ2xvYmFsX3B0cl9icmVha3BvaW50X251 bWJlciIgIiIKLSsJZ2RiX3Rlc3QgIndhdGNoICoqZ2xvYmFsX3B0cl9wdHIiICIuKmF0Y2hwb2lu dCBcWzAtOVxdKzogXFwqXFwqZ2xvYmFsX3B0cl9wdHIiCi0rCWdkYl90ZXN0ICJzZXQgXCRnbG9i YWxfcHRyX3B0cl9icmVha3BvaW50X251bWJlciA9IFwkYnBudW0iICIiCi0rCWdkYl90ZXN0ICJu ZXh0IiAiLipnbG9iYWxfcHRyX3B0ciA9ICZnbG9iYWxfcHRyLioiICJnbG9hYmxfcHRyX3B0ciBu ZXh0IgotKwlnZGJfdGVzdF9tdWx0aXBsZSAibmV4dCIgIm5leHQgb3ZlciBnbG9iYWxfcHRyX3B0 ciBpbml0IiB7Ci0rCSAgICAtcmUgIi4qYXRjaHBvaW50IFxbMC05XF0rOiBcXCpcXCpnbG9iYWxf cHRyX3B0clxyXG5cclxuT2xkIHZhbHVlID0gLipcclxuTmV3IHZhbHVlID0gNyAuKlxyXG4uKiRn ZGJfcHJvbXB0ICQiIHsKLSsJCSMgV2UgY2FuIG5vdCB0ZXN0IGZvciA8dW5rbm93bj4gaGVyZSBi ZWNhdXNlIE5VTEwgbWF5IGJlIHJlYWRhYmxlLgotKwkJIyBUaGlzIHRlc3QgZG9lcyByZWx5IG9u ICpOVUxMICE9IDcuCi0rCQlwYXNzICJuZXh0IG92ZXIgZ2xvYmFsX3B0cl9wdHIgaW5pdCIKLSsJ ICAgIH0KLSsJfQotKwlnZGJfdGVzdF9tdWx0aXBsZSAibmV4dCIgIm5leHQgb3ZlciBnbG9iYWxf cHRyX3B0ciBidWZmZXIgc2V0IiB7Ci0rCSAgICAtcmUgIi4qYXRjaHBvaW50IFxbMC05XF0rOiBc XCpcXCpnbG9iYWxfcHRyX3B0clxyXG5cclxuT2xkIHZhbHVlID0gNyAuKlxyXG5OZXcgdmFsdWUg PSA5IC4qXHJcbi4qJGdkYl9wcm9tcHQgJCIgewotKwkJcGFzcyAibmV4dCBvdmVyIGdsb2JhbF9w dHJfcHRyIGJ1ZmZlciBzZXQiCi0rCSAgICB9Ci0rCX0KLSsJZ2RiX3Rlc3RfbXVsdGlwbGUgIm5l eHQiICJuZXh0IG92ZXIgZ2xvYmFsX3B0cl9wdHIgcG9pbnRlciBhZHZhbmNlIiB7Ci0rCSAgICAt cmUgIi4qYXRjaHBvaW50IFxbMC05XF0rOiBcXCpcXCpnbG9iYWxfcHRyX3B0clxyXG5cclxuT2xk IHZhbHVlID0gOSAuKlxyXG5OZXcgdmFsdWUgPSA1IC4qXHJcbi4qJGdkYl9wcm9tcHQgJCIgewot KwkJcGFzcyAibmV4dCBvdmVyIGdsb2JhbF9wdHJfcHRyIHBvaW50ZXIgYWR2YW5jZSIKLSsJICAg IH0KLSsJfQotKwlnZGJfdGVzdCAiZGVsZXRlIFwkZ2xvYmFsX3B0cl9wdHJfYnJlYWtwb2ludF9u dW1iZXIiICIiCi0gICAgIH0KLSB9Ci0gICAgIAotQEAgLTg1MSw2ICs4ODgsMTcgQEAgaWYgW2lu aXRpYWxpemVdIHRoZW4gewotICAgICB0ZXN0X3dhdGNocG9pbnRfYW5kX2JyZWFrcG9pbnQKLSAK LSAgICAgdGVzdF93YXRjaHBvaW50X2luX2JpZ19ibG9iCi0rCi0rICAgICMgU2VlIGFib3ZlLgot KyAgICBpZiBbaXN0YXJnZXQgIm1pcHMtaWR0LSoiXSB0aGVuIHsKLSsJZ2RiX2V4aXQKLSsJZ2Ri X3N0YXJ0Ci0rCWdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotKwlnZGJfbG9h ZCAkYmluZmlsZQotKwlpbml0aWFsaXplCi0rICAgIH0KLSsKLSsgICAgdGVzdF9jb25zdGFudF93 YXRjaHBvaW50Ci0gfQotIAotICMgUmVzdG9yZSBvbGQgdGltZW91dAoKZGlmZiAtLWdpdCBhL2dk Yi02LjgtZm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2ggYi9nZGItNi44LWZvcnRyYW4tdGFnLWNv bnN0YW50LnBhdGNoCmluZGV4IGIzZDczM2IuLjMyODM5ODQgMTAwNjQ0Ci0tLSBhL2dkYi02Ljgt Zm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2gKKysrIGIvZ2RiLTYuOC1mb3J0cmFuLXRhZy1jb25z dGFudC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFk LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2R3YXJmMnJl YWQuYwkyMDEwLTAxLTE1IDExOjUyOjU5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDExOjUzOjU3LjAwMDAwMDAwMCAr MDEwMAotQEAgLTI1MjksNiArMjUyOSw3IEBAIHNjYW5fcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3Qg cGFydGlhbF9kaWUKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2R3YXJmMnJlYWQu YwkyMDEwLTA3LTEyIDIzOjA3OjM1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjEzOjAyLjAwMDAwMDAwMCArMDIw MAorQEAgLTIyNTEsNiArMjI1MSw3IEBAIHNjYW5fcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3QgcGFy dGlhbF9kaWUKICAJICAgICAgYWRkX3BhcnRpYWxfc3VicHJvZ3JhbSAocGRpLCBsb3dwYywgaGln aHBjLCBuZWVkX3BjLCBjdSk7CiAgCSAgICAgIGJyZWFrOwogIAkgICAgY2FzZSBEV19UQUdfdmFy aWFibGU6CkBAIC0xMCw3ICsxMCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9k d2FyZjJyZWFkLmMKICAJICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6CiAgCSAgICBjYXNlIERXX1RB R191bmlvbl90eXBlOgogIAkgICAgICBpZiAoIXBkaS0+aXNfZGVjbGFyYXRpb24pCi1AQCAtMjcx OSw2ICsyNzIwLDcgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaQor QEAgLTI0NTIsNiArMjQ1Myw3IEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxf ZGllX2kKICAJfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIERXX1RBR192YXJpYWJsZToKQEAg LTE4LDcgKzE4LDE1IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFk LmMKICAgICAgICBpZiAocGRpLT5pc19leHRlcm5hbCkKICAJewogIAkgIC8qIEdsb2JhbCBWYXJp YWJsZS4KLUBAIC00NzcwLDcgKzQ3NzIsOCBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmll bGRfaW5mbyAqZmlwCitAQCAtMzI4OSw2ICszMjkxLDcgQEAgZGllX25lZWRzX25hbWVzcGFjZSAo c3RydWN0IGRpZV9pbmZvICpkaQorICAgICAgIHJldHVybiAxOworIAorICAgICBjYXNlIERXX1RB R192YXJpYWJsZToKKysgICAgY2FzZSBEV19UQUdfY29uc3RhbnQ6CisgICAgICAgLyogV2Ugb25s eSBuZWVkIHRvIHByZWZpeCAiZ2xvYmFsbHkiIHZpc2libGUgdmFyaWFibGVzLiAgVGhlc2UgaW5j bHVkZQorIAkgYW55IHZhcmlhYmxlIG1hcmtlZCB3aXRoIERXX0FUX2V4dGVybmFsIG9yIGFueSB2 YXJpYWJsZSB0aGF0CisgCSBsaXZlcyBpbiBhIG5hbWVzcGFjZS4gIFtWYXJpYWJsZXMgaW4gYW5v bnltb3VzIG5hbWVzcGFjZXMKK0BAIC00NjM4LDcgKzQ2NDEsOCBAQCBkd2FyZjJfYWRkX2ZpZWxk IChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwCiAgCSAgZmlwLT5ub25fcHVibGljX2ZpZWxkcyA9IDE7 CiAgCX0KICAgICAgfQpAQCAtMjgsNyArMzYsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvZHdhcmYycmVhZC5jCiAgICAgIHsKICAgICAgICAvKiBDKysgc3RhdGljIG1lbWJlci4g ICovCiAgCi1AQCAtNTMzOSw3ICs1MzQyLDggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaQorQEAgLTUyNTAsNyArNTI1NCw4IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGkKICAgICAgICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxkX2Rp ZS0+dGFnKQogIAl7CiAgCSAgaWYgKGNoaWxkX2RpZS0+dGFnID09IERXX1RBR19tZW1iZXIKQEAg LTM4LDcgKzQ2LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQu YwogIAkgICAgewogIAkgICAgICAvKiBOT1RFOiBjYXJsdG9uLzIwMDItMTEtMDU6IEEgQysrIHN0 YXRpYyBkYXRhIG1lbWJlcgogIAkJIHNob3VsZCBiZSBhIERXX1RBR19tZW1iZXIgdGhhdCBpcyBh IGRlY2xhcmF0aW9uLCBidXQKLUBAIC01NDU5LDYgKzU0NjMsNyBAQCBwcm9jZXNzX3N0cnVjdHVy ZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvCitAQCAtNTM5Niw2ICs1NDAxLDcgQEAgcHJvY2Vzc19z dHJ1Y3R1cmVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbwogICAgICB7CiAgICAgICAgaWYgKGNoaWxk X2RpZS0+dGFnID09IERXX1RBR19tZW1iZXIKICAJICB8fCBjaGlsZF9kaWUtPnRhZyA9PSBEV19U QUdfdmFyaWFibGUKQEAgLTQ2LDcgKzU0LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2R3YXJmMnJlYWQuYwogIAkgIHx8IGNoaWxkX2RpZS0+dGFnID09IERXX1RBR19pbmhlcml0 YW5jZSkKICAJewogIAkgIC8qIERvIG5vdGhpbmcuICAqLwotQEAgLTcxMzQsNiArNzEzOSw3IEBA IGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKK0BAIC03MTA5LDYgKzcx MTUsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqCiAgCSAgJiYg YWJicmV2LT50YWcgIT0gRFdfVEFHX3N1YnByb2dyYW0KICAJICAmJiBhYmJyZXYtPnRhZyAhPSBE V19UQUdfbGV4aWNhbF9ibG9jawogIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR192YXJpYWJs ZQpAQCAtNTQsNyArNjIsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZHdhcmYy cmVhZC5jCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX25hbWVzcGFjZQogIAkgICYmIGFi YnJldi0+dGFnICE9IERXX1RBR19tb2R1bGUKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdf bWVtYmVyKQotQEAgLTcyNDIsNiArNzI0OCw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFi ZmQsIGdkYl9ieXRlICoKK0BAIC03MjE3LDYgKzcyMjQsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAo YmZkICphYmZkLCBnZGJfYnl0ZSAqCiAgICAgICAgaWYgKGxvYWRfYWxsCiAgCSAgfHwgYWJicmV2 LT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0KICAJICB8fCBhYmJyZXYtPnRhZyA9PSBEV19UQUdf dmFyaWFibGUKQEAgLTYyLDcgKzcwLDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2R3YXJmMnJlYWQuYwogIAkgIHx8IGFiYnJldi0+dGFnID09IERXX1RBR19uYW1lc3BhY2UKICAJ ICB8fCBwYXJ0X2RpZS0+aXNfZGVjbGFyYXRpb24pCiAgCXsKLUBAIC05MDE2LDYgKzkwMjMsMTEg QEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorQEAgLTkwNTksNiAr OTA2NywxMSBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0CiAgCSAg LyogRG8gbm90IGFkZCB0aGUgc3ltYm9sIHRvIGFueSBsaXN0cy4gIEl0IHdpbGwgYmUgZm91bmQg dmlhCiAgCSAgICAgQkxPQ0tfRlVOQ1RJT04gZnJvbSB0aGUgYmxvY2t2ZWN0b3IuICAqLwogIAkg IGJyZWFrOwpAQCAtNzIsNSArODAsNSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv ZHdhcmYycmVhZC5jCiArCQkJCQkgICAgU1lNQk9MX1RZUEUgKHN5bSksIE5VTEwpOwogKwkgIC8q IFBBU1NUSFJVICovCiAgCWNhc2UgRFdfVEFHX3ZhcmlhYmxlOgorIAljYXNlIERXX1RBR19tZW1i ZXI6CiAgCSAgLyogQ29tcGlsYXRpb24gd2l0aCBtaW5pbWFsIGRlYnVnIGluZm8gbWF5IHJlc3Vs dCBpbiB2YXJpYWJsZXMKLSAJICAgICB3aXRoIG1pc3NpbmcgdHlwZSBlbnRyaWVzLiBDaGFuZ2Ug dGhlIG1pc2xlYWRpbmcgYHZvaWQnIHR5cGUKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLW5leHQt b3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaCBiL2dkYi1hcmNoZXItbmV4dC1vdmVyLXRocm93LWN4 eC1leGVjLnBhdGNoCmluZGV4IDQxNDA5ZjAuLmNiZDlhMzYgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNo ZXItbmV4dC1vdmVyLXRocm93LWN4eC1leGVjLnBhdGNoCisrKyBiL2dkYi1hcmNoZXItbmV4dC1v dmVyLXRocm93LWN4eC1leGVjLnBhdGNoCkBAIC0xLDI1ICsxLDYgQEAKIEFyY2hlci11cHN0cmVh bWVkOgogaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2FyY2hlci8yMDEwLXEyL21zZzAwMDMxLmh0 bWwKIAotLS0tIC4vZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTA1LTI5IDAxOjEyOjMyLjAwMDAwMDAw MCArMDIwMAotKysrIC4vZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTA1LTI5IDAxOjIyOjIxLjAwMDAw MDAwMCArMDIwMAotQEAgLTE2NzksMTQgKzE2NzksMTEgQEAgY3JlYXRlX2V4Y2VwdGlvbl9tYXN0 ZXJfYnJlYWtwb2ludCAodm9pZAotICAgICAgIGRlYnVnX2hvb2sgPSBsb29rdXBfbWluaW1hbF9z eW1ib2xfdGV4dCAoIl9VbndpbmRfRGVidWdIb29rIiwgb2JqZmlsZSk7Ci0gICAgICAgaWYgKGRl YnVnX2hvb2sgIT0gTlVMTCkKLSAJewotLQkgIENPUkVfQUREUiBwYzsKLSAJICBzdHJ1Y3QgYnJl YWtwb2ludCAqYjsKLSAKLS0JICBwYyA9IGZpbmRfZnVuY3Rpb25fc3RhcnRfcGMgKGdldF9vYmpm aWxlX2FyY2ggKG9iamZpbGUpLAotLQkJCQkgICAgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGRl YnVnX2hvb2spLAotLQkJCQkgICAgICAgU1lNQk9MX09CSl9TRUNUSU9OIChkZWJ1Z19ob29rKSk7 Ci0gCSAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZXRfb2JqZmlsZV9hcmNoIChv YmpmaWxlKSwKLS0JCQkJCSAgcGMsIGJwX2V4Y2VwdGlvbl9tYXN0ZXIpOwotKwkJCQkJICBTWU1C T0xfVkFMVUVfQUREUkVTUyAoZGVidWdfaG9vayksCi0rCQkJCQkgIGJwX2V4Y2VwdGlvbl9tYXN0 ZXIpOwotIAkgIGItPmFkZHJfc3RyaW5nID0geHN0cmR1cCAoIl9VbndpbmRfRGVidWdIb29rIik7 Ci0gCSAgYi0+ZW5hYmxlX3N0YXRlID0gYnBfZGlzYWJsZWQ7Ci0gCX0KIC0tLSAuL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL2N4eGV4ZWMuY2MJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx MDAKICsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N4eGV4ZWMuY2MJMjAxMC0wNS0yOSAwMTox ODo1Ni4wMDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMjUgQEAKCmRpZmYgLS1naXQgYS9nZGIt YXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFk ZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCmluZGV4IDVhOWUwYzUuLmU4MWE4ZGQgMTAwNjQ0Ci0t LSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCisrKyBiL2dkYi1h cmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAu MjAxMDAxMTUub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYnJlYWtwb2ludC5jCTIwMTAt MDEtMTUgMjE6NTE6MjAuMDAwMDAwMDAwICswMTAwCi1AQCAtOTE2Nyw2ICs5MTY3LDQ5IEBAIHVw ZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWEKKy0tLSBnZGItNy4xLjkwLjIw MTAwNzExLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTA3LTEyIDIzOjA3OjMzLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTA3 LTEzIDAwOjM4OjA0LjAwMDAwMDAwMCArMDIwMAorQEAgLTEwMTU5LDYgKzEwMTU5LDUwIEBAIHVw ZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWEKICAgIHVwZGF0ZV9nbG9iYWxf bG9jYXRpb25fbGlzdCAoMSk7CiAgfQogIApAQCAtNDksMjYgKzQ5LDI3IEBAIEluZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9icmVha3BvaW50LmMKICsgICAgcXNvcnQgKGJwX2xvY2F0aW9u LCBicF9sb2NhdGlvbl9jb3VudCwgc2l6ZW9mICgqYnBfbG9jYXRpb24pLAogKwkgICBicF9sb2Nh dGlvbl9jb21wYXJlKTsKICt9Ci0gCisrCiAgLyogUmVzZXQgYSBicmVha3BvaW50IGdpdmVuIGl0 J3Mgc3RydWN0IGJyZWFrcG9pbnQgKiBCSU5ULgogICAgIFRoZSB2YWx1ZSB3ZSByZXR1cm4gZW5k cyB1cCBiZWluZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gY2F0Y2hfZXJyb3JzLgotSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuaAorICAgIFVudXNlZCBpbiB0aGlzIGNh c2UuICAqLworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2JyZWFrcG9pbnQuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIw MTAtMDEtMTUgMjE6MzU6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvYnJlYWtwb2ludC5oCTIwMTAtMDEtMTUgMjE6NTA6MTIuMDAwMDAwMDAwICswMTAwCi1A QCAtMTAxNSw0ICsxMDE1LDcgQEAgZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICpnZXRfdHJhY2Vw b2ludAotICAgIGlzIG5ld2x5IGFsbG9jYXRlZDsgdGhlIGNhbGxlciBzaG91bGQgZnJlZSB3aGVu IGRvbmUgd2l0aCBpdC4gICovCi0gZXh0ZXJuIFZFQyhicmVha3BvaW50X3ApICphbGxfdHJhY2Vw b2ludHMgKHZvaWQpOworLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvYnJlYWtwb2lu dC5oCTIwMTAtMDctMTIgMjM6MDc6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvYnJlYWtwb2ludC5oCTIwMTAtMDctMTMgMDA6Mzc6MzQuMDAwMDAwMDAwICsw MjAwCitAQCAtMTA4OCw0ICsxMDg4LDcgQEAgZXh0ZXJuIHZvaWQgY2hlY2tfdHJhY2Vwb2ludF9j b21tYW5kIChjaAorIGV4dGVybiB2b2lkIHN0YXJ0X3JicmVha19icmVha3BvaW50cyAodm9pZCk7 CisgZXh0ZXJuIHZvaWQgZW5kX3JicmVha19icmVha3BvaW50cyAodm9pZCk7CiAgCiArZXh0ZXJu IHZvaWQgYnJlYWtwb2ludHNfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogKwkJ CQkgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRhKTsKICsKICAjZW5kaWYgLyogIWRlZmlu ZWQgKEJSRUFLUE9JTlRfSCkgKi8KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9vYmpm aWxlcy5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvb2JqZmlsZXMuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEwLTAx LTE1IDIxOjM1OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L29iamZpbGVzLmMJMjAxMC0wMS0xNSAyMTo1MDo0NS4wMDAwMDAwMDAgKzAxMDAKLUBAIC04NTYs NiArODU2LDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKKy0t LSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMC0wNS0xNiAwMjo0 Njo0Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9vYmpmaWxl cy5jCTIwMTAtMDctMTMgMDA6Mzc6MTkuMDAwMDAwMDAwICswMjAwCitAQCAtODM0LDYgKzgzNCwx MSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCiAgCQkJCW9ial9z ZWN0aW9uX2FkZHIgKHMpKTsKICAgICAgfQogIAoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItcGll LWFkZG9ucy5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaAppbmRleCAwNjBiMTll Li40YmNjNGI0IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKKysrIGIv Z2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03 LjAuOTAuMjAxMDAzMDYvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMDYu b3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDMtMDYgMjM6Mjc6MzAuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDMtMDYgMjM6 Mjg6NDMuMDAwMDAwMDAwICswMTAwCi1AQCAtNTkxMCw3ICs1OTEwLDEyIEBAIHJlYWRfY29tbW9u X2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjI2OjI1LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjM0 OjAwLjAwMDAwMDAwMCArMDIwMAorQEAgLTU3MzcsNyArNTczNywxMiBAQCByZWFkX2NvbW1vbl9i bG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgewogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cjsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKQEAgLTE2LDcgKzE2LDcgQEAgSW5kZXg6IGdkYi03 LjAuOTAuMjAxMDAzMDYvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2xvY2F0aW9uLCBjdSk7CiAgICBpZiAoYXR0cikKLUBAIC01OTE5LDYgKzU5 MjQsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtNTc0 Niw2ICs1NzUxLDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAog ICAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogICAgICAgICAgewogICAgICAg ICAgICBiYXNlID0gZGVjb2RlX2xvY2Rlc2MgKERXX0JMT0NLIChhdHRyKSwgY3UpOwpAQCAtMjQs NyArMjQsNyBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvZHdhcmYycmVhZC5jCiAg ICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChh dHRyKSkKICAgICAgICAgIHsKLUBAIC01OTgwLDEyICs1OTg2LDE1IEBAIHJlYWRfY29tbW9uX2Js b2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC01ODA3LDEyICs1ODEzLDE1IEBAIHJlYWRf Y29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJICAgICAgZWxzZQogIAkJZHdh cmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKCk7CiAgCkBAIC00Miw3ICs0Miw3 IEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi9kd2FyZjJyZWFkLmMKICAJICBlbHNl CiAgCSAgICBTRVRfRklFTERfUEhZU05BTUUgKCpmaWVsZCwgU1lNQk9MX0xJTktBR0VfTkFNRSAo c3ltKSk7CiAgCSAgRklFTERfVFlQRSAoKmZpZWxkKSA9IFNZTUJPTF9UWVBFIChzeW0pOwotQEAg LTU5OTksNyArNjAwOCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwKK0BAIC01ODI2LDcgKzU4MzUsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9p bmZvICpkaWUsCiAgCiAgICAgICAgc3ltID0gbmV3X3N5bWJvbCAoZGllLCB0eXBlLCBjdSk7CiAg ICAgICAgLyogU1lNQk9MX1ZBTFVFX0FERFJFU1MgbmV2ZXIgZ2V0cyB1c2VkIGFzIGFsbCBpdHMg ZmllbGRzIGFyZSBzdGF0aWMuICAqLwpAQCAtNTEsMTEgKzUxLDExIEBAIEluZGV4OiBnZGItNy4w LjkwLjIwMTAwMzA2L2dkYi9kd2FyZjJyZWFkLmMKICAKICAgICAgICBzZXRfZGllX3R5cGUgKGRp ZSwgdHlwZSwgY3UpOwogICAgICB9Ci1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvZ2Ri dHlwZXMuaAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2dkYnR5cGVzLmgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4wLjkwLjIwMTAwMzA2Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0w My0wNiAyMzoyNjozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dk Yi9nZGJ0eXBlcy5oCTIwMTAtMDMtMDYgMjM6Mjg6NDMuMDAwMDAwMDAwICswMTAwCi1AQCAtNDEy LDYgKzQxMiw3IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCistLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDctMTIgMjM6MDc6MzQuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZ2RidHlwZXMuaAkyMDEwLTA3 LTEzIDAwOjM0OjAwLjAwMDAwMDAwMCArMDIwMAorQEAgLTM5NSw2ICszOTUsNyBAQCBlbnVtIHR5 cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIGVudW0gZmllbGRfbG9jX2tpbmQKICAgIHsKICAgICAg RklFTERfTE9DX0tJTkRfQklUUE9TLAkvKiBiaXRwb3MgKi8KQEAgLTYzLDcgKzYzLDcgQEAgSW5k ZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2dkYnR5cGVzLmgKICAgICAgRklFTERfTE9DX0tJ TkRfUEhZU0FERFIsCS8qIHBoeXNhZGRyICovCiAgICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1F CS8qIHBoeXNuYW1lICovCiAgICB9OwotQEAgLTU5MSw2ICs1OTIsNyBAQCBzdHJ1Y3QgbWFpbl90 eXBlCitAQCAtNTc3LDYgKzU3OCw3IEBAIHN0cnVjdCBtYWluX3R5cGUKICAJICAgaXMgdGhlIGxv Y2F0aW9uIChpbiB0aGUgdGFyZ2V0KSBvZiB0aGUgc3RhdGljIGZpZWxkLgogIAkgICBPdGhlcndp c2UsIHBoeXNuYW1lIGlzIHRoZSBtYW5nbGVkIGxhYmVsIG9mIHRoZSBzdGF0aWMgZmllbGQuICov CiAgCkBAIC03MSw3ICs3MSw3IEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi9nZGJ0 eXBlcy5oCiAgCUNPUkVfQUREUiBwaHlzYWRkcjsKICAJY2hhciAqcGh5c25hbWU7CiAgICAgICAg fQotQEAgLTEwOTEsNiArMTA5Myw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5 cGUgKHN0cnUKK0BAIC0xMDczLDYgKzEwNzUsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0 X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBGSUVMRF9MT0NfS0lORCh0aGlzZmxkKSAoKHRoaXNm bGQpLmxvY19raW5kKQogICNkZWZpbmUgRklFTERfQklUUE9TKHRoaXNmbGQpICgodGhpc2ZsZCku bG9jLmJpdHBvcykKICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzZmxkKSAoKHRo aXNmbGQpLmxvYy5waHlzbmFtZSkKQEAgLTc5LDcgKzc5LDcgQEAgSW5kZXg6IGdkYi03LjAuOTAu MjAxMDAzMDYvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTQUREUih0 aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzYWRkcikKICAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQ T1ModGhpc2ZsZCwgYml0cG9zKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBG SUVMRF9MT0NfS0lORF9CSVRQT1MsCQlcCi1AQCAtMTA5OCw2ICsxMTAxLDcgQEAgZXh0ZXJuIHZv aWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEwODAsNiArMTA4Myw3IEBAIGV4 dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIFNFVF9GSUVM RF9QSFlTTkFNRSh0aGlzZmxkLCBuYW1lKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2Zs ZCkgPSBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZU05B TUUgKHRoaXNmbGQpID0gKG5hbWUpKQpAQCAtODcsNyArODcsNyBAQCBJbmRleDogZ2RiLTcuMC45 MC4yMDEwMDMwNi9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgU0VUX0ZJRUxEX1BIWVNBRERSKHRo aXNmbGQsIGFkZHIpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xP Q19LSU5EX1BIWVNBRERSLAkJXAogICAgIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAodGhpc2ZsZCkg PSAoYWRkcikpCi1AQCAtMTExMCw2ICsxMTE0LDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25h dF9hdXhfdHlwZSAoc3RydQorQEAgLTEwOTIsNiArMTA5Niw3IEBAIGV4dGVybiB2b2lkIGFsbG9j YXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIFRZUEVfRklFTERfTE9DX0tJTkQodGhp c3R5cGUsIG4pIEZJRUxEX0xPQ19LSU5EIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2Rl ZmluZSBUWVBFX0ZJRUxEX0JJVFBPUyh0aGlzdHlwZSwgbikgRklFTERfQklUUE9TIChUWVBFX0ZJ RUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0 aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNOQU1FIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwg bikpCkBAIC05NSwxMSArOTUsMTEgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2dk YnR5cGVzLmgKICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSKHRoaXN0eXBlLCBu KSBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVm aW5lIFRZUEVfRklFTERfQVJUSUZJQ0lBTCh0aGlzdHlwZSwgbikgRklFTERfQVJUSUZJQ0lBTChU WVBFX0ZJRUxEKHRoaXN0eXBlLG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9CSVRTSVpFKHRoaXN0 eXBlLCBuKSBGSUVMRF9CSVRTSVpFKFRZUEVfRklFTEQodGhpc3R5cGUsbikpCi1JbmRleDogZ2Ri LTcuMC45MC4yMDEwMDMwNi9nZGIvanYtbGFuZy5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC45MC4yMDEwMDMwNi5vcmln L2dkYi9qdi1sYW5nLmMJMjAxMC0wMy0wNiAyMzoxOToxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4wLjkwLjIwMTAwMzA2L2dkYi9qdi1sYW5nLmMJMjAxMC0wMy0wNiAyMzoyODo0My4wMDAw MDAwMDAgKzAxMDAKLUBAIC00MTYsNyArNDE2LDggQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0 cnVjdCBnZGJhcmNoICpnZAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvanYtbGFu Zy5jCTIwMTAtMDUtMTcgMTk6MTg6MzkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvanYtbGFuZy5jCTIwMTAtMDctMTMgMDA6MzQ6MDAuMDAwMDAwMDAwICswMjAw CitAQCAtNDA5LDcgKzQwOSw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2QKICAKICAgIGZpZWxkcyA9IE5VTEw7CiAgICBuZmllbGRzLS07CQkJLyogRmlyc3Qgc2V0 IHVwIGR1bW15ICJjbGFzcyIgZmllbGQuICovCkBAIC0xMDksNyArMTA5LDcgQEAgSW5kZXg6IGdk Yi03LjAuOTAuMjAxMDAzMDYvZ2RiL2p2LWxhbmcuYwogICAgVFlQRV9GSUVMRF9OQU1FICh0eXBl LCBuZmllbGRzKSA9ICJjbGFzcyI7CiAgICBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIG5maWVsZHMp ID0gdmFsdWVfdHlwZSAoY2xhcyk7CiAgICBTRVRfVFlQRV9GSUVMRF9QUklWQVRFICh0eXBlLCBu ZmllbGRzKTsKLUBAIC00NjIsNyArNDYzLDggQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVj dCBnZGJhcmNoICpnZAorQEAgLTQ1Nyw3ICs0NTgsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAo c3RydWN0IGdkYmFyY2ggKmdkCiAgCSAgU0VUX1RZUEVfRklFTERfUFJPVEVDVEVEICh0eXBlLCBp KTsKICAJfQogICAgICAgIGlmIChhY2NmbGFncyAmIDB4MDAwOCkJLyogQUNDX1NUQVRJQyAqLwpA QCAtMTE5LDI3ICsxMTksMjcgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL2p2LWxh bmcuYwogICAgICAgIGVsc2UKICAJVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGkpID0gOCAqIGJv ZmZzZXQ7CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHg4MDAwKQkvKiBGSUVMRF9VTlJFU09MVkVE X0ZMQUcgKi8KLUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi92YWx1ZS5jCitJbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdmFsdWUuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu OTAuMjAxMDAzMDYub3JpZy9nZGIvdmFsdWUuYwkyMDEwLTAzLTA2IDIzOjE5OjEzLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3ZhbHVlLmMJMjAxMC0wMy0wNiAy MzoyODo0My4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODk3LDcgKzE4OTcsOCBAQCB2YWx1ZV9zdGF0 aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCi0gICBpZiAoVFlQRV9GSUVMRF9MT0NfS0lO RCAodHlwZSwgZmllbGRubykgPT0gRklFTERfTE9DX0tJTkRfUEhZU0FERFIpCistLS0gZ2RiLTcu MS45MC4yMDEwMDcxMS5vcmlnL2dkYi92YWx1ZS5jCTIwMTAtMDctMTIgMjM6MDc6MzMuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdmFsdWUuYwkyMDEwLTA3LTEz IDAwOjM1OjIxLjAwMDAwMDAwMCArMDIwMAorQEAgLTE5NDMsNyArMTk0Myw4IEBAIHZhbHVlX3N0 YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgICAgewotICAgICAgIHJldHZhbCA9 IHZhbHVlX2F0IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbm8pLAotLQkJCSBUWVBFX0ZJ RUxEX1NUQVRJQ19QSFlTQUREUiAodHlwZSwgZmllbGRubykpOwotKwkJCSBUWVBFX0ZJRUxEX1NU QVRJQ19QSFlTQUREUiAodHlwZSwgZmllbGRubykKLSsJCQkgICArIChUWVBFX09CSkZJTEUgKHR5 cGUpID09IE5VTEwgPyAwIDogQU5PRkZTRVQgKFRZUEVfT0JKRklMRSAodHlwZSktPnNlY3Rpb25f b2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAoVFlQRV9PQkpGSUxFICh0eXBlKSkpKSk7Ci0gICAgIH0K LSAgIGVsc2UKKyAgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUjoKKyAgICAgICByZXR2 YWwgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbm8pLAorLQkJ CSAgICAgIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERSICh0eXBlLCBmaWVsZG5vKSk7CisrCQkJ ICAgICAgVFlQRV9GSUVMRF9TVEFUSUNfUEhZU0FERFIgKHR5cGUsIGZpZWxkbm8pCisrCQkJICAg ICAgKyAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMID8gMCA6IEFOT0ZGU0VUIChUWVBFX09C SkZJTEUgKHR5cGUpLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKFRZUEVfT0JKRklM RSAodHlwZSkpKSkpOworICAgICAgIGJyZWFrOworICAgICBjYXNlIEZJRUxEX0xPQ19LSU5EX1BI WVNOQU1FOgogICAgICB7Ci1AQCAtMTkyNyw3ICsxOTI4LDggQEAgdmFsdWVfc3RhdGljX2ZpZWxk IChzdHJ1Y3QgdHlwZSAqdHlwZSwgaQorQEAgLTE5NzcsNyArMTk3OCw4IEBAIHZhbHVlX3N0YXRp Y19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgCX0KICAgICAgICBpZiAocmV0dmFsICYm IFZBTFVFX0xWQUwgKHJldHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgCVNFVF9GSUVMRF9QSFlTQURE UiAoVFlQRV9GSUVMRCAodHlwZSwgZmllbGRubyksCiAtCQkJICAgIHZhbHVlX2FkZHJlc3MgKHJl dHZhbCkpOwogKwkJCSAgICB2YWx1ZV9hZGRyZXNzIChyZXR2YWwpCi0rCQkJICAgICAgLSAoVFlQ RV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMID8gMCA6IEFOT0ZGU0VUIChUWVBFX09CSkZJTEUgKHR5 cGUpLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKFRZUEVfT0JKRklMRSAodHlwZSkp KSkpOworKwkJCSAgICAtIChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwgPyAwIDogQU5PRkZT RVQgKFRZUEVfT0JKRklMRSAodHlwZSktPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAo VFlQRV9PQkpGSUxFICh0eXBlKSkpKSk7CisgICAgICAgYnJlYWs7CiAgICAgIH0KLSAgIHJldHVy biByZXR2YWw7Ci0gfQorICAgICBkZWZhdWx0OgoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItdmxh LXJlZi1vcHRpbWl6ZWRvdXQucGF0Y2ggYi9nZGItYXJjaGVyLXZsYS1yZWYtb3B0aW1pemVkb3V0 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjg2YmRhLi4wMDAwMDAwCi0t LSBhL2dkYi1hcmNoZXItdmxhLXJlZi1vcHRpbWl6ZWRvdXQucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMDUgKzAsMCBAQAotY29tbWl0IGE2ODNiYWM3M2FmNzRhNzU3NTkxNjcyZDg5ZDcyMDE2 OWMwYjVlYzkKLUF1dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci1EYXRlOiAgIFRodSBNYXkgMTMgMTg6MDg6MzAgMjAxMCArMDIwMAotCi0gICAgU3VwcG9y dCBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyBhbiBvcHRpbWl6ZWQtb3V0IHZhcmlh YmxlLgotICAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTkx ODc5Ci0KLS0tLSBhL2dkYi9kd2FyZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJmMmxvYy5jCi1AQCAt MzgzLDYgKzM4Myw5IEBAIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJmMl9s b2NsaXN0X2JhdG9uICpkbGxiYXRvbiwKLSAgIHNpemVfdCBzaXplOwotICAgc3RydWN0IHZhbHVl ICp2YWw7Ci0gCi0rICBpZiAoIWRsbGJhdG9uKQotKyAgICByZXR1cm4gMDsKLSsKLSAgIGRhdGEg PSBmaW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKGRsbGJhdG9uLCAmc2l6ZSwKLSAJCQkJICAgZ2V0 X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKGZyYW1lKSk7Ci0gICBpZiAoZGF0YSA9PSBOVUxMKQot LS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTExNjkz LDYgKzExNjkzLDExIEBAIGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIHsKLSAgIHN0cnVjdCBkd2FyZjJf bG9jbGlzdF9iYXRvbiAqYmF0b247Ci0gCi0rICAvKiBEV19BVF9sb2NhdGlvbiBvZiB0aGUgcmVm ZXJlbmNlZCBESUUgbWF5IGJlIG1pc3NpbmcgaWYgdGhlIHJlZmVyZW5jZWQKLSsgICAgIHZhcmlh YmxlIGhhcyBiZWVuIG9wdGltaXplZCBvdXQuICAqLwotKyAgaWYgKCFhdHRyKQotKyAgICByZXR1 cm4gTlVMTDsKLSsKLSAgIGlmICghKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikK LSAJLyogIi5kZWJ1Z19sb2MiIG1heSBub3QgZXhpc3QgYXQgYWxsLCBvciB0aGUgb2Zmc2V0IG1h eSBiZSBvdXRzaWRlCi0gCSAgIHRoZSBzZWN0aW9uLiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0 aGUgY29tcGxhaW50IGluIHRoZQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1i b3VuZC1sb2NsaXN0LlMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQt bG9jbGlzdC5TCi1AQCAtNTEsNiArNTEsMTcgQEAgdmFyZGF0YToKLSAJLjRieXRlCQkuTGxlbl92 YXItLkxjdTFfYmVnaW4JLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KLSAJLmJ5dGUJCTAJCQkvKiBF bmQgb2YgY2hpbGRyZW4gb2YgZGllICovCi0gCi0rCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJl ZmVyZW5jaW5nIGFuIG9wdGltaXplZC1vdXQgdmFyaWFibGUuICAqLwotKy5MYXJyYXliX3R5cGU6 Ci0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19hcnJheV90eXBlICovCi0rCS40Ynl0 ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwotKwotKwkudWxlYjEy OAkzCQkJLyogQWJicmV2OiBEV19UQUdfc3VicmFuZ2VfdHlwZSAqLwotKwkuNGJ5dGUJCS5MdWlu dF90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBEV19B VF9sb3dlcl9ib3VuZCAqLwotKwkuNGJ5dGUJCS5MbGVuYl92YXItLkxjdTFfYmVnaW4JLyogRFdf QVRfdXBwZXJfYm91bmQgKi8KLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGll ICovCi0rCi0gLkx1aW50X3R5cGU6Ci0gCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RBR19i YXNlX3R5cGUgKi8KLSAJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19BVF9uYW1lICovCi1AQCAt NjksOSArODAsMjQgQEAgdmFyZGF0YToKLSAJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdp bgkvKiBEV19BVF90eXBlICovCi0gCS40Ynl0ZQkJLkxsZW5fbG9jbGlzdC0uTGxvY2xpc3QJLyog RFdfQVRfbG9jYXRpb24gKi8KLSAKLSsJLyogb3B0aW1pemVkLW91dCB2YXJpYWJsZSBmb3IgYl9z dHJpbmcuICAqLwotKy5MbGVuYl92YXI6Ci0rCS51bGViMTI4CTcJCQkvKiBBYmJyZXY6IERXX1RB R192YXJpYWJsZSBhcnRpZmljaWFsIG5vIERXX0FUX2xvY2F0aW9uICovCi0rCS5ieXRlCQkxCQkJ LyogRFdfQVRfYXJ0aWZpY2lhbCAqLwotKwkuNGJ5dGUJCS5MdWludF90eXBlLS5MY3UxX2JlZ2lu CS8qIERXX0FUX3R5cGUgKi8KLSsKLSAJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3Zh cmlhYmxlIERXX0ZPUk1fc3RyaW5nICovCi0gCS5zdHJpbmcJCSJhX3N0cmluZyIJCS8qIERXX0FU X25hbWUgKi8KLS0JLjRieXRlCQkuTGFycmF5X3R5cGUtLkxjdTFfYmVnaW4vKiBEV19BVF90eXBl ICovCi0rCS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8K LSsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5ieXRlCQkzCQkJ LyogICBEV19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCi0r MjoKLSsKLSsJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgYW4gb3B0aW1pemVk LW91dCB2YXJpYWJsZS4gICovCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJp YWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYl9zdHJpbmciCQkvKiBEV19BVF9u YW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheWJfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBl ICovCi0gCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSAxOgkuYnl0ZQkJ MwkJCS8qICAgRFdfT1BfYWRkciAqLwotIAkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAq LwotQEAgLTE2NCw2ICsxOTAsMTYgQEAgdmFyZGF0YToKLSAJLmJ5dGUJCTB4MAkJCS8qIFRlcm1p bmF0b3IgKi8KLSAJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSAKLSsJLnVsZWIxMjgJ NwkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFi bGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MzQJ CQkvKiBEV19BVF9hcnRpZmljaWFsICovCi0rCS51bGViMTI4CTB4MGMJCQkvKiBEV19GT1JNX2Zs YWcgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjgJMHgx MwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwot KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotIAkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwotIAotIC8qIFN0cmluZyB0YWJsZSAqLwotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAotQEAgLTQ2LDMgKzQ2LDYgQEAgaWYgIVtydW50 byAiKm1haW4iXSB7Ci0gCi0gZ2RiX3Rlc3QgInAgYV9zdHJpbmciIHsgPSAic2VlbiJ9Ci0gZ2Ri X3Rlc3QgInB0eXBlIGFfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFs0XF19Ci0rCi0rZ2RiX3Rlc3Qg InAgYl9zdHJpbmciIHsgPSAoMHhbMC05YS1mXSsgKT8ic2Vlbm5vdHNlZW4ifQotK2dkYl90ZXN0 ICJwdHlwZSBiX3N0cmluZyIge3R5cGUgPSBjaGFyIFxbXF19CgpkaWZmIC0tZ2l0IGEvZ2RiLWFy Y2hlci12bGEtdGVzdC1vb20ucGF0Y2ggYi9nZGItYXJjaGVyLXZsYS10ZXN0LW9vbS5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFkNWNhNC4uMDAwMDAwMAotLS0gYS9nZGIt YXJjaGVyLXZsYS10ZXN0LW9vbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAK LWNvbW1pdCBlYzVhNzc2OWQ1YzA1NTQyZDEyZmMyMWFmYTI1ZjMyMzYwZGI3ZGU0Ci1BdXRob3I6 IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBXZWQg TWF5IDEyIDIyOjAwOjQ2IDIwMTAgKzAyMDAKLQotICAgIEZpeCBtYl9yZXNlcnZlOgotICAgIAlo dHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTU5MDYzNQotCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwCi1pbmRleCA3MjAzYTQ4Li4yNGE2MDhm IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKLUBAIC02Niw3ICs2 Niw4IEBAIHByb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsKLSAKLSBzZXQgcGFnZXNfZm91bmQg W21lbW9yeV92X3BhZ2VzX2dldF0KLSAKLS1zZXQgbWJfcmVzZXJ2ZSAxMAotKyMgczM5MHggd2l0 aCBnbGliYy1kZWJ1Z2luZm8uczM5MHggaW5zdGFsbGVkIHVzZWQgYXBwcm94LiAxNk1CLgotK3Nl dCBtYl9yZXNlcnZlIDQwCi0gdmVyYm9zZSAtbG9nICJwYWdlc19mb3VuZCA9ICRwYWdlc19mb3Vu ZCwgbWJfcmVzZXJ2ZSA9ICRtYl9yZXNlcnZlIgotIHNldCBrYl9mb3VuZCBbZXhwciAkcGFnZXNf Zm91bmQgKiAkcGFnZXNpemUgLyAxMDI0XQotIHNldCBrYl9wZXJtaXQgW2V4cHIgJGtiX2ZvdW5k ICsgMSAqIDEwMjQgKyAkbWJfcmVzZXJ2ZSAqIDEwMjRdCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hl ci5wYXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5kZXggYzliNWM5Yi4uYzE0YTRiZSAxMDA2NDQK LS0tIGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9nZGItYXJjaGVyLnBhdGNoCkBAIC0yLDI4OSAr Miw1MyBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0 cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lU IHNuYXBzaG90OgotY29tbWl0IDM5OTk4YzQ5Njk4OGZhYWExNTA5Y2M2YWI3NmI1YzQ3Nzc2NTli ZjQKK2NvbW1pdCAwYmM5YTkzNzI1ZDdhN2JjZjFlMzBmMDcyYTEyY2M1MTg2ZTQxZGMyCiAKIGJy YW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKLWFyY2hlci10cm9tZXktZGVs YXllZC1zeW1maWxlMgotYXJjaGVyLXRyb21leS1weXRob24KLWFyY2hlci1wbXVsZG9vbi1uZXh0 LW92ZXItdGhyb3cyCi1hcmNoZXItamFua3JhdG9jaHZpbC1mb3J0cmFuLW1vZHVsZTIKLWFyY2hl ci1qYW5rcmF0b2NodmlsLXdhdGNocG9pbnQyCiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEKLWFy Y2hlci1rZWl0aHMtZXhwci1jdW11bGF0aXZlCi0jIHBsdXMgb2xkZXIgYXJjaGVyLWphbmtyYXRv Y2h2aWwtaWZ1bmMKK2FyY2hlci1qYW5rcmF0b2NodmlsLXdhdGNocG9pbnQzCithcmNoZXItamFu a3JhdG9jaHZpbC1pZnVuYworYXJjaGVyLXBtdWxkb29uLW5leHQtb3Zlci10aHJvdzIKKyNUT0RP OmFyY2hlci10cm9tZXktcHl0aG9uIChwb3NzaWJseSBvbmx5IGV4dHJhY3RlZCBwYXJ0cykKKyNU T0RPOmFyY2hlci10cm9tZXktb3B0aW9uYWwtcHN5bXRhYiAobW9yZSBmcmVzaCBwYXRjaGVzIGFy ZSBhdCBnZGItcGF0Y2hlc0ApCisjVE9ETzphcmNoZXItdHJvbWV5LXRocmVhZGVkLWR3YXJmCiAK IAotZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXgg OThmNDJiOS4uZGJmODI3MyAxMDA2NDQKLS0tLSBhL2dkYi9NYWtlZmlsZS5pbgotKysrIGIvZ2Ri L01ha2VmaWxlLmluCi1AQCAtMTY3LDYgKzE2NywxMiBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBA VEFSR0VUX1NZU1RFTV9ST09UQAotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VU X1NZU1RFTV9ST09UX0RFRklORUAKLSAKLSAjIERpZCB0aGUgdXNlciBnaXZlIHVzIGEgLS13aXRo LWdkYi1kYXRhZGlyIG9wdGlvbj8KLStHREJfREFUQURJUl9QQVRIID0gQEdEQl9EQVRBRElSX1BB VEhACi0rCi0rIyBUaGUgYXJndW1lbnQgdG8gLS13aXRoLXB5dGhvbmRpci4gIElmIG5vdCBnaXZl biwgdGhpcyBpcwotKyMgR0RCX0RBVEFESVJfUEFUSC9weXRob24uCi0rcHl0aG9uZGlyID0gQHB5 dGhvbmRpckAKLSsKLSBHREJfREFUQURJUiA9IEBHREJfREFUQURJUkAKLSAKLSAjIEhlbHBlciBj b2RlIGZyb20gZ251bGliLgotQEAgLTI2NywyMyArMjczLDM5IEBAIFNVQkRJUl9UVUlfQ0ZMQUdT PSBcCi0gIwotIFNVQkRJUl9QWVRIT05fT0JTID0gXAotIAlweXRob24ubyBcCi0rCXB5LWJsb2Nr Lm8gXAotKwlweS1icmVha3BvaW50Lm8gXAotIAlweS1jbWQubyBcCi0gCXB5LWZyYW1lLm8gXAot IAlweS1mdW5jdGlvbi5vIFwKLSsJcHktaG9va3MubyBcCi0rCXB5LWluZmVyaW9yLm8gXAotKwlw eS1pbmZ0aHJlYWQubyBcCi0gCXB5LWxhenktc3RyaW5nLm8gXAotIAlweS1vYmpmaWxlLm8gXAot KwlweS1wYXJhbS5vIFwKLSAJcHktcHJldHR5cHJpbnQubyBcCi0rCXB5LXN5bWJvbC5vIFwKLSsJ cHktc3ltdGFiLm8gXAotIAlweS10eXBlLm8gXAotIAlweS11dGlscy5vIFwKLSAJcHktdmFsdWUu bwotIFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKLSAJcHl0aG9uL3B5dGhvbi5jIFwKLSsJcHl0aG9u L3B5LWJsb2NrLmMgXAotKwlweXRob24vcHktYnJlYWtwb2ludC5jIFwKLSAJcHl0aG9uL3B5LWNt ZC5jIFwKLSAJcHl0aG9uL3B5LWZyYW1lLmMgXAotIAlweXRob24vcHktZnVuY3Rpb24uYyBcCi0r CXB5dGhvbi9weS1ob29rcy5jIFwKLSsJcHl0aG9uL3B5LWluZmVyaW9yLmMgXAotKwlweXRob24v cHktaW5mdGhyZWFkLmMgXAotIAlweXRob24vcHktbGF6eS1zdHJpbmcuYyBcCi0gCXB5dGhvbi9w eS1vYmpmaWxlLmMgXAotKwlweXRob24vcHktcGFyYW0uYyBcCi0gCXB5dGhvbi9weS1wcmV0dHlw cmludC5jIFwKLSsJcHl0aG9uL3B5LXN5bWJvbC5jIFwKLSsJcHl0aG9uL3B5LXN5bXRhYi5jIFwK LSAJcHl0aG9uL3B5LXR5cGUuYyBcCi0gCXB5dGhvbi9weS11dGlscy5jIFwKLSAJcHl0aG9uL3B5 LXZhbHVlLmMKLUBAIC03NTYsNyArNzc4LDggQEAgY29uZmlnL3JzNjAwMC9ubS1yczYwMDAuaCB0 b3AuaCBic2Qta3ZtLmggZ2RiLXN0YWJzLmggcmVnZ3JvdXBzLmggXAotIGFubm90YXRlLmggc2lt LXJlZ25vLmggZGljdGlvbmFyeS5oIGRmcC5oIG1haW4uaCBmcmFtZS11bndpbmQuaAlcCi0gcmVt b3RlLWZpbGVpby5oIGkzODYtbGludXgtdGRlcC5oIHZheC10ZGVwLmggb2JqYy1sYW5nLmggXAot IHNlbnRpbmVsLWZyYW1lLmggYmNhY2hlLmggc3ltZmlsZS5oIHdpbmRvd3MtdGRlcC5oIGxpbnV4 LXRkZXAuaCBcCi0tZ2RiX3VzbGVlcC5oIGppdC5oIHhtbC1zeXNjYWxsLmggYWRhLW9wZXJhdG9y LmluYyBtaWNyb2JsYXplLXRkZXAuaAotK2dkYl91c2xlZXAuaCBqaXQuaCBweXRob24vcHl0aG9u LmggcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIFwKLSt4bWwtc3lzY2FsbC5oIGFkYS1vcGVyYXRv ci5pbmMgbWljcm9ibGF6ZS10ZGVwLmgKLSAKLSAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkg aGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KLSAKLUBAIC0xMjcw LDYgKzEyOTMsMTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVz Ci0gCSAgQ09ORklHX0xJTktTPSBcCi0gCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwotIAotKy5n ZGJpbml0OiAkKHNyY2RpcikvZ2RiaW5pdC5pbiBjb25maWcuc3RhdHVzCi0rCUNPTkZJR19GSUxF Uz0iLmdkYmluaXQ6Z2RiaW5pdC5pbiIgXAotKwkgIENPTkZJR19DT01NQU5EUz0gXAotKwkgIENP TkZJR19IRUFERVJTPSBcCi0rCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwotKwotIGNvbmZpZy5z dGF0dXM6ICQoc3JjZGlyKS9jb25maWd1cmUgY29uZmlndXJlLnRndCBjb25maWd1cmUuaG9zdAot IAkkKFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVjaGVjawotIAotQEAgLTE5NzAsNiArMTk5OSwx NCBAQCBweXRob24ubzogJChzcmNkaXIpL3B5dGhvbi9weXRob24uYwotIAkkKENPTVBJTEUpICQo UFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weXRob24uYwotIAkkKFBPU1RDT01QSUxF KQotIAotK3B5LWJsb2NrLm86ICQoc3JjZGlyKS9weXRob24vcHktYmxvY2suYwotKwkkKENPTVBJ TEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1ibG9jay5jCi0rCSQoUE9T VENPTVBJTEUpCi0rCi0rcHktYnJlYWtwb2ludC5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWJyZWFr cG9pbnQuYwotKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9w eS1icmVha3BvaW50LmMKLSsJJChQT1NUQ09NUElMRSkKLSsKLSBweS1jbWQubzogJChzcmNkaXIp L3B5dGhvbi9weS1jbWQuYwotIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIp L3B5dGhvbi9weS1jbWQuYwotIAkkKFBPU1RDT01QSUxFKQotQEAgLTE5ODIsNiArMjAxOSwxOCBA QCBweS1mdW5jdGlvbi5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWZ1bmN0aW9uLmMKLSAJJChDT01Q SUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktZnVuY3Rpb24uYwotIAkk KFBPU1RDT01QSUxFKQotIAotK3B5LWhvb2tzLm86ICQoc3JjZGlyKS9weXRob24vcHktaG9va3Mu YwotKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1ob29r cy5jCi0rCSQoUE9TVENPTVBJTEUpCi0rCi0rcHktaW5mZXJpb3IubzogJChzcmNkaXIpL3B5dGhv bi9weS1pbmZlcmlvci5jCi0rCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2Rpcikv cHl0aG9uL3B5LWluZmVyaW9yLmMKLSsJJChQT1NUQ09NUElMRSkKLSsKLStweS1pbmZ0aHJlYWQu bzogJChzcmNkaXIpL3B5dGhvbi9weS1pbmZ0aHJlYWQuYwotKwkkKENPTVBJTEUpICQoUFlUSE9O X0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1pbmZ0aHJlYWQuYwotKwkkKFBPU1RDT01QSUxF KQotKwotIHB5LWxhenktc3RyaW5nLm86ICQoc3JjZGlyKS9weXRob24vcHktbGF6eS1zdHJpbmcu YwotIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1sYXp5 LXN0cmluZy5jCi0gCSQoUE9TVENPTVBJTEUpCi1AQCAtMTk5MCwxMCArMjAzOSwyMiBAQCBweS1v YmpmaWxlLm86ICQoc3JjZGlyKS9weXRob24vcHktb2JqZmlsZS5jCi0gCSQoQ09NUElMRSkgJChQ WVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LW9iamZpbGUuYwotIAkkKFBPU1RDT01Q SUxFKQotIAotK3B5LXBhcmFtLm86ICQoc3JjZGlyKS9weXRob24vcHktcGFyYW0uYwotKwkkKENP TVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1wYXJhbS5jCi0rCSQo UE9TVENPTVBJTEUpCi0rCi0gcHktcHJldHR5cHJpbnQubzogJChzcmNkaXIpL3B5dGhvbi9weS1w cmV0dHlwcmludC5jCi0gCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0 aG9uL3B5LXByZXR0eXByaW50LmMKLSAJJChQT1NUQ09NUElMRSkKLSAKLStweS1zeW1ib2wubzog JChzcmNkaXIpL3B5dGhvbi9weS1zeW1ib2wuYwotKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFH UykgJChzcmNkaXIpL3B5dGhvbi9weS1zeW1ib2wuYwotKwkkKFBPU1RDT01QSUxFKQotKwotK3B5 LXN5bXRhYi5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LXN5bXRhYi5jCi0rCSQoQ09NUElMRSkgJChQ WVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LXN5bXRhYi5jCi0rCSQoUE9TVENPTVBJ TEUpCi0rCi0gcHktdHlwZS5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LXR5cGUuYwotIAkkKENPTVBJ TEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS10eXBlLmMKLSAJJChQT1NU Q09NUElMRSkKLUBAIC0yMDA2LDYgKzIwNjcsMzYgQEAgcHktdmFsdWUubzogJChzcmNkaXIpL3B5 dGhvbi9weS12YWx1ZS5jCi0gCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2Rpcikv cHl0aG9uL3B5LXZhbHVlLmMKLSAJJChQT1NUQ09NUElMRSkKLSAKLSsjIEFsbCBweXRob24gbGli cmFyeSBmaWxlcywgd2l0aCB0aGUgInB5dGhvbi9saWIiIHN0cmlwcGVkIG9mZi4KLSsjIE5vdGUg dGhhdCB3ZSBzaG91bGQgb25seSBpbnN0YWxsIGZpbGVzIGluIHRoZSAiZ2RiIiBtb2R1bGUuCi0r UFlfRklMRVMgPSBnZGIvRnJhbWVJdGVyYXRvci5weSBnZGIvRnJhbWVXcmFwcGVyLnB5IGdkYi9j b21tYW5kL2FsaWFzLnB5IFwKLSsgICAgZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5IGdkYi9jb21t YW5kL3JlcXVpcmUucHkgXAotKyAgICBnZGIvY29tbWFuZC9wYWhvbGUucHkgZ2RiL2NvbW1hbmQv dXB0by5weSBnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCi0rICAgIGdkYi9jb21tYW5kL2lnbm9y ZV9lcnJvcnMucHkgZ2RiL2NvbW1hbmQvc2F2ZV9icmVha3BvaW50cy5weSBcCi0rICAgIGdkYi9m dW5jdGlvbi9jYWxsZXJfaXMucHkgZ2RiL2Z1bmN0aW9uL2luX3Njb3BlLnB5IFwKLSsgICAgZ2Ri L2Z1bmN0aW9uL19faW5pdF9fLnB5IGdkYi9iYWNrdHJhY2UucHkgZ2RiL19faW5pdF9fLnB5Ci0r Ci0rIyBJbnN0YWxsIHRoZSBQeXRob24gbGlicmFyeS4gIFB5dGhvbiBsaWJyYXJ5IGZpbGVzIGdv IHVuZGVyCi0rIyAkKHB5dGhvbmRpcikuCi0raW5zdGFsbC1weXRob246Ci0rCWZpbGVzPSckKFBZ X0ZJTEVTKSc7IGZvciBmaWxlIGluICQkZmlsZXM7IGRvIFwKLSsJICBkaXI9YGVjaG8gIiQkZmls ZSIgfCBzZWQgJ3MsL1teL10qJCQsLCdgOyBcCi0rCSAgJChTSEVMTCkgJChzcmNkaXIpLy4uL21r aW5zdGFsbGRpcnMgJChERVNURElSKSQocHl0aG9uZGlyKS8kJGRpcjsgXAotKwkgICQoSU5TVEFM TF9EQVRBKSAkKHNyY2RpcikvcHl0aG9uL2xpYi8kJGZpbGUgJChERVNURElSKSQocHl0aG9uZGly KS8kJGZpbGU7IFwKLSsJZG9uZQotKwotKyMgT3RoZXIgcGFja2FnZXMgbWF5IGhhdmUgdGhlaXIg ZmlsZXMgaW5zdGFsbGVkIGluICQocHl0aG9uZGlyKS4KLSt1bmluc3RhbGwtcHl0aG9uOgotKwlm aWxlcz0nJChQWV9GSUxFUyknOyBmb3IgZmlsZSBpbiAkJGZpbGVzOyBkbyBcCi0rCSAgc2xhc2hk aXI9YGVjaG8gIi8kJGZpbGUiIHwgc2VkICdzLC9bXi9dKiQkLCwnYDsgXAotKwkgIHJtIC1mICQo REVTVERJUikkKHB5dGhvbmRpcikvJCRmaWxlOyBcCi0rCSAgd2hpbGUgdGVzdCAieCQkZmlsZSIg IT0gIngkJHNsYXNoZGlyIjsgZG8gXAotKwkgICAgcm1kaXIgMj4vZGV2L251bGwgIiQoREVTVERJ UikkKHB5dGhvbmRpcikkJHNsYXNoZGlyIjsgXAotKwkgICAgZmlsZT0iJCRzbGFzaGRpciI7IFwK LSsJICAgIHNsYXNoZGlyPWBlY2hvICIkJGZpbGUiIHwgc2VkICdzLC9bXi9dKiQkLCwnYDsgXAot KwkgIGRvbmUgXAotKwlkb25lCi0rCi0gIwotICMgRGVwZW5kZW5jeSB0cmFja2luZy4gIE1vc3Qg b2YgdGhpcyBpcyBjb25kaXRpb25hbCBvbiBHTlUgTWFrZSBiZWluZwotICMgZm91bmQgYnkgY29u ZmlndXJlOyBpZiBHTlUgTWFrZSBpcyBub3QgZm91bmQsIHdlIGZhbGwgYmFjayB0byBhCiBkaWZm IC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwotaW5kZXggN2EyZDJjYS4u NGJmNGUzMSAxMDA2NDQKK2luZGV4IDFkNGMzOGIuLmNhZmI4OGUgMTAwNjQ0CiAtLS0gYS9nZGIv YWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC00NzgxLDE0ICs0NzgxLDEwIEBA IGFkYV9sb29rdXBfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrMCwKK0BAIC0xMTExNCw2ICsxMTExNCw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNv bnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCiAgCi0gc3Rh dGljIHN0cnVjdCBzeW1ib2wgKgotIGFkYV9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBj aGFyICpuYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsaW5r YWdlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9j ayAqYmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbikKKyBzdGF0aWMgaW50CisgYWRhX29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBpbnQgcG9zLAorKwkJICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBl ICp0eXBlLCB2b2lkICpkYXRhKSwKKyAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCisgCQkgICAgdm9pZCAqZGF0YSkKICB7Ci0t ICBpZiAobGlua2FnZV9uYW1lID09IE5VTEwpCi0tICAgIGxpbmthZ2VfbmFtZSA9IG5hbWU7Ci0t ICByZXR1cm4gYWRhX2xvb2t1cF9zeW1ib2wgKGxpbmthZ2VfbmFtZSwgYmxvY2tfc3RhdGljX2Js b2NrIChibG9jayksIGRvbWFpbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7 Ci0rICByZXR1cm4gYWRhX2xvb2t1cF9zeW1ib2wgKG5hbWUsIGJsb2NrX3N0YXRpY19ibG9jayAo YmxvY2spLCBkb21haW4sIE5VTEwpOwotIH0KLSAKLSAKLUBAIC0xMDkzOCw2ICsxMDkzNCw0MCBA QCBhZGFfb3BlcmF0b3JfbGVuZ3RoIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGlu dCAqb3BsZW5wLCBpbnQgKmFyZ3NwKQotICAgICB9Ci0gfQorQEAgLTExMTI4LDEyICsxMTEyOSwx NSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3Ms CisgCWJyZWFrOwogIAotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBleHBfZGVzY3JpcHRvciBt ZXRob2Qgb3BlcmF0b3JfY2hlY2suICAqLwotKwotK3N0YXRpYyBpbnQKLSthZGFfb3BlcmF0b3Jf Y2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0rCQkgICAgaW50ICgqdHlw ZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAotKwkJICAgIGludCAoKm9i amZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKLSsJCSAg ICB2b2lkICpkYXRhKQotK3sKLSsgIGNvbnN0IHVuaW9uIGV4cF9lbGVtZW50ICpjb25zdCBlbHRz ID0gZXhwLT5lbHRzOwotKyAgc3RydWN0IHR5cGUgKnR5cGUgPSBOVUxMOwotKwotKyAgc3dpdGNo IChlbHRzW3Bvc10ub3Bjb2RlKQotKyAgICB7Ci0rICAgICAgY2FzZSBVTk9QX0lOX1JBTkdFOgot KyAgICAgIGNhc2UgVU5PUF9RVUFMOgotKwl0eXBlID0gZWx0c1twb3MgKyAxXS50eXBlOwotKwli cmVhazsKLSsKLSsgICAgICBkZWZhdWx0OgorICAgICAgIGRlZmF1bHQ6CistCXJldHVybiBvcGVy YXRvcl9jaGVja19zdGFuZGFyZCAoZXhwLCBwb3MsIG9iamZpbGVfZnVuYywgZGF0YSk7CiArCXJl dHVybiBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoZXhwLCBwb3MsIHR5cGVfZnVuYywgb2JqZmls ZV9mdW5jLAogKwkJCQkJZGF0YSk7Ci0rICAgIH0KLSsKLSsgIC8qIEludm9rZSBjYWxsYmFja3Mg Zm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCi0r CisgICAgIH0KKyAKKyAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUg aWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCisgCistICBpZiAodHlwZSAmJiBUWVBF X09CSkZJTEUgKHR5cGUpCiArICBpZiAodHlwZSAmJiB0eXBlX2Z1bmMgJiYgKCp0eXBlX2Z1bmMp ICh0eXBlLCBkYXRhKSkKICsgICAgcmV0dXJuIDE7CiArICBpZiAodHlwZSAmJiBUWVBFX09CSkZJ TEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYwotKyAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAoVFlQ RV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCi0rICAgIHJldHVybiAxOwotKwotKyAgcmV0dXJuIDA7 Ci0rfQotKwotIHN0YXRpYyBjaGFyICoKLSBhZGFfb3BfbmFtZSAoZW51bSBleHBfb3Bjb2RlIG9w Y29kZSkKLSB7Ci1AQCAtMTEzMjYsNiArMTEzNTYsNyBAQCBwYXJzZSAodm9pZCkKLSBzdGF0aWMg Y29uc3Qgc3RydWN0IGV4cF9kZXNjcmlwdG9yIGFkYV9leHBfZGVzY3JpcHRvciA9IHsKLSAgIGFk YV9wcmludF9zdWJleHAsCi0gICBhZGFfb3BlcmF0b3JfbGVuZ3RoLAotKyAgYWRhX29wZXJhdG9y X2NoZWNrLAotICAgYWRhX29wX25hbWUsCi0gICBhZGFfZHVtcF9zdWJleHBfYm9keSwKLSAgIGFk YV9ldmFsdWF0ZV9zdWJleHAKLWRpZmYgLS1naXQgYS9nZGIvYWxwaGEtbGludXgtdGRlcC5jIGIv Z2RiL2FscGhhLWxpbnV4LXRkZXAuYwotaW5kZXggM2M3MWYyZi4uYmJmZTVhMSAxMDA2NDQKLS0t LSBhL2dkYi9hbHBoYS1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9hbHBoYS1saW51eC10ZGVwLmMK LUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgInN5bXRhYi5oIgotICNpbmNsdWRlICJyZWdz ZXQuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAibGludXgtdGRlcC5oIgot IAotICNpbmNsdWRlICJhbHBoYS10ZGVwLmgiCi0gCi1AQCAtMjM2LDYgKzIzNyw5IEBAIGFscGhh X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoKQotIAotICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uCi0g ICAgIChnZGJhcmNoLCBhbHBoYV9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24pOwotKwot KyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJ CQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9CisgICAgICAgJiYgKCpv YmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJTEUgKHR5cGUpLCBkYXRhKSkKKyAgICAgcmV0dXJuIDE7 CiAgCi0gLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1wcm90b3R5 cGVzLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvYW1kNjQtbGludXgtbmF0LmMgYi9nZGIvYW1kNjQt bGludXgtbmF0LmMKLWluZGV4IDVjOWU1NTguLjU1YTE4NzMgMTAwNjQ0CitpbmRleCBjMGVkYzEw Li4xN2QzNmI1IDEwMDY0NAogLS0tIGEvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCiArKysgYi9nZGIv YW1kNjQtbGludXgtbmF0LmMKLUBAIC0zNTAsNiArMzUwLDIwIEBAIGFtZDY0X2xpbnV4X2RyX3Vu c2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorQEAgLTM3NSw2ICszNzUsMjAgQEAgYW1k NjRfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCiAgICAgIH0KICB9 CiAgCkBAIC0zMDUsNyArNjksNyBAQCBpbmRleCA1YzllNTU4Li41NWExODczIDEwMDY0NAogIAog IHN0YXRpYyB2b2lkCiAgYW1kNjRfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCi1AQCAt NzAyLDYgKzcxNiw3IEBAIF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25hdCAodm9pZCkKK0BAIC03 OTYsNiArODEwLDcgQEAgX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0ICh2b2lkKQogICAgaTM4 Nl9kcl9sb3cucmVzZXRfYWRkciA9IGFtZDY0X2xpbnV4X2RyX3Jlc2V0X2FkZHI7CiAgICBpMzg2 X2RyX2xvdy5nZXRfc3RhdHVzID0gYW1kNjRfbGludXhfZHJfZ2V0X3N0YXR1czsKICAgIGkzODZf ZHJfbG93LnVuc2V0X3N0YXR1cyA9IGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKQEAgLTMx Myw2OCArNzcsMTEgQEAgaW5kZXggNWM5ZTU1OC4uNTVhMTg3MyAxMDA2NDQKICAgIGkzODZfc2V0 X2RlYnVnX3JlZ2lzdGVyX2xlbmd0aCAoOCk7CiAgCiAgICAvKiBPdmVycmlkZSB0aGUgR05VL0xp bnV4IGluZmVyaW9yIHN0YXJ0dXAgaG9vay4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LWxp bnV4LXRkZXAuYyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKLWluZGV4IGMyOGVlZjcuLjAyYzEx ZTEgMTAwNjQ0Ci0tLS0gYS9nZGIvYW1kNjQtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvYW1kNjQt bGludXgtdGRlcC5jCi1AQCAtMTQ4MSw2ICsxNDgxLDkgQEAgYW1kNjRfbGludXhfaW5pdF9hYmkg KHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICBh bWQ2NF9saW51eF9yZWNvcmRfdGRlcC5hcmc2ID0gQU1ENjRfUjlfUkVHTlVNOwotIAotICAgdGRl cC0+aTM4Nl9zeXNjYWxsX3JlY29yZCA9IGFtZDY0X2xpbnV4X3N5c2NhbGxfcmVjb3JkOwotKwot KyAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJ CQkgIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0gDAotIAotZGlmZiAt LWdpdCBhL2dkYi9hcm0tbGludXgtdGRlcC5jIGIvZ2RiL2FybS1saW51eC10ZGVwLmMKLWluZGV4 IGFmNDA5ZjYuLjQwNmMwNjYgMTAwNjQ0Ci0tLS0gYS9nZGIvYXJtLWxpbnV4LXRkZXAuYwotKysr IGIvZ2RiL2FybS1saW51eC10ZGVwLmMKLUBAIC05MTgsNiArOTE4LDkgQEAgYXJtX2xpbnV4X2lu aXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sCi0gICBzZXRfZ2RiYXJjaF9kaXNwbGFj ZWRfc3RlcF9mcmVlX2Nsb3N1cmUgKGdkYmFyY2gsCi0gCQkJCQkgICBzaW1wbGVfZGlzcGxhY2Vk X3N0ZXBfZnJlZV9jbG9zdXJlKTsKLSAgIHNldF9nZGJhcmNoX2Rpc3BsYWNlZF9zdGVwX2xvY2F0 aW9uIChnZGJhcmNoLCBkaXNwbGFjZWRfc3RlcF9hdF9lbnRyeV9wb2ludCk7Ci0rCi0rICBzZXRf Z2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGlu dXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJv dG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotZGlmZiAtLWdpdCBh L2dkYi9heC1nZGIuYyBiL2dkYi9heC1nZGIuYwotaW5kZXggM2UxNTFkZS4uZGRiY2I2ZSAxMDA2 NDQKLS0tLSBhL2dkYi9heC1nZGIuYwotKysrIGIvZ2RiL2F4LWdkYi5jCi1AQCAtMTgxMiw3ICsx ODEyLDcgQEAgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVt ZW50ICoqcGMsCi0gCi0gCS8qIENhbGxpbmcgbG9va3VwX2Jsb2NrX3N5bWJvbCBpcyBuZWNlc3Nh cnkgdG8gZ2V0IHRoZSBMT0NfUkVHSVNURVIKLSAJICAgc3ltYm9sIGluc3RlYWQgb2YgdGhlIExP Q19BUkcgb25lIChpZiBib3RoIGV4aXN0KS4gICovCi0tCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1i b2wgKGIsIHRoaXNfbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7Ci0rCXN5bSA9IGxvb2t1cF9ibG9j a19zeW1ib2wgKGIsIHRoaXNfbmFtZSwgVkFSX0RPTUFJTik7Ci0gCWlmICghc3ltKQotIAkgIGVy cm9yIChfKCJubyBgJXMnIGZvdW5kIiksIHRoaXNfbmFtZSk7Ci0gCiBkaWZmIC0tZ2l0IGEvZ2Ri L2Jsb2NrLmMgYi9nZGIvYmxvY2suYwotaW5kZXggNDhhYzIxYi4uMGVjY2VjYiAxMDA2NDQKK2lu ZGV4IDQ4YWMyMWIuLmZmY2M5N2YgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suYwogKysrIGIvZ2Ri L2Jsb2NrLmMKLUBAIC0yMjcsOCArMjI3LDkgQEAgYmxvY2tfc2V0X3Njb3BlIChzdHJ1Y3QgYmxv Y2sgKmJsb2NrLCBjb25zdCBjaGFyICpzY29wZSwKLSAgIEJMT0NLX05BTUVTUEFDRSAoYmxvY2sp LT5zY29wZSA9IHNjb3BlOwotIH0KLSAKLS0vKiBUaGlzIHJldHVybnMgdGhlIHVzaW5nIGRpcmVj dGl2ZXMgbGlzdCBhc3NvY2lhdGVkIHdpdGggQkxPQ0ssIGlmCi0tICAgYW55LiAgKi8KLSsvKiBU aGlzIHJldHVybnMgdGhlIGZpcnN0IHVzaW5nIGRpcmVjdGl2ZXMgYXNzb2NpYXRlZCB3aXRoIEJM T0NLLCBpZgotKyAgIGFueS4gIEVhY2ggQkxPQ0tfTkFNRVNQQUNFKCktPlVTSU5HIGFscmVhZHkg Y29udGFpbnMgYWxsIHRoZSBuYW1lc3BhY2VzCi0rICAgaW1wb3J0ZWQgYXQgdGhhdCBjb2RlIHBv aW50IC0gZXZlbiB0aG9zZSBmcm9tIGl0cyBwYXJlbnQgYmxvY2tzLiAgKi8KLSAKLSBzdHJ1Y3Qg dXNpbmdfZGlyZWN0ICoKLSBibG9ja191c2luZyAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaykK LUBAIC0zMTgsNiArMzE5LDI1IEBAIGFsbG9jYXRlX2Jsb2NrIChzdHJ1Y3Qgb2JzdGFjayAqb2Jz dGFjaykKLSAgIEJMT0NLX1NVUEVSQkxPQ0sgKGJsKSA9IE5VTEw7Ci0gICBCTE9DS19ESUNUIChi bCkgPSBOVUxMOwotICAgQkxPQ0tfTkFNRVNQQUNFIChibCkgPSBOVUxMOwotKyAgQkxPQ0tfRk9S VFJBTl9VU0UgKGJsKSA9IE5VTEw7CitAQCAtMzIxLDMgKzMyMSwyMSBAQCBhbGxvY2F0ZV9ibG9j ayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spCiAgCiAgICByZXR1cm4gYmw7CiAgfQpAQCAtMzk3 LDE1MSArMTA0LDE3NyBAQCBpbmRleCA0OGFjMjFiLi4wZWNjZWNiIDEwMDY0NAogKyAgcmV0dXJu IFNZTUJPTF9TWU1UQUIgKGZ1bmMpLT5vYmpmaWxlOwogK30KIGRpZmYgLS1naXQgYS9nZGIvYmxv Y2suaCBiL2dkYi9ibG9jay5oCi1pbmRleCA3ZWVkYjZjLi5iMTQ3ODI2IDEwMDY0NAoraW5kZXgg N2VlZGI2Yy4uYTUxN2U4MCAxMDA2NDQKIC0tLSBhL2dkYi9ibG9jay5oCiArKysgYi9nZGIvYmxv Y2suaAotQEAgLTk2LDYgKzk2LDE1IEBAIHN0cnVjdCBibG9jawotICAgICBjcGx1c19zcGVjaWZp YzsKLSAgIH0KLSAgIGxhbmd1YWdlX3NwZWNpZmljOwotKwotKyAgLyogRklYTUU6IEl0IHNob3Vs ZCBiZSBpbiB0aGUgTEFOR1VBR0VfU1BFQ0lGSUMgcmVnaW9uIGJ1dCB0aGUKLSsgICAgIEJMT0NL X05BTUVTUEFDRSBhY2Nlc3NvciBpcyBub3QgcHJvdGVjdGVkIGJ5IHRoZSBDIGxhbmd1YWdlIGNo ZWNrLiAgKi8KLSsKLSsgIHN0cnVjdAotKyAgICB7Ci0rICAgICAgc3RydWN0IGZvcnRyYW5fdXNp bmcgKnVzZTsKLSsgICAgfQotKyAgZm9ydHJhbl9zcGVjaWZpYzsKLSB9OwotIAotICNkZWZpbmUg QkxPQ0tfU1RBUlQoYmwpCQkoYmwpLT5zdGFydGFkZHIKLUBAIC0xMDQsNiArMTEzLDcgQEAgc3Ry dWN0IGJsb2NrCi0gI2RlZmluZSBCTE9DS19TVVBFUkJMT0NLKGJsKQkoYmwpLT5zdXBlcmJsb2Nr Ci0gI2RlZmluZSBCTE9DS19ESUNUKGJsKQkJKGJsKS0+ZGljdAotICNkZWZpbmUgQkxPQ0tfTkFN RVNQQUNFKGJsKSAgIChibCktPmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3NwZWNpZmljLm5hbWVz cGFjZQotKyNkZWZpbmUgQkxPQ0tfRk9SVFJBTl9VU0UoYmwpCShibCktPmZvcnRyYW5fc3BlY2lm aWMudXNlCi0gCi0gLyogTWFjcm8gdG8gbG9vcCB0aHJvdWdoIGFsbCBzeW1ib2xzIGluIGEgYmxv Y2sgQkwsIGluIG5vIHBhcnRpY3VsYXIKLSAgICBvcmRlci4gIElURVIgaGVscHMga2VlcCB0cmFj ayBvZiB0aGUgaXRlcmF0aW9uLCBhbmQgc2hvdWxkIGJlIGEKLUBAIC0xNjYsNCArMTc2LDYgQEAg ZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2tfZ2xvYmFsX2Jsb2NrIChjb25zdCBzdHJ1 Y3QgYmxvY2sgKmJsb2NrKTsKK0BAIC0xNjYsNCArMTY2LDYgQEAgZXh0ZXJuIGNvbnN0IHN0cnVj dCBibG9jayAqYmxvY2tfZ2xvYmFsX2Jsb2NrIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsK ICAKICBleHRlcm4gc3RydWN0IGJsb2NrICphbGxvY2F0ZV9ibG9jayAoc3RydWN0IG9ic3RhY2sg Km9ic3RhY2spOwogIAogK2V4dGVybiBzdHJ1Y3Qgb2JqZmlsZSAqYmxvY2tfb2JqZmlsZSAoY29u c3Qgc3RydWN0IGJsb2NrICpibG9jayk7CiArCiAgI2VuZGlmIC8qIEJMT0NLX0ggKi8KK2RpZmYg LS1naXQgYS9nZGIvYmxvY2tmcmFtZS5jIGIvZ2RiL2Jsb2NrZnJhbWUuYworaW5kZXggMDM0OGJm NC4uZjAxZDBlZSAxMDA2NDQKKy0tLSBhL2dkYi9ibG9ja2ZyYW1lLmMKKysrKyBiL2dkYi9ibG9j a2ZyYW1lLmMKK0BAIC0zOCw2ICszOCw3IEBACisgI2luY2x1ZGUgImJsb2NrLmgiCisgI2luY2x1 ZGUgImlubGluZS1mcmFtZS5oIgorICNpbmNsdWRlICJwc3ltdGFiLmgiCisrI2luY2x1ZGUgImVs Zi1iZmQuaCIKKyAKKyAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBsZXhpY2FsIGJsb2NrIGluIGV4 ZWN1dGlvbgorICAgIGluIGEgc3BlY2lmaWVkIHN0YWNrIGZyYW1lLiAgVGhlIGZyYW1lIGFkZHJl c3MgaXMgYXNzdW1lZCB2YWxpZC4KK0BAIC0xNTksNiArMTYwLDcgQEAgc3RhdGljIENPUkVfQURE UiBjYWNoZV9wY19mdW5jdGlvbl9sb3cgPSAwOworIHN0YXRpYyBDT1JFX0FERFIgY2FjaGVfcGNf ZnVuY3Rpb25faGlnaCA9IDA7Cisgc3RhdGljIGNoYXIgKmNhY2hlX3BjX2Z1bmN0aW9uX25hbWUg PSAwOworIHN0YXRpYyBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKmNhY2hlX3BjX2Z1bmN0aW9uX3NlY3Rp b24gPSBOVUxMOworK3N0YXRpYyBpbnQgY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5jID0g MDsKKyAKKyAvKiBDbGVhciBjYWNoZSwgZS5nLiB3aGVuIHN5bWJvbCB0YWJsZSBpcyBkaXNjYXJk ZWQuICovCisgCitAQCAtMTY5LDYgKzE3MSw3IEBAIGNsZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2 b2lkKQorICAgY2FjaGVfcGNfZnVuY3Rpb25faGlnaCA9IDA7CisgICBjYWNoZV9wY19mdW5jdGlv bl9uYW1lID0gKGNoYXIgKikgMDsKKyAgIGNhY2hlX3BjX2Z1bmN0aW9uX3NlY3Rpb24gPSBOVUxM OworKyAgY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5jID0gMDsKKyB9CisgCisgLyogRmlu ZHMgdGhlICJmdW5jdGlvbiIgKHRleHQgc3ltYm9sKSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBQQyBi dXQKK0BAIC0xODQsNyArMTg3LDcgQEAgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpCisg CisgLyogQmFja3dhcmQgY29tcGF0aWJpbGl0eSwgbm8gc2VjdGlvbiBhcmd1bWVudC4gICovCisg CistaW50CisrZW51bSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb25fdHlwZQorIGZpbmRfcGNfcGFy dGlhbF9mdW5jdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICoqbmFtZSwgQ09SRV9BRERSICphZGRy ZXNzLAorIAkJCSAgQ09SRV9BRERSICplbmRhZGRyKQorIHsKK0BAIC0yMzYsNiArMjM5LDcgQEAg ZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JF X0FERFIgKmFkZHJlc3MsCisgCSAgY2FjaGVfcGNfZnVuY3Rpb25faGlnaCA9IEJMT0NLX0VORCAo U1lNQk9MX0JMT0NLX1ZBTFVFIChmKSk7CisgCSAgY2FjaGVfcGNfZnVuY3Rpb25fbmFtZSA9IFNZ TUJPTF9MSU5LQUdFX05BTUUgKGYpOworIAkgIGNhY2hlX3BjX2Z1bmN0aW9uX3NlY3Rpb24gPSBz ZWN0aW9uOworKwkgIGNhY2hlX3BjX2Z1bmN0aW9uX2lzX2dudV9pZnVuYyA9IFRZUEVfR05VX0lG VU5DIChTWU1CT0xfVFlQRSAoZikpOworIAkgIGdvdG8gcmV0dXJuX2NhY2hlZF92YWx1ZTsKKyAJ fQorICAgICB9CitAQCAtMjU4LDEyICsyNjIsMTMgQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9u IChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCisgCSphZGRy ZXNzID0gMDsKKyAgICAgICBpZiAoZW5kYWRkciAhPSBOVUxMKQorIAkqZW5kYWRkciA9IDA7Cist ICAgICAgcmV0dXJuIDA7CisrICAgICAgcmV0dXJuIEZJTkRfUENfUEFSVElBTF9GVU5DVElPTl9O T1RfRk9VTkQ7CisgICAgIH0KKyAKKyAgIGNhY2hlX3BjX2Z1bmN0aW9uX2xvdyA9IFNZTUJPTF9W QUxVRV9BRERSRVNTIChtc3ltYm9sKTsKKyAgIGNhY2hlX3BjX2Z1bmN0aW9uX25hbWUgPSBTWU1C T0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKKyAgIGNhY2hlX3BjX2Z1bmN0aW9uX3NlY3Rpb24g PSBzZWN0aW9uOworKyAgY2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5jID0gTVNZTUJPTF9U WVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7CisgCisgICAvKiBJZiB0aGUgbWlu aW1hbCBzeW1ib2wgaGFzIGEgc2l6ZSwgdXNlIGl0IGZvciB0aGUgY2FjaGUuCisgICAgICBPdGhl cndpc2UgdXNlIHRoZSBsZXNzZXIgb2YgdGhlIG5leHQgbWluaW1hbCBzeW1ib2wgaW4gdGhlIHNh bWUKK0BAIC0zMjMsNyArMzI4LDggQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FE RFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCisgCSplbmRhZGRyID0gY2Fj aGVfcGNfZnVuY3Rpb25faGlnaDsKKyAgICAgfQorIAorLSAgcmV0dXJuIDE7CisrICByZXR1cm4g Y2FjaGVfcGNfZnVuY3Rpb25faXNfZ251X2lmdW5jID8gRklORF9QQ19QQVJUSUFMX0ZVTkNUSU9O X0dOVV9JRlVOQworKwkJCQkJOiBGSU5EX1BDX1BBUlRJQUxfRlVOQ1RJT05fTk9STUFMOworIH0K KyAKKyAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBzdGFjayBmcmFtZSBleGVjdXRpbmcgaW5zaWRl IG9mIEJMT0NLLAogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2lu dC5jCi1pbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAoraW5kZXggNGFmZmUwYS4uNTIxMDVi NSAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3BvaW50LmMK LUBAIC02MSw2ICs2MSw3IEBACi0gI2luY2x1ZGUgInZhbHByaW50LmgiCitAQCAtNjIsNiArNjIs NyBAQAogICNpbmNsdWRlICJqaXQuaCIKICAjaW5jbHVkZSAieG1sLXN5c2NhbGwuaCIKLSsjaW5j bHVkZSAicGFyc2VyLWRlZnMuaCIKKyAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKKysjaW5jbHVk ZSAicmVnY2FjaGUuaCIKICAKICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCiAgI2luY2x1 ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtNjE0LDYgKzYxNSw1MyBAQCBnZXRfYnJlYWtw b2ludCAoaW50IG51bSkKLSB9CitAQCAtOTIsNiArOTMsOSBAQCBzdGF0aWMgdm9pZCBtYXBfYnJl YWtwb2ludF9udW1iZXJzIChjaGFyICosIHZvaWQgKCopIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAog IAotIAwKLSsvKiBTZXQgYnJlYWsgY29uZGl0aW9uIG9mIGJyZWFrcG9pbnQgQiB0byBFWFAuICAq LworIHN0YXRpYyB2b2lkIGlnbm9yZV9jb21tYW5kIChjaGFyICosIGludCk7CisgCisrc3RhdGlj IHZvaWQgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwK KysJCQkJCSBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2Fscyk7CiArCi0rdm9pZAotK3NldF9i cmVha3BvaW50X2NvbmRpdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGNoYXIgKmV4cCwgaW50 IGZyb21fdHR5KQotK3sKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jID0gYi0+bG9jOworIHN0 YXRpYyBpbnQgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICopOworIAorIHN0YXRpYyB2b2lk IGNsZWFyX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKK0BAIC0xMDYsNiArMTEwLDkgQEAgc3RhdGlj IHZvaWQgYnJlYWtfY29tbWFuZF8xIChjaGFyICosIGludCwgaW50KTsKKyAKKyBzdGF0aWMgdm9p ZCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKKyAKKytzdGF0aWMgc3RydWN0IGJwX2xv Y2F0aW9uICphZGRfbG9jYXRpb25fdG9fYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIs CisrCQkJCQkgICAgIGNvbnN0IHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCk7CiArCi0rICBm b3IgKDsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCi0rICAgIHsKLSsgICAgICBpZiAobG9jLT5jb25k KQotKwl7Ci0rCSAgeGZyZWUgKGxvYy0+Y29uZCk7Ci0rCSAgbG9jLT5jb25kID0gMDsKLSsJfQot KyAgICB9CisgLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIGdkYnRrIHNvdXJjZXMgYW5kIHRo dXMgY2FuIG5vdCBiZSBtYWRlIHN0YXRpYy4gICovCisgc3RydWN0IGJyZWFrcG9pbnQgKnNldF9y YXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkJCQkgICAgICBzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lLAorQEAgLTIzMCw2ICsyMzcsMTAgQEAgc3RhdGljIHZvaWQgZGlz YWJsZV90cmFjZV9jb21tYW5kIChjaGFyICosIGludCk7CisgCisgc3RhdGljIHZvaWQgdHJhY2Vf cGFzc19jb21tYW5kIChjaGFyICosIGludCk7CisgCisrc3RhdGljIHZvaWQgZ251X2lmdW5jX3Jl c29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3BvaW50ICpiKTsKICsKLSsgIGlmIChiLT5jb25kX3N0 cmluZyAhPSBOVUxMKQotKyAgICB4ZnJlZSAoYi0+Y29uZF9zdHJpbmcpOworK3N0YXRpYyB2b2lk IGdudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpOwog KwotKyAgaWYgKCpleHAgPT0gMCkKLSsgICAgewotKyAgICAgIGItPmNvbmRfc3RyaW5nID0gTlVM TDsKLSsgICAgICBpZiAoZnJvbV90dHkpCi0rCXByaW50Zl9maWx0ZXJlZCAoXygiQnJlYWtwb2lu dCAlZCBub3cgdW5jb25kaXRpb25hbC5cbiIpLCBiLT5udW1iZXIpOwotKyAgICB9Ci0rICBlbHNl Ci0rICAgIHsKLSsgICAgICBjaGFyICphcmcgPSBleHA7CisgLyogQXNzdW1pbmcgd2UncmUgY3Jl YXRpbmcgYSBzdGF0aWMgdHJhY2Vwb2ludCwgZG9lcyBTIGxvb2sgbGlrZSBhCisgICAgc3RhdGlj IHRyYWNlcG9pbnQgbWFya2VyIHNwZWMgKCItbSBNQVJLRVJfSUQiKT8gICovCisgI2RlZmluZSBp c19tYXJrZXJfc3BlYyhzKQkJCQkJCVwKK0BAIC0xMjUyLDYgKzEyNjMsMjIgQEAgd2F0Y2hwb2lu dF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCBicmVha3BvaW50ICpiKQorIAkgICAgICAmJiAhaXNf ZXhlY3V0aW5nIChpbmZlcmlvcl9wdGlkKSkpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK3dhdGNo cG9pbnRfZGVsX2F0X25leHRfc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisreworKyAgZ2Ri X2Fzc2VydCAoaXNfd2F0Y2hwb2ludCAoYikpOwogKwotKyAgICAgIC8qIEkgZG9uJ3Qga25vdyBp ZiBpdCBtYXR0ZXJzIHdoZXRoZXIgdGhpcyBpcyB0aGUgc3RyaW5nIHRoZSB1c2VyCi0rCSB0eXBl ZCBpbiBvciB0aGUgZGVjb21waWxlZCBleHByZXNzaW9uLiAgKi8KLSsgICAgICBiLT5jb25kX3N0 cmluZyA9IHhzdHJkdXAgKGFyZyk7Ci0rICAgICAgYi0+Y29uZGl0aW9uX25vdF9wYXJzZWQgPSAw OwotKyAgICAgIGZvciAobG9jID0gYi0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+bmV4dCkKLSsJewot KwkgIGFyZyA9IGV4cDsKLSsJICBsb2MtPmNvbmQgPQotKwkgICAgcGFyc2VfZXhwXzEgKCZhcmcs IGJsb2NrX2Zvcl9wYyAobG9jLT5hZGRyZXNzKSwgMCk7Ci0rCSAgaWYgKCphcmcpCi0rCSAgICBl cnJvciAoXygiSnVuayBhdCBlbmQgb2YgZXhwcmVzc2lvbiIpKTsKLSsJfQorKyAgaWYgKGItPnJl bGF0ZWRfYnJlYWtwb2ludCAhPSBiKQorKyAgICB7CisrICAgICAgZ2RiX2Fzc2VydCAoYi0+cmVs YXRlZF9icmVha3BvaW50LT50eXBlID09IGJwX3dhdGNocG9pbnRfc2NvcGUpOworKyAgICAgIGdk Yl9hc3NlcnQgKGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50ID09IGIp OworKyAgICAgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9h dF9uZXh0X3N0b3A7CisrICAgICAgYi0+cmVsYXRlZF9icmVha3BvaW50LT5yZWxhdGVkX2JyZWFr cG9pbnQgPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7CisrICAgICAgYi0+cmVsYXRlZF9icmVha3Bv aW50ID0gYjsKICsgICAgfQotKwotKyAgYnJlYWtwb2ludHNfY2hhbmdlZCAoKTsKLSsgIG9ic2Vy dmVyX25vdGlmeV9icmVha3BvaW50X21vZGlmaWVkIChiLT5udW1iZXIpOworKyAgYi0+ZGlzcG9z aXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7CiArfQogKwotIC8qIGNvbmRpdGlvbiBOIEVY UCAtLSBzZXQgYnJlYWsgY29uZGl0aW9uIG9mIGJyZWFrcG9pbnQgTiB0byBFWFAuICAqLworIC8q IEFzc3VtaW5nIHRoYXQgQiBpcyBhIHdhdGNocG9pbnQ6CisgICAgLSBSZXBhcnNlIHdhdGNocG9p bnQgZXhwcmVzc2lvbiwgaWYgUkVQQVJTRSBpcyBub24temVybworICAgIC0gRXZhbHVhdGUgZXhw cmVzc2lvbiBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiBCLT52YWwKK0BAIC0xMzA3LDYgKzEzMzQs OCBAQCB1cGRhdGVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGludCByZXBhcnNl KQorICAgc3RydWN0IGZyYW1lX2lkIHNhdmVkX2ZyYW1lX2lkOworICAgaW50IGZyYW1lX3NhdmVk OwogIAotIHN0YXRpYyB2b2lkCi1AQCAtNjM0LDQyICs2ODIsNyBAQCBjb25kaXRpb25fY29tbWFu ZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCi0gICBBTExfQlJFQUtQT0lOVFMgKGIpCi0gICAg IGlmIChiLT5udW1iZXIgPT0gYm51bSkKLSAgICAgICB7Ci0tCXN0cnVjdCBicF9sb2NhdGlvbiAq bG9jID0gYi0+bG9jOwotLQlmb3IgKDsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCi0tCSAgewotLQkg ICAgaWYgKGxvYy0+Y29uZCkKLS0JICAgICAgewotLQkJeGZyZWUgKGxvYy0+Y29uZCk7Ci0tCQls b2MtPmNvbmQgPSAwOwotLQkgICAgICB9Ci0tCSAgfQotLQlpZiAoYi0+Y29uZF9zdHJpbmcgIT0g TlVMTCkKLS0JICB4ZnJlZSAoYi0+Y29uZF9zdHJpbmcpOwotLQotLQlpZiAoKnAgPT0gMCkKLS0J ICB7Ci0tCSAgICBiLT5jb25kX3N0cmluZyA9IE5VTEw7Ci0tCSAgICBpZiAoZnJvbV90dHkpCi0t CSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiQnJlYWtwb2ludCAlZCBub3cgdW5jb25kaXRpb25h bC5cbiIpLCBibnVtKTsKLS0JICB9Ci0tCWVsc2UKLS0JICB7Ci0tCSAgICBhcmcgPSBwOwotLQkg ICAgLyogSSBkb24ndCBrbm93IGlmIGl0IG1hdHRlcnMgd2hldGhlciB0aGlzIGlzIHRoZSBzdHJp bmcgdGhlIHVzZXIKLS0JICAgICAgIHR5cGVkIGluIG9yIHRoZSBkZWNvbXBpbGVkIGV4cHJlc3Np b24uICAqLwotLQkgICAgYi0+Y29uZF9zdHJpbmcgPSB4c3RyZHVwIChhcmcpOwotLQkgICAgYi0+ Y29uZGl0aW9uX25vdF9wYXJzZWQgPSAwOwotLQkgICAgZm9yIChsb2MgPSBiLT5sb2M7IGxvYzsg bG9jID0gbG9jLT5uZXh0KQotLQkgICAgICB7Ci0tCQlhcmcgPSBwOwotLQkJbG9jLT5jb25kID0K LS0JCSAgcGFyc2VfZXhwXzEgKCZhcmcsIGJsb2NrX2Zvcl9wYyAobG9jLT5hZGRyZXNzKSwgMCk7 Ci0tCQlpZiAoKmFyZykKLS0JCSAgZXJyb3IgKF8oIkp1bmsgYXQgZW5kIG9mIGV4cHJlc3Npb24i KSk7Ci0tCSAgICAgIH0KLS0JICB9Ci0tCWJyZWFrcG9pbnRzX2NoYW5nZWQgKCk7Ci0tCW9ic2Vy dmVyX25vdGlmeV9icmVha3BvaW50X21vZGlmaWVkIChiLT5udW1iZXIpOwotKwlzZXRfYnJlYWtw b2ludF9jb25kaXRpb24gKGIsIHAsIGZyb21fdHR5KTsKLSAJcmV0dXJuOwotICAgICAgIH0KKysg IGdkYl9hc3NlcnQgKGlzX3dhdGNocG9pbnQgKGIpKTsKKysKKyAgIC8qIElmIHRoaXMgaXMgYSBs b2NhbCB3YXRjaHBvaW50LCB3ZSBvbmx5IHdhbnQgdG8gY2hlY2sgaWYgdGhlCisgICAgICB3YXRj aHBvaW50IGZyYW1lIGlzIGluIHNjb3BlIGlmIHRoZSBjdXJyZW50IHRocmVhZCBpcyB0aGUgdGhy ZWFkCisgICAgICB0aGF0IHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgd2F0Y2hwb2ludC4gICovCitA QCAtMTUxMCwxMyArMTUzOSw3IEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJlYWtwb2lu dCAqYiwgaW50IHJlcGFyc2UpCisgV2F0Y2hwb2ludCAlZCBkZWxldGVkIGJlY2F1c2UgdGhlIHBy b2dyYW0gaGFzIGxlZnQgdGhlIGJsb2NrXG5cCisgaW4gd2hpY2ggaXRzIGV4cHJlc3Npb24gaXMg dmFsaWQuXG4iKSwKKyAJCSAgICAgICBiLT5udW1iZXIpOworLSAgICAgIGlmIChiLT5yZWxhdGVk X2JyZWFrcG9pbnQpCistCXsKKy0JICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQtPmRpc3Bvc2l0aW9u ID0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wOworLQkgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+cmVs YXRlZF9icmVha3BvaW50ID0gTlVMTDsKKy0JICBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ9IE5VTEw7 CistCX0KKy0gICAgICBiLT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKKysg ICAgICB3YXRjaHBvaW50X2RlbF9hdF9uZXh0X3N0b3AgKGIpOworICAgICB9CiAgCi1AQCAtMTg2 OCw2ICsxODgxLDM2IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50IChjaGFyICpm dW5jX25hbWUpCisgICAvKiBSZXN0b3JlIHRoZSBzZWxlY3RlZCBmcmFtZS4gICovCitAQCAtMjIw MSw2ICsyMjI0LDMzIEBAIGNyZWF0ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50IChj b25zdCBjaGFyICpmdW5jX25hbWUpCiAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKICB9CiAg CkBAIC01NTksMTQgKzI5MiwxMSBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogKyAg ICAgIGRlYnVnX2hvb2sgPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoIl9VbndpbmRfRGVi dWdIb29rIiwgb2JqZmlsZSk7CiArICAgICAgaWYgKGRlYnVnX2hvb2sgIT0gTlVMTCkKICsJewot KwkgIENPUkVfQUREUiBwYzsKICsJICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKICsKLSsJICBwYyA9 IGZpbmRfZnVuY3Rpb25fc3RhcnRfcGMgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLAotKwkJ CQkgICAgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGRlYnVnX2hvb2spLAotKwkJCQkgICAgICAg U1lNQk9MX09CSl9TRUNUSU9OIChkZWJ1Z19ob29rKSk7CiArCSAgYiA9IGNyZWF0ZV9pbnRlcm5h bF9icmVha3BvaW50IChnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKSwKLSsJCQkJCSAgcGMsIGJw X2V4Y2VwdGlvbl9tYXN0ZXIpOworKwkJCQkJICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoZGVidWdf aG9vayksCisrCQkJCQkgIGJwX2V4Y2VwdGlvbl9tYXN0ZXIpOwogKwkgIGItPmFkZHJfc3RyaW5n ID0geHN0cmR1cCAoIl9VbndpbmRfRGVidWdIb29rIik7CiArCSAgYi0+ZW5hYmxlX3N0YXRlID0g YnBfZGlzYWJsZWQ7CiArCX0KQEAgLTU3OCwxNiArMzA4LDE3IEBAIGluZGV4IDhjOTc5NDkuLjBi NjY3NDAgMTAwNjQ0CiAgdm9pZAogIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lk KQogIHsKLUBAIC0xOTA5LDcgKzE5NTIsNyBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhl YyAodm9pZCkKK0BAIC0yMjQyLDcgKzIyOTIsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJf ZXhlYyAodm9pZCkKICAgICAgLyogVGhyZWFkIGV2ZW50IGJyZWFrcG9pbnRzIG11c3QgYmUgc2V0 IGFuZXcgYWZ0ZXIgYW4gZXhlYygpLAogICAgICAgICBhcyBtdXN0IG92ZXJsYXkgZXZlbnQgYW5k IGxvbmdqbXAgbWFzdGVyIGJyZWFrcG9pbnRzLiAgKi8KICAgICAgaWYgKGItPnR5cGUgPT0gYnBf dGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAotLQl8fCBiLT50eXBl ID09IGJwX2xvbmdqbXBfbWFzdGVyKQotKwl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVy IHx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uX21hc3RlcikKKy0JfHwgYi0+dHlwZSA9PSBicF9s b25nam1wX21hc3RlciB8fCBiLT50eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyKQorKwl8 fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1p bmF0ZV9tYXN0ZXIKKysJfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFzdGVyKQogICAgICAg IHsKICAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogIAljb250aW51ZTsKLUBAIC0xOTI0LDcgKzE5 NjcsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKK0BAIC0yMjU3LDcg KzIzMDgsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAKICAgICAg LyogTG9uZ2ptcCBhbmQgbG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludHMgYXJlIGFsc28gbWVhbmlu Z2xlc3MKICAgICAgICAgYWZ0ZXIgYW4gZXhlYy4gICovCkBAIC01OTcsMjMgKzMyOCwyNCBAQCBp bmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogICAgICAgIHsKICAJZGVsZXRlX2JyZWFrcG9p bnQgKGIpOwogIAljb250aW51ZTsKLUBAIC0xOTg1LDYgKzIwMjksNyBAQCB1cGRhdGVfYnJlYWtw b2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKLSAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3Bv aW50ICgiX2xvbmdqbXAiKTsKK0BAIC0yMzE5LDYgKzIzNzEsNyBAQCB1cGRhdGVfYnJlYWtwb2lu dHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50 ICgic2lnbG9uZ2ptcCIpOwogICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJf c2lnbG9uZ2ptcCIpOworICAgY3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9pbnQg KCJzdGQ6OnRlcm1pbmF0ZSgpIik7CiArICBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3Bv aW50ICgpOwogIH0KICAKICBpbnQKLUBAIC0yMDA4LDYgKzIwNTMsNyBAQCBkZXRhY2hfYnJlYWtw b2ludHMgKGludCBwaWQpCi0gICAgIGlmIChiLT5pbnNlcnRlZCkKLSAgICAgICB2YWwgfD0gcmVt b3ZlX2JyZWFrcG9pbnRfMSAoYiwgbWFya19pbnNlcnRlZCk7Ci0gICB9CitAQCAtMjM0Niw2ICsy Mzk5LDggQEAgZGV0YWNoX2JyZWFrcG9pbnRzIChpbnQgcGlkKQorICAgLyogRGV0YWNoIHNpbmds ZS1zdGVwIGJyZWFrcG9pbnRzIGFzIHdlbGwuICAqLworICAgZGV0YWNoX3NpbmdsZV9zdGVwX2Jy ZWFrcG9pbnRzICgpOworIAogKyAgdmFsIHw9IHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMgKCk7 CisrCiAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKICAgIHJldHVybiB2YWw7CiAgfQotQEAg LTIxMDcsMTIgKzIxNTMsMTQgQEAgcmVtb3ZlX2JyZWFrcG9pbnRfMSAoc3RydWN0IGJwX2xvY2F0 aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKK0BAIC0yNDQ3LDkgKzI1MDIsMTEgQEAgcmVt b3ZlX2JyZWFrcG9pbnRfMSAoc3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVf dCBpcykKICAJcmV0dXJuIHZhbDsKICAgICAgICBiLT5pbnNlcnRlZCA9IChpcyA9PSBtYXJrX2lu c2VydGVkKTsKICAgICAgfQpAQCAtNjIyLDE1ICszNTQsMTIgQEAgaW5kZXggOGM5Nzk0OS4uMGI2 Njc0MCAxMDA2NDQKICsgICAgIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMuICAqLwogKyAgZWxz ZSBpZiAoYi0+bG9jX3R5cGUgPT0gYnBfbG9jX2hhcmR3YXJlX3dhdGNocG9pbnQgJiYgaXMgPT0g bWFya191bmluc2VydGVkKQogICAgICB7Ci0gICAgICAgc3RydWN0IHZhbHVlICp2OwotICAgICAg IHN0cnVjdCB2YWx1ZSAqbjsKLSAKIC0gICAgICBiLT5pbnNlcnRlZCA9IChpcyA9PSBtYXJrX2lu c2VydGVkKTsKICsgICAgICBiLT5pbnNlcnRlZCA9IDA7Ci0gICAgICAgdmFsID0gdGFyZ2V0X3Jl bW92ZV93YXRjaHBvaW50IChiLT5hZGRyZXNzLCBiLT5sZW5ndGgsIAotIAkJCQkgICAgICBiLT53 YXRjaHBvaW50X3R5cGUpOworICAgICAgIHZhbCA9IHRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludCAo Yi0+YWRkcmVzcywgYi0+bGVuZ3RoLAorIAkJCQkgICAgICBiLT53YXRjaHBvaW50X3R5cGUsIGIt Pm93bmVyLT5jb25kX2V4cCk7CiAgCi1AQCAtMjg5Miw2ICsyOTQwLDEyIEBAIHByaW50X2l0X3R5 cGljYWwgKGJwc3RhdCBicykKK0BAIC0zMjM3LDYgKzMyOTQsMTIgQEAgcHJpbnRfaXRfdHlwaWNh bCAoYnBzdGF0IGJzKQogICAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7CiAgICAgICAgYnJl YWs7CiAgCkBAIC02NDMsNyArMzcyLDcgQEAgaW5kZXggOGM5Nzk0OS4uMGI2Njc0MCAxMDA2NDQK ICAgICAgY2FzZSBicF93YXRjaHBvaW50OgogICAgICBjYXNlIGJwX2hhcmR3YXJlX3dhdGNocG9p bnQ6CiAgICAgICAgYW5ub3RhdGVfd2F0Y2hwb2ludCAoYi0+bnVtYmVyKTsKLUBAIC0yOTc5LDYg KzMwMzMsOCBAQCBwcmludF9pdF90eXBpY2FsIChicHN0YXQgYnMpCitAQCAtMzMyNCw2ICszMzg3 LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQogICAgICBjYXNlIGJwX25vbmU6CiAg ICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKQEAgLTY1 Miw3ICszODEsNDAgQEAgaW5kZXggOGM5Nzk0OS4uMGI2Njc0MCAxMDA2NDQKICAgICAgY2FzZSBi cF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgogICAgICBjYXNl IGJwX2NhbGxfZHVtbXk6Ci1AQCAtMzM4Myw4ICszNDM5LDEyIEBAIGJwc3RhdF9jaGVja19sb2Nh dGlvbiAoY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpibCwKK0BAIC0zMzMxLDYgKzMzOTYsOCBA QCBwcmludF9pdF90eXBpY2FsIChicHN0YXQgYnMpCisgICAgIGNhc2UgYnBfdHJhY2Vwb2ludDoK KyAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CisgICAgIGNhc2UgYnBfaml0X2V2ZW50Ogor KyAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKKysgICAgY2FzZSBicF9nbnVfaWZ1bmNf cmVzb2x2ZXJfcmV0dXJuOgorICAgICBkZWZhdWx0OgorICAgICAgIHJlc3VsdCA9IFBSSU5UX1VO S05PV047CisgICAgICAgYnJlYWs7CitAQCAtMzU0OSw2ICszNjE2LDggQEAgd2F0Y2hwb2ludF9j aGVjayAodm9pZCAqcCkKKyAgIGdkYl9hc3NlcnQgKGJzLT5icmVha3BvaW50X2F0LT5vd25lciAh PSBOVUxMKTsKKyAgIGIgPSBicy0+YnJlYWtwb2ludF9hdC0+b3duZXI7CisgCisrICBnZGJfYXNz ZXJ0IChpc193YXRjaHBvaW50IChiKSk7CisrCisgICAvKiBJZiB0aGlzIGlzIGEgbG9jYWwgd2F0 Y2hwb2ludCwgd2Ugb25seSB3YW50IHRvIGNoZWNrIGlmIHRoZQorICAgICAgd2F0Y2hwb2ludCBm cmFtZSBpcyBpbiBzY29wZSBpZiB0aGUgY3VycmVudCB0aHJlYWQgaXMgdGhlIHRocmVhZAorICAg ICAgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHdhdGNocG9pbnQuICAqLworQEAgLTM2NTUs MTMgKzM3MjQsNyBAQCB3YXRjaHBvaW50X2NoZWNrICh2b2lkICpwKQorICAgICAgIHVpX291dF90 ZXh0ICh1aW91dCwgIiBkZWxldGVkIGJlY2F1c2UgdGhlIHByb2dyYW0gaGFzIGxlZnQgdGhlIGJs b2NrIGluXG5cCisgd2hpY2ggaXRzIGV4cHJlc3Npb24gaXMgdmFsaWQuXG4iKTsgICAgIAorIAor LSAgICAgIGlmIChiLT5yZWxhdGVkX2JyZWFrcG9pbnQpCistCXsKKy0JICBiLT5yZWxhdGVkX2Jy ZWFrcG9pbnQtPmRpc3Bvc2l0aW9uID0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wOworLQkgIGItPnJl bGF0ZWRfYnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50ID0gTlVMTDsKKy0JICBiLT5yZWxh dGVkX2JyZWFrcG9pbnQgPSBOVUxMOworLQl9CistICAgICAgYi0+ZGlzcG9zaXRpb24gPSBkaXNw X2RlbF9hdF9uZXh0X3N0b3A7CisrICAgICAgd2F0Y2hwb2ludF9kZWxfYXRfbmV4dF9zdG9wIChi KTsKKyAKKyAgICAgICByZXR1cm4gV1BfREVMRVRFRDsKKyAgICAgfQorQEAgLTM3MzAsOCArMzc5 MywxMiBAQCBicHN0YXRfY2hlY2tfbG9jYXRpb24gKGNvbnN0IHN0cnVjdCBicF9sb2NhdGlvbiAq YmwsCiAgCiAgLyogSWYgQlMgcmVmZXJzIHRvIGEgd2F0Y2hwb2ludCwgZGV0ZXJtaW5lIGlmIHRo ZSB3YXRjaGVkIHZhbHVlcwogICAgIGhhcyBhY3R1YWxseSBjaGFuZ2VkLCBhbmQgd2Ugc2hvdWxk IHN0b3AuICBJZiBub3QsIHNldCBCUy0+c3RvcApAQCAtNjY2LDggKzQyOCwxOSBAQCBpbmRleCA4 Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogK3N0YXRpYyBpbnQKICBicHN0YXRfY2hlY2tfd2F0Y2hw b2ludCAoYnBzdGF0IGJzKQogIHsKLSAgIGNvbnN0IHN0cnVjdCBicF9sb2NhdGlvbiAqYmwgPSBi cy0+YnJlYWtwb2ludF9hdDsKLUBAIC0zNDczLDggKzM1MzMsMTAgQEAgYnBzdGF0X2NoZWNrX3dh dGNocG9pbnQgKGJwc3RhdCBicykKKyAgIGNvbnN0IHN0cnVjdCBicF9sb2NhdGlvbiAqYmw7CitA QCAtMzg2NSw5ICszOTMyLDcgQEAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJwc3RhdCBicykK KyAJICAgIGNhc2UgMDoKKyAJICAgICAgLyogRXJyb3IgZnJvbSBjYXRjaF9lcnJvcnMuICAqLwor IAkgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIldhdGNocG9pbnQgJWQgZGVsZXRlZC5cbiIpLCBi LT5udW1iZXIpOworLQkgICAgICBpZiAoYi0+cmVsYXRlZF9icmVha3BvaW50KQorLQkJYi0+cmVs YXRlZF9icmVha3BvaW50LT5kaXNwb3NpdGlvbiA9IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKKy0J ICAgICAgYi0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7CisrCSAgICAgIHdh dGNocG9pbnRfZGVsX2F0X25leHRfc3RvcCAoYik7CisgCSAgICAgIC8qIFdlJ3ZlIGFscmVhZHkg cHJpbnRlZCB3aGF0IG5lZWRzIHRvIGJlIHByaW50ZWQuICAqLworIAkgICAgICBicy0+cHJpbnRf aXQgPSBwcmludF9pdF9kb25lOworIAkgICAgICBicmVhazsKK0BAIC0zODgxLDggKzM5NDYsMTAg QEAgYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJwc3RhdCBicykKICAJICAgICBhbnl0aGluZyBm b3IgdGhpcyB3YXRjaHBvaW50LiAgKi8KICAJICBicy0+cHJpbnRfaXQgPSBwcmludF9pdF9ub29w OwogIAkgIGJzLT5zdG9wID0gMDsKQEAgLTY3OCwxNiArNDUxLDI1IEBAIGluZGV4IDhjOTc5NDku LjBiNjY3NDAgMTAwNjQ0CiAgfQogIAogIAotQEAgLTM1ODgsNiArMzY1MCw4IEBAIGJwc3RhdF9z dG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC0zOTE0LDcgKzM5 ODEsNyBAQCBicHN0YXRfY2hlY2tfYnJlYWtwb2ludF9jb25kaXRpb25zIChicHN0YXQgYnMsIHB0 aWRfdCBwdGlkKQorIAkgd2F0Y2hwb2ludCBhcyB0cmlnZ2VyZWQgc28gdGhhdCB3ZSB3aWxsIGhh bmRsZSB0aGUKKyAJIG91dC1vZi1zY29wZSBldmVudC4gIFdlJ2xsIGdldCB0byB0aGUgd2F0Y2hw b2ludCBuZXh0CisgCSBpdGVyYXRpb24uICAqLworLSAgICAgIGlmIChiLT50eXBlID09IGJwX3dh dGNocG9pbnRfc2NvcGUpCisrICAgICAgaWYgKGItPnR5cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29w ZSAmJiBiLT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gYikKKyAJYi0+cmVsYXRlZF9icmVha3BvaW50 LT53YXRjaHBvaW50X3RyaWdnZXJlZCA9IHdhdGNoX3RyaWdnZXJlZF95ZXM7CisgCisgICAgICAg aWYgKGlzX3dhdGNocG9pbnQgKGIpKQorQEAgLTQwNDUsNiArNDExMiw4IEBAIGJwc3RhdF9zdG9w X3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKICAKICAgICAgICBmb3IgKGJs ID0gYi0+bG9jOyBibCAhPSBOVUxMOyBibCA9IGJsLT5uZXh0KQogIAl7CiArCSAgYnBzdGF0IGJz X3ByZXYgPSBiczsKICsKICAJICAvKiBGb3IgaGFyZHdhcmUgd2F0Y2hwb2ludHMsIHdlIGxvb2sg b25seSBhdCB0aGUgZmlyc3QgbG9jYXRpb24uCi0gCSAgICAgVGhlIHdhdGNocG9pbnRfY2hlY2sg ZnVuY3Rpb24gd2lsbCB3b3JrIG9uIGVudGlyZSBleHByZXNzaW9uLAotIAkgICAgIG5vdCB0aGUg aW5kaXZpZHVhbCBsb2NhdGlvbnMuICBGb3IgcmVhZCB3YXRjaG9waW50cywgdGhlCi1AQCAtMzYw NSw2ICszNjY5LDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq YXNwYWNlLAorIAkgICAgIFRoZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0aW9uIHdpbGwgd29yayBv biB0aGUgZW50aXJlIGV4cHJlc3Npb24sCisgCSAgICAgbm90IHRoZSBpbmRpdmlkdWFsIGxvY2F0 aW9ucy4gIEZvciByZWFkIHdhdGNocG9pbnRzLCB0aGUKK0BAIC00MDYyLDYgKzQxMzEsNyBAQCBi cHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCiAgCSAgLyog Q29tZSBoZXJlIGlmIGl0J3MgYSB3YXRjaHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBt YXRjaGVzICovCiAgCiAgCSAgYnMgPSBicHN0YXRfYWxsb2MgKGJsLCBicyk7CS8qIEFsbG9jIGEg YnBzdGF0IHRvIGV4cGxhaW4gc3RvcCAqLwpAQCAtNjk1LDcgKzQ3Nyw3IEBAIGluZGV4IDhjOTc5 NDkuLjBiNjY3NDAgMTAwNjQ0CiAgCiAgCSAgLyogQXNzdW1lIHdlIHN0b3AuICBTaG91bGQgd2Ug ZmluZCB3YXRjaHBvaW50IHRoYXQgaXMgbm90IGFjdHVhbGx5CiAgCSAgICAgdHJpZ2dlcmVkLCBv ciBpZiBjb25kaXRpb24gb2YgYnJlYWtwb2ludCBpcyBmYWxzZSwgd2UnbGwgcmVzZXQKLUBAIC0z NjEyLDEyICszNjc3LDIyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKmFzcGFjZSwKK0BAIC00MDY5LDEzICs0MTM5LDIzIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAo c3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKICAJICBicy0+c3RvcCA9IDE7CiAgCSAgYnMt PnByaW50ID0gMTsKICAKQEAgLTcxNiw0NSArNDk4LDEwNyBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2 NzQwIDEwMDY0NAogKwkgICAgfQogIAogIAkgIGlmIChiLT50eXBlID09IGJwX3RocmVhZF9ldmVu dCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZlbnQKLS0JICAgICAgfHwgYi0+dHlwZSA9PSBi cF9sb25nam1wX21hc3RlcikKLSsJICAgICAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3Rl cgorIAkgICAgICB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyCistCSAgICAgIHx8IGIt PnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIpCisrCSAgICAgIHx8IGItPnR5cGUgPT0g YnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIKICsJICAgICAgfHwgYi0+dHlwZSA9PSBicF9leGNlcHRp b25fbWFzdGVyKQogIAkgICAgLyogV2UgZG8gbm90IHN0b3AgZm9yIHRoZXNlLiAgKi8KICAJICAg IGJzLT5zdG9wID0gMDsKICAJICBlbHNlCi1AQCAtMzgyNiw2ICszOTAxLDcgQEAgYnBzdGF0X3do YXQgKGJwc3RhdCBicykKLSAgIHN0cnVjdCBicHN0YXRfd2hhdCByZXR2YWw7CitAQCAtNDE3Niw3 ICs0MjU2LDcgQEAgaGFuZGxlX2ppdF9ldmVudCAodm9pZCkKKyAvKiBEZWNpZGUgd2hhdCBpbmZy dW4gbmVlZHMgdG8gZG8gd2l0aCB0aGlzIGJwc3RhdC4gICovCiAgCi0gICByZXR2YWwuY2FsbF9k dW1teSA9IDA7Cisgc3RydWN0IGJwc3RhdF93aGF0CistYnBzdGF0X3doYXQgKGJwc3RhdCBicykK KyticHN0YXRfd2hhdCAoYnBzdGF0IGJzX2hlYWQpCisgeworICAgc3RydWN0IGJwc3RhdF93aGF0 IHJldHZhbDsKKyAgIC8qIFdlIG5lZWQgdG8gZGVmZXIgY2FsbGluZyBgc29saWJfYWRkJywgYXMg YWRkaW5nIG5ldyBzeW1ib2xzCitAQCAtNDE4NCwxMSArNDI2NCwxMyBAQCBicHN0YXRfd2hhdCAo YnBzdGF0IGJzKQorICAgICAgYW5kIGhlbmNlIG1heSBjbGVhciB1bnByb2Nlc3NlZCBlbnRyaWVz IGluIHRoZSBCUyBjaGFpbi4gICovCisgICBpbnQgc2hsaWJfZXZlbnQgPSAwOworICAgaW50IGpp dF9ldmVudCA9IDA7CisrICBicHN0YXQgYnM7CisgCisgICByZXR2YWwubWFpbl9hY3Rpb24gPSBC UFNUQVRfV0hBVF9LRUVQX0NIRUNLSU5HOworICAgcmV0dmFsLmNhbGxfZHVtbXkgPSBTVE9QX05P TkU7CiArICByZXR2YWwuaXNfbG9uZ2ptcCA9IDA7Ci0gICBmb3IgKDsgYnMgIT0gTlVMTDsgYnMg PSBicy0+bmV4dCkKKyAKKy0gIGZvciAoOyBicyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQorKyAg Zm9yIChicyA9IGJzX2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCiAgICAgIHsKLSAg ICAgICBlbnVtIGNsYXNzIGJzX2NsYXNzID0gbm9fZWZmZWN0OwotQEAgLTM4NzIsMTAgKzM5NDgs MTUgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKLSAJICAgIGJzX2NsYXNzID0gbm9fZWZmZWN0 OworICAgICAgIC8qIEV4dHJhY3QgdGhpcyBCUydzIGFjdGlvbi4gIEFmdGVyIHByb2Nlc3Npbmcg ZWFjaCBCUywgd2UgY2hlY2sKKyAJIGlmIGl0cyBhY3Rpb24gb3ZlcnJpZGVzIGFsbCB3ZSd2ZSBz ZWVtIHNvIGZhci4gICovCitAQCAtNDI0MiwxMCArNDMyNCwxNSBAQCBicHN0YXRfd2hhdCAoYnBz dGF0IGJzKQorIAkgICAgfQogIAkgIGJyZWFrOwogIAljYXNlIGJwX2xvbmdqbXA6CiArCWNhc2Ug YnBfZXhjZXB0aW9uOgotIAkgIGJzX2NsYXNzID0gbG9uZ19qdW1wOworIAkgIHRoaXNfYWN0aW9u ID0gQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FOwogKwkgIHJldHZhbC5pc19sb25nam1w ID0gYnMtPmJyZWFrcG9pbnRfYXQtPm93bmVyLT50eXBlID09IGJwX2xvbmdqbXA7CiAgCSAgYnJl YWs7CiAgCWNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CiArCWNhc2UgYnBfZXhjZXB0aW9uX3Jlc3Vt ZToKLSAJICBic19jbGFzcyA9IGxvbmdfcmVzdW1lOworIAkgIHRoaXNfYWN0aW9uID0gQlBTVEFU X1dIQVRfQ0xFQVJfTE9OR0pNUF9SRVNVTUU7CiArCSAgcmV0dmFsLmlzX2xvbmdqbXAKICsJICAg ID0gYnMtPmJyZWFrcG9pbnRfYXQtPm93bmVyLT50eXBlID09IGJwX2xvbmdqbXBfcmVzdW1lOwog IAkgIGJyZWFrOwogIAljYXNlIGJwX3N0ZXBfcmVzdW1lOgogIAkgIGlmIChicy0+c3RvcCkKLUBA IC0zODk4LDYgKzM5NzksNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQotIAljYXNlIGJwX3Ro cmVhZF9ldmVudDoKK0BAIC00MjYxLDYgKzQzNDgsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJz KQogIAljYXNlIGJwX292ZXJsYXlfZXZlbnQ6CiAgCWNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6Cisg CWNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CiArCWNhc2UgYnBfZXhjZXB0aW9uX21hc3Rl cjoKLSAJICBic19jbGFzcyA9IGJwX25vc3RvcDsKKyAJICB0aGlzX2FjdGlvbiA9IEJQU1RBVF9X SEFUX1NJTkdMRTsKICAJICBicmVhazsKICAJY2FzZSBicF9jYXRjaHBvaW50OgotQEAgLTQwNDIs NiArNDEyNCw4IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtw b2ludCAqYiwKK0BAIC00MzEzLDYgKzQ0MDEsMjAgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykK KyAJICAgICBvdXQgYWxyZWFkeS4gICovCisgCSAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBf X0xJTkVfXywKKyAJCQkgIF8oImJwc3RhdF93aGF0OiB0cmFjZXBvaW50IGVuY291bnRlcmVkIikp OworKwkgIGJyZWFrOworKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKKysJICAvKiBTa2lw IHRoZSBjdXJyZW50IGJyZWFrcG9pbnQgYnV0IG90aGVyd2lzZSBub3RoaW5nIGhhcHBlbnMuICBH REIgaXMKKysJICAgICBpbnNlcnRpbmcgbmV3IGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4g YXQgdGhpcyBwb2ludCBidXQKKysJICAgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgaXMgYmVpbmcg a2VwdCB0aGVyZSBhcyBhbm90aGVyCisrCSAgICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVy biBtYXkgYmUgaW5zZXJ0ZWQgaW4gdGhlIG1lYW50aW1lLiAgKi8KKysJICB0aGlzX2FjdGlvbiA9 IEJQU1RBVF9XSEFUX1NJTkdMRTsKKysJICBicmVhazsKKysJY2FzZSBicF9nbnVfaWZ1bmNfcmVz b2x2ZXJfcmV0dXJuOgorKwkgIC8qIFRoZSB3aG9sZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgd2l0 aCBpdHMgYXNzb2NpYXRlZAorKwkgICAgIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4gcmVs YXRlZF9icmVha3BvaW50J3MgaGFzIGJlZW4KKysJICAgICByZXNvbHZlZCBub3csIGFsbCB0aGVz ZSBoZWxwZXIgYnJlYWtwb2ludHMgYXJlIGJlaW5nIHJlbW92ZWQgYW5kCisrCSAgICAgbmV3IGZp bmFsIGJwX2JyZWFrcG9pbnQgaXMgYmVpbmcgcHV0IGF0IHRoZSB0YXJnZXQgbG9jYXRpb24uICAq LworKwkgIGJyZWFrOworIAlkZWZhdWx0OgorIAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywg X19MSU5FX18sCisgCQkJICBfKCJicHN0YXRfd2hhdDogdW5oYW5kbGVkIGJwdHlwZSAlZCIpLCAo aW50KSBicHR5cGUpOworQEAgLTQzNTAsNiArNDQ1MiwyMyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0 IGJzKQorICAgICAgIGhhbmRsZV9qaXRfZXZlbnQgKCk7CisgICAgIH0KKyAKKysgIGZvciAoYnMg PSBic19oZWFkOyBicyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQorKyAgICB7CisrICAgICAgaWYg KGJzLT5icmVha3BvaW50X2F0ID09IE5VTEwpCisrCWNvbnRpbnVlOworKyAgICAgIGlmIChicy0+ YnJlYWtwb2ludF9hdC0+b3duZXIgPT0gTlVMTCkKKysJY29udGludWU7CisrICAgICAgc3dpdGNo IChicy0+YnJlYWtwb2ludF9hdC0+b3duZXItPnR5cGUpCisrCXsKKysJY2FzZSBicF9nbnVfaWZ1 bmNfcmVzb2x2ZXI6CisrCSAgZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKGJzLT5icmVha3BvaW50 X2F0LT5vd25lcik7CisrCSAgYnJlYWs7CisrCWNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3Jl dHVybjoKKysJICBnbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3AgKGJzLT5icmVha3BvaW50 X2F0LT5vd25lcik7CisrCSAgYnJlYWs7CisrCX0KKysgICAgfQorKworICAgcmV0dXJuIHJldHZh bDsKKyB9CisgCitAQCAtNDQ2MSw2ICs0NTgwLDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRfbG9j YXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICB7YnBfYWNjZXNzX3dhdGNocG9pbnQs ICJhY2Mgd2F0Y2hwb2ludCJ9LAogICAgICB7YnBfbG9uZ2ptcCwgImxvbmdqbXAifSwKICAgICAg e2JwX2xvbmdqbXBfcmVzdW1lLCAibG9uZ2ptcCByZXN1bWUifSwKQEAgLTc2MywxNSArNjA3LDIy IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgICAgIHticF9zdGVwX3Jlc3VtZSwg InN0ZXAgcmVzdW1lIn0sCiAgICAgIHticF93YXRjaHBvaW50X3Njb3BlLCAid2F0Y2hwb2ludCBz Y29wZSJ9LAogICAgICB7YnBfY2FsbF9kdW1teSwgImNhbGwgZHVtbXkifSwKLUBAIC00MDQ5LDYg KzQxMzMsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9p bnQgKmIsCi0gICAgIHticF90aHJlYWRfZXZlbnQsICJ0aHJlYWQgZXZlbnRzIn0sCitAQCAtNDQ3 MCwxMSArNDU5MSwxNCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJy ZWFrcG9pbnQgKmIsCiAgICAgIHticF9vdmVybGF5X2V2ZW50LCAib3ZlcmxheSBldmVudHMifSwK ICAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBtYXN0ZXIifSwKKyAgICAge2JwX3N0 ZF90ZXJtaW5hdGVfbWFzdGVyLCAic3RkOjp0ZXJtaW5hdGUgbWFzdGVyIn0sCiArICAgIHticF9l eGNlcHRpb25fbWFzdGVyLCAiZXhjZXB0aW9uIG1hc3RlciJ9LAogICAgICB7YnBfY2F0Y2hwb2lu dCwgImNhdGNocG9pbnQifSwKICAgICAge2JwX3RyYWNlcG9pbnQsICJ0cmFjZXBvaW50In0sCiAg ICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJmYXN0IHRyYWNlcG9pbnQifSwKLUBAIC00MTczLDYg KzQyNTgsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9p bnQgKmIsCisgICAgIHticF9zdGF0aWNfdHJhY2Vwb2ludCwgInN0YXRpYyB0cmFjZXBvaW50In0s CisgICAgIHticF9qaXRfZXZlbnQsICJqaXQgZXZlbnRzIn0sCisrICAgIHticF9nbnVfaWZ1bmNf cmVzb2x2ZXIsICJnbnUtaWZ1bmMgcmVzb2x2ZXIifSwKKysgICAge2JwX2dudV9pZnVuY19yZXNv bHZlcl9yZXR1cm4sICJnbnUtZnVuYyByZXNvbHZlciByZXR1cm4ifSwKKyAgIH07CisgICAKKyAg IHN0YXRpYyBjaGFyIGJwZW5hYmxlc1tdID0gIm55bm55IjsKK0BAIC00NTk1LDYgKzQ3MTksOCBA QCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAg ICAgICAgY2FzZSBicF9maW5pc2g6CiAgICAgICAgY2FzZSBicF9sb25nam1wOgogICAgICAgIGNh c2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBAIC03ODAsMTUgKzYzMSwzMSBAQCBpbmRleCA4Yzk3OTQ5 Li4wYjY2NzQwIDEwMDY0NAogICAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgICAgY2Fz ZSBicF93YXRjaHBvaW50X3Njb3BlOgogICAgICAgIGNhc2UgYnBfY2FsbF9kdW1teToKLUBAIC00 MTgwLDYgKzQyNjcsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJy ZWFrcG9pbnQgKmIsCi0gICAgICAgY2FzZSBicF90aHJlYWRfZXZlbnQ6CitAQCAtNDYwNCwxMCAr NDczMCwxMyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9p bnQgKmIsCiAgICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9u Z2ptcF9tYXN0ZXI6CisgICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlX21hc3RlcjoKICsgICAg ICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CiAgICAgICAgY2FzZSBicF90cmFjZXBvaW50Ogog ICAgICAgIGNhc2UgYnBfZmFzdF90cmFjZXBvaW50OgorICAgICAgIGNhc2UgYnBfc3RhdGljX3Ry YWNlcG9pbnQ6CiAgICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6Ci1AQCAtNDgxNiw2ICs0OTA0LDgg QEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCisrICAgICAg Y2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CisrICAgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVz b2x2ZXJfcmV0dXJuOgorIAlpZiAob3B0cy5hZGRyZXNzcHJpbnQpCisgCSAgeworIAkgICAgYW5u b3RhdGVfZmllbGQgKDQpOworQEAgLTQ4ODgsNyArNTAxNyw4IEBAIHVzZXJfc2V0dGFibGVfYnJl YWtwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFrcG9pbnQgKmIpCisgCSAgfHwgYi0+dHlwZSA9PSBi cF9jYXRjaHBvaW50CisgCSAgfHwgYi0+dHlwZSA9PSBicF9oYXJkd2FyZV9icmVha3BvaW50Cisg CSAgfHwgaXNfdHJhY2Vwb2ludCAoYikKKy0JICB8fCBpc193YXRjaHBvaW50IChiKSk7CisrCSAg fHwgaXNfd2F0Y2hwb2ludCAoYikKKysJICB8fCBiLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNv bHZlcik7CisgfQorIAkKKyAvKiBQcmludCBpbmZvcm1hdGlvbiBvbiB1c2VyIHNldHRhYmxlIGJy ZWFrcG9pbnQgKHdhdGNocG9pbnQsIGV0YykKK0BAIC01MzM0LDYgKzU0NjQsOCBAQCBhbGxvY2F0 ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKICAgICAgY2FzZSBicF9maW5p c2g6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToK QEAgLTc5NywxNSArNjY0LDc2IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgICAg IGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9zY29wZToKICAg ICAgY2FzZSBicF9jYWxsX2R1bW15OgotQEAgLTQ4MjQsNiArNDkxNCw3IEBAIGFsbG9jYXRlX2Jw X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQotICAgICBjYXNlIGJwX292ZXJsYXlf ZXZlbnQ6CitAQCAtNTM0NCw2ICs1NDc2LDkgQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVj dCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgogICAgICBjYXNlIGJw X2xvbmdqbXBfbWFzdGVyOgorICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgorKyAg ICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKKysgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVz b2x2ZXJfcmV0dXJuOgogKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CiAgICAgICAgbG9j LT5sb2NfdHlwZSA9IGJwX2xvY19zb2Z0d2FyZV9icmVha3BvaW50OwogICAgICAgIGJyZWFrOwog ICAgICBjYXNlIGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQ6Ci1AQCAtNTAxMiw4ICs1MTAzLDcgQEAg bWFrZV9icmVha3BvaW50X3Blcm1hbmVudCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtNTQy MCw2ICs1NTU1LDcgQEAgc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAorICAgYi0+c3lzY2FsbHNfdG9fYmVfY2F1Z2h0ID0gTlVMTDsK KyAgIGItPm9wcyA9IE5VTEw7CisgICBiLT5jb25kaXRpb25fbm90X3BhcnNlZCA9IDA7CisrICBi LT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBiOworIAorICAgLyogQWRkIHRoaXMgYnJlYWtwb2ludCB0 byB0aGUgZW5kIG9mIHRoZSBjaGFpbgorICAgICAgc28gdGhhdCBhIGxpc3Qgb2YgYnJlYWtwb2lu dHMgd2lsbCBjb21lIG91dCBpbiBvcmRlcgorQEAgLTU0MzksNyArNTU3NSw3IEBAIHNldF9yYXdf YnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAK KyAvKiBJbml0aWFsaXplIGxvYy0+ZnVuY3Rpb25fbmFtZS4gICovCisgc3RhdGljIHZvaWQKKy1z ZXRfYnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2Mp Cisrc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAq bG9jLCBpbnQgZXhwbGljaXRfbG9jKQorIHsKKyAgIGdkYl9hc3NlcnQgKGxvYy0+b3duZXIgIT0g TlVMTCk7CisgCitAQCAtNTQ0Nyw4ICs1NTgzLDI5IEBAIHNldF9icmVha3BvaW50X2xvY2F0aW9u X2Z1bmN0aW9uIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKKyAgICAgICB8fCBsb2MtPm93bmVy LT50eXBlID09IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQKKyAgICAgICB8fCBpc190cmFjZXBvaW50 IChsb2MtPm93bmVyKSkKKyAgICAgeworLSAgICAgIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAo bG9jLT5hZGRyZXNzLCAmKGxvYy0+ZnVuY3Rpb25fbmFtZSksIAorLQkJCQlOVUxMLCBOVUxMKTsK KysgICAgICBpZiAoZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChsb2MtPmFkZHJlc3MsICYobG9j LT5mdW5jdGlvbl9uYW1lKSwgTlVMTCwKKysJCQkJICAgIE5VTEwpID09IEZJTkRfUENfUEFSVElB TF9GVU5DVElPTl9HTlVfSUZVTkMKKysJICAmJiAhZXhwbGljaXRfbG9jKQorKwl7CisrCSAgc3Ry dWN0IGJyZWFrcG9pbnQgKmIgPSBsb2MtPm93bmVyOworKworKwkgIGdkYl9hc3NlcnQgKGxvYy0+ cHNwYWNlID09IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CisrCSAgaWYgKHJlc29sdmVfZ251X2lm dW5jIChsb2MtPmZ1bmN0aW9uX25hbWUsICZsb2MtPnJlcXVlc3RlZF9hZGRyZXNzKSkKKysJICAg IHsKKysJICAgICAgLyogUmVjYWxjdWxhdGUgQUREUkVTUyBiYXNlZCBvbiBuZXcgUkVRVUVTVEVE X0FERFJFU1MuICAqLworKwkgICAgICBsb2MtPmFkZHJlc3MgPSBhZGp1c3RfYnJlYWtwb2ludF9h ZGRyZXNzIChsb2MtPmdkYmFyY2gsCisrCQkJCQkJCWxvYy0+cmVxdWVzdGVkX2FkZHJlc3MsCisr CQkJCQkJCWItPnR5cGUpOworKwkgICAgfQorKwkgIGVsc2UgaWYgKGItPnR5cGUgPT0gYnBfYnJl YWtwb2ludCAmJiBiLT5sb2MgPT0gbG9jCisrCSAgICAgICAgICAgJiYgbG9jLT5uZXh0ID09IE5V TEwgJiYgYi0+cmVsYXRlZF9icmVha3BvaW50ID09IGIpCisrCSAgICB7CisrCSAgICAgIC8qIENy ZWF0ZSBvbmx5IHRoZSB3aG9sZSBuZXcgYnJlYWtwb2ludCBvZiB0aGlzIHR5cGUgYnV0IGRvIG5v dAorKwkJIG1lc3MgbW9yZSBjb21wbGljYXRlZCBicmVha3BvaW50cyB3aXRoIG11bHRpcGxlIGxv Y2F0aW9ucy4gICovCisrCSAgICAgIGItPnR5cGUgPSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI7Cisr CSAgICB9CisrCX0KKysKKyAgICAgICBpZiAobG9jLT5mdW5jdGlvbl9uYW1lKQorIAlsb2MtPmZ1 bmN0aW9uX25hbWUgPSB4c3RyZHVwIChsb2MtPmZ1bmN0aW9uX25hbWUpOworICAgICB9CitAQCAt NTUyMSw3ICs1Njc4LDggQEAgc2V0X3Jhd19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwKKyAgIGItPmxvYy0+c2VjdGlvbiA9IHNhbC5zZWN0aW9uOworICAgYi0+bGluZV9udW1i ZXIgPSBzYWwubGluZTsKKyAKKy0gIHNldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChi LT5sb2MpOworKyAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGItPmxvYywKKysJ CQkJICAgIHNhbC5leHBsaWNpdF9wYyB8fCBzYWwuZXhwbGljaXRfbGluZSk7CisgCisgICBicmVh a3BvaW50c19jaGFuZ2VkICgpOworIAorQEAgLTU1NDgsOCArNTcwNiw3IEBAIG1ha2VfYnJlYWtw b2ludF9wZXJtYW5lbnQgKHN0cnVjdCBicmVha3BvaW50ICpiKQogIH0KICAKICAvKiBDYWxsIHRo aXMgcm91dGluZSB3aGVuIHN0ZXBwaW5nIGFuZCBuZXh0aW5nIHRvIGVuYWJsZSBhIGJyZWFrcG9p bnQKQEAgLTgxNSw3ICs3NDMsNyBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogIAog IHZvaWQKICBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQotQEAgLTUwMjYsMTAg KzUxMTYsMTEgQEAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAoaW50IHRocmVhZCkKK0BAIC01NTYy LDExICs1NzE5LDEyIEBAIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCiAgICAg ICBjbG9uZXMgb2YgdGhvc2UgYW5kIGVuYWJsZSB0aGVtIGZvciB0aGUgcmVxdWVzdGVkIHRocmVh ZC4gICovCiAgICBBTExfQlJFQUtQT0lOVFNfU0FGRSAoYiwgdGVtcCkKICAgICAgaWYgKGItPnBz cGFjZSA9PSBjdXJyZW50X3Byb2dyYW1fc3BhY2UKQEAgLTgyNCwxMiArNzUyLDEzIEBAIGluZGV4 IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiArCSAgICB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlv bl9tYXN0ZXIpKQogICAgICAgIHsKICAJc3RydWN0IGJyZWFrcG9pbnQgKmNsb25lID0gY2xvbmVf bW9tZW50YXJ5X2JyZWFrcG9pbnQgKGIpOworIAogLQljbG9uZS0+dHlwZSA9IGJwX2xvbmdqbXA7 CiArCWNsb25lLT50eXBlID0gYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlciA/IGJwX2xvbmdq bXAgOiBicF9leGNlcHRpb247CiAgCWNsb25lLT50aHJlYWQgPSB0aHJlYWQ7CiAgICAgICAgfQog IH0KLUBAIC01MDQxLDcgKzUxMzIsNyBAQCBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbnQg dGhyZWFkKQorQEAgLTU1NzgsNyArNTczNiw3IEBAIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQg KGludCB0aHJlYWQpCiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgKnRlbXA7CiAgCiAgICBBTExf QlJFQUtQT0lOVFNfU0FGRSAoYiwgdGVtcCkKQEAgLTgzOCw3ICs3NjcsMzMgQEAgaW5kZXggOGM5 Nzk0OS4uMGI2Njc0MCAxMDA2NDQKICAgICAgICB7CiAgCWlmIChiLT50aHJlYWQgPT0gdGhyZWFk KQogIAkgIGRlbGV0ZV9icmVha3BvaW50IChiKTsKLUBAIC02MTE2LDYgKzYyMDcsOCBAQCBtZW50 aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC02NTk1LDcgKzY3NTMsNyBAQCBjbG9uZV9t b21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcpCisgCisgICBjb3B5 ID0gc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKG9yaWctPmdkYmFyY2gsIG9y aWctPnR5cGUpOworICAgY29weS0+bG9jID0gYWxsb2NhdGVfYnBfbG9jYXRpb24gKGNvcHkpOwor LSAgc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKGNvcHktPmxvYyk7CisrICBzZXRf YnJlYWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoY29weS0+bG9jLCAxKTsKKyAKKyAgIGNvcHkt PmxvYy0+Z2RiYXJjaCA9IG9yaWctPmxvYy0+Z2RiYXJjaDsKKyAgIGNvcHktPmxvYy0+cmVxdWVz dGVkX2FkZHJlc3MgPSBvcmlnLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzOworQEAgLTY2OTQsNiAr Njg1Miw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQorIAlkb19jbGVhbnVwcyAo dWlfb3V0X2NoYWluKTsKKyAJYnJlYWs7CisgICAgICAgY2FzZSBicF9icmVha3BvaW50OgorKyAg ICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyOgorIAlpZiAodWlfb3V0X2lzX21pX2xpa2Vf cCAodWlvdXQpKQorIAkgIHsKKyAJICAgIHNheV93aGVyZSA9IDA7CitAQCAtNjcwNCw2ICs2ODYz LDggQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisgCWVsc2UKKyAJICBwcmludGZf ZmlsdGVyZWQgKF8oIkJyZWFrcG9pbnQiKSk7CisgCXByaW50Zl9maWx0ZXJlZCAoXygiICVkIiks IGItPm51bWJlcik7CisrCWlmIChiLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNvbHZlcikKKysJ ICBwcmludGZfZmlsdGVyZWQgKF8oIiBhdCBnbnUtaW5kaXJlY3QtZnVuY3Rpb24gcmVzb2x2ZXIi KSk7CisgCXNheV93aGVyZSA9IDE7CisgCWJyZWFrOworICAgICAgIGNhc2UgYnBfaGFyZHdhcmVf YnJlYWtwb2ludDoKK0BAIC02NzUwLDYgKzY5MTEsOCBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtw b2ludCAqYikKICAgICAgICBjYXNlIGJwX2ZpbmlzaDoKICAgICAgICBjYXNlIGJwX2xvbmdqbXA6 CiAgICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKQEAgLTg0NiwxNiArODAxLDI3IEBAIGlu ZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiArICAgICAgY2FzZSBicF9leGNlcHRpb25fcmVz dW1lOgogICAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgICAgY2FzZSBicF9jYWxsX2R1 bW15OgotICAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9zY29wZToKLUBAIC02MTI0LDYgKzYyMTcs NyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKLSAgICAgICBjYXNlIGJwX292ZXJs YXlfZXZlbnQ6CisgICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlOgorQEAgLTY3NjAsNiArNjky Myw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQogICAgICAgIGNhc2UgYnBfaml0 X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CisgICAgICAgY2FzZSBicF9z dGRfdGVybWluYXRlX21hc3RlcjoKKysgICAgICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9y ZXR1cm46CiArICAgICAgY2FzZSBicF9leGNlcHRpb25fbWFzdGVyOgogIAlicmVhazsKICAgICAg ICB9CiAgCi1AQCAtNzUwOSw2ICs3NjAzLDcgQEAgc3RydWN0IHVudGlsX2JyZWFrX2NvbW1hbmRf Y29udGludWF0aW9uX2FyZ3MKK0BAIC02ODIwLDcgKzY5ODUsOCBAQCBhZGRfbG9jYXRpb25fdG9f YnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCisgICBnZGJfYXNzZXJ0IChsb2MtPnBz cGFjZSAhPSBOVUxMKTsKKyAgIGxvYy0+c2VjdGlvbiA9IHNhbC0+c2VjdGlvbjsKKyAKKy0gIHNl dF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChsb2MpOworKyAgc2V0X2JyZWFrcG9pbnRf bG9jYXRpb25fZnVuY3Rpb24gKGxvYywKKysJCQkJICAgIHNhbC0+ZXhwbGljaXRfcGMgfHwgc2Fs LT5leHBsaWNpdF9saW5lKTsKKyAgIHJldHVybiBsb2M7CisgfQorIAwKK0BAIC04MzQ2LDYgKzg1 MTIsNyBAQCBzdHJ1Y3QgdW50aWxfYnJlYWtfY29tbWFuZF9jb250aW51YXRpb25fYXJncwogIHsK ICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50OwogICAgc3RydWN0IGJyZWFrcG9pbnQg KmJyZWFrcG9pbnQyOwpAQCAtODYzLDcgKzgyOSw3IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAg MTAwNjQ0CiAgfTsKICAKICAvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBmZXRjaF9pbmZl cmlvcl9ldmVudCB2aWEgdGhlCi1AQCAtNzUyMyw2ICs3NjE4LDcgQEAgdW50aWxfYnJlYWtfY29t bWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKK0BAIC04MzYwLDYgKzg1MjcsNyBAQCB1bnRp bF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQogICAgZGVsZXRlX2JyZWFr cG9pbnQgKGEtPmJyZWFrcG9pbnQpOwogICAgaWYgKGEtPmJyZWFrcG9pbnQyKQogICAgICBkZWxl dGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludDIpOwpAQCAtODcxLDcgKzgzNyw3IEBAIGluZGV4 IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgfQogIAogIHZvaWQKLUBAIC03NTM0LDYgKzc2MzAs OCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFu eXdoZXJlKQorQEAgLTgzNzEsNiArODUzOSw4IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIg KmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAq YnJlYWtwb2ludDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50MiA9IE5VTEw7CiAg ICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwpAQCAtODgwLDcgKzg0Niw3IEBAIGluZGV4IDhj OTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAgCiAgICBjbGVhcl9wcm9jZWVkX3N0YXR1cyAoKTsKICAK LUBAIC03NTcyLDYgKzc2NzAsOSBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQorQEAgLTg0MDksNiArODU3OSw5IEBAIHVudGlsX2Jy ZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgCiAg ICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQgKGJyZWFrcG9pbnQp OwogIApAQCAtODkwLDcgKzg1Niw3IEBAIGluZGV4IDhjOTc5NDkuLjBiNjY3NDAgMTAwNjQ0CiAg ICAvKiBLZWVwIHdpdGhpbiB0aGUgY3VycmVudCBmcmFtZSwgb3IgaW4gZnJhbWVzIGNhbGxlZCBi eSB0aGUgY3VycmVudAogICAgICAgb25lLiAgKi8KICAKLUBAIC03NTg0LDYgKzc2ODUsMTAgQEAg dW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVy ZSkKK0BAIC04NDIxLDYgKzg1OTQsMTAgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJn LCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKICAJCQkJCSAgICAgIGZyYW1lX3Vud2luZF9j YWxsZXJfaWQgKGZyYW1lKSwKICAJCQkJCSAgICAgIGJwX3VudGlsKTsKICAgICAgICBtYWtlX2Ns ZWFudXBfZGVsZXRlX2JyZWFrcG9pbnQgKGJyZWFrcG9pbnQyKTsKQEAgLTkwMSw3ICs4NjcsNyBA QCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogICAgICB9CiAgCiAgICBwcm9jZWVkICgt MSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAwKTsKLUBAIC03NjAwLDYgKzc3MDUsNyBAQCB1bnRp bF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQor QEAgLTg0MzcsNiArODYxNCw3IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50 IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgCiAgICAgICAgYXJncy0+YnJlYWtwb2ludCA9IGJy ZWFrcG9pbnQ7CiAgICAgICAgYXJncy0+YnJlYWtwb2ludDIgPSBicmVha3BvaW50MjsKQEAgLTkw OSw0OCArODc1LDEzNCBAQCBpbmRleCA4Yzk3OTQ5Li4wYjY2NzQwIDEwMDY0NAogIAogICAgICAg IGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgICAgICAgYWRkX2NvbnRpbnVhdGlvbiAo aW5mZXJpb3JfdGhyZWFkICgpLAotQEAgLTg3OTYsNiArODkwMiw3IEBAIGRlbGV0ZV9jb21tYW5k IChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSAJICAgICYmIGItPnR5cGUgIT0gYnBfdGhyZWFk X2V2ZW50CitAQCAtOTU2NCwxMiArOTc0MiwyMiBAQCBkZWxldGVfYnJlYWtwb2ludCAoc3RydWN0 IGJyZWFrcG9pbnQgKmJwdCkKKyAKKyAgIC8qIEF0IGxlYXN0IGF2b2lkIHRoaXMgc3RhbGUgcmVm ZXJlbmNlIHVudGlsIHRoZSByZWZlcmVuY2UgY291bnRpbmcgb2YKKyAgICAgIGJyZWFrcG9pbnRz IGdldHMgcmVzb2x2ZWQuICAqLworLSAgaWYgKGJwdC0+cmVsYXRlZF9icmVha3BvaW50ICE9IE5V TEwpCisrICBpZiAoYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQgIT0gYnB0KQorICAgICB7CistICAg ICAgZ2RiX2Fzc2VydCAoYnB0LT5yZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0ZWRfYnJlYWtwb2lu dCA9PSBicHQpOworLSAgICAgIGJwdC0+cmVsYXRlZF9icmVha3BvaW50LT5kaXNwb3NpdGlvbiA9 IGRpc3BfZGVsX2F0X25leHRfc3RvcDsKKy0gICAgICBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludC0+ cmVsYXRlZF9icmVha3BvaW50ID0gTlVMTDsKKy0gICAgICBicHQtPnJlbGF0ZWRfYnJlYWtwb2lu dCA9IE5VTEw7CisrICAgICAgaWYgKGJwdC0+dHlwZSA9PSBicF93YXRjaHBvaW50X3Njb3BlKQor Kwl3YXRjaHBvaW50X2RlbF9hdF9uZXh0X3N0b3AgKGJwdC0+cmVsYXRlZF9icmVha3BvaW50KTsK KysgICAgICBlbHNlIGlmIChicHQtPnJlbGF0ZWRfYnJlYWtwb2ludC0+dHlwZSA9PSBicF93YXRj aHBvaW50X3Njb3BlKQorKwl3YXRjaHBvaW50X2RlbF9hdF9uZXh0X3N0b3AgKGJwdCk7CisrICAg ICAgZWxzZQorKwl7CisrCSAgc3RydWN0IGJyZWFrcG9pbnQgKnJlbGF0ZWQ7CisrCisrCSAgLyog VW5saW5rIGJwdCBmcm9tIHRoZSBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludCByaW5nLiAgKi8KKysJ ICBmb3IgKHJlbGF0ZWQgPSBicHQ7IHJlbGF0ZWQtPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBicHQ7 CisrCSAgICAgICByZWxhdGVkID0gcmVsYXRlZC0+cmVsYXRlZF9icmVha3BvaW50KTsKKysJICBy ZWxhdGVkLT5yZWxhdGVkX2JyZWFrcG9pbnQgPSBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludDsKKysJ ICBicHQtPnJlbGF0ZWRfYnJlYWtwb2ludCA9IGJwdDsKKysJfQorICAgICB9CisgCisgICBvYnNl cnZlcl9ub3RpZnlfYnJlYWtwb2ludF9kZWxldGVkIChicHQtPm51bWJlcik7CitAQCAtOTY1OCw2 ICs5ODQ2LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogIAkg ICAgJiYgYi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50CiAgCSAgICAmJiBiLT50eXBlICE9IGJw X2xvbmdqbXBfbWFzdGVyCisgCSAgICAmJiBiLT50eXBlICE9IGJwX3N0ZF90ZXJtaW5hdGVfbWFz dGVyCiArCSAgICAmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKICAJICAgICYmIGIt Pm51bWJlciA+PSAwKQogIAkgIHsKICAJICAgIGJyZWFrc190b19kZWxldGUgPSAxOwotQEAgLTg4 MTUsNiArODkyMiw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkK LSAJCSYmIGItPnR5cGUgIT0gYnBfaml0X2V2ZW50CitAQCAtOTY3OSw2ICs5ODY4LDcgQEAgZGVs ZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogIAkJJiYgYi0+dHlwZSAhPSBi cF9vdmVybGF5X2V2ZW50CiAgCQkmJiBiLT50eXBlICE9IGJwX2xvbmdqbXBfbWFzdGVyCisgCQkm JiBiLT50eXBlICE9IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyCiArCQkmJiBiLT50eXBlICE9IGJw X2V4Y2VwdGlvbl9tYXN0ZXIKICAJCSYmIGItPm51bWJlciA+PSAwKQogIAkgICAgICBkZWxldGVf YnJlYWtwb2ludCAoYik7CiAgCSAgfQotQEAgLTkxMjUsNiArOTIzMyw3IEBAIGJyZWFrcG9pbnRf cmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAJIHJlc2V0IGxhdGVyIGJ5IGJyZWFrcG9pbnRfcmVf c2V0LiAgKi8KK0BAIC05ODg3LDYgKzEwMDc3LDkgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRp b25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKKyAgICAgcmV0dXJuOworIAorICAgYi0+bG9jID0g TlVMTDsKKysgIHhmcmVlIChiLT5zb3VyY2VfZmlsZSk7CisrICBiLT5zb3VyY2VfZmlsZSA9IE5V TEw7CisrICBiLT5saW5lX251bWJlciA9IDA7CisgCisgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5u ZWx0czsgKytpKQorICAgICB7CitAQCAtOTkxMywxMSArMTAxMDYsNyBAQCB1cGRhdGVfYnJlYWtw b2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVha3BvaW50ICpiLAorIAkgICAgfQorIAl9CisgCist ICAgICAgaWYgKGItPnNvdXJjZV9maWxlICE9IE5VTEwpCistCXhmcmVlIChiLT5zb3VyY2VfZmls ZSk7CistICAgICAgaWYgKHNhbHMuc2Fsc1tpXS5zeW10YWIgPT0gTlVMTCkKKy0JYi0+c291cmNl X2ZpbGUgPSBOVUxMOworLSAgICAgIGVsc2UKKysgICAgICBpZiAoc2Fscy5zYWxzW2ldLnN5bXRh YiAhPSBOVUxMICYmIGItPnNvdXJjZV9maWxlID09IE5VTEwpCisgCWItPnNvdXJjZV9maWxlID0g eHN0cmR1cCAoc2Fscy5zYWxzW2ldLnN5bXRhYi0+ZmlsZW5hbWUpOworIAorICAgICAgIGlmIChi LT5saW5lX251bWJlciA9PSAwKQorQEAgLTk5OTksNiArMTAxODgsNyBAQCBicmVha3BvaW50X3Jl X3NldF9vbmUgKHZvaWQgKmJpbnQpCisgICAgIGNhc2UgYnBfdHJhY2Vwb2ludDoKKyAgICAgY2Fz ZSBicF9mYXN0X3RyYWNlcG9pbnQ6CisgICAgIGNhc2UgYnBfc3RhdGljX3RyYWNlcG9pbnQ6Cisr ICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyOgorICAgICAgIC8qIERvIG5vdCBhdHRlbXB0 IHRvIHJlLXNldCBicmVha3BvaW50cyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cC4gICovCisgICAg ICAgaWYgKGItPmVuYWJsZV9zdGF0ZSA9PSBicF9zdGFydHVwX2Rpc2FibGVkKQorIAlyZXR1cm4g MDsKK0BAIC0xMDEzOSw2ICsxMDMyOSw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAq YmludCkKICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgogICAgICBjYXNlIGJwX2xvbmdqbXBf bWFzdGVyOgorICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgogKyAgICBjYXNlIGJw X2V4Y2VwdGlvbl9tYXN0ZXI6CiAgICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogICAgICAg IGJyZWFrOwogIAotQEAgLTkxNDcsNiArOTI1Niw4IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAo dm9pZCAqYmludCkKK0BAIC0xMDE2Miw3ICsxMDM1MywxMCBAQCBicmVha3BvaW50X3JlX3NldF9v bmUgKHZvaWQgKmJpbnQpCiAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgIGNhc2UgYnBf bG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKICsgICAgY2FzZSBicF9leGNl cHRpb246CiArICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKICAgICAgY2FzZSBicF9qaXRf ZXZlbnQ6CisrICAgIGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKICAgICAgICBi cmVhazsKICAgICAgfQotQEAgLTkxODksNiArOTMwMCw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0ICh2 b2lkKQotICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJfbG9uZ2ptcCIpOwor IAorQEAgLTEwMjA1LDYgKzEwMzk5LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCiAgICBj cmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsKICAgIGNyZWF0 ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKKyAgIGNyZWF0ZV9z dGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgic3RkOjp0ZXJtaW5hdGUoKSIpOwogKyAg Y3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKICB9CiAgDAogIC8qIFJlc2V0 IHRoZSB0aHJlYWQgbnVtYmVyIG9mIHRoaXMgYnJlYWtwb2ludDoKLUBAIC0xMDE4Nyw2ICsxMDI5 OSwyMiBAQCBhbGxfdHJhY2Vwb2ludHMgKCkKK0BAIC0xMDMzNCwxMSArMTA1MjksMjAgQEAgbWFw X2JyZWFrcG9pbnRfbnVtYmVycyAoY2hhciAqYXJncywgdm9pZCAoKmZ1bmN0aW9uKSAoc3RydWN0 IGJyZWFrcG9pbnQgKiwKKyAJICBBTExfQlJFQUtQT0lOVFNfU0FGRSAoYiwgdG1wKQorIAkgICAg aWYgKGItPm51bWJlciA9PSBudW0pCisgCSAgICAgIHsKKy0JCXN0cnVjdCBicmVha3BvaW50ICpy ZWxhdGVkX2JyZWFrcG9pbnQgPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7CisrCQlzdHJ1Y3QgYnJl YWtwb2ludCAqcmVsYXRlZF9icmVha3BvaW50OworKworIAkJbWF0Y2ggPSAxOworLQkJZnVuY3Rp b24gKGIsIGRhdGEpOworLQkJaWYgKHJlbGF0ZWRfYnJlYWtwb2ludCkKKy0JCSAgZnVuY3Rpb24g KHJlbGF0ZWRfYnJlYWtwb2ludCwgZGF0YSk7CisrCQlyZWxhdGVkX2JyZWFrcG9pbnQgPSBiOwor KwkJZG8KKysJCSAgeworKwkJICAgIHN0cnVjdCBicmVha3BvaW50ICpuZXh0X3JlbGF0ZWRfYjsK KysKKysJCSAgICAvKiBGVU5DVElPTiBjYW4gYmUgYWxzbyBkZWxldGVfYnJlYWtwb2ludC4gICov CisrCQkgICAgbmV4dF9yZWxhdGVkX2IgPSByZWxhdGVkX2JyZWFrcG9pbnQtPnJlbGF0ZWRfYnJl YWtwb2ludDsKKysJCSAgICBmdW5jdGlvbiAocmVsYXRlZF9icmVha3BvaW50LCBkYXRhKTsKKysJ CSAgICByZWxhdGVkX2JyZWFrcG9pbnQgPSBuZXh0X3JlbGF0ZWRfYjsKKysJCSAgfQorKwkJd2hp bGUgKHJlbGF0ZWRfYnJlYWtwb2ludCAhPSBiKTsKKyAJCWJyZWFrOworIAkgICAgICB9CisgCSAg aWYgKG1hdGNoID09IDApCitAQCAtMTE0MjgsNiArMTE2MzIsMjIgQEAgYWxsX3RyYWNlcG9pbnRz ICgpCiAgICByZXR1cm4gdHBfdmVjOwogIH0KICAKQEAgLTk3MywxNCArMTAyNSwxMjIgQEAgaW5k ZXggOGM5Nzk0OS4uMGI2Njc0MCAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1 c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrIGNvbW1hbmRzLgog ICAgIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBwcmV2ZW50IGR1cGxpY2F0aW9uLgotQEAg LTEwNzMxLDQgKzEwODU5LDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9kZSwgZ2RiIGJlaGF2 ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAorQEAgLTExNDk3LDYgKzEx NzE3LDEwNyBAQCBzYXZlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorICAgaGVs cF9saXN0IChzYXZlX2NtZGxpc3QsICJzYXZlICIsIC0xLCBnZGJfc3Rkb3V0KTsKKyB9CisgCisr c3RhdGljIHZvaWQKKytnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQg KmIpCisreworKyAgc3RydWN0IGJyZWFrcG9pbnQgKmJfcmV0dXJuOworKyAgc3RydWN0IGZyYW1l X2luZm8gKnByZXZfZnJhbWUgPSBnZXRfcHJldl9mcmFtZSAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkp OworKyAgc3RydWN0IGZyYW1lX2lkIHByZXZfZnJhbWVfaWQgPSBnZXRfc3RhY2tfZnJhbWVfaWQg KHByZXZfZnJhbWUpOworKyAgQ09SRV9BRERSIHByZXZfcGMgPSBnZXRfZnJhbWVfcGMgKHByZXZf ZnJhbWUpOworKyAgaW50IHRocmVhZF9pZCA9IHBpZF90b190aHJlYWRfaWQgKGluZmVyaW9yX3B0 aWQpOworKworKyAgZ2RiX2Fzc2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIp OworKworKyAgZm9yIChiX3JldHVybiA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsgYl9yZXR1cm4g IT0gYjsKKysgICAgICAgYl9yZXR1cm4gPSBiX3JldHVybi0+cmVsYXRlZF9icmVha3BvaW50KQor KyAgICB7CisrICAgICAgZ2RiX2Fzc2VydCAoYl9yZXR1cm4tPnR5cGUgPT0gYnBfZ251X2lmdW5j X3Jlc29sdmVyX3JldHVybik7CisrICAgICAgZ2RiX2Fzc2VydCAoYl9yZXR1cm4tPmxvYyAhPSBO VUxMICYmIGJfcmV0dXJuLT5sb2MtPm5leHQgPT0gTlVMTCk7CisrICAgICAgZ2RiX2Fzc2VydCAo ZnJhbWVfaWRfcCAoYl9yZXR1cm4tPmZyYW1lX2lkKSk7CisrCisrICAgICAgaWYgKGJfcmV0dXJu LT50aHJlYWQgPT0gdGhyZWFkX2lkCisrCSAgJiYgYl9yZXR1cm4tPmxvYy0+cmVxdWVzdGVkX2Fk ZHJlc3MgPT0gcHJldl9wYworKwkgICYmIGZyYW1lX2lkX2VxIChiX3JldHVybi0+ZnJhbWVfaWQs IHByZXZfZnJhbWVfaWQpKQorKwlicmVhazsKKysgICAgfQorKworKyAgaWYgKGJfcmV0dXJuID09 IGIpCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKKysKKysgICAg ICAvKiBObyBuZWVkIHRvIGNhbGwgZmluZF9wY19saW5lIGZvciBzeW1ib2xzIHJlc29sdmluZyBh cyB0aGlzIGlzIG9ubHkKKysJIGEgaGVscGVyIGJyZWFrcG9pbnRlciBuZXZlciBzaG93biB0byB0 aGUgdXNlci4gICovCisrCisrICAgICAgaW5pdF9zYWwgKCZzYWwpOworKyAgICAgIHNhbC5wc3Bh Y2UgPSBjdXJyZW50X2luZmVyaW9yICgpLT5wc3BhY2U7CisrICAgICAgc2FsLnBjID0gcHJldl9w YzsKKysgICAgICBzYWwuc2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLnBjKTsKKysgICAg ICBzYWwuZXhwbGljaXRfcGMgPSAxOworKyAgICAgIGJfcmV0dXJuID0gc2V0X21vbWVudGFyeV9i cmVha3BvaW50IChnZXRfZnJhbWVfYXJjaCAocHJldl9mcmFtZSksIHNhbCwKKysJCQkJCSAgIHBy ZXZfZnJhbWVfaWQsCisrCQkJCQkgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuKTsKKysK KysgICAgICAvKiBBZGQgbmV3IGJfcmV0dXJuIHRvIHRoZSByaW5nIGxpc3QgYi0+cmVsYXRlZF9i cmVha3BvaW50LiAgKi8KKysgICAgICBnZGJfYXNzZXJ0IChiX3JldHVybi0+cmVsYXRlZF9icmVh a3BvaW50ID09IGJfcmV0dXJuKTsKKysgICAgICBiX3JldHVybi0+cmVsYXRlZF9icmVha3BvaW50 ID0gYi0+cmVsYXRlZF9icmVha3BvaW50OworKyAgICAgIGItPnJlbGF0ZWRfYnJlYWtwb2ludCA9 IGJfcmV0dXJuOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisrZ251X2lmdW5jX3Jlc29s dmVyX3JldHVybl9zdG9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKKyt7CisrICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChnZXRfY3VycmVudF9mcmFtZSAoKSk7Cisr ICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5jX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5i dWlsdGluX2Z1bmNfZnVuYzsKKysgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0gVFlQRV9UQVJH RVRfVFlQRSAoZnVuY19mdW5jX3R5cGUpOworKyAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSA9 IGdldF90aHJlYWRfcmVnY2FjaGUgKGluZmVyaW9yX3B0aWQpOworKyAgc3RydWN0IHZhbHVlICp2 YWx1ZTsKKysgIENPUkVfQUREUiByZXNvbHZlZF9hZGRyZXNzLCByZXNvbHZlZF9wYzsKKysgIHN0 cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOworKyAgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNh bHM7CisrCisrICBnZGJfYXNzZXJ0IChiLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNvbHZlcl9y ZXR1cm4pOworKworKyAgdmFsdWUgPSBhbGxvY2F0ZV92YWx1ZSAodmFsdWVfdHlwZSk7CisrICBn ZGJhcmNoX3JldHVybl92YWx1ZSAoZ2RiYXJjaCwgZnVuY19mdW5jX3R5cGUsIHZhbHVlX3R5cGUs IHJlZ2NhY2hlLAorKwkJCXZhbHVlX2NvbnRlbnRzX3JhdyAodmFsdWUpLCBOVUxMKTsKKysgIHJl c29sdmVkX2FkZHJlc3MgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWx1ZSk7CisrICByZXNvbHZlZF9w YyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCisrCQkJCQkJ ICAgIHJlc29sdmVkX2FkZHJlc3MsCisrCQkJCQkJICAgICZjdXJyZW50X3RhcmdldCk7CisrCisr ICB3aGlsZSAoYi0+cmVsYXRlZF9icmVha3BvaW50ICE9IGIpCisrICAgIHsKKysgICAgICBzdHJ1 Y3QgYnJlYWtwb2ludCAqYl9uZXh0ID0gYi0+cmVsYXRlZF9icmVha3BvaW50OworKworKyAgICAg IHN3aXRjaCAoYi0+dHlwZSkKKysJeworKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKKysJ ICBicmVhazsKKysJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgorKwkgIGRlbGV0 ZV9icmVha3BvaW50IChiKTsKKysJICBicmVhazsKKysJZGVmYXVsdDoKKysJICBpbnRlcm5hbF9l cnJvciAoX19GSUxFX18sIF9fTElORV9fLAorKwkJCSAgXygiaGFuZGxlX2luZmVyaW9yX2V2ZW50 OiBJbnZhbGlkICIKKysJCQkgICAgImdudS1pbmRpcmVjdC1mdW5jdGlvbiBicmVha3BvaW50IHR5 cGUgJWQiKSwKKysJCQkgIChpbnQpIGItPnR5cGUpOworKwl9CisrICAgICAgYiA9IGJfbmV4dDsK KysgICAgfQorKyAgZ2RiX2Fzc2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIp OworKworKyAgZ2RiX2Fzc2VydCAoY3VycmVudF9wcm9ncmFtX3NwYWNlID09IGItPnBzcGFjZSk7 CisrICBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChnZGJhcmNoLCBiLT5hZGRyX3N0cmluZywgcmVz b2x2ZWRfcGMpOworKworKyAgc2FsID0gZmluZF9wY19saW5lIChyZXNvbHZlZF9wYywgMCk7Cisr ICBzYWxzLm5lbHRzID0gMTsKKysgIHNhbHMuc2FscyA9ICZzYWw7CisrCisrICBiLT50eXBlID0g YnBfYnJlYWtwb2ludDsKKysgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoYiwgc2Fscyk7 CisrfQorKworIHZvaWQKKyBfaW5pdGlhbGl6ZV9icmVha3BvaW50ICh2b2lkKQorIHsKK0BAIC0x MjAyMiw0ICsxMjM0Myw1IEBAIGluZmVyaW9yIGluIGFsbC1zdG9wIG1vZGUsIGdkYiBiZWhhdmVz IGFzIGlmIGFsd2F5cy1pbnNlcnRlZCBtb2RlIGlzIG9mZi4iKSwKICAgIGF1dG9tYXRpY19oYXJk d2FyZV9icmVha3BvaW50cyA9IDE7CiAgCiAgICBvYnNlcnZlcl9hdHRhY2hfYWJvdXRfdG9fcHJv Y2VlZCAoYnJlYWtwb2ludF9hYm91dF90b19wcm9jZWVkKTsKICsgIG9ic2VydmVyX2F0dGFjaF9t YXJrX3VzZWQgKGJyZWFrcG9pbnRfdHlwZXNfbWFya191c2VkKTsKICB9CiBkaWZmIC0tZ2l0IGEv Z2RiL2JyZWFrcG9pbnQuaCBiL2dkYi9icmVha3BvaW50LmgKLWluZGV4IDZiMzczYTMuLjU5YWE0 MTIgMTAwNjQ0CitpbmRleCA2ZjVkMDUwLi5kMGMzY2MxIDEwMDY0NAogLS0tIGEvZ2RiL2JyZWFr cG9pbnQuaAogKysrIGIvZ2RiL2JyZWFrcG9pbnQuaAogQEAgLTU2LDYgKzU2LDEzIEBAIGVudW0g YnB0eXBlCkBAIC05OTcsOSArMTE1Nyw5IEBAIGluZGV4IDZiMzczYTMuLjU5YWE0MTIgMTAwNjQ0 CiAgICAgIC8qIFVzZWQgYnkgd2FpdF9mb3JfaW5mZXJpb3IgZm9yIHN0ZXBwaW5nIG92ZXIgc3Vi cm91dGluZSBjYWxscywgZm9yCiAgICAgICAgIHN0ZXBwaW5nIG92ZXIgc2lnbmFsIGhhbmRsZXJz LCBhbmQgZm9yIHNraXBwaW5nIHByb2xvZ3Vlcy4gICovCiAgICAgIGJwX3N0ZXBfcmVzdW1lLAot QEAgLTExOCw2ICsxMjUsOSBAQCBlbnVtIGJwdHlwZQotIAotICAgICBicF9sb25nam1wX21hc3Rl ciwKK0BAIC0xMjUsNiArMTMyLDkgQEAgZW51bSBicHR5cGUKKyAgICAgLyogTWFzdGVyIGNvcGll cyBvZiBzdGQ6OnRlcm1pbmF0ZSBicmVha3BvaW50cy4gICovCisgICAgIGJwX3N0ZF90ZXJtaW5h dGVfbWFzdGVyLAogIAogKyAgICAvKiBMaWtlIGJwX2xvbmdqbXBfbWFzdGVyLCBidXQgZm9yIGV4 Y2VwdGlvbnMuICAqLwogKyAgICBicF9leGNlcHRpb25fbWFzdGVyLApAQCAtMTAwNywxMCArMTE2 NywyMCBAQCBpbmRleCA2YjM3M2EzLi41OWFhNDEyIDEwMDY0NAogICAgICBicF9jYXRjaHBvaW50 LAogIAogICAgICBicF90cmFjZXBvaW50LAotQEAgLTYwMyw2ICs2MTMsMTAgQEAgc3RydWN0IGJw c3RhdF93aGF0CitAQCAtMTMzLDYgKzE0Myw5IEBAIGVudW0gYnB0eXBlCisgCisgICAgIC8qIEV2 ZW50IGZvciBKSVQgY29tcGlsZWQgY29kZSBnZW5lcmF0aW9uIG9yIGRlbGV0aW9uLiAgKi8KKyAg ICAgYnBfaml0X2V2ZW50LAorKworKyAgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIsCisrICAgIGJw X2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sCisgICB9OworIAorIC8qIFN0YXRlcyBvZiBlbmFi bGVtZW50IG9mIGJyZWFrcG9pbnQuICovCitAQCAtNjUzLDYgKzY2NiwxMCBAQCBzdHJ1Y3QgYnBz dGF0X3doYXQKICAgICAgICAgY29udGludWluZyBmcm9tIGEgY2FsbCBkdW1teSB3aXRob3V0IHBv cHBpbmcgdGhlIGZyYW1lIGlzIG5vdCBhCiAgICAgICAgIHVzZWZ1bCBvbmUpLiAgKi8KLSAgICAg aW50IGNhbGxfZHVtbXk7CisgICAgIGVudW0gc3RvcF9zdGFja19raW5kIGNhbGxfZHVtbXk7CiAr CiArICAgIC8qIFVzZWQgZm9yIEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRS4gIFRydWUg aWYgd2UgYXJlCiArICAgICAgIGhhbmRsaW5nIGEgbG9uZ2ptcCwgZmFsc2UgaWYgd2UgYXJlIGhh bmRsaW5nIGFuIGV4Y2VwdGlvbi4gICovCkBAIC0xMDE4LDM0NyArMTE4OCwxMSBAQCBpbmRleCA2 YjM3M2EzLi41OWFhNDEyIDEwMDY0NAogICAgfTsKICAKICAvKiBUaGUgcG9zc2libGUgcmV0dXJu IHZhbHVlcyBmb3IgcHJpbnRfYnBzdGF0LCBwcmludF9pdF9ub3JtYWwsCi1AQCAtOTg1LDYgKzk5 OSw5IEBAIGV4dGVybiBpbnQgY2F0Y2hpbmdfc3lzY2FsbF9udW1iZXIgKGludCBzeXNjYWxsX251 bWJlcik7Ci0gLyogVGVsbCBhIGJyZWFrcG9pbnQgdG8gYmUgcXVpZXQuICAqLwotIGV4dGVybiB2 b2lkIG1ha2VfYnJlYWtwb2ludF9zaWxlbnQgKHN0cnVjdCBicmVha3BvaW50ICopOwotIAotKy8q IFNldCBicmVhayBjb25kaXRpb24gb2YgYnJlYWtwb2ludCBCIHRvIEVYUC4gICovCi0rZXh0ZXJu IHZvaWQgc2V0X2JyZWFrcG9pbnRfY29uZGl0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgY2hh ciAqZXhwLCBpbnQgZnJvbV90dHkpOwotKwotIC8qIFJldHVybiBhIHRyYWNlcG9pbnQgd2l0aCB0 aGUgZ2l2ZW4gbnVtYmVyIGlmIGZvdW5kLiAgKi8KLSBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnQg KmdldF90cmFjZXBvaW50IChpbnQgbnVtKTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvYy1leHAueSBi L2dkYi9jLWV4cC55Ci1pbmRleCA4NDU3NzFjLi43YTc0ZDdlIDEwMDY0NAotLS0tIGEvZ2RiL2Mt ZXhwLnkKLSsrKyBiL2dkYi9jLWV4cC55Ci1AQCAtMTg2LDYgKzE4Niw3IEBAIHN0YXRpYyBzdHJ1 Y3Qgc3Rva2VuIG9wZXJhdG9yX3N0b2tlbiAoY29uc3QgY2hhciAqKTsKLSAldG9rZW4gPHRzdmFs PiBTVFJJTkcKLSAldG9rZW4gPHRzdmFsPiBDSEFSCi0gJXRva2VuIDxzc3ltPiBOQU1FIC8qIEJM T0NLTkFNRSBkZWZpbmVkIGJlbG93IHRvIGdpdmUgaXQgaGlnaGVyIHByZWNlZGVuY2UuICovCi0r JXRva2VuIDxzc3ltPiBVTktOT1dOX0NQUF9OQU1FCi0gJXRva2VuIDx2b2lkdmFsPiBDT01QTEVU RQotICV0b2tlbiA8dHN5bT4gVFlQRU5BTUUKLSAldHlwZSA8c3ZhbD4gbmFtZQotQEAgLTM5MSw2 ICszOTIsMzAgQEAgZXhwCToJZXhwICcoJwotIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9Q X0ZVTkNBTEwpOyB9Ci0gCTsKLSAKLStleHAJOglVTktOT1dOX0NQUF9OQU1FICcoJwotKwkJCXsK LSsKLSsJCQkgLyogVGhpcyBjb3VsZCBwb3RlbnRpYWxseSBiZSBhIGFuIGFyZ3VtZW50IGRlZmlu ZWQKLSsJCQkgICAgbG9va3VwIGZ1bmN0aW9uIChLb2VuaWcpLiAgKi8KLSsJCQkgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChPUF9BRExfRlVOQyk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X2Jsb2NrIChl eHByZXNzaW9uX2NvbnRleHRfYmxvY2spOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9zeW0gKE5VTEwp OyAvKiBQbGFjZSBob2xkZXIgKi8KLSsJCQkgIHdyaXRlX2V4cF9zdHJpbmcgKCQxLnN0b2tlbik7 Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfQURMX0ZVTkMpOwotKwotKwkJCS8qIFRo aXMgaXMgdG8gc2F2ZSB0aGUgdmFsdWUgb2YgYXJnbGlzdF9sZW4KLSsJCQkgICBiZWluZyBhY2N1 bXVsYXRlZCBieSBhbiBvdXRlciBmdW5jdGlvbiBjYWxsLiAgKi8KLSsKLSsJCQkgIHN0YXJ0X2Fy Z2xpc3QgKCk7Ci0rCQkJfQotKwkJYXJnbGlzdCAnKScJJXByZWMgQVJST1cKLSsJCQl7Ci0rCQkJ ICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfRlVOQ0FMTCk7Ci0rCQkJICB3cml0ZV9leHBfZWx0 X2xvbmdjc3QgKChMT05HRVNUKSBlbmRfYXJnbGlzdCAoKSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0 X29wY29kZSAoT1BfRlVOQ0FMTCk7Ci0rCQkJfQotKwk7Ci0rCi0gbGN1cmx5CToJJ3snCi0gCQkJ eyBzdGFydF9hcmdsaXN0ICgpOyB9Ci0gCTsKLUBAIC00MTgsNiArNDQzLDI0IEBAIGV4cCAgICAg OiAgICAgICBleHAgJygnIG5vbmVtcHR5X3R5cGVsaXN0ICcpJyBjb25zdF9vcl92b2xhdGlsZQot IAkJCX0KLSAJOwotIAotKy8qCi0rZXhwICAgICA6ICAgICAgIEJMT0NLTkFNRSAnKCcgbm9uZW1w dHlfdHlwZWxpc3QgJyknCi0rCQkJeyBpbnQgaTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChUWVBFX0lOU1RBTkNFX0xPT0tVUCk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X3N5bSAoJDEuc3lt KTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChUWVBFX0lOU1RBTkNFX0xPT0tVUCk7Ci0r Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9JTlNUQU5DRSk7Ci0rCQkJICB3cml0 ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSAkPGl2ZWM+M1swXSk7Ci0rCQkJICBmb3IgKGkg PSAwOyBpIDwgJDxpdmVjPjNbMF07ICsraSkKLSsJCQkgICAgd3JpdGVfZXhwX2VsdF90eXBlICgk PHR2ZWM+M1tpICsgMV0pOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0KChMT05HRVNUKSAk PGl2ZWM+M1swXSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9JTlNUQU5DRSk7 Ci0rCQkJICBkb19jbGVhbnVwcyAodHlwZWxpc3RfY2xlYW51cCk7Ci0rCQkJfQotKwk7Ci0rKi8K LSsKLSByY3VybHkJOgknfScKLSAJCQl7ICQkID0gZW5kX2FyZ2xpc3QgKCkgLSAxOyB9Ci0gCTsK LUBAIC03ODUsMTIgKzgyOCwxMyBAQCBxdWFsaWZpZWRfbmFtZToJdHlwZWJhc2UgQ09MT05DT0xP TiBuYW1lCi0gCTsKLSAKLSB2YXJpYWJsZToJcXVhbGlmaWVkX25hbWUKLSsJfAlDT0xPTkNPTE9O IHF1YWxpZmllZF9uYW1lCi0gCXwJQ09MT05DT0xPTiBuYW1lCi0gCQkJewotIAkJCSAgY2hhciAq bmFtZSA9IGNvcHlfbmFtZSAoJDIpOwotIAkJCSAgc3RydWN0IHN5bWJvbCAqc3ltOwotIAkJCSAg c3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sOwotLQotKwkJCSAgCi0gCQkJICBzeW0gPQot IAkJCSAgICBsb29rdXBfc3ltYm9sIChuYW1lLCAoY29uc3Qgc3RydWN0IGJsb2NrICopIE5VTEws Ci0gCQkJCQkgICBWQVJfRE9NQUlOLCAoaW50ICopIE5VTEwpOwotQEAgLTEyODYsNiArMTMzMCw3 IEBAIG5hbWUJOglOQU1FIHsgJCQgPSAkMS5zdG9rZW47IH0KLSAJfAlCTE9DS05BTUUgeyAkJCA9 ICQxLnN0b2tlbjsgfQotIAl8CVRZUEVOQU1FIHsgJCQgPSAkMS5zdG9rZW47IH0KLSAJfAlOQU1F X09SX0lOVCAgeyAkJCA9ICQxLnN0b2tlbjsgfQotKwl8CVVOS05PV05fQ1BQX05BTUUgIHsgJCQg PSAkMS5zdG9rZW47IH0JCi0gCXwJb3BlcmF0b3IgeyAkJCA9ICQxOyB9Ci0gCTsKLSAKLUBAIC0x Mjk4LDYgKzEzNDMsMTUgQEAgbmFtZV9ub3RfdHlwZW5hbWUgOglOQU1FCi0gICAgY29udGV4dCB3 aGVyZSBvbmx5IGEgbmFtZSBjb3VsZCBvY2N1ciwgdGhpcyBtaWdodCBiZSB1c2VmdWwuCi0gICAJ fAlOQU1FX09SX0lOVAotICAqLwotKyAgCXwJVU5LTk9XTl9DUFBfTkFNRSAKLSsJfAlvcGVyYXRv cgotKwkJCXsKLSsJCQkgICQkLnN0b2tlbiA9ICQxOwotKwkJCSAgJCQuc3ltID0gbG9va3VwX3N5 bWJvbCAoJDEucHRyLAotKwkJCQkJCSAgZXhwcmVzc2lvbl9jb250ZXh0X2Jsb2NrLAotKwkJCQkJ CSAgVkFSX0RPTUFJTiwKLSsJCQkJCQkgICYkJC5pc19hX2ZpZWxkX29mX3RoaXMpOwotKwkJCX0K LSAJOwotIAotICUlCi1AQCAtMjAzMyw2ICsyMDg3LDEzIEBAIHN0YXRpYyBpbnQgbGFzdF93YXNf c3RydWN0b3A7Ci0gc3RhdGljIGludAotIHl5bGV4ICh2b2lkKQotIHsKLSsgIC8qIG5hbWVfcHJl Zml4IHN0b3JlcyB0aGUgZnVsbCBxdWFsaWZpY2F0aW9uIG9mIGEgdmFyaWFibGUgdGhhdCBpcwot KyAgICAgc3BlY2lmaWVkIGluIHRoZSBleHByZXNzaW9uLiBJdCBpcyB1c2VkIHRvIGVsZW1pbmF0 ZSBjb25mdXNpb24gCi0rICAgICBkdXJpbmcgbG9va3VwLiovCi0rICBzdGF0aWMgY2hhciAqbmFt ZV9wcmVmaXggPSBOVUxMOwotKyAgc3RhdGljIGludCBuYW1lX3ByZWZpeF9sZW4gPSAwOwotKyAg c3RhdGljIGludCB0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSsgIAotICAgaW50IGM7Ci0gICBpbnQg bmFtZWxlbjsKLSAgIHVuc2lnbmVkIGludCBpOwotQEAgLTIwNDEsOSArMjEwMiwxOSBAQCB5eWxl eCAodm9pZCkKLSAgIGNoYXIgKmNvcHk7Ci0gCi0gICBsYXN0X3dhc19zdHJ1Y3RvcCA9IDA7Ci0t Ci0rICAKLSAgcmV0cnk6Ci0tCi0rICAKLSsgIGlmICh0ZXJtaW5hdGVfcHJlZml4Ci0rICAgICAg fHwgbGV4cHRyICE9IG5hbWVfcHJlZml4ICsgbmFtZV9wcmVmaXhfbGVuKQotKyAgICB7Ci0rICAg ICAgLyogU29tZSB0b2tlbiB3YXMgc2tpcHBlZCwgc28gY2xlYXIgbmFtZV9wcmVmaXguICovCi0r ICAgICAgbmFtZV9wcmVmaXggPSBOVUxMOwotKyAgICAgIG5hbWVfcHJlZml4X2xlbiA9IDA7Ci0r ICAgIH0KLSsgICAgCi0rICB0ZXJtaW5hdGVfcHJlZml4ID0gMTsKLSsgIAkgIAkgIAotICAgLyog Q2hlY2sgaWYgdGhpcyBpcyBhIG1hY3JvIGludm9jYXRpb24gdGhhdCB3ZSBuZWVkIHRvIGV4cGFu ZC4gICovCi0gICBpZiAoISBzY2FubmluZ19tYWNyb19leHBhbnNpb24gKCkpCi0gICAgIHsKLUBA IC0yMDc5LDEwICsyMTUwLDE5IEBAIHl5bGV4ICh2b2lkKQotIAkgICAgJiYgcGFyc2VfbGFuZ3Vh Z2UtPmxhX2xhbmd1YWdlICE9IGxhbmd1YWdlX2NwbHVzKQotIAkgIGJyZWFrOwotIAotKwlpZiAo dG9rZW50YWIyW2ldLnRva2VuID09IENPTE9OQ09MT04pCi0rCSAgewotKwkgICAgbmFtZV9wcmVm aXhfbGVuICs9IDI7Ci0rCSAgICB0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSsJICAgIGlmIChuYW1l X3ByZWZpeCA9PSBOVUxMKQotKwkgICAgICBuYW1lX3ByZWZpeCA9IGxleHB0cjsKLSsJICB9Ci0r Ci0gCWxleHB0ciArPSAyOwotIAl5eWx2YWwub3Bjb2RlID0gdG9rZW50YWIyW2ldLm9wY29kZTsK LSAJaWYgKGluX3BhcnNlX2ZpZWxkICYmIHRva2VudGFiMltpXS50b2tlbiA9PSBBUlJPVykKLSAJ ICBsYXN0X3dhc19zdHJ1Y3RvcCA9IDE7Ci0rCQotIAlyZXR1cm4gdG9rZW50YWIyW2ldLnRva2Vu OwotICAgICAgIH0KLSAKLUBAIC0yMTExLDYgKzIxOTEsOCBAQCB5eWxleCAodm9pZCkKLSAgICAg ICAgIHJldHVybiAwOwotIAotICAgICBjYXNlICcgJzoKLSsgICAgICBuYW1lX3ByZWZpeF9sZW4r KzsKLSsgICAgICB0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSAgICAgY2FzZSAnXHQnOgotICAgICBj YXNlICdcbic6Ci0gICAgICAgbGV4cHRyKys7Ci1AQCAtMjI2OCwxMSArMjM1MCwxMyBAQCB5eWxl eCAodm9pZCkKLSAgICAgZXJyb3IgKCJJbnZhbGlkIGNoYXJhY3RlciAnJWMnIGluIGV4cHJlc3Np b24uIiwgYyk7Ci0gCi0gICAvKiBJdCdzIGEgbmFtZS4gIFNlZSBob3cgbG9uZyBpdCBpcy4gICov Ci0rICAKLSAgIG5hbWVsZW4gPSAwOwotICAgZm9yIChjID0gdG9rc3RhcnRbbmFtZWxlbl07Ci0g ICAgICAgIChjID09ICdfJyB8fCBjID09ICckJyB8fCAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0g CXx8IChjID49ICdhJyAmJiBjIDw9ICd6JykgfHwgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB8fCBj ID09ICc8Jyk7KQotICAgICB7Ci0rICAgIAotICAgICAgIC8qIFRlbXBsYXRlIHBhcmFtZXRlciBs aXN0cyBhcmUgcGFydCBvZiB0aGUgbmFtZS4KLSAJIEZJWE1FOiBUaGlzIG1pc2hhbmRsZXMgYHBy aW50ICRhPDQmJiRhPjMnLiAgKi8KLSAKLUBAIC0yMzU3LDE0ICsyNDQxLDMzIEBAIHl5bGV4ICh2 b2lkKQotICAgICAgY3VycmVudGx5IGFzIG5hbWVzIG9mIHR5cGVzOyBOQU1FIGZvciBvdGhlciBz eW1ib2xzLgotICAgICAgVGhlIGNhbGxlciBpcyBub3QgY29uc3RyYWluZWQgdG8gY2FyZSBhYm91 dCB0aGUgZGlzdGluY3Rpb24uICAqLwotICAgewotKyAgICBjaGFyICp0bXAgPSBjb3B5OwotICAg ICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gICAgIGludCBpc19hX2ZpZWxkX29mX3RoaXMgPSAwOwot ICAgICBpbnQgaGV4dHlwZTsKLSAKLS0gICAgc3ltID0gbG9va3VwX3N5bWJvbCAoY29weSwgZXhw cmVzc2lvbl9jb250ZXh0X2Jsb2NrLAotKyAgICBpZiAobmFtZV9wcmVmaXggIT0gTlVMTCkKLSsg ICAgICB7Ci0rCXRtcCA9IGFsbG9jYSAobmFtZV9wcmVmaXhfbGVuICsgbmFtZWxlbiArIDEpOwot KwltZW1jcHkgKHRtcCwgbmFtZV9wcmVmaXgsIG5hbWVfcHJlZml4X2xlbiArIG5hbWVsZW4pOwot Kwl0bXBbbmFtZV9wcmVmaXhfbGVuICsgbmFtZWxlbl0gPSAnXDAnOwotKyAgICAgIH0KLSsKLSsg ICAgc3ltID0gbG9va3VwX3N5bWJvbCAodG1wLCBleHByZXNzaW9uX2NvbnRleHRfYmxvY2ssCi0g CQkJIFZBUl9ET01BSU4sCi0gCQkJIHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5n dWFnZV9jcGx1cwotIAkJCSA/ICZpc19hX2ZpZWxkX29mX3RoaXMgOiAoaW50ICopIE5VTEwpOwot KwkJCSAKLSsgICAgLyogS2VlcCB0aGlzIG5hbWUgYXMgdGhlIHByZWZpeCBmb3IgdGhlIG5leHQg bmFtZS4gKi8KLSsgICAgaWYgKHN5bSkKLSsgICAgICB7Ci0rCWlmIChuYW1lX3ByZWZpeCA9PSBO VUxMKQotKwkgIG5hbWVfcHJlZml4ID0gdG9rc3RhcnQ7Ci0rCi0rCW5hbWVfcHJlZml4X2xlbiAr PSBuYW1lbGVuOwotKwl0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSsgICAgICB9Ci0rCi0gICAgIC8q IENhbGwgbG9va3VwX3N5bXRhYiwgbm90IGxvb2t1cF9wYXJ0aWFsX3N5bXRhYiwgaW4gY2FzZSB0 aGVyZSBhcmUKLSAgICAgICAgbm8gcHN5bXRhYnMgKGNvZmYsIHhjb2ZmLCBvciBzb21lIGZ1dHVy ZSBjaGFuZ2UgdG8gYmxvdyBhd2F5IHRoZQotICAgICAgICBwc3ltdGFicyBvbmNlIG9uY2Ugc3lt Ym9scyBhcmUgcmVhZCkuICAqLwotQEAgLTI0MjMsNiArMjUyNiwxMiBAQCB5eWxleCAodm9pZCkK LSAgICAgeXlsdmFsLnNzeW0uaXNfYV9maWVsZF9vZl90aGlzID0gaXNfYV9maWVsZF9vZl90aGlz OwotICAgICBpZiAoaW5fcGFyc2VfZmllbGQgJiYgKmxleHB0ciA9PSAnXDAnKQotICAgICAgIHNh d19uYW1lX2F0X2VvZiA9IDE7Ci0rICAgICAgICAKLSsgICAgaWYgKHN5bSA9PSBOVUxMIAotKyAg ICAgICAgJiYgcGFyc2VfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCi0r ICAgICAgICAmJiAhbG9va3VwX21pbmltYWxfc3ltYm9sICh0bXAsIE5VTEwsIE5VTEwpKQotKyAg ICAgIHJldHVybiBVTktOT1dOX0NQUF9OQU1FOwotKwotICAgICByZXR1cm4gTkFNRTsKLSAgIH0K LSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2MtbGFuZy5jIGIvZ2RiL2MtbGFuZy5jCi1pbmRleCBkNjIw ODgxLi4zNGNiMzRhIDEwMDY0NAotLS0tIGEvZ2RiL2MtbGFuZy5jCi0rKysgYi9nZGIvYy1sYW5n LmMKLUBAIC0xMTQwLDYgKzExNDAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4cF9kZXNjcmlw dG9yIGV4cF9kZXNjcmlwdG9yX2MgPQotIHsKLSAgIHByaW50X3N1YmV4cF9zdGFuZGFyZCwKLSAg IG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwKLSsgIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkLAot ICAgb3BfbmFtZV9zdGFuZGFyZCwKLSAgIGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQsCi0gICBl dmFsdWF0ZV9zdWJleHBfYwogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmludC5jIGIvZ2RiL2Mt dHlwZXByaW50LmMKLWluZGV4IGVkOTgzODEuLjMwNjFhYjcgMTAwNjQ0CitpbmRleCA5MjZhZTJm Li5hNTliOTY1IDEwMDY0NAogLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKICsrKyBiL2dkYi9jLXR5 cGVwcmludC5jCi1AQCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJjLWxhbmcuaCIKLSAjaW5j bHVkZSAidHlwZXByaW50LmgiCi0gI2luY2x1ZGUgImNwLWFiaS5oIgotKyNpbmNsdWRlICJqdi1s YW5nLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLSAjaW5jbHVkZSA8ZXJybm8uaD4K LUBAIC00MCw4ICs0MSw2IEBAIHN0YXRpYyB2b2lkIGNwX3R5cGVfcHJpbnRfbWV0aG9kX2FyZ3Mg KHN0cnVjdCB0eXBlICptdHlwZSwgY2hhciAqcHJlZml4LAotIAkJCQkgICAgICAgY2hhciAqdmFy c3RyaW5nLCBpbnQgc3RhdGljcCwKLSAJCQkJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0p OwotIAotLXN0YXRpYyB2b2lkIGNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgdWlfZmlsZSAqKTsKLS0KLSBzdGF0aWMgdm9pZCBjcF90eXBlX3ByaW50X2Rlcml2YXRpb25f aW5mbyAoc3RydWN0IHVpX2ZpbGUgKiwgc3RydWN0IHR5cGUgKik7Ci0gCi0gc3RhdGljIHZvaWQg Y190eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsCi1AQCAtMTk3LDYgKzE5NiwyMyBAQCBjcF90eXBlX3ByaW50X21ldGhvZF9hcmdz IChzdHJ1Y3QgdHlwZSAqbXR5cGUsIGNoYXIgKnByZWZpeCwgY2hhciAqdmFyc3RyaW5nLAotICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2b2lkIik7Ci0gCi0gICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIpIik7Ci0rCi0rICAvKiBGb3Igbm9uLXN0YXRpYyBtZXRob2RzLCByZWFk IHF1YWxpZmllcnMgZnJvbSB0aGUgdHlwZSBvZgotKyAgICAgVEhJUy4gICovCi0rICBpZiAoIXN0 YXRpY3ApCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqZG9tYWluOwotKwotKyAgICAgIGdk Yl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFIChhcmdz WzBdLnR5cGUpID09IFRZUEVfQ09ERV9QVFIpOwotKyAgICAgIGRvbWFpbiA9IFRZUEVfVEFSR0VU X1RZUEUgKGFyZ3NbMF0udHlwZSk7Ci0rCi0rICAgICAgaWYgKFRZUEVfQ09OU1QgKGRvbWFpbikp Ci0rCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiBjb25zdCIpOwotKwotKyAgICAgIGlmIChU WVBFX1ZPTEFUSUxFIChkb21haW4pKQotKwlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgdm9s YXRpbGUiKTsKLSsgICAgfQotIH0KLSAKLSAKLUBAIC0zNTMsMTAgKzM2OSwxNCBAQCBjX3R5cGVf cHJpbnRfbW9kaWZpZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LAotIAotIC8qIFByaW50IG91dCB0aGUgYXJndW1lbnRzIG9mIFRZUEUsIHdoaWNoIHNob3VsZCBo YXZlIFRZUEVfQ09ERV9NRVRIT0QKLSAgICBvciBUWVBFX0NPREVfRlVOQywgdG8gU1RSRUFNLiAg QXJ0aWZpY2lhbCBhcmd1bWVudHMsIHN1Y2ggYXMgInRoaXMiCi0tICAgaW4gbm9uLXN0YXRpYyBt ZXRob2RzLCBhcmUgZGlzcGxheWVkLiAgKi8KLSsgICBpbiBub24tc3RhdGljIG1ldGhvZHMsIGFy ZSBkaXNwbGF5ZWQgaWYgU0hPV19BUlRJRklDSUFMIGlzCi0rICAgbm9uLXplcm8uIExBTkdVQUdF IGlzIHRoZSBsYW5ndWFnZSBpbiB3aGljaCBUWVBFIHdhcyBkZWZpbmVkLiAgVGhpcyBpcwotKyAg IGEgbmVjZXNzYXJ5IGV2aWwgc2luY2UgdGhpcyBjb2RlIGlzIHVzZWQgYnkgdGhlIEMsIEMrKywg YW5kIEphdmEKLSsgICBiYWNrZW5kcy4gKi8KLSAKLS1zdGF0aWMgdm9pZAotLWNfdHlwZV9wcmlu dF9hcmdzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt2b2lk Ci0rY190eXBlX3ByaW50X2FyZ3MgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLAotKwkJICAgaW50IHNob3dfYXJ0aWZpY2lhbCwgZW51bSBsYW5ndWFnZSBsYW5ndWFn ZSkKLSB7Ci0gICBpbnQgaSwgbGVuOwotICAgc3RydWN0IGZpZWxkICphcmdzOwotQEAgLTM2OCwx MyArMzg4LDE5IEBAIGNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHVpX2ZpbGUgKnN0cmVhbSkKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5 cGUpOyBpKyspCi0gICAgIHsKLSsgICAgICBpZiAoVFlQRV9GSUVMRF9BUlRJRklDSUFMICh0eXBl LCBpKSAmJiAhc2hvd19hcnRpZmljaWFsKQotKwljb250aW51ZTsKLSsKLSAgICAgICBpZiAocHJp bnRlZF9hbnkpCi0gCXsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOwotIAkg IHdyYXBfaGVyZSAoIiAgICAiKTsKLSAJfQotIAotLSAgICAgIGNfcHJpbnRfdHlwZSAoVFlQRV9G SUVMRF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOwotKyAgICAgIGlmIChsYW5n dWFnZSA9PSBsYW5ndWFnZV9qYXZhKQotKwlqYXZhX3ByaW50X3R5cGUgKFRZUEVfRklFTERfVFlQ RSAodHlwZSwgaSksICIiLCBzdHJlYW0sIC0xLCAwKTsKLSsgICAgICBlbHNlCi0rCWNfcHJpbnRf dHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOwotICAg ICAgIHByaW50ZWRfYW55ID0gMTsKLSAgICAgfQotIAotQEAgLTU1OCw3ICs1ODQsMTMgQEAgY190 eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSwKK0BAIC01ODUsNyArNTg1LDEzIEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1 ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCWZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKICAKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICJbIik7CkBAIC0xMzczLDIxMjUzICsxMjA3LDU0NTQgQEAgaW5kZXggZWQ5ODM4MS4u MzA2MWFiNyAxMDA2NDQKICAJJiYgIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVE ICh0eXBlKSkKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLAogIAkJCSAgKFRZUEVf TEVOR1RIICh0eXBlKQotQEAgLTU5MSw3ICs2MjMsNyBAQCBjX3R5cGVfcHJpbnRfdmFyc3BlY19z dWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotICAgICAg IGlmIChwYXNzZWRfYV9wdHIpCi0gCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKLSAg ICAgICBpZiAoIWRlbWFuZ2xlZF9hcmdzKQotLQljX3R5cGVfcHJpbnRfYXJncyAodHlwZSwgc3Ry ZWFtKTsKLSsJY190eXBlX3ByaW50X2FyZ3MgKHR5cGUsIHN0cmVhbSwgMSwgbGFuZ3VhZ2VfYyk7 Ci0gICAgICAgY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSwgc3RyZWFtLCBzaG93LAotIAkJCQkgICBwYXNzZWRfYV9wdHIsIDApOwotICAgICAgIGJy ZWFrOwotZGlmZiAtLWdpdCBhL2dkYi9jb2ZmcmVhZC5jIGIvZ2RiL2NvZmZyZWFkLmMKLWluZGV4 IGJhNDEzYWQuLjQ0Njc2YTggMTAwNjQ0Ci0tLS0gYS9nZGIvY29mZnJlYWQuYwotKysrIGIvZ2Ri L2NvZmZyZWFkLmMKLUBAIC0yMTIzLDYgKzIxMjMsNyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMg Y29mZl9zeW1fZm5zID0KLSAgIGNvZmZfbmV3X2luaXQsCQkvKiBzeW1fbmV3X2luaXQ6IGluaXQg YW55dGhpbmcgZ2JsIHRvIGVudGlyZSBzeW10YWIgKi8KLSAgIGNvZmZfc3ltZmlsZV9pbml0LAkJ Lyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlYWQoKSAqLwot ICAgY29mZl9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGlu dG8gc3ltdGFiICovCi0rICBOVUxMLAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLwotICAgY29m Zl9zeW1maWxlX2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xl YW51cCAqLwotICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAgeGxh dGUgZXh0ZXJuYWwgdG8gaW50ZXJuYWwgZm9ybSAqLwotICAgZGVmYXVsdF9zeW1maWxlX3NlZ21l bnRzLAkvKiBzeW1fc2VnbWVudHM6IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KLWRpZmYg LS1naXQgYS9nZGIvY29uZmlnLmluIGIvZ2RiL2NvbmZpZy5pbgotaW5kZXggZWJkZTg3Ni4uOTA3 YjI3NSAxMDA2NDQKLS0tLSBhL2dkYi9jb25maWcuaW4KLSsrKyBiL2dkYi9jb25maWcuaW4KLUBA IC00NiwxMSArNDYsMTAgQEAKLSAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCi0gI3VuZGVm IEVOQUJMRV9OTFMKLSAKLS0vKiBsb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGF0YSBmaWxlcyBp biB0aGlzIHBhdGggW0RBVEFESVIvZ2RiXSAqLwotKy8qIEdsb2JhbCBkaXJlY3RvcnkgZm9yIEdE QiBkYXRhIGZpbGVzLiAqLwotICN1bmRlZiBHREJfREFUQURJUgotIAotLS8qIERlZmluZSBpZiB0 aGUgZ2RiLWRhdGFkaXIgZGlyZWN0b3J5IHNob3VsZCBiZSByZWxvY2F0ZWQgd2hlbiBHREIgaXMg bW92ZWQuCi0tICAgKi8KLSsvKiBEZWZpbmUgaWYgR0RCIGRhdGFkaXIgc2hvdWxkIGJlIHJlbG9j YXRlZCB3aGVuIEdEQiBpcyBtb3ZlZC4gKi8KLSAjdW5kZWYgR0RCX0RBVEFESVJfUkVMT0NBVEFC TEUKLSAKLSAvKiBEZWZpbmUgdG8gYmUgYSBzdHJpbmcgbmFtaW5nIHRoZSBkZWZhdWx0IGhvc3Qg Y2hhcmFjdGVyIHNldC4gKi8KLUBAIC02NTMsNiArNjUyLDkgQEAKLSAgICAncHRyZGlmZl90Jy4g Ki8KLSAjdW5kZWYgUFRSRElGRl9UX1NVRkZJWAotIAotKy8qIERlZmluZSB0byBpbnN0YWxsIHBh dGggZm9yIFB5dGhvbiBzb3VyY2VzICovCi0rI3VuZGVmIFBZVEhPTkRJUgotKwotIC8qIFJlbG9j YXRlZCBkaXJlY3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gKi8KLSAjdW5kZWYgUkVMT0NfU1JDRElS Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKLWluZGV4IDE5 ODNkMDQuLjhkY2EzN2UgMTAwNzU1Ci0tLS0gYS9nZGIvY29uZmlndXJlCi0rKysgYi9nZGIvY29u ZmlndXJlCi1AQCAtNjc2LDYgKzY3Niw4IEBAIFJFUE9SVF9CVUdTX1RPCi0gUEtHVkVSU0lPTgot IFRBUkdFVF9PQlMKLSBzdWJkaXJzCi0rcHl0aG9uZGlyCi0rR0RCX0RBVEFESVJfUEFUSAotIEdE Ql9EQVRBRElSCi0gREVCVUdESVIKLSBhbV9fZmFzdGRlcENDX0ZBTFNFCi1AQCAtODg1LDYgKzg4 Nyw3IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCi0gd2l0aF9zZXBhcmF0ZV9kZWJ1Z19k aXIKLSB3aXRoX2dkYl9kYXRhZGlyCi0gd2l0aF9yZWxvY2F0ZWRfc291cmNlcwotK3dpdGhfcHl0 aG9uZGlyCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfNjRfYml0X2JmZAotIGVuYWJsZV9nZGJj bGkKLUBAIC0xNTg2LDYgKzE1ODksMTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCi0gICAtLXdpdGgtcmVsb2NhdGVkLXNvdXJj ZXM9UEFUSAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0 ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcwotKyAgLS13aXRoLWdkYi1kYXRhZGlyICAgICAg bG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRoCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCi0rICAtLXdpdGgtcHl0aG9uZGlyICAg ICAgICBpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiL3B5dGhvbl0KLSAgIC0td2l0aC1saWJ1bndpbmQg ICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKLSAgIC0td2l0aC1j dXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVy bWNhcAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAgLTY4NjYsNiArNjg3 Myw3MyBAQCBfQUNFT0YKLSBmaQotIAotIAotKyMgR0RCJ3MgZGF0YWRpciByZWxvY2F0aW9uCi0r Ci0rZ2RiZGF0YWRpcj0ke2RhdGFkaXJ9L2dkYgotKwotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdp dGgtZ2RiLWRhdGFkaXIgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9nZGJfZGF0YWRpcitz ZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2dkYl9kYXRhZGlyOyBnZGJkYXRh ZGlyPSIke3dpdGh2YWx9IgotK2ZpCi0rCi0rCi0rCi0rICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9O RSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLSsgIHRlc3QgIngkZXhlY19wcmVmaXgi ID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKLSsgIGFjX2RlZmluZV9kaXI9YGV2 YWwgZWNobyAkZ2RiZGF0YWRpcmAKLSsgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVm aW5lX2RpcmAKLSsKLStjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2RlZmluZSBHREJfREFU QURJUiAiJGFjX2RlZmluZV9kaXIiCi0rX0FDRU9GCi0rCi0rCi0rCi0raWYgdGVzdCAieCRleGVj X3ByZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9Jzsg dGhlbgotKyAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KLSsgICAgdGVzdF9wcmVm aXg9L3Vzci9sb2NhbAotKyAgZWxzZQotKyAgICB0ZXN0X3ByZWZpeD0kcHJlZml4Ci0rICBmaQot K2Vsc2UKLSsgIHRlc3RfcHJlZml4PSRleGVjX3ByZWZpeAotK2ZpCi0rCi0rY2FzZSAke2dkYmRh dGFkaXJ9IGluCi0rICAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8iKnxcCi0rICAn JHtleGVjX3ByZWZpeH0nfCcke2V4ZWNfcHJlZml4fS8nKikKLSsKLSskYXNfZWNobyAiI2RlZmlu ZSBHREJfREFUQURJUl9SRUxPQ0FUQUJMRSAxIiA+PmNvbmZkZWZzLmgKLSsKLSsgIDs7Ci0rZXNh YwotK0dEQl9EQVRBRElSX1BBVEg9JHtnZGJkYXRhZGlyfQotKwotKwotKwotKyMgQ2hlY2sgd2hl dGhlciAtLXdpdGgtcHl0aG9uZGlyIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfcHl0aG9u ZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfcHl0aG9uZGlyOyBweXRo b25kaXI9IiR7d2l0aHZhbH0iCi0rZWxzZQotKyAgcHl0aG9uZGlyPW5vCi0rZmkKLSsKLSsKLSsj IElmIHRoZSB1c2VyIHBhc3NlZCBpbiBhIHBhdGgsIGRlZmluZSBpdC4gIE90aGVyd2lzZSwgY29t cHV0ZSBpdCBhdAotKyMgcnVudGltZSBiYXNlZCBvbiB0aGUgcG9zc2libHktcmVsb2NhdGFibGUg ZGF0YWRpci4KLStpZiB0ZXN0ICIkcHl0aG9uZGlyIiA9ICJubyI7IHRoZW4KLSsgIHB5dGhvbmRp cj0nJChHREJfREFUQURJUl9QQVRIKS9weXRob24nCi0rZWxzZQotKwotK2NhdCA+PmNvbmZkZWZz LmggPDxfQUNFT0YKLSsjZGVmaW5lIFBZVEhPTkRJUiAiJHB5dGhvbmRpciIKLStfQUNFT0YKLSsK LStmaQotKwotKworZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8gYi9nZGIvZG9j L2dkYmludC50ZXhpbmZvCitpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAorLS0tIGEvZ2Ri L2RvYy9nZGJpbnQudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbworQEAgLTIx MDIsNiArMjEwMiwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9s cyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAorIHdlIGNyZWF0ZSBAZGZue3BhcnRpYWwg c3ltYm9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCisgc3ltYm9scywgYW5k IG9ubHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4gbmVjZXNzYXJ5Lgor IAorK0BtZW51CisrKiBTeW1ib2wgUmVhZGluZzo6CisrKiBQYXJ0aWFsIFN5bWJvbCBUYWJsZXM6 OgorKyogVHlwZXM6OgorKyogT2JqZWN0IEZpbGUgRm9ybWF0czo6CisrKiBEZWJ1Z2dpbmcgRmls ZSBGb3JtYXRzOjoKKysqIEFkZGluZyBhIE5ldyBTeW1ib2wgUmVhZGVyIHRvIEdEQjo6CisrKiBN ZW1vcnkgTWFuYWdlbWVudCBmb3IgU3ltYm9sIEZpbGVzOjoKKysqIE1lbW9yeSBNYW5hZ2VtZW50 IGZvciBUeXBlczo6CisrQGVuZCBtZW51CiArCisrQG5vZGUgU3ltYm9sIFJlYWRpbmcKKyBAc2Vj dGlvbiBTeW1ib2wgUmVhZGluZwogIAorIEBjaW5kZXggc3ltYm9sIHJlYWRpbmcKK0BAIC0yMTk0 LDYgKzIyMDYsNyBAQCBzeW10YWIuICBVcG9uIHJldHVybiwgQGNvZGV7cHN0LT5yZWFkaW59IHNo b3VsZCBoYXZlIGJlZW4gc2V0IHRvIDEsIGFuZAorIHplcm8gaWYgdGhlcmUgd2VyZSBubyBzeW1i b2xzIGluIHRoYXQgcGFydCBvZiB0aGUgc3ltYm9sIGZpbGUuCisgQGVuZCB0YWJsZQogIAotIHN1 YmRpcnM9IiRzdWJkaXJzIGRvYyB0ZXN0c3VpdGUiCi1AQCAtOTYwNCw2ICs5Njc4LDggQEAgJGFz X2VjaG8gIiNkZWZpbmUgSEFWRV9QWVRIT04gMSIgPj5jb25mZGVmcy5oCi0gICBDT05GSUdfT0JT PSIkQ09ORklHX09CUyBcJChTVUJESVJfUFlUSE9OX09CUykiCi0gICBDT05GSUdfREVQUz0iJENP TkZJR19ERVBTIFwkKFNVQkRJUl9QWVRIT05fREVQUykiCi0gICBDT05GSUdfU1JDUz0iJENPTkZJ R19TUkNTIFwkKFNVQkRJUl9QWVRIT05fU1JDUykiCi0rICBDT05GSUdfSU5TVEFMTD0iJENPTkZJ R19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgotKyAgQ09ORklHX1VOSU5TVEFMTD0iJENPTkZJR19V TklOU1RBTEwgdW5pbnN0YWxsLXB5dGhvbiIKLSAgIEVOQUJMRV9DRkxBR1M9IiRFTkFCTEVfQ0ZM QUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKKytAbm9kZSBQYXJ0aWFsIFN5bWJvbCBUYWJs ZXMKKyBAc2VjdGlvbiBQYXJ0aWFsIFN5bWJvbCBUYWJsZXMKICAKLSAgICMgRmxhZ3MgbmVlZGVk IHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0aG9uLWNvbmZpZyAtLWNmbGFn cykuCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKLWlu ZGV4IDZmODczYjUuLjc3OTg1YzggMTAwNjQ0Ci0tLS0gYS9nZGIvY29uZmlndXJlLmFjCi0rKysg Yi9nZGIvY29uZmlndXJlLmFjCi1AQCAtMTA4LDYgKzEwOCw1MSBAQCBBU19IRUxQX1NUUklORyhb LS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEhdLCBbYXV0b21hdGljYWxseSByZWxvY2F0ZSB0 aGlzIHBhdAotICAgICAgICAgICAgICAgW1JlbG9jYXRlZCBkaXJlY3RvcnkgZm9yIHNvdXJjZSBm aWxlcy4gXSkKLSBdKQorIEB2YWx1ZXtHREJOfSBoYXMgdGhyZWUgdHlwZXMgb2Ygc3ltYm9sIHRh YmxlczoKK0BAIC0yMjk1LDYgKzIzMDgsNyBAQCBhbmQgcGFydGlhbCBzeW1ib2wgdGFibGVzIGJl aGluZCBhIHNldCBvZiBmdW5jdGlvbiBwb2ludGVycyBrbm93biBhcworIHRoZSBAZGZue3F1aWNr IHN5bWJvbCBmdW5jdGlvbnN9LiAgVGhlc2UgYXJlIGRvY3VtZW50ZWQgaW4KKyBAZmlsZXtzeW1m aWxlLmh9LgogIAotKyMgR0RCJ3MgZGF0YWRpciByZWxvY2F0aW9uCi0rCi0rZ2RiZGF0YWRpcj0k e2RhdGFkaXJ9L2dkYgotKwotK0FDX0FSR19XSVRIKFtnZGItZGF0YWRpcl0sCi0rICBbQVNfSEVM UF9TVFJJTkcoWy0td2l0aC1nZGItZGF0YWRpcl0sCi0rICAgICAgICAgICAgICAgICAgW2xvb2sg Zm9yIGdsb2JhbCBzZXBhcmF0ZSBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aCBbREFUQURJUi9nZGJd XSldLCBbZ2RiZGF0YWRpcj0iJHt3aXRodmFsfSJdKQotKwotK0FDX0RFRklORV9ESVIoR0RCX0RB VEFESVIsIGdkYmRhdGFkaXIsCi0rICAgICAgICAgICAgICBbR2xvYmFsIGRpcmVjdG9yeSBmb3Ig R0RCIGRhdGEgZmlsZXMuIF0pCi0rCi0raWYgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSB8 fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9JzsgdGhlbgotKyAgaWYgdGVzdCAi eCRwcmVmaXgiID0geE5PTkU7IHRoZW4KLSsgICAgdGVzdF9wcmVmaXg9L3Vzci9sb2NhbAotKyAg ZWxzZQotKyAgICB0ZXN0X3ByZWZpeD0kcHJlZml4Ci0rICBmaQotK2Vsc2UKLSsgIHRlc3RfcHJl Zml4PSRleGVjX3ByZWZpeAotK2ZpCi0rCi0rY2FzZSAke2dkYmRhdGFkaXJ9IGluCi0rICAiJHt0 ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8iKnxcCi0rICAnJHtleGVjX3ByZWZpeH0nfCck e2V4ZWNfcHJlZml4fS8nKikKLSsgICAgQUNfREVGSU5FKEdEQl9EQVRBRElSX1JFTE9DQVRBQkxF LCAxLCBbRGVmaW5lIGlmIEdEQiBkYXRhZGlyIHNob3VsZCBiZSByZWxvY2F0ZWQgd2hlbiBHREIg aXMgbW92ZWQuXSkKLSsgIDs7Ci0rZXNhYwotK0dEQl9EQVRBRElSX1BBVEg9JHtnZGJkYXRhZGly fQotK0FDX1NVQlNUKEdEQl9EQVRBRElSX1BBVEgpCi0rCi0rQUNfQVJHX1dJVEgoW3B5dGhvbmRp cl0sCi0rICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1weXRob25kaXJdLAotKyAgICAgICAgICAg ICAgICAgIFtpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aCBbREFUQURJUi9n ZGIvcHl0aG9uXV0pXSwgW3B5dGhvbmRpcj0iJHt3aXRodmFsfSJdLCBbcHl0aG9uZGlyPW5vXSkK LSsKLSsjIElmIHRoZSB1c2VyIHBhc3NlZCBpbiBhIHBhdGgsIGRlZmluZSBpdC4gIE90aGVyd2lz ZSwgY29tcHV0ZSBpdCBhdAotKyMgcnVudGltZSBiYXNlZCBvbiB0aGUgcG9zc2libHktcmVsb2Nh dGFibGUgZGF0YWRpci4KLStpZiB0ZXN0ICIkcHl0aG9uZGlyIiA9ICJubyI7IHRoZW4KLSsgIHB5 dGhvbmRpcj0nJChHREJfREFUQURJUl9QQVRIKS9weXRob24nCi0rZWxzZQotKyAgQUNfREVGSU5F X1VOUVVPVEVEKFBZVEhPTkRJUiwgIiRweXRob25kaXIiLAotKyAgICAgIFtEZWZpbmUgdG8gaW5z dGFsbCBwYXRoIGZvciBQeXRob24gc291cmNlc10pCi0rZmkKLStBQ19TVUJTVChweXRob25kaXIp Ci0rCi0rCi0gQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKLSAKLSAjIENoZWNrIHdo ZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKLUBAIC02 NzQsNiArNzE5LDggQEAgaWYgdGVzdCAiJHtoYXZlX2xpYnB5dGhvbn0iID0geWVzOyB0aGVuCi0g ICBDT05GSUdfT0JTPSIkQ09ORklHX09CUyBcJChTVUJESVJfUFlUSE9OX09CUykiCi0gICBDT05G SUdfREVQUz0iJENPTkZJR19ERVBTIFwkKFNVQkRJUl9QWVRIT05fREVQUykiCi0gICBDT05GSUdf U1JDUz0iJENPTkZJR19TUkNTIFwkKFNVQkRJUl9QWVRIT05fU1JDUykiCi0rICBDT05GSUdfSU5T VEFMTD0iJENPTkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgotKyAgQ09ORklHX1VOSU5TVEFM TD0iJENPTkZJR19VTklOU1RBTEwgdW5pbnN0YWxsLXB5dGhvbiIKLSAgIEVOQUJMRV9DRkxBR1M9 IiRFTkFCTEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKLSAKLSAgICMgRmxhZ3Mg bmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0aG9uLWNvbmZpZyAt LWNmbGFncykuCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS50Z3QgYi9nZGIvY29uZmlndXJl LnRndAotaW5kZXggNjJlNjY4My4uMmI5YmIyZiAxMDA2NDQKLS0tLSBhL2dkYi9jb25maWd1cmUu dGd0Ci0rKysgYi9nZGIvY29uZmlndXJlLnRndAotQEAgLTQwLDcgKzQwLDcgQEAgYWxwaGEqLSot b3NmKikKLSBhbHBoYSotKi1saW51eCopCi0gCSMgVGFyZ2V0OiBMaXR0bGUtZW5kaWFuIEFscGhh IHJ1bm5pbmcgTGludXgKLSAJZ2RiX3RhcmdldF9vYnM9ImFscGhhLXRkZXAubyBhbHBoYS1tZGVi dWctdGRlcC5vIGFscGhhLWxpbnV4LXRkZXAubyBcCi0tCQkJc29saWIubyBzb2xpYi1zdnI0Lm8i Ci0rCQkJc29saWIubyBzb2xpYi1zdnI0Lm8gbGludXgtdGRlcC5vIgotIAk7OwotIGFscGhhKi0q LWZyZWVic2QqIHwgYWxwaGEqLSota2ZyZWVic2QqLWdudSkKLSAJIyBUYXJnZXQ6IEZyZWVCU0Qv YWxwaGEKLUBAIC02Nyw3ICs2Nyw3IEBAIGFscGhhKi0qLSopCi0gYW0zM18yLjAqLSotbGludXgq KQotIAkjIFRhcmdldDogTWF0c3VzaGl0YSBtbjEwMzAwIChBTTMzKSBydW5uaW5nIExpbnV4Ci0g CWdkYl90YXJnZXRfb2JzPSJtbjEwMzAwLXRkZXAubyBtbjEwMzAwLWxpbnV4LXRkZXAubyBjb3Jl bG93Lm8gXAotLQkJCXNvbGliLm8gc29saWItc3ZyNC5vIgotKwkJCXNvbGliLm8gc29saWItc3Zy NC5vIGxpbnV4LXRkZXAubyIKLSAJOzsKLSAKLSBhcm0qLXdpbmNlLXBlIHwgYXJtKi0qLW1pbmd3 MzJjZSopCi1AQCAtMjMzLDcgKzIzMyw3IEBAIGlbMzQ1NjddODYtKi0qKQotIAotIGlhNjQtKi1s aW51eCopCi0gCSMgVGFyZ2V0OiBJbnRlbCBJQS02NCBydW5uaW5nIEdOVS9MaW51eAotLQlnZGJf dGFyZ2V0X29icz0iaWE2NC10ZGVwLm8gaWE2NC1saW51eC10ZGVwLm8gXAotKwlnZGJfdGFyZ2V0 X29icz0iaWE2NC10ZGVwLm8gaWE2NC1saW51eC10ZGVwLm8gbGludXgtdGRlcC5vIFwKLSAJCQlz b2xpYi5vIHNvbGliLXN2cjQubyBzeW1maWxlLW1lbS5vIgotIAlidWlsZF9nZGJzZXJ2ZXI9eWVz Ci0gCTs7Ci1AQCAtMjYzLDcgKzI2Myw4IEBAIG0zMmMtKi0qKQotIG0zMnIqLSotbGludXgqKQot IAkjIFRhcmdldDogUmVuZXNhcyBNMzJSIHJ1bm5pbmcgR05VL0xpbnV4Ci0gCWdkYl90YXJnZXRf b2JzPSJtMzJyLXRkZXAubyBtMzJyLWxpbnV4LXRkZXAubyByZW1vdGUtbTMyci1zZGkubyBcCi0t CQkJZ2xpYmMtdGRlcC5vIHNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUtbWVtLm8iCi0rCQkJ Z2xpYmMtdGRlcC5vIHNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUtbWVtLm8gXAotKwkJCWxp bnV4LXRkZXAubyIKLSAJZ2RiX3NpbT0uLi9zaW0vbTMyci9saWJzaW0uYQotIAlidWlsZF9nZGJz ZXJ2ZXI9eWVzCi0gCTs7Ci1AQCAtMzE3LDcgKzMxOCw3IEBAIG1pY3JvYmxhemUqLWxpbnV4LSop Ci0gCSMgVGFyZ2V0OiBYaWxpbnggTWljcm9CbGF6ZSBydW5uaW5nIExpbnV4Ci0gCWdkYl90YXJn ZXRfb2JzPSJtaWNyb2JsYXplLXRkZXAubyBtaWNyb2JsYXplLWxpbnV4LXRkZXAubyBtaWNyb2Js YXplLXJvbS5vIFwKLSAJCQltb25pdG9yLm8gZHNyZWMubyBzb2xpYi5vIHNvbGliLXN2cjQubyBj b3JlbG93Lm8gXAotLQkJCXN5bWZpbGUtbWVtLm8iCi0rCQkJc3ltZmlsZS1tZW0ubyBsaW51eC10 ZGVwLm8iCi0gCWdkYl9zaW09Li4vc2ltL21pY3JvYmxhemUvbGlic2ltLmEKLSAJOzsKLSBtaWNy b2JsYXplKi14aWxpbngtKikKLUBAIC0zMzcsNyArMzM4LDggQEAgbWlwcyotc2dpLWlyaXg2KikK LSBtaXBzKi0qLWxpbnV4KikKLSAJIyBUYXJnZXQ6IExpbnV4L01JUFMKLSAJZ2RiX3RhcmdldF9v YnM9Im1pcHMtdGRlcC5vIG1pcHMtbGludXgtdGRlcC5vIGdsaWJjLXRkZXAubyBcCi0tCQkJY29y ZWxvdy5vIHNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUtbWVtLm8iCi0rCQkJY29yZWxvdy5v IHNvbGliLm8gc29saWItc3ZyNC5vIHN5bWZpbGUtbWVtLm8gXAotKwkJCWxpbnV4LXRkZXAubyIK LSAJZ2RiX3NpbT0uLi9zaW0vbWlwcy9saWJzaW0uYQotIAlidWlsZF9nZGJzZXJ2ZXI9eWVzCi0g CTs7Ci1AQCAtNDI3LDcgKzQyOSw3IEBAIHNoKi0qLWxpbnV4KikKLSAJIyBUYXJnZXQ6IEdOVS9M aW51eCBTdXBlci1ICi0gCWdkYl90YXJnZXRfb2JzPSJzaC10ZGVwLm8gc2g2NC10ZGVwLm8gc2gt bGludXgtdGRlcC5vIG1vbml0b3IubyBcCi0gCQkJZHNyZWMubyBzb2xpYi5vIHNvbGliLXN2cjQu byBzeW1maWxlLW1lbS5vIFwKLS0JCQlnbGliYy10ZGVwLm8gY29yZWxvdy5vIgotKwkJCWdsaWJj LXRkZXAubyBjb3JlbG93Lm8gbGludXgtdGRlcC5vIgotIAlnZGJfc2ltPS4uL3NpbS9zaC9saWJz aW0uYQotIAlidWlsZF9nZGJzZXJ2ZXI9eWVzCi0gCTs7Ci1AQCAtNDU1LDcgKzQ1Nyw4IEBAIHNo KikKLSBzcGFyYy0qLWxpbnV4KikKLSAJIyBUYXJnZXQ6IEdOVS9MaW51eCBTUEFSQwotIAlnZGJf dGFyZ2V0X29icz0ic3BhcmMtdGRlcC5vIHNwYXJjLXNvbDItdGRlcC5vIHNvbDItdGRlcC5vIFwK LS0JCQlzcGFyYy1saW51eC10ZGVwLm8gc29saWIubyBzb2xpYi1zdnI0Lm8gc3ltZmlsZS1tZW0u byIKLSsJCQlzcGFyYy1saW51eC10ZGVwLm8gc29saWIubyBzb2xpYi1zdnI0Lm8gc3ltZmlsZS1t ZW0ubyBcCi0rCQkJbGludXgtdGRlcC5vIgotIAlpZiB0ZXN0ICJ4JGVuYWJsZV82NF9iaXRfYmZk IiA9ICJ4eWVzIjsgdGhlbgotIAkgICAgIyBUYXJnZXQ6IEdOVS9MaW51eCBVbHRyYVNQQVJDCi0g CSAgICBnZGJfdGFyZ2V0X29icz0ic3BhcmM2NC10ZGVwLm8gc3BhcmM2NC1zb2wyLXRkZXAubyBc Ci1AQCAtNDY2LDcgKzQ2OSw3IEBAIHNwYXJjNjQtKi1saW51eCopCi0gCSMgVGFyZ2V0OiBHTlUv TGludXggVWx0cmFTUEFSQwotIAlnZGJfdGFyZ2V0X29icz0ic3BhcmM2NC10ZGVwLm8gc3BhcmM2 NC1zb2wyLXRkZXAubyBzb2wyLXRkZXAubyBcCi0gCQkJc3BhcmM2NC1saW51eC10ZGVwLm8gc3Bh cmMtdGRlcC5vIHNwYXJjLXNvbDItdGRlcC5vIFwKLS0JCQlzcGFyYy1saW51eC10ZGVwLm8gc29s aWIubyBzb2xpYi1zdnI0Lm8iCi0rCQkJc3BhcmMtbGludXgtdGRlcC5vIHNvbGliLm8gc29saWIt c3ZyNC5vIGxpbnV4LXRkZXAubyIKLSAJYnVpbGRfZ2Ric2VydmVyPXllcwotIAk7OwotIHNwYXJj Ki0qLWZyZWVic2QqIHwgc3BhcmMqLSota2ZyZWVic2QqLWdudSkKLUBAIC02MDEsNyArNjA0LDgg QEAgeDg2XzY0LSotb3BlbmJzZCopCi0geHRlbnNhKi0qLWxpbnV4KikJZ2RiX3RhcmdldD1saW51 eAotIAkjIFRhcmdldDogR05VL0xpbnV4IFh0ZW5zYQotIAlnZGJfdGFyZ2V0X29icz0ieHRlbnNh LXRkZXAubyB4dGVuc2EtY29uZmlnLm8geHRlbnNhLWxpbnV4LXRkZXAubyBcCi0tCQkJc29saWIu byBzb2xpYi1zdnI0Lm8gY29yZWxvdy5vIHN5bWZpbGUtbWVtLm8iCi0rCQkJc29saWIubyBzb2xp Yi1zdnI0Lm8gY29yZWxvdy5vIHN5bWZpbGUtbWVtLm8gXAotKwkJCWxpbnV4LXRkZXAubyIKLSAJ YnVpbGRfZ2Ric2VydmVyPXllcwotIAk7OwotIHh0ZW5zYSopCi1kaWZmIC0tZ2l0IGEvZ2RiL2Nw LW5hbWUtcGFyc2VyLnkgYi9nZGIvY3AtbmFtZS1wYXJzZXIueQotaW5kZXggODFmNmE1ZC4uMDk3 ZGI2NSAxMDA2NDQKLS0tLSBhL2dkYi9jcC1uYW1lLXBhcnNlci55Ci0rKysgYi9nZGIvY3AtbmFt ZS1wYXJzZXIueQotQEAgLTM4OSw3ICszODksNyBAQCBmdW5jdGlvbgotIAkJfAljb2xvbl9leHRf b25seSBmdW5jdGlvbl9hcmdsaXN0IHN0YXJ0X29wdAotIAkJCXsgJCQgPSBmaWxsX2NvbXAgKERF TUFOR0xFX0NPTVBPTkVOVF9UWVBFRF9OQU1FLCAkMSwgJDIuY29tcCk7Ci0gCQkJICBpZiAoJDMp ICQkID0gZmlsbF9jb21wIChERU1BTkdMRV9DT01QT05FTlRfTE9DQUxfTkFNRSwgJCQsICQzKTsg fQotLQotKwkJfAljb2xvbl9leHRfb25seQotIAkJfAljb252ZXJzaW9uX29wX25hbWUgc3RhcnRf b3B0Ci0gCQkJeyAkJCA9ICQxLmNvbXA7Ci0gCQkJICBpZiAoJDIpICQkID0gZmlsbF9jb21wIChE RU1BTkdMRV9DT01QT05FTlRfTE9DQUxfTkFNRSwgJCQsICQyKTsgfQotZGlmZiAtLWdpdCBhL2dk Yi9jcC1uYW1lc3BhY2UuYyBiL2dkYi9jcC1uYW1lc3BhY2UuYwotaW5kZXggNWU4OTRkNC4uNjMy NWVhZCAxMDA2NDQKLS0tLSBhL2dkYi9jcC1uYW1lc3BhY2UuYwotKysrIGIvZ2RiL2NwLW5hbWVz cGFjZS5jCi1AQCAtMzQsMTQgKzM0LDE3IEBACi0gI2luY2x1ZGUgImJ1aWxkc3ltLmgiCi0gCi0g c3RhdGljIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIg Km5hbWUsCi0tCQkJCQkgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkgICAg ICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJCQkJICAgICAgY29uc3QgZG9tYWluX2Vu dW0gZG9tYWluLAotIAkJCQkJICAgICAgY29uc3QgY2hhciAqc2NvcGUsCi0gCQkJCQkgICAgICBp bnQgc2NvcGVfbGVuKTsKLSAKLStzdGF0aWMgc3RydWN0IHN5bWJvbCAqY3BfbG9va3VwX3N5bWJv bF9pbl9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSsKLSBzdGF0 aWMgc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFyICpuYW1lLAot LQkJCQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkgIGNvbnN0IHN0cnVjdCBi bG9jayAqYmxvY2ssCi0gCQkJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLSAJCQkJCSAg aW50IGFub255bW91c19uYW1lc3BhY2UpOwotQEAgLTExNyw3ICsxMjAsNyBAQCBjcF9zY2FuX2Zv cl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAqc3ltYm9sKQotIAkJ IGFub255bW91cyBuYW1lc3BhY2UuICBTbyBhZGQgc3ltYm9scyBpbiBpdCB0byB0aGUKLSAJCSBu YW1lc3BhY2UgZ2l2ZW4gYnkgdGhlIHByZXZpb3VzIGNvbXBvbmVudCBpZiB0aGVyZSBpcwotIAkJ IG9uZSwgb3IgdG8gdGhlIGdsb2JhbCBuYW1lc3BhY2UgaWYgdGhlcmUgaXNuJ3QuICAqLwotLQkg ICAgICBjcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChkZXN0LCBzcmMsIE5VTEwpOwotKwkgICAgICBj cF9hZGRfdXNpbmdfZGlyZWN0aXZlIChkZXN0LCBzcmMsIE5VTEwsICIiLCAwKTsKLSAJICAgIH0K LSAJICAvKiBUaGUgIisgMiIgaXMgZm9yIHRoZSAiOjoiLiAgKi8KLSAJICBwcmV2aW91c19jb21w b25lbnQgPSBuZXh0X2NvbXBvbmVudCArIDI7Ci1AQCAtMTMyLDcgKzEzNSw4IEBAIGNwX3NjYW5f Zm9yX2Fub255bW91c19uYW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCi0g ICAgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCwgZG9uJ3QgYWRkIGl0IHR3aWNlLiAgKi8KKytAbm9k ZSBUeXBlcworIEBzZWN0aW9uIFR5cGVzCiAgCi0gdm9pZAotLWNwX2FkZF91c2luZ19kaXJlY3Rp dmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAqYWxpYXMp Ci0rY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVzdCwgY29uc3QgY2hhciAq c3JjLCBjb25zdCBjaGFyICphbGlhcywKLSsJCQljb25zdCBjaGFyICpkZWNsYXJhdGlvbiwgY29u c3QgaW50IGxpbmVfbnVtYmVyKQotIHsKLSAgIHN0cnVjdCB1c2luZ19kaXJlY3QgKmN1cnJlbnQ7 Ci0gICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXc7Ci1AQCAtMTQ2LDcgKzE1MCw4IEBAIGNwX2Fk ZF91c2luZ19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgY29u c3QgY2hhciAqYWxpYXMpCi0gCXJldHVybjsKLSAgICAgfQorIEB1bm51bWJlcmVkc3Vic2VjIEZ1 bmRhbWVudGFsIFR5cGVzIChlLmcuLCBAY29kZXtGVF9WT0lEfSwgQGNvZGV7RlRfQk9PTEVBTn0p LgorQEAgLTIzMTcsNiArMjMzMSw3IEBAIHR5cGVzIG1hcCB0byBvbmUgQGNvZGV7VFlQRV9DT0RF Xyp9IHR5cGUsIGFuZCBhcmUgZGlzdGluZ3Vpc2hlZCBieQorIG90aGVyIG1lbWJlcnMgb2YgdGhl IHR5cGUgc3RydWN0LCBzdWNoIGFzIHdoZXRoZXIgdGhlIHR5cGUgaXMgc2lnbmVkCisgb3IgdW5z aWduZWQsIGFuZCBob3cgbWFueSBiaXRzIGl0IHVzZXMuCiAgCi0tICB1c2luZ19kaXJlY3RpdmVz ID0gY3BfYWRkX3VzaW5nIChkZXN0LCBzcmMsIGFsaWFzLCB1c2luZ19kaXJlY3RpdmVzKTsKLSsg IHVzaW5nX2RpcmVjdGl2ZXMgPSBjcF9hZGRfdXNpbmcgKGRlc3QsIHNyYywgYWxpYXMsIGRlY2xh cmF0aW9uLAotKwkJCQkgICBsaW5lX251bWJlciwgdXNpbmdfZGlyZWN0aXZlcyk7CisrQGFuY2hv cntCdWlsdGluIFR5cGVzfQorIEB1bm51bWJlcmVkc3Vic2VjIEJ1aWx0aW4gVHlwZXMgKGUuZy4s IEBjb2Rle2J1aWx0aW5fdHlwZV92b2lkfSwgQGNvZGV7YnVpbHRpbl90eXBlX2NoYXJ9KS4KICAK LSB9CisgVGhlc2UgYXJlIGluc3RhbmNlcyBvZiB0eXBlIHN0cnVjdHMgdGhhdCByb3VnaGx5IGNv cnJlc3BvbmQgdG8KK0BAIC0yMzMxLDYgKzIzNDYsNyBAQCBvbmx5IG9uZSBpbnN0YW5jZSBleGlz dHMsIHdoaWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQorIEBjb2Rle1RZUEVfQ09E RV9JTlR9IHR5cGVzIGFzIG5lZWRlZCwgd2l0aCBlYWNoIG9uZSBhc3NvY2lhdGVkIHdpdGgKKyBz b21lIHBhcnRpY3VsYXIgb2JqZmlsZS4KICAKLUBAIC0xOTgsOSArMjAzLDExIEBAIGNwX2lzX2Fu b255bW91cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKQotIAkgICE9IE5VTEwpOwotIH0KKytAbm9k ZSBPYmplY3QgRmlsZSBGb3JtYXRzCisgQHNlY3Rpb24gT2JqZWN0IEZpbGUgRm9ybWF0cworIEBj aW5kZXggb2JqZWN0IGZpbGUgZm9ybWF0cwogIAotLS8qIENyZWF0ZSBhIG5ldyBzdHJ1Y3QgdXNp bmcgZGlyZWN0IHdoaWNoIGltcG9ydHMgdGhlIG5hbWVzcGFjZSBTUkMgaW50byB0aGUKLS0gICBz Y29wZSBERVNULiAgQUxJQVMgaXMgdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVkIG5hbWVzcGFjZSBp biB0aGUgY3VycmVudAotLSAgIHNjb3BlLiAgSWYgQUxJQVMgaXMgTlVMTCB0aGVuIHRoZSBuYW1l c3BhY2UgaXMga25vd24gYnkgaXRzIG9yaWdpbmFsIG5hbWUuCi0rLyogQ3JlYXRlIGEgbmV3IHN0 cnVjdCB1c2luZyBkaXJlY3Qgd2hpY2ggaW1wb3J0cyB0aGUgbmFtZXNwYWNlIFNSQwotKyAgIGlu dG8gdGhlIHNjb3BlIERFU1QuICBBTElBUyBpcyB0aGUgbmFtZSBvZiB0aGUgaW1wb3J0ZWQgbmFt ZXNwYWNlCi0rICAgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBBTElBUyBpcyBOVUxMIHRoZW4g dGhlCi0rICAgbmFtZXNwYWNlIGlzIGtub3duIGJ5IGl0cyBvcmlnaW5hbCBuYW1lLgotKwotICAg IFNldCBpdHMgbmV4dCBtZW1iZXIgaW4gdGhlIGxpbmtlZCBsaXN0IHRvIE5FWFQ7IGFsbG9jYXRl IGFsbCBtZW1vcnkKLSAgICB1c2luZyB4bWFsbG9jLiAgSXQgY29waWVzIHRoZSBzdHJpbmdzLCBz byBOQU1FIGNhbiBiZSBhIHRlbXBvcmFyeQotICAgIHN0cmluZy4gICovCi1AQCAtMjA5LDE5ICsy MTYsMjMgQEAgc3RydWN0IHVzaW5nX2RpcmVjdCAqCi0gY3BfYWRkX3VzaW5nIChjb25zdCBjaGFy ICpkZXN0LAotICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3JjLAotICAgICAgICAgICAgICAg Y29uc3QgY2hhciAqYWxpYXMsCi0rICAgICAgICAgICAgICBjb25zdCBjaGFyICpkZWNsYXJhdGlv biwKLSsgICAgICAgICAgICAgIGNvbnN0IGludCBsaW5lX251bWJlciwKLSAJICAgICAgc3RydWN0 IHVzaW5nX2RpcmVjdCAqbmV4dCkKLSB7Ci0gICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpyZXR2YWw7 CitAQCAtMjQxNiw2ICsyNDMyLDcgQEAgU09NLCB3aGljaCBpcyBhIGNyb3NzLWxhbmd1YWdlIEFC SSkuCiAgCi0gICByZXR2YWwgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCB1c2luZ19kaXJlY3Qp KTsKLS0gIHJldHZhbC0+aW1wb3J0X3NyYyA9IHNhdmVzdHJpbmcgKHNyYywgc3RybGVuKHNyYykp OwotLSAgcmV0dmFsLT5pbXBvcnRfZGVzdCA9IHNhdmVzdHJpbmcgKGRlc3QsIHN0cmxlbihkZXN0 KSk7Ci0rICByZXR2YWwtPmltcG9ydF9zcmMgPSBzYXZlc3RyaW5nIChzcmMsIHN0cmxlbiAoc3Jj KSk7Ci0rICByZXR2YWwtPmltcG9ydF9kZXN0ID0gc2F2ZXN0cmluZyAoZGVzdCwgc3RybGVuIChk ZXN0KSk7CisgVGhlIFNPTSByZWFkZXIgaXMgaW4gQGZpbGV7c29tcmVhZC5jfS4KICAKLSAgIGlm IChhbGlhcyAhPSBOVUxMKQotICAgICByZXR2YWwtPmFsaWFzID0gc2F2ZXN0cmluZyAoYWxpYXMs IHN0cmxlbiAoYWxpYXMpKTsKLSAgIGVsc2UKLSAgICAgcmV0dmFsLT5hbGlhcyA9IE5VTEw7Cisr QG5vZGUgRGVidWdnaW5nIEZpbGUgRm9ybWF0cworIEBzZWN0aW9uIERlYnVnZ2luZyBGaWxlIEZv cm1hdHMKICAKLSsgIHJldHZhbC0+ZGVjbGFyYXRpb24gPSBzYXZlc3RyaW5nIChkZWNsYXJhdGlv biwgc3RybGVuIChkZWNsYXJhdGlvbikpOwotKyAgcmV0dmFsLT5saW5lX251bWJlciA9IGxpbmVf bnVtYmVyOwotICAgcmV0dmFsLT5uZXh0ID0gbmV4dDsKLSAgIHJldHZhbC0+c2VhcmNoZWQgPSAw OworIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgY2hhcmFjdGVyaXN0aWNzIG9mIGRlYnVnZ2luZyBp bmZvcm1hdGlvbiB0aGF0CitAQCAtMjQ4Nyw2ICsyNTA0LDcgQEAgRFdBUkYgMyBpcyBhbiBpbXBy b3ZlZCB2ZXJzaW9uIG9mIERXQVJGIDIuCisgQGNpbmRleCBTT00gZGVidWdnaW5nIGluZm8KKyBM aWtlIENPRkYsIHRoZSBTT00gZGVmaW5pdGlvbiBpbmNsdWRlcyBkZWJ1Z2dpbmcgaW5mb3JtYXRp b24uCiAgCi1AQCAtMjM4LDE5ICsyNDksMTAwIEBAIGNwX2FkZF91c2luZyAoY29uc3QgY2hhciAq ZGVzdCwKKytAbm9kZSBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRlciB0byBHREIKKyBAc2VjdGlv biBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRlciB0byBAdmFsdWV7R0RCTn0KICAKLSBzdHJ1Y3Qg c3ltYm9sICoKLSBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAot LQkJCSAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkgICBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAotIAkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0tICBzdHJ1 Y3Qgc3ltYm9sICpzeW07Ci0rICBzdHJ1Y3Qgc3ltYm9sICpzeW07IAotICAgY29uc3QgY2hhciAq c2NvcGUgPSBibG9ja19zY29wZSAoYmxvY2spOwotIAotLSAgc3ltID0gbG9va3VwX25hbWVzcGFj ZV9zY29wZSAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluLCBzY29wZSwgMCk7Ci0r ICBzeW0gPSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBibG9jaywgZG9tYWluLCBzY29w ZSwgMCk7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi0tICByZXR1 cm4gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBsaW5rYWdlX25hbWUs IGJsb2NrLCBkb21haW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEp OwotKyAgcmV0dXJuIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlKHNjb3BlLCBuYW1lLCBibG9j aywgZG9tYWluKTsKLSt9Ci0rCi0rLyogU2VhcmNoZXMgZm9yIE5BTUUgaW4gdGhlIGN1cnJlbnQg bmFtZXNwYWNlLCBhbmQgYnkgYXBwbHlpbmcgcmVsZXZhbnQgaW1wb3J0Ci0rICAgc3RhdGVtZW50 cyBiZWxvbmdpbmcgdG8gQkxPQ0sgYW5kIGl0cyBwYXJlbnRzLiAgU0NPUEUgaXMgdGhlIG5hbWVz cGFjZQotKyAgIHNjb3BlIG9mIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBzZWFyY2ggaXMgYmVp bmcgZXZhbHVhdGVkLiAgKi8KLSsKLStzdHJ1Y3Qgc3ltYm9sKgotK2NwX2xvb2t1cF9zeW1ib2xf bmFtZXNwYWNlIChjb25zdCBjaGFyICpzY29wZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGJsb2NrICpibG9jaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSsKLSsgIC8q IEZpcnN0LCB0cnkgdG8gZmluZCB0aGUgc3ltYm9sIGluIHRoZSBnaXZlbiBuYW1lc3BhY2UuICAq LwotKyAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBi bG9jaywgZG9tYWluKTsKLSsgIGlmICggc3ltICE9IE5VTEwpCi0rICAgIHJldHVybiBzeW07Ci0r ICAgIAotKyAgLyogU2VhcmNoIGZvciBuYW1lIGluIG5hbWVzcGFjZXMgaW1wb3J0ZWQgdG8gdGhp cyBhbmQgcGFyZW50IGJsb2Nrcy4gICovCi0rICB3aGlsZSAoYmxvY2sgIT0gTlVMTCkKLSsgICAg ewotKyAgICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyhzY29wZSxuYW1lLCBibG9j aywgZG9tYWluLDAsMSk7Ci0rCi0rICAgICAgaWYgKHN5bSkKLSsgICAgICAgIHJldHVybiBzeW07 Ci0rCi0rICAgICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLKGJsb2NrKTsKLSsgICAgfQotKwot KyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qIExvb2t1cCBOQU1FIGF0IG5hbWVzcGFjZSBzY29w ZSAob3IsIGluIEMgdGVybXMsIGluIHN0YXRpYyBhbmQKLSsgICBnbG9iYWwgdmFyaWFibGVzKS4g IFNDT1BFIGlzIHRoZSBuYW1lc3BhY2UgdGhhdCB0aGUgY3VycmVudAotKyAgIGZ1bmN0aW9uIGlz IGRlZmluZWQgd2l0aGluOyBvbmx5IGNvbnNpZGVyIG5hbWVzcGFjZXMgd2hvc2UgbGVuZ3RoCi0r ICAgaXMgYXQgbGVhc3QgU0NPUEVfTEVOLiAgT3RoZXIgYXJndW1lbnRzIGFyZSBhcyBpbgotKyAg IGNwX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwuCi0rCi0rICAgRm9yIGV4YW1wbGUsIGlmIHdlJ3Jl IHdpdGhpbiBhIGZ1bmN0aW9uIEE6OkI6OmYgYW5kIGxvb2tpbmcgZm9yIGEKLSsgICBzeW1ib2wg eCwgdGhpcyB3aWxsIGdldCBjYWxsZWQgd2l0aCBOQU1FID0gIngiLCBTQ09QRSA9ICJBOjpCIiwg YW5kCi0rICAgU0NPUEVfTEVOID0gMC4gIEl0IHRoZW4gY2FsbHMgaXRzZWxmIHdpdGggTkFNRSBh bmQgU0NPUEUgdGhlIHNhbWUsCi0rICAgYnV0IHdpdGggU0NPUEVfTEVOID0gMS4gIEFuZCB0aGVu IGl0IGNhbGxzIGl0c2VsZiB3aXRoIE5BTUUgYW5kCi0rICAgU0NPUEUgdGhlIHNhbWUsIGJ1dCB3 aXRoIFNDT1BFX0xFTiA9IDQuICBUaGlzIHRoaXJkIGNhbGwgbG9va3MgZm9yCi0rICAgIkE6OkI6 OngiOyBpZiBpdCBkb2Vzbid0IGZpbmQgaXQsIHRoZW4gdGhlIHNlY29uZCBjYWxsIGxvb2tzIGZv cgotKyAgICJBOjp4IiwgYW5kIGlmIHRoYXQgY2FsbCBmYWlscywgdGhlbiB0aGUgZmlyc3QgY2Fs bCBsb29rcyBmb3IKLSsgICAieCIuICAqLwotKwotK3N0cnVjdCBzeW1ib2wgKgotK2xvb2t1cF9u YW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJY29uc3Qgc3RydWN0IGJsb2Nr ICpibG9jaywKLSsJCQljb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rCQkJY29uc3QgY2hhciAq c2NvcGUsCi0rCQkJaW50IHNjb3BlX2xlbikKLSt7Ci0rICBjaGFyICpuYW1lc3BhY2U7CisgQGNp bmRleCBhZGRpbmcgZGVidWdnaW5nIGluZm8gcmVhZGVyCitAQCAtMjUwOSw2ICsyNTI3LDcgQEAg d2lsbCBvbmx5IGV2ZXIgYmUgaW1wbGVtZW50ZWQgYnkgb25lIG9iamVjdCBmaWxlIGZvcm1hdCBt YXkgYmUgY2FsbGVkCisgZGlyZWN0bHkuICBUaGlzIGludGVyZmFjZSBzaG91bGQgYmUgZGVzY3Jp YmVkIGluIGEgZmlsZQorIEBmaWxle2JmZC9saWJAdmFye3h5en0uaH0sIHdoaWNoIGlzIGluY2x1 ZGVkIGJ5IEB2YWx1ZXtHREJOfS4KKyAKKytAbm9kZSBNZW1vcnkgTWFuYWdlbWVudCBmb3IgU3lt Ym9sIEZpbGVzCisgQHNlY3Rpb24gTWVtb3J5IE1hbmFnZW1lbnQgZm9yIFN5bWJvbCBGaWxlcwor IAorIE1vc3QgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIGxvYWRlZCBzeW1ib2wgZmlsZSBpcyBz dG9yZWQgb24KK0BAIC0yNTIwLDEwICsyNTM5LDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhlIG9iamZp bGUgaXMgdW5sb2FkZWQgb3IgcmVsb2FkZWQuICBUaGVyZWZvcmUgb25lCisgb2JqZmlsZSBtdXN0 IG5vdCByZWZlcmVuY2Ugc3ltYm9sIG9yIHR5cGUgZGF0YSBmcm9tIGFub3RoZXIgb2JqZmlsZTsK KyB0aGV5IGNvdWxkIGJlIHVubG9hZGVkIGF0IGRpZmZlcmVudCB0aW1lcy4KKyAKKy1Vc2VyIGNv bnZlbmllbmNlIHZhcmlhYmxlcywgZXQgY2V0ZXJhLCBoYXZlIGFzc29jaWF0ZWQgdHlwZXMuICBO b3JtYWxseQorLXRoZXNlIHR5cGVzIGxpdmUgaW4gdGhlIGFzc29jaWF0ZWQgb2JqZmlsZS4gIEhv d2V2ZXIsIHdoZW4gdGhlIG9iamZpbGUKKy1pcyB1bmxvYWRlZCwgdGhvc2UgdHlwZXMgYXJlIGRl ZXAgY29waWVkIHRvIGdsb2JhbCBtZW1vcnksIHNvIHRoYXQKKy10aGUgdmFsdWVzIG9mIHRoZSB1 c2VyIHZhcmlhYmxlcyBhbmQgaGlzdG9yeSBpdGVtcyBhcmUgbm90IGxvc3QuCisrQG5vZGUgTWVt b3J5IE1hbmFnZW1lbnQgZm9yIFR5cGVzCisrQHNlY3Rpb24gTWVtb3J5IE1hbmFnZW1lbnQgZm9y IFR5cGVzCisrQGNpbmRleCBtZW1vcnkgbWFuYWdlbWVudCBmb3IgdHlwZXMKICsKLSsgIGlmIChz Y29wZVtzY29wZV9sZW5dICE9ICdcMCcpCi0rICAgIHsKLSsgICAgICAvKiBSZWN1cnNpdmVseSBz ZWFyY2ggZm9yIG5hbWVzIGluIGNoaWxkIG5hbWVzcGFjZXMgZmlyc3QuICAqLworK0BmaW5kZXgg VFlQRV9PQkpGSUxFCisrQGNvZGV7VFlQRV9PQkpGSUxFfSBtYWNybyBpbmRpY2F0ZXMgdGhlIGN1 cnJlbnQgbWVtb3J5IG93bmVyIG9mIHRoZSB0eXBlLgorK05vbi1AY29kZXtOVUxMfSB2YWx1ZSBp bmRpY2F0ZXMgaXQgaXMgb3duZWQgYnkgYW4gb2JqZmlsZSAoc3BlY2lmaWNhbGx5IGJ5IGl0cwor K29ic3RhY2spIGFuZCBpbiBzdWNoIGNhc2UgdGhlIHR5cGUgcmVtYWlucyB2YWxpZCB0aWxsIHRo ZSBvYmpmaWxlIGlzIHVubG9hZGVkCisrb3IgcmVsb2FkZWQuICBGb3Igc3VjaCB0eXBlcyB3aXRo IGFuIGFzc29jaWF0ZWQgb2JqZmlsZSBubyByZWZlcmVuY2UgY291bnRpbmcKKytpcyBiZWluZyBt YWRlLgogKwotKyAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSsgICAgICBpbnQgbmV3X3Njb3Bl X2xlbiA9IHNjb3BlX2xlbjsKKytVc2VyIGNvbnZlbmllbmNlIHZhcmlhYmxlcywgZXQgY2V0ZXJh LCBoYXZlIGFzc29jaWF0ZWQgdHlwZXMuICBOb3JtYWxseSB0aGVzZQorK3R5cGVzIGxpdmUgaW4g dGhlIGFzc29jaWF0ZWQgb2JqZmlsZS4gIEhvd2V2ZXIsIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5s b2FkZWQsCisrdGhvc2UgdHlwZXMgYXJlIGRlZXAgY29waWVkIHRvIGdsb2JhbCBtZW1vcnksIHNv IHRoYXQgdGhlIHZhbHVlcyBvZiB0aGUgdXNlcgorK3ZhcmlhYmxlcyBhbmQgaGlzdG9yeSBpdGVt cyBhcmUgbm90IGxvc3QuICBEdXJpbmcgdGhlIGNvcHkgdGhleSB3aWxsIGdldCB0aGVpcgorK0Bj b2Rle1RZUEVfT0JKRklMRX0gc2V0IHRvIEBjb2Rle05VTEx9IGFuZCBiZWNvbWUgc28tY2FsbGVk IEBkZm57cmVjbGFpbWFibGV9CisrdHlwZXMuCiArCi0rICAgICAgLyogSWYgdGhlIGN1cnJlbnQg c2NvcGUgaXMgZm9sbG93ZWQgYnkgIjo6Iiwgc2tpcCBwYXN0IHRoYXQuICAqLwotKyAgICAgIGlm IChuZXdfc2NvcGVfbGVuICE9IDApCi0rCXsKLSsJICBnZGJfYXNzZXJ0IChzY29wZVtuZXdfc2Nv cGVfbGVuXSA9PSAnOicpOwotKwkgIG5ld19zY29wZV9sZW4gKz0gMjsKLSsJfQotKyAgICAgIG5l d19zY29wZV9sZW4gKz0gY3BfZmluZF9maXJzdF9jb21wb25lbnQgKHNjb3BlICsgbmV3X3Njb3Bl X2xlbik7Ci0rICAgICAgc3ltID0gbG9va3VwX25hbWVzcGFjZV9zY29wZSAobmFtZSwgYmxvY2ss IGRvbWFpbiwgc2NvcGUsIG5ld19zY29wZV9sZW4pOwotKyAgICAgIGlmIChzeW0gIT0gTlVMTCkK LSsJcmV0dXJuIHN5bTsKLSsgICAgfQorK1R5cGVzIHdpdGggbnVsbCBAY29kZXtUWVBFX09CSkZJ TEV9IGNhbiBiZSBlaXRoZXIgcGVybWFuZW50IHR5cGVzCisrKEBweHJlZntCdWlsdGluIFR5cGVz fSkgb3IgcmVjbGFpbWFibGUgdHlwZXMgd2hpY2ggd2lsbCBiZSBkZWFsbG9jYXRlZCBhdCB0aGUK KytmaXJzdCBpZGxlIEB2YWx1ZXtHREJOfSBtb21lbnQgaWYgdGhlIGxhc3Qgb2JqZWN0IHJlZmVy ZW5jaW5nIHRoZW0gaXMgcmVtb3ZlZC4KKytQZXJtYW5lbnQgdHlwZXMgYXJlIGFsbG9jYXRlZCBi eSB0aGUgZnVuY3Rpb24gQGNvZGV7YWxsb2NfdHlwZX0gKGFuZCBpdHMKKytkZXJpdmF0aW9ucyBs aWtlIEBjb2Rle2luaXRfdHlwZX0pIHNwZWNpZnlpbmcgb2JqZmlsZSBhcyBAY29kZXtOVUxMfS4g IFRoZQorK3JlY2xhaW1hYmxlIHR5cGVzIGFyZSBjcmVhdGVkIHRoZSBzYW1lIHdheSBidXQgbW9y ZW92ZXIgdGhleSBuZWVkIHRvIGhhdmUKKytAY29kZXt0eXBlX2luaXRfZ3JvdXB9IGNhbGxlZCB0 byBzdGFydCB0aGVpciB0cmFja2luZyBhcyBiZWluZyBwb3NzaWJseQorK2RlYWxsb2NhdGFibGUu CiArCi0rICAvKiBPa2F5LCB3ZSBkaWRuJ3QgZmluZCBhIG1hdGNoIGluIG91ciBjaGlsZHJlbiwg c28gbG9vayBmb3IgdGhlCi0rICAgICBuYW1lIGluIHRoZSBjdXJyZW50IG5hbWVzcGFjZS4gICov CisrQGZpbmRleCBmcmVlX2FsbF90eXBlcworK1doZW4gQHZhbHVle0dEQk59IGdldHMgaWRsZSBp dCBhbHdheXMgY2FsbHMgdGhlIEBjb2Rle2ZyZWVfYWxsX3R5cGVzfSBmdW5jdGlvbgorK3doaWNo IGRlYWxsb2NhdGVzIGFueSB1bnVzZWQgdHlwZXMuICBBbGwgdHlwZXMgY3VycmVudGx5IG5vdCBv d25lZCBieSBhbgorK29iamZpbGUgbXVzdCBiZSBtYXJrZWQgYXMgdXNlZCBvbiBlYWNoIEBjb2Rl e2ZyZWVfYWxsX3R5cGVzfSBjYWxsIGFzIHRoZXkgd291bGQKKytnZXQgZGVhbGxvY2F0ZWQgYXMg dW51c2VkIG90aGVyd2lzZS4KICsKLSsgIG5hbWVzcGFjZSA9IGFsbG9jYSAoc2NvcGVfbGVuICsg MSk7Ci0rICBzdHJuY3B5IChuYW1lc3BhY2UsIHNjb3BlLCBzY29wZV9sZW4pOwotKyAgbmFtZXNw YWNlW3Njb3BlX2xlbl0gPSAnXDAnOwotKyAgcmV0dXJuIGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFt ZXNwYWNlIChuYW1lc3BhY2UsIG5hbWUsYmxvY2ssIGRvbWFpbik7Ci0gfQorK0Bjb2Rle2ZyZWVf YWxsX3R5cGVzfSBhdXRvbWF0aWNhbGx5IGNoZWNrcyBmb3IgYW55IGNyb3NzLXR5cGUgcmVmZXJl bmNlcyBzdWNoCisrYXMgdGhyb3VnaCBAY29kZXtUWVBFX1RBUkdFVF9UWVBFfSwgQGNvZGV7VFlQ RV9QT0lOVEVSX1RZUEV9IGV0Yy5AOiBhbmQKKytwcmV2ZW50cyBlYXJseSBkZWFsbG9jYXRpb24g Zm9yIGFueSBzdWNoIGV4aXN0aW5nIHJlZmVyZW5jZXMuICBSZWNsYWltYWJsZQorK3R5cGVzIG1h eSByZWZlcmVuY2UgYW55IG90aGVyIHJlY2xhaW1hYmxlIHR5cGVzIG9yIGV2ZW4gcGVybWFuZW50 IHR5cGVzLiAgQnV0CisrcGVybWFuZW50IHR5cGVzIG11c3Qgbm90IHJlZmVyZW5jZSByZWNsYWlt YWJsZSB0eXBlcyAobm9yIGFuIG9iamZpbGUgYXNzb2NpYXRlZAorK3R5cGUpLgogIAotIC8qIExv b2sgdXAgTkFNRSBpbiB0aGUgQysrIG5hbWVzcGFjZSBOQU1FU1BBQ0UuIE90aGVyIGFyZ3VtZW50 cyBhcmUgYXMgaW4KLUBAIC0yNTgsMjUgKzM1MCwyNCBAQCBjcF9sb29rdXBfc3ltYm9sX25vbmxv Y2FsIChjb25zdCBjaGFyICpuYW1lLAotIAotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLSBjcF9s b29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSsJCQkg ICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsJCQkgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaywKLSsJCQkgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLSsKLSAgIGlm IChuYW1lc3BhY2VbMF0gPT0gJ1wwJykKLSAgICAgewotLSAgICAgIHJldHVybiBsb29rdXBfc3lt Ym9sX2ZpbGUgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG9tYWluLCAwKTsKLSsgICAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9m aWxlIChuYW1lLCBibG9jayxkb21haW4sIDApOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0g ICAgICBjaGFyICpjb25jYXRlbmF0ZWRfbmFtZSA9IGFsbG9jYSAoc3RybGVuIChuYW1lc3BhY2Up ICsgMiArCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbiAo bmFtZSsgMSkpOwotKyAgICAgIGNoYXIgKmNvbmNhdGVuYXRlZF9uYW1lCi0rCT0gYWxsb2NhIChz dHJsZW4gKG5hbWVzcGFjZSkgKyAyICsgc3RybGVuIChuYW1lKSArIDEpOwotICAgICAgIHN0cmNw eSAoY29uY2F0ZW5hdGVkX25hbWUsIG5hbWVzcGFjZSk7Ci0gICAgICAgc3RyY2F0IChjb25jYXRl bmF0ZWRfbmFtZSwgIjo6Iik7Ci0gICAgICAgc3RyY2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgbmFt ZSk7Ci0tICAgICAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uY2F0ZW5hdGVkX25hbWUs IGxpbmthZ2VfbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywg ZG9tYWluLGNwX2lzX2Fub255bW91cyAobmFtZXNwYWNlKSk7Ci0rICAgICAgcmV0dXJuIGxvb2t1 cF9zeW1ib2xfZmlsZSAoY29uY2F0ZW5hdGVkX25hbWUsIGJsb2NrLCBkb21haW4sCi0rCQkJCWNw X2lzX2Fub255bW91cyAobmFtZXNwYWNlKSk7Ci0gICAgIH0KLSB9CiAgCi1AQCAtMjkxLDkgKzM4 MiwxNyBAQCByZXNldF9kaXJlY3RpdmVfc2VhcmNoZWQgKHZvaWQgKmRhdGEpCi0gfQorIEBub2Rl IExhbmd1YWdlIFN1cHBvcnQKK2RpZmYgLS1naXQgYS9nZGIvZG9jL29ic2VydmVyLnRleGkgYi9n ZGIvZG9jL29ic2VydmVyLnRleGkKK2luZGV4IGUxOWI4ZWQuLjM0M2UxNjAgMTAwNjQ0CistLS0g YS9nZGIvZG9jL29ic2VydmVyLnRleGkKKysrKyBiL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQorQEAg LTIyMyw2ICsyMjMsMTEgQEAgQnl0ZXMgZnJvbSBAdmFye2RhdGF9IHRvIEB2YXJ7ZGF0YX0gKyBA dmFye2xlbn0gaGF2ZSBiZWVuIHdyaXR0ZW4KKyB0byB0aGUgY3VycmVudCBpbmZlcmlvciBhdCBA dmFye2FkZHJ9LgorIEBlbmQgZGVmdHlwZWZ1bgogIAotIC8qIFNlYXJjaCBmb3IgTkFNRSBieSBh cHBseWluZyBhbGwgaW1wb3J0IHN0YXRlbWVudHMgYmVsb25naW5nCi0tICAgdG8gQkxPQ0sgd2hp Y2ggYXJlIGFwcGxpY2FibGUgaW4gU0NPUEUuCi0rICAgdG8gQkxPQ0sgd2hpY2ggYXJlIGFwcGxp Y2FibGUgaW4gU0NPUEUuIElmIERFQ0xBUkFUSU9OX09OTFkgdGhlIHNlYXJjaAotKyAgIGlzIHJl c3RyaWN0ZWQgdG8gdXNpbmcgZGVjbGFyYXRpb25zLgotKyAgIEV4YW1wbGU6Ci0rCi0rICAgICBu YW1lc3BhY2UgQXsKLSsgICAgICAgaW50IHg7Ci0rICAgICB9Ci0rICAgICB1c2luZyBBOjp4Owot KwotICAgIElmIFNFQVJDSF9QQVJFTlRTIHRoZSBzZWFyY2ggd2lsbCBpbmNsdWRlIGltcG9ydHMg d2hpY2ggYXJlIGFwcGxpY2FibGUgaW4KLS0gICBwYXJlbnRzIG9mIFNDT1BFLgotKyAgIHBhcmVu dHMgb2Ygc2NvcGVzLgotICAgIEV4YW1wbGU6Ci0gCi0gICAgICBuYW1lc3BhY2UgQXsKLUBAIC0z MDcsMjYgKzQwNiwzMyBAQCByZXNldF9kaXJlY3RpdmVfc2VhcmNoZWQgKHZvaWQgKmRhdGEpCi0g ICAgYW5kIFkgd2lsbCBiZSBjb25zaWRlcmVkLiBJZiBTRUFSQ0hfUEFSRU5UUyBpcyBmYWxzZSBv bmx5IHRoZSBpbXBvcnQgb2YgWQotICAgIGlzIGNvbnNpZGVyZWQuICAqLwotIAotLXN0YXRpYyBz dHJ1Y3Qgc3ltYm9sICoKLStzdHJ1Y3Qgc3ltYm9sICoKLSBjcF9sb29rdXBfc3ltYm9sX2ltcG9y dHMgKGNvbnN0IGNoYXIgKnNjb3BlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxpbmth Z2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAq YmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21h aW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgc2VhcmNoX3BhcmVudHMp Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVjbGFyYXRpb25fb25seSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBzZWFyY2hfcGFyZW50cykKLSB7Ci0gICBzdHJ1Y3Qg dXNpbmdfZGlyZWN0ICpjdXJyZW50OwotLSAgc3RydWN0IHN5bWJvbCAqc3ltOwotLSAgaW50IGxl bjsKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7Ci0gICBpbnQgZGlyZWN0aXZlX21hdGNo OwotKyAgaW50IGN1cnJlbnRfbGluZTsKLSAgIHN0cnVjdCBjbGVhbnVwICpzZWFyY2hlZF9jbGVh bnVwOwotIAotLSAgLyogRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBzeW1ib2wgaW4gdGhlIGdpdmVu IG5hbWVzcGFjZS4gICovCi0tICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAo c2NvcGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxvY2ssCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG9tYWluKTsKLS0gIGlmIChzeW0gIT0gTlVMTCkKLSsgIGlmKCFk ZWNsYXJhdGlvbl9vbmx5KQotKyAgICAvKiBGaXJzdCwgdHJ5IHRvIGZpbmQgdGhlIHN5bWJvbCBp biB0aGUgZ2l2ZW4gbmFtZXNwYWNlLiAgKi8KLSsgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9p bl9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBibG9jaywgZG9tYWluKTsKLSsKLSsgIGlmICggc3lt ICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi0rICBpZiAoaGFzX3N0YWNrX2ZyYW1lcyAo KSkKLSsgICAgY3VycmVudF9saW5lID0gZmluZF9wY19saW5lIChnZXRfZnJhbWVfcGMgKGdldF9z ZWxlY3RlZF9mcmFtZSAoTlVMTCkpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwKS5saW5lOwotKyAgZWxzZQotKyAgICBjdXJyZW50X2xpbmUgPSAwOwot KwotICAgLyogR28gdGhyb3VnaCB0aGUgdXNpbmcgZGlyZWN0aXZlcy4gIElmIGFueSBvZiB0aGVt IGFkZCBuZXcKLSAgICAgIG5hbWVzIHRvIHRoZSBuYW1lc3BhY2Ugd2UncmUgc2VhcmNoaW5nIGlu LCBzZWUgaWYgd2UgY2FuIGZpbmQgYQotICAgICAgbWF0Y2ggYnkgYXBwbHlpbmcgdGhlbS4gICov Ci1AQCAtMzM1LDcgKzQ0MSwxMCBAQCBjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGNvbnN0IGNo YXIgKnNjb3BlLAotICAgICAgICBjdXJyZW50ICE9IE5VTEw7Ci0gICAgICAgIGN1cnJlbnQgPSBj dXJyZW50LT5uZXh0KQotICAgICB7Ci0tICAgICAgbGVuID0gc3RybGVuIChjdXJyZW50LT5pbXBv cnRfZGVzdCk7Ci0rICAKLSsgICAgICAvKiBJZiB0aGUgaW1wb3J0IGRlc3RpbmF0aW9uIGlzIHRo ZSBjdXJyZW50IHNjb3BlIG9yIG9uZSBvZiBpdHMgYW5jZXN0b3JzIHRoZW4KLSsgICAgICAgICBp dCBpcyBhcHBsaWNhYmxlLiAgKi8KLSsgICAgICBpbnQgbGVuID0gc3RybGVuIChjdXJyZW50LT5p bXBvcnRfZGVzdCk7Ci0gICAgICAgZGlyZWN0aXZlX21hdGNoID0gKHNlYXJjaF9wYXJlbnRzCi0g ICAgICAgICAgICAgICAgICAgICAgICAgID8gKHN0cm5jbXAgKHNjb3BlLCBjdXJyZW50LT5pbXBv cnRfZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuIChj dXJyZW50LT5pbXBvcnRfZGVzdCkpID09IDAKLUBAIC0zNDMsMTMwICs0NTIsNzAgQEAgY3BfbG9v a3VwX3N5bWJvbF9pbXBvcnRzIChjb25zdCBjaGFyICpzY29wZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHx8IHNjb3BlW2xlbl0gPT0gJzonIHx8IHNjb3BlW2xlbl0gPT0gJ1ww JykpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RyY21wIChzY29wZSwgY3VycmVudC0+ aW1wb3J0X2Rlc3QpID09IDApOwotIAotLSAgICAgIC8qIElmIHRoZSBpbXBvcnQgZGVzdGluYXRp b24gaXMgdGhlIGN1cnJlbnQgc2NvcGUgb3Igb25lIG9mIGl0cyBhbmNlc3RvcnMgdGhlbgotLSAg ICAgICAgIGl0IGlzIGFwcGxpY2FibGUuICAqLwotLSAgICAgIGlmIChkaXJlY3RpdmVfbWF0Y2gg JiYgIWN1cnJlbnQtPnNlYXJjaGVkKQotKyAgICAgIGlmIChkaXJlY3RpdmVfbWF0Y2ggJiYKLSsg ICAgICAgICAgY3VycmVudC0+bGluZV9udW1iZXIgPCBjdXJyZW50X2xpbmUgJiYKLSsgICAgICAg ICAgIWN1cnJlbnQtPnNlYXJjaGVkKQotIAl7Ci0tCS8qIE1hcmsgdGhpcyBpbXBvcnQgYXMgc2Vh cmNoZWQgc28gdGhhdCB0aGUgcmVjdXJzaXZlIGNhbGwgZG9lcyBub3QKLS0gICAgICAgICAgIHNl YXJjaCBpdCBhZ2Fpbi4gICovCi0tCWN1cnJlbnQtPnNlYXJjaGVkID0gMTsKLS0Jc2VhcmNoZWRf Y2xlYW51cCA9IG1ha2VfY2xlYW51cCAocmVzZXRfZGlyZWN0aXZlX3NlYXJjaGVkLCBjdXJyZW50 KTsKLS0KLS0JaWYgKGN1cnJlbnQtPmFsaWFzICE9IE5VTEwgJiYgc3RyY21wIChuYW1lLCBjdXJy ZW50LT5hbGlhcykgPT0gMCkKLS0JICAvKiBJZiB0aGUgaW1wb3J0IGlzIGNyZWF0aW5nIGFuIGFs aWFzIGFuZCB0aGUgYWxpYXMgbWF0Y2hlcyB0aGUKLS0JICAgICBzb3VnaHQgbmFtZS4gIFBhc3Mg Y3VycmVudC0+aW1wb3J0X3NyYyBhcyB0aGUgTkFNRSB0byBkaXJlY3QgdGhlCi0tCSAgICAgc2Vh cmNoIHRvd2FyZHMgdGhlIGFsaWFzZWQgbmFtZXNwYWNlLiAgKi8KLS0JICB7Ci0rCSAgY3VycmVu dC0+c2VhcmNoZWQgPSAxOwotKwkgIHNlYXJjaGVkX2NsZWFudXAgPSBtYWtlX2NsZWFudXAgKHJl c2V0X2RpcmVjdGl2ZV9zZWFyY2hlZCwgY3VycmVudCk7Ci0rCi0rCSAgLyogSWYgdGhlcmUgaXMg YW4gaW1wb3J0IG9mIGEgc2luZ2xlIGRlY2xhcmF0aW9uLCBjb21wYXJlIHRoZSBpbXBvcnRlZAot KwkgICAgIGRlY2xhcmF0aW9uIHdpdGggdGhlIHNvdWdodCBvdXQgbmFtZS4gSWYgdGhlcmUgaXMg YSBtYXRjaCBwYXNzCi0rCSAgICAgY3VycmVudC0+aW1wb3J0X3NyYyBhcyBOQU1FU1BBQ0UgdG8g ZGlyZWN0IHRoZSBzZWFyY2ggdG93YXJkcyB0aGUKLSsJICAgICBpbXBvcnRlZCBuYW1lc3BhY2Uu ICAqLwotKwkgIGlmIChzdHJjbXAgKCIiLCBjdXJyZW50LT5kZWNsYXJhdGlvbikgIT0gMCkKLSsJ ICAgIHsKLSsJICAgIGlmIChzdHJjbXAgKG5hbWUsIGN1cnJlbnQtPmRlY2xhcmF0aW9uKSA9PSAw KQotKwkgICAgICB7Ci0rCSAgICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNl IChjdXJyZW50LT5pbXBvcnRfc3JjLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmFtZSwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJsb2NrLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG9tYWluKTsKLSsJICAgICAgfQorK0BkZWZ0eXBlZnVuIHZvaWQgbWFya191c2VkICh2b2lk KQorK01hcmsgYW55IHBvc3NpYmx5IHJlY2xhaW1hYmxlIG9iamVjdHMgYXMgdXNlZCBkdXJpbmcg YSBtYXJrLWFuZC1zd2VlcCBnYXJiYWdlCisrY29sbGVjdG9yIHBhc3MuICBDdXJyZW50bHkgb25s eSBAY29kZXt0eXBlX21hcmtfdXNlZH0gbWFya2VyIGlzIHN1cHBvcnRlZC4KKytAZW5kIGRlZnR5 cGVmdW4KICsKLSsJICAgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKLSsJICAgIGlmIChzeW0pCi0r CSAgICAgIHJldHVybiBzeW07CisgQGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25vdGlmaWNhdGlvbiAo aW50IEB2YXJ7c29tZWFyZ30pCisgVGhpcyBvYnNlcnZlciBpcyB1c2VkIGZvciBpbnRlcm5hbCB0 ZXN0aW5nLiAgRG8gbm90IHVzZS4gIAorIFNlZSB0ZXN0c3VpdGUvZ2RiLmdkYi9vYnNlcnZlci5l eHAuCitkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuYyBiL2dkYi9kd2FyZjJleHByLmMKK2lu ZGV4IGI5YWUxMDguLjI1NTU5MDggMTAwNjQ0CistLS0gYS9nZGIvZHdhcmYyZXhwci5jCisrKysg Yi9nZGIvZHdhcmYyZXhwci5jCitAQCAtODc1LDYgKzg3NSwxMyBAQCBleGVjdXRlX3N0YWNrX29w IChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCisgCSAgY3R4LT5kd2FyZl9jYWxsIChj dHgsIHJlc3VsdCk7CisgCSAgZ290byBub19wdXNoOworIAorKwljYXNlIERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3M6CisrCSAgaWYgKGN0eC0+Z2V0X29iamVjdF9hZGRyZXNzID09IE5VTEwpCisr CSAgICBlcnJvciAoXygiRFdBUkYtMiBleHByZXNzaW9uIGVycm9yOiBEV19PUF9wdXNoX29iamVj dF9hZGRyZXNzIG11c3QgIgorKwkgICAgICAgICAgICJoYXZlIGEgdmFsdWUgdG8gcHVzaC4iKSk7 CisrCSAgcmVzdWx0ID0gKGN0eC0+Z2V0X29iamVjdF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7Cisr CSAgYnJlYWs7CiArCi0rCSAgICBjb250aW51ZTsKLSsJICAgIH0KLSsJICAgCi0rCSAgaWYgKGRl Y2xhcmF0aW9uX29ubHkpCi0rCSAgICB7Ci0rCSAgICBjdXJyZW50LT5zZWFyY2hlZCA9IDA7Ci0r CSAgICBkaXNjYXJkX2NsZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsKLSsJICAgIGNvbnRpbnVl OwotKwkgICAgfQotKwotKwkgIGlmIChjdXJyZW50LT5hbGlhcyAhPSBOVUxMICYmIHN0cmNtcCAo bmFtZSwgY3VycmVudC0+YWxpYXMpID09IDApCi0rCSAgICAvKiBJZiB0aGUgaW1wb3J0IGlzIGNy ZWF0aW5nIGFuIGFsaWFzIGFuZCB0aGUgYWxpYXMgbWF0Y2hlcyB0aGUKLSsJICAgICAgIHNvdWdo dCBuYW1lLiBQYXNzIGN1cnJlbnQtPmlubmVyIGFzIHRoZSBOQU1FIHRvIGRpcmVjdCB0aGUKLSsJ ICAgICAgIHNlYXJjaCB0b3dhcmRzIHRoZSBhbGlhc2VkIG5hbWVzcGFjZSAqLwotKwkgICAgewot IAkgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLAotIAkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPmltcG9ydF9zcmMs Ci0tCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua2FnZV9uYW1l LAotIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotIAkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7Ci0tCSAgfQot LQllbHNlIGlmIChjdXJyZW50LT5hbGlhcyA9PSBOVUxMKQotLQkgIHsKLSsJICAgIH0gZWxzZSBp ZiAoY3VycmVudC0+YWxpYXMgPT0gTlVMTCl7Ci0gCSAgICAvKiBJZiB0aGlzIGltcG9ydCBzdGF0 ZW1lbnQgY3JlYXRlcyBubyBhbGlhcywgcGFzcyBjdXJyZW50LT5pbm5lciBhcwotLSAgICAgICAg ICAgICAgIE5BTUVTUEFDRSB0byBkaXJlY3QgdGhlIHNlYXJjaCB0b3dhcmRzIHRoZSBpbXBvcnRl ZCBuYW1lc3BhY2UuICAqLwotLQkgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRzIChj dXJyZW50LT5pbXBvcnRfc3JjLAotLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW1lLAotLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rYWdlX25h bWUsCi0tCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotLQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4sCi0tCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDApOwotLQkgIH0KLS0JY3VycmVudC0+c2VhcmNoZWQgPSAw OwotLQlkaXNjYXJkX2NsZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsKLS0KLS0JaWYgKHN5bSAh PSBOVUxMKQotLQkgIHJldHVybiBzeW07Ci0tCX0KLS0gICAgfQotLQotLSAgcmV0dXJuIE5VTEw7 Ci0tfQotLQotLSAvKiBTZWFyY2hlcyBmb3IgTkFNRSBpbiB0aGUgY3VycmVudCBuYW1lc3BhY2Us IGFuZCBieSBhcHBseWluZyByZWxldmFudCBpbXBvcnQKLS0gICAgc3RhdGVtZW50cyBiZWxvbmdp bmcgdG8gQkxPQ0sgYW5kIGl0cyBwYXJlbnRzLiBTQ09QRSBpcyB0aGUgbmFtZXNwYWNlIHNjb3Bl Ci0tICAgIG9mIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBzZWFyY2ggaXMgYmVpbmcgZXZhbHVh dGVkLiAgKi8KLS0KLS1zdHJ1Y3Qgc3ltYm9sKgotLWNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNl IChjb25zdCBjaGFyICpzY29wZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbGlu a2FnZV9uYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51 bSBkb21haW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBzZWFyY2hf cGFyZW50cykKLS17Ci0tICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0tCi0tICAvKiBTZWFyY2ggZm9y IG5hbWUgaW4gbmFtZXNwYWNlcyBpbXBvcnRlZCB0byB0aGlzIGFuZCBwYXJlbnQgYmxvY2tzLiAg Ki8KLS0gIHdoaWxlIChibG9jayAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgc3ltID0gY3BfbG9v a3VwX3N5bWJvbF9pbXBvcnRzIChzY29wZSwgbmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9t YWluLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX3BhcmVu dHMpOwotLQotLSAgICAgIGlmIChzeW0pCi0tCXJldHVybiBzeW07Ci0tCi0tICAgICAgYmxvY2sg PSBCTE9DS19TVVBFUkJMT0NLIChibG9jayk7Ci0tICAgIH0KLS0KLS0gIHJldHVybiBOVUxMOwot LX0KLS0KLS0vKiBMb29rdXAgTkFNRSBhdCBuYW1lc3BhY2Ugc2NvcGUgKG9yLCBpbiBDIHRlcm1z LCBpbiBzdGF0aWMgYW5kCi0tICAgZ2xvYmFsIHZhcmlhYmxlcykuICBTQ09QRSBpcyB0aGUgbmFt ZXNwYWNlIHRoYXQgdGhlIGN1cnJlbnQKLS0gICBmdW5jdGlvbiBpcyBkZWZpbmVkIHdpdGhpbjsg b25seSBjb25zaWRlciBuYW1lc3BhY2VzIHdob3NlIGxlbmd0aAotLSAgIGlzIGF0IGxlYXN0IFND T1BFX0xFTi4gIE90aGVyIGFyZ3VtZW50cyBhcmUgYXMgaW4KLS0gICBjcF9sb29rdXBfc3ltYm9s X25vbmxvY2FsLgotLQotLSAgIEZvciBleGFtcGxlLCBpZiB3ZSdyZSB3aXRoaW4gYSBmdW5jdGlv biBBOjpCOjpmIGFuZCBsb29raW5nIGZvciBhCi0tICAgc3ltYm9sIHgsIHRoaXMgd2lsbCBnZXQg Y2FsbGVkIHdpdGggTkFNRSA9ICJ4IiwgU0NPUEUgPSAiQTo6QiIsIGFuZAotLSAgIFNDT1BFX0xF TiA9IDAuICBJdCB0aGVuIGNhbGxzIGl0c2VsZiB3aXRoIE5BTUUgYW5kIFNDT1BFIHRoZSBzYW1l LAotLSAgIGJ1dCB3aXRoIFNDT1BFX0xFTiA9IDEuICBBbmQgdGhlbiBpdCBjYWxscyBpdHNlbGYg d2l0aCBOQU1FIGFuZAotLSAgIFNDT1BFIHRoZSBzYW1lLCBidXQgd2l0aCBTQ09QRV9MRU4gPSA0 LiAgVGhpcyB0aGlyZCBjYWxsIGxvb2tzIGZvcgotLSAgICJBOjpCOjp4IjsgaWYgaXQgZG9lc24n dCBmaW5kIGl0LCB0aGVuIHRoZSBzZWNvbmQgY2FsbCBsb29rcyBmb3IKLS0gICAiQTo6eCIsIGFu ZCBpZiB0aGF0IGNhbGwgZmFpbHMsIHRoZW4gdGhlIGZpcnN0IGNhbGwgbG9va3MgZm9yCi0tICAg IngiLiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0tbG9va3VwX25hbWVzcGFjZV9z Y29wZSAoY29uc3QgY2hhciAqbmFtZSwKLS0JCQljb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0t CQkJY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLS0JCQljb25zdCBkb21haW5fZW51bSBkb21h aW4sCi0tCQkJY29uc3QgY2hhciAqc2NvcGUsCi0tCQkJaW50IHNjb3BlX2xlbikKLS17Ci0tICBj aGFyICpuYW1lc3BhY2U7Ci0tCi0tICBpZiAoc2NvcGVbc2NvcGVfbGVuXSAhPSAnXDAnKQotLSAg ICB7Ci0tICAgICAgLyogUmVjdXJzaXZlbHkgc2VhcmNoIGZvciBuYW1lcyBpbiBjaGlsZCBuYW1l c3BhY2VzIGZpcnN0LiAgKi8KLSsJICAgICAgIE5BTUVTUEFDRSB0byBkaXJlY3QgdGhlIHNlYXJj aCB0b3dhcmRzIHRoZSBpbXBvcnRlZCBuYW1lc3BhY2UuICovCi0rCSAgICAgIHN5bSA9IGNwX2xv b2t1cF9zeW1ib2xfaW1wb3J0cyAoY3VycmVudC0+aW1wb3J0X3NyYywKLSsJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAotKwkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJsb2NrLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRvbWFpbiwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw LAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotKwkgICAgfQot IAotLSAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLS0gICAgICBpbnQgbmV3X3Njb3BlX2xlbiA9 IHNjb3BlX2xlbjsKLSsJICBjdXJyZW50LT5zZWFyY2hlZCA9IDA7Ci0rCSAgZGlzY2FyZF9jbGVh bnVwcyAoc2VhcmNoZWRfY2xlYW51cCk7Ci0gCi0tICAgICAgLyogSWYgdGhlIGN1cnJlbnQgc2Nv cGUgaXMgZm9sbG93ZWQgYnkgIjo6Iiwgc2tpcCBwYXN0IHRoYXQuICAqLwotLSAgICAgIGlmIChu ZXdfc2NvcGVfbGVuICE9IDApCi0tCXsKLS0JICBnZGJfYXNzZXJ0IChzY29wZVtuZXdfc2NvcGVf bGVuXSA9PSAnOicpOwotLQkgIG5ld19zY29wZV9sZW4gKz0gMjsKLSsJICBpZiAoc3ltICE9IE5V TEwpCi0rCSAgICByZXR1cm4gc3ltOworIAlkZWZhdWx0OgorIAkgIGVycm9yIChfKCJVbmhhbmRs ZWQgZHdhcmYgZXhwcmVzc2lvbiBvcGNvZGUgMHgleCIpLCBvcCk7CiAgCX0KLS0gICAgICBuZXdf c2NvcGVfbGVuICs9IGNwX2ZpbmRfZmlyc3RfY29tcG9uZW50IChzY29wZSArIG5ld19zY29wZV9s ZW4pOwotLSAgICAgIHN5bSA9IGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKG5hbWUsIGxpbmthZ2Vf bmFtZSwgYmxvY2ssCi0tCQkJCSAgICBkb21haW4sIHNjb3BlLCBuZXdfc2NvcGVfbGVuKTsKLS0g ICAgICBpZiAoc3ltICE9IE5VTEwpCi0tCXJldHVybiBzeW07Ci0gICAgIH0KLSAKLS0gIC8qIE9r YXksIHdlIGRpZG4ndCBmaW5kIGEgbWF0Y2ggaW4gb3VyIGNoaWxkcmVuLCBzbyBsb29rIGZvciB0 aGUKLS0gICAgIG5hbWUgaW4gdGhlIGN1cnJlbnQgbmFtZXNwYWNlLiAgKi8KLS0KLS0gIG5hbWVz cGFjZSA9IGFsbG9jYSAoc2NvcGVfbGVuICsgMSk7Ci0tICBzdHJuY3B5IChuYW1lc3BhY2UsIHNj b3BlLCBzY29wZV9sZW4pOwotLSAgbmFtZXNwYWNlW3Njb3BlX2xlbl0gPSAnXDAnOwotLSAgcmV0 dXJuIGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChuYW1lc3BhY2UsIG5hbWUsIGxpbmth Z2VfbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ss IGRvbWFpbik7Ci0rICByZXR1cm4gTlVMTDsKLSB9CitkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4 cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKK2luZGV4IDYxYjhmMDAuLmQ5NGMwM2MgMTAwNjQ0Cist LS0gYS9nZGIvZHdhcmYyZXhwci5oCisrKysgYi9nZGIvZHdhcmYyZXhwci5oCitAQCAtMTA4LDkg KzEwOCwxNSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0CisgI2lmIDAKKyAgIC8qIE5vdCB5 ZXQgaW1wbGVtZW50ZWQuICAqLworIAorKyAgLyogUmV0dXJuIHRoZSBsb2NhdGlvbiBleHByZXNz aW9uIGZvciB0aGUgZHdhcmYgZXhwcmVzc2lvbgorKyAgICAgc3Vicm91dGluZSBpbiB0aGUgZGll IGF0IE9GRlNFVCBpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LgorKyAgICAgVGhlIHJl c3VsdCBtdXN0IGJlIGxpdmUgdW50aWwgdGhlIGN1cnJlbnQgZXhwcmVzc2lvbiBldmFsdWF0aW9u CisrICAgICBpcyBjb21wbGV0ZS4gICovCisrICB1bnNpZ25lZCBjaGFyICooKmdldF9zdWJyKSAo dm9pZCAqYmF0b24sIG9mZl90IG9mZnNldCwgc2l6ZV90ICpsZW5ndGgpOworKyNlbmRpZgorKwor ICAgLyogUmV0dXJuIHRoZSBgb2JqZWN0IGFkZHJlc3MnIGZvciBEV19PUF9wdXNoX29iamVjdF9h ZGRyZXNzLiAgKi8KKyAgIENPUkVfQUREUiAoKmdldF9vYmplY3RfYWRkcmVzcykgKHZvaWQgKmJh dG9uKTsKKy0jZW5kaWYKICAKLSAvKiBMb29rIHVwIE5BTUUgaW4gQkxPQ0sncyBzdGF0aWMgYmxv Y2sgYW5kIGluIGdsb2JhbCBibG9ja3MuICBJZgotQEAgLTQ3NiwxNyArNTI1LDE1IEBAIGxvb2t1 cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCisgICAvKiBUaGUgY3VycmVudCBk ZXB0aCBvZiBkd2FyZiBleHByZXNzaW9uIHJlY3Vyc2lvbiwgdmlhIERXX09QX2NhbGwqLAorICAg ICAgRFdfT1BfZmJyZWcsIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MsIGV0Yy4sIGFuZCB0aGUg bWF4aW11bQorZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwor aW5kZXggMmE4ZTU1Ny4uYmU3NDQxMiAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuYworKysr IGIvZ2RiL2R3YXJmMmxvYy5jCitAQCAtNDgsNiArNDgsMTIgQEAgc3RhdGljIHZvaWQKKyBkd2Fy Zl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIg cGMsCisgCQkJIGNvbnN0IGdkYl9ieXRlICoqc3RhcnQsIHNpemVfdCAqbGVuZ3RoKTsKICAKLSBz dGF0aWMgc3RydWN0IHN5bWJvbCAqCi0gbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFyICpu YW1lLAotLQkJICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCSAgICBjb25zdCBzdHJ1 Y3QgYmxvY2sgKmJsb2NrLAotIAkJICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLSAJCSAg ICBpbnQgYW5vbnltb3VzX25hbWVzcGFjZSkKKytzdGF0aWMgc3RydWN0IHZhbHVlICpkd2FyZjJf ZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCB0eXBlICp0eXBlLAorKwkJCQkJICAgICAgIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkJCSAgICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwK KysJCQkJCSAgICAgICB1bnNpZ25lZCBzaG9ydCBzaXplLAorKwkJCQkJICAgICBzdHJ1Y3QgZHdh cmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpOworKworIC8qIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBk ZWFsaW5nIHdpdGggbG9jYXRpb24gbGlzdHMuICBHaXZlbiBhCisgICAgc3ltYm9sIGJhdG9uIChC QVRPTikgYW5kIGEgcGMgdmFsdWUgKFBDKSwgZmluZCB0aGUgYXBwcm9wcmlhdGUKKyAgICBsb2Nh dGlvbiBleHByZXNzaW9uLCBzZXQgKkxPQ0VYUFJfTEVOR1RILCBhbmQgcmV0dXJuIGEgcG9pbnRl cgorQEAgLTEyNyw2ICsxMzMsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgogIHsKLSAgIHN0 cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7CisgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7Cisg ICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3U7CisrICAvKiBGcm9tIERXX1RBR192 YXJpYWJsZSdzIERXX0FUX2xvY2F0aW9uIChub3QgRFdfVEFHX3R5cGUncworKyAgICAgRFdfQVRf ZGF0YV9sb2NhdGlvbikgZm9yIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworKyAgQ09S RV9BRERSIG9iamVjdF9hZGRyZXNzOworIH07CiAgCi0tICBzeW0gPSBsb29rdXBfc3ltYm9sX3N0 YXRpYyAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1 cF9zeW1ib2xfc3RhdGljIChuYW1lLCBibG9jaywgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVM TCkKLSAgICAgcmV0dXJuIHN5bTsKLS0KLSAgIGlmIChhbm9ueW1vdXNfbmFtZXNwYWNlKQotICAg ICB7Ci0gICAgICAgLyogU3ltYm9scyBkZWZpbmVkIGluIGFub255bW91cyBuYW1lc3BhY2VzIGhh dmUgZXh0ZXJuYWwgbGlua2FnZQotQEAgLTQ5NiwxMiArNTQzLDExIEBAIGxvb2t1cF9zeW1ib2xf ZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmdsb2Jh bF9ibG9jayA9IGJsb2NrX2dsb2JhbF9ibG9jayAoYmxvY2spOwotICAgICAgIAotICAgICAgIGlm IChnbG9iYWxfYmxvY2sgIT0gTlVMTCkKLS0Jc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sg KG5hbWUsIGxpbmthZ2VfbmFtZSwgZ2xvYmFsX2Jsb2NrLAotLQkJCQkgICAgICAgZG9tYWluKTsK LSsJc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIGdsb2JhbF9ibG9jaywgZG9t YWluKTsKKyAvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2Mu ICAqLworQEAgLTE5NSwyMyArMjA0LDMzIEBAIGR3YXJmX2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1 Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKKyAgICAgICBzeW1iYXRvbiA9IFNZ TUJPTF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKKyAgICAgICAqc3RhcnQgPSBmaW5kX2xv Y2F0aW9uX2V4cHJlc3Npb24gKHN5bWJhdG9uLCBsZW5ndGgsIHBjKTsKICAgICAgfQotICAgZWxz ZQorLSAgZWxzZQorKyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoZnJhbWVmdW5jKSA9 PSAmZHdhcmYyX2xvY2V4cHJfZnVuY3MpCiAgICAgIHsKLS0gICAgICBzeW0gPSBsb29rdXBfc3lt Ym9sX2dsb2JhbCAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgICAgICBz eW0gPSBsb29rdXBfc3ltYm9sX2dsb2JhbCAobmFtZSwgYmxvY2ssIGRvbWFpbik7Ci0gICAgIH0K KyAgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKnN5bWJhdG9uOwogIAotICAgaWYg KHN5bSAhPSBOVUxMKQotQEAgLTUyMiw2ICs1NjgsNyBAQCBsb29rdXBfc3ltYm9sX2ZpbGUgKGNv bnN0IGNoYXIgKm5hbWUsCi0gICAgICAgc3ltID0gbG9va3VwX3Bvc3NpYmxlX25hbWVzcGFjZV9z eW1ib2wgKG5hbWUpOwotICAgICAgIGlmIChzeW0gIT0gTlVMTCkKLSAJcmV0dXJuIHN5bTsKLSsK KyAgICAgICBzeW1iYXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKKy0g ICAgICBpZiAoc3ltYmF0b24gIT0gTlVMTCkKKy0JeworLQkgICpsZW5ndGggPSBzeW1iYXRvbi0+ c2l6ZTsKKy0JICAqc3RhcnQgPSBzeW1iYXRvbi0+ZGF0YTsKKy0JfQorLSAgICAgIGVsc2UKKy0J KnN0YXJ0ID0gTlVMTDsKKysgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiAhPSBOVUxMKTsKKysg ICAgICAqc3RhcnQgPSBzeW1iYXRvbi0+ZGF0YTsKKysgICAgICAqbGVuZ3RoID0gc3ltYmF0b24t PnNpemU7CiAgICAgIH0KKysgIGVsc2UgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKGZyYW1lZnVu YykgPT0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzKQorKyAgICB7CisrICAgICAgc3RydWN0IGR3YXJm Ml9sb2NleHByX2JhdG9uICpzeW1iYXRvbjsKKysKKysgICAgICBzeW1iYXRvbiA9IFNZTUJPTF9M T0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKKysgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiA9 PSBOVUxMKTsKKysgICAgICAqc3RhcnQgPSBOVUxMOworKyAgICAgICpsZW5ndGggPSAwOwkvKiB1 bnVzZWQgKi8KKysgICAgfQorKyAgZWxzZQorKyAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18s IF9fTElORV9fLAorKwkJICAgIF8oIlVuc3VwcG9ydGVkIFNZTUJPTF9DT01QVVRFRF9PUFMgJXAg Zm9yIFwiJXNcIiIpLAorKwkJICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKGZyYW1lZnVuYyksCisr CQkgICAgU1lNQk9MX1BSSU5UX05BTUUgKGZyYW1lZnVuYykpOwogIAotICAgcmV0dXJuIE5VTEw7 Ci1AQCAtNTUwLDEwICs1OTcsOSBAQCBjcF9sb29rdXBfbmVzdGVkX3R5cGUgKHN0cnVjdCB0eXBl ICpwYXJlbnRfdHlwZSwKLSAKLSAJY29uc3QgY2hhciAqcGFyZW50X25hbWUgPSBUWVBFX1RBR19O QU1FIChwYXJlbnRfdHlwZSk7Ci0gCXN0cnVjdCBzeW1ib2wgKnN5bSA9IGNwX2xvb2t1cF9zeW1i b2xfaW5fbmFtZXNwYWNlIChwYXJlbnRfbmFtZSwKLS0JICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZF9uYW1lLAotLQkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLS0JICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotLQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSX0RPTUFJ Tik7Ci0rCQkJCQkJCSBuZXN0ZWRfbmFtZSwKLSsJCQkJCQkJIGJsb2NrLAotKwkJCQkJCQkgVkFS X0RPTUFJTik7Ci0gCWlmIChzeW0gPT0gTlVMTCB8fCBTWU1CT0xfQ0xBU1MgKHN5bSkgIT0gTE9D X1RZUEVERUYpCi0gCSAgcmV0dXJuIE5VTEw7Ci0gCWVsc2UKLUBAIC03OTcsNyArODQzLDcgQEAg Y2hlY2tfb25lX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGlu dCBsZW4sCi0gCi0gICBtZW1jcHkgKG5hbWVfY29weSwgbmFtZSwgbGVuKTsKLSAgIG5hbWVfY29w eVtsZW5dID0gJ1wwJzsKLS0gIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1l X2NvcHksIE5VTEwsIFZBUl9ET01BSU4pOwotKyAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAo YmxvY2ssIG5hbWVfY29weSwgVkFSX0RPTUFJTik7Ci0gCi0gICBpZiAoc3ltID09IE5VTEwpCi0g ICAgIHsKLUBAIC04MzgsNyArODg0LDcgQEAgbG9va3VwX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1i b2wgKGNvbnN0IGNoYXIgKm5hbWUpCi0gICAgICAgc3RydWN0IHN5bWJvbCAqc3ltOwotIAotICAg ICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGdldF9wb3NzaWJsZV9uYW1lc3BhY2VfYmxv Y2sgKG9iamZpbGUpLAotLQkJCQkgbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7Ci0rCQkJCSBuYW1l LCBWQVJfRE9NQUlOKTsKLSAKLSAgICAgICBpZiAoc3ltICE9IE5VTEwpCi0gCXJldHVybiBzeW07 Ci1kaWZmIC0tZ2l0IGEvZ2RiL2NwLXN1cHBvcnQuYyBiL2dkYi9jcC1zdXBwb3J0LmMKLWluZGV4 IGMzMWZjZmYuLjhjNWQ1NmYgMTAwNjQ0Ci0tLS0gYS9nZGIvY3Atc3VwcG9ydC5jCi0rKysgYi9n ZGIvY3Atc3VwcG9ydC5jCi1AQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgdm9pZCBkZW1hbmdsZWRf bmFtZV9jb21wbGFpbnQgKGNvbnN0IGNoYXIgKm5hbWUpOwotIAotIC8qIEZ1bmN0aW9ucy92YXJp YWJsZXMgcmVsYXRlZCB0byBvdmVybG9hZCByZXNvbHV0aW9uLiAgKi8KLSAKLS1zdGF0aWMgaW50 IHN5bV9yZXR1cm5fdmFsX3NpemU7Ci0rc3RhdGljIGludCBzeW1fcmV0dXJuX3ZhbF9zaXplID0g LTE7Ci0gc3RhdGljIGludCBzeW1fcmV0dXJuX3ZhbF9pbmRleDsKLSBzdGF0aWMgc3RydWN0IHN5 bWJvbCAqKnN5bV9yZXR1cm5fdmFsOwotIAotQEAgLTE5MCw3ICsxOTAsOCBAQCBtYW5nbGVkX25h bWVfdG9fY29tcCAoY29uc3QgY2hhciAqbWFuZ2xlZF9uYW1lLCBpbnQgb3B0aW9ucywKLSAgIHJl dHVybiByZXQ7CisgICBpZiAoKnN0YXJ0ID09IE5VTEwpCisgICAgIGVycm9yIChfKCJDb3VsZCBu b3QgZmluZCB0aGUgZnJhbWUgYmFzZSBmb3IgXCIlc1wiLiIpLAorLQkgICBTWU1CT0xfTkFUVVJB TF9OQU1FIChmcmFtZWZ1bmMpKTsKKysJICAgU1lNQk9MX1BSSU5UX05BTUUgKGZyYW1lZnVuYykp OwogIH0KICAKLS0vKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGNvbnRhaW5pbmcgbWV0 aG9kIFBIWVNOQU1FLiAgKi8KLSsvKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIG5h bWVzcGFjZSBjb250YWluaW5nCi0rICAgZnVuY3Rpb24sIG1ldGhvZCwgb3IgdmFyaWFibGUgUEhZ U05BTUUuICAqLwotIAotIGNoYXIgKgotIGNwX2NsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAoY29u c3QgY2hhciAqcGh5c25hbWUpCi1AQCAtNzExLDYgKzcxMiw4MiBAQCBtYWtlX3N5bWJvbF9vdmVy bG9hZF9saXN0IChjb25zdCBjaGFyICpmdW5jX25hbWUsCi0gCi0gICByZXR1cm4gc3ltX3JldHVy bl92YWw7CisgLyogSGVscGVyIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2Mu ICBDb21wdXRlcyB0aGUgQ0ZBIGZvcgorQEAgLTI2Myw2ICsyODIsMTU4IEBAIGR3YXJmX2V4cHJf ZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBzaXplX3QgZGllX29m ZnNldCkKKyAgIHJldHVybiBwZXJfY3VfZHdhcmZfY2FsbCAoY3R4LCBkaWVfb2Zmc2V0LCBkZWJh dG9uLT5wZXJfY3UpOwogIH0KLSsvKiBBZGRzIHRoZSBmdW5jdGlvbiBGVU5DX05BTUUgZnJvbSBO QU1FU1BBQ0UgdG8gdGhlIG92ZXJsb2FkIHNldC4gICovCisgCisrc3RhdGljIENPUkVfQUREUgor K2R3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3MgKHZvaWQgKmJhdG9uKQorK3sKKysgIHN0cnVjdCBk d2FyZl9leHByX2JhdG9uICpkZWJhdG9uID0gYmF0b247CisrCisrICAvKiBUaGUgbWVzc2FnZSBp cyBzdXBwcmVzc2VkIGluIERXQVJGX0JMT0NLX0VYRUMuICAqLworKyAgaWYgKGRlYmF0b24tPm9i amVjdF9hZGRyZXNzID09IDApCisrICAgIGVycm9yIChfKCJDYW5ub3QgcmVzb2x2ZSBEV19PUF9w dXNoX29iamVjdF9hZGRyZXNzIGZvciBhIG1pc3Npbmcgb2JqZWN0IikpOworKworKyAgcmV0dXJu IGRlYmF0b24tPm9iamVjdF9hZGRyZXNzOworK30KKysKKysvKiBBZGRyZXNzIG9mIHRoZSB2YXJp YWJsZSB3ZSBhcmUgY3VycmVudGx5IHJlZmVycmluZyB0by4gIEl0IGlzIHNldCBmcm9tCisrICAg RFdfVEFHX3ZhcmlhYmxlJ3MgRFdfQVRfbG9jYXRpb24gKG5vdCBEV19UQUdfdHlwZSdzIERXX0FU X2RhdGFfbG9jYXRpb24pIGZvcgorKyAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLwor KworK3N0YXRpYyBDT1JFX0FERFIgb2JqZWN0X2FkZHJlc3M7CisrCisrLyogQ2FsbGVycyB1c2Ug b2JqZWN0X2FkZHJlc3Nfc2V0IHdoaWxlIHRoZWlyIGNhbGxlcnMgdXNlIHRoZSByZXN1bHQgc2V0 IHNvIHdlCisrICAgY2Fubm90IHJ1biB0aGUgY2xlYW51cCBhdCB0aGUgbG9jYWwgYmxvY2sgb2Yg b3VyIGRpcmVjdCBjYWxsZXIuICBTdGlsbCB3ZQorKyAgIHNob3VsZCByZXNldCBPQkpFQ1RfQURE UkVTUyBhdCBsZWFzdCBmb3IgdGhlIG5leHQgR0RCIGNvbW1hbmQuICAqLwogKwogK3N0YXRpYyB2 b2lkCi0rbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKmZ1 bmNfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZXNwYWNlKQorK29iamVjdF9hZGRyZXNzX2NsZWFudXAgKHZvaWQgKnByZXZfc2F2ZV92 b2lkcCkKICt7CisrICBDT1JFX0FERFIgKnByZXZfc2F2ZSA9IHByZXZfc2F2ZV92b2lkcDsKICsK LSsgIGlmIChuYW1lc3BhY2VbMF0gPT0gJ1wwJykKLSsgICAgewotKyAgICAgIG1ha2Vfc3ltYm9s X292ZXJsb2FkX2xpc3RfcXVhbGlmaWVkIChmdW5jX25hbWUpOwotKyAgICB9Ci0rICBlbHNlCi0r ICAgIHsKLSsgICAgICBjaGFyICpjb25jYXRlbmF0ZWRfbmFtZQotKwk9IGFsbG9jYSAoc3RybGVu IChuYW1lc3BhY2UpICsgMiArIHN0cmxlbiAoZnVuY19uYW1lKSArIDEpOwotKyAgICAgIHN0cmNw eSAoY29uY2F0ZW5hdGVkX25hbWUsIG5hbWVzcGFjZSk7Ci0rICAgICAgc3RyY2F0IChjb25jYXRl bmF0ZWRfbmFtZSwgIjo6Iik7Ci0rICAgICAgc3RyY2F0IChjb25jYXRlbmF0ZWRfbmFtZSwgZnVu Y19uYW1lKTsKLSsgICAgICBtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0X3F1YWxpZmllZCAoY29u Y2F0ZW5hdGVkX25hbWUpOwotKyAgICB9CisrICBvYmplY3RfYWRkcmVzcyA9ICpwcmV2X3NhdmU7 CisrICB4ZnJlZSAocHJldl9zYXZlKTsKKyt9CisrCisrLyogU2V0IHRoZSBiYXNlIGFkZHJlc3Mg LSBEV19BVF9sb2NhdGlvbiAtIG9mIGEgdmFyaWFibGUuICBJdCBpcyBiZWluZyBsYXRlcgorKyAg IHVzZWQgdG8gZGVyaXZlIG90aGVyIG9iamVjdCBhZGRyZXNzZXMgYnkgRFdfT1BfcHVzaF9vYmpl Y3RfYWRkcmVzcy4KKysKKysgICBJdCB3b3VsZCBiZSB1c2VmdWwgdG8gc2FuaXR5IGNoZWNrIEFE RFJFU1MgLSBzdWNoIGFzIGZvciBzb21lIG9iamVjdHMgd2l0aAorKyAgIHVuc2V0IHZhbHVlX3Jh d19hZGRyZXNzIC0gYnV0IHNvbWUgdmFsaWQgYWRkcmVzc2VzIG1heSBiZSB6ZXJvIChzdWNoIGFz IGZpcnN0CisrICAgb2JqZWN0cyBpbiByZWxvY2F0YWJsZSAubyBmaWxlcykuICAqLworKworK3Zv aWQKKytvYmplY3RfYWRkcmVzc19zZXQgKENPUkVfQUREUiBhZGRyZXNzKQorK3sKKysgIENPUkVf QUREUiAqcHJldl9zYXZlOworKworKyAgcHJldl9zYXZlID0geG1hbGxvYyAoc2l6ZW9mICpwcmV2 X3NhdmUpOworKyAgKnByZXZfc2F2ZSA9IG9iamVjdF9hZGRyZXNzOworKyAgbWFrZV9jbGVhbnVw IChvYmplY3RfYWRkcmVzc19jbGVhbnVwLCBwcmV2X3NhdmUpOworKworKyAgb2JqZWN0X2FkZHJl c3MgPSBhZGRyZXNzOwogK30KICsKLSsvKiBTZWFyY2ggdGhlIG5hbWVzcGFjZSBvZiB0aGUgZ2l2 ZW4gdHlwZSBhbmQgbmFtZXNwYWNlIG9mIGFuZCBwdWJsaWMgYmFzZQotKyB0eXBlcy4gICovCi0r c3RhdGljIHZvaWQgbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9hZGxfbmFtZXNwYWNlIChzdHJ1 Y3QgdHlwZSAqdHlwZSwKLSsJCQkJCQkgICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKKysvKiBF dmFsdWF0ZSBEV0FSRiBleHByZXNzaW9uIGF0IERBVEEgLi4uIERBVEEgKyBTSVpFIHdpdGggaXRz IHJlc3VsdCByZWFkYWJsZQorKyAgIGJ5IGR3YXJmX2V4cHJfZmV0Y2ggKFJFVFZBTCwgMCkuICBG UkFNRSBwYXJhbWV0ZXIgY2FuIGJlIE5VTEwgdG8gY2FsbAorKyAgIGdldF9zZWxlY3RlZF9mcmFt ZSB0byBmaW5kIGl0LiAgUmV0dXJuZWQgZHdhcmZfZXhwcl9jb250ZXh0IGZyZWVpbmcgaXMKKysg ICBwdXNoZWQgb24gdGhlIGNsZWFudXAgY2hhaW4uICAqLworKworK3N0YXRpYyBzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0ICoKKytkd2FyZl9leHByX3ByZXBfY3R4IChzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUsIGNvbnN0IGdkYl9ieXRlICpkYXRhLAorKwkJICAgICBzaXplX3Qgc2l6ZSwgc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQogK3sKLSsgIGNoYXIgKm5hbWVzcGFjZTsK LSsgIGNoYXIgKnR5cGVfbmFtZTsKLSsgIGludCBpLCBwcmVmaXhfbGVuOworKyAgc3RydWN0IGR3 YXJmX2V4cHJfY29udGV4dCAqY3R4OworKyAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gYmF0b247 CisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAocGVy X2N1KTsKKysKKysgIGJhdG9uLmZyYW1lID0gZnJhbWU7CisrICBiYXRvbi5wZXJfY3UgPSBwZXJf Y3U7CisrICBiYXRvbi5vYmplY3RfYWRkcmVzcyA9IG9iamVjdF9hZGRyZXNzOworKworKyAgY3R4 ID0gbmV3X2R3YXJmX2V4cHJfY29udGV4dCAoKTsKKysgIG1ha2VfY2xlYW51cF9mcmVlX2R3YXJm X2V4cHJfY29udGV4dCAoY3R4KTsKKysKKysgIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2Fy Y2ggKG9iamZpbGUpOworKyAgY3R4LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6 ZSAocGVyX2N1KTsKKysgIGN0eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAo cGVyX2N1KTsKKysgIGN0eC0+YmF0b24gPSAmYmF0b247CisrICBjdHgtPnJlYWRfcmVnID0gZHdh cmZfZXhwcl9yZWFkX3JlZzsKKysgIGN0eC0+cmVhZF9tZW0gPSBkd2FyZl9leHByX3JlYWRfbWVt OworKyAgY3R4LT5nZXRfZnJhbWVfYmFzZSA9IGR3YXJmX2V4cHJfZnJhbWVfYmFzZTsKKysgIGN0 eC0+Z2V0X2ZyYW1lX2NmYSA9IGR3YXJmX2V4cHJfZnJhbWVfY2ZhOworKyAgY3R4LT5nZXRfdGxz X2FkZHJlc3MgPSBkd2FyZl9leHByX3Rsc19hZGRyZXNzOworKyAgY3R4LT5kd2FyZl9jYWxsID0g ZHdhcmZfZXhwcl9kd2FyZl9jYWxsOworKyAgY3R4LT5nZXRfb2JqZWN0X2FkZHJlc3MgPSBkd2Fy Zl9leHByX29iamVjdF9hZGRyZXNzOworKworKyAgZHdhcmZfZXhwcl9ldmFsIChjdHgsIGRhdGEs IHNpemUpOworKworKyAgLyogSXQgd2FzIHVzZWQgb25seSBkdXJpbmcgZHdhcmZfZXhwcl9ldmFs LiAgKi8KKysgIGN0eC0+YmF0b24gPSBOVUxMOwogKwotKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1BUUiB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYKLSsg ICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSkKLSsgICAgcmV0dXJu IG1ha2Vfc3ltYm9sX292ZXJsb2FkX2xpc3RfYWRsX25hbWVzcGFjZSAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZ1bmNfbmFtZSk7CisrICByZXR1cm4gY3R4OworK30KKysKKysvKiBFdmFsdWF0ZSBE V0FSRiBleHByZXNzaW9uIGF0IERMQkFUT04gZXhwZWN0aW5nIGl0IHByb2R1Y2VzIGV4YWN0bHkg b25lCisrICAgQ09SRV9BRERSIHJlc3VsdCBvbiB0aGUgRFdBUkYgc3RhY2sgc3RhY2suICAqLwor KworK0NPUkVfQUREUgorK2R3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICpkbGJhdG9uKQorK3sKKysgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQg KmN0eDsKKysgIENPUkVfQUREUiByZXR2YWw7CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFja190byA9 IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKICsKLSsgIHR5cGVfbmFtZSA9IFRZUEVf TkFNRSAodHlwZSk7CisrICBjdHggPSBkd2FyZl9leHByX3ByZXBfY3R4IChnZXRfc2VsZWN0ZWRf ZnJhbWUgKE5VTEwpLCBkbGJhdG9uLT5kYXRhLAorKwkJCSAgICAgZGxiYXRvbi0+c2l6ZSwgZGxi YXRvbi0+cGVyX2N1KTsKKysgIGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQorKyAgICBlcnJvciAo XygiRFdfT1BfKnBpZWNlIGlzIHVuc3VwcG9ydGVkIGZvciBEV19GT1JNX2Jsb2NrIikpOwogKwot KyAgcHJlZml4X2xlbiA9IGNwX2VudGlyZV9wcmVmaXhfbGVuICh0eXBlX25hbWUpOworKyAgcmV0 dmFsID0gZHdhcmZfZXhwcl9mZXRjaCAoY3R4LCAwKTsKICsKLSsgIGlmIChwcmVmaXhfbGVuICE9 IDApCisrICBpZiAoY3R4LT5sb2NhdGlvbiA9PSBEV0FSRl9WQUxVRV9SRUdJU1RFUikKICsgICAg ewotKyAgICAgIG5hbWVzcGFjZSA9IGFsbG9jYSAocHJlZml4X2xlbiArIDEpOwotKyAgICAgIHN0 cm5jcHkgKG5hbWVzcGFjZSwgdHlwZV9uYW1lLCBwcmVmaXhfbGVuKTsKLSsgICAgICBuYW1lc3Bh Y2VbcHJlZml4X2xlbl0gPSAnXDAnOworKyAgICAgIC8qIElubGluZWQgZHdhcmZfZXhwcl9yZWFk X3JlZyBhcyB3ZSBubyBsb25nZXIgaGF2ZSB0aGUgYmF0b24uICovCisrCisrICAgICAgaW50IGdk Yl9yZWdudW0gPSBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVnbnVtIChjdHgtPmdkYmFyY2gsIHJl dHZhbCk7CisrICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBidWlsdGluX3R5cGUgKGN0eC0+Z2Ri YXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7CisrICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l ID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsKICsKLSsgICAgICBtYWtlX3N5bWJvbF9vdmVy bG9hZF9saXN0X25hbWVzcGFjZSAoZnVuY19uYW1lLCBuYW1lc3BhY2UpOworKyAgICAgIHJldHZh bCA9IGFkZHJlc3NfZnJvbV9yZWdpc3RlciAodHlwZSwgZ2RiX3JlZ251bSwgZnJhbWUpOwogKyAg ICB9CiArCi0rICAvKiBDaGVjayBwdWJsaWMgYmFzZSB0eXBlICovCi0rICBpZiAoVFlQRV9DT0RF KHR5cGUpID09IFRZUEVfQ09ERV9DTEFTUykKLSsgICAgZm9yIChpID0gMDsgaSA8IFRZUEVfTl9C QVNFQ0xBU1NFUyAodHlwZSk7IGkrKykKLSsgICAgICB7Ci0rCWlmIChCQVNFVFlQRV9WSUFfUFVC TElDICh0eXBlLCBpKSkKLSsJICBtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0X2FkbF9uYW1lc3Bh Y2UgKFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpKSwKLSsJCQkJCQkgICBmdW5jX25hbWUpOwotKyAg ICAgIH0KKysgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKICsKKysgIHJldHVybiByZXR2YWw7CiAr fQogKwotKy8qIEFkZHMgdGhlIHRoZSBvdmVybG9hZCBsaXN0IG92ZXJsb2FkIGNhbmRpZGF0ZXMg Zm9yIEZVTkNfTkFNRSBmb3VuZCB0aHJvdWdoCi0rICAgYXJndW1lbnQgZGVwZW5kZW50IGxvb2t1 cC4gICovCisrLyogRXZhbHVhdGUgRFdBUkYgbG9jYXRpb24gbGlzdCBhdCBETExCQVRPTiBleHBl Y3RpbmcgaXQgcHJvZHVjZXMgZXhhY3RseSBvbmUKKysgICBDT1JFX0FERFIgcmVzdWx0IHN0b3Jl ZCB0byAqQUREUlAgb24gdGhlIERXQVJGIHN0YWNrIHN0YWNrLiAgSWYgdGhlIHJlc3VsdAorKyAg IGNvdWxkIG5vdCBiZSBmb3VuZCByZXR1cm4gemVybyBhbmQga2VlcCAqQUREUlAgdW5jaGFuZ2Vk LiAgKi8KICsKLStzdHJ1Y3Qgc3ltYm9sICoqCi0rbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9h ZGwgKHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzLCBpbnQgbmFyZ3MsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKKytpbnQKKytkd2FyZl9sb2Ns aXN0X2JhdG9uX2V2YWwgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZGxsYmF0b24sCisr CQkJICBzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSICphZGRycCkKICt7Ci0rICBpbnQgaTsK KysgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7 CisrICBjb25zdCBnZGJfYnl0ZSAqZGF0YTsKKysgIHNpemVfdCBzaXplOworKyAgc3RydWN0IHZh bHVlICp2YWw7CiArCi0rICBnZGJfYXNzZXJ0IChzeW1fcmV0dXJuX3ZhbF9zaXplICE9IC0xKTsK KysgIGlmICghZGxsYmF0b24pCisrICAgIHJldHVybiAwOworKworKyAgZGF0YSA9IGZpbmRfbG9j YXRpb25fZXhwcmVzc2lvbiAoZGxsYmF0b24sICZzaXplLAorKwkJCQkgICBnZXRfZnJhbWVfYWRk cmVzc19pbl9ibG9jayAoZnJhbWUpKTsKKysgIGlmIChkYXRhID09IE5VTEwpCisrICAgIHJldHVy biAwOwogKwotKyAgZm9yIChpID0gMTsgaSA8PSBuYXJnczsgaSsrKQotKyAgICBtYWtlX3N5bWJv bF9vdmVybG9hZF9saXN0X2FkbF9uYW1lc3BhY2UgKGFyZ190eXBlc1tpIC0gMV0sIGZ1bmNfbmFt ZSk7CisrICB2YWwgPSBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHR5cGUsIGZyYW1lLCBkYXRh LCBzaXplLCBkbGxiYXRvbi0+cGVyX2N1KTsKKysgIGlmICh2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2 YWwpKQorKyAgICByZXR1cm4gMDsKICsKLSsgIHJldHVybiBzeW1fcmV0dXJuX3ZhbDsKKysgICph ZGRycCA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7CisrICByZXR1cm4gMTsKICt9CisrCisgc3Ry dWN0IHBpZWNlX2Nsb3N1cmUKKyB7CisgICAvKiBSZWZlcmVuY2UgY291bnQuICAqLworQEAgLTg4 NywxMCArMTA1OCw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAJCQkgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnBlcl9jdSkKKyB7CisgICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKKy0gIHN0cnVjdCBk d2FyZl9leHByX2JhdG9uIGJhdG9uOworICAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4 OworLSAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKy0gIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChwZXJfY3UpOworKyAgc3RydWN0IGNsZWFudXAg Km9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKICAKLSAvKiBUaGlz IGFwcGxpZXMgdGhlIHVzaW5nIGRpcmVjdGl2ZXMgdG8gYWRkIG5hbWVzcGFjZXMgdG8gc2VhcmNo IGluLAotICAgIGFuZCB0aGVuIHNlYXJjaGVzIGZvciBvdmVybG9hZHMgaW4gYWxsIG9mIHRob3Nl IG5hbWVzcGFjZXMuICBJdAotQEAgLTczOSwyMCArODE2LDcgQEAgbWFrZV9zeW1ib2xfb3Zlcmxv YWRfbGlzdF91c2luZyAoY29uc3QgY2hhciAqZnVuY19uYW1lLAorICAgaWYgKHNpemUgPT0gMCkK KyAgICAgeworQEAgLTkwMCwyNCArMTA2OSw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKyAgICAgICByZXR1 cm4gcmV0dmFsOwogICAgICB9CiAgCi0gICAvKiBOb3csIGFkZCBuYW1lcyBmb3IgdGhpcyBuYW1l c3BhY2UuICAqLwotLSAgCi0tICBpZiAobmFtZXNwYWNlWzBdID09ICdcMCcpCi0tICAgIHsKLS0g ICAgICBtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0X3F1YWxpZmllZCAoZnVuY19uYW1lKTsKLS0g ICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgY2hhciAqY29uY2F0ZW5hdGVkX25hbWUKLS0J PSBhbGxvY2EgKHN0cmxlbiAobmFtZXNwYWNlKSArIDIgKyBzdHJsZW4gKGZ1bmNfbmFtZSkgKyAx KTsKLS0gICAgICBzdHJjcHkgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lc3BhY2UpOwotLSAgICAg IHN0cmNhdCAoY29uY2F0ZW5hdGVkX25hbWUsICI6OiIpOwotLSAgICAgIHN0cmNhdCAoY29uY2F0 ZW5hdGVkX25hbWUsIGZ1bmNfbmFtZSk7Ci0tICAgICAgbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlz dF9xdWFsaWZpZWQgKGNvbmNhdGVuYXRlZF9uYW1lKTsKLS0gICAgfQotKyAgbWFrZV9zeW1ib2xf b3ZlcmxvYWRfbGlzdF9uYW1lc3BhY2UgKGZ1bmNfbmFtZSwgbmFtZXNwYWNlKTsKLSB9CistICBi YXRvbi5mcmFtZSA9IGZyYW1lOworLSAgYmF0b24ucGVyX2N1ID0gcGVyX2N1OworKyAgY3R4ID0g ZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSk7CiAgCi0gLyog VGhpcyBkb2VzIHRoZSBidWxrIG9mIHRoZSB3b3JrIG9mIGZpbmRpbmcgb3ZlcmxvYWRlZCBzeW1i b2xzLgotQEAgLTg0MCw5ICs5MDQsOSBAQCByZWFkX2luX3BzeW10YWJzIChjb25zdCBjaGFyICpm dW5jX25hbWUpCi0gICAgIGlmIChwcy0+cmVhZGluKQotICAgICAgIGNvbnRpbnVlOwotIAotLSAg ICBpZiAoKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIGZ1bmNfbmFtZSwgTlVMTCwgMSwgVkFS X0RPTUFJTikKLSsgICAgaWYgKChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBmdW5jX25hbWUs IDEsIFZBUl9ET01BSU4pCi0gCSAhPSBOVUxMKQotLQl8fCAobG9va3VwX3BhcnRpYWxfc3ltYm9s IChwcywgZnVuY19uYW1lLCBOVUxMLCAwLCBWQVJfRE9NQUlOKQotKwl8fCAobG9va3VwX3BhcnRp YWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCAwLCBWQVJfRE9NQUlOKQotIAkgICAgIT0gTlVMTCkp Ci0gICAgICAgcHN5bXRhYl90b19zeW10YWIgKHBzKTsKLSAgIH0KLWRpZmYgLS1naXQgYS9nZGIv Y3Atc3VwcG9ydC5oIGIvZ2RiL2NwLXN1cHBvcnQuaAotaW5kZXggYTZhOWFmMS4uNTdhYTVlNSAx MDA2NDQKLS0tLSBhL2dkYi9jcC1zdXBwb3J0LmgKLSsrKyBiL2dkYi9jcC1zdXBwb3J0LmgKLUBA IC0zOCwyMCArMzgsMjQgQEAgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudDsKLSAKLSAvKiBUaGlz IHN0cnVjdCBpcyBkZXNpZ25lZCB0byBzdG9yZSBkYXRhIGZyb20gdXNpbmcgZGlyZWN0aXZlcy4g IEl0Ci0gICAgc2F5cyB0aGF0IG5hbWVzIGZyb20gbmFtZXNwYWNlIElNUE9SVF9TUkMgc2hvdWxk IGJlIHZpc2libGUgd2l0aGluCi0tICAgbmFtZXNwYWNlIElNUE9SVF9ERVNULiAgVGhlc2UgZm9y bSBhIGxpbmtlZCBsaXN0OyBORVhUIGlzIHRoZSBuZXh0IGVsZW1lbnQKLS0gICBvZiB0aGUgbGlz dC4gIElmIHRoZSBpbXBvcnRlZCBuYW1lc3BhY2UgaGFzIGJlZW4gYWxpYXNlZCwgQUxJQVMgaXMg c2V0IHRvIGEKLS0gICBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGlhcy4gIE90aGVyd2lzZSwg QUxJQVMgaXMgTlVMTC4KLS0gICBFZzoKLS0gICAgICAgbmFtZXNwYWNlIEMgPSBBOjpCOwotKyAg IG5hbWVzcGFjZSBJTVBPUlRfREVTVC4gIFRoZXNlIGZvcm0gYSBsaW5rZWQgbGlzdDsgTkVYVCBp cyB0aGUgbmV4dAotKyAgIGVsZW1lbnQgb2YgdGhlIGxpc3QuICBBTElBUyBpcyBzZXQgdG8gYSBu b24gZW1wdHkgc3RyaW5nIGlmIHRoZSBpbXBvcnRlZAotKyAgIG5hbWVzcGFjZSBoYXMgYmVlbiBh bGlhc2VkLkVnOgotKyAgICAgICBuYW1lc3BhY2UgQz1BOjpCOwotICAgIEFMSUFTID0gIkMiCi0r ICAgREVDTEFSQVRJT04gaXMgdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVkIGRlY2xhcmF0aW9uLCBp ZiB0aGlzIGltcG9ydCAKLSsgICBzdGF0ZW1lbnQgcmVwcmVzZW50cyBvbmUuIEVnOgotKyAgICAg ICB1c2luZyBBOjp4OwotKyAgIFdoZXJlIHggaXMgdmFyaWFibGUgaW4gbmFtZXNwYWNlIEEuIGRl Y2xhcmF0aW9uIGlzIHNldCB0byB4LiAgCi0gKi8KLSAKLSBzdHJ1Y3QgdXNpbmdfZGlyZWN0Ci0g ewotICAgY2hhciAqaW1wb3J0X3NyYzsKLSAgIGNoYXIgKmltcG9ydF9kZXN0OworLSAgY3R4ID0g bmV3X2R3YXJmX2V4cHJfY29udGV4dCAoKTsKKy0gIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9m cmVlX2R3YXJmX2V4cHJfY29udGV4dCAoY3R4KTsKIC0KLSAgIGNoYXIgKmFsaWFzOwotKyAgY2hh ciAqZGVjbGFyYXRpb247Ci0rICBpbnQgbGluZV9udW1iZXI7Ci0gCi0gICBzdHJ1Y3QgdXNpbmdf ZGlyZWN0ICpuZXh0OwotIAotQEAgLTY0LDYgKzY4LDcgQEAgc3RydWN0IHVzaW5nX2RpcmVjdAot IAotIGV4dGVybiBjaGFyICpjcF9jYW5vbmljYWxpemVfc3RyaW5nIChjb25zdCBjaGFyICpzdHJp bmcpOwotIAotKwotIGV4dGVybiBjaGFyICpjcF9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGNv bnN0IGNoYXIgKnBoeXNuYW1lKTsKLSAKLSBleHRlcm4gY2hhciAqbWV0aG9kX25hbWVfZnJvbV9w aHlzbmFtZSAoY29uc3QgY2hhciAqcGh5c25hbWUpOwotQEAgLTc5LDYgKzg0LDEwIEBAIGV4dGVy biBjaGFyICpjcF9yZW1vdmVfcGFyYW1zIChjb25zdCBjaGFyICpkZW1hbmdsZWRfbmFtZSk7Ci0g ZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKiptYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0IChjb25zdCBj aGFyICosCi0gCQkJCQkJICBjb25zdCBjaGFyICopOwotIAotK2V4dGVybiBzdHJ1Y3Qgc3ltYm9s ICoqbWFrZV9zeW1ib2xfb3ZlcmxvYWRfbGlzdF9hZGwgKHN0cnVjdCB0eXBlICoqYXJnX3R5cGVz LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBuYXJncywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpOwotKwotIGV4dGVybiBzdHJ1Y3QgdHlw ZSAqY3BfbG9va3VwX3J0dGlfdHlwZSAoY29uc3QgY2hhciAqbmFtZSwKLSAJCQkJCSBzdHJ1Y3Qg YmxvY2sgKmJsb2NrKTsKLSAKLUBAIC05MCwxMSArOTksMTUgQEAgZXh0ZXJuIGludCBjcF9pc19h bm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSk7Ci0gCi0gZXh0ZXJuIHZvaWQgY3BfYWRk X3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVzdCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYWxpYXMpOwotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFsaWFzLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsaW5lX251bWJlcik7Ci0gCi0gZXh0ZXJu IHN0cnVjdCB1c2luZ19kaXJlY3QgKmNwX2FkZF91c2luZyAoY29uc3QgY2hhciAqZGVzdCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq YWxpYXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqZGVjbGFyYXRpb24sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgaW50IGxpbmVfbnVtYmVyLAotIAkJCQkJICBzdHJ1Y3QgdXNpbmdfZGlyZWN0 ICpuZXh0KTsKLSAKLSBleHRlcm4gdm9pZCBjcF9pbml0aWFsaXplX25hbWVzcGFjZSAodm9pZCk7 Ci1AQCAtMTExLDE2ICsxMjQsMjAgQEAgZXh0ZXJuIHZvaWQgY3Bfc2V0X2Jsb2NrX3Njb3BlIChj b25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsCi0gZXh0ZXJuIHZvaWQgY3Bfc2Nhbl9mb3JfYW5v bnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCk7Ci0gCi0gZXh0 ZXJuIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIg Km5hbWUsCi0tCQkJCQkJIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkJCQkgY29uc3Qg c3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCQkgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsK LSAKLStzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGNvbnN0IGNoYXIg KnNjb3BlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVjbGFyYXRpb25fb25seSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWFyY2hfcGFyZW50cyk7Ci0rCi0g ZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBj aGFyICpuYW1lc3BhY2UsCi0tCQkJCQkJICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJCSAgY29u c3QgY2hhciAqbGlua2FnZV9uYW1lLAotLQkJCQkJCSAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9j aywKLS0JCQkJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLS0JCQkJCQkgIGNvbnN0IGlu dCBzZWFyY2hfcGFyZW50cyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRv bWFpbl9lbnVtIGRvbWFpbik7Ci0gCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjcF9sb29rdXBfbmVz dGVkX3R5cGUgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSwKLSAJCQkJCSAgIGNvbnN0IGNoYXIg Km5lc3RlZF9uYW1lLAotZGlmZiAtLWdpdCBhL2dkYi9kYnhyZWFkLmMgYi9nZGIvZGJ4cmVhZC5j Ci1pbmRleCBjOWE1NzU0Li5mYzMzZGEyIDEwMDY0NAotLS0tIGEvZ2RiL2RieHJlYWQuYwotKysr IGIvZ2RiL2RieHJlYWQuYwotQEAgLTM1NjUsNiArMzU2NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3lt X2ZucyBhb3V0X3N5bV9mbnMgPQotICAgZGJ4X25ld19pbml0LAkJLyogc3ltX25ld19pbml0OiBp bml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCi0gICBkYnhfc3ltZmlsZV9pbml0 LAkvKiBzeW1faW5pdDogcmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICov Ci0gICBkYnhfc3ltZmlsZV9yZWFkLAkJLyogc3ltX3JlYWQ6IHJlYWQgYSBzeW1ib2wgZmlsZSBp bnRvIHN5bXRhYiAqLwotKyAgTlVMTCwJCQkJLyogc3ltX3JlYWRfcHN5bWJvbHMgKi8KLSAgIGRi eF9zeW1maWxlX2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xl YW51cCAqLwotICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsIC8qIHN5bV9vZmZzZXRzOiBwYXJz ZSB1c2VyJ3Mgb2Zmc2V0cyB0bwotIAkJCSAgICAgIGludGVybmFsIGZvcm0gKi8KLWRpZmYgLS1n aXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggMGUz ZTA5My4uNjYxYmExOCAxMDA2NDQKLS0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KLUBAIC0xMTU3LDYgKzExNTcsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1 Z2dpbmcuCi0gUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRh cmQgaW5wdXQgYW5kIG91dHB1dC4KLSBAYyBGSVhNRToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMg bW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCi0gCi0rQGl0ZW0gLVAKLStAY2luZGV4IEBjb2Rl ey1QfQotK0BpdGVteCAtLXB5dGhvbgotK0BjaW5kZXggQGNvZGV7LS1weXRob259Ci0rQ2hhbmdl IGludGVycHJldGF0aW9uIG9mIGNvbW1hbmQgbGluZSBzbyB0aGF0IHRoZSBhcmd1bWVudCBpbW1l ZGlhdGVseQotK2ZvbGxvd2luZyB0aGlzIHN3aXRjaCBpcyB0YWtlbiB0byBiZSB0aGUgbmFtZSBv ZiBhIFB5dGhvbiBzY3JpcHQgZmlsZS4KLStUaGlzIG9wdGlvbiBzdG9wcyBvcHRpb24gcHJvY2Vz c2luZzsgc3Vic2VxdWVudCBvcHRpb25zIGFyZSBwYXNzZWQgdG8KLStQeXRob24gYXMgQGNvZGV7 c3lzLmFyZ3Z9LiAgVGhpcyBvcHRpb24gaXMgb25seSBhdmFpbGFibGUgaWYgUHl0aG9uCi0rc2Ny aXB0aW5nIHN1cHBvcnQgd2FzIGVuYWJsZWQgd2hlbiBAdmFsdWV7R0RCTn0gd2FzIGNvbmZpZ3Vy ZWQuCi0rCi0gQGMgcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9mIHRoZXNlIGV2ZW50dWFsbHkKLSBA aXRlbSAtdHVpCi0gQGNpbmRleCBAY29kZXstLXR1aX0KLUBAIC0xOTIxNSw3ICsxOTIyNSw3IEBA IHVzaW5nIHRoZSBAY29kZXtzY3JpcHQtZXh0ZW5zaW9ufSBzZXR0aW5nLgotIEB0YWJsZSBAY29k ZQotIEBraW5kZXggc291cmNlCi0gQGNpbmRleCBleGVjdXRlIGNvbW1hbmRzIGZyb20gYSBmaWxl Ci0tQGl0ZW0gc291cmNlIFtAY29kZXstdn1dIEB2YXJ7ZmlsZW5hbWV9Ci0rQGl0ZW0gc291cmNl IFtAY29kZXstdn1dIFtAY29kZXstcH1dIEB2YXJ7ZmlsZW5hbWV9Ci0gRXhlY3V0ZSB0aGUgY29t bWFuZCBmaWxlIEB2YXJ7ZmlsZW5hbWV9LgotIEBlbmQgdGFibGUKLSAKLUBAIC0xOTQ5Myw4ICsx OTUwMyw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgotIAotIEBzbWFs bGV4YW1wbGUKLSAoQHZhbHVle0dEQlB9KSBweXRob24KLS1UeXBlIHB5dGhvbiBzY3JpcHQKLS1F bmQgd2l0aCBhIGxpbmUgc2F5aW5nIGp1c3QgImVuZCIuCi0gPnByaW50IDIzCi0gPmVuZAotIDIz Ci1AQCAtMTk1MDcsNiArMTk1MTUsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4g YmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKLSBweXRob24gcHJpbnQtc3RhY2t9 OiBpZiBAY29kZXtvbn0sIHRoZSBkZWZhdWx0LCB0aGVuIFB5dGhvbiBzdGFjawotIHByaW50aW5n IGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uIHN0YWNrIHByaW50aW5nIGlz Ci0gZGlzYWJsZWQuCi0rCi0rQGtpbmRleCBtYWludCBzZXQgcHl0aG9uIGF1dG8tbG9hZAotK0Bp dGVtIG1haW50IHNldCBweXRob24gYXV0by1sb2FkCi0rQnkgZGVmYXVsdCwgQHZhbHVle0dEQk59 IHdpbGwgYXR0ZW1wdCB0byBhdXRvbWF0aWNhbGx5IGxvYWQgUHl0aG9uCi0rY29kZSB3aGVuIGFu IG9iamVjdCBmaWxlIGlzIG9wZW5lZC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcKLStA Y29kZXttYWludCBzZXQgcHl0aG9uIGF1dG8tbG9hZH06IGlmIEBjb2Rle29ufSwgdGhlIGRlZmF1 bHQsIHRoZW4KLStQeXRob24gYXV0by1sb2FkaW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0s IHRoZW4gUHl0aG9uCi0rYXV0by1sb2FkaW5nIGlzIGRpc2FibGVkLgotIEBlbmQgdGFibGUKLSAK LSBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQeXRob24gc2NyaXB0IGZyb20gdGhl IEB2YWx1ZXtHREJOfQotQEAgLTE5NTI4LDYgKzE5NTQ0LDE0IEBAIGFuZCB0aHVzIGlzIGFsd2F5 cyBhdmFpbGFibGUuCi0gQGNpbmRleCBweXRob24gYXBpCi0gQGNpbmRleCBwcm9ncmFtbWluZyBp biBweXRob24KLSAKLStZb3UgY2FuIGdldCBxdWljayBvbmxpbmUgaGVscCBmb3IgQHZhbHVle0dE Qk59J3MgUHl0aG9uIEFQSSBieSBpc3N1aW5nCi0rdGhlIGNvbW1hbmQgQHd7QGtiZHtweXRob24g aGVscCAoZ2RiKX19LgotKwotK0Z1bmN0aW9ucyBhbmQgbWV0aG9kcyB3aGljaCBoYXZlIHR3byBv ciBtb3JlIG9wdGlvbmFsIGFyZ3VtZW50cyBhbGxvdwotK3RoZW0gdG8gYmUgc3BlY2lmaWVkIHVz aW5nIGtleXdvcmQgc3ludGF4LiAgVGhpcyBhbGxvd3MgcGFzc2luZyBzb21lCi0rb3B0aW9uYWwg YXJndW1lbnRzIHdoaWxlIHNraXBwaW5nIG90aGVycy4gIEV4YW1wbGU6Ci0rQHd7QGNvZGV7Z2Ri LnNvbWVfZnVuY3Rpb24gKCdmb28nLCBiYXIgPSAxLCBiYXogPSAyKX19LgotKwotIEBjaW5kZXgg cHl0aG9uIHN0ZG91dAotIEBjaW5kZXggcHl0aG9uIHBhZ2luYXRpb24KLSBBdCBzdGFydHVwLCBA dmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhvbidzIEBjb2Rle3N5cy5zdGRvdXR9IGFuZAotQEAg LTE5NTQwLDEzICsxOTU2NCwxNyBAQCBzaXR1YXRpb24sIGEgUHl0aG9uIEBjb2Rle0tleWJvYXJk SW50ZXJydXB0fSBleGNlcHRpb24gaXMgdGhyb3duLgotICogQmFzaWMgUHl0aG9uOjogICAgICAg ICAgICAgICAgQmFzaWMgUHl0aG9uIEZ1bmN0aW9ucy4KLSAqIEV4Y2VwdGlvbiBIYW5kbGluZzo6 Ci0gKiBBdXRvLWxvYWRpbmc6OiAgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcg UHl0aG9uIGNvZGUuCi0tKiBWYWx1ZXMgRnJvbSBJbmZlcmlvcjo6Ci0rKiBWYWx1ZXMgRnJvbSBJ bmZlcmlvcjo6CVB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuCi0gKiBUeXBlcyBJbiBQ eXRob246OgkJUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHR5cGVzLgotICogUHJldHR5IFByaW50 aW5nOjoJCVByZXR0eS1wcmludGluZyB2YWx1ZXMuCi0gKiBTZWxlY3RpbmcgUHJldHR5LVByaW50 ZXJzOjogICBIb3cgR0RCIGNob29zZXMgYSBwcmV0dHktcHJpbnRlci4KLSsqIEluZmVyaW9ycyBJ biBQeXRob246OgkJUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIGluZmVyaW9ycyAocHJvY2Vzc2Vz KQotKyogVGhyZWFkcyBJbiBQeXRob246OiAgICAgICAgICAgQWNjZXNzaW5nIGluZmVyaW9yIHRo cmVhZHMgZnJvbSBQeXRob24uCi0gKiBDb21tYW5kcyBJbiBQeXRob246OiAgICAgICAgICBJbXBs ZW1lbnRpbmcgbmV3IGNvbW1hbmRzIGluIFB5dGhvbi4KLSsqIFBhcmFtZXRlcnMgSW4gUHl0aG9u OjogICAgICAgIEFkZGluZyBuZXcgQHZhbHVle0dEQk59IHBhcmFtZXRlcnMuCi0gKiBGdW5jdGlv bnMgSW4gUHl0aG9uOjogICAgICAgICBXcml0aW5nIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbnMu Ci0gKiBPYmpmaWxlcyBJbiBQeXRob246OiAgICAgICAgICBPYmplY3QgZmlsZXMuCi0rKiBCcmVh a3BvaW50cyBJbiBQeXRob246OiAgICAgICBNYW5pcHVsYXRpbmcgYnJlYWtwb2ludHMgdXNpbmcg UHl0aG9uLgotICogRnJhbWVzIEluIFB5dGhvbjo6ICAgICAgICAgICAgQWNlc3NpbmcgaW5mZXJp b3Igc3RhY2sgZnJhbWVzIGZyb20gUHl0aG9uLgotICogTGF6eSBTdHJpbmdzIEluIFB5dGhvbjo6 ICAgICAgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIGxhenkgc3RyaW5ncy4KLSBAZW5kIG1lbnUK LUBAIC0xOTU3NCw2ICsxOTYwMiwxMiBAQCBjb21tYW5kIGFzIGhhdmluZyBvcmlnaW5hdGVkIGZy b20gdGhlIHVzZXIgaW52b2tpbmcgaXQgaW50ZXJhY3RpdmVseS4KLSBJdCBtdXN0IGJlIGEgYm9v bGVhbiB2YWx1ZS4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIEBjb2Rle0ZhbHNlfS4KLSBA ZW5kIGRlZnVuCi0gCi0rQGZpbmRleCBnZGIuYnJlYWtwb2ludHMKLStAZGVmdW4gYnJlYWtwb2lu dHMKLStSZXR1cm4gYSBzZXF1ZW5jZSBob2xkaW5nIGFsbCBvZiBAdmFsdWV7R0RCTn0ncyBicmVh a3BvaW50cy4KLStAeHJlZntCcmVha3BvaW50cyBJbiBQeXRob259LCBmb3IgbW9yZSBpbmZvcm1h dGlvbi4KLStAZW5kIGRlZnVuCi0rCi0gQGZpbmRleCBnZGIucGFyYW1ldGVyCi0gQGRlZnVuIHBh cmFtZXRlciBwYXJhbWV0ZXIKLSBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgQHZhbHVle0dEQk59IHBh cmFtZXRlci4gIEB2YXJ7cGFyYW1ldGVyfSBpcyBhCi1AQCAtMTk1OTAsNiArMTk2MjQsNyBAQCBh IFB5dGhvbiB2YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZSwgYW5kIHJldHVybmVkLgotIEBk ZWZ1biBoaXN0b3J5IG51bWJlcgotIFJldHVybiBhIHZhbHVlIGZyb20gQHZhbHVle0dEQk59J3Mg dmFsdWUgaGlzdG9yeSAoQHB4cmVme1ZhbHVlCi0gSGlzdG9yeX0pLiAgQHZhcntudW1iZXJ9IGlu ZGljYXRlcyB3aGljaCBoaXN0b3J5IGVsZW1lbnQgdG8gcmV0dXJuLgotKwotIElmIEB2YXJ7bnVt YmVyfSBpcyBuZWdhdGl2ZSwgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCB0YWtlIGl0cyBhYnNvbHV0 ZSB2YWx1ZQotIGFuZCBjb3VudCBiYWNrd2FyZCBmcm9tIHRoZSBsYXN0IGVsZW1lbnQgKGkuZS4s IHRoZSBtb3N0IHJlY2VudCBlbGVtZW50KSB0bwotIGZpbmQgdGhlIHZhbHVlIHRvIHJldHVybi4g IElmIEB2YXJ7bnVtYmVyfSBpcyB6ZXJvLCB0aGVuIEB2YWx1ZXtHREJOfSB3aWxsCi1AQCAtMTk2 MTQsNiArMTk2NDksMjEgQEAgY29tcHV0ZSB2YWx1ZXMsIGZvciBleGFtcGxlLCBpdCBpcyB0aGUg b25seSB3YXkgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhCi0gY29udmVuaWVuY2UgdmFyaWFibGUgKEBw eHJlZntDb252ZW5pZW5jZSBWYXJzfSkgYXMgYSBAY29kZXtnZGIuVmFsdWV9LgotIEBlbmQgZGVm dW4KLSAKLStAZmluZGV4IGdkYi5wb3N0X2V2ZW50Ci0rQGRlZnVuIHBvc3RfZXZlbnQgZXZlbnQK LStQdXQgQHZhcntldmVudH0sIGEgY2FsbGFibGUgb2JqZWN0IHRha2luZyBubyBhcmd1bWVudHMs IGludG8KLStAdmFsdWV7R0RCTn0ncyBpbnRlcm5hbCBldmVudCBxdWV1ZS4gIFRoaXMgY2FsbGFi bGUgd2lsbCBiZSBpbnZva2VkIGF0Ci0rc29tZSBsYXRlciBwb2ludCwgZHVyaW5nIEB2YWx1ZXtH REJOfSdzIGV2ZW50IHByb2Nlc3NpbmcuICBFdmVudHMKLStwb3N0ZWQgdXNpbmcgQGNvZGV7cG9z dF9ldmVudH0gd2lsbCBiZSBydW4gaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkKLSt3ZXJlIHBv c3RlZDsgaG93ZXZlciwgdGhlcmUgaXMgbm8gd2F5IHRvIGtub3cgd2hlbiB0aGV5IHdpbGwgYmUK LStwcm9jZXNzZWQgcmVsYXRpdmUgdG8gb3RoZXIgZXZlbnRzIGluc2lkZSBAdmFsdWV7R0RCTn0u Ci0rCi0rQHZhbHVle0dEQk59IGlzIG5vdCB0aHJlYWQtc2FmZS4gIElmIHlvdXIgUHl0aG9uIHBy b2dyYW0gdXNlcyBtdWx0aXBsZQotK3RocmVhZHMsIHlvdSBtdXN0IGJlIGNhcmVmdWwgdG8gb25s eSBjYWxsIEB2YWx1ZXtHREJOfS1zcGVjaWZpYwotK2Z1bmN0aW9ucyBpbiB0aGUgbWFpbiBAdmFs dWV7R0RCTn0gdGhyZWFkLiAgQGNvZGV7cG9zdF9ldmVudH0gZW5zdXJlcwotK3RoaXMuCi0rQGVu ZCBkZWZ1bgotKwotIEBmaW5kZXggZ2RiLndyaXRlCi0gQGRlZnVuIHdyaXRlIHN0cmluZwotIFBy aW50IGEgc3RyaW5nIHRvIEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQg c3RyZWFtLgotQEAgLTE5NjI4LDYgKzE5Njc4LDExIEBAIEZsdXNoIEB2YWx1ZXtHREJOfSdzIHBh Z2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLiAgRmx1c2hpbmcKLSBmdW5jdGlvbi4KLSBA ZW5kIGRlZnVuCi0gCi0rQGZpbmRleCBnZGIuc29saWJfYWRkcmVzcwotK0BkZWZ1biBzb2xpYl9h ZGRyZXNzIEB2YXJ7YWRkcmVzc30KLStSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJy YXJ5IGhvbGRpbmcgdGhlIGdpdmVuIGFkZHJlc3MsIG9yIE5vbmUuCi0rQGVuZCBkZWZ1bgotKwot IEBub2RlIEV4Y2VwdGlvbiBIYW5kbGluZwotIEBzdWJzdWJzZWN0aW9uIEV4Y2VwdGlvbiBIYW5k bGluZwotIEBjaW5kZXggcHl0aG9uIGV4Y2VwdGlvbnMKLUBAIC0xOTg2Niw2ICsxOTkyMSw5IEBA IG1vZHVsZToKLSBUaGlzIGZ1bmN0aW9uIGxvb2tzIHVwIGEgdHlwZSBieSBuYW1lLiAgQHZhcntu YW1lfSBpcyB0aGUgbmFtZSBvZiB0aGUKLSB0eXBlIHRvIGxvb2sgdXAuICBJdCBtdXN0IGJlIGEg c3RyaW5nLgotIAotK0lmIEB2YXJ7YmxvY2t9IGlzIGdpdmVuLCB0aGVuIEB2YXJ7bmFtZX0gaXMg bG9va2VkIHVwIGluIHRoYXQgc2NvcGUuCi0rT3RoZXJ3aXNlLCBpdCBpcyBzZWFyY2hlZCBmb3Ig Z2xvYmFsbHkuCi0rCi0gT3JkaW5hcmlseSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBp bnN0YW5jZSBvZiBAY29kZXtnZGIuVHlwZX0uCi0gSWYgdGhlIG5hbWVkIHR5cGUgY2Fubm90IGJl IGZvdW5kLCBpdCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4KLSBAZW5kIGRlZnVuCi1AQCAtMTk5 ODgsNyArMjAwNDYsNyBAQCBJZiB0aGUgdHlwZSBkb2VzIG5vdCBoYXZlIGEgdGFyZ2V0LCB0aGlz IG1ldGhvZCB3aWxsIHRocm93IGFuCi0gZXhjZXB0aW9uLgotIEBlbmQgZGVmbWV0aG9kCi0gCi0t QGRlZm1ldGhvZCBUeXBlIHRlbXBsYXRlX2FyZ3VtZW50IG4KLStAZGVmbWV0aG9kIFR5cGUgdGVt cGxhdGVfYXJndW1lbnQgbiBbYmxvY2tdCi0gSWYgdGhpcyBAY29kZXtnZGIuVHlwZX0gaXMgYW4g aW5zdGFudGlhdGlvbiBvZiBhIHRlbXBsYXRlLCB0aGlzIHdpbGwKLSByZXR1cm4gYSBuZXcgQGNv ZGV7Z2RiLlR5cGV9IHdoaWNoIHJlcHJlc2VudHMgdGhlIHR5cGUgb2YgdGhlCi0gQHZhcntufXRo IHRlbXBsYXRlIGFyZ3VtZW50LgotQEAgLTE5OTk2LDcgKzIwMDU0LDggQEAgcmV0dXJuIGEgbmV3 IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZQotIElmIHRo aXMgQGNvZGV7Z2RiLlR5cGV9IGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUsIHRoaXMgd2lsbCB0aHJv dyBhbgotIGV4Y2VwdGlvbi4gIE9yZGluYXJpbHksIG9ubHkgQ0B0eysrfSBjb2RlIHdpbGwgaGF2 ZSB0ZW1wbGF0ZSB0eXBlcy4KLSAKLS1AdmFye25hbWV9IGlzIHNlYXJjaGVkIGZvciBnbG9iYWxs eS4KLStJZiBAdmFye2Jsb2NrfSBpcyBnaXZlbiwgdGhlbiBAdmFye25hbWV9IGlzIGxvb2tlZCB1 cCBpbiB0aGF0IHNjb3BlLgotK090aGVyd2lzZSwgaXQgaXMgc2VhcmNoZWQgZm9yIGdsb2JhbGx5 LgotIEBlbmQgZGVmbWV0aG9kCi0gQGVuZCB0YWJsZQotIAotQEAgLTIwMzUwLDYgKzIwNDA5LDEy MSBAQCBpbXBvcnQgZ2RiLmxpYnN0ZGN4eC52NgotIGdkYi5saWJzdGRjeHgudjYucmVnaXN0ZXJf cHJpbnRlcnMgKGdkYi5jdXJyZW50X29iamZpbGUgKCkpCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAK LStAbm9kZSBJbmZlcmlvcnMgSW4gUHl0aG9uCi0rQHN1YnN1YnNlY3Rpb24gSW5mZXJpb3JzIElu IFB5dGhvbgotKwotK1Byb2dyYW1zIHdoaWNoIGFyZSBiZWluZyBydW4gdW5kZXIgQHZhbHVle0dE Qk59IGFyZSBjYWxsZWQgaW5mZXJpb3JzCi0rKEBweHJlZntJbmZlcmlvcnMgYW5kIFByb2dyYW1z fSkuICBQeXRob24gc2NyaXB0cyBjYW4gYWNjZXNzCi0raW5mb3JtYXRpb24gYWJvdXQgYW5kIG1h bmlwdWxhdGUgaW5mZXJpb3JzIGNvbnRyb2xsZWQgYnkgQHZhbHVle0dEQk59Ci0rdmlhIG9iamVj dHMgb2YgdGhlIEBjb2Rle2dkYi5JbmZlcmlvcn0gY2xhc3MuCi0rCi0rVGhlIGZvbGxvd2luZyBp bmZlcmlvci1yZWxhdGVkIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIGluIHRoZSBAY29kZXtnZGJ9 Ci0rbW9kdWxlOgotKwotK0BkZWZ1biBpbmZlcmlvcnMKLStSZXR1cm4gYSB0dXBsZSBjb250YWlu aW5nIGFsbCBpbmZlcmlvciBvYmplY3RzLgotK0BlbmQgZGVmdW4KLSsKLStBIEBjb2Rle2dkYi5J bmZlcmlvcn0gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6Ci0rCi0rQHRhYmxl IEBjb2RlCi0rQGRlZml2YXIgSW5mZXJpb3IgbnVtIAotK0lEIG9mIGluZmVyaW9yLCBhcyBhc3Np Z25lZCBieSBHREIuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2YXIgSW5mZXJpb3IgcGlkIAot K1Byb2Nlc3MgSUQgb2YgdGhlIGluZmVyaW9yLCBhc3NpZ25lZCBieSB0aGUgdW5kZXJseWluZyBP Uy4KLStAZW5kIGRlZml2YXIKLSsKLStAZGVmaXZhciBJbmZlcmlvciB3YXNfYXR0YWNoZWQKLStC b29sZWFuIHNpZ25hbGluZyB3aGV0aGVyIHRoZSBpbmZlcmlvciB3YXMgY3JlYXRlZCB1c2luZyBg YXR0YWNoJywgb3IKLStzdGFydGVkIGJ5IEB2YWx1ZXtHREJOfSBpdHNlbGYuCi0rQGVuZCBkZWZp dmFyCi0rQGVuZCB0YWJsZQotKwotK0EgQGNvZGV7Z2RiLkluZmVyaW9yfSBvYmplY3QgaGFzIHRo ZSBmb2xsb3dpbmcgbWV0aG9kczoKLSsKLStAdGFibGUgQGNvZGUKLStAZGVmbWV0aG9kIEluZmVy aW9yIHRocmVhZHMgCi0rVGhpcyBtZXRob2QgcmV0dXJucyBhIHR1cGxlIGhvbGRpbmcgYWxsIHRo ZSB0aHJlYWRzIHdoaWNoIGFyZSB2YWxpZAotK3doZW4gaXQgaXMgY2FsbGVkLiAgSWYgdGhlcmUg YXJlIG5vIHZhbGlkIHRocmVhZHMsIHRoZSBtZXRob2Qgd2lsbAotK3JldHVybiBhbiBlbXB0eSBs aXN0LgotK0BlbmQgZGVmbWV0aG9kCi0rCi0rQGZpbmRleCBnZGIucmVhZF9tZW1vcnkKLStAZGVm bWV0aG9kIEluZmVyaW9yIHJlYWRfbWVtb3J5IEB2YXJ7YWRkcmVzc30gQHZhcntsZW5ndGh9Ci0r UmVhZCBAdmFye2xlbmd0aH0gYnl0ZXMgb2YgbWVtb3J5IGZyb20gdGhlIGluZmVyaW9yLCBzdGFy dGluZyBhdAotK0B2YXJ7YWRkcmVzc30uICBSZXR1cm5zIGEgYnVmZmVyIG9iamVjdCwgd2hpY2gg YmVoYXZlcyBtdWNoIGxpa2UgYW4gYXJyYXkKLStvciBhIHN0cmluZy4gSXQgY2FuIGJlIG1vZGlm aWVkIGFuZCBnaXZlbiB0byB0aGUgQGNvZGV7Z2RiLndyaXRlX21lbW9yeX0KLStmdW5jdGlvbi4K LStAZW5kIGRlZm1ldGhvZAotKwotK0BmaW5kZXggZ2RiLndyaXRlX21lbW9yeQotK0BkZWZtZXRo b2QgSW5mZXJpb3Igd3JpdGVfbWVtb3J5IEB2YXJ7YWRkcmVzc30gQHZhcntidWZmZXJ9IEBye1t9 QHZhcntsZW5ndGh9QHJ7XX0KLStXcml0ZSB0aGUgY29udGVudHMgb2YgQHZhcntidWZmZXJ9IChh IFB5dGhvbiBvYmplY3Qgd2hpY2ggc3VwcG9ydHMgdGhlCi0rYnVmZmVyIHByb3RvY29sLCBpLmUu LCBhIHN0cmluZywgYW4gYXJyYXkgb3IgdGhlIG9iamVjdCByZXR1cm5lZCBmcm9tCi0rQGNvZGV7 Z2RiLnJlYWRfbWVtb3J5fSkgdG8gdGhlIGluZmVyaW9yLCBzdGFydGluZyBhdCBAdmFye2FkZHJl c3N9LgotK0lmIGdpdmVuLCBAdmFye2xlbmd0aH0gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGJ5 dGVzIGZyb20gQHZhcntidWZmZXJ9IHRvCi0rYmUgd3JpdHRlbi4KLStAZW5kIGRlZm1ldGhvZAot KwotK0BmaW5kZXggZ2RiLnNlYXJjaF9tZW1vcnkKLStAZGVmbWV0aG9kIEluZmVyaW9yIHNlYXJj aF9tZW1vcnkgQHZhcnthZGRyZXNzfSBAdmFye2xlbmd0aH0gQHZhcntwYXR0ZXJufSBAcntbfUB2 YXJ7c2l6ZX1AcntdfSBAcntbfUB2YXJ7bWF4X2NvdW50fUBye119Ci0rU2VhcmNoIGEgcmVnaW9u IG9mIHRoZSBpbmZlcmlvciBtZW1vcnkgc3RhcnRpbmcgYXQgQHZhcnthZGRyZXNzfSB3aXRoIHRo ZQotK2dpdmVuIEB2YXJ7bGVuZ3RofS4gIEB2YXJ7cGF0dGVybn0gY2FuIGJlIGEgc3RyaW5nLCBh IGJ5dGUgYXJyYXksIGEgYnVmZmVyCi0rb2JqZWN0LCBhIG51bWJlciwgYSBAY29kZXtnZGIuVmFs dWV9IG9iamVjdCAoQHB4cmVme1ZhbHVlcyBGcm9tIEluZmVyaW9yfSkKLStvciBhIGxpc3Qgb3Ig dHVwbGUgd2l0aCBlbGVtZW50cyBpbiBhbnkgY29tYmluYXRpb24gb2YgdGhvc2UgdHlwZXMuICBJ ZgotK0B2YXJ7c2l6ZX0gaXMgZ2l2ZW4gYW5kIGlzIG5vbi16ZXJvLCBpdCBzcGVjaWZpZXMgdGhl IHNpemUgaW4gYnl0ZXMgb2YgYQotK1B5dGhvbiBzY2FsYXIgb3IgQGNvZGV7Z2RiLlZhbHVlfSBp biB0aGUgc2VhcmNoIHBhdHRlcm4uICBJZiBAdmFye3NpemV9IGlzCi0remVybyBvciBub3Qgc3Bl Y2lmaWVkLCBpdCBpcyB0YWtlbiBmcm9tIHRoZSB2YWx1ZSdzIHR5cGUgaW4gdGhlIGN1cnJlbnQK LStsYW5ndWFnZS4gIFRoaXMgaXMgdXNlZnVsIHdoZW4gb25lIHdhbnRzIHRvIHNwZWNpZnkgdGhl IHNlYXJjaCBwYXR0ZXJuIGFzCi0rYSBtaXh0dXJlIG9mIHR5cGVzLiAgTm90ZSB0aGF0IHRoaXMg bWVhbnMsIGZvciBleGFtcGxlLCB0aGF0IGluIHRoZSBjYXNlIG9mCi0rQy1saWtlIGxhbmd1YWdl cyBhIHNlYXJjaCBmb3IgYW4gdW50eXBlZCAweDQyIHdpbGwgc2VhcmNoIGZvcgotK0BzYW1weyhp bnQpIDB4NDJ9IHdoaWNoIGlzIHR5cGljYWxseSBmb3VyIGJ5dGVzLiAgQHZhcnttYXhfY291bnR9 IGlzIHRoZQotK2hpZ2hlc3QgbnVtYmVyIG9mIG1hdGNoZXMgdG8gc2VhcmNoIGZvci4KLStAZW5k IGRlZm1ldGhvZAotK0BlbmQgdGFibGUKLSsKLStAbm9kZSBUaHJlYWRzIEluIFB5dGhvbgotK0Bz dWJzdWJzZWN0aW9uIFRocmVhZHMgSW4gUHl0aG9uCi0rCi0rUHl0aG9uIHNjcmlwdHMgY2FuIGFj Y2VzcyBpbmZvcm1hdGlvbiBhYm91dCBhbmQgbWFuaXB1bGF0ZSBpbmZlcmlvciB0aHJlYWRzCi0r Y29udHJvbGxlZCBieSBAdmFsdWV7R0RCTn0gdmlhIG9iamVjdHMgb2YgdGhlIEBjb2Rle2dkYi5J bmZlcmlvclRocmVhZH0gY2xhc3MuCi0rCi0rVGhlIGZvbGxvd2luZyBpbmZlcmlvci1yZWxhdGVk IGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIGluIHRoZSBAY29kZXtnZGJ9Ci0rbW9kdWxlOgotKwot K0BmaW5kZXggZ2RiLnNlbGVjdGVkX3RocmVhZAotK0BkZWZ1biBzZWxlY3RlZF90aHJlYWQKLStU aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRocmVhZCBvYmplY3QgZm9yIHRoZSBzZWxlY3RlZCB0 aHJlYWQuICBJZiB0aGVyZQotK2lzIG5vIHNlbGVjdGVkIHRocmVhZCwgdGhpcyB3aWxsIHJldHVy biBAY29kZXtOb25lfS4KLStAZW5kIGRlZnVuCi0rCi0rQSBAY29kZXtnZGIuSW5mZXJpb3JUaHJl YWR9IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgotKwotK0B0YWJsZSBAY29k ZQotK0BkZWZpdmFyIEluZmVyaW9yVGhyZWFkIG51bSAKLStJRCBvZiB0aGUgdGhyZWFkLCBhcyBh c3NpZ25lZCBieSBHREIuCi0rQGVuZCBkZWZpdmFyCi0rQGVuZCB0YWJsZQotKwotK0EgQGNvZGV7 Z2RiLkluZmVyaW9yVGhyZWFkfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLSsK LStAdGFibGUgQGNvZGUKLStAZGVmbWV0aG9kIEluZmVyaW9yVGhyZWFkIGZyYW1lcwotK1JldHVy biBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIGZyYW1lcyBpbiB0aGUgdGhyZWFkLgotK0BlbmQgZGVm bWV0aG9kCi0rCi0rQGRlZm1ldGhvZCBJbmZlcmlvclRocmVhZCBuZXdlc3RfZnJhbWUKLStSZXR1 cm4gdGhlIG5ld2VzdCBmcmFtZSB0aHJlYWQncyBzdGFjay4KLStAZW5kIGRlZm1ldGhvZAotKwot K0BkZWZtZXRob2QgSW5mZXJpb3JUaHJlYWQgc3dpdGNoX3RvX3RocmVhZCAKLStUaGlzIGNoYW5n ZXMgQHZhbHVle0dEQk59J3MgY3VycmVudGx5IHNlbGVjdGVkIHRocmVhZCB0byB0aGUgb25lIHJl cHJlc2VudGVkCi0rYnkgdGhpcyBvYmplY3QuCi0rQGVuZCBkZWZtZXRob2QKLStAZW5kIHRhYmxl Ci0rCi0gQG5vZGUgQ29tbWFuZHMgSW4gUHl0aG9uCi0gQHN1YnN1YnNlY3Rpb24gQ29tbWFuZHMg SW4gUHl0aG9uCi0gCi1AQCAtMjA2MDIsNiArMjA3NzYsMTM1IEBAIHJlZ2lzdHJhdGlvbiBvZiB0 aGUgY29tbWFuZCB3aXRoIEB2YWx1ZXtHREJOfS4gIERlcGVuZGluZyBvbiBob3cgdGhlCi0gUHl0 aG9uIGNvZGUgaXMgcmVhZCBpbnRvIEB2YWx1ZXtHREJOfSwgeW91IG1heSBuZWVkIHRvIGltcG9y dCB0aGUKLSBAY29kZXtnZGJ9IG1vZHVsZSBleHBsaWNpdGx5LgotIAotK0Bub2RlIFBhcmFtZXRl cnMgSW4gUHl0aG9uCi0rQHN1YnN1YnNlY3Rpb24gUGFyYW1ldGVycyBJbiBQeXRob24KLSsKLStA Y2luZGV4IHBhcmFtZXRlcnMgaW4gcHl0aG9uCi0rQGNpbmRleCBweXRob24gcGFyYW1ldGVycwot K0B0aW5kZXggZ2RiLlBhcmFtZXRlcgotK0B0aW5kZXggUGFyYW1ldGVyCi0rWW91IGNhbiBpbXBs ZW1lbnQgbmV3IEB2YWx1ZXtHREJOfSBwYXJhbWV0ZXJzIHVzaW5nIFB5dGhvbi4gIEEgbmV3Ci0r cGFyYW1ldGVyIGlzIGltcGxlbWVudGVkIGFzIGFuIGluc3RhbmNlIG9mIHRoZSBAY29kZXtnZGIu UGFyYW1ldGVyfQotK2NsYXNzLiAgUGFyYW1ldGVycyBhcmUgZXhwb3NlZCB0byB0aGUgdXNlciB2 aWEgdGhlIEBjb2Rle3NldH0gYW5kCi0rQGNvZGV7c2hvd30gY29tbWFuZHMuCi0rCi0rQGRlZm1l dGhvZCBQYXJhbWV0ZXIgX19pbml0X18gbmFtZSBAdmFye2NvbW1hbmQtY2xhc3N9IEB2YXJ7cGFy YW1ldGVyLWNsYXNzfSBAcntbfUB2YXJ7ZW51bS1zZXF1ZW5jZX1AcntdfQotK1RoZSBvYmplY3Qg aW5pdGlhbGl6ZXIgZm9yIEBjb2Rle1BhcmFtZXRlcn0gcmVnaXN0ZXJzIHRoZSBuZXcKLStwYXJh bWV0ZXIgd2l0aCBAdmFsdWV7R0RCTn0uICBUaGlzIGluaXRpYWxpemVyIGlzIG5vcm1hbGx5IGlu dm9rZWQKLStmcm9tIHRoZSBzdWJjbGFzcycgb3duIEBjb2Rle19faW5pdF9ffSBtZXRob2QuCi0r Ci0rQHZhcntuYW1lfSBpcyB0aGUgbmFtZSBvZiB0aGUgbmV3IHBhcmFtZXRlci4gIElmIEB2YXJ7 bmFtZX0gY29uc2lzdHMKLStvZiBtdWx0aXBsZSB3b3JkcywgdGhlbiB0aGUgaW5pdGlhbCB3b3Jk cyBhcmUgbG9va2VkIGZvciBhcyBwcmVmaXgKLStjb21tYW5kcy4gIEluIHRoaXMgY2FzZSwgaWYg b25lIG9mIHRoZSBwcmVmaXggY29tbWFuZHMgZG9lcyBub3QgZXhpc3QsCi0rYW4gZXhjZXB0aW9u IGlzIHJhaXNlZC4KLSsKLStAdmFye2NvbW1hbmQtY2xhc3N9IHNob3VsZCBiZSBvbmUgb2YgdGhl IEBzYW1we0NPTU1BTkRffSBjb25zdGFudHMKLSsoQHB4cmVme0NvbW1hbmRzIEluIFB5dGhvbn0p LiAgVGhpcyBhcmd1bWVudCB0ZWxscyBAdmFsdWV7R0RCTn0gaG93IHRvCi0rY2F0ZWdvcml6ZSB0 aGUgbmV3IHBhcmFtZXRlciBpbiB0aGUgaGVscCBzeXN0ZW0uCi0rCi0rQHZhcntwYXJhbWV0ZXIt Y2xhc3N9IHNob3VsZCBiZSBvbmUgb2YgdGhlIEBzYW1we1BBUkFNX30gY29uc3RhbnRzCi0rZGVm aW5lZCBiZWxvdy4gIFRoaXMgYXJndW1lbnQgdGVsbHMgQHZhbHVle0dEQk59IHRoZSB0eXBlIG9m IHRoZSBuZXcKLStwYXJhbWV0ZXI7IHRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3IgaW5wdXQg dmFsaWRhdGlvbiBhbmQKLStjb21wbGV0aW9uLgotKwotK0lmIEB2YXJ7cGFyYW1ldGVyLWNsYXNz fSBpcyBAY29kZXtQQVJBTV9FTlVNfSwgdGhlbgotK0B2YXJ7ZW51bS1zZXF1ZW5jZX0gbXVzdCBi ZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MuICBUaGVzZSBzdHJpbmdzCi0rcmVwcmVzZW50IHRoZSBw b3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBwYXJhbWV0ZXIuCi0rCi0rSWYgQHZhcntwYXJhbWV0ZXIt Y2xhc3N9IGlzIG5vdCBAY29kZXtQQVJBTV9FTlVNfSwgdGhlbiB0aGUgcHJlc2VuY2UKLStvZiBh IGZvdXJ0aCBhcmd1bWVudCB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbiB0byBiZSB0aHJvd24uCi0r Ci0rVGhlIGhlbHAgdGV4dCBmb3IgdGhlIG5ldyBwYXJhbWV0ZXIgaXMgdGFrZW4gZnJvbSB0aGUg UHl0aG9uCi0rZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIHRoZSBwYXJhbWV0ZXIncyBjbGFzcywg aWYgdGhlcmUgaXMgb25lLiAgSWYKLSt0aGVyZSBpcyBubyBkb2N1bWVudGF0aW9uIHN0cmluZywg YSBkZWZhdWx0IHZhbHVlIGlzIHVzZWQuCi0rQGVuZCBkZWZtZXRob2QKLSsKLStAZGVmaXZhciBQ YXJhbWV0ZXIgc2V0X2RvYwotK0lmIHRoaXMgYXR0cmlidXRlIGV4aXN0cywgYW5kIGlzIGEgc3Ry aW5nLCB0aGVuIGl0cyB2YWx1ZSBpcyB1c2VkIGFzCi0rdGhlIGhlbHAgdGV4dCBmb3IgdGhpcyBw YXJhbWV0ZXIncyBAY29kZXtzZXR9IGNvbW1hbmQuICBUaGUgdmFsdWUgaXMKLStleGFtaW5lZCB3 aGVuIEBjb2Rle1BhcmFtZXRlci5fX2luaXRfX30gaXMgaW52b2tlZDsgc3Vic2VxdWVudCBjaGFu Z2VzCi0raGF2ZSBubyBlZmZlY3QuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2YXIgUGFyYW1l dGVyIHNob3dfZG9jCi0rSWYgdGhpcyBhdHRyaWJ1dGUgZXhpc3RzLCBhbmQgaXMgYSBzdHJpbmcs IHRoZW4gaXRzIHZhbHVlIGlzIHVzZWQgYXMKLSt0aGUgaGVscCB0ZXh0IGZvciB0aGlzIHBhcmFt ZXRlcidzIEBjb2Rle3Nob3d9IGNvbW1hbmQuICBUaGUgdmFsdWUgaXMKLStleGFtaW5lZCB3aGVu IEBjb2Rle1BhcmFtZXRlci5fX2luaXRfX30gaXMgaW52b2tlZDsgc3Vic2VxdWVudCBjaGFuZ2Vz Ci0raGF2ZSBubyBlZmZlY3QuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2YXIgUGFyYW1ldGVy IHZhbHVlCi0rVGhlIEBjb2Rle3ZhbHVlfSBhdHRyaWJ1dGUgaG9sZHMgdGhlIHVuZGVybHlpbmcg dmFsdWUgb2YgdGhlCi0rcGFyYW1ldGVyLiAgSXQgY2FuIGJlIHJlYWQgYW5kIGFzc2lnbmVkIHRv IGp1c3QgYXMgYW55IG90aGVyCi0rYXR0cmlidXRlLiAgQHZhbHVle0dEQk59IGRvZXMgdmFsaWRh dGlvbiB3aGVuIGFzc2lnbm1lbnRzIGFyZSBtYWRlLgotK0BlbmQgZGVmaXZhcgotKwotKwotK1do ZW4gYSBuZXcgcGFyYW1ldGVyIGlzIGRlZmluZWQsIGl0cyB0eXBlIG11c3QgYmUgc3BlY2lmaWVk LiAgVGhlCi0rYXZhaWxhYmxlIHR5cGVzIGFyZSByZXByZXNlbnRlZCBieSBjb25zdGFudHMgZGVm aW5lZCBpbiB0aGUgQGNvZGV7Z2RifQotK21vZHVsZToKLSsKLStAdGFibGUgQGNvZGUKLStAZmlu ZGV4IFBBUkFNX0JPT0xFQU4KLStAZmluZGV4IGdkYi5QQVJBTV9CT09MRUFOCi0rQGl0ZW0gUEFS QU1fQk9PTEVBTgotK1RoZSB2YWx1ZSBpcyBhIHBsYWluIGJvb2xlYW4uICBUaGUgUHl0aG9uIGJv b2xlYW4gdmFsdWVzLCBAY29kZXtUcnVlfQotK2FuZCBAY29kZXtGYWxzZX0gYXJlIHRoZSBvbmx5 IHZhbGlkIHZhbHVlcy4KLSsKLStAZmluZGV4IFBBUkFNX0FVVE9fQk9PTEVBTgotK0BmaW5kZXgg Z2RiLlBBUkFNX0FVVE9fQk9PTEVBTgotK0BpdGVtIFBBUkFNX0FVVE9fQk9PTEVBTgotK1RoZSB2 YWx1ZSBoYXMgdGhyZWUgcG9zc2libGUgc3RhdGVzOiB0cnVlLCBmYWxzZSwgYW5kIEBzYW1we2F1 dG99LiAgSW4KLStQeXRob24sIHRydWUgYW5kIGZhbHNlIGFyZSByZXByZXNlbnRlZCB1c2luZyBi b29sZWFuIGNvbnN0YW50cywgYW5kCi0rQHNhbXB7YXV0b30gaXMgcmVwcmVzZW50ZWQgdXNpbmcg QGNvZGV7Tm9uZX0uCi0rCi0rQGZpbmRleCBQQVJBTV9VSU5URUdFUgotK0BmaW5kZXggZ2RiLlBB UkFNX1VJTlRFR0VSCi0rQGl0ZW0gUEFSQU1fVUlOVEVHRVIKLStUaGUgdmFsdWUgaXMgYW4gdW5z aWduZWQgaW50ZWdlci4gIFRoZSB2YWx1ZSBvZiAwIHNob3VsZCBiZQotK2ludGVycHJldGVkIHRv IG1lYW4gYGB1bmxpbWl0ZWQnJy4KLSsKLStAZmluZGV4IFBBUkFNX0lOVEVHRVIKLStAZmluZGV4 IGdkYi5QQVJBTV9JTlRFR0VSCi0rQGl0ZW0gUEFSQU1fSU5URUdFUgotK1RoZSB2YWx1ZSBpcyBh IHNpZ25lZCBpbnRlZ2VyLiAgVGhlIHZhbHVlIG9mIDAgc2hvdWxkIGJlIGludGVycHJldGVkCi0r dG8gbWVhbiBgYHVubGltaXRlZCcnLgotKwotK0BmaW5kZXggUEFSQU1fU1RSSU5HCi0rQGZpbmRl eCBnZGIuUEFSQU1fU1RSSU5HCi0rQGl0ZW0gUEFSQU1fU1RSSU5HCi0rVGhlIHZhbHVlIGlzIGEg c3RyaW5nLiAgV2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgc3RyaW5nLCBlc2NhcGVzIGFyZQot K3RyYW5zbGF0ZWQuCi0rCi0rQGZpbmRleCBQQVJBTV9TVFJJTkdfTk9FU0NBUEUKLStAZmluZGV4 IGdkYi5QQVJBTV9TVFJJTkdfTk9FU0NBUEUKLStAaXRlbSBQQVJBTV9TVFJJTkdfTk9FU0NBUEUK LStUaGUgdmFsdWUgaXMgYSBzdHJpbmcuICBXaGVuIHRoZSB1c2VyIG1vZGlmaWVzIHRoZSBzdHJp bmcsIGVzY2FwZXMgYXJlCi0rcGFzc2VkIHRocm91Z2ggdW50cmFuc2xhdGVkLgotKwotK0BmaW5k ZXggUEFSQU1fT1BUSU9OQUxfRklMRU5BTUUKLStAZmluZGV4IGdkYi5QQVJBTV9PUFRJT05BTF9G SUxFTkFNRQotK0BpdGVtIFBBUkFNX09QVElPTkFMX0ZJTEVOQU1FCi0rVGhlIHZhbHVlIGlzIGEg ZWl0aGVyIGEgZmlsZW5hbWUgKGEgc3RyaW5nKSwgb3IgQGNvZGV7Tm9uZX0uCi0rCi0rQGZpbmRl eCBQQVJBTV9GSUxFTkFNRQotK0BmaW5kZXggZ2RiLlBBUkFNX0ZJTEVOQU1FCi0rQGl0ZW0gUEFS QU1fRklMRU5BTUUKLStUaGUgdmFsdWUgaXMgYSBmaWxlbmFtZSAoYSBzdHJpbmcpLgotKwotK0Bm aW5kZXggUEFSQU1fWklOVEVHRVIKLStAZmluZGV4IGdkYi5QQVJBTV9aSU5URUdFUgotK0BpdGVt IFBBUkFNX1pJTlRFR0VSCi0rVGhlIHZhbHVlIGlzIGFuIGludGVnZXIuICBUaGlzIGlzIGxpa2Ug QGNvZGV7UEFSQU1fSU5URUdFUn0sIGV4Y2VwdCAwCi0raXMgaW50ZXJwcmV0ZWQgYXMgaXRzZWxm LgotKwotK0BmaW5kZXggUEFSQU1fRU5VTQotK0BmaW5kZXggZ2RiLlBBUkFNX0VOVU0KLStAaXRl bSBQQVJBTV9FTlVNCi0rVGhlIHZhbHVlIGlzIGEgc3RyaW5nLCB3aGljaCBtdXN0IGJlIG9uZSBv ZiBhIGNvbGxlY3Rpb24gc3RyaW5nCi0rY29uc3RhbnRzIHByb3ZpZGVkIHdoZW4gdGhlIHBhcmFt ZXRlciBpcyBjcmVhdGVkLgotK0BlbmQgdGFibGUKLSsKLSBAbm9kZSBGdW5jdGlvbnMgSW4gUHl0 aG9uCi0gQHN1YnN1YnNlY3Rpb24gV3JpdGluZyBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb25zCi0g Ci1AQCAtMjA3MDYsNiArMjEwMDksODIgQEAgd2hpY2ggaXMgdXNlZCB0byBmb3JtYXQgdGhlIHZh bHVlLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nfSwgZm9yIG1vcmUKLSBpbmZvcm1hdGlvbi4KLSBA ZW5kIGRlZml2YXIKLSAKLStAbm9kZSBCcmVha3BvaW50cyBJbiBQeXRob24KLStAc3Vic3Vic2Vj dGlvbiBNYW5pcHVsYXRpbmcgYnJlYWtwb2ludHMgdXNpbmcgUHl0aG9uCi0rCi0rQGNpbmRleCBi cmVha3BvaW50cyBpbiBweXRob24KLStAY2luZGV4IHB5dGhvbiBicmVha3BvaW50cwotK0B0aW5k ZXggZ2RiLkJyZWFrcG9pbnQKLStAdGluZGV4IEJyZWFrcG9pbnQKLStQeXRob24gY29kZSBjYW4g bWFuaXB1bGF0ZSBicmVha3BvaW50cyB2aWEgdGhlIEBjb2Rle2dkYi5CcmVha3BvaW50fQotK2Ns YXNzLgotKwotK0BkZWZtZXRob2QgQnJlYWtwb2ludCBfX2luaXRfXyBsb2NhdGlvbgotK0NyZWF0 ZSBhIG5ldyBicmVha3BvaW50LiAgQHZhcntsb2NhdGlvbn0gaXMgYSBzdHJpbmcgbmFtaW5nIHRo ZQotK2xvY2F0aW9uIG9mIHRoZSBicmVha3BvaW50LiAgVGhlIGNvbnRlbnRzIGNhbiBiZSBhbnkg bG9jYXRpb24KLStyZWNvZ25pemVkIGJ5IHRoZSBAY29kZXticmVha30gY29tbWFuZC4KLStAZW5k IGRlZm1ldGhvZAotKwotK0BkZWZtZXRob2QgQnJlYWtwb2ludCBpc192YWxpZAotK1JldHVybiBA Y29kZXtUcnVlfSBpZiB0aGlzIEBjb2Rle0JyZWFrcG9pbnR9IG9iamVjdCBpcyB2YWxpZCwKLStA Y29kZXtGYWxzZX0gb3RoZXJ3aXNlLiAgQSBAY29kZXtCcmVha3BvaW50fSBvYmplY3QgY2FuIGJl Y29tZSBpbnZhbGlkCi0raWYgdGhlIHVzZXIgZGVsZXRlcyB0aGUgYnJlYWtwb2ludC4gIEluIHRo aXMgY2FzZSwgdGhlIG9iamVjdCBzdGlsbAotK2V4aXN0cywgYnV0IHRoZSB1bmRlcmx5aW5nIGJy ZWFrcG9pbnQgZG9lcyBub3QuCi0rQGVuZCBkZWZtZXRob2QKLSsKLStAZGVmaXZhciBCcmVha3Bv aW50IGVuYWJsZWQKLStUaGlzIGF0dHJpYnV0ZSBpcyBAY29kZXtUcnVlfSBpZiB0aGUgYnJlYWtw b2ludCBpcyBlbmFibGVkLCBhbmQKLStAY29kZXtGYWxzZX0gb3RoZXJ3aXNlLiAgVGhpcyBhdHRy aWJ1dGUgaXMgd3JpdGFibGUuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2YXIgQnJlYWtwb2lu dCBzaWxlbnQKLStUaGlzIGF0dHJpYnV0ZSBpcyBAY29kZXtUcnVlfSBpZiB0aGUgYnJlYWtwb2lu dCBpcyBzaWxlbnQsIGFuZAotK0Bjb2Rle0ZhbHNlfSBvdGhlcndpc2UuICBUaGlzIGF0dHJpYnV0 ZSBpcyB3cml0YWJsZS4KLSsKLStOb3RlIHRoYXQgYSBicmVha3BvaW50IGNhbiBhbHNvIGJlIHNp bGVudCBpZiBpdCBoYXMgY29tbWFuZHMgYW5kIHRoZQotK2ZpcnN0IGNvbW1hbmQgaXMgQGNvZGV7 c2lsZW50fS4gIFRoaXMgaXMgbm90IHJlcG9ydGVkIGJ5IHRoZQotK0Bjb2Rle3NpbGVudH0gYXR0 cmlidXRlLgotK0BlbmQgZGVmaXZhcgotKwotK0BkZWZpdmFyIEJyZWFrcG9pbnQgdGhyZWFkCi0r SWYgdGhlIGJyZWFrcG9pbnQgaXMgdGhyZWFkLXNwZWNpZmljLCB0aGlzIGF0dHJpYnV0ZSBob2xk cyB0aGUgdGhyZWFkCi0raWQuICBJZiB0aGUgYnJlYWtwb2ludCBpcyBub3QgdGhyZWFkLXNwZWNp ZmljLCB0aGlzIGF0dHJpYnV0ZSBpcwotK0Bjb2Rle05vbmV9LiAgVGhpcyBhdHRyaWJ1dGUgaXMg d3JpdGFibGUuCi0rQGVuZCBkZWZpdmFyCi0rCi0rQGRlZml2YXIgQnJlYWtwb2ludCBpZ25vcmVf Y291bnQKLStUaGlzIGF0dHJpYnV0ZSBob2xkcyB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgYnJl YWtwb2ludCwgYW4gaW50ZWdlci4KLStUaGlzIGF0dHJpYnV0ZSBpcyB3cml0YWJsZS4KLStAZW5k IGRlZml2YXIKLSsKLStAZGVmaXZhciBCcmVha3BvaW50IG51bWJlcgotK1RoaXMgYXR0cmlidXRl IGhvbGRzIHRoZSBicmVha3BvaW50J3MgbnVtYmVyIC0tIHRoZSBpZGVudGlmaWVyIHVzZWQgYnkK LSt0aGUgdXNlciB0byBtYW5pcHVsYXRlIHRoZSBicmVha3BvaW50LiAgVGhpcyBhdHRyaWJ1dGUg aXMgbm90IHdyaXRhYmxlLgotK0BlbmQgZGVmaXZhcgotKwotK0BkZWZpdmFyIEJyZWFrcG9pbnQg aGl0X2NvdW50Ci0rVGhpcyBhdHRyaWJ1dGUgaG9sZHMgdGhlIGhpdCBjb3VudCBmb3IgdGhlIGJy ZWFrcG9pbnQsIGFuIGludGVnZXIuCi0rVGhpcyBhdHRyaWJ1dGUgaXMgd3JpdGFibGUsIGJ1dCBj dXJyZW50bHkgaXQgY2FuIG9ubHkgYmUgc2V0IHRvIHplcm8uCi0rQGVuZCBkZWZpdmFyCi0rCi0r QGRlZml2YXIgQnJlYWtwb2ludCBsb2NhdGlvbgotK1RoaXMgYXR0cmlidXRlIGhvbGRzIHRoZSBs b2NhdGlvbiBvZiB0aGUgYnJlYWtwb2ludCwgYXMgc3BlY2lmaWVkIGJ5Ci0rdGhlIHVzZXIuICBJ dCBpcyBhIHN0cmluZy4gIFRoaXMgYXR0cmlidXRlIGlzIG5vdCB3cml0YWJsZS4KLStAZW5kIGRl Zml2YXIKLSsKLStAZGVmaXZhciBCcmVha3BvaW50IGNvbmRpdGlvbgotK1RoaXMgYXR0cmlidXRl IGhvbGRzIHRoZSBjb25kaXRpb24gb2YgdGhlIGJyZWFrcG9pbnQsIGFzIHNwZWNpZmllZCBieQot K3RoZSB1c2VyLiAgSXQgaXMgYSBzdHJpbmcuICBJZiB0aGVyZSBpcyBubyBjb25kaXRpb24sIHRo aXMgYXR0cmlidXRlJ3MKLSt2YWx1ZSBpcyBAY29kZXtOb25lfS4gIFRoaXMgYXR0cmlidXRlIGlz IHdyaXRhYmxlLgotK0BlbmQgZGVmaXZhcgotKwotK0BkZWZpdmFyIEJyZWFrcG9pbnQgY29tbWFu ZHMKLStUaGlzIGF0dHJpYnV0ZSBob2xkcyB0aGUgY29tbWFuZHMgYXR0YWNoZWQgdG8gdGhlIGJy ZWFrcG9pbnQuICBJZgotK3RoZXJlIGFyZSBjb21tYW5kcywgdGhpcyByZXR1cm5zIGEgc3RyaW5n IGhvbGRpbmcgYWxsIHRoZSBjb21tYW5kcywKLStzZXBhcmF0ZWQgYnkgbmV3bGluZXMuICBJZiB0 aGVyZSBhcmUgbm8gY29tbWFuZHMsIHRoaXMgYXR0cmlidXRlIGlzCi0rQGNvZGV7Tm9uZX0uICBU aGlzIGF0dHJpYnV0ZSBpcyBub3Qgd3JpdGFibGUuCi0rQGVuZCBkZWZpdmFyCi0rCi0gQG5vZGUg RnJhbWVzIEluIFB5dGhvbgotIEBzdWJzdWJzZWN0aW9uIEFjZXNzaW5nIGluZmVyaW9yIHN0YWNr IGZyYW1lcyBmcm9tIFB5dGhvbi4KLSAKLUBAIC0yMDc3MCw2ICsyMTE0OSwxNCBAQCBmdW5jdGlv biB0byBhIHN0cmluZy4KLSBSZXR1cm5zIHRoZSBmcmFtZSdzIHJlc3VtZSBhZGRyZXNzLgotIEBl bmQgZGVmbWV0aG9kCi0gCi0rQGRlZm1ldGhvZCBGcmFtZSBibG9jawotK1JldHVybnMgdGhlIGZy YW1lJ3MgY29kZSBibG9jay4gQGMgKEBweHJlZntCbG9jaywsQ29kZSBCbG9ja3MgYW5kIFNjb3Bl c30pLgotK0BlbmQgZGVmbWV0aG9kCi0rCi0rQGRlZm1ldGhvZCBGcmFtZSBmdW5jdGlvbgotK1Jl dHVybnMgdGhlIHN5bWJvbCBmb3IgdGhlIGZ1bmN0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBm cmFtZS4gQGMgKEBweHJlZntTeW1ib2xzIEluIFB5dGhvbn0pLgotK0BlbmQgZGVmbWV0aG9kCi0r Ci0gQGRlZm1ldGhvZCBGcmFtZSBvbGRlcgotIFJldHVybiB0aGUgZnJhbWUgdGhhdCBjYWxsZWQg dGhpcyBmcmFtZS4KLSBAZW5kIGRlZm1ldGhvZAotQEAgLTIwNzc4LDEwICsyMTE2NSwxOCBAQCBS ZXR1cm4gdGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRoaXMgZnJhbWUuCi0gUmV0dXJuIHRoZSBmcmFt ZSBjYWxsZWQgYnkgdGhpcyBmcmFtZS4KLSBAZW5kIGRlZm1ldGhvZAotIAotK0BkZWZtZXRob2Qg RnJhbWUgZmluZF9zYWwKLStSZXR1cm4gdGhlIGZyYW1lJ3Mgc3ltdGFiIGFuZCBsaW5lIG9iamVj dC4gQGMgKEBweHJlZntTeW10YWJfYW5kX2xpbmUsLCBTeW10YWIgYW5kIGxpbmV9KS4KLStAZW5k IGRlZm1ldGhvZAotKwotIEBkZWZtZXRob2QgRnJhbWUgcmVhZF92YXIgdmFyaWFibGUKLSBSZXR1 cm4gdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiB2YXJpYWJsZSBpbiB0aGlzIGZyYW1lLiAgQHZhcnt2 YXJpYWJsZX0gbXVzdAotIGJlIGEgc3RyaW5nLgotIEBlbmQgZGVmbWV0aG9kCi0rCi0rQGRlZm1l dGhvZCBGcmFtZSBzZWxlY3QKLStTZXQgdGhpcyBmcmFtZSB0byBiZSB0aGUgdXNlcidzIHNlbGVj dGVkIGZyYW1lLgotK0BlbmQgZGVmbWV0aG9kCi0gQGVuZCB0YWJsZQotIAotIEBub2RlIExhenkg U3RyaW5ncyBJbiBQeXRob24KLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYmludC50ZXhpbmZvIGIv Z2RiL2RvYy9nZGJpbnQudGV4aW5mbwotaW5kZXggNzc0MTg1NS4uZGYzZmM4NyAxMDA2NDQKLS0t LSBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiaW50LnRleGluZm8K LUBAIC0yMTA3LDYgKzIxMDcsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFuZGxl IHN5bWJvbHMgaW5jcmVtZW50YWxseS4gIEZvciBpbnN0YW5jZSwKLSB3ZSBjcmVhdGUgQGRmbntw YXJ0aWFsIHN5bWJvbCB0YWJsZXN9IGNvbnNpc3Rpbmcgb2Ygb25seSBzZWxlY3RlZAotIHN5bWJv bHMsIGFuZCBvbmx5IGV4cGFuZCB0aGVtIHRvIGZ1bGwgc3ltYm9sIHRhYmxlcyB3aGVuIG5lY2Vz c2FyeS4KKy0gIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworLSAg Y3R4LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAocGVyX2N1KTsKKy0gIGN0 eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAocGVyX2N1KTsKKy0gIGN0eC0+ YmF0b24gPSAmYmF0b247CistICBjdHgtPnJlYWRfcmVnID0gZHdhcmZfZXhwcl9yZWFkX3JlZzsK Ky0gIGN0eC0+cmVhZF9tZW0gPSBkd2FyZl9leHByX3JlYWRfbWVtOworLSAgY3R4LT5nZXRfZnJh bWVfYmFzZSA9IGR3YXJmX2V4cHJfZnJhbWVfYmFzZTsKKy0gIGN0eC0+Z2V0X2ZyYW1lX2NmYSA9 IGR3YXJmX2V4cHJfZnJhbWVfY2ZhOworLSAgY3R4LT5nZXRfdGxzX2FkZHJlc3MgPSBkd2FyZl9l eHByX3Rsc19hZGRyZXNzOworLSAgY3R4LT5kd2FyZl9jYWxsID0gZHdhcmZfZXhwcl9kd2FyZl9j YWxsOworLQorLSAgZHdhcmZfZXhwcl9ldmFsIChjdHgsIGRhdGEsIHNpemUpOworICAgaWYgKGN0 eC0+bnVtX3BpZWNlcyA+IDApCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgcGllY2VfY2xvc3VyZSAq YzsKK0BAIC05NTEsNiArMTEwNCwxMSBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCisgCSAgICBDT1JFX0FERFIg YWRkcmVzcyA9IGR3YXJmX2V4cHJfZmV0Y2hfYWRkcmVzcyAoY3R4LCAwKTsKKyAJICAgIGludCBp bl9zdGFja19tZW1vcnkgPSBkd2FyZl9leHByX2ZldGNoX2luX3N0YWNrX21lbW9yeSAoY3R4LCAw KTsKICAKLStAbWVudQotKyogU3ltYm9sIFJlYWRpbmc6OgotKyogUGFydGlhbCBTeW1ib2wgVGFi bGVzOjoKLSsqIFR5cGVzOjoKLSsqIE9iamVjdCBGaWxlIEZvcm1hdHM6OgotKyogRGVidWdnaW5n IEZpbGUgRm9ybWF0czo6Ci0rKiBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRlciB0byBHREI6Ogot KyogTWVtb3J5IE1hbmFnZW1lbnQgZm9yIFN5bWJvbCBGaWxlczo6Ci0rKiBNZW1vcnkgTWFuYWdl bWVudCBmb3IgVHlwZXM6OgotK0BlbmQgbWVudQorKwkgICAgLyogb2JqZWN0X2FkZHJlc3Nfc2V0 IGNhbGxlZCBoZXJlIGlzIHJlcXVpcmVkIGluIEFMTE9DQVRFX1ZBTFVFJ3MKKysJICAgICAgIENI RUNLX1RZUEVERUYgZm9yIHRoZSBvYmplY3QncyBwb3NzaWJsZQorKwkgICAgICAgRFdfT1BfcHVz aF9vYmplY3RfYWRkcmVzcy4gICovCisrCSAgICBvYmplY3RfYWRkcmVzc19zZXQgKGFkZHJlc3Mp OwogKwotK0Bub2RlIFN5bWJvbCBSZWFkaW5nCi0gQHNlY3Rpb24gU3ltYm9sIFJlYWRpbmcKLSAK LSBAY2luZGV4IHN5bWJvbCByZWFkaW5nCi1AQCAtMjE5OSw2ICsyMjExLDcgQEAgc3ltdGFiLiAg VXBvbiByZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91bGQgaGF2ZSBiZWVuIHNldCB0byAx LCBhbmQKLSB6ZXJvIGlmIHRoZXJlIHdlcmUgbm8gc3ltYm9scyBpbiB0aGF0IHBhcnQgb2YgdGhl IHN5bWJvbCBmaWxlLgotIEBlbmQgdGFibGUKLSAKLStAbm9kZSBQYXJ0aWFsIFN5bWJvbCBUYWJs ZXMKLSBAc2VjdGlvbiBQYXJ0aWFsIFN5bWJvbCBUYWJsZXMKLSAKLSBAdmFsdWV7R0RCTn0gaGFz IHRocmVlIHR5cGVzIG9mIHN5bWJvbCB0YWJsZXM6Ci1AQCAtMjI5NCw2ICsyMzA3LDcgQEAgYW5k IGFsbCB0aGUgcHN5bWJvbHMgdGhlbXNlbHZlcyBhcmUgYWxsb2NhdGVkIGluIGEgcGFpciBvZiBs YXJnZSBhcnJheXMKLSBvbiBhbiBvYnN0YWNrLCBzbyB0aGVyZSBpcyBsaXR0bGUgdG8gYmUgZ2Fp bmVkIGJ5IHRyeWluZyB0byBmcmVlIHRoZW0KLSB1bmxlc3MgeW91IHdhbnQgdG8gZG8gYSBsb3Qg bW9yZSB3b3JrLgotIAotK0Bub2RlIFR5cGVzCi0gQHNlY3Rpb24gVHlwZXMKLSAKLSBAdW5udW1i ZXJlZHN1YnNlYyBGdW5kYW1lbnRhbCBUeXBlcyAoZS5nLiwgQGNvZGV7RlRfVk9JRH0sIEBjb2Rl e0ZUX0JPT0xFQU59KS4KLUBAIC0yMzE2LDYgKzIzMzAsNyBAQCB0eXBlcyBtYXAgdG8gb25lIEBj b2Rle1RZUEVfQ09ERV8qfSB0eXBlLCBhbmQgYXJlIGRpc3Rpbmd1aXNoZWQgYnkKLSBvdGhlciBt ZW1iZXJzIG9mIHRoZSB0eXBlIHN0cnVjdCwgc3VjaCBhcyB3aGV0aGVyIHRoZSB0eXBlIGlzIHNp Z25lZAotIG9yIHVuc2lnbmVkLCBhbmQgaG93IG1hbnkgYml0cyBpdCB1c2VzLgorIAkgICAgcmV0 dmFsID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworIAkgICAgVkFMVUVfTFZBTCAocmV0dmFsKSA9 IGx2YWxfbWVtb3J5OworIAkgICAgc2V0X3ZhbHVlX2xhenkgKHJldHZhbCwgMSk7CitAQCAtMjU4 NiwxMSArMjc0NCw1MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJv bCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkgZGxiYXRvbi0+cGVyX2N1 KTsKKyB9CiAgCi0rQGFuY2hvcntCdWlsdGluIFR5cGVzfQotIEB1bm51bWJlcmVkc3Vic2VjIEJ1 aWx0aW4gVHlwZXMgKGUuZy4sIEBjb2Rle2J1aWx0aW5fdHlwZV92b2lkfSwgQGNvZGV7YnVpbHRp bl90eXBlX2NoYXJ9KS4KKy0vKiBUaGUgc2V0IG9mIGxvY2F0aW9uIGZ1bmN0aW9ucyB1c2VkIHdp dGggdGhlIERXQVJGLTIgZXhwcmVzc2lvbgorLSAgIGV2YWx1YXRvciBhbmQgbG9jYXRpb24gbGlz dHMuICAqLworKy8qIFRoZSBzZXQgb2YgbG9jYXRpb24gZnVuY3Rpb25zIHVzZWQgd2l0aCB0aGUg RFdBUkYtMiBsb2NhdGlvbiBsaXN0cy4gICovCisgY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRl ZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7CisgICBsb2NsaXN0X3JlYWRfdmFyaWFibGUs CisgICBsb2NsaXN0X3JlYWRfbmVlZHNfZnJhbWUsCisgICBsb2NsaXN0X2Rlc2NyaWJlX2xvY2F0 aW9uLAorICAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYKKyB9OworKworK3N0YXRpYyBzdHJ1 Y3QgdmFsdWUgKgorK21pc3NpbmdfcmVhZF92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqc3ltYm9s LCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisreworKyAgc3RydWN0IGR3YXJmMl9sb2NsaXN0 X2JhdG9uICpkbGJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW1ib2wpOworKworKyAg Z2RiX2Fzc2VydCAoZGxiYXRvbiA9PSBOVUxMKTsKKysgIGVycm9yIChfKCJVbmFibGUgdG8gcmVz b2x2ZSB2YXJpYWJsZSBcIiVzXCIiKSwgU1lNQk9MX1BSSU5UX05BTUUgKHN5bWJvbCkpOworK30K KysKKytzdGF0aWMgaW50CisrbWlzc2luZ19yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9s ICpzeW1ib2wpCisreworKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyB2b2lkCisrbWlzc2lu Z19kZXNjcmliZV9sb2NhdGlvbiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBDT1JFX0FERFIgYWRk ciwKKysJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorK3sKKysgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgXygiYSB2YXJpYWJsZSB3ZSBhcmUgdW5hYmxlIHRvIHJlc29sdmUiKSk7Cisr fQorKworK3N0YXRpYyB2b2lkCisrbWlzc2luZ190cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVjdCBz eW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrCQkJICAgIHN0cnVjdCBh Z2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUpCisreworKyAgc3RydWN0IGR3 YXJmMl9sb2NsaXN0X2JhdG9uICpkbGJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW1i b2wpOworKworKyAgZ2RiX2Fzc2VydCAoZGxiYXRvbiA9PSBOVUxMKTsKKysgIGVycm9yIChfKCJV bmFibGUgdG8gcmVzb2x2ZSB2YXJpYWJsZSBcIiVzXCIiKSwgU1lNQk9MX1BSSU5UX05BTUUgKHN5 bWJvbCkpOworK30KKysKKysvKiBUaGUgc2V0IG9mIGxvY2F0aW9uIGZ1bmN0aW9ucyB1c2VkIHdp dGggdGhlIERXQVJGLTIgZXZhbHVhdG9yIHdoZW4gd2UgYXJlCisrICAgdW5hYmxlIHRvIHJlc29s dmUgdGhlIHN5bWJvbHMuICAqLworK2NvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3 YXJmMl9taXNzaW5nX2Z1bmNzID0geworKyAgbWlzc2luZ19yZWFkX3ZhcmlhYmxlLAorKyAgbWlz c2luZ19yZWFkX25lZWRzX2ZyYW1lLAorKyAgbWlzc2luZ19kZXNjcmliZV9sb2NhdGlvbiwKKysg IG1pc3NpbmdfdHJhY2Vwb2ludF92YXJfcmVmCisrfTsKK2RpZmYgLS1naXQgYS9nZGIvZHdhcmYy bG9jLmggYi9nZGIvZHdhcmYybG9jLmgKK2luZGV4IDgyNmJjNDUuLjFlN2Q4ZGMgMTAwNjQ0Cist LS0gYS9nZGIvZHdhcmYybG9jLmgKKysrKyBiL2dkYi9kd2FyZjJsb2MuaAorQEAgLTg2LDUgKzg2 LDE0IEBAIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbgogIAotIFRoZXNlIGFyZSBpbnN0YW5j ZXMgb2YgdHlwZSBzdHJ1Y3RzIHRoYXQgcm91Z2hseSBjb3JyZXNwb25kIHRvCi1AQCAtMjMzMCw2 ICsyMzQ1LDcgQEAgb25seSBvbmUgaW5zdGFuY2UgZXhpc3RzLCB3aGlsZSBAZmlsZXtjLWxhbmcu Y30gYnVpbGRzIGFzIG1hbnkKLSBAY29kZXtUWVBFX0NPREVfSU5UfSB0eXBlcyBhcyBuZWVkZWQs IHdpdGggZWFjaCBvbmUgYXNzb2NpYXRlZCB3aXRoCi0gc29tZSBwYXJ0aWN1bGFyIG9iamZpbGUu CisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHBy X2Z1bmNzOworIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJf bG9jbGlzdF9mdW5jczsKKytleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMg ZHdhcmYyX21pc3NpbmdfZnVuY3M7CisrCisrZXh0ZXJuIHZvaWQgb2JqZWN0X2FkZHJlc3Nfc2V0 IChDT1JFX0FERFIgYWRkcmVzcyk7CisrCisrZXh0ZXJuIENPUkVfQUREUiBkd2FyZl9sb2NleHBy X2JhdG9uX2V2YWwKKysgIChzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24pOwor KworK2V4dGVybiBpbnQgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsIChzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24gKmRsbGJhdG9uLAorKwkJCQkgICAgIHN0cnVjdCB0eXBlICp0eXBlLCBDT1JF X0FERFIgKmFkZHJwKTsKICAKLStAbm9kZSBPYmplY3QgRmlsZSBGb3JtYXRzCi0gQHNlY3Rpb24g T2JqZWN0IEZpbGUgRm9ybWF0cwotIEBjaW5kZXggb2JqZWN0IGZpbGUgZm9ybWF0cworICNlbmRp ZiAvKiBkd2FyZjJsb2MuaCAqLworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIv ZHdhcmYycmVhZC5jCitpbmRleCAxNjM4MWRlLi5lYzMxY2YxIDEwMDY0NAorLS0tIGEvZ2RiL2R3 YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3YXJmMnJlYWQuYworQEAgLTEwODMsNiArMTA4Myw5IEBA IHN0YXRpYyBpbnQgYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChzdHJ1Y3QgYXR0cmlidXRl ICopOwogIAotQEAgLTI0MTUsNiArMjQzMSw3IEBAIFNPTSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5n dWFnZSBBQkkpLgorIHN0YXRpYyBpbnQgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0 cmlidXRlICopOwogIAotIFRoZSBTT00gcmVhZGVyIGlzIGluIEBmaWxle3NvbXJlYWQuY30uCisr c3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZHdhcmYyX2F0dHJfdG9fbG9jbGlz dF9iYXRvbgorKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KTsKKysKKyBzdGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHIsCisgCQkJCQkgc3RydWN0IHN5bWJvbCAqc3ltLAorIAkJCQkJIHN0cnVj dCBkd2FyZjJfY3UgKmN1KTsKK0BAIC0xMTEzLDYgKzExMTYsOSBAQCBzdGF0aWMgdm9pZCBhZ2Vf Y2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAotK0Bub2RlIERlYnVnZ2luZyBGaWxlIEZvcm1h dHMKLSBAc2VjdGlvbiBEZWJ1Z2dpbmcgRmlsZSBGb3JtYXRzCisgc3RhdGljIHZvaWQgZnJlZV9v bmVfY2FjaGVkX2NvbXBfdW5pdCAodm9pZCAqKTsKICAKLSBUaGlzIHNlY3Rpb24gZGVzY3JpYmVz IGNoYXJhY3RlcmlzdGljcyBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhhdAotQEAgLTI0ODYs NiArMjUwMyw3IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgot IEBjaW5kZXggU09NIGRlYnVnZ2luZyBpbmZvCi0gTGlrZSBDT0ZGLCB0aGUgU09NIGRlZmluaXRp b24gaW5jbHVkZXMgZGVidWdnaW5nIGluZm9ybWF0aW9uLgorK3N0YXRpYyB2b2lkIGZldGNoX2Rp ZV90eXBlX2F0dHJzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsCisr CQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworKworIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0 X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKKyAJCQkJICBzdHJ1 Y3QgZHdhcmYyX2N1ICopOwogIAotK0Bub2RlIEFkZGluZyBhIE5ldyBTeW1ib2wgUmVhZGVyIHRv IEdEQgotIEBzZWN0aW9uIEFkZGluZyBhIE5ldyBTeW1ib2wgUmVhZGVyIHRvIEB2YWx1ZXtHREJO fQorQEAgLTExMzIsNiArMTEzOCw5IEBAIHN0YXRpYyB2b2lkIGR3YXJmMl9jbGVhcl9tYXJrcyAo c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsKICAKLSBAY2luZGV4IGFkZGluZyBkZWJ1Z2dp bmcgaW5mbyByZWFkZXIKLUBAIC0yNTA4LDYgKzI1MjYsNyBAQCB3aWxsIG9ubHkgZXZlciBiZSBp bXBsZW1lbnRlZCBieSBvbmUgb2JqZWN0IGZpbGUgZm9ybWF0IG1heSBiZSBjYWxsZWQKLSBkaXJl Y3RseS4gIFRoaXMgaW50ZXJmYWNlIHNob3VsZCBiZSBkZXNjcmliZWQgaW4gYSBmaWxlCi0gQGZp bGV7YmZkL2xpYkB2YXJ7eHl6fS5ofSwgd2hpY2ggaXMgaW5jbHVkZWQgYnkgQHZhbHVle0dEQk59 LgorIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIAotK0Bub2RlIE1lbW9yeSBNYW5hZ2VtZW50IGZv ciBTeW1ib2wgRmlsZXMKLSBAc2VjdGlvbiBNZW1vcnkgTWFuYWdlbWVudCBmb3IgU3ltYm9sIEZp bGVzCisrc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmYyX2F0dHJfdG9f bG9jZXhwcl9iYXRvbgorKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KTsKKysKKyAvKiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3ZSBuZWVkIGZvciBE V0FSRiAyIGRlYnVnZ2luZworICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBo YXZlIGVub3VnaCB0byBkbyBzb21ldGhpbmcuICAqLwogIAotIE1vc3QgbWVtb3J5IGFzc29jaWF0 ZWQgd2l0aCBhIGxvYWRlZCBzeW1ib2wgZmlsZSBpcyBzdG9yZWQgb24KLUBAIC0yNTE5LDEwICsy NTM4LDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5sb2FkZWQgb3IgcmVsb2Fk ZWQuICBUaGVyZWZvcmUgb25lCi0gb2JqZmlsZSBtdXN0IG5vdCByZWZlcmVuY2Ugc3ltYm9sIG9y IHR5cGUgZGF0YSBmcm9tIGFub3RoZXIgb2JqZmlsZTsKLSB0aGV5IGNvdWxkIGJlIHVubG9hZGVk IGF0IGRpZmZlcmVudCB0aW1lcy4KK0BAIC01NTMxLDYgKzU1NDAsMjkgQEAgcHJvY2Vzc19lbnVt ZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorICAgbmV3X3N5bWJvbCAoZGllLCB0aGlzX3R5cGUsIGN1KTsKKyB9CiAgCi0tVXNlciBjb252 ZW5pZW5jZSB2YXJpYWJsZXMsIGV0IGNldGVyYSwgaGF2ZSBhc3NvY2lhdGVkIHR5cGVzLiAgTm9y bWFsbHkKLS10aGVzZSB0eXBlcyBsaXZlIGluIHRoZSBhc3NvY2lhdGVkIG9iamZpbGUuICBIb3dl dmVyLCB3aGVuIHRoZSBvYmpmaWxlCi0taXMgdW5sb2FkZWQsIHRob3NlIHR5cGVzIGFyZSBkZWVw IGNvcGllZCB0byBnbG9iYWwgbWVtb3J5LCBzbyB0aGF0Ci0tdGhlIHZhbHVlcyBvZiB0aGUgdXNl ciB2YXJpYWJsZXMgYW5kIGhpc3RvcnkgaXRlbXMgYXJlIG5vdCBsb3N0LgotK0Bub2RlIE1lbW9y eSBNYW5hZ2VtZW50IGZvciBUeXBlcwotK0BzZWN0aW9uIE1lbW9yeSBNYW5hZ2VtZW50IGZvciBU eXBlcwotK0BjaW5kZXggbWVtb3J5IG1hbmFnZW1lbnQgZm9yIHR5cGVzCisrLyogQ3JlYXRlIGEg bmV3IGFycmF5IGRpbWVuc2lvbiByZWZlcmVuY2luZyBpdHMgdGFyZ2V0IHR5cGUgVFlQRS4KICsK LStAZmluZGV4IFRZUEVfT0JKRklMRQotK0Bjb2Rle1RZUEVfT0JKRklMRX0gbWFjcm8gaW5kaWNh dGVzIHRoZSBjdXJyZW50IG1lbW9yeSBvd25lciBvZiB0aGUgdHlwZS4KLStOb24tQGNvZGV7TlVM TH0gdmFsdWUgaW5kaWNhdGVzIGl0IGlzIG93bmVkIGJ5IGFuIG9iamZpbGUgKHNwZWNpZmljYWxs eSBieSBpdHMKLStvYnN0YWNrKSBhbmQgaW4gc3VjaCBjYXNlIHRoZSB0eXBlIHJlbWFpbnMgdmFs aWQgdGlsbCB0aGUgb2JqZmlsZSBpcyB1bmxvYWRlZAotK29yIHJlbG9hZGVkLiAgRm9yIHN1Y2gg dHlwZXMgd2l0aCBhbiBhc3NvY2lhdGVkIG9iamZpbGUgbm8gcmVmZXJlbmNlIGNvdW50aW5nCi0r aXMgYmVpbmcgbWFkZS4KKysgICBNdWx0aWRpbWVuc2lvbmFsIGFycmF5cyBhcmUgaW50ZXJuYWxs eSByZXByZXNlbnRlZCBhcyBhIHN0YWNrIG9mCisrICAgc2luZ2xlZGltZW5zaW9uYWwgYXJyYXlz IGJlaW5nIHJlZmVyZW5jZWQgYnkgdGhlaXIgVFlQRV9UQVJHRVRfVFlQRS4gICovCiArCi0rVXNl ciBjb252ZW5pZW5jZSB2YXJpYWJsZXMsIGV0IGNldGVyYSwgaGF2ZSBhc3NvY2lhdGVkIHR5cGVz LiAgTm9ybWFsbHkgdGhlc2UKLSt0eXBlcyBsaXZlIGluIHRoZSBhc3NvY2lhdGVkIG9iamZpbGUu ICBIb3dldmVyLCB3aGVuIHRoZSBvYmpmaWxlIGlzIHVubG9hZGVkLAotK3Rob3NlIHR5cGVzIGFy ZSBkZWVwIGNvcGllZCB0byBnbG9iYWwgbWVtb3J5LCBzbyB0aGF0IHRoZSB2YWx1ZXMgb2YgdGhl IHVzZXIKLSt2YXJpYWJsZXMgYW5kIGhpc3RvcnkgaXRlbXMgYXJlIG5vdCBsb3N0LiAgRHVyaW5n IHRoZSBjb3B5IHRoZXkgd2lsbCBnZXQgdGhlaXIKLStAY29kZXtUWVBFX09CSkZJTEV9IHNldCB0 byBAY29kZXtOVUxMfSBhbmQgYmVjb21lIHNvLWNhbGxlZCBAZGZue3JlY2xhaW1hYmxlfQotK3R5 cGVzLgorK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCisrY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNp b24gKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKKysJCQkgICAg ICAgc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK3sKKysgIHR5 cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgdHlwZSwgcmFuZ2VfdHlwZSk7CiArCi0rVHlw ZXMgd2l0aCBudWxsIEBjb2Rle1RZUEVfT0JKRklMRX0gY2FuIGJlIGVpdGhlciBwZXJtYW5lbnQg dHlwZXMKLSsoQHB4cmVme0J1aWx0aW4gVHlwZXN9KSBvciByZWNsYWltYWJsZSB0eXBlcyB3aGlj aCB3aWxsIGJlIGRlYWxsb2NhdGVkIGF0IHRoZQotK2ZpcnN0IGlkbGUgQHZhbHVle0dEQk59IG1v bWVudCBpZiB0aGUgbGFzdCBvYmplY3QgcmVmZXJlbmNpbmcgdGhlbSBpcyByZW1vdmVkLgotK1Bl cm1hbmVudCB0eXBlcyBhcmUgYWxsb2NhdGVkIGJ5IHRoZSBmdW5jdGlvbiBAY29kZXthbGxvY190 eXBlfSAoYW5kIGl0cwotK2Rlcml2YXRpb25zIGxpa2UgQGNvZGV7aW5pdF90eXBlfSkgc3BlY2lm eWluZyBvYmpmaWxlIGFzIEBjb2Rle05VTEx9LiAgVGhlCi0rcmVjbGFpbWFibGUgdHlwZXMgYXJl IGNyZWF0ZWQgdGhlIHNhbWUgd2F5IGJ1dCBtb3Jlb3ZlciB0aGV5IG5lZWQgdG8gaGF2ZQotK0Bj b2Rle3R5cGVfaW5pdF9ncm91cH0gY2FsbGVkIHRvIHN0YXJ0IHRoZWlyIHRyYWNraW5nIGFzIGJl aW5nIHBvc3NpYmx5Ci0rZGVhbGxvY2F0YWJsZS4KKysgIC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBh dHRyaWJ1dGVzIG5lZWQgdG8gYmUgZmV0Y2hlZCBieQorKyAgICAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIDxtdWx0aV9mNzdfc3Vic2NyaXB0PidzIGNhbGwgb2YKKysgICAgIHZhbHVlX3N1YnNj cmlwdGVkX3J2YWx1ZSBvbmx5IGZvciB0aGUgaW5uZXJtb3N0IGFycmF5IHR5cGUuICAqLworKyAg ZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwogKwotK0BmaW5kZXggZnJlZV9h bGxfdHlwZXMKLStXaGVuIEB2YWx1ZXtHREJOfSBnZXRzIGlkbGUgaXQgYWx3YXlzIGNhbGxzIHRo ZSBAY29kZXtmcmVlX2FsbF90eXBlc30gZnVuY3Rpb24KLSt3aGljaCBkZWFsbG9jYXRlcyBhbnkg dW51c2VkIHR5cGVzLiAgQWxsIHR5cGVzIGN1cnJlbnRseSBub3Qgb3duZWQgYnkgYW4KLStvYmpm aWxlIG11c3QgYmUgbWFya2VkIGFzIHVzZWQgb24gZWFjaCBAY29kZXtmcmVlX2FsbF90eXBlc30g Y2FsbCBhcyB0aGV5IHdvdWxkCi0rZ2V0IGRlYWxsb2NhdGVkIGFzIHVudXNlZCBvdGhlcndpc2Uu CisrICAvKiBUaGVzZSBnZW5lcmljIHR5cGUgYXR0cmlidXRlcyBhcmUgY2hlY2tlZCBmb3IgYWxs b2NhdGVkL2Fzc29jaWF0ZWQKKysgICAgIHZhbGlkaXR5IHdoaWxlIGFjY2Vzc2luZyBGSUVMRF9M T0NfS0lORF9EV0FSRl9CTE9DSy4gICovCisrICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCBy YW5nZV90eXBlLCBjdSk7CiArCi0rQGNvZGV7ZnJlZV9hbGxfdHlwZXN9IGF1dG9tYXRpY2FsbHkg Y2hlY2tzIGZvciBhbnkgY3Jvc3MtdHlwZSByZWZlcmVuY2VzIHN1Y2gKLSthcyB0aHJvdWdoIEBj b2Rle1RZUEVfVEFSR0VUX1RZUEV9LCBAY29kZXtUWVBFX1BPSU5URVJfVFlQRX0gZXRjLkA6IGFu ZAotK3ByZXZlbnRzIGVhcmx5IGRlYWxsb2NhdGlvbiBmb3IgYW55IHN1Y2ggZXhpc3RpbmcgcmVm ZXJlbmNlcy4gIFJlY2xhaW1hYmxlCi0rdHlwZXMgbWF5IHJlZmVyZW5jZSBhbnkgb3RoZXIgcmVj bGFpbWFibGUgdHlwZXMgb3IgZXZlbiBwZXJtYW5lbnQgdHlwZXMuICBCdXQKLStwZXJtYW5lbnQg dHlwZXMgbXVzdCBub3QgcmVmZXJlbmNlIHJlY2xhaW1hYmxlIHR5cGVzIChub3IgYW4gb2JqZmls ZSBhc3NvY2lhdGVkCi0rdHlwZSkuCi0gCisrICByZXR1cm4gdHlwZTsKKyt9CisrCisgLyogRXh0 cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0 IGl0IGluCisgICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFu ZGxlcyBvbmUgZGltZW5zaW9uYWwKKyAgICBhcnJheXMuICAqLworQEAgLTU1NDQsNyArNTU3Niw3 IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRl eF90eXBlOworICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7CisgICBzdHJ1Y3Qg YXR0cmlidXRlICphdHRyOworLSAgaW50IG5kaW0gPSAwOworKyAgaW50IG5kaW0gPSAwLCBpOwor ICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisgICBjaGFyICpuYW1lOwogIAotIEBub2RlIExh bmd1YWdlIFN1cHBvcnQKLWRpZmYgLS1naXQgYS9nZGIvZG9jL29ic2VydmVyLnRleGkgYi9nZGIv ZG9jL29ic2VydmVyLnRleGkKLWluZGV4IGRiM2QxMTQuLjc1OTIwMGYgMTAwNjQ0Ci0tLS0gYS9n ZGIvZG9jL29ic2VydmVyLnRleGkKLSsrKyBiL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQotQEAgLTIx Myw2ICsyMTMsMTEgQEAgQnl0ZXMgZnJvbSBAdmFye2RhdGF9IHRvIEB2YXJ7ZGF0YX0gKyBAdmFy e2xlbn0gaGF2ZSBiZWVuIHdyaXR0ZW4KLSB0byB0aGUgY3VycmVudCBpbmZlcmlvciBhdCBAdmFy e2FkZHJ9LgotIEBlbmQgZGVmdHlwZWZ1bgorQEAgLTU1OTcsMTcgKzU2MjksMTEgQEAgcmVhZF9h cnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisg ICB0eXBlID0gZWxlbWVudF90eXBlOwogIAotK0BkZWZ0eXBlZnVuIHZvaWQgbWFya191c2VkICh2 b2lkKQotK01hcmsgYW55IHBvc3NpYmx5IHJlY2xhaW1hYmxlIG9iamVjdHMgYXMgdXNlZCBkdXJp bmcgYSBtYXJrLWFuZC1zd2VlcCBnYXJiYWdlCi0rY29sbGVjdG9yIHBhc3MuICBDdXJyZW50bHkg b25seSBAY29kZXt0eXBlX21hcmtfdXNlZH0gbWFya2VyIGlzIHN1cHBvcnRlZC4KLStAZW5kIGRl ZnR5cGVmdW4KLSsKLSAgQGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25vdGlmaWNhdGlvbiAoaW50IEB2 YXJ7c29tZWFyZ30pCi0gVGhpcyBvYnNlcnZlciBpcyB1c2VkIGZvciBpbnRlcm5hbCB0ZXN0aW5n LiAgRG8gbm90IHVzZS4gIAotIFNlZSB0ZXN0c3VpdGUvZ2RiLmdkYi9vYnNlcnZlci5leHAuCi1k aWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi1mcmFtZS5jIGIvZ2RiL2R3YXJmMi1mcmFtZS5jCi1pbmRl eCA5OTEwMGQ3Li41OTE1MjQ5IDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJmMi1mcmFtZS5jCi0rKysg Yi9nZGIvZHdhcmYyLWZyYW1lLmMKLUBAIC0zOCw2ICszOCw3IEBACi0gCi0gI2luY2x1ZGUgImNv bXBsYWludHMuaCIKLSAjaW5jbHVkZSAiZHdhcmYyLWZyYW1lLmgiCi0rI2luY2x1ZGUgImFkZHJt YXAuaCIKLSAKLSBzdHJ1Y3QgY29tcF91bml0OworICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRp ZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCistICAgIHsKKy0gICAgICBpbnQgaSA9IDA7Cist CistICAgICAgd2hpbGUgKGkgPCBuZGltKQorLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5V TEwsIHR5cGUsIHJhbmdlX3R5cGVzW2krK10pOworLSAgICB9CistICBlbHNlCistICAgIHsKKy0g ICAgICB3aGlsZSAobmRpbS0tID4gMCkKKy0JdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxM LCB0eXBlLCByYW5nZV90eXBlc1tuZGltXSk7CistICAgIH0KKysgICAgZm9yIChpID0gMDsgaSA8 IG5kaW07IGkrKykKKysgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24g KHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKKysgIGVsc2UgLyogKHJlYWRfYXJyYXlf b3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9yb3dfbWFqb3IpICovCisrICAgIGZvciAoaSA9IG5k aW0gLSAxOyBpID49IDA7IGktLSkKKysgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9k aW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKICAKLUBAIC0xNTgyLDYg KzE1ODMsMTQgQEAgZHdhcmYyX2ZyYW1lX2ZpbmRfZmRlIChDT1JFX0FERFIgKnBjKQotICAgICAg IENPUkVfQUREUiBvZmZzZXQ7Ci0gICAgICAgQ09SRV9BRERSIHNlZWtfcGM7CisgICAvKiBVbmRl cnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBv bgorICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIg YXR0cmlidXRlIHRvIHRoZQorQEAgLTYwNjEsMjkgKzYwODcsMTE0IEBAIHJlYWRfdGFnX3N0cmlu Z190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworICAg c3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlwZTsK KyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CistICB1bnNpZ25lZCBpbnQgbGVuZ3RoOworKyAg aW50IGxlbmd0aDsKKysKKysgIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5i dWlsdGluX2ludDsKKysgIC8qIFJBTkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZyb20gT0JKRklMRSwg bm90IGFzIGEgcGVybWFuZW50IHR5cGUuICAqLworKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUg KG9iamZpbGUpOworKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJl YWwgYmVsb3cuICAqLworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5nZV90 eXBlLCBpbmRleF90eXBlLCAwLCAtMSk7CisrCisrICAvKiBDL0MrKyBzaG91bGQgcHJvYmFibHkg aGF2ZSB0aGUgbG93IGJvdW5kIDAgYnV0IEMvQysrIGRvZXMgbm90IHVzZQorKyAgICAgRFdfVEFH X3N0cmluZ190eXBlLiAgKi8KKysgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7CiAg Ci0rICAgICAgaWYgKG9iamZpbGUtPnF1aWNrX2FkZHJtYXApCisgICBhdHRyID0gZHdhcmYyX2F0 dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xlbmd0aCwgY3UpOworLSAgaWYgKGF0dHIpCistICAgIHsK Ky0gICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7CisrICBpZiAoYXR0ciAmJiBhdHRyX2Zv cm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICB7CisrICAgICAgLyogU2VjdXJpdHkgY2hlY2sgZm9y IGEgc2l6ZSBvdmVyZmxvdy4gICovCisrICAgICAgaWYgKERXX0JMT0NLIChhdHRyKS0+c2l6ZSAr IDIgPCBEV19CTE9DSyAoYXR0ciktPnNpemUpCisrCVRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlw ZSkgPSAxOworKyAgICAgIC8qIEV4dGVuZCB0aGUgRFdBUkYgYmxvY2sgYnkgYSBuZXcgRFdfT1Bf ZGVyZWYvRFdfT1BfZGVyZWZfc2l6ZQorKwkgaW5zdHJ1Y3Rpb24gYXMgRFdfQVRfc3RyaW5nX2xl bmd0aCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBsb2NhdGlvbiwgbm90CisrCSBpdHMgdmFsdWUuICAq LworKyAgICAgIGVsc2UKICsJewotKwkgIGlmICghYWRkcm1hcF9maW5kIChvYmpmaWxlLT5xdWlj a19hZGRybWFwLCAqcGMpKQotKwkgICAgY29udGludWU7Ci0rCX0KLSsgICAgICAvKiBGSVhNRTog UmVhZC1pbiBvbmx5IC5kZWJ1Z19mcmFtZS8uZWhfZnJhbWUgd2l0aG91dCAuZGVidWdfaW5mbz8g ICovCi0rICAgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKG9iamZpbGUpOworKwkgIHN0cnVj dCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqbGVuZ3RoX2JhdG9uID0gTlVMTDsKKysJICBzdHJ1Y3Qg ZHdhcmZfYmxvY2sgKmJsayA9IERXX0JMT0NLIChhdHRyKTsKICsKLSAgICAgICBmZGVfdGFibGUg PSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9mcmFtZV9vYmpmaWxlX2RhdGEpOwotICAg ICAgIGlmIChmZGVfdGFibGUgPT0gTlVMTCkKLSAJY29udGludWU7Ci1kaWZmIC0tZ2l0IGEvZ2Ri L2R3YXJmMmV4cHIuYyBiL2dkYi9kd2FyZjJleHByLmMKLWluZGV4IGVkMjFlZGYuLjFiMTBjYjcg MTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5jCi0rKysgYi9nZGIvZHdhcmYyZXhwci5jCi1A QCAtODY4LDYgKzg2OCwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9j b250ZXh0ICpjdHgsCi0gCSAgY3R4LT5pbml0aWFsaXplZCA9IDA7Ci0gCSAgZ290byBub19wdXNo OwotIAotKwljYXNlIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6Ci0rCSAgaWYgKGN0eC0+Z2V0 X29iamVjdF9hZGRyZXNzID09IE5VTEwpCi0rCSAgICBlcnJvciAoXygiRFdBUkYtMiBleHByZXNz aW9uIGVycm9yOiBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIG11c3QgIgotKwkgICAgICAgICAg ICJoYXZlIGEgdmFsdWUgdG8gcHVzaC4iKSk7Ci0rCSAgcmVzdWx0ID0gKGN0eC0+Z2V0X29iamVj dF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7Ci0rCSAgYnJlYWs7CisrCSAgLyogVHVybiBhbnkgc2lu Z2xlIERXX09QX3JlZyogaW50byBEV19PUF9icmVnKigwKSBidXQgY2xlYXJpbmcKKysJICAgICBE V19PUF9kZXJlZiogaW4gc3VjaCBjYXNlLiAgKi8KICsKLSAJZGVmYXVsdDoKLSAJICBlcnJvciAo XygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwgb3ApOwotIAl9Ci1k aWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IDQz N2NhMzkuLmY3ZmNlOTIgMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5oCi0rKysgYi9nZGIv ZHdhcmYyZXhwci5oCi1AQCAtMTAyLDEwICsxMDIsMTAgQEAgc3RydWN0IGR3YXJmX2V4cHJfY29u dGV4dAotICAgICAgVGhlIHJlc3VsdCBtdXN0IGJlIGxpdmUgdW50aWwgdGhlIGN1cnJlbnQgZXhw cmVzc2lvbiBldmFsdWF0aW9uCi0gICAgICBpcyBjb21wbGV0ZS4gICovCi0gICB1bnNpZ25lZCBj aGFyICooKmdldF9zdWJyKSAodm9pZCAqYmF0b24sIG9mZl90IG9mZnNldCwgc2l6ZV90ICpsZW5n dGgpOwotKyNlbmRpZgotIAotICAgLyogUmV0dXJuIHRoZSBgb2JqZWN0IGFkZHJlc3MnIGZvciBE V19PUF9wdXNoX29iamVjdF9hZGRyZXNzLiAgKi8KLSAgIENPUkVfQUREUiAoKmdldF9vYmplY3Rf YWRkcmVzcykgKHZvaWQgKmJhdG9uKTsKLS0jZW5kaWYKLSAKLSAgIC8qIFRoZSBjdXJyZW50IGRl cHRoIG9mIGR3YXJmIGV4cHJlc3Npb24gcmVjdXJzaW9uLCB2aWEgRFdfT1BfY2FsbCosCi0gICAg ICBEV19PUF9mYnJlZywgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcywgZXRjLiwgYW5kIHRoZSBt YXhpbXVtCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5jIGIvZ2RiL2R3YXJmMmxvYy5jCi1p bmRleCAxYzRkMDU3Li4yMGRjYWNkIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJmMmxvYy5jCi0rKysg Yi9nZGIvZHdhcmYybG9jLmMKLUBAIC00Niw2ICs0NiwxMiBAQCBzdGF0aWMgdm9pZAotIGR3YXJm X2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBw YywKLSAJCQkgZ2RiX2J5dGUgKipzdGFydCwgc2l6ZV90ICpsZW5ndGgpOwotIAotK3N0YXRpYyBz dHJ1Y3QgdmFsdWUgKmR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUs Ci0rCQkJCQkgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotKwkJCQkJICAgICAgIGdk Yl9ieXRlICpkYXRhLAotKwkJCQkJICAgICAgIHVuc2lnbmVkIHNob3J0IHNpemUsCi0rCQkJCQkg ICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSk7CisrCSAgaWYgKGJsay0+c2l6 ZSA9PSAxICYmIGJsay0+ZGF0YVswXSA+PSBEV19PUF9yZWcwCisrCSAgICAgICYmIGJsay0+ZGF0 YVswXSA8PSBEV19PUF9yZWczMSkKKysJICAgIGxlbmd0aF9iYXRvbiA9IGR3YXJmMl9hdHRyX3Rv X2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysJICBlbHNlIGlmIChibGstPnNpemUgPiAxICYm IGJsay0+ZGF0YVswXSA9PSBEV19PUF9yZWd4KQorKwkgICAgeworKwkgICAgICBVTE9OR0VTVCB1 bG9uZ2VzdDsKKysJICAgICAgY29uc3QgZ2RiX2J5dGUgKmVuZDsKICsKLSAvKiBBIGhlbHBlciBm dW5jdGlvbiBmb3IgZGVhbGluZyB3aXRoIGxvY2F0aW9uIGxpc3RzLiAgR2l2ZW4gYQotICAgIHN5 bWJvbCBiYXRvbiAoQkFUT04pIGFuZCBhIHBjIHZhbHVlIChQQyksIGZpbmQgdGhlIGFwcHJvcHJp YXRlCi0gICAgbG9jYXRpb24gZXhwcmVzc2lvbiwgc2V0ICpMT0NFWFBSX0xFTkdUSCwgYW5kIHJl dHVybiBhIHBvaW50ZXIKLUBAIC0xMjEsNiArMTI3LDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0 b24KLSB7Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7Ci0gICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZTsKLSsgIC8qIEZyb20gRFdfVEFHX3ZhcmlhYmxlJ3MgRFdfQVRfbG9jYXRpb24gKG5v dCBEV19UQUdfdHlwZSdzCi0rICAgICBEV19BVF9kYXRhX2xvY2F0aW9uKSBmb3IgRFdfT1BfcHVz aF9vYmplY3RfYWRkcmVzcy4gICovCi0rICBDT1JFX0FERFIgb2JqZWN0X2FkZHJlc3M7Ci0gfTsK LSAKLSAvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICAq LwotQEAgLTE4OSwyMiArMTk4LDMzIEBAIGR3YXJmX2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qg c3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKLSAgICAgICBzeW1iYXRvbiA9IFNZTUJP TF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsKLSAgICAgICAqc3RhcnQgPSBmaW5kX2xvY2F0 aW9uX2V4cHJlc3Npb24gKHN5bWJhdG9uLCBsZW5ndGgsIHBjKTsKKysJICAgICAgZW5kID0gcmVh ZF91bGViMTI4ICgmYmxrLT5kYXRhWzFdLCAmYmxrLT5kYXRhW2Jsay0+c2l6ZV0sCisrCQkJCSAg JnVsb25nZXN0KTsKKysJICAgICAgaWYgKGVuZCA9PSAmYmxrLT5kYXRhW2Jsay0+c2l6ZV0pCisr CQlsZW5ndGhfYmF0b24gPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7 CisrCSAgICB9CisrCisrCSAgaWYgKGxlbmd0aF9iYXRvbiA9PSBOVUxMKQorKwkgICAgeworKwkg ICAgICBzdHJ1Y3QgYXR0cmlidXRlICpzaXplX2F0dHI7CisrCSAgICAgIGdkYl9ieXRlICpkYXRh OworKworKwkgICAgICBsZW5ndGhfYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPmNvbXBfdW5p dF9vYnN0YWNrLAorKwkJCQkJICAgIHNpemVvZiAoKmxlbmd0aF9iYXRvbikpOworKwkgICAgICBs ZW5ndGhfYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CisrCSAgICAgIGxlbmd0aF9iYXRvbi0+ c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDI7CisrCSAgICAgIGRhdGEgPSBvYnN0YWNr X2FsbG9jICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLAorKwkJCQkgICAgbGVuZ3RoX2JhdG9uLT5z aXplKTsKKysJICAgICAgbGVuZ3RoX2JhdG9uLT5kYXRhID0gZGF0YTsKKysJICAgICAgbWVtY3B5 IChkYXRhLCBEV19CTE9DSyAoYXR0ciktPmRhdGEsIERXX0JMT0NLIChhdHRyKS0+c2l6ZSk7Cisr CisrCSAgICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhlciB3aXRoIERXX0FU X1NUUklOR19MRU5HVEgKKysJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4gaW50ZWdlciB0byBm ZXRjaC4gICovCisrCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5 dGVfc2l6ZSwgY3UpOworKwkgICAgICBpZiAoc2l6ZV9hdHRyKQorKwkJeworKwkJICBkYXRhW0RX X0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZl9zaXplOworKwkJICBkYXRhW0RXX0JM T0NLIChhdHRyKS0+c2l6ZSArIDFdID0gRFdfVU5TTkQgKHNpemVfYXR0cik7CisrCQkgIGlmIChk YXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdICE9IERXX1VOU05EIChzaXplX2F0dHIpKQor KwkJICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJCQkgICAgICAgXygiRFdf QVRfc3RyaW5nX2xlbmd0aCdzIERXX0FUX2J5dGVfc2l6ZSAiCisrCQkJCSAiaW50ZWdlciBleGNl ZWRzIHRoZSBieXRlIHNpemUgc3RvcmFnZSIpKTsKKysJCX0KKysJICAgICAgZWxzZQorKwkJewor KwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZjsKKysJCSAgZGF0 YVtEV19CTE9DSyAoYXR0ciktPnNpemUgKyAxXSA9IERXX09QX25vcDsKKysJCX0KKysJICAgIH0K KysKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQKKysJICAgID0g UkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdl X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247CisrCSAgVFlQRV9EWU5B TUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KICAgICAgfQotLSAgZWxzZQotKyAgZWxzZSBpZiAo U1lNQk9MX0NPTVBVVEVEX09QUyAoZnJhbWVmdW5jKSA9PSAmZHdhcmYyX2xvY2V4cHJfZnVuY3Mp CisgICBlbHNlCiAgICAgIHsKLSAgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKnN5 bWJhdG9uOworLSAgICAgIC8qIGNoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0dHJpYnV0 ZSAqLworKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCisr CXsKKysJICAvKiBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgYSBjb25zdGFudCBhZGRyZXNz IHdoZXJlIHRoZSBsb2NhdGlvbgorKwkgICAgIHNob3VsZCBiZSByZWFkIGZyb20gLSBhdHRyX2Zv cm1faXNfYmxvY2sgaXMgZXhwZWN0ZWQgaW5zdGVhZC4gIFNlZQorKwkgICAgIERXQVJGIGZvciB0 aGUgRFdfQVRfU1RSSU5HX0xFTkdUSCB2cy4gRFdfQVRfQllURV9TSVpFIGRpZmZlcmVuY2UuCisr CSAgICAgKi8KKysJICAvKiBQQVNTVEhSVSAqLworKwl9CiArCi0gICAgICAgc3ltYmF0b24gPSBT WU1CT0xfTE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYyk7Ci0tICAgICAgaWYgKHN5bWJhdG9uICE9 IE5VTEwpCi0tCXsKLS0JICAqbGVuZ3RoID0gc3ltYmF0b24tPnNpemU7Ci0tCSAgKnN0YXJ0ID0g c3ltYmF0b24tPmRhdGE7Ci0tCX0KLS0gICAgICBlbHNlCi0tCSpzdGFydCA9IE5VTEw7Ci0rICAg ICAgZ2RiX2Fzc2VydCAoc3ltYmF0b24gIT0gTlVMTCk7Ci0rICAgICAgKnN0YXJ0ID0gc3ltYmF0 b24tPmRhdGE7Ci0rICAgICAgKmxlbmd0aCA9IHN5bWJhdG9uLT5zaXplOworICAgICAgIGF0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKy0gICAgICBpZiAoYXR0 cikKKy0gICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOworLSAg ICAgICAgfQorKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisr CXsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQKKysJICAgID0g UkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdl X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhw cl9iYXRvbiAoYXR0ciwgY3UpOworKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwor Kwl9CisrICAgICAgZWxzZSBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIp KQorKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0 YW50X3ZhbHVlIChhdHRyLCAwKTsKKyAgICAgICBlbHNlCistICAgICAgICB7CistICAgICAgICAg IGxlbmd0aCA9IDE7CistICAgICAgICB9CisrCVRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkg PSAxOwogICAgICB9Ci0rICBlbHNlIGlmIChTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMp ID09ICZkd2FyZjJfbWlzc2luZ19mdW5jcykKLSsgICAgewotKyAgICAgIHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbiAqc3ltYmF0b247Ci0rCi0rICAgICAgc3ltYmF0b24gPSBTWU1CT0xfTE9D QVRJT05fQkFUT04gKGZyYW1lZnVuYyk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoc3ltYmF0b24gPT0g TlVMTCk7Ci0rICAgICAgKnN0YXJ0ID0gTlVMTDsKLSsgICAgICAqbGVuZ3RoID0gMDsJLyogdW51 c2VkICovCi0rICAgIH0KLSsgIGVsc2UKLSsgICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBf X0xJTkVfXywKLSsJCSAgICBfKCJVbnN1cHBvcnRlZCBTWU1CT0xfQ09NUFVURURfT1BTICVwIGZv ciBcIiVzXCIiKSwKLSsJCSAgICBTWU1CT0xfQ09NUFVURURfT1BTIChmcmFtZWZ1bmMpLAotKwkJ ICAgIFNZTUJPTF9QUklOVF9OQU1FIChmcmFtZWZ1bmMpKTsKICAKLSAgIGlmICgqc3RhcnQgPT0g TlVMTCkKLSAgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBmaW5kIHRoZSBmcmFtZSBiYXNlIGZvciBc IiVzXCIuIiksCi0tCSAgIFNZTUJPTF9OQVRVUkFMX05BTUUgKGZyYW1lZnVuYykpOwotKwkgICBT WU1CT0xfUFJJTlRfTkFNRSAoZnJhbWVmdW5jKSk7Ci0gfQorLSAgaW5kZXhfdHlwZSA9IG9iamZp bGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OworLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9y YW5nZV90eXBlIChOVUxMLCBpbmRleF90eXBlLCAxLCBsZW5ndGgpOworICAgY2hhcl90eXBlID0g bGFuZ3VhZ2Vfc3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwor ICAgdHlwZSA9IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBl KTsKICAKLSAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4g IENvbXB1dGVzIHRoZSBDRkEgZm9yCi1AQCAtMjI3LDYgKzI0NywxNTUgQEAgZHdhcmZfZXhwcl90 bHNfYWRkcmVzcyAodm9pZCAqYmF0b24sIENPUkVfQUREUiBvZmZzZXQpCi0gICByZXR1cm4gdGFy Z2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoZGViYXRvbi0+b2JqZmlsZSwgb2Zmc2V0KTsKLSB9 CitAQCAtNjMyNiw2MCArNjQzNywxMzYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3QgdHlwZSAqYmFzZV90 eXBlOworICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7CisgICBzdHJ1Y3QgYXR0cmlidXRlICph dHRyOworLSAgTE9OR0VTVCBsb3cgPSAwOworLSAgTE9OR0VTVCBoaWdoID0gLTE7CisrICBMT05H RVNUIGxvdzsKKyAgIGNoYXIgKm5hbWU7CisgICBMT05HRVNUIG5lZ2F0aXZlX21hc2s7CiAgCi0r c3RhdGljIENPUkVfQUREUgotK2R3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3MgKHZvaWQgKmJhdG9u KQotK3sKLSsgIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uICpkZWJhdG9uID0gYmF0b247Ci0rCi0r ICAvKiBUaGUgbWVzc2FnZSBpcyBzdXBwcmVzc2VkIGluIERXQVJGX0JMT0NLX0VYRUMuICAqLwot KyAgaWYgKGRlYmF0b24tPm9iamVjdF9hZGRyZXNzID09IDApCi0rICAgIGVycm9yIChfKCJDYW5u b3QgcmVzb2x2ZSBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIGZvciBhIG1pc3Npbmcgb2JqZWN0 IikpOwotKwotKyAgcmV0dXJuIGRlYmF0b24tPm9iamVjdF9hZGRyZXNzOwotK30KLSsKLSsvKiBB ZGRyZXNzIG9mIHRoZSB2YXJpYWJsZSB3ZSBhcmUgY3VycmVudGx5IHJlZmVycmluZyB0by4gIEl0 IGlzIHNldCBmcm9tCi0rICAgRFdfVEFHX3ZhcmlhYmxlJ3MgRFdfQVRfbG9jYXRpb24gKG5vdCBE V19UQUdfdHlwZSdzIERXX0FUX2RhdGFfbG9jYXRpb24pIGZvcgotKyAgIERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3MuICAqLworICAgYmFzZV90eXBlID0gZGllX3R5cGUgKGRpZSwgY3UpOworKyAg LyogUHJlc2VydmUgQkFTRV9UWVBFJ3Mgb3JpZ2luYWwgdHlwZSwganVzdCBzZXQgaXRzIExFTkdU SC4gICovCisrICBjaGVja190eXBlZGVmIChiYXNlX3R5cGUpOworIAorICAgLyogVGhlIGRpZV90 eXBlIGNhbGwgYWJvdmUgbWF5IGhhdmUgYWxyZWFkeSBzZXQgdGhlIHR5cGUgZm9yIHRoaXMgRElF LiAgKi8KKyAgIHJhbmdlX3R5cGUgPSBnZXRfZGllX3R5cGUgKGRpZSwgY3UpOworICAgaWYgKHJh bmdlX3R5cGUpCisgICAgIHJldHVybiByYW5nZV90eXBlOworIAorLSAgaWYgKGN1LT5sYW5ndWFn ZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQorLSAgICB7CistICAgICAgLyogRk9SVFJBTiBpbXBsaWVz IGEgbG93ZXIgYm91bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KKy0gICAgICBsb3cgPSAxOwor LSAgICB9CisrICAvKiBMT1dfQk9VTkQgYW5kIEhJR0hfQk9VTkQgYXJlIHNldCBmb3IgcmVhbCBi ZWxvdy4gICovCisrICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGJhc2Vf dHlwZSwgMCwgLTEpOwogKwotK3N0YXRpYyBDT1JFX0FERFIgb2JqZWN0X2FkZHJlc3M7CisrICBu ZWdhdGl2ZV9tYXNrID0gCisrICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJhc2Vf dHlwZSkgKiBUQVJHRVRfQ0hBUl9CSVQgLSAxKTsKICsKLSsvKiBDYWxsZXJzIHVzZSBvYmplY3Rf YWRkcmVzc19zZXQgd2hpbGUgdGhlaXIgY2FsbGVycyB1c2UgdGhlIHJlc3VsdCBzZXQgc28gd2UK LSsgICBjYW5ub3QgcnVuIHRoZSBjbGVhbnVwIGF0IHRoZSBsb2NhbCBibG9jayBvZiBvdXIgZGly ZWN0IGNhbGxlci4gIFN0aWxsIHdlCi0rICAgc2hvdWxkIHJlc2V0IE9CSkVDVF9BRERSRVNTIGF0 IGxlYXN0IGZvciB0aGUgbmV4dCBHREIgY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStv YmplY3RfYWRkcmVzc19jbGVhbnVwICh2b2lkICpwcmV2X3NhdmVfdm9pZHApCi0rewotKyAgQ09S RV9BRERSICpwcmV2X3NhdmUgPSBwcmV2X3NhdmVfdm9pZHA7Ci0rCi0rICBvYmplY3RfYWRkcmVz cyA9ICpwcmV2X3NhdmU7Ci0rICB4ZnJlZSAocHJldl9zYXZlKTsKLSt9Ci0rCi0rLyogU2V0IHRo ZSBiYXNlIGFkZHJlc3MgLSBEV19BVF9sb2NhdGlvbiAtIG9mIGEgdmFyaWFibGUuICBJdCBpcyBi ZWluZyBsYXRlcgotKyAgIHVzZWQgdG8gZGVyaXZlIG90aGVyIG9iamVjdCBhZGRyZXNzZXMgYnkg RFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4KLSsKLSsgICBJdCB3b3VsZCBiZSB1c2VmdWwgdG8g c2FuaXR5IGNoZWNrIEFERFJFU1MgLSBzdWNoIGFzIGZvciBzb21lIG9iamVjdHMgd2l0aAotKyAg IHVuc2V0IHZhbHVlX3Jhd19hZGRyZXNzIC0gYnV0IHNvbWUgdmFsaWQgYWRkcmVzc2VzIG1heSBi ZSB6ZXJvIChzdWNoIGFzIGZpcnN0Ci0rICAgb2JqZWN0cyBpbiByZWxvY2F0YWJsZSAubyBmaWxl cykuICAqLwotKwotK3ZvaWQKLStvYmplY3RfYWRkcmVzc19zZXQgKENPUkVfQUREUiBhZGRyZXNz KQotK3sKLSsgIENPUkVfQUREUiAqcHJldl9zYXZlOwotKwotKyAgcHJldl9zYXZlID0geG1hbGxv YyAoc2l6ZW9mICpwcmV2X3NhdmUpOwotKyAgKnByZXZfc2F2ZSA9IG9iamVjdF9hZGRyZXNzOwot KyAgbWFrZV9jbGVhbnVwIChvYmplY3RfYWRkcmVzc19jbGVhbnVwLCBwcmV2X3NhdmUpOwotKwot KyAgb2JqZWN0X2FkZHJlc3MgPSBhZGRyZXNzOwotK30KLSsKLSsvKiBFdmFsdWF0ZSBEV0FSRiBl eHByZXNzaW9uIGF0IERBVEEgLi4uIERBVEEgKyBTSVpFIHdpdGggaXRzIHJlc3VsdCByZWFkYWJs ZQotKyAgIGJ5IGR3YXJmX2V4cHJfZmV0Y2ggKFJFVFZBTCwgMCkuICBGUkFNRSBwYXJhbWV0ZXIg Y2FuIGJlIE5VTEwgdG8gY2FsbAotKyAgIGdldF9zZWxlY3RlZF9mcmFtZSB0byBmaW5kIGl0LiAg UmV0dXJuZWQgZHdhcmZfZXhwcl9jb250ZXh0IGZyZWVpbmcgaXMKLSsgICBwdXNoZWQgb24gdGhl IGNsZWFudXAgY2hhaW4uICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0 ICoKLStkd2FyZl9leHByX3ByZXBfY3R4IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGdkYl9i eXRlICpkYXRhLAotKwkJICAgICB1bnNpZ25lZCBzaG9ydCBzaXplLCBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpwZXJfY3UpCi0rewotKyAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4 OwotKyAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gYmF0b247Ci0rCi0rICBpZiAoIWZyYW1lKQot KyAgICBmcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7Ci0rCi0rICBiYXRvbi5mcmFt ZSA9IGZyYW1lOwotKyAgYmF0b24ub2JqZmlsZSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAocGVy X2N1KTsKLSsgIGJhdG9uLm9iamVjdF9hZGRyZXNzID0gb2JqZWN0X2FkZHJlc3M7Ci0rCi0rICBj dHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwotKyAgbWFrZV9jbGVhbnVwX2ZyZWVfZHdh cmZfZXhwcl9jb250ZXh0IChjdHgpOwotKwotKyAgY3R4LT5nZGJhcmNoID0gZ2V0X29iamZpbGVf YXJjaCAoYmF0b24ub2JqZmlsZSk7Ci0rICBjdHgtPmFkZHJfc2l6ZSA9IGR3YXJmMl9wZXJfY3Vf YWRkcl9zaXplIChwZXJfY3UpOwotKyAgY3R4LT5iYXRvbiA9ICZiYXRvbjsKLSsgIGN0eC0+cmVh ZF9yZWcgPSBkd2FyZl9leHByX3JlYWRfcmVnOwotKyAgY3R4LT5yZWFkX21lbSA9IGR3YXJmX2V4 cHJfcmVhZF9tZW07Ci0rICBjdHgtPmdldF9mcmFtZV9iYXNlID0gZHdhcmZfZXhwcl9mcmFtZV9i YXNlOwotKyAgY3R4LT5nZXRfZnJhbWVfY2ZhID0gZHdhcmZfZXhwcl9mcmFtZV9jZmE7Ci0rICBj dHgtPmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7Ci0rICBjdHgtPmdl dF9vYmplY3RfYWRkcmVzcyA9IGR3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3M7Ci0rCi0rICBkd2Fy Zl9leHByX2V2YWwgKGN0eCwgZGF0YSwgc2l6ZSk7Ci0rCi0rICAvKiBJdCB3YXMgdXNlZCBvbmx5 IGR1cmluZyBkd2FyZl9leHByX2V2YWwuICAqLwotKyAgY3R4LT5iYXRvbiA9IE5VTEw7Ci0rCi0r ICByZXR1cm4gY3R4OwotK30KLSsKLSsvKiBFdmFsdWF0ZSBEV0FSRiBleHByZXNzaW9uIGF0IERM QkFUT04gZXhwZWN0aW5nIGl0IHByb2R1Y2VzIGV4YWN0bHkgb25lCi0rICAgQ09SRV9BRERSIHJl c3VsdCBvbiB0aGUgRFdBUkYgc3RhY2sgc3RhY2suICAqLwotKwotK0NPUkVfQUREUgotK2R3YXJm X2xvY2V4cHJfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkbGJhdG9u KQotK3sKLSsgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKLSsgIENPUkVfQUREUiBy ZXR2YWw7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9j bGVhbnVwLCAwKTsKLSsKLSsgIGN0eCA9IGR3YXJmX2V4cHJfcHJlcF9jdHggKE5VTEwsIGRsYmF0 b24tPmRhdGEsIGRsYmF0b24tPnNpemUsCi0rCQkJICAgICBkbGJhdG9uLT5wZXJfY3UpOwotKyAg aWYgKGN0eC0+bnVtX3BpZWNlcyA+IDApCi0rICAgIGVycm9yIChfKCJEV19PUF8qcGllY2UgaXMg dW5zdXBwb3J0ZWQgZm9yIERXX0ZPUk1fYmxvY2siKSk7Ci0rCi0rICByZXR2YWwgPSBkd2FyZl9l eHByX2ZldGNoIChjdHgsIDApOwotKwotKyAgaWYgKGN0eC0+bG9jYXRpb24gPT0gRFdBUkZfVkFM VUVfUkVHSVNURVIpCisrICAvKiBFeGNsdWRlIGxhbmd1YWdlX2FkYSBmcm9tIGFueSBUWVBFX0RZ TkFNSUMgY29uc3RydWN0cyBiZWxvdy4gIEdEQiBBZGEKKysgICAgIHN1cHBvcnRzIGltcGxlbWVu dHMgdGhlIGR5bmFtaWMgYm91bmRzIGluIGEgbm9uLURXQVJGIHdheSBhbmQgdGhlCisrICAgICBl eGlzdGluZyBEV0FSRiBkeW5hbWljIGJvdW5kcyBhcmUgaW52YWxpZCwgbGVhZGluZyB0byBtZW1v cnkgYWNjZXNzCisrICAgICBlcnJvcnMuICAqLworIAorLSAgLyogRklYTUU6IEZvciB2YXJpYWJs ZSBzaXplZCBhcnJheXMgZWl0aGVyIG9mIHRoZXNlIGNvdWxkIGJlCistICAgICBhIHZhcmlhYmxl IHJhdGhlciB0aGFuIGEgY29uc3RhbnQgdmFsdWUuICBXZSdsbCBhbGxvdyBpdCwKKy0gICAgIGJ1 dCB3ZSBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgaXQuICAqLworICAgYXR0ciA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CistICBpZiAoYXR0cikKKy0gICAgbG93 ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKysgIGlmIChhdHRy ICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdl X2FkYSkKICsgICAgewotKyAgICAgIC8qIElubGluZWQgZHdhcmZfZXhwcl9yZWFkX3JlZyBhcyB3 ZSBubyBsb25nZXIgaGF2ZSB0aGUgYmF0b24uICovCi0rCi0rICAgICAgaW50IGdkYl9yZWdudW0g PSBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVnbnVtIChjdHgtPmdkYmFyY2gsIHJldHZhbCk7Ci0r ICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBidWlsdGluX3R5cGUgKGN0eC0+Z2RiYXJjaCktPmJ1 aWx0aW5fZGF0YV9wdHI7Ci0rICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lID0gZ2V0X3Nl bGVjdGVkX2ZyYW1lIChOVUxMKTsKLSsKLSsgICAgICByZXR2YWwgPSBhZGRyZXNzX2Zyb21fcmVn aXN0ZXIgKHR5cGUsIGdkYl9yZWdudW0sIGZyYW1lKTsKKysgICAgICBUWVBFX1JBTkdFX0RBVEEg KHJhbmdlX3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7Cisr ICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfYmxvY2sgPQor KwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKyAgICAgIFRZ UEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEZvciBzZXR0aW5nIGEgZGVm YXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8KKysgICAgICBs b3cgPSAwOwogKyAgICB9CisrICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAm JiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgc3RydWN0IGRp ZV9pbmZvICp0YXJnZXRfZGllOworKyAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9 IGN1OworKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKICsKLSsgIGRv X2NsZWFudXBzIChiYWNrX3RvKTsKLSsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotKy8qIEV2 YWx1YXRlIERXQVJGIGxvY2F0aW9uIGxpc3QgYXQgRExMQkFUT04gZXhwZWN0aW5nIGl0IHByb2R1 Y2VzIGV4YWN0bHkgb25lCi0rICAgQ09SRV9BRERSIHJlc3VsdCBzdG9yZWQgdG8gKkFERFJQIG9u IHRoZSBEV0FSRiBzdGFjayBzdGFjay4gIElmIHRoZSByZXN1bHQKLSsgICBjb3VsZCBub3QgYmUg Zm91bmQgcmV0dXJuIHplcm8gYW5kIGtlZXAgKkFERFJQIHVuY2hhbmdlZC4gICovCi0rCi0raW50 Ci0rZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24g KmRsbGJhdG9uLAotKwkJCSAgc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiAqYWRkcnApCi0r ewotKyAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxM KTsKLSsgIGdkYl9ieXRlICpkYXRhOwotKyAgc2l6ZV90IHNpemU7Ci0rICBzdHJ1Y3QgdmFsdWUg KnZhbDsKKysgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0 dHIsICZ0YXJnZXRfY3UpOworKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9 PSBjdS0+b2JqZmlsZSk7CisrICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRh cmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOwogKwotKyAgZGF0YSA9IGZpbmRf bG9jYXRpb25fZXhwcmVzc2lvbiAoZGxsYmF0b24sICZzaXplLAotKwkJCQkgICBnZXRfZnJhbWVf YWRkcmVzc19pbl9ibG9jayAoZnJhbWUpKTsKLSsgIGlmIChkYXRhID09IE5VTEwpCi0rICAgIHJl dHVybiAwOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kID0g UkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAo cmFuZ2VfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAorKyAgICAgICAgPSBkd2Fy ZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7Cisr ICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC50 eXBlCisrICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOworKyAgICAg IFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEZvciBzZXR0aW5nIGEg ZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8KKysgICAg ICBsb3cgPSAwOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBpZiAoYXR0ciAmJiBh dHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQorKwlsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29u c3RhbnRfdmFsdWUgKGF0dHIsIDApOworKyAgICAgIGVsc2UKKysJeworKwkgIGlmIChjdS0+bGFu Z3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKKysJICAgIHsKKysJICAgICAgLyogRk9SVFJBTiBp bXBsaWVzIGEgbG93ZXIgYm91bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KKysJICAgICAgbG93 ID0gMTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIC8qIEFjY29yZGluZyB0 byBEV0FSRiB3ZSBzaG91bGQgYXNzdW1lIHRoZSB2YWx1ZSAwIG9ubHkgZm9yCisrCQkgTEFOR1VB R0VfQyBhbmQgTEFOR1VBR0VfQ1BMVVMuICAqLworKwkgICAgICBsb3cgPSAwOworKwkgICAgfQor Kwl9CisrICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChsb3cgJiBuZWdh dGl2ZV9tYXNrKSkKKysJbG93IHw9IG5lZ2F0aXZlX21hc2s7CisrICAgICAgVFlQRV9MT1dfQk9V TkQgKHJhbmdlX3R5cGUpID0gbG93OworKyAgICAgIGlmIChsb3cgPj0gMCkKKysJVFlQRV9VTlNJ R05FRCAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisgCisgICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKKy0gIGlmIChhdHRyKQorKyAgaWYgKCFhdHRy IHx8ICghYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50 IChhdHRyKQorKwkJJiYgIWlzX3JlZl9hdHRyIChhdHRyKSkpCisgICAgIHsKKy0gICAgICBpZiAo YXR0ci0+Zm9ybSA9PSBEV19GT1JNX2Jsb2NrMSB8fCBpc19yZWZfYXR0ciAoYXR0cikpCistICAg ICAgICB7CistICAgICAgICAgIC8qIEdDQyBlbmNvZGVzIGFycmF5cyB3aXRoIHVuc3BlY2lmaWVk IG9yIGR5bmFtaWMgbGVuZ3RoCistICAgICAgICAgICAgIHdpdGggYSBEV19GT1JNX2Jsb2NrMSBh dHRyaWJ1dGUgb3IgYSByZWZlcmVuY2UgYXR0cmlidXRlLgorLSAgICAgICAgICAgICBGSVhNRTog R0RCIGRvZXMgbm90IHlldCBrbm93IGhvdyB0byBoYW5kbGUgZHluYW1pYworLSAgICAgICAgICAg ICBhcnJheXMgcHJvcGVybHksIHRyZWF0IHRoZW0gYXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQK Ky0gICAgICAgICAgICAgbGVuZ3RoIGZvciBub3cuCistCistICAgICAgICAgICAgIEZJWE1FOiBq aW1iLzIwMDMtMDktMjI6IEdEQiBkb2VzIG5vdCByZWFsbHkga25vdworLSAgICAgICAgICAgICBo b3cgdG8gaGFuZGxlIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5ndGgKKy0gICAgICAgICAgICAg ZWl0aGVyOyB3ZSBqdXN0IHJlcHJlc2VudCB0aGVtIGFzIHplcm8tbGVuZ3RoCistICAgICAgICAg ICAgIGFycmF5cy4gIENob29zZSBhbiBhcHByb3ByaWF0ZSB1cHBlciBib3VuZCBnaXZlbgorLSAg ICAgICAgICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJvdmUuICAqLworLSAg ICAgICAgICBoaWdoID0gbG93IC0gMTsKKy0gICAgICAgIH0KKy0gICAgICBlbHNlCistICAgICAg ICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsKKysgICAg ICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsKKysgICAgICAvKiBJ dCBkb2VzIG5vdCBodXJ0IGJ1dCBpdCBpcyBuZWVkbGVzc2x5IGluZWZmZWN0aXZlIGluIGNoZWNr X3R5cGVkZWYuICAqLworKyAgICAgIGlmIChhdHRyICYmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0 dHIpIHx8IGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpKQorKyAgICAgIAl7CisrCSAgVFlQ RV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIChyYW5nZV90eXBlKSA9IDE7CisrCSAgVFlQRV9E WU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KKysgICAgICAvKiBQYXNzIGl0IG5vdyBhcyB0 aGUgcmVndWxhciBEV19BVF91cHBlcl9ib3VuZC4gICovCisrICAgIH0KICsKLSsgIHZhbCA9IGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAodHlwZSwgZnJhbWUsIGRhdGEsIHNpemUsIGRsbGJhdG9u LT5wZXJfY3UpOwotKyAgaWYgKHZhbHVlX29wdGltaXplZF9vdXQgKHZhbCkpCi0rICAgIHJldHVy biAwOworKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFu Z3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChy YW5nZV90eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQor KwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKyAgICAgIFRZ UEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisrICBlbHNlIGlmIChhdHRyICYm IGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAg ICB7CisrICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOworKyAgICAgIHN0cnVjdCBk d2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OworKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdl dF9sb2NfYXR0cjsKICsKLSsgICphZGRycCA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7Ci0rICBy ZXR1cm4gMTsKLSt9CisrICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAo ZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKKysgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9i amZpbGUgPT0gY3UtPm9iamZpbGUpOworKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9h dHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKICsKLSBzdHJ1Y3Qg cGllY2VfY2xvc3VyZQotIHsKLSAgIC8qIFRoZSBudW1iZXIgb2YgcGllY2VzIHVzZWQgdG8gZGVz Y3JpYmUgdGhpcyB2YXJpYWJsZS4gICovCi1AQCAtNDAxLDQ4ICs1NzAsMzEgQEAgc3RhdGljIHN0 cnVjdCBsdmFsX2Z1bmNzIHBpZWNlZF92YWx1ZV9mdW5jcyA9IHsKLSAgICBTSVpFLCB0byBmaW5k IHRoZSBjdXJyZW50IGxvY2F0aW9uIG9mIHZhcmlhYmxlIFZBUiBpbiB0aGUgY29udGV4dAotICAg IG9mIEZSQU1FLiAgKi8KLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLS1kd2FyZjJfZXZhbHVhdGVf bG9jX2Rlc2MgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAot K2R3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSwKLSAJCQkgIGdkYl9ieXRlICpkYXRhLCB1bnNpZ25lZCBzaG9ydCBzaXpl LAotIAkJCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotIHsKLSAgIHN0cnVj dCB2YWx1ZSAqcmV0dmFsOwotLSAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gYmF0b247Ci0gICBz dHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7Ci0tICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2No YWluOwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9j bGVhbnVwLCAwKTsKLSAKLSAgIGlmIChzaXplID09IDApCisrICAgICAgVFlQRV9SQU5HRV9EQVRB IChyYW5nZV90eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNU OworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2Ns aXN0LmxvY2xpc3QKKysgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFy Z2V0X2xvY19hdHRyLCB0YXJnZXRfY3UpOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2Vf dHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LnR5cGUKKysgICAgICAgID0gZGllX3R5cGUgKHRh cmdldF9kaWUsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9 IDE7CisgICAgIH0KKyAgIGVsc2UKICAgICAgewotLSAgICAgIHJldHZhbCA9IGFsbG9jYXRlX3Zh bHVlIChTWU1CT0xfVFlQRSAodmFyKSk7Ci0rICAgICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUg KHR5cGUpOwotICAgICAgIFZBTFVFX0xWQUwgKHJldHZhbCkgPSBub3RfbHZhbDsKLSAgICAgICBz ZXRfdmFsdWVfb3B0aW1pemVkX291dCAocmV0dmFsLCAxKTsKLSAgICAgICByZXR1cm4gcmV0dmFs OworLSAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOworLSAg ICAgIGlmIChhdHRyKQorKyAgICAgIExPTkdFU1QgaGlnaDsKKysKKysgICAgICBpZiAoYXR0ciAm JiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQorKwloaWdoID0gZHdhcmYyX2dldF9hdHRy X2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKysgICAgICBlbHNlCisgCXsKKy0JICBpbnQgY291 bnQgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOworLQkgIGhpZ2gg PSBsb3cgKyBjb3VudCAtIDE7CisrCSAgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2Vf dHlwZSkgPSAxOworKwkgIGhpZ2ggPSBsb3cgLSAxOworIAl9CisrICAgICAgaWYgKCFUWVBFX1VO U0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykpCisrCWhpZ2ggfD0g bmVnYXRpdmVfbWFzazsKKysgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gaGln aDsKICAgICAgfQogIAotLSAgYmF0b24uZnJhbWUgPSBmcmFtZTsKLS0gIGJhdG9uLm9iamZpbGUg PSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKHBlcl9jdSk7Ci0tCi0tICBjdHggPSBuZXdfZHdhcmZf ZXhwcl9jb250ZXh0ICgpOwotLSAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2ZyZWVfZHdhcmZf ZXhwcl9jb250ZXh0IChjdHgpOwotLQotLSAgY3R4LT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJj aCAoYmF0b24ub2JqZmlsZSk7Ci0tICBjdHgtPmFkZHJfc2l6ZSA9IGR3YXJmMl9wZXJfY3VfYWRk cl9zaXplIChwZXJfY3UpOwotLSAgY3R4LT5iYXRvbiA9ICZiYXRvbjsKLS0gIGN0eC0+cmVhZF9y ZWcgPSBkd2FyZl9leHByX3JlYWRfcmVnOwotLSAgY3R4LT5yZWFkX21lbSA9IGR3YXJmX2V4cHJf cmVhZF9tZW07Ci0tICBjdHgtPmdldF9mcmFtZV9iYXNlID0gZHdhcmZfZXhwcl9mcmFtZV9iYXNl OwotLSAgY3R4LT5nZXRfZnJhbWVfY2ZhID0gZHdhcmZfZXhwcl9mcmFtZV9jZmE7Ci0tICBjdHgt PmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7Ci0rICBjdHggPSBkd2Fy Zl9leHByX3ByZXBfY3R4IChmcmFtZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsKLSAKLS0gIGR3YXJm X2V4cHJfZXZhbCAoY3R4LCBkYXRhLCBzaXplKTsKLSAgIGlmIChjdHgtPm51bV9waWVjZXMgPiAw KQotICAgICB7Ci0gICAgICAgc3RydWN0IHBpZWNlX2Nsb3N1cmUgKmM7Ci0gICAgICAgc3RydWN0 IGZyYW1lX2lkIGZyYW1lX2lkID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7Ci0gCi0gICAgICAgYyA9 IGFsbG9jYXRlX3BpZWNlX2Nsb3N1cmUgKGN0eC0+bnVtX3BpZWNlcywgY3R4LT5waWVjZXMsIGN0 eC0+Z2RiYXJjaCk7Ci0tICAgICAgcmV0dmFsID0gYWxsb2NhdGVfY29tcHV0ZWRfdmFsdWUgKFNZ TUJPTF9UWVBFICh2YXIpLAotLQkJCQkJJnBpZWNlZF92YWx1ZV9mdW5jcywKLS0JCQkJCWMpOwot KyAgICAgIHJldHZhbCA9IGFsbG9jYXRlX2NvbXB1dGVkX3ZhbHVlICh0eXBlLCAmcGllY2VkX3Zh bHVlX2Z1bmNzLCBjKTsKLSAgICAgICBWQUxVRV9GUkFNRV9JRCAocmV0dmFsKSA9IGZyYW1lX2lk OworICAgLyogRHdhcmYtMiBzcGVjaWZpY2F0aW9ucyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVh dGUgc3VicmFuZ2UgdHlwZXMKK0BAIC02NDIxLDIwICs2NjA4LDQxIEBAIHJlYWRfc3VicmFuZ2Vf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAl9CiAg ICAgIH0KLSAgIGVsc2UKLUBAIC00NTQsNyArNjA2LDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJICAg IHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKLSAJICAgIENP UkVfQUREUiBkd2FyZl9yZWdudW0gPSBkd2FyZl9leHByX2ZldGNoIChjdHgsIDApOwotIAkgICAg aW50IGdkYl9yZWdudW0gPSBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVnbnVtIChhcmNoLCBkd2Fy Zl9yZWdudW0pOwotLQkgICAgcmV0dmFsID0gdmFsdWVfZnJvbV9yZWdpc3RlciAoU1lNQk9MX1RZ UEUgKHZhciksIGdkYl9yZWdudW0sIGZyYW1lKTsKLSsJICAgIHJldHZhbCA9IHZhbHVlX2Zyb21f cmVnaXN0ZXIgKHR5cGUsIGdkYl9yZWdudW0sIGZyYW1lKTsKLSAJICB9Ci0gCSAgYnJlYWs7CiAg Ci1AQCAtNDYzLDcgKzYxNSwxMiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotIAkgICAgQ09SRV9BRERSIGFk ZHJlc3MgPSBkd2FyZl9leHByX2ZldGNoIChjdHgsIDApOwotIAkgICAgaW50IGluX3N0YWNrX21l bW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVtb3J5IChjdHgsIDApOworLSAgbmVn YXRpdmVfbWFzayA9CistICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlw ZSkgKiBUQVJHRVRfQ0hBUl9CSVQgLSAxKTsKKy0gIGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90 eXBlKSAmJiAobG93ICYgbmVnYXRpdmVfbWFzaykpCistICAgIGxvdyB8PSBuZWdhdGl2ZV9tYXNr OworLSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVf bWFzaykpCistICAgIGhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKKysgIC8qIERXX0FUX2JpdF9zdHJp ZGUgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkIGFzIHdlIGNvdW50IGluIGJ5dGVzLiAgKi8KKysg IGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOworKyAgaWYg KGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFu Z3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+ Ynl0ZV9zdHJpZGUua2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NL OworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdh cmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3Up OworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisrICBlbHNl IGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3Vh Z2VfYWRhKQorKyAgICB7CisrICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOworKyAg ICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OworKyAgICAgIHN0cnVjdCBhdHRy aWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKICAKLS0JICAgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVl IChTWU1CT0xfVFlQRSAodmFyKSk7Ci0rCSAgICAvKiBvYmplY3RfYWRkcmVzc19zZXQgY2FsbGVk IGhlcmUgaXMgcmVxdWlyZWQgaW4gQUxMT0NBVEVfVkFMVUUncwotKwkgICAgICAgQ0hFQ0tfVFlQ RURFRiBmb3IgdGhlIG9iamVjdCdzIHBvc3NpYmxlCi0rCSAgICAgICBEV19PUF9wdXNoX29iamVj dF9hZGRyZXNzLiAgKi8KLSsJICAgIG9iamVjdF9hZGRyZXNzX3NldCAoYWRkcmVzcyk7Ci0rCi0r CSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0gCSAgICBWQUxVRV9MVkFMIChy ZXR2YWwpID0gbHZhbF9tZW1vcnk7Ci0gCSAgICBzZXRfdmFsdWVfbGF6eSAocmV0dmFsLCAxKTsK LSAJICAgIGlmIChpbl9zdGFja19tZW1vcnkpCi1AQCAtNDc4LDEwICs2MzUsMTAgQEAgZHdhcmYy X2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSwKLSAJICAgIGJmZF9ieXRlICpjb250ZW50czsKLSAJICAgIHNpemVfdCBuID0gY3R4 LT5hZGRyX3NpemU7Ci0gCi0tCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZSAoU1lNQk9MX1RZ UEUgKHZhcikpOwotKwkgICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotIAkgICAg Y29udGVudHMgPSB2YWx1ZV9jb250ZW50c19yYXcgKHJldHZhbCk7Ci0tCSAgICBpZiAobiA+IFRZ UEVfTEVOR1RIIChTWU1CT0xfVFlQRSAodmFyKSkpCi0tCSAgICAgIG4gPSBUWVBFX0xFTkdUSCAo U1lNQk9MX1RZUEUgKHZhcikpOwotKwkgICAgaWYgKG4gPiBUWVBFX0xFTkdUSCAodHlwZSkpCi0r CSAgICAgIG4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCSAgICBzdG9yZV91bnNpZ25lZF9pbnRl Z2VyIChjb250ZW50cywgbiwKLSAJCQkJICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoY3R4LT5nZGJh cmNoKSwKLSAJCQkJICAgIHZhbHVlKTsKLUBAIC00OTMsMTAgKzY1MCwxMCBAQCBkd2FyZjJfZXZh bHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lLAotIAkgICAgYmZkX2J5dGUgKmNvbnRlbnRzOwotIAkgICAgc2l6ZV90IG4gPSBjdHgtPmxl bjsKLSAKLS0JICAgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlIChTWU1CT0xfVFlQRSAodmFyKSk7 Ci0rCSAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0gCSAgICBjb250ZW50cyA9 IHZhbHVlX2NvbnRlbnRzX3JhdyAocmV0dmFsKTsKLS0JICAgIGlmIChuID4gVFlQRV9MRU5HVEgg KFNZTUJPTF9UWVBFICh2YXIpKSkKLS0JICAgICAgbiA9IFRZUEVfTEVOR1RIIChTWU1CT0xfVFlQ RSAodmFyKSk7Ci0rCSAgICBpZiAobiA+IFRZUEVfTEVOR1RIICh0eXBlKSkKLSsJICAgICAgbiA9 IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAJICAgIG1lbWNweSAoY29udGVudHMsIGN0eC0+ZGF0YSwg bik7Ci0gCSAgfQotIAkgIGJyZWFrOwotQEAgLTcyMCw4ICs4NzcsOCBAQCBsb2NleHByX3JlYWRf dmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l KQotIHsKLSAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZGxiYXRvbiA9IFNZTUJPTF9M T0NBVElPTl9CQVRPTiAoc3ltYm9sKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdmFsOwotLSAgdmFsID0g ZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzeW1ib2wsIGZyYW1lLCBkbGJhdG9uLT5kYXRhLCBk bGJhdG9uLT5zaXplLAotLQkJCQkgIGRsYmF0b24tPnBlcl9jdSk7Ci0rICB2YWwgPSBkd2FyZjJf ZXZhbHVhdGVfbG9jX2Rlc2MgKFNZTUJPTF9UWVBFIChzeW1ib2wpLCBmcmFtZSwgZGxiYXRvbi0+ ZGF0YSwKLSsJCQkJICBkbGJhdG9uLT5zaXplLCBkbGJhdG9uLT5wZXJfY3UpOworLSAgcmFuZ2Vf dHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGlnaCk7Cisr ICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFy Z2V0X2N1KTsKKysgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9i amZpbGUpOworKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGll LCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKICAKLSAgIHJldHVybiB2YWw7Ci0gfQotQEAg LTg0NCw3ICsxMDAxLDcgQEAgbG9jbGlzdF9yZWFkX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICpz eW1ib2wsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgICAgICBzZXRfdmFsdWVfb3B0aW1p emVkX291dCAodmFsLCAxKTsKLSAgICAgfQotICAgZWxzZQotLSAgICB2YWwgPSBkd2FyZjJfZXZh bHVhdGVfbG9jX2Rlc2MgKHN5bWJvbCwgZnJhbWUsIGRhdGEsIHNpemUsCi0rICAgIHZhbCA9IGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoU1lNQk9MX1RZUEUgKHN5bWJvbCksIGZyYW1lLCBkYXRh LCBzaXplLAotIAkJCQkgICAgZGxiYXRvbi0+cGVyX2N1KTsKKy0gIC8qIE1hcmsgYXJyYXlzIHdp dGggZHluYW1pYyBsZW5ndGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKKy0g ICAgIGxlbmd0aC4gIEdEQiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBn ZXRzIGltcGxlbWVudGVkIGF0CistICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5 IGVsZW1lbnRzLiAgKi8KKy0gIGlmIChhdHRyICYmIGF0dHItPmZvcm0gPT0gRFdfRk9STV9ibG9j azEpCistICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKKysg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCisrICAg ICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKKysgICAgICBUWVBFX1JBTkdF X0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAor KyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIs IHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9z dHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUKKysgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9k aWUsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Cisr ICAgIH0KKysgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkK KysgICAgeworKyAgICAgIFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dl dF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKysgICAgICBpZiAoVFlQRV9CWVRFX1NU UklERSAocmFuZ2VfdHlwZSkgPT0gMCkKKysJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRz LAorKwkJICAgXygiRm91bmQgRFdfQVRfYnl0ZV9zdHJpZGUgd2l0aCB1bnN1cHBvcnRlZCB2YWx1 ZSAwIikpOworKyAgICB9CiAgCi0gICByZXR1cm4gdmFsOwotQEAgLTg2OCw3ICsxMDI1LDcgQEAg c3RhdGljIGludAotIGxvY2xpc3RfZGVzY3JpYmVfbG9jYXRpb24gKHN0cnVjdCBzeW1ib2wgKnN5 bWJvbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSB7Ci0gICAvKiBGSVhNRTogQ291bGQgcHJp bnQgdGhlIGVudGlyZSBsaXN0IG9mIGxvY2F0aW9ucy4gICovCi0tICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICJhIHZhcmlhYmxlIHdpdGggbXVsdGlwbGUgbG9jYXRpb25zIik7Ci0rICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sIF8oImEgdmFyaWFibGUgd2l0aCBtdWx0aXBsZSBsb2NhdGlv bnMiKSk7Ci0gICByZXR1cm4gMTsKKyAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Cisg ICBpZiAobmFtZSkKK0BAIC04NzE0LDEwICs4OTIyLDEyIEBAIHZhcl9kZWNvZGVfbG9jYXRpb24g KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKKyAgICAgIChpLmUu IHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVtb3J5IGxvY2F0aW9uIGlzCisgICAg ICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9jaywgZXRjLikuICBUaGVuIGFnYWlu LCBpdCBtaWdodAorICAgICAgbm90IGJlIHdvcnRod2hpbGUuICBJJ20gYXNzdW1pbmcgdGhhdCBp dCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKKy0gICAgIG9yIG1lbW9yeSBudW1iZXJzIHNob3cg bWUgb3RoZXJ3aXNlLiAgKi8KKysgICAgIG9yIG1lbW9yeSBudW1iZXJzIHNob3cgbWUgb3RoZXJ3 aXNlLgorKyAgICAgCisrICAgICBTWU1CT0xfQ0xBU1MgbWF5IGdldCBvdmVycmlkZW4gYnkgZHdh cmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkLiAgKi8KKyAKKy0gIGR3YXJmMl9zeW1ib2xfbWFya19j b21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7CisgICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfQ09N UFVURUQ7CisrICBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKGF0dHIsIHN5bSwgY3UpOwog IH0KICAKLUBAIC04ODQsMTYgKzEwNDEsNTYgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYg KHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgLyogR2l2 ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZpZ3VyZSBvdXQgaWYg d2UgbmVlZAorQEAgLTg3NDgsNiArODk1OCw4IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCQkJCQkg ICAgIHNpemVvZiAoc3RydWN0IHN5bWJvbCkpOworICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5f c3ltcysrKTsKKyAgICAgICBtZW1zZXQgKHN5bSwgMCwgc2l6ZW9mIChzdHJ1Y3Qgc3ltYm9sKSk7 CisrICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9D T01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLworKyAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5 bSkgPSAmZHdhcmYyX21pc3NpbmdfZnVuY3M7CisgCisgICAgICAgLyogQ2FjaGUgdGhpcyBzeW1i b2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KKyAg ICAgICBTWU1CT0xfTEFOR1VBR0UgKHN5bSkgPSBjdS0+bGFuZ3VhZ2U7CitAQCAtOTM3OSw2ICs5 NTkxLDkgQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorICAgICAgIGJyZWFrOworICAgICB9CiAgCi0gICBkYXRhID0gZmluZF9sb2Nh dGlvbl9leHByZXNzaW9uIChkbGJhdG9uLCAmc2l6ZSwgYXgtPnNjb3BlKTsKLSAgIGlmIChkYXRh ID09IE5VTEwpCi0tICAgIGVycm9yIChfKCJWYXJpYWJsZSBcIiVzXCIgaXMgbm90IGF2YWlsYWJs ZS4iKSwgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltYm9sKSk7Ci0rICAgIGVycm9yIChfKCJWYXJp YWJsZSBcIiVzXCIgaXMgbm90IGF2YWlsYWJsZS4iKSwgU1lNQk9MX1BSSU5UX05BTUUgKHN5bWJv bCkpOworKyAgaWYgKHRoaXNfdHlwZSkKKysgICAgZmluYWxpemVfdHlwZSAodGhpc190eXBlKTsK KysKKyAgIHJldHVybiB0aGlzX3R5cGU7CisgfQogIAotICAgZHdhcmYyX3RyYWNlcG9pbnRfdmFy X3JlZiAoc3ltYm9sLCBnZGJhcmNoLCBheCwgdmFsdWUsIGRhdGEsIHNpemUpOworQEAgLTExOTgz LDY3ICsxMjE5OCwxMDIgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRl ICphdHRyKQorICAgICB9CiAgfQogIAotLS8qIFRoZSBzZXQgb2YgbG9jYXRpb24gZnVuY3Rpb25z IHVzZWQgd2l0aCB0aGUgRFdBUkYtMiBleHByZXNzaW9uCi0tICAgZXZhbHVhdG9yIGFuZCBsb2Nh dGlvbiBsaXN0cy4gICovCi0rLyogVGhlIHNldCBvZiBsb2NhdGlvbiBmdW5jdGlvbnMgdXNlZCB3 aXRoIHRoZSBEV0FSRi0yIGxvY2F0aW9uIGxpc3RzLiAgKi8KLSBjb25zdCBzdHJ1Y3Qgc3ltYm9s X2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKLSAgIGxvY2xpc3RfcmVhZF92 YXJpYWJsZSwKLSAgIGxvY2xpc3RfcmVhZF9uZWVkc19mcmFtZSwKLSAgIGxvY2xpc3RfZGVzY3Jp YmVfbG9jYXRpb24sCi0gICBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZgotIH07Cistc3RhdGlj IHZvaWQKKy1kd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKKy0JCQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor Ky8qIENvbnZlcnQgRFdfQkxPQ0sgaW50byBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24uICBB VFRSIG11c3QgYmUgYSBEV19CTE9DSworKyAgIGF0dHJpYnV0ZSB0eXBlLiAgKi8KICsKLStzdGF0 aWMgc3RydWN0IHZhbHVlICoKLSttaXNzaW5nX3JlYWRfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wg KnN5bWJvbCwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotK3sKLSsgIHN0cnVjdCBkd2FyZjJf bG9jbGlzdF9iYXRvbiAqZGxiYXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltYm9sKTsK KytzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICoKKytkd2FyZjJfYXR0cl90b19s b2NleHByX2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKKyB7CistICBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRyKQorLSAgICAg IC8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkg YmUgb3V0c2lkZQorLQkgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRoZSBj b21wbGFpbnQgaW4gdGhlCistCSBvdGhlciBicmFuY2guICAqLworLSAgICAgICYmIERXX1VOU05E IChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpCistICAgIHsKKy0gICAgICBz dHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOworKyAgc3RydWN0IGR3YXJmMl9sb2Nl eHByX2JhdG9uICpiYXRvbjsKKyAKKy0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+ b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYy X2xvY2xpc3RfYmF0b24pKTsKKy0gICAgICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKy0g ICAgICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKKysgIGdkYl9hc3NlcnQgKGF0dHJfZm9y bV9pc19ibG9jayAoYXR0cikpOworIAorLSAgICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJm Ml9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKKy0JCQkgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Mp OworKyAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywgc2l6ZW9mICgqYmF0b24pKTsKKysgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OworKyAg Z2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7CisgCistICAgICAgLyogV2UgZG9uJ3Qga25vdyBo b3cgbG9uZyB0aGUgbG9jYXRpb24gbGlzdCBpcywgYnV0IG1ha2Ugc3VyZSB3ZQorLQkgZG9uJ3Qg cnVuIG9mZiB0aGUgZWRnZSBvZiB0aGUgc2VjdGlvbi4gICovCistICAgICAgYmF0b24tPnNpemUg PSBkd2FyZjJfcGVyX29iamZpbGUtPmxvYy5zaXplIC0gRFdfVU5TTkQgKGF0dHIpOworLSAgICAg IGJhdG9uLT5kYXRhID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVyICsgRFdfVU5TTkQg KGF0dHIpOworLSAgICAgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNzOwor LSAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQorLQljb21wbGFpbnQgKCZzeW1maWxlX2Nv bXBsYWludHMsCistCQkgICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91dCBzcGVjaWZ5aW5n IHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOworKyAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29w eWluZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIKKysgICAgIGhlcmUsIG5vdCB0aGUgYWN0dWFs IGRhdGEuICBXZSdyZSBzdGlsbCBwb2ludGluZyBpbnRvIHRoZQorKyAgICAgaW5mb19idWZmZXIg Zm9yIFNZTSdzIG9iamZpbGU7IHJpZ2h0IG5vdyB3ZSBuZXZlciByZWxlYXNlCisrICAgICB0aGF0 IGJ1ZmZlciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKKysgICAg IG5lZWQgdG8gY2hhbmdlLiAgKi8KKysgIGJhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5z aXplOworKyAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7CisrICBnZGJfYXNz ZXJ0IChiYXRvbi0+c2l6ZSA9PSAwIHx8IGJhdG9uLT5kYXRhICE9IE5VTEwpOwogKwotKyAgZ2Ri X2Fzc2VydCAoZGxiYXRvbiA9PSBOVUxMKTsKLSsgIGVycm9yIChfKCJVbmFibGUgdG8gcmVzb2x2 ZSB2YXJpYWJsZSBcIiVzXCIiKSwgU1lNQk9MX1BSSU5UX05BTUUgKHN5bWJvbCkpOworKyAgcmV0 dXJuIGJhdG9uOwogK30KLSsKLStzdGF0aWMgaW50Ci0rbWlzc2luZ19yZWFkX25lZWRzX2ZyYW1l IChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCisgCisrc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlz dF9iYXRvbiAqCisrZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGF0dHJpYnV0 ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiArewotKyAgcmV0dXJuIDA7Ci0rfQorKyAg c3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbjsKICsKLStzdGF0aWMgaW50Ci0rbWlz c2luZ19kZXNjcmliZV9sb2NhdGlvbiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgXygiYSB2YXJp YWJsZSB3ZSBhcmUgdW5hYmxlIHRvIHJlc29sdmUiKSk7Ci0rICByZXR1cm4gMTsKLSt9CisrICAv KiBEV19BVF9sb2NhdGlvbiBvZiB0aGUgcmVmZXJlbmNlZCBESUUgbWF5IGJlIG1pc3NpbmcgaWYg dGhlIHJlZmVyZW5jZWQKKysgICAgIHZhcmlhYmxlIGhhcyBiZWVuIG9wdGltaXplZCBvdXQuICAq LworKyAgaWYgKCFhdHRyKQorKyAgICByZXR1cm4gTlVMTDsKICsKLStzdGF0aWMgdm9pZAotK21p c3NpbmdfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAotKwkJCSAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBh eHNfdmFsdWUgKnZhbHVlKQotK3sKLSsgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZGxi YXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltYm9sKTsKKysgIGR3YXJmMl9yZWFkX3Nl Y3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKKysJCSAgICAgICAmZHdhcmYyX3Bl cl9vYmpmaWxlLT5sb2MpOwogKwotKyAgZ2RiX2Fzc2VydCAoZGxiYXRvbiA9PSBOVUxMKTsKLSsg IGVycm9yIChfKCJVbmFibGUgdG8gcmVzb2x2ZSB2YXJpYWJsZSBcIiVzXCIiKSwgU1lNQk9MX1BS SU5UX05BTUUgKHN5bWJvbCkpOwotK30KKysgIGlmICghKGF0dHJfZm9ybV9pc19zZWN0aW9uX29m ZnNldCAoYXR0cikKKysJLyogIi5kZWJ1Z19sb2MiIG1heSBub3QgZXhpc3QgYXQgYWxsLCBvciB0 aGUgb2Zmc2V0IG1heSBiZSBvdXRzaWRlCisrCSAgIHRoZSBzZWN0aW9uLiAgSWYgc28sIGZhbGwg dGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGluIHRoZQorKwkgICBvdGhlciBicmFuY2guICAqLwor KwkmJiBEV19VTlNORCAoYXR0cikgPCBkd2FyZjJfcGVyX29iamZpbGUtPmxvYy5zaXplKSkKKysg ICAgcmV0dXJuIE5VTEw7CiArCi0rLyogVGhlIHNldCBvZiBsb2NhdGlvbiBmdW5jdGlvbnMgdXNl ZCB3aXRoIHRoZSBEV0FSRi0yIGV2YWx1YXRvciB3aGVuIHdlIGFyZQotKyAgIHVuYWJsZSB0byBy ZXNvbHZlIHRoZSBzeW1ib2xzLiAgKi8KLStjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29w cyBkd2FyZjJfbWlzc2luZ19mdW5jcyA9IHsKLSsgIG1pc3NpbmdfcmVhZF92YXJpYWJsZSwKLSsg IG1pc3NpbmdfcmVhZF9uZWVkc19mcmFtZSwKLSsgIG1pc3NpbmdfZGVzY3JpYmVfbG9jYXRpb24s Ci0rICBtaXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZgotK307Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3 YXJmMmxvYy5oIGIvZ2RiL2R3YXJmMmxvYy5oCi1pbmRleCBmYTBiZDExLi4zNTM1YzFmIDEwMDY0 NAotLS0tIGEvZ2RiL2R3YXJmMmxvYy5oCi0rKysgYi9nZGIvZHdhcmYybG9jLmgKLUBAIC03Miw1 ICs3MiwxNCBAQCBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24KLSAKLSBleHRlcm4gY29uc3Qg c3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2V4cHJfZnVuY3M7Ci0gZXh0ZXJu IGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NsaXN0X2Z1bmNzOwot K2V4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbWlzc2luZ19m dW5jczsKKysgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29i c3RhY2ssCisrCQkJIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7CisrICBi YXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3Up OwogKwotK2V4dGVybiB2b2lkIG9iamVjdF9hZGRyZXNzX3NldCAoQ09SRV9BRERSIGFkZHJlc3Mp OworKyAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9jYXRpb24gbGlzdCBpcywgYnV0 IG1ha2Ugc3VyZSB3ZQorKyAgICAgZG9uJ3QgcnVuIG9mZiB0aGUgZWRnZSBvZiB0aGUgc2VjdGlv bi4gICovCisrICBiYXRvbi0+c2l6ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUgLSBE V19VTlNORCAoYXR0cik7CisrICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9j LmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsKKysgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+ YmFzZV9hZGRyZXNzOworKyAgaWYgKGN1LT5iYXNlX2tub3duID09IDApCisrICAgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJICAgICAgIF8oIkxvY2F0aW9uIGxpc3QgdXNlZCB3 aXRob3V0IHNwZWNpZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVzcy4iKSk7CiArCi0rZXh0ZXJuIENP UkVfQUREUiBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsgIChzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24gKmRsYmF0b24pOworKyAgcmV0dXJuIGJhdG9uOworK30KICsKLStleHRlcm4gaW50 IGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpk bGxiYXRvbiwKLSsJCQkJICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSICphZGRycCk7 Ci0gCi0gI2VuZGlmIC8qIGR3YXJmMmxvYy5oICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJl YWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IGEwNWM5NDYuLjk0NTI4NDQgMTAwNjQ0Ci0t LS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtNDgsNiAr NDgsMTAgQEAKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImJsb2NrLmgiCi0gI2lu Y2x1ZGUgImFkZHJtYXAuaCIKLSsjaW5jbHVkZSAiYmxvY2suaCIKLSsjaW5jbHVkZSAiZi1sYW5n LmgiCi0rI2luY2x1ZGUgInR5cGVwcmludC5oIgotKyNpbmNsdWRlICJqdi1sYW5nLmgiCi0gCi0g I2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC05Niw3ICsx MDAsNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWJuYW1lc19oZWFkZXIKLSBfUFVCTkFNRVNfSEVBREVS OwotICNkZWZpbmUgX0FDVFVBTF9QVUJOQU1FU19IRUFERVJfU0laRSAxMwotIAotLS8qIC5kZWJ1 Z19wdWJuYW1lcyBoZWFkZXIKLSsvKiAuZGVidWdfYXJhbmdlcyBoZWFkZXIKLSAgICBCZWNhdXNl IG9mIGFsaWdubWVudCBjb25zdHJhaW50cywgdGhpcyBzdHJ1Y3R1cmUgaGFzIHBhZGRpbmcgYW5k IGNhbm5vdAotICAgIGJlIG1hcHBlZCBkaXJlY3RseSBvbnRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl IC5kZWJ1Z19pbmZvIHNlY3Rpb24uICAqLwotIHR5cGVkZWYgc3RydWN0IGFyYW5nZXNfaGVhZGVy Ci1AQCAtMTUzLDcgKzE1NywxMCBAQCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbwotICAgYXNl Y3Rpb24gKmFzZWN0aW9uOwotICAgZ2RiX2J5dGUgKmJ1ZmZlcjsKLSAgIGJmZF9zaXplX3R5cGUg c2l6ZTsKLS0gIGludCB3YXNfbW1hcHBlZDsKLSsgIC8qIEEgZnVuY3Rpb24gdG8gY2FsbCB0byBk ZWFsbG9jYXRlIEJVRkZFUi4gIElmIE5VTEwsIG5vCi0rICAgICBkZWFsbG9jYXRpb24gaXMgbmVl ZGVkLiAgQSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlIGlzIHBhc3NlZCBhcwotKyAgICAgdGhl IG9ubHkgYXJndW1lbnQuICAqLwotKyAgdm9pZCAoKmRlc3RydWN0b3IpIChzdHJ1Y3QgZHdhcmYy X3NlY3Rpb25faW5mbyAqKTsKLSB9OwotIAotIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKLUBA IC0zMzMsNiArMzQwLDE5IEBAIHN0cnVjdCBkd2FyZjJfY3UKLSAgICAgIERJRXMgZm9yIG5hbWVz cGFjZXMsIHdlIGRvbid0IG5lZWQgdG8gdHJ5IHRvIGluZmVyIHRoZW0KLSAgICAgIGZyb20gbWFu Z2xlZCBuYW1lcy4gICovCi0gICB1bnNpZ25lZCBpbnQgaGFzX25hbWVzcGFjZV9pbmZvIDogMTsK KysvKiBTWU0gbWF5IGdldCBpdHMgU1lNQk9MX0NMQVNTIG92ZXJyaWRlbiBvbiBpbnZhbGlkIEFU VFIgY29udGVudC4gICovCiArCi0rICAvKiBGaWVsZHMgYXJlIHZhbGlkIGFjY29yZGluZyB0byB0 aGUgTEFOR1VBR0UgZmllbGQuICAqLwotKyAgdW5pb24KKytzdGF0aWMgdm9pZAorK2R3YXJmMl9z eW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJv bCAqc3ltLAorKwkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgc3RydWN0IGR3 YXJmMl9sb2NsaXN0X2JhdG9uICpsb2NsaXN0X2JhdG9uOworKworKyAgbG9jbGlzdF9iYXRvbiA9 IGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKGF0dHIsIGN1KTsKKysgIGlmIChsb2NsaXN0 X2JhdG9uKQogKyAgICB7Ci0rICAgICAgLyogbGFuZ3VhZ2VfZm9ydHJhbiAqLwotKyAgICAgIHN0 cnVjdAotKyAgICAgICAgewotKwkgIC8qIE1vZHVsZSBuYW1lcyBpbXBvcnRlZCB0byB0aGUgYmxv Y2sgYmVpbmcgY3VycmVudGx5IHJlYWQgaW4uICAqLwotKwkgIHN0cnVjdCBmb3J0cmFuX3VzaW5n ICp1c2U7Ci0rCX0KLSsgICAgICBmb3J0cmFuOworICAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMg KHN5bSkgPSAmZHdhcmYyX2xvY2xpc3RfZnVuY3M7CistICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JB VE9OIChzeW0pID0gYmF0b247CisrICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0g bG9jbGlzdF9iYXRvbjsKICsgICAgfQotKyAgbGFuZ3VhZ2Vfc3BlY2lmaWM7Ci0gfTsKLSAKLSAv KiBQZXJzaXN0ZW50IGRhdGEgaGVsZCBmb3IgYSBjb21waWxhdGlvbiB1bml0LCBldmVuIHdoZW4g bm90Ci1AQCAtNDg3LDggKzUwNyw3IEBAIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvCi0gICAgIHVu c2lnbmVkIGludCBoYXNfYnl0ZV9zaXplIDogMTsKLSAKLSAgICAgLyogVGhlIG5hbWUgb2YgdGhp cyBESUUuICBOb3JtYWxseSB0aGUgdmFsdWUgb2YgRFdfQVRfbmFtZSwgYnV0Ci0tICAgICAgIHNv bWV0aW1lcyBEV19UQUdfTUlQU19saW5rYWdlX25hbWUgb3IgYSBzdHJpbmcgY29tcHV0ZWQgaW4g c29tZQotLSAgICAgICBvdGhlciBmYXNoaW9uLiAgKi8KLSsgICAgICAgc29tZXRpbWVzIGEgZGVm YXVsdCBuYW1lIGZvciB1bm5hbWVkIERJRXMuICAqLwotICAgICBjaGFyICpuYW1lOwotIAotICAg ICAvKiBUaGUgc2NvcGUgdG8gcHJlcGVuZCB0byBvdXIgY2hpbGRyZW4uICBUaGlzIGlzIGdlbmVy YWxseQotQEAgLTc4OCw3ICs4MDcsOCBAQCBzdGF0aWMgdm9pZCBzY2FuX3BhcnRpYWxfc3ltYm9s cyAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKiwKLSBzdGF0aWMgdm9pZCBhZGRfcGFydGlhbF9z eW1ib2wgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICosCi0gCQkJCXN0cnVjdCBkd2FyZjJfY3Ug Kik7Ci0gCi0tc3RhdGljIGludCBwZGlfbmVlZHNfbmFtZXNwYWNlIChlbnVtIGR3YXJmX3RhZyB0 YWcpOwotK3N0YXRpYyBnZGJfYnl0ZSAqcmVhZF9jb21wX3VuaXRfaGVhZCAoc3RydWN0IGNvbXBf dW5pdF9oZWFkICosIGdkYl9ieXRlICosCi0rCQkJCSAgICAgIGJmZCAqKTsKLSAKLSBzdGF0aWMg dm9pZCBhZGRfcGFydGlhbF9uYW1lc3BhY2UgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGks Ci0gCQkJCSAgIENPUkVfQUREUiAqbG93cGMsIENPUkVfQUREUiAqaGlnaHBjLAotQEAgLTgxMyw2 ICs4MzMsMTAgQEAgc3RhdGljIHZvaWQgZHdhcmYyX3BzeW10YWJfdG9fc3ltdGFiIChzdHJ1Y3Qg cGFydGlhbF9zeW10YWIgKik7Ci0gCi0gc3RhdGljIHZvaWQgcHN5bXRhYl90b19zeW10YWJfMSAo c3RydWN0IHBhcnRpYWxfc3ltdGFiICopOworKyAgZWxzZSBpZiAoYXR0cl9mb3JtX2lzX2Jsb2Nr IChhdHRyKSkKKysgICAgeworKyAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdh cmYyX2xvY2V4cHJfZnVuY3M7CisrICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0g ZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworICAgICB9CisgICBlbHNl CisgICAgIHsKKy0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmJhdG9uOworKyAg ICAgIGR3YXJmMl9pbnZhbGlkX2F0dHJpYl9jbGFzc19jb21wbGFpbnQgKCJsb2NhdGlvbiBkZXNj cmlwdGlvbiIsCisrCQkJCQkgICAgIFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5bSkpOwogIAotK3N0 YXRpYyB2b2lkIGR3YXJmMl9yZWFkX3NlY3Rpb25fMSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs Ci0rCQkJCSAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLAotKwkJCQkgICBzdHJ1Y3QgZHdhcmYy X3NlY3Rpb25faW5mbyAqaW5mbyk7Ci0rCi0gc3RhdGljIHZvaWQgZHdhcmYyX3JlYWRfYWJicmV2 cyAoYmZkICphYmZkLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CistICAgICAgYmF0b24gPSBvYnN0 YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgIHNpemVv ZiAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7CistICAgICAgYmF0b24tPnBlcl9jdSA9 IGN1LT5wZXJfY3U7CistICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7CisrICAgICAg LyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9P UFMgdmFsaWRpdHkuICAqLwogIAotIHN0YXRpYyB2b2lkIGR3YXJmMl9mcmVlX2FiYnJldl90YWJs ZSAodm9pZCAqKTsKLUBAIC05ODQsMTcgKzEwMDgsMjUgQEAgc3RhdGljIHZvaWQgZHdhcmYyX2F0 dGFjaF9mbl9maWVsZHNfdG9fdHlwZSAoc3RydWN0IGZpZWxkX2luZm8gKiwKLSAKLSBzdGF0aWMg dm9pZCBwcm9jZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBk d2FyZjJfY3UgKik7CistICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCistCXsK Ky0JICAvKiBOb3RlIHRoYXQgd2UncmUganVzdCBjb3B5aW5nIHRoZSBibG9jaydzIGRhdGEgcG9p bnRlcgorLQkgICAgIGhlcmUsIG5vdCB0aGUgYWN0dWFsIGRhdGEuICBXZSdyZSBzdGlsbCBwb2lu dGluZyBpbnRvIHRoZQorLQkgICAgIGluZm9fYnVmZmVyIGZvciBTWU0ncyBvYmpmaWxlOyByaWdo dCBub3cgd2UgbmV2ZXIgcmVsZWFzZQorLQkgICAgIHRoYXQgYnVmZmVyLCBidXQgd2hlbiB3ZSBk byBjbGVhbiB1cCBwcm9wZXJseSB0aGlzIG1heQorLQkgICAgIG5lZWQgdG8gY2hhbmdlLiAgKi8K Ky0JICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKKy0JICBiYXRvbi0+ZGF0 YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKKy0JfQorLSAgICAgIGVsc2UKKy0JeworLQkgIGR3 YXJmMl9pbnZhbGlkX2F0dHJpYl9jbGFzc19jb21wbGFpbnQgKCJsb2NhdGlvbiBkZXNjcmlwdGlv biIsCistCQkJCQkJIFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5bSkpOworLQkgIGJhdG9uLT5zaXpl ID0gMDsKKy0JICBiYXRvbi0+ZGF0YSA9IE5VTEw7CistCX0KKysgICAgICBTWU1CT0xfQ09NUFVU RURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOworKyAgICAgIFNZTUJPTF9MT0NB VElPTl9CQVRPTiAoc3ltKSA9IE5VTEw7CiAgCi0tc3RhdGljIGNvbnN0IGNoYXIgKmRldGVybWlu ZV9jbGFzc19uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLS0JCQkJCSBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSk7Ci0tCi0gc3RhdGljIHZvaWQgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVf aW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworLSAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMg KHN5bSkgPSAmZHdhcmYyX2xvY2V4cHJfZnVuY3M7CistICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JB VE9OIChzeW0pID0gYmF0b247CisrICAgICAgLyogRm9yIGZ1bmN0aW9ucyBhIG1pc3NpbmcgRFdf QVRfZnJhbWVfYmFzZSBkb2VzIG5vdCBvcHRpbWl6ZSBvdXQgdGhlCisrCSB3aG9sZSBmdW5jdGlv biBkZWZpbml0aW9uLCBvbmx5IGl0cyBmcmFtZSBiYXNlIHJlc29sdmluZy4gICovCisrICAgICAg aWYgKGF0dHItPm5hbWUgPT0gRFdfQVRfbG9jYXRpb24pCisrCVNZTUJPTF9DTEFTUyAoc3ltKSA9 IExPQ19PUFRJTUlaRURfT1VUOworICAgICB9CisgfQogIAotIHN0YXRpYyB2b2lkIHJlYWRfbmFt ZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqKTsKK0BAIC0x MjM3Miw2ICsxMjYyMiwzMSBAQCBvZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1f bGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKKyAgIHJldHVybiBvZnNfbGhzLT5vZmZzZXQgPT0g b2ZzX3Jocy0+b2Zmc2V0OworIH0KICAKLStzdGF0aWMgdm9pZCByZWFkX2ltcG9ydF9zdGF0ZW1l bnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworKy8qIEZpbGwg aW4gZ2VuZXJpYyBhdHRyaWJ1dGVzIGFwcGxpY2FibGUgZm9yIHR5cGUgRElFcy4gICovCiArCi0g c3RhdGljIHZvaWQgcmVhZF9tb2R1bGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSk7Ci0gCi0gc3RhdGljIHZvaWQgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLSAKLStzdGF0aWMgc3RydWN0 IHR5cGUgKnJlYWRfbW9kdWxlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAotKwkJCQkgICAg ICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Cisrc3RhdGljIHZvaWQKKytmZXRjaF9kaWVfdHlwZV9h dHRycyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLAorKwkJICAgICAg c3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKICsK LStzdGF0aWMgdm9pZCByZWFkX2ZvcnRyYW5faW1wb3J0ZWRfbW9kdWxlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwKLSsJCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworKyAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1KTsKKysgIGlmIChhdHRyX2Zvcm1f aXNfYmxvY2sgKGF0dHIpKQorKyAgICBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5 cGUpID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwKKysJCQkJCQkJCQkgIGN1 KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAodHlwZSkpOwog KwotK3N0YXRpYyB2b2lkIHJlYWRfZm9ydHJhbl9pbXBvcnRlZF9kZWNsYXJhdGlvbiAoc3RydWN0 IGRpZV9pbmZvICpkaWUsCi0rCQkJCQkgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworKyAg YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOworKyAgaWYgKGF0 dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisrICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9IGR3 YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFU WVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKTsKICsKLSBzdGF0aWMgY29uc3QgY2hhciAqbmFtZXNw YWNlX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAotIAkJCQkgICBpbnQgKmlzX2Fub255bW91 cywgc3RydWN0IGR3YXJmMl9jdSAqKTsKLSAKLUBAIC0xMDI4LDcgKzEwNjAsOCBAQCBzdGF0aWMg Z2RiX2J5dGUgKnJlYWRfZnVsbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpy ZWFkZXIsCi0gCi0gc3RhdGljIHZvaWQgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqLCBz dHJ1Y3QgZHdhcmYyX2N1ICopOwotIAotLXN0YXRpYyBjaGFyICpkd2FyZjJfbGlua2FnZV9uYW1l IChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLStzdGF0aWMgY2hhciAq Zm9ydHJhbl9tb2R1bGVfbGlua2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLSsJCQkJ CSAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotIAotIHN0YXRpYyBjaGFyICpkd2FyZjJfY2Fub25p Y2FsaXplX25hbWUgKGNoYXIgKiwgc3RydWN0IGR3YXJmMl9jdSAqLAotIAkJCQkgICAgICAgc3Ry dWN0IG9ic3RhY2sgKik7Ci1AQCAtMTExNCw2ICsxMTQ3LDkgQEAgc3RhdGljIGludCBhdHRyX2Zv cm1faXNfc2VjdGlvbl9vZmZzZXQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7Ci0gCi0gc3RhdGljIGlu dCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKik7Ci0gCi0rc3RhdGlj IHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRv bgotKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKKysg IGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7CisrICBpZiAo YXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysgICAgVFlQRV9BU1NPQ0lBVEVEICh0eXBlKSA9 IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdkYl9hc3NlcnQg KCFUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSk7CisrfQogKwotIHN0YXRpYyB2b2lkIGR3YXJm Ml9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKLSAJCQkJCSBz dHJ1Y3Qgc3ltYm9sICpzeW0sCi0gCQkJCQkgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotQEAgLTEx NDQsNiArMTE4MCw5IEBAIHN0YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7 CisgLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBESUUgdG8gVFlQRS4gIFNhdmUgaXQg aW4gQ1UncyBoYXNoCisgICAgdGFibGUgaWYgbmVjZXNzYXJ5LiAgRm9yIGNvbnZlbmllbmNlLCBy ZXR1cm4gVFlQRS4KICAKLSBzdGF0aWMgdm9pZCBmcmVlX29uZV9jYWNoZWRfY29tcF91bml0ICh2 b2lkICopOworQEAgLTEyMzk1LDYgKzEyNjcwLDggQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIHsK KyAgIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoqc2xvdCwgb2ZzOwogIAotK3N0YXRp YyB2b2lkIGZldGNoX2RpZV90eXBlX2F0dHJzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IHR5cGUgKnR5cGUsCi0rCQkJCSAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworKyAgZmV0Y2hfZGll X3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwogKwotIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0 X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJICBzdHJ1 Y3QgZHdhcmYyX2N1ICopOwotIAotQEAgLTExNjMsMjIgKzEyMDIsMzEgQEAgc3RhdGljIHZvaWQg ZHdhcmYyX2NsZWFyX21hcmtzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICopOwotIAotIHN0 YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpOworICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBzdXJlIHRoYXQg dGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKKyAgICAgIGluaXRpYWxpemVkIChpZiBu b3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCisgICAgICB3ZSBz aG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNpZmljIGFyZWEgaXMK K2RpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYworaW5kZXggOGMwMDkz OC4uNGFhMWYzZiAxMDA2NDQKKy0tLSBhL2dkYi9lbGZyZWFkLmMKKysrKyBiL2dkYi9lbGZyZWFk LmMKK0BAIC0zNyw2ICszNyw3IEBACisgI2luY2x1ZGUgImNvbXBsYWludHMuaCIKKyAjaW5jbHVk ZSAiZGVtYW5nbGUuaCIKKyAjaW5jbHVkZSAicHN5bXByaXYuaCIKKysjaW5jbHVkZSAiZ2RidHlw ZXMuaCIKICAKLStzdGF0aWMgdm9pZCBkZXN0cm95X3NlY3Rpb24gKHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvICppbmZvKTsKLSsKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICpkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uCi0rICAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0 ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotKwotIC8qIFRyeSB0byBsb2NhdGUgdGhlIHNlY3Rp b25zIHdlIG5lZWQgZm9yIERXQVJGIDIgZGVidWdnaW5nCi0gICAgaW5mb3JtYXRpb24gYW5kIHJl dHVybiB0cnVlIGlmIHdlIGhhdmUgZW5vdWdoIHRvIGRvIHNvbWV0aGluZy4gICovCisgZXh0ZXJu IHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7CiAgCi0gaW50Ci0gZHdhcmYyX2hhc19p bmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BAIC0xODAsNyArMTgxLDggQEAgcmVjb3Jk X21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZV9sZW4sIGludCBjb3B5 X25hbWUsCiAgewotLSAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZGF0YTsKLS0KLS0gIC8q IEluaXRpYWxpemUgcGVyLW9iamZpbGUgc3RhdGUuICAqLwotLSAgZGF0YSA9IG9ic3RhY2tfYWxs b2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKmRhdGEpKTsKLS0gIG1lbXNl dCAoZGF0YSwgMCwgc2l6ZW9mICgqZGF0YSkpOwotLSAgc2V0X29iamZpbGVfZGF0YSAob2JqZmls ZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXksIGRhdGEpOwotLSAgZHdhcmYyX3Blcl9vYmpmaWxl ID0gZGF0YTsKLSsgIGR3YXJmMl9wZXJfb2JqZmlsZSA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwg ZHdhcmYyX29iamZpbGVfZGF0YV9rZXkpOwotKyAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUpCi0r ICAgIHsKLSsgICAgICAvKiBJbml0aWFsaXplIHBlci1vYmpmaWxlIHN0YXRlLiAgKi8KLSsgICAg ICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkYXRhCi0rCT0gb2JzdGFja19hbGxvYyAoJm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqZGF0YSkpOwotKyAgICAgIG1lbXNldCAo ZGF0YSwgMCwgc2l6ZW9mICgqZGF0YSkpOwotKyAgICAgIHNldF9vYmpmaWxlX2RhdGEgKG9iamZp bGUsIGR3YXJmMl9vYmpmaWxlX2RhdGFfa2V5LCBkYXRhKTsKLSsgICAgICBkd2FyZjJfcGVyX29i amZpbGUgPSBkYXRhOwotIAotLSAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChvYmpmaWxlLT5vYmZk LCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zLCBOVUxMKTsKLS0gIHJldHVybiAoZGF0YS0+aW5mby5h c2VjdGlvbiAhPSBOVUxMICYmIGRhdGEtPmFiYnJldi5hc2VjdGlvbiAhPSBOVUxMKTsKLSsgICAg ICBiZmRfbWFwX292ZXJfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGR3YXJmMl9sb2NhdGVfc2Vj dGlvbnMsIE5VTEwpOwotKyAgICB9Ci0rICByZXR1cm4gKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5m by5hc2VjdGlvbiAhPSBOVUxMCi0rCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYuYXNl Y3Rpb24gIT0gTlVMTCk7Ci0gfQotIAotIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2UgY2Fu IGVpdGhlciBsb29rIGZvciAiLjxuYW1lPiIsIG9yIGZvcgotQEAgLTEyNzEsMTAgKzEzMTksMTMg QEAgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZv aWQgKmlnbm9yZV9wdHIpCi0gfQorICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2Jq ZmlsZV9hcmNoIChvYmpmaWxlKTsKICAKLSAvKiBEZWNvbXByZXNzIGEgc2VjdGlvbiB0aGF0IHdh cyBjb21wcmVzc2VkIHVzaW5nIHpsaWIuICBTdG9yZSB0aGUKLS0gICBkZWNvbXByZXNzZWQgYnVm ZmVyLCBhbmQgaXRzIHNpemUsIGluIE9VVEJVRiBhbmQgT1VUU0laRS4gICovCi0rICAgZGVjb21w cmVzc2VkIGJ1ZmZlciwgYW5kIGl0cyBzaXplLCBpbiBPVVRCVUYgYW5kIE9VVFNJWkUuICBUaGUK LSsgICByZXN1bHQgaXMgYWxsb2NhdGVkIG9uIE9CU1RBQ0s7IGlmIE9CU1RBQ0sgaXMgTlVMTCwg eG1hbGxvYyBpcwotKyAgIHVzZWQuICAqLworLSAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwg bXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0KQorKyAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwg bXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0CisrICAgICAgfHwgbXNfdHlwZSA9PSBtc3RfdGV4dF9n bnVfaWZ1bmMpCisgICAgIGFkZHJlc3MgPSBnZGJhcmNoX3NtYXNoX3RleHRfYWRkcmVzcyAoZ2Ri YXJjaCwgYWRkcmVzcyk7CiAgCi0gc3RhdGljIHZvaWQKLS16bGliX2RlY29tcHJlc3Nfc2VjdGlv biAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKLSt6bGliX2RlY29t cHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBvYnN0YWNrICpv YnN0YWNrLAotKwkJCSBhc2VjdGlvbiAqc2VjdHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg IGdkYl9ieXRlICoqb3V0YnVmLCBiZmRfc2l6ZV90eXBlICpvdXRzaXplKQotIHsKLSAgIGJmZCAq YWJmZCA9IG9iamZpbGUtPm9iZmQ7Ci1AQCAtMTI5MSw2ICsxMzQyLDcgQEAgemxpYl9kZWNvbXBy ZXNzX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBhc2VjdGlvbiAqc2VjdHAsCi0g ICB6X3N0cmVhbSBzdHJtOwotICAgaW50IHJjOwotICAgaW50IGhlYWRlcl9zaXplID0gMTI7Ci0r ICBzdHJ1Y3QgY2xlYW51cCAqb2xkID0gTlVMTDsKLSAKLSAgIGlmIChiZmRfc2VlayAoYWJmZCwg c2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCi0gICAgICAgfHwgYmZkX2JyZWFkIChjb21w cmVzc2VkX2J1ZmZlciwgY29tcHJlc3NlZF9zaXplLCBhYmZkKSAhPSBjb21wcmVzc2VkX3NpemUp Ci1AQCAtMTMyMCw4ICsxMzcyLDEzIEBAIHpsaWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAotICAgc3RybS5hdmFpbF9pbiA9IGNv bXByZXNzZWRfc2l6ZSAtIGhlYWRlcl9zaXplOwotICAgc3RybS5uZXh0X2luID0gKEJ5dGVmKikg Y29tcHJlc3NlZF9idWZmZXIgKyBoZWFkZXJfc2l6ZTsKLSAgIHN0cm0uYXZhaWxfb3V0ID0gdW5j b21wcmVzc2VkX3NpemU7Ci0tICB1bmNvbXByZXNzZWRfYnVmZmVyID0gb2JzdGFja19hbGxvYyAo Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bmNvbXByZXNzZWRfc2l6ZSk7Ci0rICBpZiAob2JzdGFjaykKLSsgICAgdW5j b21wcmVzc2VkX2J1ZmZlciA9IG9ic3RhY2tfYWxsb2MgKG9ic3RhY2ssIHVuY29tcHJlc3NlZF9z aXplKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHVuY29tcHJlc3NlZF9idWZmZXIgPSB4bWFs bG9jICh1bmNvbXByZXNzZWRfc2l6ZSk7Ci0rICAgICAgb2xkID0gbWFrZV9jbGVhbnVwICh4ZnJl ZSwgdW5jb21wcmVzc2VkX2J1ZmZlcik7Ci0rICAgIH0KLSAgIHJjID0gaW5mbGF0ZUluaXQgKCZz dHJtKTsKLSAgIHdoaWxlIChzdHJtLmF2YWlsX2luID4gMCkKLSAgICAgewotQEAgLTEzNDIsMjYg KzEzOTksMTc2IEBAIHpsaWJfZGVjb21wcmVzc19zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgYXNlY3Rpb24gKnNlY3RwLAotICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IGNvbmNs dWRpbmcgRFdBUkYgdW5jb21wcmVzc2lvbiBpbiAnJXMnOiAlZCIpLAotICAgICAgICAgICAgYmZk X2dldF9maWxlbmFtZSAoYWJmZCksIHJjKTsKLSAKLSsgIGlmIChvbGQpCi0rICAgIGRpc2NhcmRf Y2xlYW51cHMgKG9sZCk7Ci0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gICAqb3V0YnVmID0g dW5jb21wcmVzc2VkX2J1ZmZlcjsKLSAgICpvdXRzaXplID0gdW5jb21wcmVzc2VkX3NpemU7Ci0g I2VuZGlmCisgICByZXR1cm4gcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2xfZnVsbCAobmFtZSwg bmFtZV9sZW4sIGNvcHlfbmFtZSwgYWRkcmVzcywKK0BAIC0zODgsNyArMzkwLDEwIEBAIGVsZl9z eW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBlLAorIAkgICAgewor IAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dFQUspKQorIAkJewor LQkJICBtc190eXBlID0gbXN0X3RleHQ7CisrCQkgIGlmIChzeW0tPmZsYWdzICYgQlNGX0dOVV9J TkRJUkVDVF9GVU5DVElPTikKKysJCSAgICBtc190eXBlID0gbXN0X3RleHRfZ251X2lmdW5jOwor KwkJICBlbHNlCisrCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0OworIAkJfQorIAkgICAgICBlbHNl IGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQorIAkJICAg ICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKK0BAIC01NjksNiArNTc0LDI1MCBAQCBl bGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgdHlwZSwKKyAgICAg fQogIH0KICAKLS0vKiBSZWFkIHRoZSBjb250ZW50cyBvZiB0aGUgc2VjdGlvbiBTRUNUUCBmcm9t IG9iamVjdCBmaWxlIHNwZWNpZmllZCBieQotLSAgIE9CSkZJTEUsIHN0b3JlIGluZm8gYWJvdXQg dGhlIHNlY3Rpb24gaW50byBJTkZPLgotLSAgIElmIHRoZSBzZWN0aW9uIGlzIGNvbXByZXNzZWQs IHVuY29tcHJlc3MgaXQgYmVmb3JlIHJldHVybmluZy4gICovCi0rLyogQSBjbGVhbnVwIHRoYXQg Y2FsbHMgZGVzdHJveV9zZWN0aW9uLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLWR3YXJmMl9yZWFk X3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyAqaW5mbykKLStkZXN0cm95X3NlY3Rpb25fY2xlYW51cCAodm9pZCAqYXJnKQotK3sKLSsg IGRlc3Ryb3lfc2VjdGlvbiAoYXJnKTsKLSt9CisrLyogRklYTUU6IERlbGF5IGl0IHRocm91Z2gg ZWxmX3N5bV9mbnMuICAqLworKworK3N0YXRpYyB2b2lkCisrZWxmX3JlbF9wbHRfcmVhZCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGFzeW1ib2wgKipkeW5fc3ltYm9sX3RhYmxlKQorK3sKKysg IGJmZCAqb2JmZCA9IG9iamZpbGUtPm9iZmQ7CisrICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRf ZGF0YSAqYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKG9iZmQpOworKyAgYXNlY3Rpb24gKnBs dCwgKnJlbHBsdCwgKmdvdF9wbHQ7CisrICB1bnNpZ25lZCB1OworKyAgaW50IHBsdF9lbGZfaWR4 OworKyAgYmZkX3NpemVfdHlwZSByZWxvY19jb3VudCwgcmVsb2M7CisrICBjaGFyICpzdHJpbmdf YnVmZmVyID0gTlVMTDsKKysgIHNpemVfdCBzdHJpbmdfYnVmZmVyX3NpemUgPSAwOworKyAgc3Ry dWN0IGNsZWFudXAgKmJhY2tfdG87CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZp bGUtPmdkYmFyY2g7CisrICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdk YmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOworKyAgc2l6ZV90IHB0cl9zaXplID0gVFlQRV9MRU5H VEggKHB0cl90eXBlKTsKKysKKysgIGlmIChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxl X2JhY2tsaW5rKQorKyAgICByZXR1cm47CiArCi0rLyogUmVhZCB0aGUgLmRlYnVnX2FyYW5nZXMg c2VjdGlvbiBhbmQgY29uc3RydWN0IGFuIGFkZHJlc3MgbWFwLiAgKi8KKysgIHBsdCA9IGJmZF9n ZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBsdCIpOworKyAgaWYgKHBsdCA9PSBOVUxMKQor KyAgICByZXR1cm47CisrICBwbHRfZWxmX2lkeCA9IGVsZl9zZWN0aW9uX2RhdGEgKHBsdCktPnRo aXNfaWR4OwogKwotK3ZvaWQKLStkd2FyZjJfY3JlYXRlX3F1aWNrX2FkZHJtYXAgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGNoYXIgKmFyYW5nZXNfYnVmZmVyLCAqYXJhbmdlc19w dHI7Ci0rICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOwotKyAgQ09SRV9BRERSIGJhc2VhZGRy OwotKyAgc3RydWN0IGNsZWFudXAgKm9sZDsKLSsgIHN0cnVjdCBvYnN0YWNrIHRlbXBfb2JzdGFj azsKLSsgIHN0cnVjdCBhZGRybWFwICptdXRhYmxlX21hcDsKLSsKLSsgIGlmICghZHdhcmYyX3Bl cl9vYmpmaWxlLT5hcmFuZ2VzLmFzZWN0aW9uKQorKyAgZ290X3BsdCA9IGJmZF9nZXRfc2VjdGlv bl9ieV9uYW1lIChvYmZkLCAiLmdvdC5wbHQiKTsKKysgIGlmIChnb3RfcGx0ID09IE5VTEwpCiAr ICAgIHJldHVybjsKICsKLSsgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25f b2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOworKyAgLyogVGhpcyBzZWFyY2ggYWxn b3JpdGhtIGlzIGZyb20gX2JmZF9lbGZfY2Fub25pY2FsaXplX2R5bmFtaWNfcmVsb2MuICAqLwor KyAgZm9yIChyZWxwbHQgPSBvYmZkLT5zZWN0aW9uczsgcmVscGx0ICE9IE5VTEw7IHJlbHBsdCA9 IHJlbHBsdC0+bmV4dCkKKysgICAgaWYgKGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRoaXNf aGRyLnNoX2luZm8gPT0gcGx0X2VsZl9pZHgKKysJJiYgKGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBs dCktPnRoaXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTAorKwkgICAgfHwgZWxmX3NlY3Rpb25fZGF0 YSAocmVscGx0KS0+dGhpc19oZHIuc2hfdHlwZSA9PSBTSFRfUkVMQSkpCisrICAgICAgYnJlYWs7 CisrICBpZiAocmVscGx0ID09IE5VTEwpCisrICAgIHJldHVybjsKICsKLSsgIGR3YXJmMl9yZWFk X3NlY3Rpb25fMSAob2JqZmlsZSwgTlVMTCwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+YXJhbmdlcyk7 Ci0rICBhcmFuZ2VzX2J1ZmZlciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YXJhbmdlcy5idWZmZXI7 Ci0rICBhcmFuZ2VzX3B0ciA9IGFyYW5nZXNfYnVmZmVyOwotKyAgb2xkID0gbWFrZV9jbGVhbnVw IChkZXN0cm95X3NlY3Rpb25fY2xlYW51cCwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+YXJhbmdlcyk7 CisrICBpZiAoISBiZWQtPnMtPnNsdXJwX3JlbG9jX3RhYmxlIChvYmZkLCByZWxwbHQsIGR5bl9z eW1ib2xfdGFibGUsIFRSVUUpKQorKyAgICByZXR1cm47CiArCi0rICBvYnN0YWNrX2luaXQgKCZ0 ZW1wX29ic3RhY2spOwotKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJnRlbXBfb2JzdGFj ayk7Ci0rICBtdXRhYmxlX21hcCA9IGFkZHJtYXBfY3JlYXRlX211dGFibGUgKCZ0ZW1wX29ic3Rh Y2spOworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAm c3RyaW5nX2J1ZmZlcik7CiArCi0rICB3aGlsZSAoKGFyYW5nZXNfcHRyIC0gYXJhbmdlc19idWZm ZXIpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5hcmFuZ2VzLnNpemUpCisrICByZWxvY19jb3VudCA9 IHJlbHBsdC0+c2l6ZSAvIGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX2Vu dHNpemU7CisrICBmb3IgKHJlbG9jID0gMDsgcmVsb2MgPCByZWxvY19jb3VudDsgcmVsb2MrKykK ICsgICAgewotKyAgICAgIHN0cnVjdCBjb21wX3VuaXRfaGVhZCBjdV9oZWFkZXI7Ci0rICAgICAg dW5zaWduZWQgaW50IGJ5dGVzX3JlYWQsIHNlZ21lbnRfc2l6ZSwgZGVsdGE7Ci0rICAgICAgTE9O R0VTVCBpbmZvX29mZnNldDsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1IGN1OwotKyAgICAgIGNo YXIgKmVuZF9wdHI7Ci0rCi0rICAgICAgY3VfaGVhZGVyLmluaXRpYWxfbGVuZ3RoX3NpemUgPSAw OwotKyAgICAgIGVuZF9wdHIgPSBhcmFuZ2VzX3B0cjsKLSsgICAgICBhcmFuZ2VzX3B0ciA9IHJl YWRfY29tcF91bml0X2hlYWQgKCZjdV9oZWFkZXIsIGFyYW5nZXNfcHRyLCBhYmZkKTsKLSsgICAg ICBlbmRfcHRyICs9IGN1X2hlYWRlci5pbml0aWFsX2xlbmd0aF9zaXplICsgY3VfaGVhZGVyLmxl bmd0aDsKLSsKLSsgICAgICAvKiBTYW5pdHkgY2hlY2suICAqLwotKyAgICAgIGlmIChlbmRfcHRy IC0gYXJhbmdlc19wdHIgPj0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hcmFuZ2VzLnNpemUpCi0rCXsK LSsJICBkb19jbGVhbnVwcyAob2xkKTsKLSsJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWlu dHMsCi0rCQkgICAgIF8oImFyYW5nZXMgZW50cnkgcnVucyBvZmYgZW5kIG9mIGAuZGVidWdfYXJh bmdlcycgc2VjdGlvbiwgaWdub3JlZCIpKTsKLSsJICByZXR1cm47Ci0rCX0KLSsgICAgICBpZiAo Y3VfaGVhZGVyLmFkZHJfc2l6ZSA9PSAwKQotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZCk7Ci0r CSAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgICBfKCJhcmFuZ2VzIGVu dHJ5IGhhcyB6ZXJvIGFkZHJfc2l6ZSwgaWdub3JlZCIpKTsKLSsJICByZXR1cm47Ci0rCX0KKysg ICAgICBjb25zdCBjaGFyICpuYW1lLCAqbmFtZV9nb3RfcGx0OworKyAgICAgIHN0cnVjdCBtaW5p bWFsX3N5bWJvbCAqbXN5bTsKKysgICAgICBDT1JFX0FERFIgYWRkcmVzczsKKysgICAgICBjb25z dCBjaGFyICpzdWZmaXggPSAiQGdvdC5wbHQiOworKyAgICAgIHNpemVfdCBzdWZmaXhfbGVuID0g c3RybGVuIChzdWZmaXgpOworKyAgICAgIHNpemVfdCBuYW1lX2xlbjsKICsKLSsgICAgICBzZWdt ZW50X3NpemUgPSByZWFkXzFfYnl0ZSAoYWJmZCwgYXJhbmdlc19wdHIpOwotKyAgICAgIGFyYW5n ZXNfcHRyICs9IDE7CisrICAgICAgbmFtZSA9IGJmZF9hc3ltYm9sX25hbWUgKCpyZWxwbHQtPnJl bG9jYXRpb25bcmVsb2NdLnN5bV9wdHJfcHRyKTsKKysgICAgICBuYW1lX2xlbiA9IHN0cmxlbiAo bmFtZSk7CisrICAgICAgYWRkcmVzcyA9IHJlbHBsdC0+cmVsb2NhdGlvbltyZWxvY10uYWRkcmVz czsKICsKLSsgICAgICAvKiBBbGlnbiB0aGUgcG9pbnRlciB0byB0d2ljZSB0aGUgcG9pbnRlciBz aXplLiAgSSBkaWRuJ3Qgc2VlCi0rCSB0aGlzIGluIHRoZSBzcGVjIGJ1dCBpdCBhcHBlYXJzIHRv IGJlIHJlcXVpcmVkLiAgKi8KLSsgICAgICBkZWx0YSA9IChhcmFuZ2VzX3B0ciAtIGFyYW5nZXNf YnVmZmVyKSAlICgyICogY3VfaGVhZGVyLmFkZHJfc2l6ZSk7Ci0rICAgICAgZGVsdGEgPSAoMiAq IGN1X2hlYWRlci5hZGRyX3NpemUgLSBkZWx0YSkgJSAoMiAqIGN1X2hlYWRlci5hZGRyX3NpemUp OwotKyAgICAgIGFyYW5nZXNfcHRyICs9IGRlbHRhOworKyAgICAgIC8qIERvZXMgdGhlIHBvaW50 ZXIgcmVzaWRlIGluIHRoZSAuZ290LnBsdCBzZWN0aW9uPyAgKi8KKysgICAgICBpZiAoIShiZmRf Z2V0X3NlY3Rpb25fdm1hIChvYmZkLCBnb3RfcGx0KSA8PSBhZGRyZXNzCisrICAgICAgICAgICAg JiYgYWRkcmVzcyA8IGJmZF9nZXRfc2VjdGlvbl92bWEgKG9iZmQsIGdvdF9wbHQpCisrCQkJICsg YmZkX2dldF9zZWN0aW9uX3NpemUgKGdvdF9wbHQpKSkKKysJY29udGludWU7CiArCi0rICAgICAg bWVtc2V0ICgmY3UsIDAsIHNpemVvZiAoY3UpKTsKLSsgICAgICBjdS5oZWFkZXIuYWRkcl9zaXpl ID0gY3VfaGVhZGVyLmFkZHJfc2l6ZTsKKysgICAgICAvKiBXZSBjYW5ub3QgY2hlY2sgaWYgTkFN RSBpcyBhIHJlZmVyZW5jZSB0byBtc3RfdGV4dF9nbnVfaWZ1bmMgYXMgaW4KKysJIE9CSkZJTEUg dGhlIHN5bWJvbCBpcyB1bmRlZmluZWQgYW5kIHRoZSBvYmpmaWxlIGhhdmluZyBOQU1FIGRlZmlu ZWQKKysJIG1heSBub3QgeWV0IGhhdmUgYmVlbiBsb2FkZWQuICAqLwogKwotKyAgICAgIHdoaWxl ICgxKQorKyAgICAgIGlmIChzdHJpbmdfYnVmZmVyX3NpemUgPCBuYW1lX2xlbiArIHN1ZmZpeF9s ZW4pCiArCXsKLSsJICBDT1JFX0FERFIgYWRkcmVzcywgbGVuZ3RoOwotKwotKwkgIGFkZHJlc3Mg PSByZWFkX2FkZHJlc3MgKGFiZmQsIGFyYW5nZXNfcHRyLCAmY3UsICZieXRlc19yZWFkKTsKLSsJ ICBhcmFuZ2VzX3B0ciArPSBieXRlc19yZWFkOworKwkgIHN0cmluZ19idWZmZXJfc2l6ZSA9IDIg KiAobmFtZV9sZW4gKyBzdWZmaXhfbGVuKTsKKysJICBzdHJpbmdfYnVmZmVyID0geHJlYWxsb2Mg KHN0cmluZ19idWZmZXIsIHN0cmluZ19idWZmZXJfc2l6ZSk7CisrCX0KKysgICAgICBtZW1jcHkg KHN0cmluZ19idWZmZXIsIG5hbWUsIG5hbWVfbGVuKTsKKysgICAgICBtZW1jcHkgKCZzdHJpbmdf YnVmZmVyW25hbWVfbGVuXSwgc3VmZml4LCBzdWZmaXhfbGVuKTsKICsKLSsJICBsZW5ndGggPSBy ZWFkX2FkZHJlc3MgKGFiZmQsIGFyYW5nZXNfcHRyLCAmY3UsICZieXRlc19yZWFkKTsKLSsJICBh cmFuZ2VzX3B0ciArPSBieXRlc19yZWFkOworKyAgICAgIG1zeW0gPSByZWNvcmRfbWluaW1hbF9z eW1ib2wgKHN0cmluZ19idWZmZXIsIG5hbWVfbGVuICsgc3VmZml4X2xlbiwgMSwKKysJCQkJICAg IGFkZHJlc3MsIG1zdF9zbG90X2dvdF9wbHQsIGdvdF9wbHQsCisrCQkJCSAgICBvYmpmaWxlKTsK KysgICAgICBpZiAobXN5bSkKKysJTVNZTUJPTF9TSVpFIChtc3ltKSA9IHB0cl9zaXplOworKyAg ICB9CiArCi0rCSAgaWYgKGFkZHJlc3MgPT0gMCAmJiBsZW5ndGggPT0gMCkKLSsJICAgIGJyZWFr OworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworK30KICsKLSsJICBpZiAobGVuZ3RoID09IDAp Ci0rCSAgICB7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChvbGQpOwotKwkgICAgICBjb21wbGFpbnQg KCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkJIF8oImFyYW5nZXMgZW50cnkgaGFzIHplcm8gbGVu Z3RoLCBpZ25vcmVkIikpOwotKwkgICAgICByZXR1cm47Ci0rCSAgICB9CisrLyogRnVuY3Rpb24g ZG9lcyBub3QgY2hlY2sgZm9yIHBvc3NpYmx5IGNyZWF0ZWQgZHVwbGljaXRpZXMgaW4gdGhlIGNh Y2hlLgorKyAgIENoZWNrIGl0IGJ5IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIGZpcnN0LiAg Ki8KICsKLSsJICBhZGRyZXNzICs9IGJhc2VhZGRyOworK3N0YXRpYyBzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgKgorK2dudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkIChjb25zdCBjaGFyICpm dW5jdGlvbl9uYW1lLAorKwkJCQkgIENPUkVfQUREUiBmdW5jdGlvbl9hZGRyZXNzKQorK3sKKysg IHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bSwgKm1zeW1fbmV3OworKyAgYXNlY3Rpb24gKnNl Y3Q7CisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysgIGNoYXIgKmZ1bmN0aW9uX25hbWVf Z251X2lmdW5jX3RndDsKICsKLSsJICBhZGRybWFwX3NldF9lbXB0eSAobXV0YWJsZV9tYXAsIGFk ZHJlc3MsIGFkZHJlc3MgKyBsZW5ndGggLSAxLAotKwkJCSAgICAgb2JqZmlsZSk7Ci0rCX0KKysg IG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKGZ1bmN0aW9uX2FkZHJlc3MpOwor KyAgaWYgKG1zeW0gPT0gTlVMTCkKKysgICAgcmV0dXJuIE5VTEw7CisrICBpZiAoU1lNQk9MX1ZB TFVFX0FERFJFU1MgKG1zeW0pICE9IGZ1bmN0aW9uX2FkZHJlc3MpCisrICAgIHJldHVybiBOVUxM OworKyAgLyogbWluaW1hbCBzeW1ib2xzIGhhdmUgYWx3YXlzIFNZTUJPTF9PQkpfU0VDVElPTiBu b24tTlVMTC4gICovCisrICBzZWN0ID0gU1lNQk9MX09CSl9TRUNUSU9OIChtc3ltKS0+dGhlX2Jm ZF9zZWN0aW9uOworKyAgb2JqZmlsZSA9IFNZTUJPTF9PQkpfU0VDVElPTiAobXN5bSktPm9iamZp bGU7CisrCisrICAvKiBJZiAucGx0IGp1bXBzIGJhY2sgdG8gLnBsdCB0aGUgc3ltYm9sIGlzIHN0 aWxsIGRlZmVycmVkIGZvciBsYXRlcgorKyAgICAgcmVzb2x1dGlvbiBhbmQgaXQgaGFzIG5vIHVz ZSBmb3IgR0RCLiAgQmVzaWRlcyAiLnRleHQiIHRoaXMgc3ltYm9sIGNhbgorKyAgICAgcmVzaWRl IGFsc28gaW4gIi5vcGQiIGZvciBwcGM2NCBmdW5jdGlvbiBkZXNjcmlwdG9yLiAgKi8KKysgIGlm IChzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1lIChvYmpmaWxlLT5vYmZkLCBzZWN0KSwgIi5w bHQiKSA9PSAwKQorKyAgICByZXR1cm4gTlVMTDsKICsKLSsgICAgICAvKiBTb21lIG9sZGVyIHZl cnNpb25zIG9mIEdDQyBpbmNvcnJlY3RseSBzdGFydGVkIHRoZSBhcmFuZ2UKLSsJIHdpdGggYSAo MCwwKSBwYWlyLiAgSWYgd2UgZW5jb3VudGVyIGFueSBvZGRpdHkgd2hpbGUgcmVhZGluZwotKwkg dGhlIHNlY3Rpb24sIGp1c3QgYWJhbmRvbiB0aGUgYXR0ZW1wdDsgZmFsbGluZyBiYWNrIHRvIHRo ZQotKwkgc2xvd2VyIGNvZGUgaXMgYWx3YXlzIHNhZmUuICAqLwotKyAgICAgIGlmIChhcmFuZ2Vz X3B0ciAhPSBlbmRfcHRyKQotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZCk7Ci0rCSAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgICBfKCJhcmFuZ2VzIGVudHJ5IGVuZHMg ZWFybHksIGlnbm9yZWQiKSk7Ci0rCSAgcmV0dXJuOwotKwl9Ci0rICAgIH0KKysgIGZ1bmN0aW9u X25hbWVfZ251X2lmdW5jX3RndCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlvbl9uYW1lKQorKwkJ CQkJKyBzdHJsZW4gKCJAZ251LWlmdW5jLXRndCIpICsgMSk7CisrICBzcHJpbnRmIChmdW5jdGlv bl9uYW1lX2dudV9pZnVuY190Z3QsICIlc0BnbnUtaWZ1bmMtdGd0IiwgZnVuY3Rpb25fbmFtZSk7 CisrCisrICAvKiBDcmVhdGUgbmV3IGFsaWFzICJAZ251LWlmdW5jLXRndCIgZm9yIE1TWU0uICAq LworKyAgbXN5bV9uZXcgPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVfZ251 X2lmdW5jX3RndCwKKysJCQkJICAgIHN0cmxlbiAoZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0 KSwgMSwKKysJCQkJICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSwKKysJCQkJICAgIE1T WU1CT0xfVFlQRSAobXN5bSksIHNlY3QsIG9iamZpbGUpOworKyAgLyogU2hvdWxkIG5vdCBoYXBw ZW4uICAqLworKyAgaWYgKG1zeW1fbmV3ID09IE5VTEwpCisrICAgIHJldHVybiAwOwogKwotKyAg b2JqZmlsZS0+cXVpY2tfYWRkcm1hcCA9IGFkZHJtYXBfY3JlYXRlX2ZpeGVkIChtdXRhYmxlX21h cCwKLSsJCQkJCQkgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0rICBkb19jbGVhbnVwcyAo b2xkKTsKKysgIC8qIG9iamZpbGUtPm1zeW1ib2xzIGFycmF5IGlzIGFscmVhZHkgYWxsb2NhdGVk IG9uIG9ic3RhY2sgYW5kIGl0IGNhbm5vdCBiZQorKyAgICAgZWFzaWx5IGV4dGVuZGVkLiAgVGhl cmVmb3JlIDx0YWI+LWNvbXBsZXRpb24gb24gc3ltYm9sIG5hbWVzIHdpbGwgbmV2ZXIKKysgICAg IHNob3cgdGhlIEBnbnUtaWZ1bmMtdGd0IHN5bWJvbC4gIExpbmsgaXQgYXQgbGVhc3QgdG8gdGhl IGhhc2ggdGFibGUgc28KKysgICAgIHRoYXQgcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgY2Fu IGZpbmQgaXQuICAqLworKyAgYWRkX21pbnN5bV90b19oYXNoX3RhYmxlIChtc3ltX25ldywgb2Jq ZmlsZS0+bXN5bWJvbF9oYXNoKTsKKysgICAgCisrICBNU1lNQk9MX1NJWkUgKG1zeW1fbmV3KSA9 IE1TWU1CT0xfU0laRSAobXN5bSk7CisrICByZXR1cm4gbXN5bV9uZXc7CiArfQogKwotKy8qIEZy ZWUgYSBzZWN0aW9uIGJ1ZmZlciBhbGxvY2F0ZWQgd2l0aCB4bWFsbG9jLiAgKi8KKysvKiBDaGVj ayBmaXJzdCB0aGUgY2FjaGUgaWYgaXQgLSB1bmxpa2VseSAtIGhhcyBub3QgYmVlbiBwb3B1bGF0 ZWQgc2luY2UKKysgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgaGFzIGJlZW4gY3JlYXRlZC4gIGdu dV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkCisrICAgY291bGQgY3JlYXRlIGEgZHVwbGlj YXRlIHN5bWJvbCBvdGhlcndpc2UuICAqLwogKwotK3N0YXRpYyB2b2lkCi0reGZyZWVfc2VjdGlv bl9idWZmZXIgKHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorK3ZvaWQKKytnbnVf aWZ1bmNfcmVjb3JkX2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAq ZnVuY3Rpb25fbmFtZSwKKysJCQlDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVzcykKICt7Ci0rICB4 ZnJlZSAoaW5mby0+YnVmZmVyKTsKLSt9CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07 CiArCi0rLyogSWYgc2VjdGlvbiBkZXNjcmliZWQgYnkgSU5GTyB3YXMgbW1hcHBlZCwgbXVubWFw IGl0IG5vdy4gICovCisrICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0 aW9uX25hbWUpOworKyAgaWYgKG1zeW0gPT0gTlVMTCkKKysgICAgZ251X2lmdW5jX3JlY29yZF9j YWNoZV91bmNoZWNrZWQgKGZ1bmN0aW9uX25hbWUsIGZ1bmN0aW9uX2FkZHJlc3MpOworKyAgZWxz ZSBpZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pICE9IGZ1bmN0aW9uX2FkZHJlc3MpCisr ICAgIHsKKysgICAgICAvKiBUaGlzIGNhc2UgaW5kaWNhdGVzIGJ1Z2d5IGluZmVyaW9yIHByb2dy YW0uICBHREIgd291bGQgbmVlZCB0byB1cGRhdGUKKysJIGl0cyBNU1lNIGNhY2hlIHN5bWJvbCBm b3IgZnVuY3Rpb25fYWRkcmVzcy4gIEFueXdheSBGVU5DVElPTl9OQU1FIGlzCisrCSBuZXZlciBu b3JtYWxseSBmb3VuZCBpbiB0aGUgY2FzZSBhcyBpbiBzdWNoIGNhc2Ugbm8KKysJIGJwX2dudV9p ZnVuY19yZXNvbHZlciB3b3VsZCBiZSBjcmVhdGVkIGluIHRoZSBmaXJzdCBwbGFjZS4gICovCiAr Ci0rc3RhdGljIHZvaWQKLSttdW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvICppbmZvKQotK3sKLSsjaWZkZWYgSEFWRV9NTUFQCi0rICBpbnRwdHJfdCBiZWdp biA9IChpbnRwdHJfdCkgaW5mby0+YnVmZmVyOwotKyAgaW50cHRyX3QgbWFwX2JlZ2luID0gYmVn aW4gJiB+KHBhZ2VzaXplIC0gMSk7Ci0rICBzaXplX3QgbWFwX2xlbmd0aCA9IGluZm8tPnNpemUg KyBiZWdpbiAtIG1hcF9iZWdpbjsKLSsgIGdkYl9hc3NlcnQgKG11bm1hcCAoKHZvaWQgKikgbWFw X2JlZ2luLCBtYXBfbGVuZ3RoKSA9PSAwKTsKLSsjZWxzZQotKyAgLyogV2l0aG91dCBIQVZFX01N QVAsIHdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHRvIGJlZ2luIHdpdGguICAqLwotKyAgZ2RiX2Fz c2VydCAoMCk7Ci0rI2VuZGlmCisrICAgICAgd2FybmluZyAoXygiZ251LWluZGlyZWN0LWZ1bmN0 aW9uIFwiJXNcIiBoYXMgY2hhbmdlZCBpdHMgcmVzb2x2ZWQgIgorKwkJICJmdW5jdGlvbl9hZGRy ZXNzIGZyb20gJXMgdG8gJXM7IEdEQiBpcyB1c2luZyB0aGUgZm9ybWVyIG9uZSIpLAorKwkgICAg ICAgZnVuY3Rpb25fbmFtZSwgcGFkZHJlc3MgKGdkYmFyY2gsIFNZTUJPTF9WQUxVRV9BRERSRVNT IChtc3ltKSksCisrCSAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgZnVuY3Rpb25fYWRkcmVzcykp OworKyAgICB9CiArfQogKwotKy8qIFJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzZWN0aW9uIGF0 IE9GRlNFVCBhbmQgb2Ygc2l6ZSBTSVpFIGZyb20KLSsgICB0aGUgb2JqZWN0IGZpbGUgc3BlY2lm aWVkIGJ5IE9CSkZJTEUgaW50byBPQlNUQUNLIGFuZCBzdG9yZSBpdCBpbnRvCi0rICAgSU5GTy4g IElmIE9CU1RBQ0sgaXMgTlVMTCwgeG1hbGxvYyBpcyB1c2VkIGluc3RlYWQuICBJZiB0aGUgc2Vj dGlvbgotKyAgIGlzIGNvbXByZXNzZWQsIHVuY29tcHJlc3MgaXQgYmVmb3JlIHJldHVybmluZy4g ICovCisrc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCisrcmVzb2x2ZV9nbnVfaWZ1bmNf YnlfZ290IChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lKQorK3sKKysgIGNoYXIgKmZ1bmN0aW9u X25hbWVfZ290X3BsdDsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwogKwotK3N0YXRpYyB2 b2lkCi0rZHdhcmYyX3JlYWRfc2VjdGlvbl8xIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJ CSAgICAgICBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywKLSsJCSAgICAgICBzdHJ1Y3QgZHdhcmYy X3NlY3Rpb25faW5mbyAqaW5mbykKLSB7Ci0gICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOwot ICAgYXNlY3Rpb24gKnNlY3RwID0gaW5mby0+YXNlY3Rpb247Ci0gICBnZGJfYnl0ZSAqYnVmLCAq cmV0YnVmOwotICAgdW5zaWduZWQgY2hhciBoZWFkZXJbNF07Ci0rICBzdHJ1Y3QgY2xlYW51cCAq b2xkID0gTlVMTDsKLSAKLSAgIGluZm8tPmJ1ZmZlciA9IE5VTEw7Ci0tICBpbmZvLT53YXNfbW1h cHBlZCA9IDA7Ci0rICBpbmZvLT5kZXN0cnVjdG9yID0gMDsKLSAKLSAgIGlmIChpbmZvLT5hc2Vj dGlvbiA9PSBOVUxMIHx8IGluZm8tPnNpemUgPT0gMCkKLSAgICAgcmV0dXJuOwotQEAgLTEzNzQs NyArMTU4MSw3IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKLSAgICAgICAvKiBVcG9uIGRlY29t cHJlc3Npb24sIHVwZGF0ZSB0aGUgYnVmZmVyIGFuZCBpdHMgc2l6ZS4gICovCi0gICAgICAgaWYg KHN0cm5jbXAgKGhlYWRlciwgIlpMSUIiLCBzaXplb2YgKGhlYWRlcikpID09IDApCi0gICAgICAg ICB7Ci0tICAgICAgICAgIHpsaWJfZGVjb21wcmVzc19zZWN0aW9uIChvYmpmaWxlLCBzZWN0cCwg JmluZm8tPmJ1ZmZlciwKLSsgICAgICAgICAgemxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKG9iamZp bGUsIG9ic3RhY2ssIHNlY3RwLCAmaW5mby0+YnVmZmVyLAotIAkJCQkgICAmaW5mby0+c2l6ZSk7 Ci0gICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLUBAIC0xMzk3LDcgKzE2MDQsNyBAQCBk d2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJm Ml9zZWN0aW9uX2luZm8gKmluZm8pCi0gCi0gICAgICAgaWYgKHJldGJ1ZiAhPSBNQVBfRkFJTEVE KQotIAl7Ci0tCSAgaW5mby0+d2FzX21tYXBwZWQgPSAxOwotKwkgIGluZm8tPmRlc3RydWN0b3Ig PSBtdW5tYXBfc2VjdGlvbl9idWZmZXI7Ci0gCSAgaW5mby0+YnVmZmVyID0gcmV0YnVmICsgKHNl Y3RwLT5maWxlcG9zICYgKHBhZ2VzaXplIC0gMSkpIDsKLSAJICByZXR1cm47Ci0gCX0KLUBAIC0x NDA1LDggKzE2MTIsMTUgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQotICNlbmRpZgotIAotICAg LyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwgbm90LWNvbXByZXNzZWQgc2VjdGlv bi4gICovCi0tICBpbmZvLT5idWZmZXIgPSBidWYKLS0gICAgPSBvYnN0YWNrX2FsbG9jICgmb2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5zaXplKTsKLSsgIGlmIChvYnN0YWNrKQotKyAg ICBidWYgPSBvYnN0YWNrX2FsbG9jIChvYnN0YWNrLCBpbmZvLT5zaXplKTsKLSsgIGVsc2UKKysg IGZ1bmN0aW9uX25hbWVfZ290X3BsdCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlvbl9uYW1lKSAr IHN0cmxlbiAoIkBnb3QucGx0IikKKysJCQkJICArIDEpOworKyAgc3ByaW50ZiAoZnVuY3Rpb25f bmFtZV9nb3RfcGx0LCAiJXNAZ290LnBsdCIsIGZ1bmN0aW9uX25hbWUpOworKworKyAgQUxMX1BT UEFDRV9PQkpGSUxFUyAoY3VycmVudF9wcm9ncmFtX3NwYWNlLCBvYmpmaWxlKQogKyAgICB7Ci0r ICAgICAgYnVmID0geG1hbGxvYyAoaW5mby0+c2l6ZSk7Ci0rICAgICAgb2xkID0gbWFrZV9jbGVh bnVwICh4ZnJlZSwgYnVmKTsKLSsgICAgICBpbmZvLT5kZXN0cnVjdG9yID0geGZyZWVfc2VjdGlv bl9idWZmZXI7CisrICAgICAgYmZkICpvYmZkID0gb2JqZmlsZS0+b2JmZDsKKysgICAgICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdkYmFyY2g7CisrICAgICAgc3RydWN0IHR5 cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsK KysgICAgICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAocHRyX3R5cGUpOworKyAgICAg IENPUkVfQUREUiBwb2ludGVyX2FkZHJlc3MsIGZ1bmN0aW9uX2FkZHJlc3M7CisrICAgICAgYXNl Y3Rpb24gKnBsdDsKKysgICAgICBnZGJfYnl0ZSAqYnVmID0gYWxsb2NhIChwdHJfc2l6ZSk7Cisr ICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOworKworKyAgICAgIG1zeW0gPSBsb29r dXBfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVfZ290X3BsdCwgTlVMTCwgb2JqZmlsZSk7 CisrICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKKysJY29udGludWU7CisrICAgICAgaWYgKE1TWU1C T0xfVFlQRSAobXN5bSkgIT0gbXN0X3Nsb3RfZ290X3BsdCkKKysJY29udGludWU7CisrICAgICAg cG9pbnRlcl9hZGRyZXNzID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOworKworKyAgICAg IHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBsdCIpOworKyAgICAgIGlm IChwbHQgPT0gTlVMTCkKKysJY29udGludWU7CisrCisrICAgICAgaWYgKE1TWU1CT0xfU0laRSAo bXN5bSkgIT0gcHRyX3NpemUpCisrCWNvbnRpbnVlOworKyAgICAgIGlmICh0YXJnZXRfcmVhZF9t ZW1vcnkgKHBvaW50ZXJfYWRkcmVzcywgYnVmLCBwdHJfc2l6ZSkgIT0gMCkKKysJY29udGludWU7 CisrICAgICAgZnVuY3Rpb25fYWRkcmVzcyA9IGV4dHJhY3RfdHlwZWRfYWRkcmVzcyAoYnVmLCBw dHJfdHlwZSk7CisrCisrICAgICAgbXN5bSA9IGdudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVj a2VkIChmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9hZGRyZXNzKTsKKysgICAgICBpZiAobXN5bSA9 PSBOVUxMKQorKwljb250aW51ZTsKKysgICAgICByZXR1cm4gbXN5bTsKICsgICAgfQotKyAgaW5m by0+YnVmZmVyID0gYnVmOwotIAotICAgLyogV2hlbiBkZWJ1Z2dpbmcgLm8gZmlsZXMsIHdlIG1h eSBuZWVkIHRvIGFwcGx5IHJlbG9jYXRpb25zOyBzZWUKLSAgICAgIGh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDAyLTA0L21zZzAwMTM2Lmh0bWwgLgotQEAgLTE0MTUsNiAr MTYyOSw4IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBz dHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKLSAgIHJldGJ1ZiA9IHN5bWZpbGVfcmVs b2NhdGVfZGVidWdfc2VjdGlvbiAob2JqZmlsZSwgc2VjdHAsIGJ1Zik7Ci0gICBpZiAocmV0YnVm ICE9IE5VTEwpCi0gICAgIHsKLSsgICAgICBpZiAob2xkKQotKwlkaXNjYXJkX2NsZWFudXBzIChv bGQpOwotICAgICAgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZjsKLSAgICAgICByZXR1cm47Ci0gICAg IH0KLUBAIC0xNDIzLDYgKzE2MzksMTkgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQotICAgICAg IHx8IGJmZF9icmVhZCAoYnVmLCBpbmZvLT5zaXplLCBhYmZkKSAhPSBpbmZvLT5zaXplKQotICAg ICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENhbid0IHJlYWQgRFdBUkYgZGF0YSBmcm9tICclcyci KSwKLSAJICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwogKwotKyAgaWYgKG9sZCkKLSsgICAg ZGlzY2FyZF9jbGVhbnVwcyAob2xkKTsKKysgIHJldHVybiBOVUxMOwogK30KICsKLSsvKiBSZWFk IHRoZSBjb250ZW50cyBvZiB0aGUgc2VjdGlvbiBTRUNUUCBmcm9tIG9iamVjdCBmaWxlIHNwZWNp ZmllZCBieQotKyAgIE9CSkZJTEUsIHN0b3JlIGluZm8gYWJvdXQgdGhlIHNlY3Rpb24gaW50byBJ TkZPLgotKyAgIElmIHRoZSBzZWN0aW9uIGlzIGNvbXByZXNzZWQsIHVuY29tcHJlc3MgaXQgYmVm b3JlIHJldHVybmluZy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkd2FyZjJfcmVhZF9zZWN0aW9u IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmlu Zm8pCisrc3RydWN0IG1pbmltYWxfc3ltYm9sICoKKytyZXNvbHZlX2dudV9pZnVuY19ieV9jYWNo ZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSkKICt7Ci0rICBkd2FyZjJfcmVhZF9zZWN0aW9u XzEgKG9iamZpbGUsICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIGluZm8pOwotIH0KLSAKLSAv KiBGaWxsIGluIFNFQ1RQLCBCVUZQIGFuZCBTSVpFUCB3aXRoIHNlY3Rpb24gaW5mbywgZ2l2ZW4g T0JKRklMRSBhbmQKLUBAIC0yMDcwLDYgKzIyOTksMjkgQEAgYnVpbGRfdHlwZV9wc3ltdGFicyAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gCQkJICBwcm9jZXNzX3R5cGVfY29tcF91bml0LCBv YmpmaWxlKTsKLSB9Ci0gCi0rLyogQSBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgY2xlYXJzIGFuIG9i amZpbGUncyBwc3ltdGFicy4gIFRoZXJlIGFyZQotKyAgIHR3byBjYXNlcyB0byBjb25zaWRlci4g IElmIHdlIGFyZSByZWFkaW5nIHN5bWJvbHMgZGlyZWN0bHksIHRoZW4gb24KLSsgICBhIGZhaWx1 cmUgdGhlIG9iamZpbGUgd2lsbCBiZSBkZXN0cm95ZWQuICBJbiB0aGlzIGNhc2UsIGNsZWFyaW5n Ci0rICAgdGhlIHBzeW10YWJzIGlzIGZpbmUgLS0gYSBsaXR0bGUgd2FzdGVkIHRpbWUsIGJ1dCBu b3RoaW5nIHNlcmlvdXMuCi0rICAgSWYgd2UgYXJlIHJlYWRpbmcgc3ltYm9scyBsYXppbHksIHRo ZW4gaXQgaXMgdG9vIGxhdGUgdG8gZGVzdHJveQotKyAgIHRoZSBvYmpmaWxlLiAgSW5zdGVhZCB3 ZSBqdXN0IG1ha2UgaXQgbG9vayBsaWtlIHRoZSBvYmpmaWxlIGhhcyBubwotKyAgIHBzeW10YWJz LiAgKi8KKysgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndDsKICsKLStzdGF0aWMg dm9pZAotK2RvX2NsZWFyX3BzeW10YWJzICh2b2lkICphcmcpCi0rewotKyAgc3RydWN0IG9iamZp bGUgKm9iamZpbGUgPSBhcmc7Ci0rCi0rICBvYmpmaWxlLT5wc3ltdGFic19hZGRybWFwID0gTlVM TDsKLSsgIG9iamZpbGUtPnBzeW10YWJzID0gTlVMTDsKLSsgIGJjYWNoZV94ZnJlZSAob2JqZmls ZS0+cHN5bWJvbF9jYWNoZSk7Ci0rICBvYmpmaWxlLT5wc3ltYm9sX2NhY2hlID0gYmNhY2hlX3ht YWxsb2MgKCk7Ci0rICB4ZnJlZSAob2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xzLmxpc3QpOwotKyAg bWVtc2V0ICgmb2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xzLCAwLCBzaXplb2YgKG9iamZpbGUtPmds b2JhbF9wc3ltYm9scykpOwotKyAgeGZyZWUgKG9iamZpbGUtPnN0YXRpY19wc3ltYm9scy5saXN0 KTsKLSsgIG1lbXNldCAoJm9iamZpbGUtPnN0YXRpY19wc3ltYm9scywgMCwgc2l6ZW9mIChvYmpm aWxlLT5zdGF0aWNfcHN5bWJvbHMpKTsKKysgIGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCA9 IGFsbG9jYSAoc3RybGVuIChmdW5jdGlvbl9uYW1lKQorKwkJCQkJKyBzdHJsZW4gKCJAZ251LWlm dW5jLXRndCIpICsgMSk7CisrICBzcHJpbnRmIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3Qs ICIlc0BnbnUtaWZ1bmMtdGd0IiwgZnVuY3Rpb25fbmFtZSk7CisrCisrICByZXR1cm4gbG9va3Vw X21pbmltYWxfc3ltYm9sIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QsIE5VTEwsIE5VTEwp OwogK30KICsKLSAvKiBCdWlsZCB0aGUgcGFydGlhbCBzeW1ib2wgdGFibGUgYnkgZG9pbmcgYSBx dWljayBwYXNzIHRocm91Z2ggdGhlCi0gICAgLmRlYnVnX2luZm8gYW5kIC5kZWJ1Z19hYmJyZXYg c2VjdGlvbnMuICAqLwotIAotQEAgLTIwODAsNyArMjMzMiw3IEBAIGR3YXJmMl9idWlsZF9wc3lt dGFic19oYXJkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgIG1tYXAoKSAgb24gYXJj aGl0ZWN0dXJlcyB0aGF0IHN1cHBvcnQgaXQuIChGSVhNRSkgKi8KLSAgIGJmZCAqYWJmZCA9IG9i amZpbGUtPm9iZmQ7Ci0gICBnZGJfYnl0ZSAqaW5mb19wdHI7Ci0tICBzdHJ1Y3QgY2xlYW51cCAq YmFja190bzsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvLCAqY2xlYXJfcHN5bXRhYnM7Ci0g Ci0gICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXI7Ci0gCi1AQCAt MjA5NCw2ICsyMzQ2LDcgQEAgZHdhcmYyX2J1aWxkX3BzeW10YWJzX2hhcmQgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQotIAotICAgb2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCA9Ci0gICAgIGFk ZHJtYXBfY3JlYXRlX211dGFibGUgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2spOwotKyAgY2xl YXJfcHN5bXRhYnMgPSBtYWtlX2NsZWFudXAgKGRvX2NsZWFyX3BzeW10YWJzLCBvYmpmaWxlKTsK LSAKLSAgIC8qIFNpbmNlIHRoZSBvYmplY3RzIHdlJ3JlIGV4dHJhY3RpbmcgZnJvbSAuZGVidWdf aW5mbyB2YXJ5IGluCi0gICAgICBsZW5ndGgsIG9ubHkgdGhlIGluZGl2aWR1YWwgZnVuY3Rpb25z IHRvIGV4dHJhY3QgdGhlbSAobGlrZQotQEAgLTIxMjMsNiArMjM3Niw3IEBAIGR3YXJmMl9idWls ZF9wc3ltdGFic19oYXJkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAJCQkJCSAgICBkd2Fy ZjJfcGVyX29iamZpbGUtPmluZm8uc2l6ZSk7Ci0gICAgIH0KLSAKLSsgIGRpc2NhcmRfY2xlYW51 cHMgKGNsZWFyX3BzeW10YWJzKTsKLSAgIG9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXAgPSBhZGRy bWFwX2NyZWF0ZV9maXhlZCAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCwKLSAJCQkJCQkgICAg Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0gCi1AQCAtMjM4OSwxMSArMjY0MywxOCBAQCBw YXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGksCi0g ICAgICAgfHwgcGFyZW50LT50YWcgPT0gRFdfVEFHX3VuaW9uX3R5cGUKLSAgICAgICB8fCBwYXJl bnQtPnRhZyA9PSBEV19UQUdfZW51bWVyYXRpb25fdHlwZSkKLSAgICAgewotKyAgICAgIGNoYXIg KnBhcmVudF9uYW1lID0gcGFyZW50LT5uYW1lOworK2ludAorK3Jlc29sdmVfZ251X2lmdW5jIChj b25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBDT1JFX0FERFIgKmZ1bmN0aW9uX2FkZHJlc3NwKQor K3sKKysgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKICsKLSsgICAgICAvKiBHKysgNC4x IHByb2R1Y2VkIERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9uYW1lICI6OiIuICAqLwotKyAg ICAgIGlmIChwYXJlbnQtPnRhZyA9PSBEV19UQUdfbmFtZXNwYWNlICYmIHBhcmVudF9uYW1lICE9 IE5VTEwKLSsgICAgICAgICAgJiYgc3RyY21wIChwYXJlbnRfbmFtZSwgIjo6IikgPT0gMCkKLSsJ cGFyZW50X25hbWUgPSBOVUxMOworKyAgbXN5bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hl IChmdW5jdGlvbl9uYW1lKTsKKysgIGlmIChtc3ltICE9IE5VTEwpCisrICAgIHsKKysgICAgICAq ZnVuY3Rpb25fYWRkcmVzc3AgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSk7CisrICAgICAg cmV0dXJuIDE7CisrICAgIH0KICsKLSAgICAgICBpZiAoZ3JhbmRwYXJlbnRfc2NvcGUgPT0gTlVM TCkKLS0JcGFyZW50LT5zY29wZSA9IHBhcmVudC0+bmFtZTsKLSsJcGFyZW50LT5zY29wZSA9IHBh cmVudF9uYW1lOwotICAgICAgIGVsc2UKLSAJcGFyZW50LT5zY29wZSA9IHR5cGVuYW1lX2NvbmNh dCAoJmN1LT5jb21wX3VuaXRfb2JzdGFjaywgZ3JhbmRwYXJlbnRfc2NvcGUsCi0tCQkJCQkgcGFy ZW50LT5uYW1lLCBjdSk7Ci0rCQkJCQkgcGFyZW50X25hbWUsIGN1KTsKLSAgICAgfQotICAgZWxz ZSBpZiAocGFyZW50LT50YWcgPT0gRFdfVEFHX2VudW1lcmF0b3IpCi0gICAgIC8qIEVudW1lcmF0 b3JzIHNob3VsZCBub3QgZ2V0IHRoZSBuYW1lIG9mIHRoZSBlbnVtZXJhdGlvbiBhcyBhIHByZWZp eC4gICovCi1AQCAtMjQwNSw3ICsyNjY2LDcgQEAgcGFydGlhbF9kaWVfcGFyZW50X3Njb3BlIChz dHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLAotIAkgaWdub3JpbmcgdGhlbS4gICovCi0gICAg ICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotIAkJIF8oInVuaGFuZGxlZCBjb250 YWluaW5nIERJRSB0YWcgJWQgZm9yIERJRSBhdCAlZCIpLAotLQkJIHBhcmVudC0+dGFnLCBwZGkt Pm9mZnNldCk7Ci0rCQkgcGFyZW50LT50YWcsIHJlYWxfcGRpLT5vZmZzZXQpOwotICAgICAgIHBh cmVudC0+c2NvcGUgPSBncmFuZHBhcmVudF9zY29wZTsKLSAgICAgfQotIAotQEAgLTI0MjAsMTIg KzI2ODEsMjIgQEAgcGFydGlhbF9kaWVfZnVsbF9uYW1lIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5m byAqcGRpLAotIAkJICAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIHsKLSAgIGNoYXIgKnBh cmVudF9zY29wZTsKLSsgIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpyZWFsX3BkaTsKLSAKLS0g IHBhcmVudF9zY29wZSA9IHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAocGRpLCBjdSk7Ci0tICBp ZiAocGFyZW50X3Njb3BlID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLSAgZWxzZQotKyAg LyogV2UgbmVlZCB0byBsb29rIGF0IG91ciBwYXJlbnQgRElFOyBpZiB3ZSBoYXZlIGEgRFdfQVRf c3BlY2lmaWNhdGlvbiwKLSsgICAgIHRoZW4gdGhpcyBtZWFucyB0aGUgcGFyZW50IG9mIHRoZSBz cGVjaWZpY2F0aW9uIERJRS4KLSsgICAgIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSBkb2VzIHRo aXMgbG9vcCBhbHNvLCBidXQgd2UgZG8gaXQgaGVyZQotKyAgICAgc2luY2Ugd2UgbmVlZCB0byBl eGFtaW5lIHJlYWxfcGRpLT5wYXJlbnQgb3Vyc2VsdmVzLiAgKi8KKysgIG1zeW0gPSByZXNvbHZl X2dudV9pZnVuY19ieV9nb3QgKGZ1bmN0aW9uX25hbWUpOworKyAgaWYgKG1zeW0gIT0gTlVMTCkK KysgICAgeworKyAgICAgICpmdW5jdGlvbl9hZGRyZXNzcCA9IFNZTUJPTF9WQUxVRV9BRERSRVNT IChtc3ltKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQogKwotKyAgcmVhbF9wZGkgPSBwZGk7 Ci0rICB3aGlsZSAocmVhbF9wZGktPmhhc19zcGVjaWZpY2F0aW9uKQotKyAgICByZWFsX3BkaSA9 IGZpbmRfcGFydGlhbF9kaWUgKHJlYWxfcGRpLT5zcGVjX29mZnNldCwgY3UpOworKyAgcmV0dXJu IDA7CisrfQogKwotKyAgcGFyZW50X3Njb3BlID0gcGFydGlhbF9kaWVfcGFyZW50X3Njb3BlIChy ZWFsX3BkaSwgY3UpOwotKyAgaWYgKHBhcmVudF9zY29wZSAhPSBOVUxMKQotICAgICByZXR1cm4g dHlwZW5hbWVfY29uY2F0IChOVUxMLCBwYXJlbnRfc2NvcGUsIHBkaS0+bmFtZSwgY3UpOworIHN0 cnVjdCBidWlsZF9pZAorICAgeworICAgICBzaXplX3Qgc2l6ZTsKK0BAIC03OTcsNiArMTA0Niw4 IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmls ZV9mbGFncykKKyAJICAgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKKyAKKyAg ICAgICBlbGZfc3ltdGFiX3JlYWQgKG9iamZpbGUsIFNUX0RZTkFNSUMsIGR5bnN5bWNvdW50LCBk eW5fc3ltYm9sX3RhYmxlLCAwKTsKICsKLSsgIHJldHVybiBOVUxMOwotIH0KKysgICAgICBlbGZf cmVsX3BsdF9yZWFkIChvYmpmaWxlLCBkeW5fc3ltYm9sX3RhYmxlKTsKKyAgICAgfQogIAotIHN0 YXRpYyB2b2lkCi1AQCAtMjQ0MSwxMiArMjcxMiw5IEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3Ry dWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAvKiBB ZGQgc3ludGhldGljIHN5bWJvbHMgLSBmb3IgaW5zdGFuY2UsIG5hbWVzIGZvciBhbnkgUExUIGVu dHJpZXMuICAqLworZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCitpbmRleCBm ZjE3YzM0Li43YjllODcxIDEwMDY0NAorLS0tIGEvZ2RiL2V2YWwuYworKysrIGIvZ2RiL2V2YWwu YworQEAgLTQ0LDYgKzQ0LDcgQEAKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKyAjaW5jbHVkZSAi cHl0aG9uL3B5dGhvbi5oIgorICNpbmNsdWRlICJ3cmFwcGVyLmgiCisrI2luY2x1ZGUgImR3YXJm MmxvYy5oIgogIAotICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZz ZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7CisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIK ICAKLS0gIGlmIChwZGlfbmVlZHNfbmFtZXNwYWNlIChwZGktPnRhZykpCi0tICAgIHsKLS0gICAg ICBhY3R1YWxfbmFtZSA9IHBhcnRpYWxfZGllX2Z1bGxfbmFtZSAocGRpLCBjdSk7Ci0tICAgICAg aWYgKGFjdHVhbF9uYW1lKQotLQlidWlsdF9hY3R1YWxfbmFtZSA9IDE7Ci0tICAgIH0KLSsgIGFj dHVhbF9uYW1lID0gcGFydGlhbF9kaWVfZnVsbF9uYW1lIChwZGksIGN1KTsKLSsgIGlmIChhY3R1 YWxfbmFtZSkKLSsgICAgYnVpbHRfYWN0dWFsX25hbWUgPSAxOwotIAotICAgaWYgKGFjdHVhbF9u YW1lID09IE5VTEwpCi0gICAgIGFjdHVhbF9uYW1lID0gcGRpLT5uYW1lOwotQEAgLTI1NDMsNiAr MjgxMSwxMyBAQCBhZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpw ZGksIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkJCSAgICZvYmpmaWxlLT5nbG9iYWxfcHN5bWJv bHMsCi0gCQkJICAgMCwgKENPUkVfQUREUikgMCwgY3UtPmxhbmd1YWdlLCBvYmpmaWxlKTsKLSAg ICAgICBicmVhazsKLSsgICAgY2FzZSBEV19UQUdfbW9kdWxlOgotKyAgICAgIGFkZF9wc3ltYm9s X3RvX2xpc3QgKGFjdHVhbF9uYW1lLCBzdHJsZW4gKGFjdHVhbF9uYW1lKSwKLSsJCQkgICBidWls dF9hY3R1YWxfbmFtZSwKLSsJCQkgICBNT0RVTEVfRE9NQUlOLCBMT0NfU1RBVElDLAotKwkJCSAg ICZvYmpmaWxlLT5nbG9iYWxfcHN5bWJvbHMsCi0rCQkJICAgMCwgKENPUkVfQUREUikgMCwgY3Ut Pmxhbmd1YWdlLCBvYmpmaWxlKTsKLSsgICAgICBicmVhazsKLSAgICAgY2FzZSBEV19UQUdfY2xh c3NfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfaW50ZXJmYWNlX3R5cGU6Ci0gICAgIGNhc2UgRFdf VEFHX3N0cnVjdHVyZV90eXBlOgotQEAgLTI1ODYsNDkgKzI4NjEsMTAgQEAgYWRkX3BhcnRpYWxf c3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKLSAgICAgICBicmVhazsKLSAgICAgfQorQEAgLTc4OCw2ICs3ODksNyBAQCBldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAgIGludCBzYXZlX3Bv czE7CisgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CisgICBjaGFyICpmdW5jdGlv bl9uYW1lID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CiAgCi0tICAvKiBD aGVjayB0byBzZWUgaWYgd2Ugc2hvdWxkIHNjYW4gdGhlIG5hbWUgZm9yIHBvc3NpYmxlIG5hbWVz cGFjZQotLSAgICAgaW5mby4gIE9ubHkgZG8gdGhpcyBpZiB0aGlzIGlzIEMrKywgaWYgd2UgZG9u J3QgaGF2ZSBuYW1lc3BhY2UKLS0gICAgIGRlYnVnZ2luZyBpbmZvIGluIHRoZSBmaWxlLCBpZiB0 aGUgcHN5bSBpcyBvZiBhbiBhcHByb3ByaWF0ZSB0eXBlCi0tICAgICAob3RoZXJ3aXNlIHdlJ2xs IGhhdmUgcHN5bSA9PSBOVUxMKSwgYW5kIGlmIHdlIGFjdHVhbGx5IGhhZCBhCi0tICAgICBtYW5n bGVkIG5hbWUgdG8gYmVnaW4gd2l0aC4gICovCi0tCi0tICAvKiBGSVhNRSBkcm93LzIwMDQtMDIt MjI6IFdoeSBkb24ndCB3ZSBkbyB0aGlzIGZvciBjbGFzc2VzLCBpLmUuIHRoZQotLSAgICAgY2Fz ZXMgd2hpY2ggZG8gbm90IHNldCBQU1lNIGFib3ZlPyAgKi8KLS0KLS0gIGlmIChjdS0+bGFuZ3Vh Z2UgPT0gbGFuZ3VhZ2VfY3BsdXMKLS0gICAgICAmJiBjdS0+aGFzX25hbWVzcGFjZV9pbmZvID09 IDAKLS0gICAgICAmJiBwc3ltICE9IE5VTEwKLS0gICAgICAmJiBTWU1CT0xfQ1BMVVNfREVNQU5H TEVEX05BTUUgKHBzeW0pICE9IE5VTEwpCi0tICAgIGNwX2NoZWNrX3Bvc3NpYmxlX25hbWVzcGFj ZV9zeW1ib2xzIChTWU1CT0xfQ1BMVVNfREVNQU5HTEVEX05BTUUgKHBzeW0pLAotLQkJCQkJIG9i amZpbGUpOwotLQotICAgaWYgKGJ1aWx0X2FjdHVhbF9uYW1lKQotICAgICB4ZnJlZSAoYWN0dWFs X25hbWUpOwotIH0KKyAgIHBjID0gKCpwb3MpKys7CisgICBvcCA9IGV4cC0+ZWx0c1twY10ub3Bj b2RlOworQEAgLTE3NzIsNiArMTc3NCw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgICAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRp bl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKyAJCQkJIG5vdF9sdmFsKTsKKyAJ ICAgIH0KKysJICBlbHNlIGlmIChUWVBFX0dOVV9JRlVOQyAoZnR5cGUpKQorKwkgICAgcmV0dXJu IGFsbG9jYXRlX3ZhbHVlIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX1RBUkdFVF9UWVBFIChmdHlw ZSkpKTsKKyAJICBlbHNlIGlmIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpCisgCSAgICByZXR1 cm4gYWxsb2NhdGVfdmFsdWUgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKSk7CisgCSAgZWxzZQor QEAgLTE3OTgsNiArMTgwMiw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAogIAotLS8qIERldGVybWluZSB3aGV0aGVyIGEgZGllIG9mIHR5cGUg VEFHIGxpdmluZyBpbiBhIEMrKyBjbGFzcyBvcgotLSAgIG5hbWVzcGFjZSBuZWVkcyB0byBoYXZl IHRoZSBuYW1lIG9mIHRoZSBzY29wZSBwcmVwZW5kZWQgdG8gdGhlCi0tICAgbmFtZSBsaXN0ZWQg aW4gdGhlIGRpZS4gICovCi0tCi0tc3RhdGljIGludAotLXBkaV9uZWVkc19uYW1lc3BhY2UgKGVu dW0gZHdhcmZfdGFnIHRhZykKLS17Ci0tICBzd2l0Y2ggKHRhZykKLS0gICAgewotLSAgICBjYXNl IERXX1RBR19uYW1lc3BhY2U6Ci0tICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6Ci0tICAgIGNhc2Ug RFdfVEFHX2NsYXNzX3R5cGU6Ci0tICAgIGNhc2UgRFdfVEFHX2ludGVyZmFjZV90eXBlOgotLSAg ICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLS0gICAgY2FzZSBEV19UQUdfdW5pb25fdHlw ZToKLS0gICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLS0gICAgY2FzZSBEV19UQUdf ZW51bWVyYXRvcjoKLS0gICAgICByZXR1cm4gMTsKLS0gICAgZGVmYXVsdDoKLS0gICAgICByZXR1 cm4gMDsKLS0gICAgfQotLX0KLS0KLSAvKiBSZWFkIGEgcGFydGlhbCBkaWUgY29ycmVzcG9uZGlu ZyB0byBhIG5hbWVzcGFjZTsgYWxzbywgYWRkIGEgc3ltYm9sCi0gICAgY29ycmVzcG9uZGluZyB0 byB0aGF0IG5hbWVzcGFjZSB0byB0aGUgc3ltYm9sIHRhYmxlLiAgTkFNRVNQQUNFIGlzCi0gICAg dGhlIG5hbWUgb2YgdGhlIGVuY2xvc2luZyBuYW1lc3BhY2UuICAqLwotQEAgLTI2NTYsMTIgKzI4 OTIsMTIgQEAgc3RhdGljIHZvaWQKLSBhZGRfcGFydGlhbF9tb2R1bGUgKHN0cnVjdCBwYXJ0aWFs X2RpZV9pbmZvICpwZGksIENPUkVfQUREUiAqbG93cGMsCi0gCQkgICAgQ09SRV9BRERSICpoaWdo cGMsIGludCBuZWVkX3BjLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICAvKiBOb3cgc2Nh biBwYXJ0aWFsIHN5bWJvbHMgaW4gdGhhdCBtb2R1bGUuCi0rICAvKiBBZGQgYSBzeW1ib2wgZm9y IHRoZSBtb2R1bGUuICAqLworICAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0aGUgdHlwZSBjb2Rl IHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLworICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAg KE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7CisrICAgICAgb2xkX2NoYWluID0gbWFrZV9j bGVhbnVwIChudWxsX2NsZWFudXAsIDApOworKyAgICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFs dWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKyAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFs dWVfdHlwZSAoYXJnMSkpOworICAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogIAotLSAg ICAgRklYTUU6IFN1cHBvcnQgdGhlIHNlcGFyYXRlIEZvcnRyYW4gbW9kdWxlIG5hbWVzcGFjZXMu ICAqLwotKyAgYWRkX3BhcnRpYWxfc3ltYm9sIChwZGksIGN1KTsKK0BAIC0xODE4LDYgKzE4MjQs NyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwK KyAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgCSAgICB9CisgCX0gCisrICAgICAg ZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgCi0tICBpZiAocGRpLT5oYXNfY2hpbGRyZW4pCi0t ICAgIHNjYW5fcGFydGlhbF9zeW1ib2xzIChwZGktPmRpZV9jaGlsZCwgbG93cGMsIGhpZ2hwYywg bmVlZF9wYywgY3UpOwotKyAgLyogUGFydGlhbCBzeW1ib2xzIGluIHRoYXQgbW9kdWxlIGFyZSBu b3Qgc2Nhbm5lZCBhcyB0aGV5IGFyZSBuZXZlciBnbG9iYWxseQotKyAgICAgdmlzaWJsZS4gIFRo ZXkgZ2V0IGltcG9ydGVkIHRvIHRoZSBzcGVjaWZpYyBzY29wZXMgb24gdGhlIGZ1bGwgcmVhZC4g ICovCi0gfQorICAgICAgIHN3aXRjaCAoY29kZSkKKyAJeworQEAgLTIyNTQsMTMgKzIyNjEsMTkg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisg ICAgICAgeworIAlpbnQgc3Vic2NyaXB0X2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOworIAlpbnQg YXJyYXlfc2l6ZV9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKKysJaW50IGJ5dGVfc3RyaWRlX2Fy cmF5W01BWF9GT1JUUkFOX0RJTVNdOworIAlpbnQgbmRpbWVuc2lvbnMgPSAxLCBpOworIAlzdHJ1 Y3QgdHlwZSAqdG1wX3R5cGU7CisgCWludCBvZmZzZXRfaXRlbTsJLyogVGhlIGFycmF5IG9mZnNl dCB3aGVyZSB0aGUgaXRlbSBsaXZlcyAqLworKwlDT1JFX0FERFIgb2Zmc2V0X2J5dGU7CS8qIGJ5 dGVfc3RyaWRlIGJhc2VkIG9mZnNldCAgKi8KKysJdW5zaWduZWQgZWxlbWVudF9zaXplOwogIAot IC8qIFJlYWQgYSBwYXJ0aWFsIGRpZSBjb3JyZXNwb25kaW5nIHRvIGEgc3VicHJvZ3JhbSBhbmQg Y3JlYXRlIGEgcGFydGlhbAotQEAgLTI3MzksNyArMjk3NSw2IEBAIGd1ZXNzX3N0cnVjdHVyZV9u YW1lIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqc3RydWN0X3BkaSwKLSAJIGNvdWxkIGZpeCB0 aGlzIGJ5IG9ubHkgdXNpbmcgdGhlIGRlbWFuZ2xlZCBuYW1lIHRvIGdldCB0aGUKLSAJIHByZWZp eCAoYnV0IHNlZSBjb21tZW50IGluIHJlYWRfc3RydWN0dXJlX3R5cGUpLiAgKi8KKyAJaWYgKG5h cmdzID4gTUFYX0ZPUlRSQU5fRElNUykKKyAJICBlcnJvciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0 cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMpOwogIAotLSAgICAgIHN0cnVj dCBwYXJ0aWFsX2RpZV9pbmZvICpjaGlsZF9wZGkgPSBzdHJ1Y3RfcGRpLT5kaWVfY2hpbGQ7Ci0g ICAgICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnJlYWxfcGRpOworKwlvbGRfY2hhaW4gPSBt YWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7CisrCW9iamVjdF9hZGRyZXNzX3NldCAodmFs dWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKysKKyAJdG1wX3R5cGUgPSBjaGVja190eXBlZGVmICh2 YWx1ZV90eXBlIChhcmcxKSk7CisgCW5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAo dHlwZSk7CiAgCi0gICAgICAgLyogSWYgdGhpcyBESUUgKHRoaXMgRElFJ3Mgc3BlY2lmaWNhdGlv biwgaWYgYW55KSBoYXMgYSBwYXJlbnQsIHRoZW4KLUBAIC0yNzUyLDI3ICsyOTg3LDYgQEAgZ3Vl c3Nfc3RydWN0dXJlX25hbWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpzdHJ1Y3RfcGRpLAor QEAgLTIyOTAsNiArMjMwMyw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAorIAkgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90 eXBlKTsKKyAJICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7CiAgCi0g ICAgICAgaWYgKHJlYWxfcGRpLT5kaWVfcGFyZW50ICE9IE5VTEwpCi0gCXJldHVybjsKLS0KLS0g ICAgICB3aGlsZSAoY2hpbGRfcGRpICE9IE5VTEwpCi0tCXsKLS0JICBpZiAoY2hpbGRfcGRpLT50 YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0pCi0tCSAgICB7Ci0tCSAgICAgIGNoYXIgKmFjdHVhbF9j bGFzc19uYW1lCi0tCQk9IGxhbmd1YWdlX2NsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAoY3UtPmxh bmd1YWdlX2RlZm4sCi0tCQkJCQkJICAgICBjaGlsZF9wZGktPm5hbWUpOwotLQkgICAgICBpZiAo YWN0dWFsX2NsYXNzX25hbWUgIT0gTlVMTCkKLS0JCXsKLS0JCSAgc3RydWN0X3BkaS0+bmFtZQot LQkJICAgID0gb2JzYXZlc3RyaW5nIChhY3R1YWxfY2xhc3NfbmFtZSwKLS0JCQkJICAgIHN0cmxl biAoYWN0dWFsX2NsYXNzX25hbWUpLAotLQkJCQkgICAgJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29i c3RhY2spOwotLQkJICB4ZnJlZSAoYWN0dWFsX2NsYXNzX25hbWUpOwotLQkJfQotLQkgICAgICBi cmVhazsKLS0JICAgIH0KLS0KLS0JICBjaGlsZF9wZGkgPSBjaGlsZF9wZGktPmRpZV9zaWJsaW5n OwotLQl9Ci0gICAgIH0KLSB9CisrCSAgICBieXRlX3N0cmlkZV9hcnJheVtuYXJncyAtIGkgLSAx XSA9CisrCQkJCQlUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0bXBfdHlwZSk7CisrCisg CSAgICBhcnJheV9zaXplX2FycmF5W25hcmdzIC0gaSAtIDFdID0gdXBwZXIgLSBsb3dlciArIDE7 CiAgCi1AQCAtMzMyNSw2ICszNTM5LDE0IEBAIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgIGNhc2UgRFdfVEFHX2ltcG9ydGVkX2Rl Y2xhcmF0aW9uOgotICAgICBjYXNlIERXX1RBR19pbXBvcnRlZF9tb2R1bGU6Ci0gICAgICAgcHJv Y2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8gPSAxOwotKyAgICAgIGlmIChjdS0+bGFuZ3VhZ2Ug PT0gbGFuZ3VhZ2VfZm9ydHJhbikKLSsJewotKwkgIGlmIChkaWUtPnRhZyA9PSBEV19UQUdfaW1w b3J0ZWRfZGVjbGFyYXRpb24pCi0rCSAgICByZWFkX2ZvcnRyYW5faW1wb3J0ZWRfZGVjbGFyYXRp b24gKGRpZSwgY3UpOwotKwkgIGVsc2UKLSsJICAgIHJlYWRfZm9ydHJhbl9pbXBvcnRlZF9tb2R1 bGUgKGRpZSwgY3UpOwotKwkgIGJyZWFrOwotKwl9Ci0gICAgICAgaWYgKGRpZS0+Y2hpbGQgIT0g TlVMTCAmJiAoZGllLT50YWcgPT0gRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0aW9uCi0gCQkJCSB8 fCBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfZm9ydHJhbikpCi0gCWNvbXBsYWludCAoJnN5bWZp bGVfY29tcGxhaW50cywgXygiVGFnICclcycgaGFzIHVuZXhwZWN0ZWQgY2hpbGRyZW4iKSwKLUBA IC0zMzM3LDQyICszNTU5LDE4MyBAQCBwcm9jZXNzX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICB9Ci0gfQorIAkgICAgLyogWmVyby1ub3JtYWxp emUgc3Vic2NyaXB0cyBzbyB0aGF0IG9mZnNldHRpbmcgd2lsbCB3b3JrLiAqLworQEAgLTIzMDgs MTMgKzIzMjQsMjUgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhw ZWN0X3R5cGUsCisgCSAgICAgIHRtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRf VFlQRSAodG1wX3R5cGUpKTsKKyAJICB9CiAgCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGR3 YXJmMl9jb21wdXRlX25hbWUgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyIERJRQotKyAgIG5lZWRz IHRvIGhhdmUgdGhlIG5hbWUgb2YgdGhlIHNjb3BlIHByZXBlbmRlZCB0byB0aGUgbmFtZSBsaXN0 ZWQgaW4gdGhlCi0rICAgZGllLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZGllX25lZWRzX25hbWVz cGFjZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsg IHN3aXRjaCAoZGllLT50YWcpCi0rICAgIHsKLSsgICAgY2FzZSBEV19UQUdfbmFtZXNwYWNlOgot KyAgICBjYXNlIERXX1RBR190eXBlZGVmOgotKyAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgot KyAgICBjYXNlIERXX1RBR19pbnRlcmZhY2VfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfc3RydWN0 dXJlX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFH X2VudW1lcmF0aW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0b3I6Ci0rICAgIGNh c2UgRFdfVEFHX3N1YnByb2dyYW06Ci0rICAgIGNhc2UgRFdfVEFHX21lbWJlcjoKLSsgICAgICBy ZXR1cm4gMTsKLSsKLSsgICAgY2FzZSBEV19UQUdfdmFyaWFibGU6Ci0rICAgICAgewotKwlzdHJ1 Y3QgYXR0cmlidXRlICphdHRyOworKwkvKiBLZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5k IC8gZjc3X2dldF9sb3dlcmJvdW5kIGNhbGxzIGFib3ZlLiAgKi8KKysJZG9fY2xlYW51cHMgKG9s ZF9jaGFpbik7CiArCi0rCS8qIFdlIG9ubHkgbmVlZCB0byBwcmVmaXggImdsb2JhbGx5IiB2aXNp YmxlIHZhcmlhYmxlcy4gIFRoZXNlIGluY2x1ZGUKLSsJICAgYW55IHZhcmlhYmxlIG1hcmtlZCB3 aXRoIERXX0FUX2V4dGVybmFsIG9yIGFueSB2YXJpYWJsZSB0aGF0Ci0rCSAgIGxpdmVzIGluIGEg bmFtZXNwYWNlLiAgW1ZhcmlhYmxlcyBpbiBhbm9ueW1vdXMgbmFtZXNwYWNlcwotKwkgICByZXF1 aXJlIHByZWZpeGluZywgYnV0IHRoZXkgYXJlIG5vdCBEV19BVF9leHRlcm5hbC5dICAqLworIAkv KiBOb3cgbGV0IHVzIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGZvciB0aGlzIGl0ZW0gKi8KKyAKKy0J b2Zmc2V0X2l0ZW0gPSBzdWJzY3JpcHRfYXJyYXlbbmRpbWVuc2lvbnMgLSAxXTsKKysJb2Zmc2V0 X2l0ZW0gPSAwOworKwlvZmZzZXRfYnl0ZSA9IDA7CiArCi0rCWlmIChkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9zcGVjaWZpY2F0aW9uLCBjdSkpCisrCWZvciAoaSA9IG5kaW1lbnNpb25zIC0gMTsg aSA+PSAwOyAtLWkpCiArCSAgewotKwkgICAgc3RydWN0IGR3YXJmMl9jdSAqc3BlY19jdSA9IGN1 OwotKwkgICAgcmV0dXJuIGRpZV9uZWVkc19uYW1lc3BhY2UgKGRpZV9zcGVjaWZpY2F0aW9uIChk aWUsICZzcGVjX2N1KSwKLSsJCQkJCXNwZWNfY3UpOworKwkgICAgb2Zmc2V0X2l0ZW0gKj0gYXJy YXlfc2l6ZV9hcnJheVtpXTsKKysJICAgIGlmIChieXRlX3N0cmlkZV9hcnJheVtpXSA9PSAwKQor KwkgICAgICBvZmZzZXRfaXRlbSArPSBzdWJzY3JpcHRfYXJyYXlbaV07CisrCSAgICBlbHNlCisr CSAgICAgIG9mZnNldF9ieXRlICs9IHN1YnNjcmlwdF9hcnJheVtpXSAqIGJ5dGVfc3RyaWRlX2Fy cmF5W2ldOwogKwkgIH0KLSsKLSsJLyogQSB2YXJpYWJsZSBpbiBhIGxleGljYWwgYmxvY2sgb2Yg c29tZSBraW5kIGRvZXMgbm90IG5lZWQKLSsJICAgYSBuYW1lc3BhY2UsIGV2ZW4gdGhvdWdoIGlu IEMrKyBzdWNoIHZhcmlhYmxlcyBtYXkgYmUKLSsJICAgZXh0ZXJuYWwgYW5kIGhhdmUgYSBtYW5n bGVkIG5hbWUuICAqLwotKwlpZiAoZGllLT5wYXJlbnQtPnRhZyA9PSBEV19UQUdfbGV4aWNhbF9i bG9jawotKwkgICAgfHwgZGllLT5wYXJlbnQtPnRhZyA9PSBEV19UQUdfdHJ5X2Jsb2NrCi0rCSAg ICB8fCBkaWUtPnBhcmVudC0+dGFnID09IERXX1RBR19jYXRjaF9ibG9jaykKLSsJICByZXR1cm4g MDsKLSsKLSsJYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2V4dGVybmFsLCBjdSk7Ci0r CWlmIChhdHRyIHx8IGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX25hbWVzcGFjZSkKLSsJICBy ZXR1cm4gMTsKLSsKLSsJcmV0dXJuIDA7Ci0rICAgICAgfQotKwotKyAgICBkZWZhdWx0OgotKyAg ICAgIHJldHVybiAwOwotKyAgICB9Ci0rfQotKwotKy8qIENvbXB1dGUgdGhlIGZ1bGx5IHF1YWxp ZmllZCBuYW1lIG9mIERJRSBpbiBDVS4gIElmIFBIWVNOQU1FIGlzIG5vbnplcm8sCi0rICAgY29t cHV0ZSB0aGUgcGh5c25hbWUgZm9yIHRoZSBvYmplY3QsIHdoaWNoIGluY2x1ZGUgYSBtZXRob2Qn cwotKyAgIGZvcm1hbCBwYXJhbWV0ZXJzIChDKysvSmF2YSkgYW5kIHJldHVybiB0eXBlIChKYXZh KS4KLSsKLSsgICBUaGUgcmVzdWx0IGlzIGFsbG9jYXRlZCBvbiB0aGUgb2JqZmlsZV9vYnN0YWNr IGFuZCBjYW5vbmljYWxpemVkLiAgKi8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rZHdhcmYy X2NvbXB1dGVfbmFtZSAoY2hhciAqbmFtZSwgc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1LAotKwkJICAgICBpbnQgcGh5c25hbWUpCi0rewotKyAgaWYgKG5hbWUgPT0g TlVMTCkKLSsgICAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKLSsKLSsgIC8qIFRoZXNl IGFyZSB0aGUgb25seSBsYW5ndWFnZXMgd2Uga25vdyBob3cgdG8gcXVhbGlmeSBuYW1lcyBpbi4g ICovCi0rICBpZiAobmFtZSAhPSBOVUxMCi0rICAgICAgJiYgKGN1LT5sYW5ndWFnZSA9PSBsYW5n dWFnZV9jcGx1cyB8fCBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkpCi0rICAgIHsKLSsg ICAgICBpZiAoZGllX25lZWRzX25hbWVzcGFjZSAoZGllLCBjdSkpCisgCistCWZvciAoaSA9IG5k aW1lbnNpb25zIC0gMTsgaSA+IDA7IC0taSkKKy0JICBvZmZzZXRfaXRlbSA9CistCSAgICBhcnJh eV9zaXplX2FycmF5W2kgLSAxXSAqIG9mZnNldF9pdGVtICsgc3Vic2NyaXB0X2FycmF5W2kgLSAx XTsKKysJZWxlbWVudF9zaXplID0gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90 eXBlKSk7CisrCW9mZnNldF9ieXRlICs9IG9mZnNldF9pdGVtICogZWxlbWVudF9zaXplOworIAor IAkvKiBMZXQgdXMgbm93IHBsYXkgYSBkaXJ0eSB0cmljazogd2Ugd2lsbCB0YWtlIGFyZzEgCisg CSAgIHdoaWNoIGlzIGEgdmFsdWUgbm9kZSBwb2ludGluZyB0byB0aGUgdG9wbW9zdCBsZXZlbAor QEAgLTIzMjQsNyArMjM1Miw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAorIAkgICByZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUgdmFsdWUgKi8K KyAKKyAJZGVwcmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAoYXJnMSwgdG1wX3R5cGUpOworLQlyZXR1 cm4gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcmcxLCBvZmZzZXRfaXRlbSwgMCk7CisrCXJl dHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFyZzEsIG9mZnNldF9ieXRlKTsKKyAgICAg ICB9CisgCisgICAgIGNhc2UgQklOT1BfTE9HSUNBTF9BTkQ6CitAQCAtMjU1OCwxNCArMjU4Niwy MiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwK KyAgICAgICBpZiAoZXhwZWN0X3R5cGUgJiYgVFlQRV9DT0RFIChleHBlY3RfdHlwZSkgPT0gVFlQ RV9DT0RFX1BUUikKKyAJZXhwZWN0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChjaGVja190eXBl ZGVmIChleHBlY3RfdHlwZSkpOworICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKGV4cGVj dF90eXBlLCBleHAsIHBvcywgbm9zaWRlKTsKKysgICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFu dXAgKG51bGxfY2xlYW51cCwgMCk7CisrICAgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9y YXdfYWRkcmVzcyAoYXJnMSkpOworICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90 eXBlIChhcmcxKSk7CisgICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX01F VEhPRFBUUgorIAkgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX01FTUJFUlBUUikK KyAJZXJyb3IgKF8oIkF0dGVtcHQgdG8gZGVyZWZlcmVuY2UgcG9pbnRlciB0byBtZW1iZXIgd2l0 aG91dCBhbiBvYmplY3QiKSk7CisgICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCistCWdv dG8gbm9zaWRlcmV0OwogKwl7Ci0rCSAgbG9uZyBsZW5ndGg7Ci0rCSAgY2hhciAqcHJlZml4Owot KwkgIHN0cnVjdCB1aV9maWxlICpidWY7Ci0rCi0rCSAgcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZp eCAoZGllLCBjdSk7Ci0rCSAgYnVmID0gbWVtX2ZpbGVvcGVuICgpOwotKwkgIGlmICgqcHJlZml4 ICE9ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGNoYXIgKnByZWZpeGVkX25hbWUgPSB0eXBlbmFt ZV9jb25jYXQgKE5VTEwsIHByZWZpeCwgbmFtZSwgY3UpOwotKwkgICAgICBmcHV0c191bmZpbHRl cmVkIChwcmVmaXhlZF9uYW1lLCBidWYpOwotKwkgICAgICB4ZnJlZSAocHJlZml4ZWRfbmFtZSk7 Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgZnB1dHNfdW5maWx0ZXJlZCAobmFtZSA/IG5hbWUg OiAiIiwgYnVmKTsKLSsKLSsJICAvKiBGb3IgSmF2YSBhbmQgQysrIG1ldGhvZHMsIGFwcGVuZCBm b3JtYWwgcGFyYW1ldGVyIHR5cGUKLSsJICAgICBpbmZvcm1hdGlvbiwgaWYgUEhZU05BTUUuICAq LwotKwotKwkgIGlmIChwaHlzbmFtZSAmJiBkaWUtPnRhZyA9PSBEV19UQUdfc3VicHJvZ3JhbQot KwkgICAgICAmJiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCi0rCQkgIHx8IGN1LT5s YW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKSkKKysJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsK KysJICBnb3RvIG5vc2lkZXJldDsKKysJfQorICAgICAgIGlmICh1bm9wX3VzZXJfZGVmaW5lZF9w IChvcCwgYXJnMSkpCistCXJldHVybiB2YWx1ZV94X3Vub3AgKGFyZzEsIG9wLCBub3NpZGUpOwor Kwl7CisrCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgcmV0dXJuIHZhbHVlX3hfdW5v cCAoYXJnMSwgb3AsIG5vc2lkZSk7CisrCX0KKyAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZB TF9BVk9JRF9TSURFX0VGRkVDVFMpCisgCXsKKyAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFs dWVfdHlwZSAoYXJnMSkpOworQEAgLTI1NzQsMTIgKzI2MTAsMTggQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCSAgLyogSW4gQyB5b3UgY2Fu IGRlcmVmZXJlbmNlIGFuIGFycmF5IHRvIGdldCB0aGUgMXN0IGVsdC4gICovCisgCSAgICAgIHx8 IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisgCSAgICApCistCSAgICByZXR1 cm4gdmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkJICAgICAgIGx2YWxf bWVtb3J5KTsKICsJICAgIHsKLSsJICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSByZWFkX3R5cGVf ZGllIChkaWUsIGN1KTsKLSsKLSsJICAgICAgY190eXBlX3ByaW50X2FyZ3MgKHR5cGUsIGJ1Ziwg MCwgY3UtPmxhbmd1YWdlKTsKLSsKLSsJICAgICAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFn ZV9qYXZhKQotKwkJewotKwkJICAvKiBGb3IgamF2YSwgd2UgbXVzdCBhcHBlbmQgdGhlIHJldHVy biB0eXBlIHRvIG1ldGhvZAotKwkJICAgICBuYW1lcy4gKi8KLSsJCSAgaWYgKGRpZS0+dGFnID09 IERXX1RBR19zdWJwcm9ncmFtKQotKwkJICAgIGphdmFfcHJpbnRfdHlwZSAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSksICIiLCBidWYsCi0rCQkJCSAgICAgMCwgMCk7Ci0rCQl9Ci0rCSAgICAgIGVs c2UgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKLSsJCXsKLSsJCSAgaWYgKFRZ UEVfTkZJRUxEUyAodHlwZSkgPiAwCi0rCQkgICAgICAmJiBUWVBFX0ZJRUxEX0FSVElGSUNJQUwg KHR5cGUsIDApCi0rCQkgICAgICAmJiBUWVBFX0NPTlNUIChUWVBFX1RBUkdFVF9UWVBFIChUWVBF X0ZJRUxEX1RZUEUgKHR5cGUsIDApKSkpCi0rCQkgICAgZnB1dHNfdW5maWx0ZXJlZCAoIiBjb25z dCIsIGJ1Zik7Ci0rCQl9CisrCSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKwkgICAg ICByZXR1cm4gdmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCisrCQkJCSBsdmFs X21lbW9yeSk7CiArCSAgICB9Ci0rCi0rCSAgbmFtZSA9IHVpX2ZpbGVfb2JzYXZlc3RyaW5nIChi dWYsICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCQkgICAgICAgJmxlbmd0aCk7 Ci0rCSAgdWlfZmlsZV9kZWxldGUgKGJ1Zik7Ci0rCi0rCSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBs YW5ndWFnZV9jcGx1cykKKyAJICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9JTlQpCistCSAgICAvKiBHREIgYWxsb3dzIGRlcmVmZXJlbmNpbmcgYW4gaW50LiAgKi8KKy0J ICAgIHJldHVybiB2YWx1ZV96ZXJvIChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0 aW5faW50LAorLQkJCSAgICAgICBsdmFsX21lbW9yeSk7CiArCSAgICB7Ci0rCSAgICAgIGNoYXIg KmNuYW1lCi0rCQk9IGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAobmFtZSwgY3UsCi0rCQkJCQkg ICAgJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2spOwotKwkgICAgICBpZiAoY25hbWUgIT0g TlVMTCkKLSsJCW5hbWUgPSBjbmFtZTsKKysJICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7 CisrCSAgICAgIC8qIEdEQiBhbGxvd3MgZGVyZWZlcmVuY2luZyBhbiBpbnQuICAqLworKwkgICAg ICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGlu X2ludCwKKysJCQkJIGx2YWxfbWVtb3J5KTsKICsJICAgIH0KKyAJICBlbHNlCisgCSAgICBlcnJv ciAoXygiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIikp OworIAl9CitAQCAtMjU4OSw5ICsyNjMxLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAo c3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJsZXMg YXJlIHJhcmUgZW5vdWdoIHRoYXQKKyAJIEJVSUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNlZW0g dG8gYmUgYSBtaXN0YWtlLiAgKi8KKyAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfSU5UKQorLQlyZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBlIChleHAtPmdk YmFyY2gpLT5idWlsdGluX2ludCwKKy0JCQkgICAgICAoQ09SRV9BRERSKSB2YWx1ZV9hc19hZGRy ZXNzIChhcmcxKSk7CistICAgICAgcmV0dXJuIHZhbHVlX2luZCAoYXJnMSk7CisrCXsKKysJICBk b19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysJICByZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRp bl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJCQkJKENPUkVfQUREUikgdmFs dWVfYXNfYWRkcmVzcyAoYXJnMSkpOwogKwl9Ci0rICAgIH0KLSsKLSsgIHJldHVybiBuYW1lOwot K30KLSsKLSAvKiBSZXR1cm4gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIERJRSwgYmFzZWQg b24gaXRzIERXX0FUX25hbWUuCi0gICAgSWYgc2NvcGUgcXVhbGlmaWVycyBhcmUgYXBwcm9wcmlh dGUgdGhleSB3aWxsIGJlIGFkZGVkLiAgVGhlIHJlc3VsdAotICAgIHdpbGwgYmUgYWxsb2NhdGVk IG9uIHRoZSBvYmpmaWxlX29ic3RhY2ssIG9yIE5VTEwgaWYgdGhlIERJRSBkb2VzCi0tICAgbm90 IGhhdmUgYSBuYW1lLiAgKi8KLSsgICBub3QgaGF2ZSBhIG5hbWUuICBOQU1FIG1heSBlaXRoZXIg YmUgZnJvbSBhIHByZXZpb3VzIGNhbGwgdG8KLSsgICBkd2FyZjJfbmFtZSBvciBOVUxMLgotKwot KyAgIFRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgYmUgY2Fub25pY2FsaXplZCAoaWYgQysrL0phdmEp LiAqLworKyAgICAgIGFyZzEgPSB2YWx1ZV9pbmQgKGFyZzEpOworKyAgICAgIGRvX2NsZWFudXBz IChvbGRfY2hhaW4pOworKyAgICAgIHJldHVybiBhcmcxOwogIAotIHN0YXRpYyBjb25zdCBjaGFy ICoKLS1kd2FyZjJfZnVsbF9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0rZHdhcmYyX2Z1bGxfbmFtZSAoY2hhciAqbmFtZSwgc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICBjYXNlIFVOT1BfQUREUjoKKyAgICAg ICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICovCitA QCAtMjkzMyw3ICsyOTgwLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVj dCBleHByZXNzaW9uICpleHAsCiAgewotLSAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIGNo YXIgKnByZWZpeCwgKm5hbWU7Ci0tICBzdHJ1Y3QgdWlfZmlsZSAqYnVmID0gTlVMTDsKLSsgIHJl dHVybiBkd2FyZjJfY29tcHV0ZV9uYW1lIChuYW1lLCBkaWUsIGN1LCAwKTsKLSt9Ci0gCi0tICBu YW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotLSAgaWYgKCFuYW1lKQotLSAgICByZXR1cm4g TlVMTDsKLSsvKiBDb25zdHJ1Y3QgYSBwaHlzbmFtZSBmb3IgdGhlIGdpdmVuIERJRSBpbiBDVS4g IE5BTUUgbWF5IGVpdGhlciBiZQotKyAgIGZyb20gYSBwcmV2aW91cyBjYWxsIHRvIGR3YXJmMl9u YW1lIG9yIE5VTEwuICBUaGUgcmVzdWx0IHdpbGwgYmUKLSsgICBhbGxvY2F0ZWQgb24gdGVoIG9i amZpbGVfb2Jqc3RhY2sgb3IgTlVMTCBpZiB0aGUgRElFIGRvZXMgbm90IGhhdmUgYQotKyAgIG5h bWUuCi0gCi0tICAvKiBUaGVzZSBhcmUgdGhlIG9ubHkgbGFuZ3VhZ2VzIHdlIGtub3cgaG93IHRv IHF1YWxpZnkgbmFtZXMgaW4uICAqLwotLSAgaWYgKGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9j cGx1cwotLSAgICAgICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9qYXZhKQotLSAgICByZXR1 cm4gbmFtZTsKLS0KLS0gIC8qIElmIG5vIHByZWZpeCBpcyBuZWNlc3NhcnkgZm9yIHRoaXMgdHlw ZSBvZiBESUUsIHJldHVybiB0aGUKLS0gICAgIHVucXVhbGlmaWVkIG5hbWUuICBUaGUgb3RoZXIg dGhyZWUgdGFncyBsaXN0ZWQgY291bGQgYmUgaGFuZGxlZAotLSAgICAgaW4gcGRpX25lZWRzX25h bWVzcGFjZSwgYnV0IHRoYXQgcmVxdWlyZXMgYnJvYWRlciBjaGFuZ2VzLiAgKi8KLS0gIGlmICgh cGRpX25lZWRzX25hbWVzcGFjZSAoZGllLT50YWcpCi0tICAgICAgJiYgZGllLT50YWcgIT0gRFdf VEFHX3N1YnByb2dyYW0KLS0gICAgICAmJiBkaWUtPnRhZyAhPSBEV19UQUdfdmFyaWFibGUKLS0g ICAgICAmJiBkaWUtPnRhZyAhPSBEV19UQUdfbWVtYmVyKQotLSAgICByZXR1cm4gbmFtZTsKLS0K LS0gIHByZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGRpZSwgY3UpOwotLSAgaWYgKCpwcmVmaXgg IT0gJ1wwJykKLS0gICAgbmFtZSA9IHR5cGVuYW1lX2NvbmNhdCAoJmN1LT5vYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssIHByZWZpeCwKLS0JCQkgICAgbmFtZSwgY3UpOwotKyAgIFRoZSBvdXRwdXQg c3RyaW5nIHdpbGwgYmUgY2Fub25pY2FsaXplZCAoaWYgQysrL0phdmEpLiAgKi8KLSAKLS0gIHJl dHVybiBuYW1lOwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStkd2FyZjJfcGh5c25hbWUgKGNoYXIg Km5hbWUsIHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSt7Ci0r ICByZXR1cm4gZHdhcmYyX2NvbXB1dGVfbmFtZSAobmFtZSwgZGllLCBjdSwgMSk7Ci0rfQotKwot Ky8qIFJlYWQgdGhlIGdpdmVuIERJRSdzIERXX0FUX2RlY2xfbGluZSBudW1iZXIuICBSZXR1cm4g LTEgaWYgaW4gY2FzZSBvZiBhbgotKyAgIGVycm9yLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZHdh cmYyX3JlYWRfZGVjbF9saW5lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCi0rewotKyAgc3RydWN0IGF0dHJpYnV0ZSAqbGluZV9hdHRyOwotKwotKyAgbGluZV9h dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGVjbF9saW5lLCBjdSk7Ci0rICBpZiAobGlu ZV9hdHRyKQotKyAgICByZXR1cm4gRFdfVU5TTkQgKGxpbmVfYXR0cik7Ci0rCi0rICByZXR1cm4g LTE7Ci0gfQorICAgZW51bSBleHBfb3Bjb2RlIG9wOworICAgaW50IHBjOworLSAgc3RydWN0IHZh bHVlICp2YWw7CisrICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IE5VTEw7CisgICBzdHJ1Y3Qgc3ltYm9s ICp2YXI7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKICAKLSAvKiBSZWFkIHRoZSBpbXBvcnQgc3Rh dGVtZW50IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gZGllIGFuZCByZWNvcmQgaXQuICAqLwotQEAg LTMzODUsMTEgKzM3NDgsMTUgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgZHdhcmYyX2N1ICppbXBv cnRlZF9jdTsKLSAgIGNvbnN0IGNoYXIgKmltcG9ydGVkX25hbWU7Ci0gICBjb25zdCBjaGFyICpp bXBvcnRlZF9uYW1lX3ByZWZpeDsKLS0gIGNoYXIgKmltcG9ydF9hbGlhczsKLS0KLS0gIGNvbnN0 IGNoYXIgKmltcG9ydF9wcmVmaXg7Ci0gICBjaGFyICpjYW5vbmljYWxfbmFtZTsKLS0KLSsgIGNv bnN0IGNoYXIgKmltcG9ydF9hbGlhczsKLSsgIGNvbnN0IGNoYXIgKmltcG9ydGVkX2RlY2xhcmF0 aW9uID0gIiI7Ci0rICBjb25zdCBjaGFyICppbXBvcnRfcHJlZml4OwotKyAgCi0rICBpbnQgbGlu ZV9udW1iZXIgPSAtMTsKLSsgIAotKyAgaW50IGlzX2Fub255bW91cyA9IDA7Ci0rICAKLSAgIGlt cG9ydF9hdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfaW1wb3J0LCBjdSk7Ci0gICBpZiAo aW1wb3J0X2F0dHIgPT0gTlVMTCkKK0BAIC0yOTQ0LDEyICsyOTkxLDE3IEBAIGV2YWx1YXRlX3N1 YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogICAgICB7Ci1AQCAt MzQzOSwxOSArMzgwNiwyNSBAQCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgfQorICAgICBjYXNlIE9QX1ZBUl9W QUxVRToKKyAgICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CisrICAgICAgLyog YWRkcmVzc19vZl92YXJpYWJsZSB3aWxsIGNhbGwgb2JqZWN0X2FkZHJlc3Nfc2V0IGZvciBjaGVj a190eXBlZGVmLgorKwkgQ2FsbCBpdCBvbmx5IGlmIHJlcXVpcmVkIGFzIGl0IGNhbiBlcnJvci1v dXQgb24gVkFSIGluIHJlZ2lzdGVyLiAgKi8KKysgICAgICBpZiAoVFlQRV9EWU5BTUlDIChTWU1C T0xfVFlQRSAodmFyKSkpCisrCXZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5l bHRzW3BjICsgMV0uYmxvY2spOworICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChTWU1CT0xf VFlQRSAodmFyKSk7CisgICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FS UkFZCisgCSAgJiYgQ0FTVF9JU19DT05WRVJTSU9OIChleHAtPmxhbmd1YWdlX2RlZm4pKQorIAl7 CisgCSAgKCpwb3MpICs9IDQ7CistCSAgdmFsID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFyLCBl eHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7CisrCSAgaWYgKCF2YWwpCisrCSAgICB2YWwgPSBhZGRy ZXNzX29mX3ZhcmlhYmxlICh2YXIsIGV4cC0+ZWx0c1twYyArIDFdLmJsb2NrKTsKKyAJICByZXR1 cm4gdmFsdWVfY2FzdCAobG9va3VwX3BvaW50ZXJfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpLAorIAkJCSAgICAgdmFsKTsKKyAJfQorQEAgLTMwMDEsOSArMzA1MywxMyBAQCBldmFsdWF0 ZV9zdWJleHBfZm9yX3NpemVvZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MpCiAg Ci0gICAvKiBGaWd1cmUgb3V0IHRoZSBsb2NhbCBuYW1lIGFmdGVyIGltcG9ydC4gICovCi0tICBp bXBvcnRfYWxpYXMgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rICBpbXBvcnRfYWxpYXMgPSBk d2FyZjJfbmFtZShkaWUsIGN1KTsKKyAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CisgICAgICAgKCpw b3MpICs9IDQ7CistICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBFIChleHAt PmVsdHNbcGMgKyAyXS5zeW1ib2wpKTsKKy0gICAgICByZXR1cm4KKy0JdmFsdWVfZnJvbV9sb25n ZXN0IChzaXplX3R5cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOworKyAgICAgIC8q IFdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgcmVhZF92YXJfdmFsdWUgYnV0IHRoZSBvYmplY3QgZXZh bHVhdGlvbiBtYXkKKysJIG5lZWQgdG8gaGF2ZSBleGVjdXRlZCBvYmplY3RfYWRkcmVzc19zZXQg d2hpY2ggbmVlZHMgdmFsaWQKKysJIFNZTUJPTF9WQUxVRV9BRERSRVNTIG9mIHRoZSBzeW1ib2wu ICBTdGlsbCBWQUxVRSByZXR1cm5lZCBieQorKwkgcmVhZF92YXJfdmFsdWUgd2UgbGVmdCBhcyBs YXp5LiAgKi8KKysgICAgICB0eXBlID0gdmFsdWVfdHlwZSAocmVhZF92YXJfdmFsdWUgKGV4cC0+ ZWx0c1twYyArIDJdLnN5bWJvbCwKKysJCQkJCWRlcHJlY2F0ZWRfc2FmZV9nZXRfc2VsZWN0ZWRf ZnJhbWUgKCkpKTsKKysgICAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0IChzaXplX3R5cGUs IChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOwogIAotLSAgLyogRmlndXJlIG91dCB3aGVy ZSB0aGUgc3RhdGVtZW50IGlzIGJlaW5nIGltcG9ydGVkIHRvLiAgKi8KLSsgIAotKyAgLyogRGV0 ZXJtaW5lIHRoZSBsaW5lIG51bWJlciBhdCB3aGljaCB0aGUgaW1wb3J0IHdhcyBtYWRlICovCi0r ICBsaW5lX251bWJlciA9IGR3YXJmMl9yZWFkX2RlY2xfbGluZShkaWUsIGN1KTsKLSsgIAotKyAg LyogRmlndXJlIG91dCB3aGVyZSB0aGUgc3RhdGVtZW50IGlzIGJlaW5nIGltcG9ydGVkIHRvICov Ci0gICBpbXBvcnRfcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7CisgICAgIGRl ZmF1bHQ6CisgICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9z LCBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUyk7CitkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5oIGIv Z2RiL2YtbGFuZy5oCitpbmRleCBmNWJiODJkLi4yOWNmNWJhIDEwMDY0NAorLS0tIGEvZ2RiL2Yt bGFuZy5oCisrKysgYi9nZGIvZi1sYW5nLmgKK0BAIC0yOCw2ICsyOCwxMCBAQCBleHRlcm4gdm9p ZCBmX2Vycm9yIChjaGFyICopOwkvKiBEZWZpbmVkIGluIGYtZXhwLnkgKi8KKyBleHRlcm4gdm9p ZCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHVpX2Zp bGUgKiwgaW50LAorIAkJCSAgaW50KTsKICAKLSAgIC8qIEZpZ3VyZSBvdXQgd2hhdCB0aGUgc2Nv cGUgb2YgdGhlIGltcG9ydGVkIGRpZSBpcyBhbmQgcHJlcGVuZCBpdAotICAgICAgdG8gdGhlIG5h bWUgb2YgdGhlIGltcG9ydGVkIGRpZS4gICovCi0gICBpbXBvcnRlZF9uYW1lX3ByZWZpeCA9IGRl dGVybWluZV9wcmVmaXggKGltcG9ydGVkX2RpZSwgaW1wb3J0ZWRfY3UpOwotLQotLSAgaWYgKHN0 cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpID4gMCkKLS0gICAgewotLSAgICAgIGNhbm9uaWNh bF9uYW1lID0gYWxsb2NhIChzdHJsZW4gKGltcG9ydGVkX25hbWVfcHJlZml4KQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArIDIgKyBzdHJsZW4gKGltcG9ydGVkX25hbWUpICsgMSk7 Ci0rICAKLSsgIGlmKGltcG9ydGVkX2RpZS0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UpewotKyAg ICBpbXBvcnRlZF9kZWNsYXJhdGlvbiA9IGltcG9ydGVkX25hbWU7Ci0rICAgIGNhbm9uaWNhbF9u YW1lID0gKGNoYXIqKWltcG9ydGVkX25hbWVfcHJlZml4OwotKyAgfWVsc2V7Ci0rICAgIGlmKHN0 cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpID4gMCl7Ci0rICAgICAgY2Fub25pY2FsX25hbWUg PSBhbGxvY2EgKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpICsgMiArIHN0cmxlbiAoaW1w b3J0ZWRfbmFtZSkgKyAxKTsKLSAgICAgICBzdHJjcHkgKGNhbm9uaWNhbF9uYW1lLCBpbXBvcnRl ZF9uYW1lX3ByZWZpeCk7Ci0gICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgIjo6Iik7Ci0g ICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgaW1wb3J0ZWRfbmFtZSk7Ci1AQCAtMzQ2MSwx MCArMzgzNCwxMyBAQCByZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBjYW5vbmljYWxfbmFtZSA9IGFsbG9jYSAo c3RybGVuIChpbXBvcnRlZF9uYW1lKSArIDEpOwotICAgICAgIHN0cmNweSAoY2Fub25pY2FsX25h bWUsIGltcG9ydGVkX25hbWUpOwotICAgICB9CisrZXh0ZXJuIGNvbnN0IGNoYXIgKmZfb2JqZWN0 X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0KKysgIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7CisrZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRkcmVz c19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CisrCisgZXh0ZXJuIGlu dCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JF X0FERFIsCisgCQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50LAorIAkJCWNvbnN0IHN0cnVjdCB2YWx1 ZSAqLAorZGlmZiAtLWdpdCBhL2dkYi9mLXR5cGVwcmludC5jIGIvZ2RiL2YtdHlwZXByaW50LmMK K2luZGV4IGQzNWEyNTUuLmRlYzgxZDUgMTAwNjQ0CistLS0gYS9nZGIvZi10eXBlcHJpbnQuYwor KysrIGIvZ2RiL2YtdHlwZXByaW50LmMKK0BAIC0zMiw3ICszMiw3IEBACisgI2luY2x1ZGUgImdk YmNvcmUuaCIKKyAjaW5jbHVkZSAidGFyZ2V0LmgiCisgI2luY2x1ZGUgImYtbGFuZy5oIgogLQot KyAgfQotKyAgCi0gICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3VzaW5nIChpbXBvcnRfcHJl Zml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fub25pY2FsX25hbWUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfYWxpYXMsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRlZF9kZWNsYXJhdGlvbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfZGlyZWN0aXZlcyk7Ci0gfQorKyNpbmNs dWRlICJkd2FyZjJsb2MuaCIKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorICNpbmNsdWRlIDxl cnJuby5oPgogIAotQEAgLTM3MzQsNiArNDExMCwxNCBAQCBpbmhlcml0X2Fic3RyYWN0X2RpZXMg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHI7CitAQCAtNDksNiArNDksMzQgQEAgdm9pZCBmX3R5cGVfcHJpbnRfdmFy c3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosCisgdm9pZCBmX3R5 cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQp OworIAwKICAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hYnN0cmFjdF9vcmln aW4sIGN1KTsKLSsgIAotKyAgLyogR0NDIDQuMyBpbmNvcnJlY3RseSB1c2VzIERXX0FUX3NwZWNp ZmljYXRpb24gdG8gaW5kaWNhdGUgZGllIGluaGVyaXRlbmNlCi0rICAgICBpbiB0aGUgY2FzZSBv ZiBpbXBvcnQgc3RhdGVtZW50cy4gVGhlIGZvbGxvd2luZyBpcyB0byBhY2NvbW1vZGF0ZSAKLSsg ICAgIHRoYXQuICAqLwotKyAgaWYoIWF0dHIpewotKyAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRp ZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3UpOwotKyAgfQotKyAgCi0gICBpZiAoIWF0dHIpCi0g ICAgIHJldHVybjsKKytjb25zdCBjaGFyICoKKytmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRf cHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCQkJCSAgICAgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSkKKyt7CisrICBjb25zdCBjaGFyICptc2c7CisrCisrICBtc2cgPSBvYmpl Y3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSk7CisrICBpZiAobXNnICE9IE5VTEwpCisr ICAgIHsKKysgICAgICAvKiBBc3N1bWluZyB0aGUgY29udGVudCBwcmludGVkIHRvIFNUUkVBTSBz aG91bGQgbm90IGJlIGxvY2FsaXplZC4gICovCisrICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiPCVzPiIsIG1zZyk7CisrICAgIH0KKysKKysgIHJldHVybiBtc2c7CisrfQorKworK3Zv aWQKKytmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHN0cnVjdCB0eXBlICp0 eXBlKQorK3sKKysgIGNvbnN0IGNoYXIgKm1zZzsKKysKKysgIG1zZyA9IG9iamVjdF9hZGRyZXNz X2RhdGFfbm90X3ZhbGlkICh0eXBlKTsKKysgIGlmIChtc2cgIT0gTlVMTCkKKysgICAgeworKyAg ICAgIGVycm9yIChfKCJDYW5ub3QgYWNjZXNzIGl0IGJlY2F1c2UgdGhlICVzLiIpLCBfKG1zZykp OworKyAgICB9CisrfQorKworIC8qIExFVkVMIGlzIHRoZSBkZXB0aCB0byBpbmRlbnQgbGluZXMg YnkuICAqLwogIAotQEAgLTM4MzIsNiArNDIxNiw3IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgY2hhciAqbmFtZTsKLSAg IENPUkVfQUREUiBiYXNlYWRkcjsKLSAgIHN0cnVjdCBibG9jayAqYmxvY2s7Ci0rICB1bnNpZ25l ZCBkaWVfY2hpbGRyZW4gPSAwOwotICAgaW50IGlubGluZWRfZnVuYyA9IChkaWUtPnRhZyA9PSBE V19UQUdfaW5saW5lZF9zdWJyb3V0aW5lKTsKLSAKLSAgIGlmIChpbmxpbmVkX2Z1bmMpCi1AQCAt Mzg1MCwxMyArNDIzNSwyMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAKLSAgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZp bGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwotIAotLSAgbmFt ZSA9IGR3YXJmMl9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwotKyAgbmFtZSA9IGR3YXJmMl9uYW1l IChkaWUsIGN1KTsKLSAKLSAgIC8qIElnbm9yZSBmdW5jdGlvbnMgd2l0aCBtaXNzaW5nIG9yIGVt cHR5IG5hbWVzIGFuZCBmdW5jdGlvbnMgd2l0aAotICAgICAgbWlzc2luZyBvciBpbnZhbGlkIGxv dyBhbmQgaGlnaCBwYyBhdHRyaWJ1dGVzLiAgKi8KLS0gIGlmIChuYW1lID09IE5VTEwgfHwgIWR3 YXJmMl9nZXRfcGNfYm91bmRzIChkaWUsICZsb3dwYywgJmhpZ2hwYywgY3UsIE5VTEwpKQotKyAg aWYgKG5hbWUgPT0gTlVMTCB8fCAhZHdhcmYyX2dldF9wY19ib3VuZHMgKGRpZSwgJmxvd3BjLCAm aGlnaHBjLCBjdSwgTlVMTCkpewotKyAgICAvKiBleHBsb3JlIGFic3RyYWN0IG9yaWdpbnMgaWYg cHJlc2VudC4gVGhleSBtaWdodCBjb250YWluIHVzZWZ1bCBpbmZvcm1hdGlvbgotKyAgICAgc3Vj aCBhcyBpbXBvcnQgc3RhdGVtZW50cy4gKi8KLSsgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsK LSsgICAgd2hpbGUgKGNoaWxkX2RpZSAmJiBjaGlsZF9kaWUtPnRhZykKLSsgICAgICB7Ci0rCWNo aWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOwotKwlkaWVfY2hpbGRyZW4rKzsKLSsg ICAgICB9Ci0rICAgIGluaGVyaXRfYWJzdHJhY3RfZGllcyhkaWUsIGN1KTsKLSAgICAgcmV0dXJu OwotLQotKyAgfQotKyAgCi0gICBsb3dwYyArPSBiYXNlYWRkcjsKLSAgIGhpZ2hwYyArPSBiYXNl YWRkcjsKKyB2b2lkCitAQCAtNTgsNiArODYsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisg ICBlbnVtIHR5cGVfY29kZSBjb2RlOworICAgaW50IGRlbWFuZ2xlZF9hcmdzOwogIAotQEAgLTM4 ODMsMTQgKzQyNzgsMTkgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCisrICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlk X3ByaW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQorKyAgICByZXR1cm47Cisr CisgICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93LCBsZXZlbCk7CisgICBj b2RlID0gVFlQRV9DT0RFICh0eXBlKTsKKyAgIGlmICgodmFyc3RyaW5nICE9IE5VTEwgJiYgKnZh cnN0cmluZyAhPSAnXDAnKQorQEAgLTE2NSw2ICsxOTYsOSBAQCBmX3R5cGVfcHJpbnRfdmFyc3Bl Y19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogIAot ICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmbG9jYWxfc3ltYm9sczsKKyAgIFFVSVQ7CiAgCi0tICBp ZiAoZGllLT5jaGlsZCAhPSBOVUxMKQotKyAgc3dpdGNoIChjdS0+bGFuZ3VhZ2UpCisrICBpZiAo VFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfVFlQRURFRikKKysgICAgQ0hFQ0tfVFlQRURF RiAodHlwZSk7CisrCisgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCiAgICAgIHsKLS0gICAg ICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwotLSAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hp bGRfZGllLT50YWcpCi0tCXsKLS0JICBwcm9jZXNzX2RpZSAoY2hpbGRfZGllLCBjdSk7Ci0tCSAg Y2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7Ci0tCX0KLSsgICAgY2FzZSBsYW5n dWFnZV9mb3J0cmFuOgotKyAgICAgIGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZSA9 IE5VTEw7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6 CitkaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKK2luZGV4 IDg1ZjY5OGQuLjJmNzJiOTcgMTAwNjQ0CistLS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9n ZGIvZi12YWxwcmludC5jCitAQCAtNTQsMTUgKzU0LDE3IEBAIGludCBmNzdfYXJyYXlfb2Zmc2V0 X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07CisgLyogVGhlIGZvbGxvd2luZyBtYWNybyBn aXZlcyB1cyB0aGUgc2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCisgICAgbiBpcyAx IGJhc2VkLiAqLworIAorLSNkZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJyYXlfb2Zmc2V0 X3RibFtuXVsxXSkKKysjZGVmaW5lIEY3N19ESU1fQ09VTlQobikgKGY3N19hcnJheV9vZmZzZXRf dGJsW25dWzFdKQorIAorLS8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIG9mZnNldCBmb3Ig cm93IG4gd2hlcmUgbiBpcyAxLWJhc2VkLiAqLworKy8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMg dGhlIGVsZW1lbnQgc2l6ZSBmb3Igcm93IG4gd2hlcmUgbiBpcyAxLWJhc2VkLiAqLworIAorLSNk ZWZpbmUgRjc3X0RJTV9PRkZTRVQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQorKyNk ZWZpbmUgRjc3X0RJTV9CWVRFX1NUUklERShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0p CisgCisgaW50CisgZjc3X2dldF9sb3dlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyB7Cisr ICBmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHR5cGUpOwogKwotKyAgY2hp bGRfZGllID0gZGllLT5jaGlsZDsKLSsgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50 YWcpCi0rICAgIHsKLSsgICAgICBwcm9jZXNzX2RpZSAoY2hpbGRfZGllLCBjdSk7Ci0rICAgICAg Y2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7Ci0rICAgICAgZGllX2NoaWxkcmVu Kys7CisgICBpZiAoVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQgKHR5cGUpKQor ICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQgbWF5IG5vdCBiZSAnKicgaW4gRjc3IikpOworIAor QEAgLTcyLDE0ICs3NCwxNyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBl KQorIGludAorIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCisgeworKyAg Zl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBlKTsKKysKKyAgIGlmIChU WVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCisgICAgIHsKKy0gICAg ICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSBvbiBvdXIgaGFuZHMuICBBc3N1bWUg dGhhdAorLQkgdXBwZXJfYm91bmQgPT0gbG93ZXJfYm91bmQgc28gdGhhdCB3ZSBzaG93IGF0IGxl YXN0IDEgZWxlbWVudC4KKy0JIElmIHRoZSB1c2VyIHdhbnRzIHRvIHNlZSBtb3JlIGVsZW1lbnRz LCBsZXQgaGltIG1hbnVhbGx5IGFzayBmb3IgJ2VtCistCSBhbmQgd2UnbGwgc3Vic2NyaXB0IHRo ZSBhcnJheSBhbmQgc2hvdyBoaW0uICAqLworKyAgICAgIC8qIFdlIGhhdmUgYW4gYXNzdW1lZCBz aXplIGFycmF5IG9uIG91ciBoYW5kcy4gIEFzIHR5cGVfbGVuZ3RoX2dldAorKwkgYWxyZWFkeSBh c3N1bWVzIGEgbGVuZ3RoIHplcm8gb2YgYXJyYXlzIHdpdGggdW5kZXJmaW5lZCBib3VuZHMgVkFM QUREUgorKwkgcGFzc2VkIHRvIHRoZSBGb3J0cmFuIGZ1bmN0aW9ucyBkb2VzIG5vdCBjb250YWlu ZWQgdGhlIHJlYWwgaW5mZXJpb3IKKysJIG1lbW9yeSBjb250ZW50LiAgVXNlciBzaG91bGQgcmVx dWVzdCBwcmludGluZyBvZiBzcGVjaWZpYyBhcnJheQorKwkgZWxlbWVudHMgaW5zdGVhZC4gICov CisgCistICAgICAgcmV0dXJuIGY3N19nZXRfbG93ZXJib3VuZCAodHlwZSk7CisrICAgICAgcmV0 dXJuIGY3N19nZXRfbG93ZXJib3VuZCAodHlwZSkgLSAxOwogICAgICB9CiAgCi0gICBpbmhlcml0 X2Fic3RyYWN0X2RpZXMgKGRpZSwgY3UpOwotQEAgLTM5MDYsNiArNDMwNiwxMyBAQCByZWFkX2Z1 bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAJ CQlkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1KSwKLSAJCQlwcm9jZXNzaW5nX2hhc19uYW1lc3Bh Y2VfaW5mbyk7CisgICByZXR1cm4gVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9WQUxVRSAodHlwZSk7 CitAQCAtMTM0LDI0ICsxMzksMjkgQEAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90Ymwg KHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorICAgICAgIHVwcGVy ID0gZjc3X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7CisgICAgICAgbG93ZXIgPSBmNzdfZ2V0 X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKICAKLSsgIHN3aXRjaCAoY3UtPmxhbmd1YWdlKQotKyAg ICB7Ci0rICAgIGNhc2UgbGFuZ3VhZ2VfZm9ydHJhbjoKLSsgICAgICBCTE9DS19GT1JUUkFOX1VT RSAoYmxvY2spID0gY3UtPmxhbmd1YWdlX3NwZWNpZmljLmZvcnRyYW4udXNlOwotKyAgICAgIGJy ZWFrOwotKyAgICB9CistICAgICAgRjc3X0RJTV9TSVpFIChuZGltZW4pID0gdXBwZXIgLSBsb3dl ciArIDE7CisrICAgICAgRjc3X0RJTV9DT1VOVCAobmRpbWVuKSA9IHVwcGVyIC0gbG93ZXIgKyAx OwogKwotICAgLyogSWYgd2UgaGF2ZSBhZGRyZXNzIHJhbmdlcywgcmVjb3JkIHRoZW0uICAqLwot ICAgZHdhcmYyX3JlY29yZF9ibG9ja19yYW5nZXMgKGRpZSwgYmxvY2ssIGJhc2VhZGRyLCBjdSk7 Ci0gICAKLUBAIC00NTI0LDcgKzQ5MzEsNyBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmll bGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLSAJcmV0dXJuOworKyAgICAgIEY3 N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPQorKyAgICAgICAgVFlQRV9BUlJBWV9CWVRFX1NU UklERV9WQUxVRSAodG1wX3R5cGUpOworIAorICAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRf VFlQRSAodG1wX3R5cGUpOworICAgICAgIG5kaW1lbisrOworICAgICB9CiAgCi0gICAgICAgLyog R2V0IHBoeXNpY2FsIG5hbWUuICAqLwotLSAgICAgIHBoeXNuYW1lID0gZHdhcmYyX2xpbmthZ2Vf bmFtZSAoZGllLCBjdSk7Ci0rICAgICAgcGh5c25hbWUgPSAoY2hhciAqKSBkd2FyZjJfcGh5c25h bWUgKGZpZWxkbmFtZSwgZGllLCBjdSk7CistICAvKiBOb3cgd2UgbXVsdGlwbHkgZWx0bGVuIGJ5 IGFsbCB0aGUgb2Zmc2V0cywgc28gdGhhdCBsYXRlciB3ZSAKKysgIC8qIE5vdyB3ZSBtdWx0aXBs eSBlbHRsZW4gYnkgYWxsIHRoZSBCWVRFX1NUUklERXMsIHNvIHRoYXQgbGF0ZXIgd2UKKyAgICAg IGNhbiBwcmludCBvdXQgYXJyYXkgZWxlbWVudHMgY29ycmVjdGx5LiAgVXAgdGlsbCBub3cgd2Ug CistICAgICBrbm93IGFuIG9mZnNldCB0byBhcHBseSB0byBnZXQgdGhlIGl0ZW0gYnV0IHdlIGFs c28gCisrICAgICBrbm93IGFuIGVsdGxlbiB0byBhcHBseSB0byBnZXQgdGhlIGl0ZW0gYnV0IHdl IGFsc28KKyAgICAgIGhhdmUgdG8ga25vdyBob3cgbXVjaCB0byBhZGQgdG8gZ2V0IHRvIHRoZSBu ZXh0IGl0ZW0gKi8KICAKLSAgICAgICAvKiBUaGUgbmFtZSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBh bG9uZyB3aXRoIHRoaXMgb2JqZmlsZSwgc28gd2UgZG9uJ3QKLSAJIG5lZWQgdG8gZHVwbGljYXRl IGl0IGZvciB0aGUgdHlwZS4gICovCi1AQCAtNDY4Niw3ICs1MDkzLDcgQEAgZHdhcmYyX2FkZF9t ZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAot ICAgICByZXR1cm47CisgICBuZGltZW4tLTsKKyAgIGVsdGxlbiA9IFRZUEVfTEVOR1RIICh0bXBf dHlwZSk7CistICBGNzdfRElNX09GRlNFVCAobmRpbWVuKSA9IGVsdGxlbjsKKysgIGlmIChGNzdf RElNX0JZVEVfU1RSSURFIChuZGltZW4pID09IDApCisrICAgIEY3N19ESU1fQllURV9TVFJJREUg KG5kaW1lbikgPSBlbHRsZW47CisgICB3aGlsZSAoLS1uZGltZW4gPiAwKQorICAgICB7CistICAg ICAgZWx0bGVuICo9IEY3N19ESU1fU0laRSAobmRpbWVuICsgMSk7CistICAgICAgRjc3X0RJTV9P RkZTRVQgKG5kaW1lbikgPSBlbHRsZW47CisrICAgICAgZWx0bGVuICo9IEY3N19ESU1fQ09VTlQg KG5kaW1lbiArIDEpOworKyAgICAgIGlmIChGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID09 IDApCisrCUY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPSBlbHRsZW47CisgICAgIH0KKyB9 CiAgCi0gICAvKiBHZXQgdGhlIG1hbmdsZWQgbmFtZS4gICovCi0tICBwaHlzbmFtZSA9IGR3YXJm Ml9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwotKyAgcGh5c25hbWUgPSAoY2hhciAqKSBkd2FyZjJf cGh5c25hbWUgKGZpZWxkbmFtZSwgZGllLCBjdSk7CitAQCAtMTcyLDM0ICsxODIsMzQgQEAgZjc3 X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5 cGUsCiAgCi0gICAvKiBMb29rIHVwIG1lbWJlciBmdW5jdGlvbiBuYW1lIGluIGZpZWxkbGlzdC4g ICovCi0gICBmb3IgKGkgPSAwOyBpIDwgZmlwLT5uZm5maWVsZHM7IGkrKykKLUBAIC00OTkzLDE0 ICs1NDAwLDE4IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdl X2NwbHVzCi0gCSAgfHwgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEpCisgICBpZiAobnNz ICE9IG5kaW1lbnNpb25zKQorICAgICB7CistICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElN X1NJWkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7IGkrKykKKysgICAg ICBmb3IgKGkgPSAwOyAoaSA8IEY3N19ESU1fQ09VTlQgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlv bnMtPnByaW50X21heCk7IGkrKykKICAJewotLQkgIGNvbnN0IGNoYXIgKm5ld19wcmVmaXggPSBk ZXRlcm1pbmVfY2xhc3NfbmFtZSAoZGllLCBjdSk7Ci0tCSAgVFlQRV9UQUdfTkFNRSAodHlwZSkg PSAoY2hhciAqKSBuZXdfcHJlZml4OwotKwkgIFRZUEVfVEFHX05BTUUgKHR5cGUpID0gKGNoYXIg KikgZHdhcmYyX2Z1bGxfbmFtZSAobmFtZSwgZGllLCBjdSk7Ci0rCSAgaWYgKGRpZS0+dGFnID09 IERXX1RBR19zdHJ1Y3R1cmVfdHlwZQotKwkgICAgICB8fCBkaWUtPnRhZyA9PSBEV19UQUdfY2xh c3NfdHlwZSkKLSsJICAgIFRZUEVfTkFNRSAodHlwZSkgPSBUWVBFX1RBR19OQU1FICh0eXBlKTsK KyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOworIAkgIGY3N19wcmludF9hcnJh eV8xIChuc3MgKyAxLCBuZGltZW5zaW9ucywgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkJ ICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAorLQkJCSAgICAgYWRkcmVz cyArIGkgKiBGNzdfRElNX09GRlNFVCAobnNzKSwKKysJCQkgICAgIHZhbGFkZHIgKyBpICogRjc3 X0RJTV9CWVRFX1NUUklERSAobnNzKSwKKysJCQkgICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9C WVRFX1NUUklERSAobnNzKSwKKyAJCQkgICAgIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25z LCBlbHRzKTsKKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOwogIAl9Ci0gICAg ICAgZWxzZQorLSAgICAgIGlmICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9tYXggJiYgaSA8IEY3 N19ESU1fU0laRSAobnNzKSkgCisrICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21h eCAmJiBpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSkKKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiLi4uIik7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIGZvciAoaSA9IDA7IGkg PCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKKysg ICAgICBmb3IgKGkgPSAwOyBpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSAmJiAoKmVsdHMpIDwgb3B0 aW9ucy0+cHJpbnRfbWF4OworIAkgICBpKyssICgqZWx0cykrKykKICAJewotIAkgIC8qIFRoZSBu YW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpmaWxlLCBzbwotIAkg ICAgIHdlIGRvbid0IG5lZWQgdG8gZHVwbGljYXRlIGl0IGZvciB0aGUgdHlwZS4gICovCi0tCSAg VFlQRV9UQUdfTkFNRSAodHlwZSkgPSBuYW1lOwotKwkgIFRZUEVfVEFHX05BTUUgKHR5cGUpID0g KGNoYXIgKikgbmFtZTsKLSsJICBpZiAoZGllLT50YWcgPT0gRFdfVEFHX2NsYXNzX3R5cGUpCi0r CSAgICBUWVBFX05BTUUgKHR5cGUpID0gVFlQRV9UQUdfTkFNRSAodHlwZSk7CisgCSAgdmFsX3By aW50IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKKy0JCSAgICAgdmFsYWRkciArIGkgKiBGNzdf RElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAorKwkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1f QllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKKyAJCSAgICAgMCwKKy0JCSAgICAgYWRkcmVzcyAr IGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAorKwkJICAgICBhZGRyZXNzICsgaSAq IEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKKyAJCSAgICAgc3RyZWFtLCByZWN1 cnNlLCB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOworIAorLQkgIGlmIChpICE9IChG NzdfRElNX1NJWkUgKG5zcykgLSAxKSkKKysJICBpZiAoaSAhPSAoRjc3X0RJTV9DT1VOVCAobnNz KSAtIDEpKQorIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLCAiKTsKKyAKKyAJICBp ZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCistCSAgICAgICYmIChpICE9IChG NzdfRElNX1NJWkUgKG5zcykgLSAxKSkpCisrCSAgICAgICYmIChpICE9IChGNzdfRElNX0NPVU5U IChuc3MpIC0gMSkpKQorIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CiAg CX0KICAgICAgfQorQEAgLTI1Niw2ICsyNjYsOSBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAorICAg Q09SRV9BRERSIGFkZHI7CisgICBpbnQgaW5kZXg7CiAgCi1AQCAtNTIxOSw3ICs1NjMwLDcgQEAg cmVhZF9lbnVtZXJhdGlvbl90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0gICB0eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7Ci0gCi0gICBUWVBFX0NP REUgKHR5cGUpID0gVFlQRV9DT0RFX0VOVU07Ci0tICBuYW1lID0gZHdhcmYyX2Z1bGxfbmFtZSAo ZGllLCBjdSk7Ci0rICBuYW1lID0gZHdhcmYyX2Z1bGxfbmFtZSAoTlVMTCwgZGllLCBjdSk7Ci0g ICBpZiAobmFtZSAhPSBOVUxMKQotICAgICBUWVBFX1RBR19OQU1FICh0eXBlKSA9IChjaGFyICop IG5hbWU7CisrICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVh bSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQorKyAgICByZXR1cm4gMDsKKysKKyAgIENIRUNLX1RZ UEVERUYgKHR5cGUpOworICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQorICAgICB7CitkaWZm IC0tZ2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKK2luZGV4IGUwY2ExMmMuLmRl NjMxMWEgMTAwNjQ0CistLS0gYS9nZGIvZmluZHZhci5jCisrKysgYi9nZGIvZmluZHZhci5jCitA QCAtMzUsNiArMzUsNyBAQAorICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKyAjaW5jbHVkZSAiYmxv Y2suaCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKysjaW5jbHVkZSAiZHdhcmYybG9jLmgiCiAg Ci1AQCAtNTI0NCw1MSArNTY1NSw2IEBAIHJlYWRfZW51bWVyYXRpb25fdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgcmV0dXJuIHNldF9kaWVfdHlw ZSAoZGllLCB0eXBlLCBjdSk7Ci0gfQorIC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMu ICBBbGwgJ2V4dHJhY3QnIGZ1bmN0aW9ucyByZXR1cm4gYQorICAgIGhvc3QtZm9ybWF0IGludGVn ZXIgZnJvbSBhIHRhcmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNoIGlzCitAQCAtNDAx LDI3ICs0MDIsMTYgQEAgc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHN0cnVjdCBzeW1ib2wgKnN5 bSkKKyAvKiBHaXZlbiBhIHN0cnVjdCBzeW1ib2wgZm9yIGEgdmFyaWFibGUsCisgICAgYW5kIGEg c3RhY2sgZnJhbWUgaWQsIHJlYWQgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZQorICAgIGFuZCBy ZXR1cm4gYSAocG9pbnRlciB0byBhKSBzdHJ1Y3QgdmFsdWUgY29udGFpbmluZyB0aGUgdmFsdWUu IAorLSAgIElmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgZm91bmQsIHJldHVybiBhIHplcm8gcG9p bnRlci4gICovCisrICAgSWYgdGhlIHZhcmlhYmxlIGNhbm5vdCBiZSBmb3VuZCwgcmV0dXJuIGEg emVybyBwb2ludGVyLgorKyAgIFdlIGhhdmUgdG8gZmlyc3QgZmluZCB0aGUgYWRkcmVzcyBvZiB0 aGUgdmFyaWFibGUgYmVmb3JlIGFsbG9jYXRpbmcgc3RydWN0CisrICAgdmFsdWUgdG8gcmV0dXJu IGFzIGl0cyBzaXplIG1heSBkZXBlbmQgb24gRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBwb3Nz aWJseQorKyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLwogIAotLS8qIERldGVybWluZSB0aGUgbmFt ZSBvZiB0aGUgdHlwZSByZXByZXNlbnRlZCBieSBESUUsIHdoaWNoIHNob3VsZCBiZQotLSAgIGEg bmFtZWQgQysrIG9yIEphdmEgY29tcG91bmQgdHlwZS4gIFJldHVybiB0aGUgbmFtZSBpbiBxdWVz dGlvbiwKLS0gICBhbGxvY2F0ZWQgb24gdGhlIG9iamZpbGUgb2JzdGFjay4gICovCi0tCi0tc3Rh dGljIGNvbnN0IGNoYXIgKgotLWRldGVybWluZV9jbGFzc19uYW1lIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0tewotLSAgY29uc3QgY2hhciAqbmV3X3ByZWZp eCA9IE5VTEw7Cisgc3RydWN0IHZhbHVlICoKKyByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJv bCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgeworLSAgc3RydWN0IHZhbHVlICp2 OworICAgc3RydWN0IHR5cGUgKnR5cGUgPSBTWU1CT0xfVFlQRSAodmFyKTsKKyAgIENPUkVfQURE UiBhZGRyOworLSAgaW50IGxlbjsKIC0KLS0gIC8qIElmIHdlIGRvbid0IGhhdmUgbmFtZXNwYWNl IGRlYnVnIGluZm8sIGd1ZXNzIHRoZSBuYW1lIGJ5IHRyeWluZwotLSAgICAgdG8gZGVtYW5nbGUg dGhlIG5hbWVzIG9mIG1lbWJlcnMsIGp1c3QgbGlrZSB3ZSBkaWQgaW4KLS0gICAgIGd1ZXNzX3N0 cnVjdHVyZV9uYW1lLiAgKi8KLS0gIGlmICghcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8p CistICBpZiAoU1lNQk9MX0NMQVNTICh2YXIpID09IExPQ19DT01QVVRFRAorLSAgICAgIHx8IFNZ TUJPTF9DTEFTUyAodmFyKSA9PSBMT0NfUkVHSVNURVIpCistICAgIC8qIFRoZXNlIGNhc2VzIGRv IG5vdCB1c2UgVi4gICovCistICAgIHYgPSBOVUxMOworLSAgZWxzZQogLSAgICB7Ci0tICAgICAg c3RydWN0IGRpZV9pbmZvICpjaGlsZDsKLS0KLS0gICAgICBmb3IgKGNoaWxkID0gZGllLT5jaGls ZDsKLS0JICAgY2hpbGQgIT0gTlVMTCAmJiBjaGlsZC0+dGFnICE9IDA7Ci0tCSAgIGNoaWxkID0g c2libGluZ19kaWUgKGNoaWxkKSkKLS0JewotLQkgIGlmIChjaGlsZC0+dGFnID09IERXX1RBR19z dWJwcm9ncmFtKQotLQkgICAgewotLQkgICAgICBjaGFyICpwaHlzX3ByZWZpeAotLQkJPSBsYW5n dWFnZV9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGN1LT5sYW5ndWFnZV9kZWZuLAotLQkJCQkJ CSAgICAgZHdhcmYyX2xpbmthZ2VfbmFtZQotLQkJCQkJCSAgICAgKGNoaWxkLCBjdSkpOwotLQot LQkgICAgICBpZiAocGh5c19wcmVmaXggIT0gTlVMTCkKLS0JCXsKLS0JCSAgbmV3X3ByZWZpeAot LQkJICAgID0gb2JzYXZlc3RyaW5nIChwaHlzX3ByZWZpeCwgc3RybGVuIChwaHlzX3ByZWZpeCks Ci0tCQkJCSAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0tCQkgIHhmcmVlIChw aHlzX3ByZWZpeCk7Ci0tCQkgIGJyZWFrOwotLQkJfQotLQkgICAgfQotLQl9CistICAgICAgdiA9 IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKy0gICAgICBWQUxVRV9MVkFMICh2KSA9IGx2YWxfbWVt b3J5OwkvKiBUaGUgbW9zdCBsaWtlbHkgcG9zc2liaWxpdHkuICAqLwogLSAgICB9CiAtCi0tICBp ZiAobmV3X3ByZWZpeCA9PSBOVUxMKQotLSAgICBuZXdfcHJlZml4ID0gZHdhcmYyX2Z1bGxfbmFt ZSAoZGllLCBjdSk7Ci0tCi0tICByZXR1cm4gbmV3X3ByZWZpeDsKLS19Ci0tCi0gLyogR2l2ZW4g YSBwb2ludGVyIHRvIGEgZGllIHdoaWNoIGJlZ2lucyBhbiBlbnVtZXJhdGlvbiwgcHJvY2VzcyBh bGwKLSAgICB0aGUgZGllcyB0aGF0IGRlZmluZSB0aGUgbWVtYmVycyBvZiB0aGUgZW51bWVyYXRp b24sIGFuZCBjcmVhdGUgdGhlCi0gICAgc3ltYm9sIGZvciB0aGUgZW51bWVyYXRpb24gdHlwZS4K LUBAIC01MzY2LDYgKzU3MzIsMjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgbmV3X3N5bWJvbCAoZGll LCB0aGlzX3R5cGUsIGN1KTsKLSB9Ci0gCi0rLyogQ3JlYXRlIGEgbmV3IGFycmF5IGRpbWVuc2lv biByZWZlcmVuY2luZyBpdHMgdGFyZ2V0IHR5cGUgVFlQRS4KLSsKLSsgICBNdWx0aWRpbWVuc2lv bmFsIGFycmF5cyBhcmUgaW50ZXJuYWxseSByZXByZXNlbnRlZCBhcyBhIHN0YWNrIG9mCi0rICAg c2luZ2xlZGltZW5zaW9uYWwgYXJyYXlzIGJlaW5nIHJlZmVyZW5jZWQgYnkgdGhlaXIgVFlQRV9U QVJHRVRfVFlQRS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB0eXBlICoKLStjcmVhdGVfc2luZ2xl X2FycmF5X2RpbWVuc2lvbiAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyYW5nZV90 eXBlLAotKwkJCSAgICAgICBzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0rewotKyAgdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90 eXBlKTsKLSsKLSsgIC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUg ZmV0Y2hlZCBieQotKyAgICAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIDxtdWx0aV9mNzdfc3Vi c2NyaXB0PidzIGNhbGwgb2YKLSsgICAgIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSBvbmx5IGZv ciB0aGUgaW5uZXJtb3N0IGFycmF5IHR5cGUuICAqLwotKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMg KGRpZSwgdHlwZSwgY3UpOwotKwotKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMg YXJlIGNoZWNrZWQgZm9yIGFsbG9jYXRlZC9hc3NvY2lhdGVkCi0rICAgICB2YWxpZGl0eSB3aGls ZSBhY2Nlc3NpbmcgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0suICAqLwotKyAgZmV0Y2hfZGll X3R5cGVfYXR0cnMgKGRpZSwgcmFuZ2VfdHlwZSwgY3UpOwotKwotKyAgcmV0dXJuIHR5cGU7Ci0r fQotKwotIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19UQUdfYXJyYXlfdHlw ZSBESUUgYW5kIHB1dCBpdCBpbgotICAgIHRoZSBESUUncyB0eXBlIGZpZWxkLiAgRm9yIG5vdywg dGhpcyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCi0gICAgYXJyYXlzLiAgKi8KLUBAIC01 Mzc5LDcgKzU3NjgsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUsICpyYW5n ZV90eXBlLCAqaW5kZXhfdHlwZTsKLSAgIHN0cnVjdCB0eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxM OwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIGludCBuZGltID0gMDsKLSsgIGludCBu ZGltID0gMCwgaTsKLSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotICAgY2hhciAqbmFtZTsK Ky0gIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKICAKLUBAIC01NDI2LDE2ICs1ODE1LDExIEBA IHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQotICAgdHlwZSA9IGVsZW1lbnRfdHlwZTsKKyAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19m cmFtZSAodmFyKSkKKyAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOworQEAgLTQyOSwzMyArNDE5LDQz IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSkKKyAgIHN3aXRjaCAoU1lNQk9MX0NMQVNTICh2YXIpKQorICAgICB7CisgICAgIGNh c2UgTE9DX0NPTlNUOgorLSAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQg Zm9ybWF0LiAgKi8KKy0gICAgICBzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNf cmF3ICh2KSwgbGVuLAorLQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2gg KHR5cGUpKSwKKy0JCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7CistICAgICAg VkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7Cisr CS8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KKysJc3RydWN0 IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKwlWQUxVRV9MVkFMICh2KSA9IG5v dF9sdmFsOworKwlzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNfcmF3ICh2KSwg VFlQRV9MRU5HVEggKHR5cGUpLAorKwkJCSAgICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5 cGVfYXJjaCAodHlwZSkpLAorKwkJCSAgICAgIChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZhcikp OworKwlyZXR1cm4gdjsKKysgICAgICB9CiAgCi0gICBpZiAocmVhZF9hcnJheV9vcmRlciAoZGll LCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKLS0gICAgewotLSAgICAgIGludCBpID0gMDsKLS0g ICAgICB3aGlsZSAoaSA8IG5kaW0pCi0tCXR5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwg dHlwZSwgcmFuZ2VfdHlwZXNbaSsrXSk7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAgewotLSAgICAg IHdoaWxlIChuZGltLS0gPiAwKQotLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5 cGUsIHJhbmdlX3R5cGVzW25kaW1dKTsKLS0gICAgfQotKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRp bTsgaSsrKQotKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAodHlw ZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOwotKyAgZWxzZSAvKiAocmVhZF9hcnJheV9vcmRl ciAoZGllLCBjdSkgPT0gRFdfT1JEX3Jvd19tYWpvcikgKi8KLSsgICAgZm9yIChpID0gbmRpbSAt IDE7IGkgPj0gMDsgaS0tKQotKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVu c2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOworICAgICBjYXNlIExPQ19MQUJF TDoKKy0gICAgICAvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICov CistICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQorLQl7CistCSAgQ09SRV9BRERSIGFkZHIK Ky0JICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xfVkFMVUVfQUREUkVTUyAo dmFyKSwKKy0JCQkJCVNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7CisrICAgICAgeworKwkvKiBQ dXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCisrCXN0cnVjdCB2YWx1 ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKysJVkFMVUVfTFZBTCAodikgPSBub3RfbHZh bDsKKysJaWYgKG92ZXJsYXlfZGVidWdnaW5nKQorKwkgIHsKKysJICAgIENPUkVfQUREUiBhZGRy CisrCSAgICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xfVkFMVUVfQUREUkVT UyAodmFyKSwKKysJCQkJCSAgU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKTsKICAKLSAgIC8qIFVu ZGVyc3RhbmQgRHdhcmYyIHN1cHBvcnQgZm9yIHZlY3RvciB0eXBlcyAobGlrZSB0aGV5IG9jY3Vy IG9uCi0gICAgICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0IGFkZHMgYW5vdGhl ciBhdHRyaWJ1dGUgdG8gdGhlCi1AQCAtNTYyNCw3ICs2MDA4LDcgQEAgcmVhZF9uYW1lc3BhY2Ug KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBpZiAo aXNfYW5vbnltb3VzKQotIAl7Ci0gCSAgY29uc3QgY2hhciAqcHJldmlvdXNfcHJlZml4ID0gZGV0 ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7Ci0tCSAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAocHJl dmlvdXNfcHJlZml4LCBUWVBFX05BTUUgKHR5cGUpLCBOVUxMKTsKLSsJICBjcF9hZGRfdXNpbmdf ZGlyZWN0aXZlIChwcmV2aW91c19wcmVmaXgsIFRZUEVfTkFNRSAodHlwZSksIE5VTEwsICIiLCBk d2FyZjJfcmVhZF9kZWNsX2xpbmUoZGllLCBjdSkpOwotIAl9Ci0gICAgIH0KKy0JICBzdG9yZV90 eXBlZF9hZGRyZXNzICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLCBhZGRyKTsKKy0JfQor LSAgICAgIGVsc2UKKy0Jc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2 KSwgdHlwZSwKKy0JCQkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSk7CistICAgICAg VkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKy0gICAgICByZXR1cm4gdjsKKysJICAgIHN0b3Jl X3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUsIGFkZHIpOworKwkg IH0KKysJZWxzZQorKwkgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAo diksIHR5cGUsCisrCQkJCVNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpKTsKKysJcmV0dXJuIHY7 CisrICAgICAgfQogIAotQEAgLTU2NDAsMjAgKzYwMjQsMTU1IEBAIHJlYWRfbmFtZXNwYWNlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgIH0KLSB9Cisg ICAgIGNhc2UgTE9DX0NPTlNUX0JZVEVTOgorLSAgICAgIG1lbWNweSAodmFsdWVfY29udGVudHNf cmF3ICh2KSwgU1lNQk9MX1ZBTFVFX0JZVEVTICh2YXIpLCBsZW4pOworLSAgICAgIFZBTFVFX0xW QUwgKHYpID0gbm90X2x2YWw7CistICAgICAgcmV0dXJuIHY7CisrICAgICAgeworKwlzdHJ1Y3Qg dmFsdWUgKnYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrCVZBTFVFX0xWQUwgKHYpID0gbm90 X2x2YWw7CisrCW1lbWNweSAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgU1lNQk9MX1ZBTFVFX0JZ VEVTICh2YXIpLAorKwkJVFlQRV9MRU5HVEggKHR5cGUpKTsKKysJcmV0dXJuIHY7CisrICAgICAg fQogIAotLS8qIFJlYWQgYSBGb3J0cmFuIG1vZHVsZS4gICovCi0rLyogUmVhZCBhIEZvcnRyYW4g bW9kdWxlIGFzIGdsb2JhbCBzeW1ib2wgd2hpY2ggY2FuIGJlIGxhdGVyIGxvb2tlZCB1cCBieQot KyAgIGZfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICovCisgICAgIGNhc2UgTE9DX1NUQVRJQzoK KyAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCitAQCAtNDk2LDEyICs0OTYsMjMgQEAgcmVh ZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l KQorICAgICAgIGJyZWFrOwogIAotIHN0YXRpYyB2b2lkCi0gcmVhZF9tb2R1bGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBzdHJ1Y3QgZGllX2lu Zm8gKmNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsKLSsg IHR5cGUgPSByZWFkX21vZHVsZV90eXBlIChkaWUsIGN1KTsKLSsKLSsgIGlmICh0eXBlKQotKyAg ICBuZXdfc3ltYm9sIChkaWUsIHR5cGUsIGN1KTsKLSt9Ci0rCi0rLyogUmVhZCBhIEZvcnRyYW4g bW9kdWxlIGFzIHR5cGUuCi0rCi0rICAgTW9kdWxlcyBwcmVzZW50IG9ubHkgYXMgZGVjbGFyYXRp b25zIC0gYmVpbmcgdXNlZCBvbmx5IGZvciBEV19BVF9pbXBvcnQgb2YKLSsgICBEV19UQUdfaW1w b3J0ZWRfbW9kdWxlIC0gYXJlIGlnbm9yZWQgaGVyZS4gIFRoZXkgYXJlIHJlYWQgaW4gb25seSBp biBmb3JtIG9mCi0rICAgdGhlIG1vZHVsZSBuYW1lIGJ5IHJlYWRfZm9ydHJhbl9pbXBvcnRlZF9t b2R1bGUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rcmVhZF9tb2R1bGVfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZpbGU7Ci0rICBzdHJ1Y3QgZGllX2luZm8gKmNo aWxkX2RpZTsKLSsgIHN0cnVjdCB0eXBlICp0eXBlOwotKyAgY2hhciAqbW9kdWxlX25hbWU7Ci0r ICBzdHJ1Y3QgY29udGV4dF9zdGFjayAqbmV3OwotKyAgc3RydWN0IHBlbmRpbmcgKnNhdmVfZmls ZV9zeW1ib2xzOwotKyAgc3RydWN0IHBlbmRpbmcgKnNhdmVfZ2xvYmFsX3N5bWJvbHM7Ci0rICBz dHJ1Y3QgcGVuZGluZyAqKnNhdmVfbGlzdF9pbl9zY29wZTsKLSsKLSsgIGlmIChkaWVfaXNfZGVj bGFyYXRpb24gKGRpZSwgY3UpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIG1vZHVsZV9uYW1l ID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotKyAgaWYgKCFtb2R1bGVfbmFtZSkKLSsgICAgY29t cGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJEV19UQUdfbW9kdWxlIGhhcyBubyBuYW1l LCBvZmZzZXQgMHgleCIpLAotKyAgICAgICAgICAgICAgIGRpZS0+b2Zmc2V0KTsKLSsgIHR5cGUg PSBpbml0X3R5cGUgKFRZUEVfQ09ERV9NT0RVTEUsIDAsIDAsIG1vZHVsZV9uYW1lLCBvYmpmaWxl KTsKLSsKLSsgIC8qIENyZWF0ZSBhIGNvbnRleHQgZm9yIHJlYWRpbmcgdGhlIG1vZHVsZSB2YXJp YWJsZXMuICAqLwotKwotKyAgbmV3ID0gcHVzaF9jb250ZXh0ICgwLCAwKTsKKyAgICAgY2FzZSBM T0NfQkxPQ0s6CistICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQorLQlzZXRfdmFsdWVfYWRk cmVzcyAodiwgc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCistCSAgKEJMT0NLX1NUQVJUIChTWU1C T0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpKTsKKy0gICAg ICBlbHNlCistCXNldF92YWx1ZV9hZGRyZXNzICh2LCBCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NL X1ZBTFVFICh2YXIpKSk7CistICAgICAgcmV0dXJuIHY7CisrICAgICAgeworKyAgICAgICAgQ09S RV9BRERSIGFkZHI7CisrCXN0cnVjdCB2YWx1ZSAqdjsKICsKLSsgIHNhdmVfZmlsZV9zeW1ib2xz ID0gZmlsZV9zeW1ib2xzOwotKyAgZmlsZV9zeW1ib2xzID0gTlVMTDsKLSsgIHNhdmVfZ2xvYmFs X3N5bWJvbHMgPSBnbG9iYWxfc3ltYm9sczsKLSsgIGdsb2JhbF9zeW1ib2xzID0gTlVMTDsKLSsg IHNhdmVfbGlzdF9pbl9zY29wZSA9IGN1LT5saXN0X2luX3Njb3BlOworKwlpZiAob3ZlcmxheV9k ZWJ1Z2dpbmcpCisrCSAgYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcworKwkgICAgKEJM T0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04g KHZhcikpOworKwllbHNlCisrCSAgYWRkciA9IEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFM VUUgKHZhcikpOworKwkvKiBBRERSIGlzIHNldCBoZXJlIGZvciBBTExPQ0FURV9WQUxVRSdzIENI RUNLX1RZUEVERUYgZm9yCisrCSAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworKwlv YmplY3RfYWRkcmVzc19zZXQgKGFkZHIpOworKwl2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwor KwlWQUxVRV9MVkFMICh2KSA9IGx2YWxfbWVtb3J5OworKwlzZXRfdmFsdWVfYWRkcmVzcyAodiwg YWRkcik7CisrCXJldHVybiB2OworKyAgICAgIH0KKyAKKyAgICAgY2FzZSBMT0NfUkVHSVNURVI6 CisgICAgIGNhc2UgTE9DX1JFR1BBUk1fQUREUjoKK0BAIC01MjAsNyArNTMxLDYgQEAgcmVhZF92 YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQor IAkgICAgICBlcnJvciAoXygiVmFsdWUgb2YgcmVnaXN0ZXIgdmFyaWFibGUgbm90IGF2YWlsYWJs ZS4iKSk7CiAgCi0tICAvKiBGSVhNRTogU3VwcG9ydCB0aGUgc2VwYXJhdGUgRm9ydHJhbiBtb2R1 bGUgbmFtZXNwYWNlcy4gICovCi0rICAvKiBQcm9jZXNzIHRoZSBjaGlsZCBESUVzLiAgKi8KKyAJ ICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWd2YWwpOworLQkgICAgVkFMVUVfTFZBTCAo dikgPSBsdmFsX21lbW9yeTsKKyAJICB9CisgCWVsc2UKKyAJICB7CitAQCAtNTYzLDE4ICs1NzMs MzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQorICAgICAgIGJyZWFrOwogIAotKyAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsK LSAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCi0gICAgIHsKLSsgICAgICAv KiBBbnkgRFdfVEFHX3N1YnByb2dyYW0gd2lsbCByZXNldCBMSVNUX0lOX1NDT1BFIHRvIExPQ0FM X1NZTUJPTFMuICAqLwotKyAgICAgIGN1LT5saXN0X2luX3Njb3BlID0gJmdsb2JhbF9zeW1ib2xz OworICAgICBjYXNlIExPQ19PUFRJTUlaRURfT1VUOgorLSAgICAgIFZBTFVFX0xWQUwgKHYpID0g bm90X2x2YWw7CistICAgICAgc2V0X3ZhbHVlX29wdGltaXplZF9vdXQgKHYsIDEpOworLSAgICAg IHJldHVybiB2OworKyAgICAgIHsKKysgICAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRl X3ZhbHVlICh0eXBlKTsKICsKLSAgICAgICBwcm9jZXNzX2RpZSAoY2hpbGRfZGllLCBjdSk7Ci0g ICAgICAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7CisrCVZBTFVFX0xWQUwg KHYpID0gbm90X2x2YWw7CisrCXNldF92YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2LCAxKTsKKysJcmV0 dXJuIHY7CisrICAgICAgfQorIAorICAgICBkZWZhdWx0OgorICAgICAgIGVycm9yIChfKCJDYW5u b3QgbG9vayB1cCB2YWx1ZSBvZiBhIGJvdGNoZWQgc3ltYm9sLiIpKTsKKyAgICAgICBicmVhazsK ICAgICAgfQorIAorLSAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOworLSAgc2V0X3ZhbHVl X2xhenkgKHYsIDEpOworLSAgcmV0dXJuIHY7CisrICB7CisrICAgIHN0cnVjdCB2YWx1ZSAqdjsK ICsKLSsgIC8qIEZpbmlzaCB0aGlzIG1vZHVsZSBhbmQgcmVzdG9yZSB0aGUgY29udGV4dC4gICov Ci0rCi0rICBUWVBFX01PRFVMRV9CTE9DSyAodHlwZSkgPSBmaW5pc2hfYmxvY2sgKE5VTEwsICZn bG9iYWxfc3ltYm9scywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbmV3LT5vbGRfYmxvY2tzLCAwLCAwLCBvYmpmaWxlKTsKKysgICAgLyogQUREUiBpcyBzZXQg aGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVGIGZvcgorKyAgICAgICBEV19P UF9QVVNIX09CSkVDVF9BRERSRVNTLiAgKi8KKysgICAgb2JqZWN0X2FkZHJlc3Nfc2V0IChhZGRy KTsKKysgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKysgICAgVkFMVUVfTFZBTCAodikg PSBsdmFsX21lbW9yeTsKKysgICAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOwogKwotKyAg aWYgKGZpbGVfc3ltYm9scykKLSsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBf KCJEV19UQUdfbW9kdWxlIGNvbnRhaW5zIHN0YXRpYyBzeW1ib2xzIikpOwotKyAgaWYgKGxvY2Fs X3N5bWJvbHMpCi0rICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiRFdfVEFH X21vZHVsZSBjb250YWlucyBsb2NhbCBzeW1ib2xzIikpOwotKyAgaWYgKHBhcmFtX3N5bWJvbHMp Ci0rICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiRFdfVEFHX21vZHVsZSBj b250YWlucyBmdW5jdGlvbiAiCi0rCQkJCSAgICAgICJwYXJhbWV0ZXJzIikpOworKyAgICBzZXRf dmFsdWVfbGF6eSAodiwgMSk7CiArCi0rICBmaWxlX3N5bWJvbHMgPSBzYXZlX2ZpbGVfc3ltYm9s czsKLSsgIGdsb2JhbF9zeW1ib2xzID0gc2F2ZV9nbG9iYWxfc3ltYm9sczsKLSsgIGN1LT5saXN0 X2luX3Njb3BlID0gc2F2ZV9saXN0X2luX3Njb3BlOworKyAgICByZXR1cm4gdjsKKysgIH0KKyB9 CisgCisgLyogSW5zdGFsbCBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHJlZ2lzdGVyIHZhbHVlcy4g ICovCitAQCAtNjExLDEwICs2MzYsMTEgQEAgc3RydWN0IHZhbHVlICoKKyB2YWx1ZV9mcm9tX3Jl Z2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lKQorIHsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2gg KGZyYW1lKTsKKy0gIHN0cnVjdCB0eXBlICp0eXBlMSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwor ICAgc3RydWN0IHZhbHVlICp2OworIAorLSAgaWYgKGdkYmFyY2hfY29udmVydF9yZWdpc3Rlcl9w IChnZGJhcmNoLCByZWdudW0sIHR5cGUxKSkKKysgIHR5cGUgPSBjaGVja190eXBlZGVmICh0eXBl KTsKICsKLSsgIHBvcF9jb250ZXh0ICgpOworKyAgaWYgKGdkYmFyY2hfY29udmVydF9yZWdpc3Rl cl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUpKQorICAgICB7CisgICAgICAgLyogVGhlIElTQS9B QkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5pbmcgdGhlCisgICAgICAgICAg c3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0IG1pZ2h0IG5lZWQgdG8KK0BA IC02MjgsNyArNjU0LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUs IGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgICAgICBWQUxVRV9GUkFN RV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKyAgICAgICBWQUxVRV9SRUdOVU0gKHYp ID0gcmVnbnVtOworICAgICAgIGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFsdWUgKGdkYmFyY2gsCist CQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlMSwgdmFsdWVfY29udGVudHNfcmF3ICh2KSk7CisrCQkJ CSBmcmFtZSwgcmVnbnVtLCB0eXBlLCB2YWx1ZV9jb250ZW50c19yYXcgKHYpKTsKKyAgICAgfQor ICAgZWxzZQorICAgICB7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnRocmVhZC5oIGIvZ2RiL2dkYnRo cmVhZC5oCitpbmRleCBjZDI0ZWFmLi45NjM4MzY4IDEwMDY0NAorLS0tIGEvZ2RiL2dkYnRocmVh ZC5oCisrKysgYi9nZGIvZ2RidGhyZWFkLmgKK0BAIC02Niw2ICs2Niw5IEBAIHN0cnVjdCB0aHJl YWRfaW5mbworICAgLyogU3RlcC1yZXN1bWUgb3IgbG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludC4g ICovCisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqc3RlcF9yZXN1bWVfYnJlYWtwb2ludDsKKyAKKysg IC8qIEV4Y2VwdGlvbi1yZXN1bWUgYnJlYWtwb2ludC4gICovCisrICBzdHJ1Y3QgYnJlYWtwb2lu dCAqZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50OwogKwotKyAgc2V0X2RpZV90eXBlIChkaWUs IHR5cGUsIGN1KTsKKyAgIC8qIFJhbmdlIHRvIHNpbmdsZSBzdGVwIHdpdGhpbi4KKyAKKyAgICAg IElmIHRoaXMgaXMgbm9uemVybywgcmVzcG9uZCB0byBhIHNpbmdsZS1zdGVwIHNpZ25hbCBieSBj b250aW51aW5nCitAQCAtMTg1LDYgKzE4OCwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KKyAgIC8q IFRydWUgaWYgdGhpcyB0aHJlYWQgaGFzIGJlZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgdG8gc3Rv cC4gICovCisgICBpbnQgc3RvcF9yZXF1ZXN0ZWQ7CisgCisrICAvKiBUaGUgaW5pdGlhdGluZyBm cmFtZSBvZiBhIG5leHRpbmcgb3BlcmF0aW9uLCB1c2VkIGZvciBkZWNpZGluZworKyAgICAgd2hp Y2ggZXhjZXB0aW9ucyB0byBpbnRlcmNlcHQuICAqLworKyAgc3RydWN0IGZyYW1lX2lkIGluaXRp YXRpbmdfZnJhbWU7CiArCi0rICByZXR1cm4gdHlwZTsKLSt9CisgICAvKiBQcml2YXRlIGRhdGEg dXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1lbnRhdGlvbi4gICovCisgICBzdHJ1Y3Qg cHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKKyAKK0BAIC0yMjEsNiArMjI4LDkgQEAgZXh0 ZXJuIHZvaWQgZGVsZXRlX3RocmVhZF9zaWxlbnQgKHB0aWRfdCk7CisgLyogRGVsZXRlIGEgc3Rl cF9yZXN1bWVfYnJlYWtwb2ludCBmcm9tIHRoZSB0aHJlYWQgZGF0YWJhc2UuICovCisgZXh0ZXJu IHZvaWQgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAq KTsKKyAKKysvKiBEZWxldGUgYW4gZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IGZyb20gdGhl IHRocmVhZCBkYXRhYmFzZS4gKi8KKytleHRlcm4gdm9pZCBkZWxldGVfZXhjZXB0aW9uX3Jlc3Vt ZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CiArCi0rLyogSW1wb3J0IGEgRm9y dHJhbiBtb2R1bGUuICBPbmx5IHN0b3JlIHRoZSBtb2R1bGUgbmFtZSBmb3IgaXRzIGxhdGVyIGxv b2t1cCBieQotKyAgIGZfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICovCisgLyogVHJhbnNsYXRl IHRoZSBpbnRlZ2VyIHRocmVhZCBpZCAoR0RCJ3MgaG9tZWdyb3duIGlkLCBub3QgdGhlIHN5c3Rl bSdzKQorICAgIGludG8gYSAicGlkIiAod2hpY2ggbWF5IGJlIG92ZXJsb2FkZWQgd2l0aCBleHRy YSB0aHJlYWQgaW5mb3JtYXRpb24pLiAgKi8KKyBleHRlcm4gcHRpZF90IHRocmVhZF9pZF90b19w aWQgKGludCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwor aW5kZXggNDQzZjZmNy4uZDg1MmExNCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysg Yi9nZGIvZ2RidHlwZXMuYworQEAgLTM5LDYgKzM5LDkgQEAKKyAjaW5jbHVkZSAiY3AtYWJpLmgi CisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAjaW5jbHVkZSAiaGFzaHRhYi5oIgorKyNpbmNs dWRlICJvYnNlcnZlci5oIgorKyNpbmNsdWRlICJkd2FyZjJleHByLmgiCisrI2luY2x1ZGUgImR3 YXJmMmxvYy5oIgorIAorIAorIC8qIEZsb2F0Zm9ybWF0IHBhaXJzLiAgKi8KK0BAIC0xMjMsNiAr MTI2LDExIEBAIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBlcyAoc3RydWN0IGZpZWxkICosIGlu dCwgaW50KTsKKyBzdGF0aWMgdm9pZCBkdW1wX2ZuX2ZpZWxkbGlzdHMgKHN0cnVjdCB0eXBlICos IGludCk7Cisgc3RhdGljIHZvaWQgcHJpbnRfY3BsdXNfc3R1ZmYgKHN0cnVjdCB0eXBlICosIGlu dCk7CisgCisrLyogVGhlIGhhc2ggdGFibGUgaG9sZGluZyBhbGwgZGlzY2FyZGFibGUgYHN0cnVj dCB0eXBlIConIHJlZmVyZW5jZXMuICAqLworK3N0YXRpYyBodGFiX3QgdHlwZV9kaXNjYXJkYWJs ZV90YWJsZTsKKysKKysvKiBDdXJyZW50IHR5cGVfZGlzY2FyZGFibGVfY2hlY2sgcGFzcyB1c2Vk IGZvciBUWVBFX0RJU0NBUkRBQkxFX0FHRS4gICovCisrc3RhdGljIGludCB0eXBlX2Rpc2NhcmRh YmxlX2FnZV9jdXJyZW50OworIAorIC8qIEFsbG9jYXRlIGEgbmV3IE9CSkZJTEUtYXNzb2NpYXRl ZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29tZSBkZWZhdWx0cy4gIFNw YWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCitAQCAtMTUzLDYgKzE2MSwz OSBAQCBhbGxvY190eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIHJldHVybiB0eXBl OworIH0KKyAKKysvKiBEZWNsYXJlIFRZUEUgYXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdl IGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMuCisrICAgWW91IG11c3QgY2FsbCB0eXBlX21h cmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQor KyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8KICsKICtzdGF0aWMgdm9pZAotK3JlYWRfZm9ydHJh bl9pbXBvcnRlZF9tb2R1bGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKKytzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAoc3RydWN0IHR5cGUgKnR5cGUpCiArewot KyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLSsgIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHI7Ci0rICBzdHJ1Y3QgZGllX2luZm8gKm1vZHVsZV9kaWU7Ci0rICBjaGFyICpt b2R1bGVfbmFtZTsKLSsgIHN0cnVjdCBmb3J0cmFuX3VzaW5nICp1c2U7CisrICB2b2lkICoqc2xv dDsKICsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9pbXBvcnQsIGN1KTsKLSsg IGlmIChhdHRyID09IE5VTEwpCi0rICAgIHJldHVybjsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX0RJ U0NBUkRBQkxFICh0eXBlKSk7CiArCi0rICBtb2R1bGVfZGllID0gZm9sbG93X2RpZV9yZWYgKGRp ZSwgYXR0ciwgJmN1KTsKLSsgIG1vZHVsZV9uYW1lID0gZHdhcmYyX25hbWUgKG1vZHVsZV9kaWUs IGN1KTsKLSsgIGlmIChtb2R1bGVfbmFtZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJIF8oIkltcG9ydGVkIERJRSBhdCBvZmZzZXQg MHgleCBoYXMgbm8gbmFtZSIpLCBkaWUtPm9mZnNldCk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9 CisrICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9IDE7CisrICBUWVBFX0RJU0NBUkRBQkxFX0FH RSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OwogKwotKyAgLyogRm9ydHJh biBkb2VzIG5vdCBhbGxvdyBhbnkgZHVwbGljaXR5IGJldHdlZW4gbG9jYWwgYW5kIGFueSBvZiB0 aGUgaW1wb3J0ZWQKLSsgICAgIHN5bWJvbHMuICBUaGVyZWZvcmUgdGhlIG9yZGVyIG9mIHRoZSBV U0Ugc3RhdGVtZW50cyBpcyBub3QgcG9ydGFudC4KLSsgICAgIGdmb3J0cmFuIHByaW50czoKLSsg ICAgIEVycm9yOiBOYW1lICdYJyBhdCAoMSkgaXMgYW4gYW1iaWd1b3VzIHJlZmVyZW5jZSB0byAn WCcgZnJvbSBtb2R1bGUgJ1knICAqLwotKwotKyAgdXNlID0gb2JzdGFja19hbGxvYyAoJm9iamZp bGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqdXNlKQotKwkJCQkJCSAgKyBzdHJsZW4gKG1v ZHVsZV9uYW1lKSk7Ci0rICBzdHJjcHkgKHVzZS0+bW9kdWxlX25hbWUsIG1vZHVsZV9uYW1lKTsK LSsgIGdkYl9hc3NlcnQgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKTsKLSsgIHVz ZS0+bmV4dCA9IGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZTsKLSsgIGN1LT5sYW5n dWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZSA9IHVzZTsKKysgIHNsb3QgPSBodGFiX2ZpbmRfc2xv dCAodHlwZV9kaXNjYXJkYWJsZV90YWJsZSwgdHlwZSwgSU5TRVJUKTsKKysgIGdkYl9hc3NlcnQg KCEqc2xvdCk7CisrICAqc2xvdCA9IHR5cGU7CiArfQogKwotKy8qIEltcG9ydCBhIHNpbmdsZSBG b3J0cmFuIGRlY2xhcmF0aW9uIGFuZCBwb3NzaWJseSByZW5hbWUgaXQuICAqLworKy8qIEFsbG9j YXRlIGEgbmV3IHR5cGUgbGlrZSBhbGxvY190eXBlIGJ1dCBwcmVzZXJ2ZSBmb3IgaXQgdGhlIGRp c2NhcmRhYmlsaXR5CisrICAgc3RhdGUgb2YgUEFSRU5UX1RZUEUuICAqLwogKwotK3N0YXRpYyB2 b2lkCi0rcmVhZF9mb3J0cmFuX2ltcG9ydGVkX2RlY2xhcmF0aW9uIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKythbGxv Y190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlKQogK3sKLSsgIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHI7Ci0rICBzdHJ1Y3QgZGllX2luZm8gKmltcG9ydGVkX2RpZTsKLSsg IHN0cnVjdCBzeW1ib2wgKnN5bTsKLSsgIGNoYXIgKnJlbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUs IGN1KTsKKysgIHN0cnVjdCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAocGFyZW50 X3R5cGUpOwogKwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2ltcG9ydCwgY3Up OwotKyAgaWYgKGF0dHIgPT0gTlVMTCkKKysgIGlmIChUWVBFX0RJU0NBUkRBQkxFIChwYXJlbnRf dHlwZSkpCisrICAgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChuZXdfdHlwZSk7CisrCisrICBy ZXR1cm4gbmV3X3R5cGU7CisrfQorKworIC8qIEFsbG9jYXRlIGEgbmV3IEdEQkFSQ0gtYXNzb2Np YXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29tZSBkZWZhdWx0cy4g IFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCisgICAgb24gdGhlIGhl YXAuICAqLworQEAgLTI3OCw3ICszMTksNyBAQCBtYWtlX3BvaW50ZXJfdHlwZSAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKKyAKKyAgIGlmICh0eXBlcHRyID09IDAg fHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLworICAg ICB7CistICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUpOworKyAgICAgIG50eXBl ID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOworICAgICAgIGlmICh0eXBlcHRyKQorIAkq dHlwZXB0ciA9IG50eXBlOworICAgICB9CitAQCAtMzU1LDcgKzM5Niw3IEBAIG1ha2VfcmVmZXJl bmNlX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5cGVwdHIpCisgCisg ICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdlJ2xsIG5lZWQgdG8gYWxs b2NhdGUgb25lLiAgKi8KKyAgICAgeworLSAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9jb3B5ICh0 eXBlKTsKKysgICAgICBudHlwZSA9IGFsbG9jX3R5cGVfYXNfcGFyZW50ICh0eXBlKTsKKyAgICAg ICBpZiAodHlwZXB0cikKKyAJKnR5cGVwdHIgPSBudHlwZTsKKyAgICAgfQorQEAgLTcyNiw2ICs3 NjcsNyBAQCBjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1 Y3QgdHlwZSAqaW5kZXhfdHlwZSwKKyAgICAgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXpl b2YgKHN0cnVjdCByYW5nZV9ib3VuZHMpKTsKKyAgIFRZUEVfTE9XX0JPVU5EIChyZXN1bHRfdHlw ZSkgPSBsb3dfYm91bmQ7CisgICBUWVBFX0hJR0hfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGhpZ2hf Ym91bmQ7CisrICBUWVBFX0JZVEVfU1RSSURFIChyZXN1bHRfdHlwZSkgPSAwOworIAorICAgaWYg KGxvd19ib3VuZCA+PSAwKQorICAgICBUWVBFX1VOU0lHTkVEIChyZXN1bHRfdHlwZSkgPSAxOwor QEAgLTgyNSwyNiArODY3LDQ1IEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVz dWx0X3R5cGUsCisgCisgICBUWVBFX0NPREUgKHJlc3VsdF90eXBlKSA9IFRZUEVfQ09ERV9BUlJB WTsKKyAgIFRZUEVfVEFSR0VUX1RZUEUgKHJlc3VsdF90eXBlKSA9IGVsZW1lbnRfdHlwZTsKKy0g IGlmIChnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9i b3VuZCkgPCAwKQorLSAgICBsb3dfYm91bmQgPSBoaWdoX2JvdW5kID0gMDsKKy0gIENIRUNLX1RZ UEVERUYgKGVsZW1lbnRfdHlwZSk7CistICAvKiBCZSBjYXJlZnVsIHdoZW4gc2V0dGluZyB0aGUg YXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKKy0gICAgIGVtcHR5IGFycmF5cyB3aXRo IHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2JvdW5kLgorLSAgICAg SW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4gICovCistICBp ZiAoaGlnaF9ib3VuZCA8IGxvd19ib3VuZCkKKy0gICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBl KSA9IDA7CistICBlbHNlCistICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPQorLSAgICAg IFRZUEVfTEVOR1RIIChlbGVtZW50X3R5cGUpICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAx KTsKKyAgIFRZUEVfTkZJRUxEUyAocmVzdWx0X3R5cGUpID0gMTsKKyAgIFRZUEVfRklFTERTIChy ZXN1bHRfdHlwZSkgPQorICAgICAoc3RydWN0IGZpZWxkICopIFRZUEVfWkFMTE9DIChyZXN1bHRf dHlwZSwgc2l6ZW9mIChzdHJ1Y3QgZmllbGQpKTsKKyAgIFRZUEVfSU5ERVhfVFlQRSAocmVzdWx0 X3R5cGUpID0gcmFuZ2VfdHlwZTsKKyAgIFRZUEVfVlBUUl9GSUVMRE5PIChyZXN1bHRfdHlwZSkg PSAtMTsKKyAKKy0gIC8qIFRZUEVfRkxBR19UQVJHRVRfU1RVQiB3aWxsIHRha2UgY2FyZSBvZiB6 ZXJvIGxlbmd0aCBhcnJheXMgKi8KKysgIC8qIERXQVJGIGJsb2NrcyBtYXkgZGVwZW5kIG9uIHJ1 bnRpbWUgaW5mb3JtYXRpb24gbGlrZQorKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBu b3QgYmVpbmcgYXZhaWxhYmxlIGR1cmluZyB0aGUKKysgICAgIENSRUFURV9BUlJBWV9UWVBFIHRp bWUuICAqLworKyAgaWYgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kICE9 IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQKKysgICAgICB8fCBUWVBFX1JBTkdFX0RBVEEgKHJh bmdlX3R5cGUpLT5oaWdoLmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAorKyAgICAg IHx8IFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCisrICAgICAgfHwgVFlQ RV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCisrICAgICAgfHwgZ2V0X2Rpc2Ny ZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKICsg ICAgewotKyAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCSBfKCJGb3J0 cmFuIERXX1RBR19pbXBvcnRlZF9kZWNsYXJhdGlvbiBpcyBtaXNzaW5nICIKLSsJCSAgICJEV19B VF9pbXBvcnQgYXQgb2Zmc2V0IDB4JXgiKSwgZGllLT5vZmZzZXQpOwotKyAgICAgIHJldHVybjsK KysgICAgICBsb3dfYm91bmQgPSAwOworKyAgICAgIGhpZ2hfYm91bmQgPSAtMTsKICsgICAgfQot KyAgaW1wb3J0ZWRfZGllID0gZm9sbG93X2RpZV9yZWYgKGRpZSwgYXR0ciwgJmN1KTsKICsKLSsg IHN5bSA9IG5ld19zeW1ib2wgKGltcG9ydGVkX2RpZSwgTlVMTCwgY3UpOworKyAgLyogQmUgY2Fy ZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxlbmd0aC4gIEFkYSBhcnJheXMgY2FuIGJlCisr ICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGlnaF9ib3VuZCBiZWluZyBzbWFsbGVyIHRoYW4g dGhlIGxvd19ib3VuZC4KKysgICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBhcnJheSBsZW5ndGggc2hv dWxkIGJlIHplcm8uICBUWVBFX1RBUkdFVF9TVFVCIG5lZWRzIHRvCisrICAgICBiZSBjaGVja2Vk IGFzIGl0IG1heSBoYXZlIGRlcGVuZGVuY2llcyBvbiBEV0FSRiBibG9ja3MgZGVwZW5kaW5nIG9u CisrICAgICBydW50aW1lIGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGUgZHVyaW5nIHRoZSBDUkVB VEVfQVJSQVlfVFlQRSB0aW1lLiAgKi8KKysgIGlmIChoaWdoX2JvdW5kIDwgbG93X2JvdW5kIHx8 IFRZUEVfVEFSR0VUX1NUVUIgKGVsZW1lbnRfdHlwZSkpCisrICAgIFRZUEVfTEVOR1RIIChyZXN1 bHRfdHlwZSkgPSAwOworKyAgZWxzZQorKyAgICB7CisrICAgICAgQ0hFQ0tfVFlQRURFRiAoZWxl bWVudF90eXBlKTsKKysgICAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KKysJVFlQRV9M RU5HVEggKGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOworKyAg ICB9CiArCi0rICBpZiAoc3ltICYmIHJlbmFtZSkKLSsgICAgU1lNQk9MX0NQTFVTX0RFTUFOR0xF RF9OQU1FIChzeW0pID0gcmVuYW1lOworICAgaWYgKFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkg PT0gMCkKKy0gICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKKysgICAgewor KyAgICAgIC8qIFRoZSByZWFsIHNpemUgd2lsbCBiZSBjb21wdXRlZCBmb3Igc3BlY2lmaWMgaW5z dGFuY2VzIGJ5CisrCSBDSEVDS19UWVBFREVGLiAgKi8KKysgICAgICBUWVBFX1RBUkdFVF9TVFVC IChyZXN1bHRfdHlwZSkgPSAxOworKyAgICB9CisgCisgICByZXR1cm4gcmVzdWx0X3R5cGU7Cisg fQorQEAgLTEzNTMsNiArMTQxNCwxMDUgQEAgc3R1Yl9ub25hbWVfY29tcGxhaW50ICh2b2lkKQor ICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJzdHViIHR5cGUgaGFzIE5VTEwg bmFtZSIpKTsKICB9CiAgCi0gLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBuYW1lc3BhY2UgcmVw cmVzZW50ZWQgYnkgRElFLiAgU2V0Ci1AQCAtNTgxOCwyOSArNjMzNywxMTUgQEAgcmVhZF90YWdf c3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7 Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAqY2hhcl90 eXBlOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIHVuc2lnbmVkIGludCBsZW5ndGg7 Ci0rICBpbnQgbGVuZ3RoOworKy8qIENhbGN1bGF0ZSB0aGUgbWVtb3J5IGxlbmd0aCBvZiBhcnJh eSBUWVBFLgogKwotKyAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0 aW5faW50OwotKyAgLyogUkFOR0VfVFlQRSBpcyBhbGxvY2F0ZWQgZnJvbSBPQkpGSUxFLCBub3Qg YXMgYSBwZXJtYW5lbnQgdHlwZS4gICovCi0rICByYW5nZV90eXBlID0gYWxsb2NfdHlwZSAob2Jq ZmlsZSk7Ci0rICAvKiBMT1dfQk9VTkQgYW5kIEhJR0hfQk9VTkQgYXJlIHNldCBmb3IgcmVhbCBi ZWxvdy4gICovCi0rICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKHJhbmdlX3R5cGUs IGluZGV4X3R5cGUsIDAsIC0xKTsKKysgICBUQVJHRVRfVFlQRSBzaG91bGQgYmUgc2V0IHRvIGBj aGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSknIGFzCisrICAgYSBwZXJmb3Jt YW5jZSBoaW50LiAgRmVlbCBmcmVlIHRvIHBhc3MgTlVMTC4gIFNldCBGVUxMX1NQQU4gdG8gcmV0 dXJuIHRoZQorKyAgIHNpemUgaW5jbC4gdGhlIHBvc3NpYmxlIHBhZGRpbmcgb2YgdGhlIGxhc3Qg ZWxlbWVudCAtIGl0IG1heSBkaWZmZXIgZnJvbSB0aGUKKysgICBjbGVhcmVkIEZVTExfU1BBTiBy ZXR1cm4gdmFsdWUgKHRoZSBleHBlY3RlZCBTSVpFT0YpIGZvciBub24temVybworKyAgIFRZUEVf QllURV9TVFJJREUgdmFsdWVzLiAgKi8KICsKLSsgIC8qIEMvQysrIHNob3VsZCBwcm9iYWJseSBo YXZlIHRoZSBsb3cgYm91bmQgMCBidXQgQy9DKysgZG9lcyBub3QgdXNlCi0rICAgICBEV19UQUdf c3RyaW5nX3R5cGUuICAqLwotKyAgVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKLSAK LSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9zdHJpbmdfbGVuZ3RoLCBjdSk7Ci0t ICBpZiAoYXR0cikKLS0gICAgewotLSAgICAgIGxlbmd0aCA9IERXX1VOU05EIChhdHRyKTsKLSsg IGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisrc3RhdGljIExPTkdFU1QK Kyt0eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqdGFyZ2V0 X3R5cGUsIGludCBmdWxsX3NwYW4pCisreworKyAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7Cisr ICBMT05HRVNUIGJ5dGVfc3RyaWRlID0gMDsJLyogYD0gMCcgZm9yIGEgZmFsc2UgR0NDIHdhcm5p bmcuICAqLworKyAgTE9OR0VTVCBjb3VudCwgZWxlbWVudF9zaXplLCByZXR2YWw7CisrCisrICBp ZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkKKysgICAgICAmJiBUWVBFX0NP REUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcpCisrICAgIHJldHVybiBUWVBFX0xFTkdUSCAo dHlwZSk7CisrCisrICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5EIGZvciBpbnZh bGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCisrICAgICBGb3J0cmFuIGFycmF5cy4gIFRo ZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhleSBjYW4gYmUKKysgICAg IHplcm8tbGVuZ3RoLiAgKi8KKysgIGlmIChvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAo dHlwZSkpCisrICAgIHJldHVybiAwOworKworKyAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQ RSAodHlwZSk7CisrICBpZiAoVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKQor KyAgICAgIHx8IFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpKQorKyAgICBy ZXR1cm4gMDsKKysgIGNvdW50ID0gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZUEVf TE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7CisrICAvKiBJdCBtYXkgaGFwcGVuIGZvciB3cm9u ZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBkYXRhLiAgKi8KKysgIGlmIChj b3VudCA8IDApCisrICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhhcyBpbnZhbGlk IGJvdW5kcyAlcy4uJXMiKSwKKysJICAgICBUWVBFX05BTUUgKHR5cGUpLCBwbG9uZ2VzdCAoVFlQ RV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwKKysJICAgICBwbG9uZ2VzdCAoVFlQRV9ISUdIX0JP VU5EIChyYW5nZV90eXBlKSkpOworKyAgLyogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxl IGNvdW50ID09IDAgcmlnaHQuICAqLworKyAgaWYgKGNvdW50IDw9IDApCisrICAgIHJldHVybiAw OworKyAgaWYgKGZ1bGxfc3BhbiB8fCBjb3VudCA+IDEpCiArICAgIHsKLSsgICAgICAvKiBTZWN1 cml0eSBjaGVjayBmb3IgYSBzaXplIG92ZXJmbG93LiAgKi8KLSsgICAgICBpZiAoRFdfQkxPQ0sg KGF0dHIpLT5zaXplICsgMiA8IERXX0JMT0NLIChhdHRyKS0+c2l6ZSkKLSsJVFlQRV9ISUdIX0JP VU5EIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgICAgLyogRXh0ZW5kIHRoZSBEV0FSRiBibG9jayBi eSBhIG5ldyBEV19PUF9kZXJlZi9EV19PUF9kZXJlZl9zaXplCi0rCSBpbnN0cnVjdGlvbiBhcyBE V19BVF9zdHJpbmdfbGVuZ3RoIHNwZWNpZmllcyB0aGUgbGVuZ3RoIGxvY2F0aW9uLCBub3QKLSsJ IGl0cyB2YWx1ZS4gICovCi0rICAgICAgZWxzZQotKwl7Ci0rCSAgc3RydWN0IGR3YXJmMl9sb2Nl eHByX2JhdG9uICpsZW5ndGhfYmF0b24gPSBOVUxMOwotKwkgIHN0cnVjdCBkd2FyZl9ibG9jayAq YmxrID0gRFdfQkxPQ0sgKGF0dHIpOworKyAgICAgIC8qIFdlIGRvIG5vdCB1c2UgVFlQRV9BUlJB WV9CWVRFX1NUUklERV9WQUxVRSAodHlwZSkgaGVyZSBhcyB3ZSB3YW50IHRvCisrICAgICAgICAg Zm9yY2UgRlVMTF9TUEFOIHRvIDEuICAqLworKyAgICAgIGJ5dGVfc3RyaWRlID0gVFlQRV9CWVRF X1NUUklERSAocmFuZ2VfdHlwZSk7CisrICAgICAgaWYgKGJ5dGVfc3RyaWRlID09IDApCisrICAg ICAgICB7CisrCSAgaWYgKHRhcmdldF90eXBlID09IE5VTEwpCisrCSAgICB0YXJnZXRfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKysJICBieXRlX3N0cmlk ZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEwsIDEpOworKwl9CisrICAgIH0K ICsKLSsJICAvKiBUdXJuIGFueSBzaW5nbGUgRFdfT1BfcmVnKiBpbnRvIERXX09QX2JyZWcqKDAp IGJ1dCBjbGVhcmluZwotKwkgICAgIERXX09QX2RlcmVmKiBpbiBzdWNoIGNhc2UuICAqLworKyAg LyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJl IDAgaWYgaXRzIGxlbmd0aAorKyAgICAgZXhjZWVkcyBVSU5UX01BWC4gIFRoZSBjb2RlIGJlbG93 IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAsCisrICAgICAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9O R0VTVF9NQVggKyAxLCB3aGljaCBpcyB0ZWNobmljYWxseSBub3QgZ3VhcmFudGVlZAorKyAgICAg YnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZSAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHgg d2VyZSB1bnNpZ25lZAorKyAgICAgd2l0aCBpdHMgaGlnaC1vcmRlciBiaXQgb24pLiBJdCB1c2Vz IHRoZSBmYWN0IHRoYXQgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMKKysgICAgIGFsd2F5cyByZXBy ZXNlbnRhYmxlIGluIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhpZ2hfYm91bmQtbG93X2JvdW5kKzEK KysgICAgIG92ZXJmbG93cywgaXQgb3ZlcmZsb3dzIHRvIDAuICBXZSBtdXN0IGNoYW5nZSB0aGVz ZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8KKysgICAgIGluY3JlYXNlIHRoZSByZXByZXNlbnRhdGlv biBvZiBUWVBFX0xFTkdUSCBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4KKysgICAgICov CiArCi0rCSAgaWYgKGJsay0+c2l6ZSA9PSAxICYmIGJsay0+ZGF0YVswXSA+PSBEV19PUF9yZWcw Ci0rCSAgICAgICYmIGJsay0+ZGF0YVswXSA8PSBEV19PUF9yZWczMSkKLSsJICAgIGxlbmd0aF9i YXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsJICBlbHNl IGlmIChibGstPnNpemUgPiAxICYmIGJsay0+ZGF0YVswXSA9PSBEV19PUF9yZWd4KQotKwkgICAg ewotKwkgICAgICBVTE9OR0VTVCB1bG9uZ2VzdDsKLSsJICAgICAgZ2RiX2J5dGUgKmVuZDsKKysg IGlmIChmdWxsX3NwYW4pCisrICAgIHsKKysgICAgICByZXR2YWwgPSBjb3VudCAqIGJ5dGVfc3Ry aWRlOworKyAgICAgIGlmIChjb3VudCA9PSAwIHx8IHJldHZhbCAvIGNvdW50ICE9IGJ5dGVfc3Ry aWRlIHx8IHJldHZhbCA+IFVJTlRfTUFYKQorKwlyZXR2YWwgPSAwOworKyAgICAgIHJldHVybiBy ZXR2YWw7CisrICAgIH0KKysgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQorKyAgICB0YXJnZXRf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKysgIGVsZW1l bnRfc2l6ZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEwsIDEpOworKyAgcmV0 dmFsID0gKGNvdW50IC0gMSkgKiBieXRlX3N0cmlkZSArIGVsZW1lbnRfc2l6ZTsKKysgIGlmIChy ZXR2YWwgPCBlbGVtZW50X3NpemUKKysgICAgICB8fCAoYnl0ZV9zdHJpZGUgIT0gMAorKyAgICAg ICAgICAmJiAocmV0dmFsIC0gZWxlbWVudF9zaXplKSAvIGJ5dGVfc3RyaWRlICE9IGNvdW50IC0g MSkKKysgICAgICB8fCByZXR2YWwgPiBVSU5UX01BWCkKKysgICAgcmV0dmFsID0gMDsKKysgIHJl dHVybiByZXR2YWw7CisrfQogKwotKwkgICAgICBlbmQgPSByZWFkX3VsZWIxMjggKCZibGstPmRh dGFbMV0sICZibGstPmRhdGFbYmxrLT5zaXplXSwKLSsJCQkJICAmdWxvbmdlc3QpOwotKwkgICAg ICBpZiAoZW5kID09ICZibGstPmRhdGFbYmxrLT5zaXplXSkKLSsJCWxlbmd0aF9iYXRvbiA9IGR3 YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsJICAgIH0KKysvKiBQcmVw YXJlIFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBieSB0aGUgYmFja2VuZC4gIEN1cnJlbnRseSB0 aGlzIGZ1bmN0aW9uCisrICAgb25seSBwcm9wYWdhdGVzIHRoZSBUWVBFX0RZTkFNSUMgZmxhZy4g ICovCiArCi0rCSAgaWYgKGxlbmd0aF9iYXRvbiA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICBz dHJ1Y3QgYXR0cmlidXRlICpzaXplX2F0dHI7Cisrdm9pZAorK2ZpbmFsaXplX3R5cGUgKHN0cnVj dCB0eXBlICp0eXBlKQorK3sKKysgIGludCBpOwogKwotKwkgICAgICBsZW5ndGhfYmF0b24gPSBv YnN0YWNrX2FsbG9jICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLAotKwkJCQkJICAgIHNpemVvZiAo Kmxlbmd0aF9iYXRvbikpOwotKwkgICAgICBsZW5ndGhfYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJf Y3U7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZSAr IDI7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+ZGF0YSA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+Y29t cF91bml0X29ic3RhY2ssCi0rCQkJCQkJICBsZW5ndGhfYmF0b24tPnNpemUpOwotKwkgICAgICBt ZW1jcHkgKGxlbmd0aF9iYXRvbi0+ZGF0YSwgRFdfQkxPQ0sgKGF0dHIpLT5kYXRhLAotKwkJICAg ICAgRFdfQkxPQ0sgKGF0dHIpLT5zaXplKTsKKysgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVM RFMgKHR5cGUpOyArK2kpCisrICAgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpICYmIFRZ UEVfRFlOQU1JQyAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkpCisrICAgICAgYnJlYWs7CiAr Ci0rCSAgICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhlciB3aXRoIERXX0FU X1NUUklOR19MRU5HVEgKLSsJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4gaW50ZWdlciB0byBm ZXRjaC4gICovCi0rCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5 dGVfc2l6ZSwgY3UpOwotKwkgICAgICBpZiAoc2l6ZV9hdHRyKQotKwkJewotKwkJICBsZW5ndGhf YmF0b24tPmRhdGFbRFdfQkxPQ0sgKGF0dHIpLT5zaXplXSA9IERXX09QX2RlcmVmX3NpemU7Ci0r CQkgIGxlbmd0aF9iYXRvbi0+ZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemUgKyAxXSA9Ci0rCQkJ CQkJCSAgIERXX1VOU05EIChzaXplX2F0dHIpOwotKwkJICBpZiAobGVuZ3RoX2JhdG9uLT5kYXRh W0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdCi0rCQkgICAgICAhPSBEV19VTlNORCAoc2l6ZV9h dHRyKSkKLSsJCSAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkJICAgICAg IF8oIkRXX0FUX3N0cmluZ19sZW5ndGgncyBEV19BVF9ieXRlX3NpemUgIgotKwkJCQkgImludGVn ZXIgZXhjZWVkcyB0aGUgYnl0ZSBzaXplIHN0b3JhZ2UiKSk7Ci0rCQl9Ci0rCSAgICAgIGVsc2UK LSsJCXsKLSsJCSAgbGVuZ3RoX2JhdG9uLT5kYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBE V19PUF9kZXJlZjsKLSsJCSAgbGVuZ3RoX2JhdG9uLT5kYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6 ZSArIDFdID0gRFdfT1Bfbm9wOwotKwkJfQotKwkgICAgfQotKwotKwkgIFRZUEVfUkFOR0VfREFU QSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZAotKwkgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJG X0JMT0NLOwotKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9i bG9jayA9IGxlbmd0aF9iYXRvbjsKLSsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsK LSsJfQotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICAvKiBjaGVjayBmb3IgdGhlIERX X0FUX2J5dGVfc2l6ZSBhdHRyaWJ1dGUgKi8KLSsgICAgICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1f aXNfY29uc3RhbnQgKGF0dHIpKQotKwl7Ci0rCSAgLyogV2UgY3VycmVudGx5IGRvIG5vdCBzdXBw b3J0IGEgY29uc3RhbnQgYWRkcmVzcyB3aGVyZSB0aGUgbG9jYXRpb24KLSsJICAgICBzaG91bGQg YmUgcmVhZCBmcm9tIC0gYXR0cl9mb3JtX2lzX2Jsb2NrIGlzIGV4cGVjdGVkIGluc3RlYWQuICBT ZWUKLSsJICAgICBEV0FSRiBmb3IgdGhlIERXX0FUX1NUUklOR19MRU5HVEggdnMuIERXX0FUX0JZ VEVfU0laRSBkaWZmZXJlbmNlLgotKwkgICAgICovCi0rCSAgLyogUEFTU1RIUlUgKi8KLSsJfQor KyAgLyogRklYTUU6IGNwbHVzX3N0dWZmIGlzIGlnbm9yZWQgaGVyZS4gICovCisrICBpZiAoaSA8 IFRZUEVfTkZJRUxEUyAodHlwZSkKKysgICAgICB8fCAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBl KSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkpKQorKyAgICAgIHx8 IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKSkpCisrICAgIFRZUEVfRFlOQU1JQyAodHlwZSkgPSAxOworK30KICsKLSAgICAg ICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zaXplLCBjdSk7Ci0tICAgICAg aWYgKGF0dHIpCi0tICAgICAgICB7Ci0tICAgICAgICAgIGxlbmd0aCA9IERXX1VOU05EIChhdHRy KTsKLS0gICAgICAgIH0KLSsgICAgICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0 dHIpKQotKwl7Ci0rCSAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC5raW5kCi0r CSAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7Ci0rCSAgVFlQRV9SQU5HRV9EQVRB IChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3Rv X2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUp ID0gMTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50 IChhdHRyKSkKLSsJVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGR3YXJmMl9nZXRfYXR0 cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0gICAgICAgZWxzZQotLSAgICAgICAgewotLSAg ICAgICAgICBsZW5ndGggPSAxOwotLSAgICAgICAgfQotKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdl X3R5cGUpID0gMTsKLSAgICAgfQotIAotLSAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2Jq ZmlsZSktPmJ1aWx0aW5faW50OwotLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChO VUxMLCBpbmRleF90eXBlLCAxLCBsZW5ndGgpOwotICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vfc3Ry aW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwotICAgdHlwZSA9IGNy ZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKKyAvKiBBZGRl ZCBieSBCcnlhbiBCb3JlaGFtLCBLZXdpbGwsIFN1biBTZXAgMTcgMTg6MDc6MTcgMTk4OS4KICAK LUBAIC01OTQwLDExICs2NTQ1LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0gcmVhZF90eXBl ZGVmIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gewotICAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLS0gIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7Ci0gICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAgIHN0cnVjdCB0eXBlICp0 aGlzX3R5cGU7Ci0gCi0tICBuYW1lID0gZHdhcmYyX2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci0rICBu YW1lID0gZHdhcmYyX2Z1bGxfbmFtZSAoTlVMTCwgZGllLCBjdSk7Ci0gICB0aGlzX3R5cGUgPSBp bml0X3R5cGUgKFRZUEVfQ09ERV9UWVBFREVGLCAwLAotIAkJCSBUWVBFX0ZMQUdfVEFSR0VUX1NU VUIsIE5VTEwsIG9iamZpbGUpOwotICAgVFlQRV9OQU1FICh0aGlzX3R5cGUpID0gKGNoYXIgKikg bmFtZTsKLUBAIC02MDQ4LDggKzY2NTIsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVjdCB0eXBlICpiYXNl X3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHI7Ci0tICBMT05HRVNUIGxvdyA9IDA7Ci0tICBMT05HRVNUIGhpZ2ggPSAtMTsKLSsgIExP TkdFU1QgbG93OwotICAgY2hhciAqbmFtZTsKLSAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsKLSAg IAotQEAgLTYwNjMsNDkgKzY2NjYsMTU3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkJICAgICAwLCBOVUxMLCBjdS0+ b2JqZmlsZSk7CisgICAgSWYgdGhpcyBpcyBhIHN0dWJiZWQgc3RydWN0IChpLmUuIGRlY2xhcmVk IGFzIHN0cnVjdCBmb28gKiksIHNlZSBpZgorQEAgLTE0ODYsNTIgKzE2NDYsMzYgQEAgY2hlY2tf dHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCisgICAgICAgICB9CiAgICAgIH0KICAKLS0gIGlm IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKLS0gICAgeyAKLS0gICAgICAvKiBG T1JUUkFOIGltcGxpZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4uICAqLwotLSAg ICAgIGxvdyA9IDE7Ci0tICAgIH0KLSsgIC8qIExPV19CT1VORCBhbmQgSElHSF9CT1VORCBhcmUg c2V0IGZvciByZWFsIGJlbG93LiAgKi8KLSsgIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlw ZSAoTlVMTCwgYmFzZV90eXBlLCAwLCAtMSk7Ci0rCi0rICBuZWdhdGl2ZV9tYXNrID0gCi0rICAg IChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9C SVQgLSAxKTsKLSAKLS0gIC8qIEZJWE1FOiBGb3IgdmFyaWFibGUgc2l6ZWQgYXJyYXlzIGVpdGhl ciBvZiB0aGVzZSBjb3VsZCBiZQotLSAgICAgYSB2YXJpYWJsZSByYXRoZXIgdGhhbiBhIGNvbnN0 YW50IHZhbHVlLiAgV2UnbGwgYWxsb3cgaXQsCi0tICAgICBidXQgd2UgZG9uJ3Qga25vdyBob3cg dG8gaGFuZGxlIGl0LiAgKi8KLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb3dl cl9ib3VuZCwgY3UpOwotLSAgaWYgKGF0dHIpCi0tICAgIGxvdyA9IGR3YXJmMl9nZXRfYXR0cl9j b25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxv Y2sgKGF0dHIpKQotKyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+ bG93LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFO R0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9h dHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJh bmdlX3R5cGUpID0gMTsKLSsgICAgICAvKiBGb3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRf VVBQRVJfQk9VTkQgd291bGQgYmUgbWlzc2luZy4gICovCi0rICAgICAgbG93ID0gMDsKLSsgICAg fQotKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikpCistICBpZiAoVFlQRV9U QVJHRVRfU1RVQiAodHlwZSkpCisrICAvKiBjb3B5X3R5cGVfcmVjdXJzaXZlIGF1dG9tYXRpY2Fs bHkgbWFrZXMgdGhlIHJlc3VsdGluZyB0eXBlIGNvbnRhaW5pbmcgb25seQorKyAgICAgY29uc3Rh bnQgdmFsdWVzIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24uICAqLwor KyAgaWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2lu Zm8gKnRhcmdldF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7 Ci0rICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOworKyAgICAgIGh0YWJf dCBjb3BpZWRfdHlwZXM7CisrICAgICAgc3RydWN0IHR5cGUgKnR5cGVfb2xkID0gdHlwZTsKICsK LSsgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0 YXJnZXRfY3UpOwotKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+ b2JqZmlsZSk7Ci0rICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9k aWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOworKyAgICAgIGNvcGllZF90eXBlcyA9IGNy ZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoTlVMTCk7CisrICAgICAgdHlwZSA9IGNvcHlfdHlwZV9y ZWN1cnNpdmUgKHR5cGUsIGNvcGllZF90eXBlcyk7CisrICAgICAgaHRhYl9kZWxldGUgKGNvcGll ZF90eXBlcyk7CiArCi0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93Lmtp bmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7Ci0rICAgICAgVFlQRV9SQU5HRV9E QVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0Ci0rICAgICAgICA9 IGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHRhcmdldF9sb2NfYXR0ciwgdGFyZ2V0X2N1 KTsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cudS5kd2FyZl9sb2Ns aXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9jdSk7Ci0r ICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgICAgLyogRm9yIHNldHRp bmcgYSBkZWZhdWx0IGlmIERXX0FUX1VQUEVSX0JPVU5EIHdvdWxkIGJlIG1pc3NpbmcuICAqLwot KyAgICAgIGxvdyA9IDA7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGlmIChhdHRy ICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0rCWxvdyA9IGR3YXJmMl9nZXRfYXR0 cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaWYgKGN1 LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQotKwkgICAgewotKwkgICAgICAvKiBGT1JU UkFOIGltcGxpZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4uICAqLwotKwkgICAg ICBsb3cgPSAxOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgLyogQWNjb3Jk aW5nIHRvIERXQVJGIHdlIHNob3VsZCBhc3N1bWUgdGhlIHZhbHVlIDAgb25seSBmb3IKLSsJCSBM QU5HVUFHRV9DIGFuZCBMQU5HVUFHRV9DUExVUy4gICovCi0rCSAgICAgIGxvdyA9IDA7Ci0rCSAg ICB9Ci0rCX0KLSsgICAgICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAm IG5lZ2F0aXZlX21hc2spKQotKwlsb3cgfD0gbmVnYXRpdmVfbWFzazsKLSsgICAgICBUWVBFX0xP V19CT1VORCAocmFuZ2VfdHlwZSkgPSBsb3c7Ci0rICAgICAgaWYgKGxvdyA+PSAwKQotKwlUWVBF X1VOU0lHTkVEIChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9EWU5B TUlDICh0eXBlKSA9PSAwKTsKICsgICAgfQorKworKyAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5 cGUpIHx8IFRZUEVfRFlOQU1JQyAodHlwZSkpCisgICAgIHsKKy0gICAgICBzdHJ1Y3QgdHlwZSAq cmFuZ2VfdHlwZTsKKyAgICAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBl ZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CiAgCi0gICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQotLSAgICB7ICAgICAg IAotLSAgICAgIGlmIChhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sxKQotLSAgICAgICAgewot LSAgICAgICAgICAvKiBHQ0MgZW5jb2RlcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZCBvciBkeW5h bWljIGxlbmd0aAotLSAgICAgICAgICAgICB3aXRoIGEgRFdfRk9STV9ibG9jazEgYXR0cmlidXRl LgotLSAgICAgICAgICAgICBGSVhNRTogR0RCIGRvZXMgbm90IHlldCBrbm93IGhvdyB0byBoYW5k bGUgZHluYW1pYwotLSAgICAgICAgICAgICBhcnJheXMgcHJvcGVybHksIHRyZWF0IHRoZW0gYXMg YXJyYXlzIHdpdGggdW5zcGVjaWZpZWQKLS0gICAgICAgICAgICAgbGVuZ3RoIGZvciBub3cuCisr ICAgICAgaWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCisrCVRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp ID0gdGFyZ2V0X3R5cGU7CisgICAgICAgaWYgKFRZUEVfU1RVQiAodGFyZ2V0X3R5cGUpIHx8IFRZ UEVfVEFSR0VUX1NUVUIgKHRhcmdldF90eXBlKSkKKyAJeworIAkgIC8qIEVtcHR5LiAgKi8KKyAJ fQorICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCist CSAgICAgICAmJiBUWVBFX05GSUVMRFMgKHR5cGUpID09IDEKKy0JICAgICAgICYmIChUWVBFX0NP REUgKHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpKQorLQkJICAgPT0gVFlQRV9D T0RFX1JBTkdFKSkKKysJICAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NU UklORykKKyAJeworIAkgIC8qIE5vdyByZWNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkg dHlwZSwgYmFzZWQgb24gaXRzCistCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFy Z2V0IHR5cGUncyBsZW5ndGguCistCSAgICAgV2F0Y2ggb3V0IGZvciBBZGEgbnVsbCBBZGEgYXJy YXlzIHdoZXJlIHRoZSBoaWdoIGJvdW5kCistCSAgICAgaXMgc21hbGxlciB0aGFuIHRoZSBsb3cg Ym91bmQuICovCistCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAo cmFuZ2VfdHlwZSk7CistCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQRV9ISUdIX0JP VU5EIChyYW5nZV90eXBlKTsKKy0JICBVTE9OR0VTVCBsZW47CiAtCi0tICAgICAgICAgICAgIEZJ WE1FOiBqaW1iLzIwMDMtMDktMjI6IEdEQiBkb2VzIG5vdCByZWFsbHkga25vdwotLSAgICAgICAg ICAgICBob3cgdG8gaGFuZGxlIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5ndGgKLS0gICAgICAg ICAgICAgZWl0aGVyOyB3ZSBqdXN0IHJlcHJlc2VudCB0aGVtIGFzIHplcm8tbGVuZ3RoCi0tICAg ICAgICAgICAgIGFycmF5cy4gIENob29zZSBhbiBhcHByb3ByaWF0ZSB1cHBlciBib3VuZCBnaXZl bgotLSAgICAgICAgICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJvdmUuICAq LwotLSAgICAgICAgICBoaWdoID0gbG93IC0gMTsKLS0gICAgICAgIH0KLSsgIGlmICghYXR0ciB8 fCAoIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgIWF0dHJfZm9ybV9pc19jb25zdGFudCAo YXR0cikKLSsJCSYmICFpc19yZWZfYXR0ciAoYXR0cikpKQotKyAgICB7Ci0rICAgICAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7Ci0rICAgICAgLyogSXQgZG9lcyBu b3QgaHVydCBidXQgaXQgaXMgbmVlZGxlc3NseSBpbmVmZmVjdGl2ZSBpbiBjaGVja190eXBlZGVm LiAgKi8KLSsgICAgICBpZiAoYXR0ciAmJiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSB8fCBh dHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKSkKLSsgICAgICAJewotKwkgIFRZUEVfUkFOR0Vf SElHSF9CT1VORF9JU19DT1VOVCAocmFuZ2VfdHlwZSkgPSAxOwotKwkgIFRZUEVfRFlOQU1JQyAo cmFuZ2VfdHlwZSkgPSAxOwotKwl9Ci0rICAgICAgLyogUGFzcyBpdCBub3cgYXMgdGhlIHJlZ3Vs YXIgRFdfQVRfdXBwZXJfYm91bmQuICAqLwotKyAgICB9CistCSAgaWYgKGhpZ2hfYm91bmQgPCBs b3dfYm91bmQpCistCSAgICBsZW4gPSAwOworLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAgLyog Rm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAK Ky0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUgY29kZSBiZWxvdyBhc3N1 bWVzCistCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNUX01B WCArIDEsCistCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRlZWQgYnkgQywgYnV0 IGlzIHVzdWFsbHkgdHJ1ZQorLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3ZXJl IHVuc2lnbmVkIHdpdGggaXRzCistCQkgaGlnaC1vcmRlciBiaXQgb24pLiBJdCB1c2VzIHRoZSBm YWN0IHRoYXQKKy0JCSBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcyBhbHdheXMgcmVwcmVzZW50YWJs ZSBpbgorLQkJIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhpZ2hfYm91bmQtbG93X2JvdW5kKzEgb3Zl cmZsb3dzLAorLQkJIGl0IG92ZXJmbG93cyB0byAwLiAgV2UgbXVzdCBjaGFuZ2UgdGhlc2UgdGVz dHMgaWYgd2UgCistCQkgZGVjaWRlIHRvIGluY3JlYXNlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBU WVBFX0xFTkdUSAorLQkJIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNULiAqLworLQkgICAg ICBVTE9OR0VTVCB1bG93ID0gbG93X2JvdW5kLCB1aGlnaCA9IGhpZ2hfYm91bmQ7CistCSAgICAg IFVMT05HRVNUIHRsZW4gPSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpOworLQorLQkgICAgICBs ZW4gPSB0bGVuICogKHVoaWdoIC0gdWxvdyArIDEpOworLQkgICAgICBpZiAodGxlbiA9PSAwIHx8 IChsZW4gLyB0bGVuIC0gMSArIHVsb3cpICE9IHVoaWdoIAorLQkJICB8fCBsZW4gPiBVSU5UX01B WCkKKy0JCWxlbiA9IDA7CistCSAgICB9CistCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gbGVuOwor KwkgICAgIG51bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0eXBlJ3MgbGVuZ3RoLiAg Ki8KKysJICBUWVBFX0xFTkdUSCAodHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQgKHR5cGUsIHRhcmdl dF90eXBlLCAwKTsKKyAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7CisgCX0KKyAgICAg ICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKK0BAIC0xNTM5 LDkgKzE2ODMsMTIgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCisgCSAgVFlQ RV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKKyAJICBUWVBFX1RB UkdFVF9TVFVCICh0eXBlKSA9IDA7CisgCX0KKysgICAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0g MDsKKyAgICAgfQogKwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkK KyAgIC8qIENhY2hlIFRZUEVfTEVOR1RIIGZvciBmdXR1cmUgdXNlLiAgKi8KKyAgIFRZUEVfTEVO R1RIIChvcmlnX3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOworKworICAgcmV0dXJuIHR5cGU7 CisgfQorIAorQEAgLTE4MTEsNiArMTk1OCw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUg Y29kZSwgaW50IGxlbmd0aCwgaW50IGZsYWdzLAorICAgICBUWVBFX05PVFRFWFQgKHR5cGUpID0g MTsKKyAgIGlmIChmbGFncyAmIFRZUEVfRkxBR19GSVhFRF9JTlNUQU5DRSkKKyAgICAgVFlQRV9G SVhFRF9JTlNUQU5DRSAodHlwZSkgPSAxOworKyAgaWYgKGZsYWdzICYgVFlQRV9GTEFHX0dOVV9J RlVOQykKKysgICAgVFlQRV9HTlVfSUZVTkMgKHR5cGUpID0gMTsKKyAKKyAgIGlmIChuYW1lKQor ICAgICBUWVBFX05BTUUgKHR5cGUpID0gb2JzYXZlc3RyaW5nIChuYW1lLCBzdHJsZW4gKG5hbWUp LAorQEAgLTMwMDYsMzMgKzMxNTUsNDIgQEAgdHlwZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVt X2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCisgfQorIAorIC8qIEFsbG9jYXRlIHRoZSBoYXNo IHRhYmxlIHVzZWQgYnkgY29weV90eXBlX3JlY3Vyc2l2ZSB0byB3YWxrCistICAgdHlwZXMgd2l0 aG91dCBkdXBsaWNhdGVzLiAgV2UgdXNlIE9CSkZJTEUncyBvYnN0YWNrLCBiZWNhdXNlCistICAg T0JKRklMRSBpcyBhYm91dCB0byBiZSBkZWxldGVkLiAgKi8KKysgICB0eXBlcyB3aXRob3V0IGR1 cGxpY2F0ZXMuICAgKi8KKyAKKyBodGFiX3QKKyBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKy0gIHJldHVybiBodGFiX2NyZWF0ZV9hbGxvY19l eCAoMSwgdHlwZV9wYWlyX2hhc2gsIHR5cGVfcGFpcl9lcSwKKy0JCQkgICAgICAgTlVMTCwgJm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9j YXRlLAorLQkJCSAgICAgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworKyAgaWYgKG9iamZp bGUgPT0gTlVMTCkKICsgICAgewotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkt PmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7Ci0rICAgICAgVFlQRV9S QU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJm Ml9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMg KHJhbmdlX3R5cGUpID0gMTsKKysgICAgICAvKiBOVUxMIE9CSkZJTEUgaXMgZm9yIFRZUEVfRFlO QU1JQyB0eXBlcyBhbHJlYWR5IGNvbnRhaW5lZCBpbgorKwkgT0JKRklMRV9NQUxMT0MgbWVtb3J5 LCBzdWNoIGFzIHRob3NlIGZyb20gVkFMVUVfSElTVE9SWV9DSEFJTi4gIFRhYmxlCisrCSBlbGVt ZW50IGVudHJpZXMgZ2V0IGFsbG9jYXRlZCBieSB4bWFsbG9jIC0gc28gdXNlIHhmcmVlLiAgKi8K KysgICAgICByZXR1cm4gaHRhYl9jcmVhdGUgKDEsIHR5cGVfcGFpcl9oYXNoLCB0eXBlX3BhaXJf ZXEsIHhmcmVlKTsKICsgICAgfQotKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0 cikpCisrICBlbHNlCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdldF9kaWU7 Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7Ci0rICAgICAgc3RydWN0 IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwotKwotKyAgICAgIHRhcmdldF9kaWUgPSBmb2xs b3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7Ci0rICAgICAgZ2RiX2Fz c2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKLSsgICAgICB0YXJnZXRf bG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRpb24sIHRhcmdl dF9jdSk7Ci0rCi0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC5raW5k ID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOwotKyAgICAgIFRZUEVfUkFOR0VfREFU QSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QKLSsgICAgICAgID0g ZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0X2xvY19hdHRyLCB0YXJnZXRfY3Up OwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2Ns aXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9jdSk7Ci0r ICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0KLSsgIGVsc2UKLSsg ICAgewotKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0r CXsKLSsJICBMT05HRVNUIGhpZ2g7Ci0rCi0rCSAgaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25z dGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rCSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUp ICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykpCi0rCSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7 Ci0rCSAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGhpZ2g7Ci0rCX0KLSAgICAgICBl bHNlCi0tICAgICAgICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRy LCAxKTsKLSsJewotKwkgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0g MTsKLSsJICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gbG93IC0gMTsKLSsJfQotICAg ICB9Ci0gCi0tICBuZWdhdGl2ZV9tYXNrID0gCi0tICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9M RU5HVEggKGJhc2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9CSVQgLSAxKTsKLS0gIGlmICghVFlQRV9V TlNJR05FRCAoYmFzZV90eXBlKSAmJiAobG93ICYgbmVnYXRpdmVfbWFzaykpCi0tICAgIGxvdyB8 PSBuZWdhdGl2ZV9tYXNrOwotLSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmICho aWdoICYgbmVnYXRpdmVfbWFzaykpCi0tICAgIGhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKLSsgIC8q IERXX0FUX2JpdF9zdHJpZGUgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkIGFzIHdlIGNvdW50IGlu IGJ5dGVzLiAgKi8KLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlk ZSwgY3UpOwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsgICAg ewotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLmtpbmQK LSsgICAgICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsgICAgICBUWVBFX1JB TkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrID0KLSsJCQkJ CWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBFX0RZ TkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgfQotKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19y ZWZfYXR0ciAoYXR0cikpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdldF9k aWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7Ci0rICAgICAgc3Ry dWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwotIAotLSAgcmFuZ2VfdHlwZSA9IGNyZWF0 ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGlnaCk7Ci0rICAgICAgdGFyZ2V0 X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKLSsg ICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwotKyAg ICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2Nh dGlvbiwgdGFyZ2V0X2N1KTsKLSsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUp LT5ieXRlX3N0cmlkZS5raW5kCi0rICAgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9D TElTVDsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51 LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0 X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9SQU5HRV9E QVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUKLSsgICAg ICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9EWU5B TUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9m b3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsgICAgewotKyAgICAgIFRZUEVfQllURV9TVFJJREUg KHJhbmdlX3R5cGUpID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsK LSsgICAgICBpZiAoVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkgPT0gMCkKLSsJY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgXygiRm91bmQgRFdfQVRfYnl0ZV9zdHJp ZGUgd2l0aCB1bnN1cHBvcnRlZCB2YWx1ZSAwIikpOworKyAgICAgIC8qIFVzZSBPQkpGSUxFJ3Mg b2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICBUYWJsZQor KwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJl ZS4gICovCisrICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJf aGFzaCwgdHlwZV9wYWlyX2VxLAorKwkJCQkgICB4ZnJlZSwgJm9iamZpbGUtPm9iamZpbGVfb2Jz dGFjaywKKysJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRlLAorKwkJCQkgICBkdW1teV9v YnN0YWNrX2RlYWxsb2NhdGUpOwogKyAgICB9Ci0gCi0gICBuYW1lID0gZHdhcmYyX25hbWUgKGRp ZSwgY3UpOwotICAgaWYgKG5hbWUpCi1AQCAtNjU2NCw2ICs3Mjc1LDcgQEAgbG9hZF9wYXJ0aWFs X2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAot IAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19sZXhpY2FsX2Jsb2NrCi0gCSAgJiYgYWJicmV2 LT50YWcgIT0gRFdfVEFHX3ZhcmlhYmxlCi0gCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX25h bWVzcGFjZQotKwkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19tb2R1bGUKLSAJICAmJiBhYmJy ZXYtPnRhZyAhPSBEV19UQUdfbWVtYmVyKQotIAl7Ci0gCSAgLyogT3RoZXJ3aXNlIHdlIHNraXAg dG8gdGhlIG5leHQgc2libGluZywgaWYgYW55LiAgKi8KLUBAIC02NzcyLDcgKzc0ODQsOCBAQCBy ZWFkX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFydF9kaWUsCi0gCSAg ICB9Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgRFdfQVRfTUlQU19saW5rYWdlX25hbWU6Ci0tCSAgcGFy dF9kaWUtPm5hbWUgPSBEV19TVFJJTkcgKCZhdHRyKTsKLSsJICBpZiAoY3UtPmxhbmd1YWdlID09 IGxhbmd1YWdlX2FkYSkKLSsJICAgIHBhcnRfZGllLT5uYW1lID0gRFdfU1RSSU5HICgmYXR0cik7 Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgRFdfQVRfbG93X3BjOgotIAkgIGhhc19sb3dfcGNfYXR0ciA9 IDE7Ci1AQCAtNjk3MCw3ICs3NjgzLDggQEAgZml4dXBfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0 aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKLSAgIC8qIElmIHdlIGZvdW5kIGEgcmVmZXJlbmNlIGF0 dHJpYnV0ZSBhbmQgdGhlIERJRSBoYXMgbm8gbmFtZSwgdHJ5Ci0gICAgICB0byBmaW5kIGEgbmFt ZSBpbiB0aGUgcmVmZXJyZWQgdG8gRElFLiAgKi8KLSAKLS0gIGlmIChwYXJ0X2RpZS0+bmFtZSA9 PSBOVUxMICYmIHBhcnRfZGllLT5oYXNfc3BlY2lmaWNhdGlvbikKLSsgIGlmIChwYXJ0X2RpZS0+ aGFzX3NwZWNpZmljYXRpb24KLSsgICAgICAmJiAocGFydF9kaWUtPm5hbWUgPT0gTlVMTCB8fCAh cGFydF9kaWUtPmlzX2V4dGVybmFsKSkKLSAgICAgewotICAgICAgIHN0cnVjdCBwYXJ0aWFsX2Rp ZV9pbmZvICpzcGVjX2RpZTsKLSAKLUBAIC04MzEyLDEwICs5MDI2LDEyIEBAIHZhcl9kZWNvZGVf bG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLSAg ICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVtb3J5IGxvY2F0aW9u IGlzCi0gICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9jaywgZXRjLikuICBU aGVuIGFnYWluLCBpdCBtaWdodAotICAgICAgbm90IGJlIHdvcnRod2hpbGUuICBJJ20gYXNzdW1p bmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKLS0gICAgIG9yIG1lbW9yeSBudW1i ZXJzIHNob3cgbWUgb3RoZXJ3aXNlLiAgKi8KLSsgICAgIG9yIG1lbW9yeSBudW1iZXJzIHNob3cg bWUgb3RoZXJ3aXNlLgotKyAgICAgCi0rICAgICBTWU1CT0xfQ0xBU1MgbWF5IGdldCBvdmVycmlk ZW4gYnkgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkLiAgKi8KLSAKLS0gIGR3YXJmMl9zeW1i b2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7Ci0gICBTWU1CT0xfQ0xBU1MgKHN5bSkg PSBMT0NfQ09NUFVURUQ7Ci0rICBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKGF0dHIsIHN5 bSwgY3UpOwogIH0KICAKLSAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBEV0FSRiBpbmZvcm1hdGlv biBlbnRyeSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCi1AQCAtODMzNywyMSArOTA1MywyNyBAQCBu ZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorLS8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRSwg aWYgaXQgaXMgYXNzb2NpYXRlZCB3aXRoCistICAgT0JKRklMRS4gIFJldHVybiBhIG5ldyB0eXBl IGFsbG9jYXRlZCB1c2luZyBtYWxsb2MsIGEgc2F2ZWQgdHlwZSBpZgorLSAgIHdlIGhhdmUgYWxy ZWFkeSB2aXNpdGVkIFRZUEUgKHVzaW5nIENPUElFRF9UWVBFUyksIG9yIFRZUEUgaWYgaXQgaXMK Ky0gICBub3QgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUuICAqLworKy8qIEEgaGVscGVyIGZvciBj b3B5X3R5cGVfcmVjdXJzaXZlLiAgVGhpcyBkb2VzIGFsbCB0aGUgd29yay4gIE9CSkZJTEUgaXMg dXNlZAorKyAgIG9ubHkgZm9yIGFuIGFzc2VydGlvbiBjaGVja2luZy4gICovCiAgCi0gICBiYXNl YWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQg KG9iamZpbGUpKTsKKy1zdHJ1Y3QgdHlwZSAqCistY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIAorLQkJICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKKy0JCSAgICAg aHRhYl90IGNvcGllZF90eXBlcykKKytzdGF0aWMgc3RydWN0IHR5cGUgKgorK2NvcHlfdHlwZV9y ZWN1cnNpdmVfMSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIAorKwkJICAgICAgIHN0cnVjdCB0 eXBlICp0eXBlLAorKwkJICAgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCisgeworICAgc3RydWN0 IHR5cGVfcGFpciAqc3RvcmVkLCBwYWlyOworICAgdm9pZCAqKnNsb3Q7CisgICBzdHJ1Y3QgdHlw ZSAqbmV3X3R5cGU7CiAgCi0tICBpZiAoZGllLT50YWcgIT0gRFdfVEFHX25hbWVzcGFjZSkKLS0g ICAgbmFtZSA9IGR3YXJmMl9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwotLSAgZWxzZQotLSAgICBu YW1lID0gVFlQRV9OQU1FICh0eXBlKTsKLS0KLSsgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBj dSk7Ci0gICBpZiAobmFtZSkKLSAgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VuYW1l OwotKwotICAgICAgIHN5bSA9IChzdHJ1Y3Qgc3ltYm9sICopIG9ic3RhY2tfYWxsb2MgKCZvYmpm aWxlLT5vYmpmaWxlX29ic3RhY2ssCi0gCQkJCQkgICAgIHNpemVvZiAoc3RydWN0IHN5bWJvbCkp OwotICAgICAgIE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKLSAgICAgICBtZW1zZXQgKHN5 bSwgMCwgc2l6ZW9mIChzdHJ1Y3Qgc3ltYm9sKSk7Ci0rICAgICAgLyogU29tZSBtZXRob2RzIGFy ZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLwot KyAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX21pc3NpbmdfZnVuY3M7 CistICBpZiAoISBUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpKQorKyAgaWYgKCEgVFlQRV9PQkpG SUxFX09XTkVEICh0eXBlKSAmJiAhVFlQRV9EWU5BTUlDICh0eXBlKSkKKyAgICAgcmV0dXJuIHR5 cGU7CiAgCi0gICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFtZSdz IGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KLSAgICAgICBTWU1CT0xfTEFOR1VBR0UgKHN5 bSkgPSBjdS0+bGFuZ3VhZ2U7Ci0tICAgICAgU1lNQk9MX1NFVF9OQU1FUyAoc3ltLCBuYW1lLCBz dHJsZW4gKG5hbWUpLCAwLCBvYmpmaWxlKTsKLSsgICAgICBsaW5rYWdlbmFtZSA9IGR3YXJmMl9w aHlzbmFtZSAobmFtZSwgZGllLCBjdSk7Ci0rICAgICAgU1lNQk9MX1NFVF9OQU1FUyAoc3ltLCBs aW5rYWdlbmFtZSwgc3RybGVuIChsaW5rYWdlbmFtZSksIDAsIG9iamZpbGUpOwotKyAgICAgIGlm IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKLSsJewotKwkgIFNZTUJPTF9DUExV U19ERU1BTkdMRURfTkFNRSAoc3ltKSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSk7Ci0rCSAg U1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSA9IGZvcnRyYW5fbW9kdWxlX2xpbmthZ2VfbmFtZSAo ZGllLCBjdSk7Ci0rCX0KKyAgIC8qIFRoaXMgdHlwZSBzaG91bGRuJ3QgYmUgcG9pbnRpbmcgdG8g YW55IHR5cGVzIGluIG90aGVyIG9iamZpbGVzOworQEAgLTMwNDcsOCArMzIwNSwxMCBAQCBjb3B5 X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAgIG5ld190eXBlID0g YWxsb2NfdHlwZV9hcmNoIChnZXRfdHlwZV9hcmNoICh0eXBlKSk7CiAgCi0gICAgICAgLyogRGVm YXVsdCBhc3N1bXB0aW9ucy4KLSAgICAgICAgICBVc2UgdGhlIHBhc3NlZCB0eXBlIG9yIGRlY29k ZSBpdCBmcm9tIHRoZSBkaWUuICAqLwotQEAgLTg0NTEsNyArOTE3MywyNCBAQCBuZXdfc3ltYm9s IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQotIAkgICAgICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKLSAJ ICAgICAgYXR0cjIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOwotIAkg ICAgICBpZiAoYXR0cjIgJiYgKERXX1VOU05EIChhdHRyMikgIT0gMCkpCi0tCQlhZGRfc3ltYm9s X3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKLSsJCXsKLSsJCSAgc3RydWN0IHBlbmRp bmcgKipsaXN0X3RvX2FkZDsKLSsKLSsJCSAgLyogV29ya2Fyb3VuZCBnZm9ydHJhbiBQUiBkZWJ1 Zy80MDA0MCAtIGl0IHVzZXMKLSsJCSAgICAgRFdfQVRfbG9jYXRpb24gZm9yIHZhcmlhYmxlcyBp biAtZlBJQyBsaWJyYXJpZXMgd2hpY2ggbWF5Ci0rCQkgICAgIGdldCBvdmVycmlkZW4gYnkgb3Ro ZXIgbGlicmFyaWVzL2V4ZWN1dGFibGUgYW5kIGdldAotKwkJICAgICBhIGRpZmZlcmVudCBhZGRy ZXNzLiAgUmVzb2x2ZSBpdCBieSAuZHluc3ltIGluc3RlYWQuICAqLwotKwotKwkJICBpZiAoY3Ut Pmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4gJiYgZGllLT5wYXJlbnQKLSsJCSAgICAgICYm IGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX21vZHVsZSkKLSsJCSAgICBTWU1CT0xfQ0xBU1Mg KHN5bSkgPSBMT0NfVU5SRVNPTFZFRDsKLSsKLSsJCSAgLyogQSB2YXJpYWJsZSB3aXRoIERXX0FU X2V4dGVybmFsIGlzIG5ldmVyIHN0YXRpYywgYnV0IGl0Ci0rCQkgICAgIG1heSBiZSBibG9jay1z Y29wZWQuICAqLwotKwkJICBsaXN0X3RvX2FkZCA9IChjdS0+bGlzdF9pbl9zY29wZSA9PSAmZmls ZV9zeW1ib2xzCi0rCQkJCSA/ICZnbG9iYWxfc3ltYm9scyA6IGN1LT5saXN0X2luX3Njb3BlKTsK LSsJCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGxpc3RfdG9fYWRkKTsKLSsJCX0KLSAJICAg ICAgZWxzZQotIAkJYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGN1LT5saXN0X2luX3Njb3BlKTsK LSAJICAgIH0KLUBAIC04NTc2LDcgKzkzMTUsOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkgIH0K LSAJICBicmVhazsKLSAJY2FzZSBEV19UQUdfdHlwZWRlZjoKLS0JICBTWU1CT0xfTElOS0FHRV9O QU1FIChzeW0pID0gKGNoYXIgKikgZHdhcmYyX2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci0rCSAgU1lN Qk9MX0xJTktBR0VfTkFNRSAoc3ltKQotKwkgICAgPSAoY2hhciAqKSBkd2FyZjJfZnVsbF9uYW1l IChuYW1lLCBkaWUsIGN1KTsKLSAJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfVFlQRURFRjsK LSAJICBTWU1CT0xfRE9NQUlOIChzeW0pID0gVkFSX0RPTUFJTjsKLSAJICBhZGRfc3ltYm9sX3Rv X2xpc3QgKHN5bSwgY3UtPmxpc3RfaW5fc2NvcGUpOwotQEAgLTg1ODgsNyArOTMyOCw4IEBAIG5l d19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCi0gCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGN1LT5saXN0X2lu X3Njb3BlKTsKLSAJICBicmVhazsKLSAJY2FzZSBEV19UQUdfZW51bWVyYXRvcjoKLS0JICBTWU1C T0xfTElOS0FHRV9OQU1FIChzeW0pID0gKGNoYXIgKikgZHdhcmYyX2Z1bGxfbmFtZSAoZGllLCBj dSk7Ci0rCSAgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKQotKwkgICAgPSAoY2hhciAqKSBkd2Fy ZjJfZnVsbF9uYW1lIChuYW1lLCBkaWUsIGN1KTsKLSAJICBhdHRyID0gZHdhcmYyX2F0dHIgKGRp ZSwgRFdfQVRfY29uc3RfdmFsdWUsIGN1KTsKLSAJICBpZiAoYXR0cikKLSAJICAgIHsKLUBAIC04 NjEyLDYgKzkzNTMsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAJICBTWU1CT0xfQ0xBU1MgKHN5 bSkgPSBMT0NfVFlQRURFRjsKLSAJICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9z eW1ib2xzKTsKLSAJICBicmVhazsKLSsJY2FzZSBEV19UQUdfbW9kdWxlOgotKwkgIFNZTUJPTF9D TEFTUyAoc3ltKSA9IExPQ19TVEFUSUM7Ci0rCSAgU1lNQk9MX0RPTUFJTiAoc3ltKSA9IE1PRFVM RV9ET01BSU47Ci0rCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7 Ci0rCSAgYnJlYWs7Ci0gCWRlZmF1bHQ6Ci0gCSAgLyogTm90IGEgdGFnIHdlIHJlY29nbml6ZS4g IEhvcGVmdWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwotIAkgICAgIHRyYXNoIGRhdGEsIGJ1dCBz aW5jZSB3ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1AQCAtODYyNSw4ICs5Mzcx LDcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICAvKiBGb3IgdGhlIGJlbmVmaXQgb2Ygb2xk IHZlcnNpb25zIG9mIEdDQywgY2hlY2sgZm9yIGFub255bW91cwotIAkgbmFtZXNwYWNlcyBiYXNl ZCBvbiB0aGUgZGVtYW5nbGVkIG5hbWUuICAqLwotICAgICAgIGlmICghcHJvY2Vzc2luZ19oYXNf bmFtZXNwYWNlX2luZm8KLS0JICAmJiBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMKLS0J ICAmJiBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZSwgY3UpICE9IE5V TEwpCi0rCSAgJiYgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQotIAljcF9zY2FuX2Zv cl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoc3ltKTsKLSAgICAgfQotICAgcmV0dXJuIChzeW0pOwot QEAgLTg5MzgsMTIgKzk2ODMsMTggQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICBjYXNlIERXX1RBR19uYW1lc3BhY2U6Ci0g ICAgICAgdGhpc190eXBlID0gcmVhZF9uYW1lc3BhY2VfdHlwZSAoZGllLCBjdSk7Ci0gICAgICAg YnJlYWs7Ci0rICAgIGNhc2UgRFdfVEFHX21vZHVsZToKLSsgICAgICB0aGlzX3R5cGUgPSByZWFk X21vZHVsZV90eXBlIChkaWUsIGN1KTsKLSsgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLSAg ICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oInVuZXhwZWN0ZWQgdGFnIGlu IHJlYWRfdHlwZV9kaWU6ICclcyciKSwKLSAJCSBkd2FyZl90YWdfbmFtZSAoZGllLT50YWcpKTsK LSAgICAgICBicmVhazsKLSAgICAgfQorICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRv IHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCistICAgICB3ZSBlbmNvdW50ZXIg dGhpcyB0eXBlIGFnYWluIGR1cmluZyBhIHJlY3Vyc2l2ZSBjYWxsIGJlbG93LiAgKi8KKy0gIHN0 b3JlZCA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAo c3RydWN0IHR5cGVfcGFpcikpOworKyAgICAgd2UgZW5jb3VudGVyIHRoaXMgdHlwZSBhZ2FpbiBk dXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gIE1lbW9yeSBjb3VsZAorKyAgICAgYmUgYWxs b2NhdGVkIGZyb20gT0JKRklMRSBpbiB0aGUgY2FzZSB3ZSB3aWxsIGJlIHJlbW92aW5nIE9CSkZJ TEUsIHRoaXMKKysgICAgIG9wdGltaXphdGlvbiBpcyBtaXNzZWQgYW5kIHhmcmVlIGlzIGNhbGxl ZCBmb3IgaXQgZnJvbSBDT1BJRURfVFlQRVMuICAqLworKyAgc3RvcmVkID0geG1hbGxvYyAoc2l6 ZW9mICgqc3RvcmVkKSk7CisgICBzdG9yZWQtPm9sZCA9IHR5cGU7CisgICBzdG9yZWQtPm5ldyA9 IG5ld190eXBlOworICAgKnNsb3QgPSBzdG9yZWQ7CitAQCAtMzA1OSw2ICszMjE5LDE5IEBAIGNv cHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorICAgVFlQRV9PQkpG SUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOworICAgVFlQRV9PV05FUiAobmV3X3R5cGUpLmdkYmFy Y2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKLSsgIGlmICh0aGlzX3R5cGUpCi0rICAgIGZp bmFsaXplX3R5cGUgKHRoaXNfdHlwZSk7CisrICAvKiBUWVBFX01BSU5fVFlQRSBtZW1vcnkgY29w eSBhYm92ZSByZXdyb3RlIHRoZSBUWVBFX0RJU0NBUkRBQkxFIGZsYWcgc28gd2UKKysgICAgIG5l ZWQgdG8gaW5pdGlhbGl6ZSBpdCBhZ2Fpbi4gIEFuZCBldmVuIGlmIFRZUEUgd2FzIGFscmVhZHkg ZGlzY2FyZGFibGUKKysgICAgIE5FV19UWVBFIHNvIGZhciBpcyBub3QgcmVnaXN0ZXJlZCBpbiBU WVBFX0RJU0NBUkRBQkxFX1RBQkxFLiAgKi8KKysgIFRZUEVfRElTQ0FSREFCTEUgKG5ld190eXBl KSA9IDA7CisrICBzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAobmV3X3R5cGUpOwogKwotICAgcmV0 dXJuIHRoaXNfdHlwZTsKLSB9Ci0gCi1AQCAtOTAxMSw2ICs5NzYyLDEwIEBAIGRldGVybWluZV9w cmVmaXggKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAg ICBjYXNlIERXX1RBR19uYW1lc3BhY2U6Ci0gCXBhcmVudF90eXBlID0gcmVhZF90eXBlX2RpZSAo cGFyZW50LCBjdSk7Ci0gCS8qIFdlIGdpdmUgYSBuYW1lIHRvIGV2ZW4gYW5vbnltb3VzIG5hbWVz cGFjZXMuICAqLwotKwotKwkvKiBHKysgNC4xIHByb2R1Y2VkIERXX1RBR19uYW1lc3BhY2Ugd2l0 aCBEV19BVF9uYW1lICI6OiIuICAqLwotKwlpZiAoc3RyY21wIChUWVBFX1RBR19OQU1FIChwYXJl bnRfdHlwZSksICI6OiIpID09IDApCi0rCSAgcmV0dXJuICIiOwotIAlyZXR1cm4gVFlQRV9UQUdf TkFNRSAocGFyZW50X3R5cGUpOwotICAgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci0gICAg ICAgY2FzZSBEV19UQUdfaW50ZXJmYWNlX3R5cGU6Ci1AQCAtOTAyNSw3ICs5NzgwLDcgQEAgZGV0 ZXJtaW5lX3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotIAkgICAgIFNvIGl0IGRvZXMgbm90IG5lZWQgYSBwcmVmaXguICAqLwotIAkgIHJldHVybiAi IjsKLSAgICAgICBkZWZhdWx0OgotLQlyZXR1cm4gZGV0ZXJtaW5lX3ByZWZpeCAocGFyZW50LCBj dSk7Ci0rICAgICAgICByZXR1cm4gZGV0ZXJtaW5lX3ByZWZpeCAocGFyZW50LCBjdSk7Ci0gICAg ICAgfQotIH0KLSAKLUBAIC05MDc4LDE3ICs5ODMzLDM3IEBAIHNpYmxpbmdfZGllIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSkKLSAgIHJldHVybiBkaWUtPnNpYmxpbmc7Ci0gfQotIAotLS8qIEdldCBs aW5rYWdlIG5hbWUgb2YgYSBkaWUsIHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZC4gICovCi0rLyog UmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgLnN5bXRhYiBuYW1lIGZvciBzeW1ib2xzIGNvbnRh aW5lZCBpbiBGb3J0cmFuCi0rICAgbW9kdWxlcy4gIFJldHVybiBEV0FSRjJfTkFNRSBvdGhlcndp c2UuICAqLwotIAotIHN0YXRpYyBjaGFyICoKLS1kd2FyZjJfbGlua2FnZV9uYW1lIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rZm9ydHJhbl9tb2R1bGVfbGlu a2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ewotLSAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSsgIGNoYXIgKm5hbWU7CisrICAvKiBQcmUt Y2xlYXIgdGhlIGZpZWxkcyBwcm9jZXNzZWQgYnkgZGVsZXRlX21haW5fdHlwZS4gIElmIERXQVJG IGJsb2NrCisrICAgICBldmFsdWF0aW9ucyBiZWxvdyBjYWxsIGVycm9yIHdlIHdvdWxkIGxlYXZl IGFuIHVuZnJlZWFibGUgVFlQRS4gICovCisrICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkg PSBOVUxMOworKyAgVFlQRV9WUFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSBOVUxMOworKyAgVFlQ RV9ORklFTERTIChuZXdfdHlwZSkgPSAwOworKyAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IE5V TEw7CiArCi0rICBnZGJfYXNzZXJ0IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbik7 CisgICBpZiAoVFlQRV9OQU1FICh0eXBlKSkKKyAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4 c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsKKyAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkK K0BAIC0zMDY3LDEyICszMjQwLDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9J TlNUQU5DRV9GTEFHUyAodHlwZSk7CisgICBUWVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9M RU5HVEggKHR5cGUpOworIAorKyAgaWYgKFRZUEVfQUxMT0NBVEVEIChuZXdfdHlwZSkpCisrICAg IHsKKysgICAgICBnZGJfYXNzZXJ0ICghVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkpOwog KwotKyAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKKysgICAgICBpZiAoIWR3YXJmX2xv Y2V4cHJfYmF0b25fZXZhbCAoVFlQRV9BTExPQ0FURUQgKG5ld190eXBlKSkpCisrICAgICAgICBU WVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSA9IDE7CisrICAgICAgVFlQRV9BTExPQ0FURUQg KG5ld190eXBlKSA9IE5VTEw7CisrICAgIH0KICsKLSsgIGlmIChuYW1lICYmIGRpZS0+cGFyZW50 ICYmIGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX21vZHVsZSkKKysgIGlmIChUWVBFX0FTU09D SUFURUQgKG5ld190eXBlKSkKICsgICAgewotKyAgICAgIGNoYXIgKm1vZHVsZV9uYW1lID0gZHdh cmYyX25hbWUgKGRpZS0+cGFyZW50LCBjdSk7CisrICAgICAgZ2RiX2Fzc2VydCAoIVRZUEVfTk9U X0FTU09DSUFURUQgKG5ld190eXBlKSk7CiArCi0rICAgICAgaWYgKG1vZHVsZV9uYW1lKQotKwl7 Ci0rCSAgY2hhciAqcmV0dmFsOwotIAotLSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FU X01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0tICBpZiAoYXR0ciAmJiBEV19TVFJJTkcgKGF0dHIp KQotLSAgICByZXR1cm4gRFdfU1RSSU5HIChhdHRyKTsKLS0gIHJldHVybiBkd2FyZjJfbmFtZSAo ZGllLCBjdSk7Ci0rCSAgLyogYF9fbW9kdWxlbmFtZV9NT0RfdmFyaWFibGVuYW1lMCcuICAqLwot KwkgIHJldHZhbCA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNr LAotKwkJCQkgIDIgKyBzdHJsZW4gKG1vZHVsZV9uYW1lKSArIDUgKyBzdHJsZW4gKG5hbWUpCi0r CQkJCSAgKyAxKTsKLSsJICBzcHJpbnRmIChyZXR2YWwsICJfXyVzX01PRF8lcyIsIG1vZHVsZV9u YW1lLCBuYW1lKTsKKysgICAgICBpZiAoIWR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoVFlQRV9B U1NPQ0lBVEVEIChuZXdfdHlwZSkpKQorKyAgICAgICAgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3 X3R5cGUpID0gMTsKKysgICAgICBUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSA9IE5VTEw7Cisr ICAgIH0KICsKLSsJICByZXR1cm4gcmV0dmFsOworKyAgaWYgKCFUWVBFX0RBVEFfTE9DQVRJT05f SVNfQUREUiAobmV3X3R5cGUpCisrICAgICAgJiYgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JM T0NLIChuZXdfdHlwZSkpCisrICAgIHsKKysgICAgICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChu ZXdfdHlwZSkKKysgICAgICAgICAgfHwgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpKQor KwlUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBlKSA9IE5VTEw7CisrICAg ICAgZWxzZQorKwl7CisrCSAgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgKG5ld190eXBlKSA9 IDE7CisrCSAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKG5ld190eXBlKSA9IGR3YXJmX2xvY2V4 cHJfYmF0b25fZXZhbAorKwkJCQkgICAgKFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAo bmV3X3R5cGUpKTsKICsJfQogKyAgICB9CiArCi0rICByZXR1cm4gbmFtZTsKLSB9CisgICAvKiBD b3B5IHRoZSBmaWVsZHMuICAqLworICAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCisgICAgIHsK KyAgICAgICBpbnQgaSwgbmZpZWxkczsKICAKLSAvKiBHZXQgbmFtZSBvZiBhIGRpZSwgcmV0dXJu IE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KLUBAIC0xMTQzNiw2NCArMTIyMTEsOTQgQEAgYXR0cl9m b3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQorKyAgICAgIC8qIFRZUEVf Q09ERV9SQU5HRSB1c2VzIFRZUEVfUkFOR0VfREFUQSBvZiB0aGUgdW5pb24gd2l0aCBUWVBFX0ZJ RUxEUy4gICovCisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NP REVfUkFOR0UpOworKworICAgICAgIG5maWVsZHMgPSBUWVBFX05GSUVMRFMgKHR5cGUpOworKyAg ICAgIFRZUEVfTkZJRUxEUyAobmV3X3R5cGUpID0gbmZpZWxkczsKKyAgICAgICBUWVBFX0ZJRUxE UyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKKyAgICAgICBm b3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQorIAl7CitAQCAtMzA4MSw4ICszMjkwLDggQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCSAgVFlQRV9G SUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGkp OworIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQorIAkgICAgVFlQRV9GSUVMRF9U WVBFIChuZXdfdHlwZSwgaSkKKy0JICAgICAgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxl LCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAorLQkJCQkgICAgIGNvcGllZF90eXBlcyk7Cisr CSAgICAgID0gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLCBUWVBFX0ZJRUxEX1RZUEUg KHR5cGUsIGkpLAorKwkJCQkgICAgICAgY29waWVkX3R5cGVzKTsKKyAJICBpZiAoVFlQRV9GSUVM RF9OQU1FICh0eXBlLCBpKSkKKyAJICAgIFRZUEVfRklFTERfTkFNRSAobmV3X3R5cGUsIGkpID0g CisgCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOworQEAgLTMxMDks MjQgKzMzMTgsMTY2IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAorIAl9CiAgICAgIH0KLSB9CiAgCi0rLyogQ29udmVydCBEV19CTE9DSyBpbnRvIHN0cnVj dCBkd2FyZjJfbG9jZXhwcl9iYXRvbi4gIEFUVFIgbXVzdCBiZSBhIERXX0JMT0NLCi0rICAgYXR0 cmlidXRlIHR5cGUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KgotK2R3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRv biAqYmF0b247Ci0rCi0rICBnZGJfYXNzZXJ0IChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKTsK KysgIC8qIEJvdGggRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0sgYW5kIFRZUEVfUkFOR0VfSElH SF9CT1VORF9JU19DT1VOVCB3ZXJlCisrICAgICBwb3NzaWJseSBjb252ZXJ0ZWQuICAqLworKyAg VFlQRV9EWU5BTUlDIChuZXdfdHlwZSkgPSAwOwogKwotKyAgYmF0b24gPSBvYnN0YWNrX2FsbG9j ICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqYmF0b24pKTsKLSsgIGJh dG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotKyAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7 CisgICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJvdW5kcyBpbmZvcm1hdGlvbi4gKi8K Ky0gIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKKysgIGlmIChUWVBF X0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCisgICAgIHsKKyAgICAgICBUWVBF X1JBTkdFX0RBVEEgKG5ld190eXBlKSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHJhbmdlX2Jv dW5kcykpOworICAgICAgICpUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9ICpUWVBFX1JBTkdF X0RBVEEgKHR5cGUpOwogKwotKyAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUg YmxvY2sncyBkYXRhIHBvaW50ZXIKLSsgICAgIGhlcmUsIG5vdCB0aGUgYWN0dWFsIGRhdGEuICBX ZSdyZSBzdGlsbCBwb2ludGluZyBpbnRvIHRoZQotKyAgICAgaW5mb19idWZmZXIgZm9yIFNZTSdz IG9iamZpbGU7IHJpZ2h0IG5vdyB3ZSBuZXZlciByZWxlYXNlCi0rICAgICB0aGF0IGJ1ZmZlciwg YnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLSsgICAgIG5lZWQgdG8g Y2hhbmdlLiAgKi8KLSsgIGJhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOwotKyAg YmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0rICBnZGJfYXNzZXJ0IChiYXRv bi0+c2l6ZSA9PSAwIHx8IGJhdG9uLT5kYXRhICE9IE5VTEwpOworKyAgICAgIHN3aXRjaCAoVFlQ RV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kKQorKwl7CisrCWNhc2UgUkFOR0VfQk9V TkRfS0lORF9DT05TVEFOVDoKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLOgorKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBi b3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUg Y29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5k IFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KKysJICAgICAqLwor KwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lB VEVEIChuZXdfdHlwZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAg eworKwkgICAgICAvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0IGhvdyB0byBmaW5k IHRoZSBsYW5ndWFnZT8gICovCisrCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSAw OworKwkgICAgICBUWVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7CisrCSAg ICB9CisrCSAgZWxzZQorKwkgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IGR3YXJmX2xv Y2V4cHJfYmF0b25fZXZhbAorKwkJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy51 LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LmtpbmQg PSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkgIGJyZWFrOworKwljYXNlIFJBTkdFX0JP VU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKKysJICB7CisrCSAgICBDT1JFX0FERFIgYWRkcjsKICsK LSsgIHJldHVybiBiYXRvbjsKKysJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24n IGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQg dG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgorKwkgICAgICAgVFlQRV9OT1Rf QUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUu CisrCSAgICAgICAqLworKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkK KysJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3Rh Y2tfZnJhbWVzICgpCisrCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsCisrCQkg IChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0 LAorKwkJICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3Qu dHlwZSwgJmFkZHIpKQorKwkgICAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID0gYWRkcjsK KysJICAgIGVsc2UKKysJICAgICAgeworKwkJLyogV2Ugc2hvdWxkIHNldCAxIGZvciBGb3J0cmFu IGJ1dCBob3cgdG8gZmluZCB0aGUgbGFuZ3VhZ2U/ICAqLworKwkJVFlQRV9MT1dfQk9VTkQgKG5l d190eXBlKSA9IDA7CisrCQlUWVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7 CisrCSAgICAgIH0KKysJICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cua2luZCA9 IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7CisrCSAgfQorKwkgIGJyZWFrOworKwl9CisrCisr ICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kKQorKwl7 CisrCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKKysJICBicmVhazsKKysJY2FzZSBS QU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgorKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4 cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBF X05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3Ig VFlQRS4KKysJICAgICAqLworKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8 fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tf ZnJhbWVzICgpKQorKwkgICAgeworKwkgICAgICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9 IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgLSAxOworKwkgICAgICBUWVBFX0hJR0hfQk9VTkRf VU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOworKwkgICAgfQorKwkgIGVsc2UKKysJICAgIFRZUEVf SElHSF9CT1VORCAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJICAg ICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrKTsKKysJ ICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lO RF9DT05TVEFOVDsKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xP Q0xJU1Q6CisrCSAgeworKwkgICAgQ09SRV9BRERSIGFkZHI7CisrCisrCSAgICAvKiBgc3RydWN0 IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJ ICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURF Ri4KKysJICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBh cmUgbm90IHZhbGlkIGZvciBUWVBFLgorKwkgICAgICAgKi8KKysJICAgIGlmICghIFRZUEVfTk9U X0FMTE9DQVRFRCAobmV3X3R5cGUpCisrCSAgICAgICAgJiYgISBUWVBFX05PVF9BU1NPQ0lBVEVE IChuZXdfdHlwZSkgJiYgaGFzX3N0YWNrX2ZyYW1lcyAoKQorKwkgICAgICAgICYmIGR3YXJmX2xv Y2xpc3RfYmF0b25fZXZhbAorKwkJICAgICAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5o aWdoLnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0LAorKwkJICAgICAgIFRZUEVfUkFOR0VfREFUQSAo bmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC50eXBlLAorKwkJICAgICAgICZhZGRyKSkK KysJICAgICAgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgPSBhZGRyOworKwkgICAgZWxzZQor KwkgICAgICB7CisrCQlUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5E IChuZXdfdHlwZSkgLSAxOworKwkJVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUp ID0gMTsKKysJICAgICAgfQorKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gu a2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7CisrCSAgfQorKwkgIGJyZWFrOworKwl9 CisrCisrICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJp ZGUua2luZCkKKysJeworKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ6CisrCSAgYnJl YWs7CisrCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzoKKysJICAvKiBgc3RydWN0 IGR3YXJmMl9sb2NleHByX2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJ ICAgICBpdCBpcyBleHBlY3RlZCB0byBiZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYu CisrCSAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBu b3QgdmFsaWQgZm9yIFRZUEUuCisrCSAgICAgKi8KKysJICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVE IChuZXdfdHlwZSkgfHwgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpCisrCSAgICAgIHx8 ICEgaGFzX3N0YWNrX2ZyYW1lcyAoKSkKKysJICAgIFRZUEVfQllURV9TVFJJREUgKG5ld190eXBl KSA9IDA7CisrCSAgZWxzZQorKwkgICAgVFlQRV9CWVRFX1NUUklERSAobmV3X3R5cGUpID0gZHdh cmZfbG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5i eXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBl KS0+Ynl0ZV9zdHJpZGUua2luZAorKwkgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwor KwkgIGJyZWFrOworKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKKysJICB7 CisrCSAgICBDT1JFX0FERFIgYWRkciA9IDA7CisrCisrCSAgICAvKiBgc3RydWN0IGR3YXJmMl9s b2NsaXN0X2JhdG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICAgIGl0 IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAg ICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZh bGlkIGZvciBUWVBFLgorKwkgICAgICAgKi8KKysJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRF RCAobmV3X3R5cGUpCisrCQkmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBo YXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAgICBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKKysJ ICAgICAgIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9s b2NsaXN0LmxvY2xpc3QsCisrCQlUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJp ZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUsCisrCQkmYWRkcik7CisrCSAgICBUWVBFX0JZVEVfU1RS SURFIChuZXdfdHlwZSkgPSBhZGRyOworKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSkt PmJ5dGVfc3RyaWRlLmtpbmQKKysJICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwor KwkgIH0KKysJICBicmVhazsKKysJfQorKworKyAgICAgIC8qIENvbnZlcnQgVFlQRV9SQU5HRV9I SUdIX0JPVU5EX0lTX0NPVU5UIGludG8gYSByZWd1bGFyIGJvdW5kLiAgKi8KKysgICAgICBpZiAo VFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIChuZXdfdHlwZSkpCisrCXsKKysJICBUWVBF X0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkKKysJCQkJ ICAgICAgICsgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgLSAxOworKwkgIFRZUEVfUkFOR0Vf SElHSF9CT1VORF9JU19DT1VOVCAobmV3X3R5cGUpID0gMDsKKysJfQorICAgICB9CisgCisgICAv KiBDb3B5IHBvaW50ZXJzIHRvIG90aGVyIHR5cGVzLiAgKi8KKyAgIGlmIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSkKKyAgICAgVFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUpID0gCistICAgICAg Y29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgCistCQkJICAgVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSksCistCQkJICAgY29waWVkX3R5cGVzKTsKKysgICAgICBjb3B5X3R5cGVfcmVjdXJzaXZl XzEgKG9iamZpbGUsIAorKwkJCSAgICAgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCisrCQkJICAg ICBjb3BpZWRfdHlwZXMpOworICAgaWYgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkpCisgICAg IFRZUEVfVlBUUl9CQVNFVFlQRSAobmV3X3R5cGUpID0gCistICAgICAgY29weV90eXBlX3JlY3Vy c2l2ZSAob2JqZmlsZSwKKy0JCQkgICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLAorLQkJCSAg IGNvcGllZF90eXBlcyk7CisrICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLAor KwkJCSAgICAgVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSwKKysJCQkgICAgIGNvcGllZF90eXBl cyk7CisgICAvKiBNYXliZSBjb3B5IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMuCisgCisgICAgICBO T1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRz IGxpa2UKK0BAIC0zMTQzLDYgKzM0OTQsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCisgICByZXR1cm4gbmV3X3R5cGU7CisgfQorIAorKy8qIFJlY3Vy c2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRS4gIFJldHVybiBhIG5ldyB0eXBlIGFsbG9jYXRl ZCB1c2luZworKyAgIG1hbGxvYywgYSBzYXZlZCB0eXBlIGlmIHdlIGhhdmUgYWxyZWFkeSB2aXNp dGVkIFRZUEUgKHVzaW5nIENPUElFRF9UWVBFUyksCisrICAgb3IgVFlQRSBpZiBpdCBpcyBub3Qg YXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUuICAqLworKworK3N0cnVjdCB0eXBlICoKKytjb3B5X3R5 cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCSAgICAgaHRhYl90IGNvcGllZF90 eXBlcykKKyt7CisrICByZXR1cm4gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChUWVBFX09CSkZJTEUg KHR5cGUpLCB0eXBlLCBjb3BpZWRfdHlwZXMpOwogK30KICsKLStzdGF0aWMgc3RydWN0IGR3YXJm Ml9sb2NsaXN0X2JhdG9uICoKLStkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uIChzdHJ1Y3Qg YXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAvKiBNYWtlIGEgY29weSBv ZiB0aGUgZ2l2ZW4gVFlQRSwgZXhjZXB0IHRoYXQgdGhlIHBvaW50ZXIgJiByZWZlcmVuY2UKKyAg ICB0eXBlcyBhcmUgbm90IHByZXNlcnZlZC4KKyAgICAKK0BAIC0zMTY1LDYgKzM1MjcsMTk5IEBA IGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCisgICByZXR1cm4gbmV3X3R5cGU7 CisgfQorIAorKy8qIENhbGxiYWNrIHR5cGUgZm9yIG1haW5fdHlwZV9jcmF3bC4gICovCisrdHlw ZWRlZiBpbnQgKCptYWluX3R5cGVfY3Jhd2xfaXRlcikgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lk ICpkYXRhKTsKKysKKysvKiBJdGVyYXRlIGFsbCBtYWluX3R5cGUgc3RydWN0dXJlcyByZWFjaGFi bGUgdGhyb3VnaCBhbnkgYHN0cnVjdCB0eXBlIConIGZyb20KKysgICBUWVBFLiAgSVRFUiB3aWxs IGJlIGNhbGxlZCBvbmx5IGZvciBvbmUgdHlwZSBvZiBlYWNoIG1haW5fdHlwZSwgdXNlCisrICAg VFlQRV9DSEFJTiB0cmF2ZXJzYWwgdG8gZmluZCBhbGwgdGhlIHR5cGUgaW5zdGFuY2VzLiAgSVRF UiBpcyBiZWluZyBjYWxsZWQKKysgICBmb3IgZWFjaCBtYWluX3R5cGUgZm91bmQuICBJVEVSIHJl dHVybnMgbm9uLXplcm8gaWYgbWFpbl90eXBlX2NyYXdsIHNob3VsZAorKyAgIGRlcHRoLWZpcnN0 IGVudGVyIHRoZSBzcGVjaWZpYyB0eXBlLiAgSVRFUiBtdXN0IHByb3ZpZGUgc29tZSBkZXRlY3Rp b24gZm9yCisrICAgcmVlbnRlcmluZyB0aGUgc2FtZSBtYWluX3R5cGUgYXMgdGhpcyBmdW5jdGlv biB3b3VsZCBvdGhlcndpc2UgZW5kbGVzc2x5CisrICAgbG9vcC4gICovCisrCisrc3RhdGljIHZv aWQKKyttYWluX3R5cGVfY3Jhd2wgKHN0cnVjdCB0eXBlICp0eXBlLCBtYWluX3R5cGVfY3Jhd2xf aXRlciBpdGVyLCB2b2lkICpkYXRhKQogK3sKLSsgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRv biAqYmF0b247CisrICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVyOworKyAgaW50IGk7CiArCi0rICBp ZiAoIShhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCi0rCS8qICIuZGVidWdfbG9j IiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQotKwkg ICB0aGUgc2VjdGlvbi4gIElmIHNvLCBmYWxsIHRocm91Z2ggdG8gdGhlIGNvbXBsYWludCBpbiB0 aGUKLSsJICAgb3RoZXIgYnJhbmNoLiAgKi8KLSsJJiYgRFdfVU5TTkQgKGF0dHIpIDwgZHdhcmYy X3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSkpCi0rICAgIHJldHVybiBOVUxMOworKyAgaWYgKCF0eXBl KQorKyAgICByZXR1cm47CiArCi0rICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmls ZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCSBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9i YXRvbikpOwotKyAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rICBnZGJfYXNzZXJ0IChi YXRvbi0+cGVyX2N1KTsKKysgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVM TCk7CiArCi0rICAvKiBXZSBkb24ndCBrbm93IGhvdyBsb25nIHRoZSBsb2NhdGlvbiBsaXN0IGlz LCBidXQgbWFrZSBzdXJlIHdlCi0rICAgICBkb24ndCBydW4gb2ZmIHRoZSBlZGdlIG9mIHRoZSBz ZWN0aW9uLiAgKi8KLSsgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6 ZSAtIERXX1VOU05EIChhdHRyKTsKLSsgIGJhdG9uLT5kYXRhID0gZHdhcmYyX3Blcl9vYmpmaWxl LT5sb2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIpOwotKyAgYmF0b24tPmJhc2VfYWRkcmVzcyA9 IGN1LT5iYXNlX2FkZHJlc3M7Ci0rICBpZiAoY3UtPmJhc2Vfa25vd24gPT0gMCkKLSsgICAgY29t cGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkgICAgICAgXygiTG9jYXRpb24gbGlzdCB1 c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsKKysgIC8qIGBz dHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUnIGhhbmRsaW5nIGlzIHVuc3VwcG9ydGVkIGJ5IHRoaXMg ZnVuY3Rpb24uICAqLworKyAgZ2RiX2Fzc2VydCAoKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9D T0RFX1NUUlVDVAorKwkgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfVU5J T04pCisrCSAgICAgIHx8ICFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkpOwogKwotKyAgcmV0dXJu IGJhdG9uOworKyAgaWYgKCEoKml0ZXIpICh0eXBlLCBkYXRhKSkKKysgICAgcmV0dXJuOworKwor KyAgLyogSXRlcmF0ZSBhbGwgdGhlIHR5cGUgaW5zdGFuY2VzIG9mIHRoaXMgbWFpbl90eXBlLiAg Ki8KKysgIHR5cGVfaXRlciA9IHR5cGU7CisrICBkbworKyAgICB7CisrICAgICAgZ2RiX2Fzc2Vy dCAoVFlQRV9NQUlOX1RZUEUgKHR5cGVfaXRlcikgPT0gVFlQRV9NQUlOX1RZUEUgKHR5cGUpKTsK KysKKysgICAgICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfUE9JTlRFUl9UWVBFICh0eXBlKSwgaXRl ciwgZGF0YSk7CisrICAgICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1JFRkVSRU5DRV9UWVBFICh0 eXBlKSwgaXRlciwgZGF0YSk7CisrCisrICAgICAgdHlwZV9pdGVyID0gVFlQRV9DSEFJTiAodHlw ZV9pdGVyKTsKKysgICAgfQorKyAgd2hpbGUgKHR5cGVfaXRlciAhPSB0eXBlKTsKKysKKysgIGZv ciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpKyspCisrICAgIG1haW5fdHlwZV9j cmF3bCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgaXRlciwgZGF0YSk7CisrCisrICBtYWlu X3R5cGVfY3Jhd2wgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKKysgIG1h aW5fdHlwZV9jcmF3bCAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSwgaXRlciwgZGF0YSk7CiAr fQogKwotKy8qIFNZTSBtYXkgZ2V0IGl0cyBTWU1CT0xfQ0xBU1Mgb3ZlcnJpZGVuIG9uIGludmFs aWQgQVRUUiBjb250ZW50LiAgKi8KKysvKiBBIGhlbHBlciBmb3IgZGVsZXRlX3R5cGUgd2hpY2gg ZGVsZXRlcyBhIG1haW5fdHlwZSBhbmQgdGhlIHRoaW5ncyB0byB3aGljaAorKyAgIGl0IHJlZmVy cy4gIFRZUEUgaXMgYSB0eXBlIHdob3NlIG1haW5fdHlwZSB3ZSB3aXNoIHRvIGRlc3Ryb3kuICAq LwogKwotIHN0YXRpYyB2b2lkCi0gZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3Qg YXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0gCQkJICAgICBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKLSB7Ci0tICBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRy KQotLSAgICAgIC8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9m ZnNldCBtYXkgYmUgb3V0c2lkZQotLQkgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdo IHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCi0tCSBvdGhlciBicmFuY2guICAqLwotLSAgICAgICYm IERXX1VOU05EIChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpCi0tICAgIHsK LS0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwotLQotLSAgICAgIGJh dG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0tCQkJ ICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbikpOwotLSAgICAgIGJhdG9u LT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotLSAgICAgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3Up OwotLQotLSAgICAgIC8qIFdlIGRvbid0IGtub3cgaG93IGxvbmcgdGhlIGxvY2F0aW9uIGxpc3Qg aXMsIGJ1dCBtYWtlIHN1cmUgd2UKLS0JIGRvbid0IHJ1biBvZmYgdGhlIGVkZ2Ugb2YgdGhlIHNl Y3Rpb24uICAqLwotLSAgICAgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Mu c2l6ZSAtIERXX1VOU05EIChhdHRyKTsKLS0gICAgICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9wZXJf b2JqZmlsZS0+bG9jLmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsKLS0gICAgICBiYXRvbi0+YmFz ZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVzczsKLS0gICAgICBpZiAoY3UtPmJhc2Vfa25vd24g PT0gMCkKLS0JY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotLQkJICAgXygiTG9jYXRp b24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsK LSsgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqbG9jbGlzdF9iYXRvbjsKLSAKLSsgIGxv Y2xpc3RfYmF0b24gPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uIChhdHRyLCBjdSk7Ci0r ICBpZiAobG9jbGlzdF9iYXRvbikKKytzdGF0aWMgdm9pZAorK2RlbGV0ZV9tYWluX3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlKQorK3sKKysgIGludCBpOworKworKyAgZ2RiX2Fzc2VydCAoVFlQRV9E SVNDQVJEQUJMRSAodHlwZSkpOworKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9 PSBOVUxMKTsKKysKKysgIHhmcmVlIChUWVBFX05BTUUgKHR5cGUpKTsKKysgIHhmcmVlIChUWVBF X1RBR19OQU1FICh0eXBlKSk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0 eXBlKTsgKytpKQogKyAgICB7Ci0gICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZk d2FyZjJfbG9jbGlzdF9mdW5jczsKLS0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkg PSBiYXRvbjsKLSsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0X2Jh dG9uOworKyAgICAgIHhmcmVlIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKTsKKysKKysgICAg ICBpZiAoVFlQRV9GSUVMRF9MT0NfS0lORCAodHlwZSwgaSkgPT0gRklFTERfTE9DX0tJTkRfUEhZ U05BTUUpCisrCXhmcmVlIChUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSAodHlwZSwgaSkpOwog KyAgICB9Ci0rICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICB7Ci0r ICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9mdW5jczsK LSsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJfYXR0cl90b19sb2Nl eHByX2JhdG9uIChhdHRyLCBjdSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247Ci0rICAgICAgZHdhcmYyX2ludmFsaWRf YXR0cmliX2NsYXNzX2NvbXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9uIiwKLSsJCQkJCSAg ICAgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7Ci0gCi0tICAgICAgYmF0b24gPSBvYnN0YWNr X2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLS0JCQkgICAgIHNpemVvZiAo c3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7Ci0tICAgICAgYmF0b24tPnBlcl9jdSA9IGN1 LT5wZXJfY3U7Ci0tICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7Ci0rICAgICAgLyog U29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMg dmFsaWRpdHkuICAqLwotIAotLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQot LQl7Ci0tCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBkYXRh IHBvaW50ZXIKLS0JICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwg cG9pbnRpbmcgaW50byB0aGUKLS0JICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsg cmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKLS0JICAgICB0aGF0IGJ1ZmZlciwgYnV0IHdoZW4g d2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLS0JICAgICBuZWVkIHRvIGNoYW5nZS4g ICovCi0tCSAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Ci0tCSAgYmF0b24t PmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0tCX0KLS0gICAgICBlbHNlCi0tCXsKLS0J ICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9jYXRpb24gZGVzY3Jp cHRpb24iLAotLQkJCQkJCSBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsKLS0JICBiYXRvbi0+ c2l6ZSA9IDA7Ci0tCSAgYmF0b24tPmRhdGEgPSBOVUxMOwotLQl9Ci0tICAgICAgCi0tICAgICAg U1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9mdW5jczsKLS0gICAg ICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsKLSsgICAgICBTWU1CT0xfQ09N UFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOwotKyAgICAgIFNZTUJPTF9M T0NBVElPTl9CQVRPTiAoc3ltKSA9IE5VTEw7CisrICB4ZnJlZSAoVFlQRV9GSUVMRFMgKHR5cGUp KTsKICsKLSsgICAgICAvKiBGb3IgZnVuY3Rpb25zIGEgbWlzc2luZyBEV19BVF9mcmFtZV9iYXNl IGRvZXMgbm90IG9wdGltaXplIG91dCB0aGUKLSsJIHdob2xlIGZ1bmN0aW9uIGRlZmluaXRpb24s IG9ubHkgaXRzIGZyYW1lIGJhc2UgcmVzb2x2aW5nLiAgKi8KLSsgICAgICBpZiAoYXR0ci0+bmFt ZSA9PSBEV19BVF9sb2NhdGlvbikKLSsJU1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX09QVElNSVpF RF9PVVQ7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTE3ODEsNiArMTI1ODYsMzEgQEAgb2Zmc2V0X2Fu ZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCi0g ICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0ID09IG9mc19yaHMtPm9mZnNldDsKLSB9Ci0gCi0rLyog RmlsbCBpbiBnZW5lcmljIGF0dHJpYnV0ZXMgYXBwbGljYWJsZSBmb3IgdHlwZSBESUVzLiAgKi8K KysgIGdkYl9hc3NlcnQgKCFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkpOworKworKyAgeGZyZWUg KFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7CisrfQorKworKy8qIERlbGV0ZSBhbGwgdGhlIGluc3Rh bmNlcyBvbiBUWVBFX0NIQUlOIG9mIFRZUEUsIGluY2x1ZGluZyB0aGVpciByZWZlcmVuY2VkCisr ICAgbWFpbl90eXBlLiAgVFlQRSBtdXN0IGJlIGEgcmVjbGFpbWFibGUgdHlwZSAtIG5laXRoZXIg cGVybWFuZW50IG5vciBvYmpmaWxlCisrICAgYXNzb2NpYXRlZC4gICovCiArCiArc3RhdGljIHZv aWQKLStmZXRjaF9kaWVfdHlwZV9hdHRycyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0 eXBlICp0eXBlLAotKwkJICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrZGVsZXRlX3R5cGVf Y2hhaW4gKHN0cnVjdCB0eXBlICp0eXBlKQogK3sKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7 CisrICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVyLCAqdHlwZV9pdGVyX3RvX2ZyZWU7CiArCi0rICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfZGF0YV9sb2NhdGlvbiwgY3UpOwotKyAgaWYg KGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rICAgIFRZUEVfREFUQV9MT0NBVElPTl9EV0FS Rl9CTE9DSyAodHlwZSkgPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLAotKwkJ CQkJCQkJCSAgY3UpOwotKyAgZ2RiX2Fzc2VydCAoIVRZUEVfREFUQV9MT0NBVElPTl9JU19BRERS ICh0eXBlKSk7CisrICBnZGJfYXNzZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7CisrICBn ZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOwogKwotKyAgYXR0ciA9IGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOwotKyAgaWYgKGF0dHJfZm9ybV9p c19ibG9jayAoYXR0cikpCi0rICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRy X3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9B TExPQ0FURUQgKHR5cGUpKTsKKysgIGRlbGV0ZV9tYWluX3R5cGUgKHR5cGUpOwogKwotKyAgYXR0 ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2Fzc29jaWF0ZWQsIGN1KTsKLSsgIGlmIChhdHRy X2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICBUWVBFX0FTU09DSUFURUQgKHR5cGUpID0gZHdh cmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKyAgZ2RiX2Fzc2VydCAoIVRZ UEVfTk9UX0FTU09DSUFURUQgKHR5cGUpKTsKKysgIHR5cGVfaXRlciA9IHR5cGU7CisrICBkbwor KyAgICB7CisrICAgICAgdHlwZV9pdGVyX3RvX2ZyZWUgPSB0eXBlX2l0ZXI7CisrICAgICAgdHlw ZV9pdGVyID0gVFlQRV9DSEFJTiAodHlwZV9pdGVyKTsKKysgICAgICB4ZnJlZSAodHlwZV9pdGVy X3RvX2ZyZWUpOworKyAgICB9CisrICB3aGlsZSAodHlwZV9pdGVyICE9IHR5cGUpOwogK30KICsK LSAvKiBTZXQgdGhlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIERJRSB0byBUWVBFLiAgU2F2ZSBpdCBp biBDVSdzIGhhc2gKLSAgICB0YWJsZSBpZiBuZWNlc3NhcnkuICBGb3IgY29udmVuaWVuY2UsIHJl dHVybiBUWVBFLiAgKi8KLSAKLUBAIC0xMTc4OSw2ICsxMjYxOSw4IEBAIHNldF9kaWVfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKLSB7Ci0gICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9mczsK LSAKLSsgIGZldGNoX2RpZV90eXBlX2F0dHJzIChkaWUsIHR5cGUsIGN1KTsKKysvKiBIYXNoIGZ1 bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAgKi8KICsKLSAgIC8qIEZvciBBZGEg dHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0LXNwZWNpZmljIGRhdGEgaXMgYWx3YXlzCi0g ICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFscmVhZHkgc2V0KS4gIFRoZXJlIGFyZSBhIGZldyB0 eXBlcyB3aGVyZQotICAgICAgd2Ugc2hvdWxkIG5vdCBiZSBkb2luZyBzbywgYmVjYXVzZSB0aGUg dHlwZS1zcGVjaWZpYyBhcmVhIGlzCi1AQCAtMTE5NDQsMjMgKzEyNzc2LDEzIEBAIHNob3dfZHdh cmYyX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotICAgY21kX3Nob3dfbGlzdCAoc2hv d19kd2FyZjJfY21kbGlzdCwgZnJvbV90dHksICIiKTsKLSB9Ci0gCi0tLyogSWYgc2VjdGlvbiBk ZXNjcmliZWQgYnkgSU5GTyB3YXMgbW1hcHBlZCwgbXVubWFwIGl0IG5vdy4gICovCi0rLyogQSBo ZWxwZXIgZnVuY3Rpb24gdG8gZGVzdHJveSBhIGRlYnVnIHNlY3Rpb24uICAqLwotIAotIHN0YXRp YyB2b2lkCi0tbXVubWFwX3NlY3Rpb25fYnVmZmVyIChzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5m byAqaW5mbykKLStkZXN0cm95X3NlY3Rpb24gKHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpp bmZvKQotIHsKLS0gIGlmIChpbmZvLT53YXNfbW1hcHBlZCkKLS0gICAgewotLSNpZmRlZiBIQVZF X01NQVAKLS0gICAgICBpbnRwdHJfdCBiZWdpbiA9IChpbnRwdHJfdCkgaW5mby0+YnVmZmVyOwot LSAgICAgIGludHB0cl90IG1hcF9iZWdpbiA9IGJlZ2luICYgfihwYWdlc2l6ZSAtIDEpOwotLSAg ICAgIHNpemVfdCBtYXBfbGVuZ3RoID0gaW5mby0+c2l6ZSArIGJlZ2luIC0gbWFwX2JlZ2luOwot LSAgICAgIGdkYl9hc3NlcnQgKG11bm1hcCAoKHZvaWQgKikgbWFwX2JlZ2luLCBtYXBfbGVuZ3Ro KSA9PSAwKTsKLS0jZWxzZQotLSAgICAgIC8qIFdpdGhvdXQgSEFWRV9NTUFQLCB3ZSBzaG91bGQg bmV2ZXIgYmUgaGVyZSB0byBiZWdpbiB3aXRoLiAgKi8KLS0gICAgICBnZGJfYXNzZXJ0ICgwKTsK LS0jZW5kaWYKLS0gICAgfQotKyAgaWYgKGluZm8tPmRlc3RydWN0b3IpCi0rICAgICgqaW5mby0+ ZGVzdHJ1Y3RvcikgKGluZm8pOwotIH0KLSAKLSAvKiBtdW5tYXAgZGVidWcgc2VjdGlvbnMgZm9y IE9CSkZJTEUsIGlmIG5lY2Vzc2FyeS4gICovCi1AQCAtMTE5NjksMTUgKzEyNzkxLDE1IEBAIHN0 YXRpYyB2b2lkCi0gZHdhcmYyX3Blcl9vYmpmaWxlX2ZyZWUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCB2b2lkICpkKQotIHsKLSAgIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKmRhdGEgPSBk OwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+aW5mbyk7Ci0tICBtdW5tYXBfc2Vj dGlvbl9idWZmZXIgKCZkYXRhLT5hYmJyZXYpOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgm ZGF0YS0+bGluZSk7Ci0tICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5zdHIpOwotLSAg bXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+bWFjaW5mbyk7Ci0tICBtdW5tYXBfc2VjdGlv bl9idWZmZXIgKCZkYXRhLT5yYW5nZXMpOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0 YS0+bG9jKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKLS0gIG11 bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmVoX2ZyYW1lKTsKLSsgIGRlc3Ryb3lfc2VjdGlv biAoJmRhdGEtPmluZm8pOwotKyAgZGVzdHJveV9zZWN0aW9uICgmZGF0YS0+YWJicmV2KTsKLSsg IGRlc3Ryb3lfc2VjdGlvbiAoJmRhdGEtPmxpbmUpOwotKyAgZGVzdHJveV9zZWN0aW9uICgmZGF0 YS0+c3RyKTsKLSsgIGRlc3Ryb3lfc2VjdGlvbiAoJmRhdGEtPm1hY2luZm8pOwotKyAgZGVzdHJv eV9zZWN0aW9uICgmZGF0YS0+cmFuZ2VzKTsKLSsgIGRlc3Ryb3lfc2VjdGlvbiAoJmRhdGEtPmxv Yyk7Ci0rICBkZXN0cm95X3NlY3Rpb24gKCZkYXRhLT5mcmFtZSk7Ci0rICBkZXN0cm95X3NlY3Rp b24gKCZkYXRhLT5laF9mcmFtZSk7Ci0gfQotIAotIHZvaWQgX2luaXRpYWxpemVfZHdhcmYyX3Jl YWQgKHZvaWQpOwotZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5jCi1p bmRleCA5YTJhMWUzLi43MmIxZDEzIDEwMDY0NAotLS0tIGEvZ2RiL2VsZnJlYWQuYwotKysrIGIv Z2RiL2VsZnJlYWQuYwotQEAgLTE3OSw3ICsxNzksOCBAQCByZWNvcmRfbWluaW1hbF9zeW1ib2wg KGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lX2xlbiwgaW50IGNvcHlfbmFtZSwKLSB7Ci0gICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotIAot LSAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0KQot KyAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0Ci0r ICAgICAgfHwgbXNfdHlwZSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0gICAgIGFkZHJlc3MgPSBn ZGJhcmNoX3NtYXNoX3RleHRfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcmVzcyk7Ci0gCi0gICByZXR1 cm4gcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2xfZnVsbCAobmFtZSwgbmFtZV9sZW4sIGNvcHlf bmFtZSwgYWRkcmVzcywKLUBAIC0zODgsNyArMzg5LDEwIEBAIGVsZl9zeW10YWJfcmVhZCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBlLAotIAkgICAgewotIAkgICAgICBpZiAoc3lt LT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dFQUspKQotIAkJewotLQkJICBtc190eXBlID0g bXN0X3RleHQ7Ci0rCQkgIGlmIChzeW0tPmZsYWdzICYgQlNGX0dOVV9JTkRJUkVDVF9GVU5DVElP TikKLSsJCSAgICBtc190eXBlID0gbXN0X3RleHRfZ251X2lmdW5jOwotKwkJICBlbHNlCi0rCQkg ICAgbXNfdHlwZSA9IG1zdF90ZXh0OwotIAkJfQotIAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1l WzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQotIAkJICAgICAgIHx8ICgoc3ltLT5m bGFncyAmIEJTRl9MT0NBTCkKLUBAIC04NzksMjAgKzg4MywxMyBAQCBlbGZfc3ltZmlsZV9yZWFk IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCQkJCXN0cl9z ZWN0LT5maWxlcG9zLAotIAkJCQliZmRfc2VjdGlvbl9zaXplIChhYmZkLCBzdHJfc2VjdCkpOwot ICAgICB9Ci0tICBpZiAoZHdhcmYyX2hhc19pbmZvIChvYmpmaWxlKSkKLS0gICAgewotLSAgICAg IC8qIERXQVJGIDIgc2VjdGlvbnMgKi8KLS0gICAgICBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKG9i amZpbGUpOwotLSAgICB9Ci0tCi0tICAvKiBGSVhNRToga2V0dGVuaXMvMjAwMzA1MDQ6IFRoaXMg c3RpbGwgbmVlZHMgdG8gYmUgaW50ZWdyYXRlZCB3aXRoCi0tICAgICBkd2FyZjJyZWFkLmMgaW4g YSBiZXR0ZXIgd2F5LiAgKi8KLS0gIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChvYmpmaWxlKTsK LSAKLSsgIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQotKyAgICBkd2FyZjJfY3JlYXRl X3F1aWNrX2FkZHJtYXAgKG9iamZpbGUpOwotICAgLyogSWYgdGhlIGZpbGUgaGFzIGl0cyBvd24g c3ltYm9sIHRhYmxlcyBpdCBoYXMgbm8gc2VwYXJhdGUgZGVidWcgaW5mby4KLSAgICAgIGAuZHlu c3ltJy9gLnN5bXRhYicgZ28gdG8gTVNZTUJPTFMsIGAuZGVidWdfaW5mbycgZ29lcyB0byBTWU1U QUJTL1BTWU1UQUJTLgotICAgICAgYC5nbnVfZGVidWdsaW5rJyBtYXkgbm8gbG9uZ2VyIGJlIHBy ZXNlbnQgd2l0aCBgLm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCi0tICBpZiAoIW9iamZpbGVfaGFz X3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkpCi0rICBlbHNlCi0gICAgIHsKLSAgICAgICBjaGFy ICpkZWJ1Z2ZpbGU7Ci0gCi1AQCAtOTEwLDYgKzkwNywyMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gICAgIH0KLSB9Ci0g Ci0rc3RhdGljIHZvaWQKLStyZWFkX3BzeW1zIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytz dGF0aWMgaGFzaHZhbF90CisrdHlwZV9kaXNjYXJkYWJsZV9oYXNoIChjb25zdCB2b2lkICpwKQog K3sKLSsgIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQotKyAgICB7Ci0rICAgICAgLyog RFdBUkYgMiBzZWN0aW9ucyAqLwotKyAgICAgIGR3YXJmMl9idWlsZF9wc3ltdGFicyAob2JqZmls ZSk7Ci0rICAgIH0KKysgIGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlID0gcDsKICsKLSsgIC8qIEZJ WE1FOiBrZXR0ZW5pcy8yMDAzMDUwNDogVGhpcyBzdGlsbCBuZWVkcyB0byBiZSBpbnRlZ3JhdGVk IHdpdGgKLSsgICAgIGR3YXJmMnJlYWQuYyBpbiBhIGJldHRlciB3YXkuICAqLwotKyAgZHdhcmYy X2J1aWxkX2ZyYW1lX2luZm8gKG9iamZpbGUpOworKyAgcmV0dXJuIGh0YWJfaGFzaF9wb2ludGVy IChUWVBFX01BSU5fVFlQRSAodHlwZSkpOwogK30KICsKLSAvKiBUaGlzIGNsZWFucyB1cCB0aGUg b2JqZmlsZSdzIGRlcHJlY2F0ZWRfc3ltX3N0YWJfaW5mbyBwb2ludGVyLCBhbmQKLSAgICB0aGUg Y2hhaW4gb2Ygc3RhYl9zZWN0aW9uX2luZm8ncywgdGhhdCBtaWdodCBiZSBkYW5nbGluZyBmcm9t Ci0gICAgaXQuICAqLwotQEAgLTEwNTIsNiArMTA2Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2Zu cyBlbGZfc3ltX2ZucyA9Ci0gICBlbGZfbmV3X2luaXQsCQkJLyogc3ltX25ld19pbml0OiBpbml0 IGFueXRoaW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCi0gICBlbGZfc3ltZmlsZV9pbml0LAkJ Lyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlYWQoKSAqLwot ICAgZWxmX3N5bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50 byBzeW10YWIgKi8KLSsgIHJlYWRfcHN5bXMsCQkJLyogc3ltX3JlYWRfcHN5bWJvbHMgKi8KLSAg IGVsZl9zeW1maWxlX2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwg Y2xlYW51cCAqLwotICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAg VHJhbnNsYXRlIGV4dC4gdG8gaW50LiByZWxvY2F0aW9uICovCi0gICBlbGZfc3ltZmlsZV9zZWdt ZW50cywJCS8qIHN5bV9zZWdtZW50czogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbQotZGlm ZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCBlMmNlZWE3Li4xYmNiNGE3 IDEwMDY0NAotLS0tIGEvZ2RiL2V2YWwuYwotKysrIGIvZ2RiL2V2YWwuYwotQEAgLTQzLDYgKzQz LDcgQEAKLSAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIK LSAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAK LSAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotIAotQEAgLTY5Niw2ICs2OTcsNyBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAgIGxvbmcgbWVt X29mZnNldDsKLSAgIHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzOwotICAgaW50IHNhdmVfcG9zMTsK LSsgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0gICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlv biA9IE5VTEw7Ci0gICBjaGFyICpmdW5jdGlvbl9uYW1lID0gTlVMTDsKLSAKLUBAIC03MzEsNiAr NzMzLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5 cGUsCi0gICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fZGVjZmxvYXQgKGV4cC0+ZWx0c1twYyArIDFd LnR5cGUsCi0gCQkJCSAgZXhwLT5lbHRzW3BjICsgMl0uZGVjZmxvYXRjb25zdCk7Ci0gCi0rICAg IGNhc2UgT1BfQURMX0ZVTkM6Ci0gICAgIGNhc2UgT1BfVkFSX1ZBTFVFOgotICAgICAgICgqcG9z KSArPSAzOwotICAgICAgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQotQEAgLTEzMzQsNyArMTMz Nyw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBl LAotICAgICAgIGFyZ3ZlYyA9IChzdHJ1Y3QgdmFsdWUgKiopIGFsbG9jYSAoc2l6ZW9mIChzdHJ1 Y3QgdmFsdWUgKikgKiAobmFyZ3MgKyAzKSk7Ci0gICAgICAgaWYgKG9wID09IFNUUlVDVE9QX01F TUJFUiB8fCBvcCA9PSBTVFJVQ1RPUF9NUFRSKQotIAl7Ci0tCSAgbmFyZ3MrKzsKLSAJICAvKiBG aXJzdCwgZXZhbHVhdGUgdGhlIHN0cnVjdHVyZSBpbnRvIGFyZzIgKi8KLSAJICBwYzIgPSAoKnBv cykrKzsKLSAKLUBAIC0xMzU4LDIxICsxMzYwLDQwIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAotIAkgIGFyZzEgPSBldmFsdWF0ZV9zdWJl eHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0gCi0tCSAgaWYgKFRZUEVfQ09ERSAo Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpKQotLQkgICAgICAhPSBUWVBFX0NPREVf TUVUSE9EUFRSKQotLQkgICAgZXJyb3IgKF8oIk5vbi1wb2ludGVyLXRvLW1lbWJlciB2YWx1ZSB1 c2VkIGluIHBvaW50ZXItdG8tbWVtYmVyICIKLS0JCSAgICAgImNvbnN0cnVjdCIpKTsKLS0KLS0J ICBpZiAobm9zaWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKQotKwkgIHR5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0rCSAgc3dpdGNoIChUWVBFX0NPREUgKHR5 cGUpKQotIAkgICAgewotLQkgICAgICBzdHJ1Y3QgdHlwZSAqbWV0aG9kX3R5cGUgPSBjaGVja190 eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0tCSAgICAgIGFyZzEgPSB2YWx1ZV96ZXJvICht ZXRob2RfdHlwZSwgbm90X2x2YWwpOwotKwkgICAgY2FzZSBUWVBFX0NPREVfTUVUSE9EUFRSOgot KwkgICAgICBpZiAobm9zaWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKQotKwkJYXJnMSA9 IHZhbHVlX3plcm8gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBub3RfbHZhbCk7Ci0rCSAgICAg IGVsc2UKLSsJCWFyZzEgPSBjcGx1c19tZXRob2RfcHRyX3RvX3ZhbHVlICgmYXJnMiwgYXJnMSk7 CisrLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHR5cGVfZGlzY2FyZGFibGVfdGFibGUuICAqLwog KwotKwkgICAgICAvKiBOb3csIHNheSB3aGljaCBhcmd1bWVudCB0byBzdGFydCBldmFsdWF0aW5n IGZyb20gKi8KLSsJICAgICAgbmFyZ3MrKzsKLSsJICAgICAgdGVtID0gMjsKLSsJICAgICAgYXJn dmVjWzFdID0gYXJnMjsKLSsJICAgICAgYnJlYWs7Cisrc3RhdGljIGludAorK3R5cGVfZGlzY2Fy ZGFibGVfZXF1YWwgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisreworKyAgY29uc3Qg c3RydWN0IHR5cGUgKmxlZnQgPSBhOworKyAgY29uc3Qgc3RydWN0IHR5cGUgKnJpZ2h0ID0gYjsK ICsKLSsJICAgIGNhc2UgVFlQRV9DT0RFX01FTUJFUlBUUjoKLSsJICAgICAgLyogTm93LCBjb252 ZXJ0IHRoZXNlIHZhbHVlcyB0byBhbiBhZGRyZXNzLiAgKi8KLSsJICAgICAgYXJnMiA9IHZhbHVl X2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfRE9NQUlOX1RZUEUgKHR5cGUpKSwKLSsJ CQkJIGFyZzIpOworKyAgcmV0dXJuIFRZUEVfTUFJTl9UWVBFIChsZWZ0KSA9PSBUWVBFX01BSU5f VFlQRSAocmlnaHQpOworK30KICsKLSsJICAgICAgbWVtX29mZnNldCA9IHZhbHVlX2FzX2xvbmcg KGFyZzEpOworKy8qIEEgaGVscGVyIGZvciB0eXBlX21hcmtfdXNlZC4gICovCiArCi0rCSAgICAg IGFyZzEgPSB2YWx1ZV9mcm9tX3BvaW50ZXIgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKSwKLSsJCQkJCSB2YWx1ZV9hc19sb25nIChhcmcyKSArIG1lbV9vZmZz ZXQpOwotKwkgICAgICBhcmcxID0gdmFsdWVfaW5kIChhcmcxKTsKLSsJICAgICAgdGVtID0gMTsK LSsJICAgICAgYnJlYWs7Cisrc3RhdGljIGludAorK3R5cGVfbWFya191c2VkX2NyYXdsIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgdm9pZCAqdW51c2VkKQorK3sKKysgIGlmICghVFlQRV9ESVNDQVJEQUJM RSAodHlwZSkpCisrICAgIHJldHVybiAwOwogKwotKwkgICAgZGVmYXVsdDoKLSsJICAgICAgZXJy b3IgKF8oIk5vbi1wb2ludGVyLXRvLW1lbWJlciB2YWx1ZSB1c2VkIGluIHBvaW50ZXItdG8tbWVt YmVyICIKLSsJCSAgICAgICAiY29uc3RydWN0IikpOwotIAkgICAgfQotLQkgIGVsc2UKLS0JICAg IGFyZzEgPSBjcGx1c19tZXRob2RfcHRyX3RvX3ZhbHVlICgmYXJnMiwgYXJnMSk7Ci0gCi0tCSAg LyogTm93LCBzYXkgd2hpY2ggYXJndW1lbnQgdG8gc3RhcnQgZXZhbHVhdGluZyBmcm9tICovCi0t CSAgdGVtID0gMjsKLSsJICBhcmd2ZWNbMF0gPSBhcmcxOwotIAl9Ci0gICAgICAgZWxzZSBpZiAo b3AgPT0gU1RSVUNUT1BfU1RSVUNUIHx8IG9wID09IFNUUlVDVE9QX1BUUikKLSAJewotQEAgLTE0 MTIsNiArMTQzMywxNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpl eHBlY3RfdHlwZSwKLSAJICAvKiBOb3csIHNheSB3aGljaCBhcmd1bWVudCB0byBzdGFydCBldmFs dWF0aW5nIGZyb20gKi8KLSAJICB0ZW0gPSAyOwotIAl9Ci0rICAgICAgZWxzZSBpZiAob3AgPT0g T1BfQURMX0ZVTkMpCi0rICAgICAgICB7Ci0rICAgICAgICAgIC8qIFNhdmUgdGhlIGZ1bmN0aW9u IHBvc2l0aW9uIGFuZCBtb3ZlIHBvcyBzbyB0aGF0IHRoZSBhcmd1bWVudHMKLSsgICAgICAgICAg ICAgY2FuIGJlIGV2YWx1YXRlZC4gKi8KLSsgICAgICAgICAgaW50IGZ1bmNfbmFtZV9sZW47Ci0r ICAgICAgICAgIHNhdmVfcG9zMSA9ICpwb3M7Ci0rICAgICAgICAgIHRlbSA9IDE7Ci0rCi0rICAg ICAgICAgIGZ1bmNfbmFtZV9sZW4gPSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3NhdmVfcG9z MSArIDNdLmxvbmdjb25zdCk7Ci0rICAgICAgICAgICgqcG9zKSArPSA2ICsgQllURVNfVE9fRVhQ X0VMRU0gKGZ1bmNfbmFtZV9sZW4gKyAxKTsKLSsgICAgICAgIH0KLSAgICAgICBlbHNlIGlmIChv cCA9PSBPUF9TQ09QRQotIAkgICAgICAgJiYgb3ZlcmxvYWRfcmVzb2x1dGlvbgotIAkgICAgICAg JiYgKGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpKQot QEAgLTE0MzMsOSArMTQ2NSw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAotIAkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9O QU1FU1BBQ0UpCi0gCSAgICB7Ci0gCSAgICAgIGZ1bmN0aW9uID0gY3BfbG9va3VwX3N5bWJvbF9u YW1lc3BhY2UgKFRZUEVfVEFHX05BTUUgKHR5cGUpLAotLQkJCQkJCSAgICAgbmFtZSwgTlVMTCwK LSsJCQkJCQkgICAgIG5hbWUsCi0gCQkJCQkJICAgICBnZXRfc2VsZWN0ZWRfYmxvY2sgKDApLAot LQkJCQkJCSAgICAgVkFSX0RPTUFJTiwgMSk7Ci0rCQkJCQkJICAgICBWQVJfRE9NQUlOKTsKLSAJ ICAgICAgaWYgKGZ1bmN0aW9uID09IE5VTEwpCi0gCQllcnJvciAoXygiTm8gc3ltYm9sIFwiJXNc IiBpbiBuYW1lc3BhY2UgXCIlc1wiLiIpLCAKLSAJCSAgICAgICBuYW1lLCBUWVBFX1RBR19OQU1F ICh0eXBlKSk7Ci1AQCAtMTQ4NCw2ICsxNTE2LDMzIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotICAgICAgIC8qIHNpZ25hbCBlbmQgb2YgYXJn bGlzdCAqLwotICAgICAgIGFyZ3ZlY1t0ZW1dID0gMDsKLSAKLSsgICAgICBpZiAob3AgPT0gT1Bf QURMX0ZVTkMpCi0rICAgICAgICB7Ci0rICAgICAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bXA7Ci0r ICAgICAgICAgIGNoYXIgKmZ1bmNfbmFtZTsKLSsgICAgICAgICAgaW50ICBuYW1lX2xlbjsKLSsg ICAgICAgICAgaW50IHN0cmluZ19wYyA9IHNhdmVfcG9zMSArIDM7Ci0rCi0rICAgICAgICAgIC8q IEV4dHJhY3QgdGhlIGZ1bmN0aW9uIG5hbWUuICAqLwotKyAgICAgICAgICBuYW1lX2xlbiA9IGxv bmdlc3RfdG9faW50IChleHAtPmVsdHNbc3RyaW5nX3BjXS5sb25nY29uc3QpOwotKyAgICAgICAg ICBmdW5jX25hbWUgPSAoY2hhciAqKSBhbGxvY2EgKG5hbWVfbGVuICsgMSk7Ci0rICAgICAgICAg IHN0cmNweSAoZnVuY19uYW1lLCAmZXhwLT5lbHRzW3N0cmluZ19wYyArIDFdLnN0cmluZyk7Ci0r Ci0rICAgICAgICAgIC8qIFByZXBhcmUgbGlzdCBvZiBhcmd1bWVudCB0eXBlcyBmb3Igb3Zlcmxv YWQgcmVzb2x1dGlvbiAqLwotKyAgICAgICAgICBhcmdfdHlwZXMgPSAoc3RydWN0IHR5cGUgKiop IGFsbG9jYSAobmFyZ3MgKiAoc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSkpOwotKyAgICAgICAgICBm b3IgKGl4ID0gMTsgaXggPD0gbmFyZ3M7IGl4KyspCi0rICAgICAgICAgICAgYXJnX3R5cGVzW2l4 IC0gMV0gPSB2YWx1ZV90eXBlIChhcmd2ZWNbaXhdKTsKLSsKLSsgICAgICAgICAgZmluZF9vdmVy bG9hZF9tYXRjaCAoYXJnX3R5cGVzLCBuYXJncywgZnVuY19uYW1lLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAwIC8qIG5vdCBtZXRob2QgKi8gLCAwIC8qIHN0cmljdCBtYXRjaCAq LyAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwgLyogcGFzcyBO VUxMIHN5bWJvbCBzaW5jZSBzeW1ib2wgaXMgdW5rbm93biAqLyAsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsICZzeW1wLCBOVUxMKTsKLSsKLSsgICAgICAgICAgLyogTm93 IGZpeCB0aGUgZXhwcmVzc2lvbiBiZWluZyBldmFsdWF0ZWQgKi8KLSsgICAgICAgICAgZXhwLT5l bHRzW3NhdmVfcG9zMSArIDJdLnN5bWJvbCA9IHN5bXA7Ci0rICAgICAgICAgIGFyZ3ZlY1swXSA9 IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsICZzYXZlX3BvczEsIG5vc2lkZSk7 Ci0rICAgICAgICB9Ci0rCi0gICAgICAgaWYgKG9wID09IFNUUlVDVE9QX1NUUlVDVCB8fCBvcCA9 PSBTVFJVQ1RPUF9QVFIKLSAJICB8fCAob3AgPT0gT1BfU0NPUEUgJiYgZnVuY3Rpb25fbmFtZSAh PSBOVUxMKSkKLSAJewotQEAgLTE1NTIsOCArMTYxMSw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAl9Ci0gICAgICAgZWxzZSBpZiAob3Ag PT0gU1RSVUNUT1BfTUVNQkVSIHx8IG9wID09IFNUUlVDVE9QX01QVFIpCi0gCXsKLS0JICBhcmd2 ZWNbMV0gPSBhcmcyOwotLQkgIGFyZ3ZlY1swXSA9IGFyZzE7Ci0rCSAgLyogUG9pbnRlciB0byBt ZW1iZXIuICBhcmd2ZWMgaXMgYWxyZWFkeSBzZXQgdXAuICAqLwotIAl9Ci0gICAgICAgZWxzZSBp ZiAob3AgPT0gT1BfVkFSX1ZBTFVFIHx8IChvcCA9PSBPUF9TQ09QRSAmJiBmdW5jdGlvbiAhPSBO VUxMKSkKLSAJewotQEAgLTE2NTMsNiArMTcxMSw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAotICAgICAgIC8qIEZpcnN0IGRldGVybWlu ZSB0aGUgdHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLwotICAgICAgIGFyZzEgPSBl dmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAgb2xk X2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotKyAgICAgIG9iamVjdF9h ZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAgICB0eXBlID0gY2hl Y2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAgICAgIGNvZGUgPSBUWVBFX0NPREUg KHR5cGUpOwotIAotQEAgLTE2NzMsNiArMTczMyw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICBjb2RlID0gVFlQRV9DT0RFICh0 eXBlKTsKLSAJICAgIH0KLSAJfSAKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSAK LSAgICAgICBzd2l0Y2ggKGNvZGUpCi0gCXsKLUBAIC0xODM0LDYgKzE4OTUsMjYgQEAgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gICAgICAgeGZy ZWUgKGV4cGVjdF90eXBlKTsKLSAgICAgICByZXR1cm4gYXJnMTsKLSAKLSsgICAgY2FzZSBUWVBF X0lOU1RBTkNFX0xPT0tVUDoKLSsgICAgICB7Ci0rCWludCBpOwotKwlzdHJ1Y3Qgc3ltYm9sICpz eW07Ci0rCXN0cnVjdCB0eXBlICoqYXJnX3R5cGVzOwotKwkoKnBvcykgKz0gMzsKLSsJYXJnX3R5 cGVzID0gKHN0cnVjdCB0eXBlICoqKSBhbGxvY2EgKFRZUEVfTkZJRUxEUyAoZXhwZWN0X3R5cGUp Ci0rCQkJCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7Ci0rCWZvciAoaSA9IDA7IGkg PCBUWVBFX05GSUVMRFMgKGV4cGVjdF90eXBlKTsgKytpKQotKwkgIGFyZ190eXBlc1tpXSA9IFRZ UEVfRklFTERfVFlQRSAoZXhwZWN0X3R5cGUsIGkpOwotKwkodm9pZCkgZmluZF9vdmVybG9hZF9t YXRjaCAoYXJnX3R5cGVzLCBUWVBFX05GSUVMRFMgKGV4cGVjdF90eXBlKSwKLSsJCQkJICAgIE5V TEwgLyogbm8gbmVlZCBmb3IgbmFtZSAqLywKLSsJCQkJICAgIDAgLyogbm90IG1ldGhvZCAqLywK LSsJCQkJICAgIDAgLyogc3RyaWN0IG1hdGNoICovLAotKwkJCQkgICAgTlVMTCwgZXhwLT5lbHRz W3BjICsgMV0uc3ltYm9sLCBOVUxMLAotKwkJCQkgICAgJnN5bSwgTlVMTCk7Ci0rCWkgPSAwOwot KyAgICAgIH0KLSsgICAgICBicmVhazsKKysgIGlmIChUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlw ZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCkKKysgICAgcmV0dXJuIDA7CiArCi0g ICAgIGNhc2UgQklOT1BfQ09OQ0FUOgotICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHBfd2l0 aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0gICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1 YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLUBAIC0yMTA1LDEzICsyMTg2 LDE5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBl LAotICAgICAgIHsKLSAJaW50IHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLSAJ aW50IGFycmF5X3NpemVfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0rCWludCBieXRlX3N0cmlk ZV9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLSAJaW50IG5kaW1lbnNpb25zID0gMSwgaTsKLSAJ c3RydWN0IHR5cGUgKnRtcF90eXBlOwotIAlpbnQgb2Zmc2V0X2l0ZW07CS8qIFRoZSBhcnJheSBv ZmZzZXQgd2hlcmUgdGhlIGl0ZW0gbGl2ZXMgKi8KLSsJQ09SRV9BRERSIG9mZnNldF9ieXRlOwkv KiBieXRlX3N0cmlkZSBiYXNlZCBvZmZzZXQgICovCi0rCXVuc2lnbmVkIGVsZW1lbnRfc2l6ZTsK LSAKLSAJaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLSAJICBlcnJvciAoXygiVG9vIG1h bnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMpOwotIAot KwlvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0rCW9iamVjdF9h ZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKysgIFRZUEVfRElTQ0FSREFC TEVfQUdFICh0eXBlKSA9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7CiArCi0gCXRtcF90 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotIAluZGltZW5zaW9ucyA9 IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOwotIAotQEAgLTIxNDEsNiArMjIyOCw5IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAg dXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKLSAJICAgIGxvd2VyID0gZjc3 X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7Ci0gCi0rCSAgICBieXRlX3N0cmlkZV9hcnJheVtu YXJncyAtIGkgLSAxXSA9Ci0rCQkJCQlUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0bXBf dHlwZSk7CisrICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KKysgIHJldHVybiAxOwor K30KICsKLSAJICAgIGFycmF5X3NpemVfYXJyYXlbbmFyZ3MgLSBpIC0gMV0gPSB1cHBlciAtIGxv d2VyICsgMTsKLSAKLSAJICAgIC8qIFplcm8tbm9ybWFsaXplIHN1YnNjcmlwdHMgc28gdGhhdCBv ZmZzZXR0aW5nIHdpbGwgd29yay4gKi8KLUBAIC0yMTU5LDEzICsyMjQ5LDI1IEBAIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICB0bXBf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7Ci0gCSAg fQotIAotKwkvKiBLZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5kIC8gZjc3X2dldF9sb3dl cmJvdW5kIGNhbGxzIGFib3ZlLiAgKi8KLSsJZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrLyog TWFyayBUWVBFIGFuZCBpdHMgY29ubmVjdGVkIHR5cGVzIGFzIHVzZWQgaW4gdGhpcyBmcmVlX2Fs bF90eXBlcyBwYXNzLiAgKi8KICsKLSAJLyogTm93IGxldCB1cyBjYWxjdWxhdGUgdGhlIG9mZnNl dCBmb3IgdGhpcyBpdGVtICovCi0gCi0tCW9mZnNldF9pdGVtID0gc3Vic2NyaXB0X2FycmF5W25k aW1lbnNpb25zIC0gMV07Ci0rCW9mZnNldF9pdGVtID0gMDsKLSsJb2Zmc2V0X2J5dGUgPSAwOwor K3ZvaWQKKyt0eXBlX21hcmtfdXNlZCAoc3RydWN0IHR5cGUgKnR5cGUpCisreworKyAgaWYgKHR5 cGUgPT0gTlVMTCkKKysgICAgcmV0dXJuOwogKwotKwlmb3IgKGkgPSBuZGltZW5zaW9ucyAtIDE7 IGkgPj0gMDsgLS1pKQotKwkgIHsKLSsJICAgIG9mZnNldF9pdGVtICo9IGFycmF5X3NpemVfYXJy YXlbaV07Ci0rCSAgICBpZiAoYnl0ZV9zdHJpZGVfYXJyYXlbaV0gPT0gMCkKLSsJICAgICAgb2Zm c2V0X2l0ZW0gKz0gc3Vic2NyaXB0X2FycmF5W2ldOwotKwkgICAgZWxzZQotKwkgICAgICBvZmZz ZXRfYnl0ZSArPSBzdWJzY3JpcHRfYXJyYXlbaV0gKiBieXRlX3N0cmlkZV9hcnJheVtpXTsKLSsJ ICB9Ci0gCi0tCWZvciAoaSA9IG5kaW1lbnNpb25zIC0gMTsgaSA+IDA7IC0taSkKLS0JICBvZmZz ZXRfaXRlbSA9Ci0tCSAgICBhcnJheV9zaXplX2FycmF5W2kgLSAxXSAqIG9mZnNldF9pdGVtICsg c3Vic2NyaXB0X2FycmF5W2kgLSAxXTsKLSsJZWxlbWVudF9zaXplID0gVFlQRV9MRU5HVEggKFRZ UEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7Ci0rCW9mZnNldF9ieXRlICs9IG9mZnNldF9pdGVt ICogZWxlbWVudF9zaXplOwotIAotIAkvKiBMZXQgdXMgbm93IHBsYXkgYSBkaXJ0eSB0cmljazog d2Ugd2lsbCB0YWtlIGFyZzEgCi0gCSAgIHdoaWNoIGlzIGEgdmFsdWUgbm9kZSBwb2ludGluZyB0 byB0aGUgdG9wbW9zdCBsZXZlbAotQEAgLTIxNzUsNyArMjI3Nyw3IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICByZXR1cm5zIHRoZSBj b3JyZWN0IHR5cGUgdmFsdWUgKi8KLSAKLSAJZGVwcmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAoYXJn MSwgdG1wX3R5cGUpOwotLQlyZXR1cm4gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcmcxLCBv ZmZzZXRfaXRlbSwgMCk7Ci0rCXJldHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFyZzEs IG9mZnNldF9ieXRlKTsKLSAgICAgICB9Ci0gCi0gICAgIGNhc2UgQklOT1BfTE9HSUNBTF9BTkQ6 Ci1AQCAtMjQwOSwxNCArMjUxMSwyMiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVj dCB0eXBlICpleHBlY3RfdHlwZSwKLSAgICAgICBpZiAoZXhwZWN0X3R5cGUgJiYgVFlQRV9DT0RF IChleHBlY3RfdHlwZSkgPT0gVFlQRV9DT0RFX1BUUikKLSAJZXhwZWN0X3R5cGUgPSBUWVBFX1RB UkdFVF9UWVBFIChjaGVja190eXBlZGVmIChleHBlY3RfdHlwZSkpOwotICAgICAgIGFyZzEgPSBl dmFsdWF0ZV9zdWJleHAgKGV4cGVjdF90eXBlLCBleHAsIHBvcywgbm9zaWRlKTsKLSsgICAgICBv bGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0rICAgICAgb2JqZWN0 X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkpOwotICAgICAgIHR5cGUgPSBj aGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAo dHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRFBUUgotIAkgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX01FTUJFUlBUUikKLSAJZXJyb3IgKF8oIkF0dGVtcHQgdG8gZGVyZWZlcmVuY2Ug cG9pbnRlciB0byBtZW1iZXIgd2l0aG91dCBhbiBvYmplY3QiKSk7Ci0gICAgICAgaWYgKG5vc2lk ZSA9PSBFVkFMX1NLSVApCi0tCWdvdG8gbm9zaWRlcmV0OwotKwl7Ci0rCSAgZG9fY2xlYW51cHMg KG9sZF9jaGFpbik7Ci0rCSAgZ290byBub3NpZGVyZXQ7Ci0rCX0KLSAgICAgICBpZiAodW5vcF91 c2VyX2RlZmluZWRfcCAob3AsIGFyZzEpKQotLQlyZXR1cm4gdmFsdWVfeF91bm9wIChhcmcxLCBv cCwgbm9zaWRlKTsKLSsJewotKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkgIHJldHVy biB2YWx1ZV94X3Vub3AgKGFyZzEsIG9wLCBub3NpZGUpOwotKwl9Ci0gICAgICAgZWxzZSBpZiAo bm9zaWRlID09IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKQotIAl7Ci0gCSAgdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKLUBAIC0yNDI1LDEyICsyNTM1LDE4IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgIC8q IEluIEMgeW91IGNhbiBkZXJlZmVyZW5jZSBhbiBhcnJheSB0byBnZXQgdGhlIDFzdCBlbHQuICAq LwotIAkgICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotIAkgICAg KQotLQkgICAgcmV0dXJuIHZhbHVlX3plcm8gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAotLQkJ CSAgICAgICBsdmFsX21lbW9yeSk7Ci0rCSAgICB7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChvbGRf Y2hhaW4pOwotKwkgICAgICByZXR1cm4gdmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSksCi0rCQkJCSBsdmFsX21lbW9yeSk7Ci0rCSAgICB9Ci0gCSAgZWxzZSBpZiAoVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQotLQkgICAgLyogR0RCIGFsbG93cyBkZXJlZmVyZW5j aW5nIGFuIGludC4gICovCi0tCSAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChl eHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKLS0JCQkgICAgICAgbHZhbF9tZW1vcnkpOwotKwkg ICAgewotKwkgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsJICAgICAgLyogR0RCIGFs bG93cyBkZXJlZmVyZW5jaW5nIGFuIGludC4gICovCi0rCSAgICAgIHJldHVybiB2YWx1ZV96ZXJv IChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAotKwkJCQkgbHZhbF9t ZW1vcnkpOwotKwkgICAgfQotIAkgIGVsc2UKLSAJICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRh a2UgY29udGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iKSk7Ci0gCX0KLUBAIC0yNDQwLDkg KzI1NTYsMTQgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0 X3R5cGUsCi0gCSBkby4gICJsb25nIGxvbmciIHZhcmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhh dAotIAkgQlVJTFRJTl9UWVBFX0xPTkdFU1Qgd291bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAq LwotICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCi0tCXJldHVy biB2YWx1ZV9hdF9sYXp5IChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50 LAotLQkJCSAgICAgIChDT1JFX0FERFIpIHZhbHVlX2FzX2FkZHJlc3MgKGFyZzEpKTsKLS0gICAg ICByZXR1cm4gdmFsdWVfaW5kIChhcmcxKTsKLSsJewotKwkgIGRvX2NsZWFudXBzIChvbGRfY2hh aW4pOwotKwkgIHJldHVybiB2YWx1ZV9hdF9sYXp5IChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJj aCktPmJ1aWx0aW5faW50LAotKwkJCQkoQ09SRV9BRERSKSB2YWx1ZV9hc19hZGRyZXNzIChhcmcx KSk7Ci0rCX0KLSsgICAgICBhcmcxID0gdmFsdWVfaW5kIChhcmcxKTsKLSsgICAgICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKLSsgICAgICByZXR1cm4gYXJnMTsKLSAKLSAgICAgY2FzZSBVTk9Q X0FERFI6Ci0gICAgICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1l bWJlcnMuICAqLwotQEAgLTI3NzcsNyArMjg5OCw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2Nv ZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIHsKLSAgIGVudW0gZXhwX29wY29kZSBv cDsKLSAgIGludCBwYzsKLS0gIHN0cnVjdCB2YWx1ZSAqdmFsOwotKyAgc3RydWN0IHZhbHVlICp2 YWwgPSBOVUxMOwotICAgc3RydWN0IHN5bWJvbCAqdmFyOwotICAgc3RydWN0IHR5cGUgKnR5cGU7 Ci0gCi1AQCAtMjc4OCwxMiArMjkwOSwxNyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lv biAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAgICAgewotICAgICBjYXNlIE9QX1ZBUl9WQUxV RToKLSAgICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7Ci0rICAgICAgLyogYWRk cmVzc19vZl92YXJpYWJsZSB3aWxsIGNhbGwgb2JqZWN0X2FkZHJlc3Nfc2V0IGZvciBjaGVja190 eXBlZGVmLgotKwkgQ2FsbCBpdCBvbmx5IGlmIHJlcXVpcmVkIGFzIGl0IGNhbiBlcnJvci1vdXQg b24gVkFSIGluIHJlZ2lzdGVyLiAgKi8KLSsgICAgICBpZiAoVFlQRV9EWU5BTUlDIChTWU1CT0xf VFlQRSAodmFyKSkpCi0rCXZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRz W3BjICsgMV0uYmxvY2spOwotICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChTWU1CT0xfVFlQ RSAodmFyKSk7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZ Ci0gCSAgJiYgQ0FTVF9JU19DT05WRVJTSU9OKQotIAl7Ci0gCSAgKCpwb3MpICs9IDQ7Ci0tCSAg dmFsID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7 Ci0rCSAgaWYgKCF2YWwpCi0rCSAgICB2YWwgPSBhZGRyZXNzX29mX3ZhcmlhYmxlICh2YXIsIGV4 cC0+ZWx0c1twYyArIDFdLmJsb2NrKTsKLSAJICByZXR1cm4gdmFsdWVfY2FzdCAobG9va3VwX3Bv aW50ZXJfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAotIAkJCSAgICAgdmFsKTsKLSAJ fQotQEAgLTI4NDUsOSArMjk3MSwxMyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX3NpemVvZiAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MpCi0gCi0gICAgIGNhc2UgT1BfVkFSX1ZBTFVF OgotICAgICAgICgqcG9zKSArPSA0OwotLSAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChTWU1C T0xfVFlQRSAoZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sKSk7Ci0tICAgICAgcmV0dXJuCi0tCXZh bHVlX2Zyb21fbG9uZ2VzdCAoc2l6ZV90eXBlLCAoTE9OR0VTVCkgVFlQRV9MRU5HVEggKHR5cGUp KTsKLSsgICAgICAvKiBXZSBkbyBub3QgbmVlZCB0byBjYWxsIHJlYWRfdmFyX3ZhbHVlIGJ1dCB0 aGUgb2JqZWN0IGV2YWx1YXRpb24gbWF5Ci0rCSBuZWVkIHRvIGhhdmUgZXhlY3V0ZWQgb2JqZWN0 X2FkZHJlc3Nfc2V0IHdoaWNoIG5lZWRzIHZhbGlkCi0rCSBTWU1CT0xfVkFMVUVfQUREUkVTUyBv ZiB0aGUgc3ltYm9sLiAgU3RpbGwgVkFMVUUgcmV0dXJuZWQgYnkKLSsJIHJlYWRfdmFyX3ZhbHVl IHdlIGxlZnQgYXMgbGF6eS4gICovCi0rICAgICAgdHlwZSA9IHZhbHVlX3R5cGUgKHJlYWRfdmFy X3ZhbHVlIChleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2wsCi0rCQkJCQlkZXByZWNhdGVkX3NhZmVf Z2V0X3NlbGVjdGVkX2ZyYW1lICgpKSk7Ci0rICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2Vz dCAoc2l6ZV90eXBlLCAoTE9OR0VTVCkgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAKLSAgICAgZGVm YXVsdDoKLSAgICAgICB2YWwgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3Ms IEVWQUxfQVZPSURfU0lERV9FRkZFQ1RTKTsKLWRpZmYgLS1naXQgYS9nZGIvZXhwcHJpbnQuYyBi L2dkYi9leHBwcmludC5jCi1pbmRleCBlMzc4ODMxLi40NWRlZmZlIDEwMDY0NAotLS0tIGEvZ2Ri L2V4cHByaW50LmMKLSsrKyBiL2dkYi9leHBwcmludC5jCi1AQCAtODE2LDYgKzgxNiw4IEBAIG9w X25hbWVfc3RhbmRhcmQgKGVudW0gZXhwX29wY29kZSBvcGNvZGUpCi0gICAgICAgcmV0dXJuICJP UF9UWVBFIjsKLSAgICAgY2FzZSBPUF9MQUJFTEVEOgotICAgICAgIHJldHVybiAiT1BfTEFCRUxF RCI7Ci0rICAgIGNhc2UgT1BfQURMX0ZVTkM6Ci0rICAgICAgcmV0dXJuICJPUF9BRExfRlVOQyI7 Ci0gICAgIH0KLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2V4cHJlc3Npb24uaCBiL2dkYi9leHBy ZXNzaW9uLmgKLWluZGV4IGNhMjE2Y2YuLjZiZTBiMWUgMTAwNjQ0Ci0tLS0gYS9nZGIvZXhwcmVz c2lvbi5oCi0rKysgYi9nZGIvZXhwcmVzc2lvbi5oCi1AQCAtOTUsNiArOTUsMTEgQEAgZW51bSBl eHBfb3Bjb2RlCi0gICAgICAgIFRZUEVfSU5TVEFOQ0UgbnVtX3R5cGVzIHR5cGUwIC4uLiB0eXBl TiBudW1fdHlwZXMgVFlQRV9JTlNUQU5DRSAgKi8KLSAgICAgVFlQRV9JTlNUQU5DRSwKLSAKLSsg ICAgLyogVFlQRV9JTlNUQU5DRV9MT09LVVAgaXMgdXNlZCB3aGVuIHRoZSB1c2VyIHNwZWNpZmll cyBhIHNwZWNpZmljCi0rICAgICAgIHR5cGUgaW5zdGFudGlhdGlvbiBvZiBhIGZ1bmN0aW9uIChu b3QgYSBtZXRob2QpLiBJbiB0aGlzIGNhc2UsCi0rICAgICAgIHdlIG11c3QgdG9zcyB0aGUgcmVz dWx0cyBvZiB0aGUgcGFyc2VyIGFuZCBtYW51YWxseSBkbyB0aGUgbG9va3VwLiAqLwotKyAgICBU WVBFX0lOU1RBTkNFX0xPT0tVUCwKLSsKLSAgICAgLyogZW5kIG9mIEMrKy4gICovCi0gCi0gICAg IC8qIEZvciBNb2R1bGEtMiBpbnRlZ2VyIGRpdmlzaW9uIERJViAqLwotQEAgLTM0Nyw2ICszNTIs MTAgQEAgZW51bSBleHBfb3Bjb2RlCi0gICAgICAgIFRoZW4gY29tZXMgYW5vdGhlciBPUF9ERUNG TE9BVC4gICovCi0gICAgIE9QX0RFQ0ZMT0FULAotIAotKyAgICAvKiBPUF9BRExfRlVOQyBzcGVj aWZpZXMgdGhhdCB0aGUgYXJndW1lbnQgaXMgdG8gYmUgbG9va2VkIHVwIGluIGFuCi0rICAgICAg IEFyZ3VtZW50IERlcGVuZGVudCBtYW5uZXIgKEtvZW5pZyBsb29rdXApICovCi0rICAgIE9QX0FE TF9GVU5DLAotKwotICAgICAgLyogRmlyc3QgZXh0ZW5zaW9uIG9wZXJhdG9yLiAgSW5kaXZpZHVh bCBsYW5ndWFnZSBtb2R1bGVzIGRlZmluZQotIAlleHRyYSBvcGVyYXRvcnMgaW4gKi5pbmMgaW5j bHVkZSBmaWxlcyBiZWxvdyBhbHdheXMgc3RhcnRpbmcgd2l0aAotIAludW1iZXJpbmcgYXQgT1Bf RVhURU5ERUQwOgotQEAgLTQ1MSw0ICs0NjAsNSBAQCBleHRlcm4gY2hhciAqb3Bfc3RyaW5nIChl bnVtIGV4cF9vcGNvZGUpOwotIGV4dGVybiB2b2lkIGR1bXBfcmF3X2V4cHJlc3Npb24gKHN0cnVj dCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICosIGNoYXIgKik7Ci0gZXh0ZXJuIHZvaWQg ZHVtcF9wcmVmaXhfZXhwcmVzc2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKiwgc3RydWN0IHVpX2Zp bGUgKik7Ci0gCi0rCi0gI2VuZGlmIC8qICFkZWZpbmVkIChFWFBSRVNTSU9OX0gpICovCi1kaWZm IC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCi1pbmRleCBiOTE0YjQ5Li43OGFl ZjJmIDEwMDY0NAotLS0tIGEvZ2RiL2YtbGFuZy5jCi0rKysgYi9nZGIvZi1sYW5nLmMKLUBAIC0z MSw2ICszMSw4IEBACi0gI2luY2x1ZGUgImYtbGFuZy5oIgotICNpbmNsdWRlICJ2YWxwcmludC5o IgotICNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJibG9jay5oIgotKyNpbmNsdWRlICJn ZGJfYXNzZXJ0LmgiCi0gCi0gCi0gLyogRm9sbG93aW5nIGlzIGR1YmlvdXMgc3R1ZmYgdGhhdCBo YWQgYmVlbiBpbiB0aGUgeGNvZmYgcmVhZGVyLiAqLwotQEAgLTMwNiw2ICszMDgsNDYgQEAgZl9s YW5ndWFnZV9hcmNoX2luZm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgbGFpLT5ib29s X3R5cGVfZGVmYXVsdCA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zMjsKLSB9Ci0gCi0rLyog RmluZCBpZiBOQU1FIGlzIG5vdCBjb250YWluZWQgaW4gYW55IG9mIHRoZSBGb3J0cmFuIG1vZHVs ZXMgaW1wb3J0ZWQgYnkgdGhlCi0rICAgRm9ydHJhbiBVU0Ugc3RhdGVtZW50LgorKyAgaWYgKCFU WVBFX0RJU0NBUkRBQkxFICh0eXBlKSkKKysgICAgcmV0dXJuOworKworKyAgbWFpbl90eXBlX2Ny YXdsICh0eXBlLCB0eXBlX21hcmtfdXNlZF9jcmF3bCwgTlVMTCk7CisrfQogKwotKyAgIEFzIEZv cnRyYW4gaGFzIG5vIG5lc3RlZCBibG9ja3Mgc3VjaCBsb29rdXAgY2FuIGJlIHByb2Nlc3NlZCBm cm9tCi0rICAgbG9va3VwX3N5bWJvbF9ub25sb2NhbCAtIHdoZW4gbm8gbG9jYWwgYmxvY2tzIGNv dWxkIHNhdGlzZnkgdGhlIGxvb2t1cC4gICovCisrLyogQSB0cmF2ZXJzZSBjYWxsYmFjayBmb3Ig dHlwZV9kaXNjYXJkYWJsZV90YWJsZSB3aGljaCByZW1vdmVzIGFueQorKyAgIHR5cGVfZGlzY2Fy ZGFibGUgd2hvc2UgcmVmZXJlbmNlIGNvdW50IGlzIG5vdyB6ZXJvICh1bnVzZWQgbGluaykuICAq LwogKwotK3N0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLStmX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwg KGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKwkJ CSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQorK3N0YXRpYyBpbnQKKyt0eXBlX2Rpc2NhcmRh YmxlX3JlbW92ZSAodm9pZCAqKnNsb3QsIHZvaWQgKnVudXNlZCkKICt7Ci0rICBpZiAoYmxvY2sp CisrICBzdHJ1Y3QgdHlwZSAqdHlwZSA9ICpzbG90OworKworKyAgZ2RiX2Fzc2VydCAoVFlQRV9E SVNDQVJEQUJMRSAodHlwZSkpOworKworKyAgaWYgKFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBl KSAhPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50KQogKyAgICB7Ci0rICAgICAgc3RydWN0 IGZvcnRyYW5fdXNpbmcgKnVzZTsKKysgICAgICBkZWxldGVfdHlwZV9jaGFpbiAodHlwZSk7CiAr Ci0rICAgICAgZm9yICh1c2UgPSBCTE9DS19GT1JUUkFOX1VTRSAoYmxvY2spOyB1c2U7IHVzZSA9 IHVzZS0+bmV4dCkKLSsJewotKwkgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSsJICBzdHJ1Y3QgdHlw ZSAqdHlwZTsKLSsJICBzdHJ1Y3Qgc3ltYm9sICpyZXR2YWw7CisrICAgICAgaHRhYl9jbGVhcl9z bG90ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCBzbG90KTsKKysgICAgfQogKwotKwkgIHN5bSA9 IGxvb2t1cF9zeW1ib2xfZ2xvYmFsICh1c2UtPm1vZHVsZV9uYW1lLCBibG9jaywgTU9EVUxFX0RP TUFJTik7CisrICByZXR1cm4gMTsKKyt9CiArCi0rCSAgLyogTW9kdWxlIG5hbWUgbG9va3VwIHNo b3VsZCBub3QgZmFpbCB3aXRoIGNvcnJlY3QgZGVidWcgaW5mby4gICovCi0rCSAgaWYgKHN5bSA9 PSBOVUxMKQotKwkgICAgY29udGludWU7CisrLyogRnJlZSBhbGwgdGhlIHJlY2xhaW1hYmxlIHR5 cGVzIHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBhbmQgdGhhdCBoYXZlCisrICAgY3VycmVudGx5 IHplcm8gcmVmZXJlbmNlIGNvdW50ZXIuCisrCisrICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg YWZ0ZXIgZWFjaCBjb21tYW5kLCBzdWNjZXNzZnVsIG9yIG5vdC4gIFVzZSB0aGlzCisrICAgY2xl YW51cCBvbmx5IGluIHRoZSBHREIgaWRsZSBzdGF0ZSBhcyBHREIgb25seSBtYXJrcyB0aG9zZSB0 eXBlcyB1c2VkIGJ5CisrICAgZ2xvYmFsbHkgdHJhY2tlZCBvYmplY3RzICh3aXRoIG5vIGF1dG92 YXJpYWJsZSByZWZlcmVuY2VzIHRyYWNraW5nKS4gICovCiArCi0rCSAgdHlwZSA9IFNZTUJPTF9U WVBFIChzeW0pOwotKwkgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RF X01PRFVMRSk7Ci0rCSAgZ2RiX2Fzc2VydCAoVFlQRV9NT0RVTEVfQkxPQ0sgKHR5cGUpICE9IE5V TEwpOworK3ZvaWQKKytmcmVlX2FsbF90eXBlcyAodm9pZCkKKyt7CisrICAvKiBNYXJrIGEgbmV3 IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3ZXJlIHZpc2l0ZWQgYWZ0ZXIg ZWFjaAorKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0YWxlIGVudHJpZXMgYWxyZWFk eSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCisrICAgICB2YWx1ZS4gICovCisrICB0eXBlX2Rpc2Nh cmRhYmxlX2FnZV9jdXJyZW50IF49IDE7CiArCi0rCSAgcmV0dmFsID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoVFlQRV9NT0RVTEVfQkxPQ0sgKHR5cGUpLCBuYW1lLCBkb21haW4pOwotKwkgIGlmIChy ZXR2YWwpCi0rCSAgICByZXR1cm4gcmV0dmFsOwotKwl9Ci0rICAgIH0KKysgIG9ic2VydmVyX25v dGlmeV9tYXJrX3VzZWQgKCk7CiArCi0rICByZXR1cm4gYmFzaWNfbG9va3VwX3N5bWJvbF9ub25s b2NhbCAobmFtZSwgYmxvY2ssIGRvbWFpbik7CisrICBodGFiX3RyYXZlcnNlICh0eXBlX2Rpc2Nh cmRhYmxlX3RhYmxlLCB0eXBlX2Rpc2NhcmRhYmxlX3JlbW92ZSwgTlVMTCk7CiArfQotKwotIC8q IFRoaXMgaXMgZGVjbGFyZWQgaW4gYy1sYW5nLmggYnV0IGl0IGlzIHNpbGx5IHRvIGltcG9ydCB0 aGF0IGZpbGUgZm9yIHdoYXQKLSAgICBpcyBhbHJlYWR5IGp1c3QgYSBoYWNrLiAqLwotIGV4dGVy biBpbnQgY192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB1aV9maWxlICosCi1A QCAtMzMzLDcgKzM3NSw3IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIGZfbGFuZ3VhZ2Vf ZGVmbiA9Ci0gICBjX3ZhbHVlX3ByaW50LAkJLyogRklYTUUgKi8KLSAgIE5VTEwsCQkJCS8qIExh bmd1YWdlIHNwZWNpZmljIHNraXBfdHJhbXBvbGluZSAqLwotICAgTlVMTCwgICAgICAgICAgICAg ICAgICAgIAkvKiBuYW1lX29mX3RoaXMgKi8KLS0gIGJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9j YWwsCS8qIGxvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKi8KLSsgIGZfbG9va3VwX3N5bWJvbF9ub25s b2NhbCwJLyogbG9va3VwX3N5bWJvbF9ub25sb2NhbCAqLwotICAgYmFzaWNfbG9va3VwX3RyYW5z cGFyZW50X3R5cGUsLyogbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKi8KLSAgIE5VTEwsCQkJCS8q IExhbmd1YWdlIHNwZWNpZmljIHN5bWJvbCBkZW1hbmdsZXIgKi8KLSAgIE5VTEwsCQkJCS8qIExh bmd1YWdlIHNwZWNpZmljIGNsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAqLwotZGlmZiAtLWdpdCBh L2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxhbmcuaAotaW5kZXggYjk4YzU1Ni4uYzY4Mzc5YSAxMDA2 NDQKLS0tLSBhL2dkYi9mLWxhbmcuaAotKysrIGIvZ2RiL2YtbGFuZy5oCi1AQCAtMjgsNiArMjgs MTAgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5lZCBpbiBmLWV4cC55 ICovCi0gZXh0ZXJuIHZvaWQgZl9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqLCBjaGFyICosIHN0 cnVjdCB1aV9maWxlICosIGludCwKLSAJCQkgIGludCk7CiAgCi0rZXh0ZXJuIGNvbnN0IGNoYXIg KmZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0KLSsgIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7Ci0rZXh0ZXJuIHZvaWQgZl9vYmpl Y3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci0rCi0g ZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwg aW50LCBDT1JFX0FERFIsCi0gCQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50LAotIAkJCWNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwotQEAgLTEyNSwzICsxMjksMTAgQEAgc3RydWN0 IGJ1aWx0aW5fZl90eXBlCi0gLyogUmV0dXJuIHRoZSBGb3J0cmFuIHR5cGUgdGFibGUgZm9yIHRo ZSBzcGVjaWZpZWQgYXJjaGl0ZWN0dXJlLiAgKi8KLSBleHRlcm4gY29uc3Qgc3RydWN0IGJ1aWx0 aW5fZl90eXBlICpidWlsdGluX2ZfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOworIC8q IEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHlw ZXMuICAqLwogIAotKy8qIExpc3Qgb2YgbW9kdWxlIG5hbWVzIGJlaW5nIGltcG9ydGVkIGJ5IGEg YmxvY2sgdGhvdWdoIEJMT0NLX0ZPUlRSQU5fVVNFLiAgKi8KLSsKLStzdHJ1Y3QgZm9ydHJhbl91 c2luZwotKyAgewotKyAgICBzdHJ1Y3QgZm9ydHJhbl91c2luZyAqbmV4dDsKLSsgICAgY2hhciBt b2R1bGVfbmFtZVsxXTsKLSsgIH07Ci1kaWZmIC0tZ2l0IGEvZ2RiL2YtdHlwZXByaW50LmMgYi9n ZGIvZi10eXBlcHJpbnQuYwotaW5kZXggMDMzMjkzMi4uNmU4NjY4YyAxMDA2NDQKLS0tLSBhL2dk Yi9mLXR5cGVwcmludC5jCi0rKysgYi9nZGIvZi10eXBlcHJpbnQuYwotQEAgLTMyLDcgKzMyLDcg QEAKLSAjaW5jbHVkZSAiZ2RiY29yZS5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVk ZSAiZi1sYW5nLmgiCi0tCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotICNpbmNsdWRlICJnZGJf c3RyaW5nLmgiCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi1AQCAtNDksNiArNDksMzQgQEAgdm9p ZCBmX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9m aWxlICosCi0gdm9pZCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVp X2ZpbGUgKiwgaW50LCBpbnQpOwotIAwKLSAKLStjb25zdCBjaGFyICoKLStmX29iamVjdF9hZGRy ZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkJ CSAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt7Ci0rICBjb25zdCBjaGFyICptc2c7Ci0r Ci0rICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSk7Ci0rICBpZiAo bXNnICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBBc3N1bWluZyB0aGUgY29udGVudCBwcmlu dGVkIHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4gICovCi0rICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBt c2c7Ci0rfQotKwotK3ZvaWQKLStmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3Ig KHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGNvbnN0IGNoYXIgKm1zZzsKLSsKLSsgIG1zZyA9 IG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkICh0eXBlKTsKLSsgIGlmIChtc2cgIT0gTlVM TCkKLSsgICAgewotKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNjZXNzIGl0IGJlY2F1c2UgdGhl ICVzLiIpLCBfKG1zZykpOwotKyAgICB9Ci0rfQotKwotIC8qIExFVkVMIGlzIHRoZSBkZXB0aCB0 byBpbmRlbnQgbGluZXMgYnkuICAqLwotIAotIHZvaWQKLUBAIC01OCw2ICs4Niw5IEBAIGZfcHJp bnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNoYXIgKnZhcnN0cmluZywgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSwKLSAgIGVudW0gdHlwZV9jb2RlIGNvZGU7Ci0gICBpbnQgZGVtYW5nbGVkX2Fy Z3M7CitAQCAtMzUxMSw2ICs0MDY2LDggQEAgZ2RidHlwZXNfcG9zdF9pbml0IChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCkKKyAgICAgPSBsb29rdXBfcG9pbnRlcl90eXBlIChidWlsdGluX3R5cGUt PmJ1aWx0aW5fdm9pZCk7CisgICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19wdHIKKyAgICAg PSBsb29rdXBfcG9pbnRlcl90eXBlIChsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90eXBl LT5idWlsdGluX3ZvaWQpKTsKKysgIGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX2Z1bmMKKysg ICAgPSBsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRy KTsKICAKLSsgIGlmIChmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFt ICh0eXBlLCBzdHJlYW0pICE9IE5VTEwpCi0rICAgIHJldHVybjsKKyAgIC8qIFRoaXMgdHlwZSBy ZXByZXNlbnRzIGEgR0RCIGludGVybmFsIGZ1bmN0aW9uLiAgKi8KKyAgIGJ1aWx0aW5fdHlwZS0+ aW50ZXJuYWxfZm4KK0BAIC0zNjI0LDYgKzQxODEsMTggQEAgb2JqZmlsZV90eXBlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKKyAJCSAiPHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+Iiwg b2JqZmlsZSk7CisgICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4 dF9zeW1ib2wpCisgICAgID0gb2JqZmlsZV90eXBlLT5idWlsdGluX2ludDsKKysgIG9iamZpbGVf dHlwZS0+bm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2wKKysgICAgPSBpbml0X3R5cGUgKFRZ UEVfQ09ERV9GVU5DLCAxLCBUWVBFX0ZMQUdfR05VX0lGVU5DLAorKwkJICI8dGV4dCBnbnUtaW5k aXJlY3QtZnVuY3Rpb24gdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+IiwKKysJCSBvYmpmaWxlKTsK KysgIFRZUEVfVEFSR0VUX1RZUEUgKG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X2dudV9pZnVu Y19zeW1ib2wpCisrICAgID0gb2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9sOworKyAg b2JqZmlsZV90eXBlLT5ub2RlYnVnX2dvdF9wbHRfc3ltYm9sCisrICAgID0gaW5pdF90eXBlIChU WVBFX0NPREVfUFRSLCBnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSAvIDgsIDAsCisrCQkgIjx0 ZXh0IGZyb20ganVtcCBzbG90IGluIC5nb3QucGx0LCBubyBkZWJ1ZyBpbmZvPiIsCisrCQkgb2Jq ZmlsZSk7CisrICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfZ290X3Bs dF9zeW1ib2wpCisrICAgID0gb2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9sOworICAg b2JqZmlsZV90eXBlLT5ub2RlYnVnX2RhdGFfc3ltYm9sCisgICAgID0gaW5pdF90eXBlIChUWVBF X0NPREVfSU5ULAorIAkJIGdkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCkgLyBIT1NUX0NIQVJfQklU LCAwLAorQEAgLTM2NzgsNiArNDI0NywxMSBAQCB2b2lkCisgX2luaXRpYWxpemVfZ2RidHlwZXMg KHZvaWQpCisgeworICAgZ2RidHlwZXNfZGF0YSA9IGdkYmFyY2hfZGF0YV9yZWdpc3Rlcl9wb3N0 X2luaXQgKGdkYnR5cGVzX3Bvc3RfaW5pdCk7CiArCi0gICBmX3R5cGVfcHJpbnRfYmFzZSAodHlw ZSwgc3RyZWFtLCBzaG93LCBsZXZlbCk7Ci0gICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKLSAg IGlmICgodmFyc3RyaW5nICE9IE5VTEwgJiYgKnZhcnN0cmluZyAhPSAnXDAnKQotQEAgLTE2NSw2 ICsxOTYsOSBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotIAotICAgUVVJVDsKLSAKLSsgIGlmIChUWVBFX0NP REUgKHR5cGUpICE9IFRZUEVfQ09ERV9UWVBFREVGKQotKyAgICBDSEVDS19UWVBFREVGICh0eXBl KTsKKysgIHR5cGVfZGlzY2FyZGFibGVfdGFibGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMjAsIHR5 cGVfZGlzY2FyZGFibGVfaGFzaCwKKysJCQkJCSAgICAgdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCwg TlVMTCwKKysJCQkJCSAgICAgeGNhbGxvYywgeGZyZWUpOwogKwotICAgc3dpdGNoIChUWVBFX0NP REUgKHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgotZGlmZiAtLWdp dCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCi1pbmRleCA5YmQzNjQwLi5m NTJiODU4IDEwMDY0NAotLS0tIGEvZ2RiL2YtdmFscHJpbnQuYwotKysrIGIvZ2RiL2YtdmFscHJp bnQuYwotQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29mZnNldF90YmxbTUFYX0ZP UlRSQU5fRElNUyArIDFdWzJdOwotIC8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gZ2l2ZXMgdXMgdGhl IHNpemUgb2YgdGhlIG50aCBkaW1lbnNpb24sIFdoZXJlIAotICAgIG4gaXMgMSBiYXNlZC4gKi8K KyAgIG9iamZpbGVfdHlwZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhICgpOwogIAotLSNk ZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVsxXSkKLSsjZGVm aW5lIEY3N19ESU1fQ09VTlQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzFdKQorICAgYWRk X3NldHNob3dfemludGVnZXJfY21kICgib3ZlcmxvYWQiLCBub19jbGFzcywgJm92ZXJsb2FkX2Rl YnVnLCBfKCJcCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAor aW5kZXggMDg1MjcwZS4uY2IyYjg4ZSAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0eXBlcy5oCisrKysg Yi9nZGIvZ2RidHlwZXMuaAorQEAgLTE3MSw2ICsxNzEsNyBAQCBlbnVtIHR5cGVfZmxhZ192YWx1 ZQorICAgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFID0gKDEgPDwgMTUpLAorICAgVFlQRV9GTEFH X1NUVUJfU1VQUE9SVEVEID0gKDEgPDwgMTYpLAorICAgVFlQRV9GTEFHX05PVFRFWFQgPSAoMSA8 PCAxNyksCisrICBUWVBFX0ZMQUdfR05VX0lGVU5DID0gKDEgPDwgMTgpLAogIAotLS8qIFRoZSBm b2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIG9mZnNldCBmb3Igcm93IG4gd2hlcmUgbiBpcyAxLWJhc2Vk LiAqLwotKy8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIGVsZW1lbnQgc2l6ZSBmb3Igcm93 IG4gd2hlcmUgbiBpcyAxLWJhc2VkLiAqLworICAgLyogVXNlZCBmb3IgZXJyb3ItY2hlY2tpbmcu ICAqLworICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAorQEAgLTIxNCw2ICsy MTUsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKICAKLS0jZGVmaW5lIEY3N19E SU1fT0ZGU0VUKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkKLSsjZGVmaW5lIEY3N19E SU1fQllURV9TVFJJREUobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQorICNkZWZpbmUg VFlQRV9UQVJHRVRfU1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX3RhcmdldF9zdHVi KQogIAotIGludAotIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewot KyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBlKTsKKysvKiBUeXBl IG5lZWRzIHRvIGJlIGV2YWx1YXRlZCBvbiBlYWNoIENIRUNLX1RZUEVERUYgYW5kIGl0cyByZXN1 bHRzIG11c3Qgbm90IGJlCisrICAgc3RpY2t5LiAgKi8KICsKLSAgIGlmIChUWVBFX0FSUkFZX0xP V0VSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCi0gICAgIGVycm9yIChfKCJMb3dlciBib3Vu ZCBtYXkgbm90IGJlICcqJyBpbiBGNzciKSk7Ci0gCi1AQCAtNzIsMTQgKzc0LDE3IEBAIGY3N19n ZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gaW50Ci0gZjc3X2dldF91cHBlcmJv dW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSB7Ci0rICBmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFs aWRfb3JfZXJyb3IgKHR5cGUpOworKyNkZWZpbmUgVFlQRV9EWU5BTUlDKHQpCQkoVFlQRV9NQUlO X1RZUEUgKHQpLT5mbGFnX2R5bmFtaWMpCiArCi0gICBpZiAoVFlQRV9BUlJBWV9VUFBFUl9CT1VO RF9JU19VTkRFRklORUQgKHR5cGUpKQotICAgICB7Ci0tICAgICAgLyogV2UgaGF2ZSBhbiBhc3N1 bWVkIHNpemUgYXJyYXkgb24gb3VyIGhhbmRzLiAgQXNzdW1lIHRoYXQKLS0JIHVwcGVyX2JvdW5k ID09IGxvd2VyX2JvdW5kIHNvIHRoYXQgd2Ugc2hvdyBhdCBsZWFzdCAxIGVsZW1lbnQuCi0tCSBJ ZiB0aGUgdXNlciB3YW50cyB0byBzZWUgbW9yZSBlbGVtZW50cywgbGV0IGhpbSBtYW51YWxseSBh c2sgZm9yICdlbQotLQkgYW5kIHdlJ2xsIHN1YnNjcmlwdCB0aGUgYXJyYXkgYW5kIHNob3cgaGlt LiAgKi8KLSsgICAgICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSBvbiBvdXIgaGFu ZHMuICBBcyB0eXBlX2xlbmd0aF9nZXQKLSsJIGFscmVhZHkgYXNzdW1lcyBhIGxlbmd0aCB6ZXJv IG9mIGFycmF5cyB3aXRoIHVuZGVyZmluZWQgYm91bmRzIFZBTEFERFIKLSsJIHBhc3NlZCB0byB0 aGUgRm9ydHJhbiBmdW5jdGlvbnMgZG9lcyBub3QgY29udGFpbmVkIHRoZSByZWFsIGluZmVyaW9y Ci0rCSBtZW1vcnkgY29udGVudC4gIFVzZXIgc2hvdWxkIHJlcXVlc3QgcHJpbnRpbmcgb2Ygc3Bl Y2lmaWMgYXJyYXkKLSsJIGVsZW1lbnRzIGluc3RlYWQuICAqLwotIAotLSAgICAgIHJldHVybiBm NzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOwotKyAgICAgIHJldHVybiBmNzdfZ2V0X2xvd2VyYm91 bmQgKHR5cGUpIC0gMTsKLSAgICAgfQorIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQs IHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAorICAqIGEgc3RhdGljIG1vZGlmaWVyLgorICAq IE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJz CitAQCAtMjcxLDYgKzI3NywxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAot ICAgcmV0dXJuIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfVkFMVUUgKHR5cGUpOwotQEAgLTEzNSwy NCArMTQwLDI5IEBAIGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSAgICAgICB1cHBlciA9IGY3N19nZXRf dXBwZXJib3VuZCAodG1wX3R5cGUpOwotICAgICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5k ICh0bXBfdHlwZSk7CisgI2RlZmluZSBUWVBFX05PVFRFWFQodCkJCShUWVBFX01BSU5fVFlQRSAo dCktPmZsYWdfbm90dGV4dCkKICAKLS0gICAgICBGNzdfRElNX1NJWkUgKG5kaW1lbikgPSB1cHBl ciAtIGxvd2VyICsgMTsKLSsgICAgICBGNzdfRElNX0NPVU5UIChuZGltZW4pID0gdXBwZXIgLSBs b3dlciArIDE7CisrLyogVXNlZCBvbmx5IGZvciBUWVBFX0NPREVfRlVOQyB3aGVyZSBpdCBzcGVj aWZpZXMgdGhlIHJlYWwgZnVuY3Rpb24KKysgICBhZGRyZXNzIGlzIHJldHVybmVkIGJ5IHRoaXMg ZnVuY3Rpb24gY2FsbC4gIFRZUEVfVEFSR0VUX1RZUEUgZGV0ZXJtaW5lcyB0aGUKKysgICBmaW5h bCByZXR1cm5lZCBmdW5jdGlvbiB0eXBlIHRvIGJlIHByZXNlbnRlZCB0byB1c2VyLiAgKi8KICsK LSsgICAgICBGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0KLSsgICAgICAgIFRZUEVfQVJS QVlfQllURV9TVFJJREVfVkFMVUUgKHRtcF90eXBlKTsKLSAKLSAgICAgICB0bXBfdHlwZSA9IFRZ UEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKTsKLSAgICAgICBuZGltZW4rKzsKLSAgICAgfQotIAot LSAgLyogTm93IHdlIG11bHRpcGx5IGVsdGxlbiBieSBhbGwgdGhlIG9mZnNldHMsIHNvIHRoYXQg bGF0ZXIgd2UgCi0rICAvKiBOb3cgd2UgbXVsdGlwbHkgZWx0bGVuIGJ5IGFsbCB0aGUgQllURV9T VFJJREVzLCBzbyB0aGF0IGxhdGVyIHdlCi0gICAgICBjYW4gcHJpbnQgb3V0IGFycmF5IGVsZW1l bnRzIGNvcnJlY3RseS4gIFVwIHRpbGwgbm93IHdlIAotLSAgICAga25vdyBhbiBvZmZzZXQgdG8g YXBwbHkgdG8gZ2V0IHRoZSBpdGVtIGJ1dCB3ZSBhbHNvIAotKyAgICAga25vdyBhbiBlbHRsZW4g dG8gYXBwbHkgdG8gZ2V0IHRoZSBpdGVtIGJ1dCB3ZSBhbHNvCi0gICAgICBoYXZlIHRvIGtub3cg aG93IG11Y2ggdG8gYWRkIHRvIGdldCB0byB0aGUgbmV4dCBpdGVtICovCi0gCi0gICBuZGltZW4t LTsKLSAgIGVsdGxlbiA9IFRZUEVfTEVOR1RIICh0bXBfdHlwZSk7Ci0tICBGNzdfRElNX09GRlNF VCAobmRpbWVuKSA9IGVsdGxlbjsKLSsgIGlmIChGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4p ID09IDApCi0rICAgIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPSBlbHRsZW47Ci0gICB3 aGlsZSAoLS1uZGltZW4gPiAwKQotICAgICB7Ci0tICAgICAgZWx0bGVuICo9IEY3N19ESU1fU0la RSAobmRpbWVuICsgMSk7Ci0tICAgICAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47 Ci0rICAgICAgZWx0bGVuICo9IEY3N19ESU1fQ09VTlQgKG5kaW1lbiArIDEpOwotKyAgICAgIGlm IChGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID09IDApCi0rCUY3N19ESU1fQllURV9TVFJJ REUgKG5kaW1lbikgPSBlbHRsZW47Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTcyLDM0ICsxODIsMzQg QEAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5 cGUgKnR5cGUsCi0gCi0gICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQotICAgICB7Ci0tICAgICAg Zm9yIChpID0gMDsgKGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMt PnByaW50X21heCk7IGkrKykKLSsgICAgICBmb3IgKGkgPSAwOyAoaSA8IEY3N19ESU1fQ09VTlQg KG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7IGkrKykKLSAJewotIAkgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiggIik7Ci0gCSAgZjc3X3ByaW50X2FycmF5XzEgKG5z cyArIDEsIG5kaW1lbnNpb25zLCBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLS0JCQkgICAgIHZh bGFkZHIgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5zcyksCi0tCQkJICAgICBhZGRyZXNzICsgaSAq IEY3N19ESU1fT0ZGU0VUIChuc3MpLAotKwkJCSAgICAgdmFsYWRkciArIGkgKiBGNzdfRElNX0JZ VEVfU1RSSURFIChuc3MpLAotKwkJCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX0JZVEVfU1RS SURFIChuc3MpLAotIAkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCBlbHRzKTsKLSAJ ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOwotIAl9Ci0tICAgICAgaWYgKCplbHRz ID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChuc3MpKSAKLSsgICAg ICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdfRElNX0NPVU5UIChu c3MpKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLSAgICAgfQotICAgZWxz ZQotICAgICB7Ci0tICAgICAgZm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAo KmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdf RElNX0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7Ci0gCSAgIGkr KywgKCplbHRzKSsrKQotIAl7Ci0gCSAgdmFsX3ByaW50IChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwKLS0JCSAgICAgdmFsYWRkciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAot KwkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwK LSAJCSAgICAgMCwKLS0JCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVu c2lvbnMpLAotKwkJICAgICBhZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1l bnNpb25zKSwKLSAJCSAgICAgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCBjdXJyZW50X2xhbmd1 YWdlKTsKLSAKLS0JICBpZiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0gMSkpCi0rCSAgaWYg KGkgIT0gKEY3N19ESU1fQ09VTlQgKG5zcykgLSAxKSkKLSAJICAgIGZwcmludGZfZmlsdGVyZWQg KHN0cmVhbSwgIiwgIik7Ci0gCi0gCSAgaWYgKCgqZWx0cyA9PSBvcHRpb25zLT5wcmludF9tYXgg LSAxKQotLQkgICAgICAmJiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0gMSkpKQotKwkgICAg ICAmJiAoaSAhPSAoRjc3X0RJTV9DT1VOVCAobnNzKSAtIDEpKSkKLSAJICAgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIi4uLiIpOwotIAl9Ci0gICAgIH0KLUBAIC0yNTMsNiArMjYzLDkgQEAg Zl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwg aW50IGVtYmVkZGVkX29mZnNldCwKLSAgIENPUkVfQUREUiBhZGRyOwotICAgaW50IGluZGV4Owot IAotKyAgaWYgKGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0gKHR5 cGUsIHN0cmVhbSkgIT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7CisrI2RlZmluZSBUWVBFX0dOVV9J RlVOQyh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2dudV9pZnVuYykKICsKLSAgIENIRUNL X1RZUEVERUYgKHR5cGUpOwotICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci1k aWZmIC0tZ2l0IGEvZ2RiL2ZpbmRjbWQuYyBiL2dkYi9maW5kY21kLmMKLWluZGV4IGM3NTIzMTYu LmRmMjY4N2MgMTAwNjQ0Ci0tLS0gYS9nZGIvZmluZGNtZC5jCi0rKysgYi9nZGIvZmluZGNtZC5j Ci1AQCAtMjcsNyArMjcsNyBAQAotIAotIC8qIENvcGllZCBmcm9tIGJmZF9wdXRfYml0cy4gICov CisgLyogVHlwZSBvd25lci4gIElmIFRZUEVfT0JKRklMRV9PV05FRCBpcyB0cnVlLCB0aGUgdHlw ZSBpcyBvd25lZCBieQorICAgIHRoZSBvYmpmaWxlIHJldHJpZXZlZCBhcyBUWVBFX09CSkZJTEUu ICBPdGhlcndlaXNlLCB0aGUgdHlwZSBpcworICAgIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZTsg VFlQRV9PQkpGSUxFIGlzIE5VTEwgaW4gdGhpcyBjYXNlLiAgKi8KK0BAIC0yODUsNiArMjk3LDQ4 IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCi0tc3RhdGljIHZvaWQKLSt2b2lk Ci0gcHV0X2JpdHMgKGJmZF91aW50NjRfdCBkYXRhLCBjaGFyICpidWYsIGludCBiaXRzLCBiZmRf Ym9vbGVhbiBiaWdfcCkKLSB7Ci0gICBpbnQgaTsKLUBAIC00NSw2ICs0NSw0MSBAQCBwdXRfYml0 cyAoYmZkX3VpbnQ2NF90IGRhdGEsIGNoYXIgKmJ1ZiwgaW50IGJpdHMsIGJmZF9ib29sZWFuIGJp Z19wKQotICAgICB9Ci0gfQorICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9DTEFTUyh0KSAoVFlQRV9N QUlOX1RZUEUgKHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQogIAotKy8qIEFsbG9jYXRlcyBhIGJ1 ZmZlciBpbiAqUEFUVEVSTl9CVUYsIHdpdGggYSBoYXJkLWNvZGVkIGluaXRpYWwgc2l6ZSB3aGlj aAotKyAgIHdpbGwgYmUgcmV0dXJuZWQgaW4gKlBBVFRFUk5fQlVGX1NJWkUuICpQQVRURVJOX0JV Rl9FTkQgcG9pbnRzIHRvIHRoZSBzYW1lCi0rICAgcGxhY2UgYXMgKlBBVFRFUk5fQlVGLCBpbmRp Y2F0aW5nIHRoYXQgdGhlIGJ1ZmZlciBpcyBpbml0aWFsbHkgZW1wdHkuICAqLworKy8qIERlZmlu ZSB0aGlzIHR5cGUgYXMgYmVpbmcgcmVjbGFpbWFibGUgZHVyaW5nIGZyZWVfYWxsX3R5cGVzLiAg VHlwZSBpcworKyAgIHJlcXVpcmVkIHRvIGJlIGhhdmUgVFlQRV9PQkpGSUxFIHNldCB0byBOVUxM LiAgU2V0dGluZyB0aGlzIGZsYWcgcmVxdWlyZXMKKysgICBpbml0aWFsaXppbmcgVFlQRV9ESVND QVJEQUJMRV9BR0UsIHNlZSBhbGxvY190eXBlX2Rpc2NhcmRhYmxlLiAgKi8KICsKLSt2b2lkCi0r YWxsb2NhdGVfcGF0dGVybl9idWZmZXIgKGNoYXIgKipwYXR0ZXJuX2J1ZiwgY2hhciAqKnBhdHRl cm5fYnVmX2VuZCwKLSsJCQkgVUxPTkdFU1QgKnBhdHRlcm5fYnVmX3NpemUpCi0rewotKyNkZWZp bmUgSU5JVElBTF9QQVRURVJOX0JVRl9TSVpFIDEwMAotKyAgKnBhdHRlcm5fYnVmX3NpemUgPSBJ TklUSUFMX1BBVFRFUk5fQlVGX1NJWkU7Ci0rICAqcGF0dGVybl9idWYgPSB4bWFsbG9jICgqcGF0 dGVybl9idWZfc2l6ZSk7Ci0rICAqcGF0dGVybl9idWZfZW5kID0gKnBhdHRlcm5fYnVmOwotK30K KysjZGVmaW5lIFRZUEVfRElTQ0FSREFCTEUodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19k aXNjYXJkYWJsZSkKICsKLSsvKiBHcm93cyAqUEFUVEVSTl9CVUYgYnkgYSBmYWN0b3Igb2YgdHdv IGlmIGl0J3Mgbm90IGxhcmdlIGVub3VnaCB0byBob2xkCi0rICAgVkFMX0JZVEVTIG1vcmUgYnl0 ZXMgIG9yIGEgNjQtYml0IHZhbHVlLCB3aGljaGV2ZXIgaXMgbGFyZ2VyLgotKyAgICpQQVRURVJO X0JVRl9FTkQgaXMgdXBkYXRlZCBhcyBuZWNlc3NhcnkuICAqLworKy8qIE1hcmtlciB0aGlzIHR5 cGUgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9tYXJrX3VzZWQgYnkgdGhpcworKyAgIG1h cmstYW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVjdGluZyBwYXNzLiAgQ3VycmVudCBwYXNz IGlzIHJlcHJlc2VudGVkCisrICAgYnkgVFlQRV9ESVNDQVJEQUJMRV9BR0VfQ1VSUkVOVC4gICov CiArCi0rdm9pZAotK2luY3JlYXNlX3BhdHRlcm5fYnVmZmVyIChjaGFyICoqcGF0dGVybl9idWYs IGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJIFVMT05HRVNUICpwYXR0ZXJuX2J1Zl9zaXpl LCBpbnQgdmFsX2J5dGVzKQotK3sKLSsgICAgLyogS2VlcCBpdCBzaW1wbGUgYW5kIGFzc3VtZSBz aXplID09ICdnJyB3aGVuIHdhdGNoaW5nIGZvciB3aGVuIHdlCi0rICAgICAgIG5lZWQgdG8gZ3Jv dyB0aGUgcGF0dGVybiBidWYuICAqLwotKyAgICBpZiAoKCpwYXR0ZXJuX2J1Zl9lbmQgLSAqcGF0 dGVybl9idWYgKyBtYXggKHZhbF9ieXRlcywgc2l6ZW9mIChpbnQ2NF90KSkpCi0rCT4gKnBhdHRl cm5fYnVmX3NpemUpCi0rICAgICAgewotKwlzaXplX3QgY3VycmVudF9vZmZzZXQgPSAqcGF0dGVy bl9idWZfZW5kIC0gKnBhdHRlcm5fYnVmOworKyNkZWZpbmUgVFlQRV9ESVNDQVJEQUJMRV9BR0Uo dCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kaXNjYXJkYWJsZV9hZ2UpCiArCi0rCSpwYXR0 ZXJuX2J1Zl9zaXplICo9IDI7Ci0rCSpwYXR0ZXJuX2J1ZiA9IHhyZWFsbG9jICgqcGF0dGVybl9i dWYsICpwYXR0ZXJuX2J1Zl9zaXplKTsKLSsJKnBhdHRlcm5fYnVmX2VuZCA9ICpwYXR0ZXJuX2J1 ZiArIGN1cnJlbnRfb2Zmc2V0OwotKyAgICAgIH0KLSt9CisrLyogSXMgSElHSF9CT1VORCBhIGxv dy1ib3VuZCByZWxhdGl2ZSBjb3VudCAoMSkgb3IgdGhlIGhpZ2ggYm91bmQgaXRzZWxmICgwKT8g ICovCiArCi0gLyogU3Vicm91dGluZSBvZiBmaW5kX2NvbW1hbmQgdG8gc2ltcGxpZnkgaXQuCi0g ICAgUGFyc2UgdGhlIGFyZ3VtZW50cyBvZiB0aGUgImZpbmQiIGNvbW1hbmQuICAqLwotIAotQEAg LTYxLDggKzk2LDcgQEAgcGFyc2VfZmluZF9hcmdzIChjaGFyICphcmdzLCBVTE9OR0VTVCAqbWF4 X2NvdW50cCwKLSAgIGNoYXIgKnBhdHRlcm5fYnVmOwotICAgLyogQ3VycmVudCBzaXplIG9mIHNl YXJjaCBwYXR0ZXJuIGJ1ZmZlci4KLSAgICAgIFdlIHJlYWxsb2Mgc3BhY2UgYXMgbmVlZGVkLiAg Ki8KLS0jZGVmaW5lIElOSVRJQUxfUEFUVEVSTl9CVUZfU0laRSAxMDAKLS0gIFVMT05HRVNUIHBh dHRlcm5fYnVmX3NpemUgPSBJTklUSUFMX1BBVFRFUk5fQlVGX1NJWkU7Ci0rICBVTE9OR0VTVCBw YXR0ZXJuX2J1Zl9zaXplOwotICAgLyogUG9pbnRlciB0byBvbmUgcGFzdCB0aGUgbGFzdCBpbi11 c2UgcGFydCBvZiBwYXR0ZXJuX2J1Zi4gICovCi0gICBjaGFyICpwYXR0ZXJuX2J1Zl9lbmQ7Ci0g ICBVTE9OR0VTVCBwYXR0ZXJuX2xlbjsKLUBAIC03NSw4ICsxMDksNyBAQCBwYXJzZV9maW5kX2Fy Z3MgKGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291bnRwLAotICAgaWYgKGFyZ3MgPT0gTlVM TCkKLSAgICAgZXJyb3IgKF8oIk1pc3Npbmcgc2VhcmNoIHBhcmFtZXRlcnMuIikpOwotIAotLSAg cGF0dGVybl9idWYgPSB4bWFsbG9jIChwYXR0ZXJuX2J1Zl9zaXplKTsKLS0gIHBhdHRlcm5fYnVm X2VuZCA9IHBhdHRlcm5fYnVmOwotKyAgYWxsb2NhdGVfcGF0dGVybl9idWZmZXIgKCZwYXR0ZXJu X2J1ZiwgJnBhdHRlcm5fYnVmX2VuZCwgJnBhdHRlcm5fYnVmX3NpemUpOwotICAgb2xkX2NsZWFu dXBzID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZwYXR0ZXJuX2J1Zik7 Ci0gCi0gICAvKiBHZXQgc2VhcmNoIGdyYW51bGFyaXR5IGFuZC9vciBtYXggY291bnQgaWYgc3Bl Y2lmaWVkLgotQEAgLTE3MywxNiArMjA2LDggQEAgcGFyc2VfZmluZF9hcmdzIChjaGFyICphcmdz LCBVTE9OR0VTVCAqbWF4X2NvdW50cCwKLSAgICAgICB2ID0gcGFyc2VfdG9fY29tbWFfYW5kX2V2 YWwgKCZzKTsKLSAgICAgICB2YWxfYnl0ZXMgPSBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAodikp OwotIAotLSAgICAgIC8qIEtlZXAgaXQgc2ltcGxlIGFuZCBhc3N1bWUgc2l6ZSA9PSAnZycgd2hl biB3YXRjaGluZyBmb3Igd2hlbiB3ZQotLQkgbmVlZCB0byBncm93IHRoZSBwYXR0ZXJuIGJ1Zi4g ICovCi0tICAgICAgaWYgKChwYXR0ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1ZiArIG1heCAodmFs X2J5dGVzLCBzaXplb2YgKGludDY0X3QpKSkKLS0JICA+IHBhdHRlcm5fYnVmX3NpemUpCi0tCXsK LS0JICBzaXplX3QgY3VycmVudF9vZmZzZXQgPSBwYXR0ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1 ZjsKLS0JICBwYXR0ZXJuX2J1Zl9zaXplICo9IDI7Ci0tCSAgcGF0dGVybl9idWYgPSB4cmVhbGxv YyAocGF0dGVybl9idWYsIHBhdHRlcm5fYnVmX3NpemUpOwotLQkgIHBhdHRlcm5fYnVmX2VuZCA9 IHBhdHRlcm5fYnVmICsgY3VycmVudF9vZmZzZXQ7Ci0tCX0KLSsgICAgICBpbmNyZWFzZV9wYXR0 ZXJuX2J1ZmZlciAoJnBhdHRlcm5fYnVmLCAmcGF0dGVybl9idWZfZW5kLAotKwkJCSAgICAgICAm cGF0dGVybl9idWZfc2l6ZSwgdmFsX2J5dGVzKTsKLSAKLSAgICAgICBpZiAoc2l6ZSAhPSAnXDAn KQotIAl7Ci1AQCAtMjM3LDYgKzI2Miw0NSBAQCBwYXJzZV9maW5kX2FyZ3MgKGNoYXIgKmFyZ3Ms IFVMT05HRVNUICptYXhfY291bnRwLAotICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NsZWFudXBz KTsKLSB9Ci0gCi0rLyogRHJpdmVzIHRhcmdldF9zZWFyY2hfbWVtb3J5IHRvIHN3ZWVwIHRocm91 Z2ggdGhlIHNwZWNpZmllZCBzZWFyY2ggc3BhY2UsCi0rICAgcG9zc2libHkgaW4gc2V2ZXJhbCBp dGVyYXRpb25zICh3aXRoIG9uZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gZm9yIGVhY2gKLSsgICBp dGVyYXRpb24pLiAgKlNUQVJUX0FERFIgaXMgdGhlIGFkZHJlc3Mgd2hlcmUgdGhlIHNlYXJjaCBz dGFydHMsIGFuZCBpcwotKyAgIHVwZGF0ZWQgdG8gdGhlIG5leHQgc3RhcnRpbmcgYWRkcmVzcyB0 byBjb250aW51ZSB0aGUgc2VhcmNoLgotKyAgICpTRUFSQ0hfU1BBQ0VfTEVOIGlzIHRoZSBhbW91 bnQgb2YgYnl0ZXMgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCwgYW5kIGlzCi0rICAgdXBkYXRlZCBm b3IgdGhlIG5leHQgaXRlcmF0aW9uLiBQQVRURVJOX0JVRiBob2xkcyB0aGUgcGF0dGVybiB0byBi ZSBzZWFyY2hlZAotKyAgIGZvciwgUEFUVEVSTl9MRU4gaXMgdGhlIHNpemUgb2YgdGhlIHBhdHRl cm4gaW4gYnl0ZXMuICBJZiBhIG1hdGNoIGlzIGZvdW5kLAotKyAgIGl0J3MgYWRkcmVzcyBpcyBw dXQgaW4gKkZPVU5EX0FERFIuCisrI2RlZmluZSBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09V TlQocmFuZ2VfdHlwZSkgXAorKyAgKFRZUEVfTUFJTl9UWVBFIChyYW5nZV90eXBlKS0+ZmxhZ19y YW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50KQogKwotKyAgIFJldHVybnMgMSBpZiBmb3VuZCwgMCBp ZiBub3QgZm91bmQsIGFuZCAtMSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgcmVxdWlyaW5nCi0rICAg aGFsdGluZyBvZiB0aGUgc2VhcmNoIChlLmcuIG1lbW9yeSByZWFkIGVycm9yKS4gICovCisrLyog Tm90IGFsbG9jYXRlZC4gIFRZUEVfQUxMT0NBVEVEKHQpIG11c3QgYmUgTlVMTCBpbiBzdWNoIGNh c2UuICBJZiB0aGlzIGZsYWcKKysgICBpcyB1bnNldCBhbmQgVFlQRV9BTExPQ0FURUQodCkgaXMg TlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFsbG9jYXRlZC4gIElmIHRoaXMKKysgICBmbGFnIGlzIHVu c2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBub3QgTlVMTCB0aGVuIGl0cyBEV0FSRiBibG9j aworKyAgIGRldGVybWluZXMgdGhlIGFjdHVhbCBhbGxvY2F0aW9uIHN0YXRlLiAgKi8KICsKLStp bnQKLStzZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgKnN0YXJ0X2FkZHIsIFVMT05HRVNUICpzZWFy Y2hfc3BhY2VfbGVuLAotKwkgICAgICAgY29uc3QgY2hhciAqcGF0dGVybl9idWYsIFVMT05HRVNU IHBhdHRlcm5fbGVuLAotKwkgICAgICAgQ09SRV9BRERSICpmb3VuZF9hZGRyKQotK3sKLSsgIC8q IE9mZnNldCBmcm9tIHN0YXJ0IG9mIHRoaXMgaXRlcmF0aW9uIHRvIHRoZSBuZXh0IGl0ZXJhdGlv bi4gICovCi0rICBVTE9OR0VTVCBuZXh0X2l0ZXJfaW5jcjsKLSsgIGludCBmb3VuZDsKLSsgICAg Ci0rICBmb3VuZCA9IHRhcmdldF9zZWFyY2hfbWVtb3J5ICgqc3RhcnRfYWRkciwgKnNlYXJjaF9z cGFjZV9sZW4sCi0rCQkJCXBhdHRlcm5fYnVmLCBwYXR0ZXJuX2xlbiwgZm91bmRfYWRkcik7Ci0r ICBpZiAoZm91bmQgPD0gMCkKLSsgICAgcmV0dXJuIGZvdW5kOworKyNkZWZpbmUgVFlQRV9OT1Rf QUxMT0NBVEVEKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfbm90X2FsbG9jYXRlZCkKICsK LSsgIC8qIEJlZ2luIG5leHQgaXRlcmF0aW9uIGF0IG9uZSBieXRlIHBhc3QgdGhpcyBtYXRjaC4g ICovCi0rICBuZXh0X2l0ZXJfaW5jciA9ICgqZm91bmRfYWRkciAtICpzdGFydF9hZGRyKSArIDE7 CisrLyogTm90IGFzc29jaWF0ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVzdCBiZSBOVUxMIGlu IHN1Y2ggY2FzZS4gIElmIHRoaXMgZmxhZworKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09DSUFU RUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJZgorKyAgIHRoaXMg ZmxhZyBpcyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRz IERXQVJGIGJsb2NrCisrICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29jaWF0aW9uIHN0YXRl LiAgKi8KICsKLSsgIC8qIEZvciByb2J1c3RuZXNzLCB3ZSBkb24ndCBsZXQgc2VhcmNoX3NwYWNl X2xlbiBnbyAtdmUgaGVyZS4gICovCi0rICBpZiAoKnNlYXJjaF9zcGFjZV9sZW4gPj0gbmV4dF9p dGVyX2luY3IpCi0rICAgICpzZWFyY2hfc3BhY2VfbGVuIC09IG5leHRfaXRlcl9pbmNyOwotKyAg ZWxzZQotKyAgICAqc2VhcmNoX3NwYWNlX2xlbiA9IDA7Ci0rICAqc3RhcnRfYWRkciArPSBuZXh0 X2l0ZXJfaW5jcjsKKysjZGVmaW5lIFRZUEVfTk9UX0FTU09DSUFURUQodCkJKFRZUEVfTUFJTl9U WVBFICh0KS0+ZmxhZ19ub3RfYXNzb2NpYXRlZCkKICsKLSsgIHJldHVybiBmb3VuZDsKLSt9Cisr LyogQWRkcmVzcyBvZiB0aGUgYWN0dWFsIGRhdGEgYXMgZm9yIERXX0FUX2RhdGFfbG9jYXRpb24u ICBJdHMgZHdhcmYgYmxvY2sgbXVzdAorKyAgIG5vdCBiZSBldmFsdWF0ZWQgdW5sZXNzIGJvdGgg VFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZQorKyAgIGZhbHNl LiAgSWYgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgc2V0IHRoZW4gVFlQRV9EQVRBX0xPQ0FU SU9OX0FERFIgdmFsdWUKKysgICBpcyB0aGUgYWN0dWFsIGRhdGEgYWRkcmVzcyB2YWx1ZS4gIElm IHVuc2V0IGFuZAorKyAgIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyBpcyBOVUxMIHRo ZW4gdGhlIHZhbHVlIGlzIHRoZSBub3JtYWwKKysgICB2YWx1ZV9yYXdfYWRkcmVzcy4gIElmIHVu c2V0IGFuZCBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgaXMgbm90IE5VTEwKKysgICB0 aGVuIGl0cyBEV0FSRiBibG9jayBkZXRlcm1pbmVzIHRoZSBhY3R1YWwgZGF0YSBhZGRyZXNzLiAg Ki8KICsKLSBzdGF0aWMgdm9pZAotIGZpbmRfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotIHsKLUBAIC0yNjcsMTIgKzMzMSwxMSBAQCBmaW5kX2NvbW1hbmQgKGNoYXIgKmFyZ3Ms IGludCBmcm9tX3R0eSkKLSAgIHdoaWxlIChzZWFyY2hfc3BhY2VfbGVuID49IHBhdHRlcm5fbGVu Ci0gCSAmJiBmb3VuZF9jb3VudCA8IG1heF9jb3VudCkKLSAgICAgewotLSAgICAgIC8qIE9mZnNl dCBmcm9tIHN0YXJ0IG9mIHRoaXMgaXRlcmF0aW9uIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gICov Ci0tICAgICAgVUxPTkdFU1QgbmV4dF9pdGVyX2luY3I7Ci0gICAgICAgQ09SRV9BRERSIGZvdW5k X2FkZHI7Ci0tICAgICAgaW50IGZvdW5kID0gdGFyZ2V0X3NlYXJjaF9tZW1vcnkgKHN0YXJ0X2Fk ZHIsIHNlYXJjaF9zcGFjZV9sZW4sCi0tCQkJCQlwYXR0ZXJuX2J1ZiwgcGF0dGVybl9sZW4sICZm b3VuZF9hZGRyKTsKLSsgICAgICBpbnQgZm91bmQ7Ci0gCi0rICAgICAgZm91bmQgPSBzZWFyY2hf bWVtb3J5ICgmc3RhcnRfYWRkciwgJnNlYXJjaF9zcGFjZV9sZW4sIHBhdHRlcm5fYnVmLAotKwkJ CSAgICAgcGF0dGVybl9sZW4sICZmb3VuZF9hZGRyKTsKLSAgICAgICBpZiAoZm91bmQgPD0gMCkK LSAJYnJlYWs7CisrI2RlZmluZSBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUih0KSBcCisrICAo VFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkcikKKysKKyAvKiBD b25zdGFudCB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFz IGEKKyAgKiBjb25zdCBtb2RpZmllci4KKyAgKi8KK0BAIC0zODksMTEgKzQ0MywxOSBAQCBzdHJ1 Y3QgbWFpbl90eXBlCisgICB1bnNpZ25lZCBpbnQgZmxhZ192ZWN0b3IgOiAxOworICAgdW5zaWdu ZWQgaW50IGZsYWdfc3R1Yl9zdXBwb3J0ZWQgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfbm90 dGV4dCA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19nbnVfaWZ1bmMgOiAxOworICAgdW5zaWdu ZWQgaW50IGZsYWdfZml4ZWRfaW5zdGFuY2UgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfb2Jq ZmlsZV9vd25lZCA6IDE7CisgICAvKiBUcnVlIGlmIHRoaXMgdHlwZSB3YXMgZGVjbGFyZWQgd2l0 aCAiY2xhc3MiIHJhdGhlciB0aGFuCisgICAgICAic3RydWN0Ii4gICovCisgICB1bnNpZ25lZCBp bnQgZmxhZ19kZWNsYXJlZF9jbGFzcyA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJk YWJsZSA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZV9hZ2UgOiAxOworKyAg dW5zaWduZWQgaW50IGZsYWdfZHluYW1pYyA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19yYW5n ZV9oaWdoX2JvdW5kX2lzX2NvdW50IDogMTsKKysgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hbGxv Y2F0ZWQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfbm90X2Fzc29jaWF0ZWQgOiAxOworKyAg dW5zaWduZWQgaW50IGZsYWdfZGF0YV9sb2NhdGlvbl9pc19hZGRyIDogMTsKICAKLUBAIC0yODAs MTYgKzM0Myw2IEBAIGZpbmRfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotICAg ICAgIHByaW50Zl9maWx0ZXJlZCAoIlxuIik7Ci0gICAgICAgKytmb3VuZF9jb3VudDsKLSAgICAg ICBsYXN0X2ZvdW5kX2FkZHIgPSBmb3VuZF9hZGRyOwotLQotLSAgICAgIC8qIEJlZ2luIG5leHQg aXRlcmF0aW9uIGF0IG9uZSBieXRlIHBhc3QgdGhpcyBtYXRjaC4gICovCi0tICAgICAgbmV4dF9p dGVyX2luY3IgPSAoZm91bmRfYWRkciAtIHN0YXJ0X2FkZHIpICsgMTsKLS0KLS0gICAgICAvKiBG b3Igcm9idXN0bmVzcywgd2UgZG9uJ3QgbGV0IHNlYXJjaF9zcGFjZV9sZW4gZ28gLXZlIGhlcmUu ICAqLwotLSAgICAgIGlmIChzZWFyY2hfc3BhY2VfbGVuID49IG5leHRfaXRlcl9pbmNyKQotLQlz ZWFyY2hfc3BhY2VfbGVuIC09IG5leHRfaXRlcl9pbmNyOwotLSAgICAgIGVsc2UKLS0Jc2VhcmNo X3NwYWNlX2xlbiA9IDA7Ci0tICAgICAgc3RhcnRfYWRkciArPSBuZXh0X2l0ZXJfaW5jcjsKLSAg ICAgfQorICAgLyogQSBkaXNjcmltaW5hbnQgdGVsbGluZyB1cyB3aGljaCBmaWVsZCBvZiB0aGUg dHlwZV9zcGVjaWZpYyB1bmlvbgorICAgICAgaXMgYmVpbmcgdXNlZCBmb3IgdGhpcyB0eXBlLCBp ZiBhbnkuICAqLworQEAgLTQ2Nyw2ICs1MjksMjAgQEAgc3RydWN0IG1haW5fdHlwZQogIAotICAg LyogUmVjb3JkIGFuZCBwcmludCB0aGUgcmVzdWx0cy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2Zp bmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IGUxMTdhOGUuLjZiZDM3MjQgMTAwNjQ0Ci0t LS0gYS9nZGIvZmluZHZhci5jCi0rKysgYi9nZGIvZmluZHZhci5jCi1AQCAtMzUsNiArMzUsNyBA QAotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSAjaW5jbHVkZSAiYmxvY2suaCIKLSAjaW5jbHVk ZSAib2JqZmlsZXMuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgICBzdHJ1Y3QgdHlwZSAq dGFyZ2V0X3R5cGU7CiAgCi0gLyogQmFzaWMgYnl0ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFsbCAn ZXh0cmFjdCcgZnVuY3Rpb25zIHJldHVybiBhCi0gICAgaG9zdC1mb3JtYXQgaW50ZWdlciBmcm9t IGEgdGFyZ2V0LWZvcm1hdCBpbnRlZ2VyIGF0IEFERFIgd2hpY2ggaXMKLUBAIC0zOTcsMjcgKzM5 OCwxNiBAQCBzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAoc3RydWN0IHN5bWJvbCAqc3ltKQotIC8q IEdpdmVuIGEgc3RydWN0IHN5bWJvbCBmb3IgYSB2YXJpYWJsZSwKLSAgICBhbmQgYSBzdGFjayBm cmFtZSBpZCwgcmVhZCB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlCi0gICAgYW5kIHJldHVybiBh IChwb2ludGVyIHRvIGEpIHN0cnVjdCB2YWx1ZSBjb250YWluaW5nIHRoZSB2YWx1ZS4gCi0tICAg SWYgdGhlIHZhcmlhYmxlIGNhbm5vdCBiZSBmb3VuZCwgcmV0dXJuIGEgemVybyBwb2ludGVyLiAg Ki8KLSsgICBJZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBv aW50ZXIuCi0rICAgV2UgaGF2ZSB0byBmaXJzdCBmaW5kIHRoZSBhZGRyZXNzIG9mIHRoZSB2YXJp YWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1Y3QKLSsgICB2YWx1ZSB0byByZXR1cm4gYXMgaXRz IHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIHBvc3NpYmx5Ci0r ICAgdXNlZCBieSBpdHMgdHlwZS4gICovCisrICAvKiBGb3IgRFdfQVRfZGF0YV9sb2NhdGlvbi4g ICovCisrICB1bmlvbgorKyAgICB7CisrICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICpkd2FyZl9ibG9jazsKKysgICAgICBDT1JFX0FERFIgYWRkcjsKKysgICAgfQorKyAgZGF0YV9s b2NhdGlvbjsKKysKKysgIC8qIEZvciBEV19BVF9hbGxvY2F0ZWQuICAqLworKyAgc3RydWN0IGR3 YXJmMl9sb2NleHByX2JhdG9uICphbGxvY2F0ZWQ7CisrCisrICAvKiBGb3IgRFdfQVRfYXNzb2Np YXRlZC4gICovCisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFzc29jaWF0ZWQ7Cisr CisgICAvKiBGb3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNjcmlwdGlvbiBvZiBl YWNoIGZpZWxkLgorICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5cGVzLCB0aGVyZSBp cyBvbmUgImZpZWxkIiwKKyAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFpbiB0eXBlIG9mIHRo ZSBzZXQgb3IgYXJyYXkuCitAQCAtNTQwLDEzICs2MTYsMzQgQEAgc3RydWN0IG1haW5fdHlwZQog IAotIHN0cnVjdCB2YWx1ZSAqCi0gcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIHsKLS0gIHN0cnVjdCB2YWx1ZSAqdjsKLSAgIHN0 cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7Ci0gICBDT1JFX0FERFIgYWRkcjsK LS0gIGludCBsZW47CisgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMKKyAgICAgeworKyAgICAgIHN0 cnVjdAorKwl7CisrCSAgdW5pb24KKysJICAgIHsKKysJICAgICAgTE9OR0VTVCBjb25zdGFudDsK KysJICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKKysJICAg ICAgc3RydWN0CisrCQl7CisrCQkgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqbG9jbGlz dDsKKysJCSAgc3RydWN0IHR5cGUgKnR5cGU7CisrCQl9CisrCSAgICAgIGR3YXJmX2xvY2xpc3Q7 CisrCSAgICB9CisrCSAgdTsKKysJICBlbnVtIHJhbmdlX2JvdW5kX2tpbmQKKysJICAgIHsKKysJ ICAgICAgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVCwKKysJICAgICAgUkFOR0VfQk9VTkRfS0lO RF9EV0FSRl9CTE9DSywKKysJICAgICAgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUCisr CSAgICB9CisrCSAga2luZDsKKysJfQorICAgICAgIC8qIExvdyBib3VuZCBvZiByYW5nZS4gKi8K IC0KLS0gIGlmIChTWU1CT0xfQ0xBU1MgKHZhcikgPT0gTE9DX0NPTVBVVEVECi0tICAgICAgfHwg U1lNQk9MX0NMQVNTICh2YXIpID09IExPQ19SRUdJU1RFUikKLS0gICAgLyogVGhlc2UgY2FzZXMg ZG8gbm90IHVzZSBWLiAgKi8KLS0gICAgdiA9IE5VTEw7Ci0tICBlbHNlCi0tICAgIHsKLS0gICAg ICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbHZh bF9tZW1vcnk7CS8qIFRoZSBtb3N0IGxpa2VseSBwb3NzaWJpbGl0eS4gICovCi0tICAgIH0KKy0g ICAgICBMT05HRVNUIGxvdzsKIC0KLS0gIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKKysgICAg ICBsb3csCisgICAgICAgLyogSGlnaCBib3VuZCBvZiByYW5nZS4gKi8KKy0KKy0gICAgICBMT05H RVNUIGhpZ2g7CisrICAgICAgaGlnaCwKKysgICAgICAvKiBCeXRlIHN0cmlkZSBvZiByYW5nZS4g Ki8KKysgICAgICBieXRlX3N0cmlkZTsKICAKLSAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFt ZSAodmFyKSkKLSAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAgLTQyNSwzMiArNDE1LDQwIEBA IHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKLSAgIHN3aXRjaCAoU1lNQk9MX0NMQVNTICh2YXIpKQotICAgICB7Ci0gICAgIGNhc2Ug TE9DX0NPTlNUOgotLSAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9y bWF0LiAgKi8KLS0gICAgICBzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNfcmF3 ICh2KSwgbGVuLAotLQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2ggKHR5 cGUpKSwKLS0JCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7Ci0tICAgICAgVkFM VUVfTFZBTCAodikgPSBub3RfbHZhbDsKLS0gICAgICByZXR1cm4gdjsKLSsgICAgICB7Ci0rCS8q IFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KLSsJc3RydWN0IHZh bHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKwlWQUxVRV9MVkFMICh2KSA9IG5vdF9s dmFsOwotKwlzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgVFlQ RV9MRU5HVEggKHR5cGUpLAotKwkJCSAgICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVf YXJjaCAodHlwZSkpLAotKwkJCSAgICAgIChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZhcikpOwot KwlyZXR1cm4gdjsKLSsgICAgICB9CisgICAgICAgLyogRmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVy IHRoZSB2YWx1ZXMgb2YgbG93IGFuZCBoaWdoIGFyZQorICAgICAgICAgIHZhbGlkLiAgV2hlbiB0 cnVlLCB0aGUgcmVzcGVjdGl2ZSByYW5nZSB2YWx1ZSBpcworQEAgLTg4OSw5ICs5ODYsOSBAQCBl eHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKKyAjZGVm aW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUK KyAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVy ZW5jZV90eXBlCisgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFp bgorLS8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYgdHlwZSwgeW91IGhhdmUg dG8gY2FsbCBjaGVja190eXBlZGVmLgorLSAgIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRo ZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRiB0eXBlLAorLSAgIHNvIHlvdSBvbmx5IGhhdmUg dG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQorKy8qIE5v dGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYsIEFSUkFZIG9yIFNUUklORyB0eXBlLCB5 b3UgaGF2ZSB0byBjYWxsCisrICAgY2hlY2tfdHlwZWRlZi4gIEJ1dCBjaGVja190eXBlZGVmIGRv ZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRgorKyAgIHR5cGUsIHNvIHlvdSBv bmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1 ZQorICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChYKSkg aXMgc2FmZS4gICovCisgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+ bGVuZ3RoCisgLyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVERUYs IHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCitAQCAtODk5LDExICs5OTYsMTYgQEAgZXh0ZXJuIHZv aWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgI2RlZmluZSBUWVBF X0NPREUodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Y29kZQorICNkZWZpbmUg VFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPm5maWVsZHMK KyAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSkt PmZsZHNfYm5kcy5maWVsZHMKKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9D Syh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+ZGF0YV9sb2NhdGlvbi5kd2Fy Zl9ibG9jaworKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIodGhpc3R5cGUpIFRZUEVf TUFJTl9UWVBFICh0aGlzdHlwZSktPmRhdGFfbG9jYXRpb24uYWRkcgorKyNkZWZpbmUgVFlQRV9B TExPQ0FURUQodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFsbG9jYXRlZAor KyNkZWZpbmUgVFlQRV9BU1NPQ0lBVEVEKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5 cGUpLT5hc3NvY2lhdGVkCiAgCi0gICAgIGNhc2UgTE9DX0xBQkVMOgotLSAgICAgIC8qIFB1dCB0 aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KLS0gICAgICBpZiAob3Zlcmxh eV9kZWJ1Z2dpbmcpCi0tCXsKLS0JICBDT1JFX0FERFIgYWRkcgotLQkgICAgPSBzeW1ib2xfb3Zl cmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAotLQkJCQkJU1lNQk9M X09CSl9TRUNUSU9OICh2YXIpKTsKLS0JICBzdG9yZV90eXBlZF9hZGRyZXNzICh2YWx1ZV9jb250 ZW50c19yYXcgKHYpLCB0eXBlLCBhZGRyKTsKLS0JfQotLSAgICAgIGVsc2UKLS0Jc3RvcmVfdHlw ZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwKLS0JCQkgICAgICBTWU1C T0xfVkFMVUVfQUREUkVTUyAodmFyKSk7Ci0tICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZh bDsKLS0gICAgICByZXR1cm4gdjsKLSsgICAgICB7Ci0rCS8qIFB1dCB0aGUgY29uc3RhbnQgYmFj ayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KLSsJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFs dWUgKHR5cGUpOwotKwlWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotKwlpZiAob3ZlcmxheV9k ZWJ1Z2dpbmcpCi0rCSAgewotKwkgICAgQ09SRV9BRERSIGFkZHIKLSsJICAgICAgPSBzeW1ib2xf b3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAotKwkJCQkJICBT WU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwotKwkgICAgc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFs dWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwgYWRkcik7Ci0rCSAgfQotKwllbHNlCi0rCSAgc3Rv cmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwKLSsJCQkJU1lN Qk9MX1ZBTFVFX0FERFJFU1MgKHZhcikpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9CisgI2RlZmlu ZSBUWVBFX0lOREVYX1RZUEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKQorICNkZWZp bmUgVFlQRV9SQU5HRV9EQVRBKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZs ZHNfYm5kcy5ib3VuZHMKKy0jZGVmaW5lIFRZUEVfTE9XX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVf UkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93CistI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFu Z2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoCisrI2RlZmluZSBUWVBF X0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy51 LmNvbnN0YW50CisrI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5H RV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoLnUuY29uc3RhbnQKKysjZGVmaW5lIFRZUEVfQllURV9T VFJJREUocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlk ZS51LmNvbnN0YW50CisgI2RlZmluZSBUWVBFX0xPV19CT1VORF9VTkRFRklORUQocmFuZ2VfdHlw ZSkgXAorICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93X3VuZGVmaW5lZAorICNk ZWZpbmUgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCitAQCAtOTIwLDcg KzEwMjIsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5 cGUgKik7CisgICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkp KSkKICAKLSAgICAgY2FzZSBMT0NfQ09OU1RfQllURVM6Ci0gICAgICAgewotLQltZW1jcHkgKHZh bHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwgbGVuKTsKLSsJ c3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotIAlWQUxVRV9MVkFMICh2 KSA9IG5vdF9sdmFsOwotKwltZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9W QUxVRV9CWVRFUyAodmFyKSwKLSsJCVRZUEVfTEVOR1RIICh0eXBlKSk7Ci0gCXJldHVybiB2Owot ICAgICAgIH0KKyAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfVkFMVUUoYXJyYXl0eXBl KSBcCistICAgKFRZUEVfTE9XX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkpKQor KyAgVFlQRV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkKKysKKysvKiBU WVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpIHdpdGggYSBmYWxs YmFjayB0byB0aGUKKysgICBlbGVtZW50IHNpemUgaWYgbm8gc3BlY2lmaWMgc3RyaWRlIHZhbHVl IGlzIGtub3duLiAgKi8KKysjZGVmaW5lIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUoYXJy YXl0eXBlKQkJXAorKyAgKFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0 eXBlKSkgPT0gMAlcCisrICAgPyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXl0 eXBlKSkJCVwKKysgICA6IFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0 eXBlKSkpCiAgCi1AQCAtNDkyLDEyICs0OTAsMjMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAgICAgIGJyZWFrOworIC8q IEMrKyAqLwogIAotICAgICBjYXNlIExPQ19CTE9DSzoKLS0gICAgICBpZiAob3ZlcmxheV9kZWJ1 Z2dpbmcpCi0tCXNldF92YWx1ZV9hZGRyZXNzICh2LCBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MK LS0JICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpf U0VDVElPTiAodmFyKSkpOwotLSAgICAgIGVsc2UKLS0Jc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIEJM T0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpKTsKLS0gICAgICByZXR1cm4gdjsK LSsgICAgICB7Ci0rICAgICAgICBDT1JFX0FERFIgYWRkcjsKLSsJc3RydWN0IHZhbHVlICp2Owot KwotKwlpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCi0rCSAgYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRf YWRkcmVzcwotKwkgICAgKEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBT WU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwotKwllbHNlCi0rCSAgYWRkciA9IEJMT0NLX1NUQVJU IChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpOwotKwkvKiBBRERSIGlzIHNldCBoZXJlIGZvciBB TExPQ0FURV9WQUxVRSdzIENIRUNLX1RZUEVERUYgZm9yCi0rCSAgIERXX09QX3B1c2hfb2JqZWN0 X2FkZHJlc3MuICAqLwotKwlvYmplY3RfYWRkcmVzc19zZXQgKGFkZHIpOwotKwl2ID0gYWxsb2Nh dGVfdmFsdWUgKHR5cGUpOwotKwlWQUxVRV9MVkFMICh2KSA9IGx2YWxfbWVtb3J5OwotKwlzZXRf dmFsdWVfYWRkcmVzcyAodiwgYWRkcik7Ci0rCXJldHVybiB2OwotKyAgICAgIH0KK0BAIC0xMTQx LDYgKzEyNTAsMTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQorICAgICAgKCopICgpIGNhbiBzZXJ2 ZXIgYXMgYSBnZW5lcmljIGZ1bmN0aW9uIHBvaW50ZXIuICAqLworICAgc3RydWN0IHR5cGUgKmJ1 aWx0aW5fZnVuY19wdHI7CiAgCi0gICAgIGNhc2UgTE9DX1JFR0lTVEVSOgotICAgICBjYXNlIExP Q19SRUdQQVJNX0FERFI6Ci1AQCAtNTE2LDcgKzUyNSw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAJICAgICAgZXJyb3Ig KF8oIlZhbHVlIG9mIHJlZ2lzdGVyIHZhcmlhYmxlIG5vdCBhdmFpbGFibGUuIikpOworKyAgLyog YGZ1bmN0aW9uIHJldHVybmluZyBwb2ludGVyIHRvIGZ1bmN0aW9uIChyZXR1cm5pbmcgdm9pZCkn IHR5cGUuCisrICAgICBUaGUgZmluYWwgdm9pZCByZXR1cm4gdHlwZSBpcyBub3Qgc2lnbmlmaWNh bnQgZm9yIGl0LiAgKi8KKysgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfZnVuYzsKKysKICAK LSAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWd2YWwpOwotLQkgICAgVkFMVUVfTFZB TCAodikgPSBsdmFsX21lbW9yeTsKLSAJICB9Ci0gCWVsc2UKLSAJICB7Ci1AQCAtNTU5LDE4ICs1 NjcsMzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lKQotICAgICAgIGJyZWFrOworICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVz LiAgKi8KICAKLSAgICAgY2FzZSBMT0NfT1BUSU1JWkVEX09VVDoKLS0gICAgICBWQUxVRV9MVkFM ICh2KSA9IG5vdF9sdmFsOwotLSAgICAgIHNldF92YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2LCAxKTsK LS0gICAgICByZXR1cm4gdjsKLSsgICAgICB7Ci0rICAgICAgICBzdHJ1Y3QgdmFsdWUgKnYgPSBh bGxvY2F0ZV92YWx1ZSAodHlwZSk7Ci0rCi0rCVZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7Ci0r CXNldF92YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2LCAxKTsKLSsJcmV0dXJuIHY7Ci0rICAgICAgfQor QEAgLTExODEsNiArMTI5NCw4IEBAIHN0cnVjdCBvYmpmaWxlX3R5cGUKICAKLSAgICAgZGVmYXVs dDoKLSAgICAgICBlcnJvciAoXygiQ2Fubm90IGxvb2sgdXAgdmFsdWUgb2YgYSBib3RjaGVkIHN5 bWJvbC4iKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KKyAgIC8qIFR5cGVzIHVzZWQgZm9yIHN5 bWJvbHMgd2l0aCBubyBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCisgICBzdHJ1Y3QgdHlwZSAqbm9k ZWJ1Z190ZXh0X3N5bWJvbDsKKysgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfZ251X2lmdW5j X3N5bWJvbDsKKysgIHN0cnVjdCB0eXBlICpub2RlYnVnX2dvdF9wbHRfc3ltYm9sOworICAgc3Ry dWN0IHR5cGUgKm5vZGVidWdfZGF0YV9zeW1ib2w7CisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z191 bmtub3duX3N5bWJvbDsKKyAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Rsc19zeW1ib2w7CitAQCAt MTMyOCw2ICsxNDQzLDE4IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX2FycmF5X3R5cGUg KHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCisgCQkJCSAgICAgICBzdHJ1Y3QgdHlwZSAq KTsKKyBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9hcnJheV9yYW5nZV90eXBlIChzdHJ1Y3Qg dHlwZSAqLCBpbnQsIGludCk7CiAgCi0tICBzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7Ci0t ICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7Ci0tICByZXR1cm4gdjsKLSsgIHsKLSsgICAgc3RydWN0 IHZhbHVlICp2OworK2V4dGVybiBDT1JFX0FERFIgdHlwZV9yYW5nZV9hbnlfZmllbGRfaW50ZXJu YWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAorKwkJCQkJCWludCBmaWVsZG5vKTsKICsKLSsg ICAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVG IGZvcgotKyAgICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTLiAgKi8KLSsgICAgb2JqZWN0 X2FkZHJlc3Nfc2V0IChhZGRyKTsKLSsgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsg ICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSsgICAgc2V0X3ZhbHVlX2FkZHJlc3Mg KHYsIGFkZHIpOworK2V4dGVybiBpbnQgdHlwZV9yYW5nZV9oaWdoX2JvdW5kX2ludGVybmFsIChz dHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSk7CiArCi0rICAgIHNldF92YWx1ZV9sYXp5ICh2LCAxKTsK KytleHRlcm4gaW50IHR5cGVfcmFuZ2VfY291bnRfYm91bmRfaW50ZXJuYWwgKHN0cnVjdCB0eXBl ICpyYW5nZV90eXBlKTsKICsKLSsgICAgcmV0dXJuIHY7Ci0rICB9Ci0gfQorK2V4dGVybiBDT1JF X0FERFIgdHlwZV9yYW5nZV9ieXRlX3N0cmlkZV9pbnRlcm5hbCAoc3RydWN0IHR5cGUgKnJhbmdl X3R5cGUsCisrCQkJCQkJICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlKTsKKysKKytleHRlcm4g dm9pZCBmaW5hbGl6ZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CisrCisgZXh0ZXJuIHN0cnVj dCB0eXBlICpjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICos CisgCQkJCQlzdHJ1Y3QgdHlwZSAqKTsKKyBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9zdHJp bmdfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOworQEAgLTEzNzAsNiArMTQ5 Nyw4IEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgdHlwZSAqKTsKICAKLSAvKiBJbnN0YWxsIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgcmVnaXN0 ZXIgdmFsdWVzLiAgKi8KLUBAIC02MDcsMTAgKzYzMCwxMSBAQCBzdHJ1Y3QgdmFsdWUgKgotIHZh bHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVnbnVtLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCi0gewotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRf ZnJhbWVfYXJjaCAoZnJhbWUpOwotLSAgc3RydWN0IHR5cGUgKnR5cGUxID0gY2hlY2tfdHlwZWRl ZiAodHlwZSk7Ci0gICBzdHJ1Y3QgdmFsdWUgKnY7CisgZXh0ZXJuIGludCBpc191bmlxdWVfYW5j ZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKICAKLS0gIGlmIChnZGJhcmNo X2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCi0rICB0eXBlID0g Y2hlY2tfdHlwZWRlZiAodHlwZSk7CisrZXh0ZXJuIHZvaWQgdHlwZV9tYXJrX3VzZWQgKHN0cnVj dCB0eXBlICp0eXBlKTsKICsKLSsgIGlmIChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2Ri YXJjaCwgcmVnbnVtLCB0eXBlKSkKLSAgICAgewotICAgICAgIC8qIFRoZSBJU0EvQUJJIG5lZWQg dG8gc29tZXRoaW5nIHdlaXJkIHdoZW4gb2J0YWluaW5nIHRoZQotICAgICAgICAgIHNwZWNpZmll ZCB2YWx1ZSBmcm9tIHRoaXMgcmVnaXN0ZXIuICBJdCBtaWdodCBuZWVkIHRvCi1AQCAtNjI0LDcg KzY0OCw3IEBAIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVn bnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAgICAgVkFMVUVfRlJBTUVfSUQgKHYp ID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7Ci0gICAgICAgVkFMVUVfUkVHTlVNICh2KSA9IHJlZ251 bTsKLSAgICAgICBnZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVlIChnZGJhcmNoLAotLQkJCQkgZnJh bWUsIHJlZ251bSwgdHlwZTEsIHZhbHVlX2NvbnRlbnRzX3JhdyAodikpOwotKwkJCQkgZnJhbWUs IHJlZ251bSwgdHlwZSwgdmFsdWVfY29udGVudHNfcmF3ICh2KSk7Ci0gICAgIH0KLSAgIGVsc2UK LSAgICAgewotZGlmZiAtLWdpdCBhL2dkYi9mcnYtbGludXgtdGRlcC5jIGIvZ2RiL2Zydi1saW51 eC10ZGVwLmMKLWluZGV4IGMwNTFhNGQuLjViMDcwNjMgMTAwNjQ0Ci0tLS0gYS9nZGIvZnJ2LWxp bnV4LXRkZXAuYwotKysrIGIvZ2RiL2Zydi1saW51eC10ZGVwLmMKLUBAIC0zMiw2ICszMiw3IEBA Ci0gI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgotICNpbmNsdWRlICJyZWdzZXQuaCIKLSAjaW5j bHVkZSAiZ2RiX3N0cmluZy5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCisgLyogT3Zlcmxv YWQgcmVzb2x1dGlvbiAqLworIAorICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+cmFu a1swXSkKK0BAIC0xNDMyLDEwICsxNTYxLDExIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3By aW50X3R5cGUgKGNoYXIgKiwgaW50KTsKKyAKKyBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3BpZWRf dHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIAorLWV4dGVybiBzdHJ1Y3Qg dHlwZSAqY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJ CQkgc3RydWN0IHR5cGUgKnR5cGUsCisrZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGVfcmVj dXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAJCQkJCSBodGFiX3QgY29waWVkX3R5cGVzKTsK KyAKKyBleHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5 cGUpOwogIAotIC8qIERlZmluZSB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIGFuIEZSLVYgaW5zdHJ1 Y3Rpb24uICAqLwotIHN0YXRpYyBjb25zdCBpbnQgZnJ2X2luc3RyX3NpemUgPSA0OwotQEAgLTQ4 Niw3ICs0ODcsMjEgQEAgZnJ2X2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsCi0gICByZXR1cm4gTlVMTDsKKytleHRlcm4gdm9pZCBmcmVlX2Fs bF90eXBlcyAodm9pZCk7CisrCisgI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KK2RpZmYgLS1naXQg YS9nZGIvaTM4Ni1saW51eC1uYXQuYyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCitpbmRleCA0ZmNl MWFjLi4xNDRhODk5IDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbGludXgtbmF0LmMKKysrKyBiL2dk Yi9pMzg2LWxpbnV4LW5hdC5jCitAQCAtNzQ3LDYgKzc0NywyMSBAQCBpMzg2X2xpbnV4X2RyX3Vu c2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorICAgICB9CiAgfQogIAotLQwKLStzdGF0 aWMgQ09SRV9BRERSCi0rZnJ2X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkJICAgICAgQ09SRV9BRERSIGFkZHIsCi0rCQkJCSAg ICAgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKQotK3sKLSsgIENPUkVfQUREUiBwYyA9IGZydl9j b252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgYWRkciwgdGFyZyk7Ci0rICBDT1JF X0FERFIgcmVzb2x2ZWQ7CisrLyogU2VlIGkzODZfZHJfbG93X3R5cGUuZGV0YWNoLiAgRG8gbm90 IHVzZSB3cmFwcGVycyBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sCisrICAgb3IgaTM4Nl9saW51 eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQor KyAgIChpMzg2X2xpbnV4X2RyKS4gICovCiArCi0rICByZXNvbHZlZCA9IGxpbnV4X2NvbnZlcnRf ZnJvbV9mdW5jX2FuZF9wdHIgKGdkYmFyY2gsIGFkZHIsIHBjKTsKLSsgIGlmIChyZXNvbHZlZCAh PSBwYykKLSsgICAgcGMgPSBmcnZfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gs IHJlc29sdmVkLCB0YXJnKTsKKytzdGF0aWMgdm9pZAorK2kzODZfbGludXhfZHJfZGV0YWNoICh2 b2lkKQorK3sKKysgIGludCByZWdudW07CiArCi0rICByZXR1cm4gcGM7CisrICBpMzg2X2xpbnV4 X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgRFJfQ09OVFJPTCwgMCk7CisrICBpMzg2X2xpbnV4X2Ry X3Vuc2V0X3N0YXR1cyAofjBVTCk7CisrICBmb3IgKHJlZ251bSA9IERSX0ZJUlNUQUREUjsgcmVn bnVtIDw9IERSX0xBU1RBRERSOyByZWdudW0rKykKKysgICAgaTM4Nl9saW51eF9kcl9zZXQgKGlu ZmVyaW9yX3B0aWQsIHJlZ251bSwgMCk7CiArfQogKwogIHN0YXRpYyB2b2lkCi0gZnJ2X2xpbnV4 X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoKQorIGkzODZfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCiAgewotQEAgLTQ5NCw2 ICs1MDksMTAgQEAgZnJ2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8s IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRl ciAoZ2RiYXJjaCwgJmZydl9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQpOyAKLSAgIHNldF9n ZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoZ2RiYXJjaCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJ2X2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2Vj dGlvbik7Ci0rCi0rICBpZiAoZnJ2X2FiaSAoZ2RiYXJjaCkgPT0gRlJWX0FCSV9GRFBJQykKLSsg ICAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJ CQkgIGZydl9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQorQEAgLTk3Niw2 ICs5OTEsNyBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKKyAgIGkzODZfZHJf bG93LnJlc2V0X2FkZHIgPSBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHI7CisgICBpMzg2X2RyX2xv dy5nZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzOworICAgaTM4Nl9kcl9sb3cu dW5zZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXM7CisrICBpMzg2X2RyX2xv dy5kZXRhY2ggPSBpMzg2X2xpbnV4X2RyX2RldGFjaDsKKyAgIGkzODZfc2V0X2RlYnVnX3JlZ2lz dGVyX2xlbmd0aCAoNCk7CiAgCi0gc3RhdGljIGVudW0gZ2RiX29zYWJpCi1kaWZmIC0tZ2l0IGEv Z2RiL2Zydi10ZGVwLmMgYi9nZGIvZnJ2LXRkZXAuYwotaW5kZXggYTM4ZWM4ZS4uYjg4NTZhOSAx MDA2NDQKLS0tLSBhL2dkYi9mcnYtdGRlcC5jCi0rKysgYi9nZGIvZnJ2LXRkZXAuYwotQEAgLTEx NjksNyArMTE2OSw3IEBAIGZpbmRfZnVuY19kZXNjciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IENPUkVfQUREUiBlbnRyeV9wb2ludCkKLSAgIHJldHVybiBkZXNjcjsKKyAgIC8qIE92ZXJyaWRl IHRoZSBkZWZhdWx0IHB0cmFjZSByZXN1bWUgbWV0aG9kLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIv aTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCitpbmRleCBlYWEzNjQ0Li4wOTIxYzdlIDEwMDY0 NAorLS0tIGEvZ2RiL2kzODYtbmF0LmMKKysrKyBiL2dkYi9pMzg2LW5hdC5jCitAQCAtNTMzLDYg KzUzMywxNyBAQCBpMzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHR5cGUsCisgICByZXR1cm4gcmV0dmFsOwogIH0KICAKLS1zdGF0aWMgQ09SRV9BRERS Ci0rQ09SRV9BRERSCi0gZnJ2X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykKLSB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2Zy di10ZGVwLmggYi9nZGIvZnJ2LXRkZXAuaAotaW5kZXggMjVjYzljNC4uOTVkNWZlNSAxMDA2NDQK LS0tLSBhL2dkYi9mcnYtdGRlcC5oCi0rKysgYi9nZGIvZnJ2LXRkZXAuaAotQEAgLTExOCwzICsx MTgsNiBAQCBDT1JFX0FERFIgZnJ2X2ZldGNoX29iamZpbGVfbGlua19tYXAgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKTsKLSBzdHJ1Y3QgdGFyZ2V0X3NvX29wczsKLSBleHRlcm4gc3RydWN0IHRh cmdldF9zb19vcHMgZnJ2X3NvX29wczsKLSAKLStDT1JFX0FERFIgZnJ2X2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkJCSAgQ09SRV9BRERS IGFkZHIsCi0rCQkJCQkgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnKTsKLWRpZmYgLS1naXQgYS9n ZGIvZ2RiaW5pdC5pbiBiL2dkYi9nZGJpbml0LmluCi1pbmRleCBmZmI3ZjUzLi5hMmU3ZTk0IDEw MDY0NAotLS0tIGEvZ2RiL2dkYmluaXQuaW4KLSsrKyBiL2dkYi9nZGJpbml0LmluCi1AQCAtMSw1 ICsxLDE1IEBACi0gZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgZGVidWdnaW5n IGdkYi5cbgotIAotKyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFyeSBhbmQgInJlcXVpcmUiIGNv bW1hbmQuCi0rcHl0aG9uCi0rZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCi0rZ2RiLmRhdGFk aXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCi0rZ2RiLnB5dGhvbmxpYmRpciA9 IGdkYi5kYXRhZGlyCi0rZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRhZGlyICsgJy9nZGInXQotK3N5 cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKLStlbmQKLStzb3VyY2UgQHNyY2RpckAvcHl0 aG9uL2xpYi9nZGIvX19pbml0X18ucHkKKysvKiBTZWUgdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50 cy4gICovCiArCi0gc2V0IGNvbXBsYWludHMgMQotIAotIGIgaW50ZXJuYWxfZXJyb3IKLWRpZmYg LS1naXQgYS9nZGIvZ2RidGhyZWFkLmggYi9nZGIvZ2RidGhyZWFkLmgKLWluZGV4IGNkMjRlYWYu LjExOWFmN2QgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RidGhyZWFkLmgKLSsrKyBiL2dkYi9nZGJ0aHJl YWQuaAotQEAgLTE4NSw2ICsxODUsMTAgQEAgc3RydWN0IHRocmVhZF9pbmZvCi0gICAvKiBUcnVl IGlmIHRoaXMgdGhyZWFkIGhhcyBiZWVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHRvIHN0b3AuICAq LwotICAgaW50IHN0b3BfcmVxdWVzdGVkOwotIAotKyAgLyogVGhlIGluaXRpYXRpbmcgZnJhbWUg b2YgYSBuZXh0aW5nIG9wZXJhdGlvbiwgdXNlZCBmb3IgZGVjaWRpbmcKLSsgICAgIHdoaWNoIGV4 Y2VwdGlvbnMgdG8gaW50ZXJjZXB0LiAgKi8KLSsgIHN0cnVjdCBmcmFtZV9pZCBpbml0aWF0aW5n X2ZyYW1lOworK3N0YXRpYyBpbnQKKytpMzg2X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKKyt7 CisrICBpZiAoaTM4Nl9kcl9sb3cuZGV0YWNoKQorKyAgICBpMzg2X2RyX2xvdy5kZXRhY2ggKCk7 CiArCi0gICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1l bnRhdGlvbi4gICovCi0gICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKLSAK LUBAIC0yNTcsNiArMjYxLDkgQEAgZXh0ZXJuIHN0cnVjdCB0aHJlYWRfaW5mbyAqYW55X2xpdmVf dGhyZWFkX29mX3Byb2Nlc3MgKGludCBwaWQpOwotIC8qIENoYW5nZSB0aGUgcHRpZCBvZiB0aHJl YWQgT0xEX1BUSUQgdG8gTkVXX1BUSUQuICAqLwotIHZvaWQgdGhyZWFkX2NoYW5nZV9wdGlkIChw dGlkX3Qgb2xkX3B0aWQsIHB0aWRfdCBuZXdfcHRpZCk7Ci0gCi0rLyogUHJ1bmUgZGVhZCB0aHJl YWRzIGZyb20gdGhlIGxpc3Qgb2YgdGhyZWFkcy4gICovCi0rZXh0ZXJuIHZvaWQgcHJ1bmVfdGhy ZWFkcyAodm9pZCk7CisrICByZXR1cm4gMDsKKyt9CiArCi0gLyogSXRlcmF0b3IgZnVuY3Rpb24g dG8gY2FsbCBhIHVzZXItcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24KLSAgICBvbmNlIGZvciBl YWNoIGtub3duIHRocmVhZC4gICovCi0gdHlwZWRlZiBpbnQgKCp0aHJlYWRfY2FsbGJhY2tfZnVu YykgKHN0cnVjdCB0aHJlYWRfaW5mbyAqLCB2b2lkICopOwotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0 eXBlcy5jIGIvZ2RiL2dkYnR5cGVzLmMKLWluZGV4IDQ2ODQ2YzQuLjk1YmNjYTQgMTAwNjQ0Ci0t LS0gYS9nZGIvZ2RidHlwZXMuYwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBAIC0zOSw2ICszOSw5 IEBACi0gI2luY2x1ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gI2lu Y2x1ZGUgImhhc2h0YWIuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSsjaW5jbHVkZSAiZHdh cmYyZXhwci5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKKyAvKiBSZXR1cm4gbm9uLXpl cm8gaWYgd2UgY2FuIHdhdGNoIGEgbWVtb3J5IHJlZ2lvbiB0aGF0IHN0YXJ0cyBhdAorICAgIGFk ZHJlc3MgQUREUiBhbmQgd2hvc2UgbGVuZ3RoIGlzIExFTiBieXRlcy4gICovCiAgCi0gLyogRmxv YXRmb3JtYXQgcGFpcnMuICAqLwotQEAgLTExOSw2ICsxMjIsMjQgQEAgc3RhdGljIHZvaWQgcHJp bnRfYXJnX3R5cGVzIChzdHJ1Y3QgZmllbGQgKiwgaW50LCBpbnQpOwotIHN0YXRpYyB2b2lkIGR1 bXBfZm5fZmllbGRsaXN0cyAoc3RydWN0IHR5cGUgKiwgaW50KTsKLSBzdGF0aWMgdm9pZCBwcmlu dF9jcGx1c19zdHVmZiAoc3RydWN0IHR5cGUgKiwgaW50KTsKK0BAIC02ODUsNiArNjk2LDcgQEAg aTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorICAgdC0+dG9fc3Rv cHBlZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworICAgdC0+dG9f aW5zZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50OworICAgdC0+dG9fcmVt b3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNo X3dhdGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7CisgICB0LT50b19pbnNlcnRf aHdfYnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7CisgICB0LT50b19yZW1v dmVfaHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7CisgfQorZGlmZiAt LWdpdCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKK2luZGV4IDczMTdlN2QuLmVh OTE0YTUgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1uYXQuaAorKysrIGIvZ2RiL2kzODYtbmF0LmgK K0BAIC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3Ry dWN0IHRhcmdldF9vcHMgKik7CisgICAgICAgdW5zZXRfc3RhdHVzICAgICAgICAgICAgIC0tIHVu c2V0IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKKyAJCQkJICBzdGF0dXMgKERSNikg cmVnaXN0ZXIgZm9yIGFsbCBMV1BzCiAgCi0rLyogQSByZWZlcmVuY2UgY291bnQgc3RydWN0dXJl IGZvciB0aGUgdHlwZSByZWZlcmVuY2UgY291bnQgbWFwLiAgRWFjaAotKyAgIHR5cGUgaW4gYSBo aWVyYXJjaHkgb2YgdHlwZXMgaXMgbWFwcGVkIHRvIHRoZSBzYW1lIHJlZmVyZW5jZQotKyAgIGNv dW50LiAgKi8KLStzdHJ1Y3QgdHlwZV9yZWZjX2VudHJ5Ci0rewotKyAgLyogT25lIHR5cGUgaW4g dGhlIGhpZXJhcmNoeS4gIEVhY2ggdHlwZSBpbiB0aGUgaGllcmFyY2h5IGdldHMgaXRzCi0rICAg ICBvd24gc2xvdC4gICovCi0rICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsKLSsgIC8qIEEgcG9pbnRl ciB0byB0aGUgc2hhcmVkIHJlZmVyZW5jZSBjb3VudC4gICovCi0rICBpbnQgKnJlZmM7Ci0rfTsK LSsKLSsvKiBUaGUgaGFzaCB0YWJsZSBob2xkaW5nIGFsbCBkaXNjYXJkYWJsZSBgc3RydWN0IHR5 cGUgKicgcmVmZXJlbmNlcy4gICovCi0rc3RhdGljIGh0YWJfdCB0eXBlX2Rpc2NhcmRhYmxlX3Rh YmxlOworKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVhciBhbGwgZGVidWcg cmVnaXN0ZXJzIG9mIG9ubHkgdGhlCisrCQkJCSAgSU5GRVJJT1JfUFRJRCB0YXNrIHdpdGhvdXQg YWZmZWN0aW5nIGFueQorKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KICsKLSsvKiBDdXJyZW50IHR5 cGVfZGlzY2FyZGFibGVfY2hlY2sgcGFzcyB1c2VkIGZvciBUWVBFX0RJU0NBUkRBQkxFX0FHRS4g ICovCi0rc3RhdGljIGludCB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OworICAgIEFkZGl0 aW9uYWxseSwgdGhlIG5hdGl2ZSBmaWxlIHNob3VsZCBzZXQgdGhlIGRlYnVnX3JlZ2lzdGVyX2xl bmd0aAorICAgIGZpZWxkIHRvIDQgb3IgOCBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZiBieXRl cyB1c2VkIGZvcgorICAgIGRldWJnIHJlZ2lzdGVycy4gICovCitAQCAtNzMsNiArNzcsNyBAQCBz dHJ1Y3QgaTM4Nl9kcl9sb3dfdHlwZQorICAgICB2b2lkICgqcmVzZXRfYWRkcikgKGludCk7Cisg ICAgIHVuc2lnbmVkIGxvbmcgKCpnZXRfc3RhdHVzKSAodm9pZCk7CisgICAgIHZvaWQgKCp1bnNl dF9zdGF0dXMpICh1bnNpZ25lZCBsb25nKTsKKysgICAgdm9pZCAoKmRldGFjaCkgKHZvaWQpOwor ICAgICBpbnQgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoOworICAgfTsKICAKLSAvKiBBbGxvY2F0ZSBh IG5ldyBPQkpGSUxFLWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKLSAgICB3 aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9j YXRlZAotQEAgLTE0OSw2ICsxNzAsMzkgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0gICByZXR1cm4gdHlwZTsKK2RpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2Ri L2luZmNhbGwuYworaW5kZXggMGM5YTNhZi4uOTU3ZWMxZCAxMDA2NDQKKy0tLSBhL2dkYi9pbmZj YWxsLmMKKysrKyBiL2dkYi9pbmZjYWxsLmMKK0BAIC0yMjUsNiArMjI1LDU2IEBAIHZhbHVlX2Fy Z19jb2VyY2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmFyZywKKyAg IHJldHVybiB2YWx1ZV9jYXN0ICh0eXBlLCBhcmcpOwogIH0KICAKLSsvKiBEZWNsYXJlIFRZUEUg YXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlw ZXMuCi0rICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2Fs bF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8K KysvKiBDYWxsIGdudS1pZnVuYyAoU1RUX0dOVV9JRlVOQyAtIGEgZnVuY3Rpb24gcmV0dXJuaW5n IGFkZHJlc3NzIG9mIGEgcmVhbAorKyAgIGZ1bmN0aW9uIHRvIGNhbGwpLiAgUEMgaXMgdGhlIGdu dS1pZnVuYyBmdW5jdGlvbiBlbnRyeS4gIEZ1bmN0aW9uIHJldHVybnMKKysgICBmdW5jdGlvbiBl bnRyeSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkIGZ1bmN0aW9uIHRvIGNhbGwuICBJZiBSRVRW QUxfVFlQRVAKKysgICBpcyBub3QgTlVMTCBmaWxsIGluICpSRVRWQUxfVFlQRVAgd2l0aCByZXR1 cm4gdHlwZSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkCisrICAgZnVuY3Rpb24gdG8gY2FsbC4g IEtlZXAgKlJFVFZBTF9UWVBFUCBpbnRhY3QgaWYgdGhlIHJldHVybiB0eXBlIGNvdWxkIG5vdCBi ZQorKyAgIGZvdW5kLiAgKi8KICsKLStzdGF0aWMgdm9pZAotK3NldF90eXBlX2FzX2Rpc2NhcmRh YmxlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKytzdGF0aWMgQ09SRV9BRERSCisrZ251X2lmdW5jX3Jl c29sdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCiArewotKyAgdm9p ZCAqKnNsb3Q7CisrICBjaGFyICpuYW1lX2F0X3BjOworKyAgQ09SRV9BRERSIHN0YXJ0X2F0X3Bj LCBhZGRyZXNzOworKyAgc3RydWN0IHR5cGUgKmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBl IChnZGJhcmNoKS0+YnVpbHRpbl9mdW5jX2Z1bmM7CisrICBzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9u LCAqYWRkcmVzc192YWw7CiArCi0rICBnZGJfYXNzZXJ0ICghVFlQRV9ESVNDQVJEQUJMRSAodHlw ZSkpOworKyAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZuYW1lX2F0X3BjLCAm c3RhcnRfYXRfcGMsIE5VTEwpCisrICAgICAgJiYgc3RhcnRfYXRfcGMgPT0gcGMpCisrICAgIHsK KysgICAgICBpZiAocmVzb2x2ZV9nbnVfaWZ1bmMgKG5hbWVfYXRfcGMsICZhZGRyZXNzKSkKKysJ cmV0dXJuIGFkZHJlc3M7CisrICAgIH0KKysgIGVsc2UKKysgICAgbmFtZV9hdF9wYyA9IE5VTEw7 CiArCi0rICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9IDE7Ci0rICBUWVBFX0RJU0NBUkRBQkxF X0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OworKyAgZnVuY3Rpb24g PSBhbGxvY2F0ZV92YWx1ZSAoZnVuY19mdW5jX3R5cGUpOworKyAgc2V0X3ZhbHVlX2FkZHJlc3Mg KGZ1bmN0aW9uLCBwYyk7CiArCi0rICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKHR5cGVfZGlzY2Fy ZGFibGVfdGFibGUsIHR5cGUsIElOU0VSVCk7Ci0rICBnZGJfYXNzZXJ0ICghKnNsb3QpOwotKyAg KnNsb3QgPSB0eXBlOwotK30KKysgIC8qIGdudS1pZnVuY3MgaGF2ZSBubyBhcmd1bWVudHMuICBG VU5DVElPTiBpcyB0aGUgZnVuY3Rpb24gZW50cnkgYWRkcmVzcworKyAgICAgd2hpbGUgQUREUkVT UyBpcyBhIHBvc3NpYmxlIGZ1bmN0aW9uIGRlc2NyaXB0b3IuLiAgKi8KKysgIGFkZHJlc3NfdmFs ID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChmdW5jdGlvbiwgMCwgTlVMTCk7CisrICBhZGRyZXNz ID0gdmFsdWVfYXNfYWRkcmVzcyAoYWRkcmVzc192YWwpOwogKwotKy8qIEFsbG9jYXRlIGEgbmV3 IHR5cGUgbGlrZSBhbGxvY190eXBlIGJ1dCBwcmVzZXJ2ZSBmb3IgaXQgdGhlIGRpc2NhcmRhYmls aXR5Ci0rICAgc3RhdGUgb2YgUEFSRU5UX1RZUEUuICAqLworKyAgaWYgKG5hbWVfYXRfcGMpCisr ICAgIGdudV9pZnVuY19yZWNvcmRfY2FjaGUgKGdkYmFyY2gsIG5hbWVfYXRfcGMsIGFkZHJlc3Mp OworKworKyAgcmV0dXJuIGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFy Y2gsIGFkZHJlc3MsICZjdXJyZW50X3RhcmdldCk7CisrfQogKwogK3N0YXRpYyBzdHJ1Y3QgdHlw ZSAqCi0rYWxsb2NfdHlwZV9hc19wYXJlbnQgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSkKKytm aW5kX2Z1bmN0aW9uX3JldHVybl90eXBlIChDT1JFX0FERFIgcGMpCiArewotKyAgc3RydWN0IHR5 cGUgKm5ld190eXBlID0gYWxsb2NfdHlwZV9jb3B5IChwYXJlbnRfdHlwZSk7CisrICBzdHJ1Y3Qg c3ltYm9sICpzeW0gPSBmaW5kX3BjX2Z1bmN0aW9uIChwYyk7CiArCi0rICBpZiAoVFlQRV9ESVND QVJEQUJMRSAocGFyZW50X3R5cGUpKQotKyAgICBzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAobmV3 X3R5cGUpOworKyAgaWYgKHN5bSAhPSBOVUxMICYmIEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tf VkFMVUUgKHN5bSkpID09IHBjCisrICAgICAgJiYgU1lNQk9MX1RZUEUgKHN5bSkgIT0gTlVMTCkK KysgICAgcmV0dXJuIFRZUEVfVEFSR0VUX1RZUEUgKFNZTUJPTF9UWVBFIChzeW0pKTsKICsKLSsg IHJldHVybiBuZXdfdHlwZTsKKysgIHJldHVybiBOVUxMOwogK30KICsKLSAvKiBBbGxvY2F0ZSBh IG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKLSAgICB3 aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9j YXRlZAotICAgIG9uIHRoZSBoZWFwLiAgKi8KLUBAIC0yNzQsNyArMzI4LDcgQEAgbWFrZV9wb2lu dGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5cGVwdHIpCisgLyog RGV0ZXJtaW5lIGEgZnVuY3Rpb24ncyBhZGRyZXNzIGFuZCBpdHMgcmV0dXJuIHR5cGUgZnJvbSBp dHMgdmFsdWUuCisgICAgQ2FsbHMgZXJyb3IoKSBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IHZhbGlk IGZvciBjYWxsaW5nLiAgKi8KICAKLSAgIGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0g MCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLworQEAgLTIzMyw3ICsyODMsNiBA QCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIHN0cnVjdCB0eXBl ICoqcmV0dmFsX3R5cGUpCisgeworICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X3R5cGVfYXJjaCAoZnR5cGUpOworLSAgZW51bSB0eXBlX2NvZGUgY29kZSA9IFRZUEVfQ09E RSAoZnR5cGUpOworICAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSBOVUxMOworICAgQ09SRV9B RERSIGZ1bmFkZHI7CisgCitAQCAtMjQxLDI0ICsyOTAsMzQgQEAgZmluZF9mdW5jdGlvbl9hZGRy IChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBlKQorICAg ICAgcGFydCBvZiBpdC4gICovCisgCisgICAvKiBEZXRlcm1pbmUgYWRkcmVzcyB0byBjYWxsLiAg Ki8KKy0gIGlmIChjb2RlID09IFRZUEVfQ09ERV9GVU5DIHx8IGNvZGUgPT0gVFlQRV9DT0RFX01F VEhPRCkKKy0gICAgeworLSAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRyZXNzIChmdW5jdGlvbik7 CistICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKTsKKy0gICAgfQor LSAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSKQorKyAgaWYgKFRZUEVfQ09ERSAoZnR5 cGUpID09IFRZUEVfQ09ERV9GVU5DCisrICAgICAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQ RV9DT0RFX01FVEhPRCkKKysgICAgZnVuYWRkciA9IHZhbHVlX2FkZHJlc3MgKGZ1bmN0aW9uKTsK KysgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9QVFIpCiAgICAgIHsK LS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0rICAgICAgbnR5cGUgPSBh bGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5cGVwdHIpCi0gCSp0eXBl cHRyID0gbnR5cGU7CisgICAgICAgZnVuYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1bmN0aW9u KTsKKyAgICAgICBmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBl KSk7CisgICAgICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisgCSAg fHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKKysJZnVuYWRkciA9IGdk YmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCisrCQkJ CQkJICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKKysgICAgfQorKyAgaWYgKFRZUEVfQ09ERSAoZnR5 cGUpID09IFRZUEVfQ09ERV9GVU5DCisrICAgICAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQ RV9DT0RFX01FVEhPRCkKKysgICAgeworKyAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9U WVBFIChmdHlwZSk7CisrCisrICAgICAgaWYgKFRZUEVfR05VX0lGVU5DIChmdHlwZSkpCisgCXsK Ky0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJj aCwgZnVuYWRkciwKKy0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKKy0JICB2YWx1ZV90eXBlID0g VFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOworKwkgIGZ1bmFkZHIgPSBnbnVfaWZ1bmNfcmVzb2x2 ZSAoZ2RiYXJjaCwgZnVuYWRkcik7CisrCisrCSAgLyogU2tpcCBxdWVyeWluZyB0aGUgZnVuY3Rp b24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCisrCSAgICAgYXNrZWQgZm9yLiAg Ki8KKysJICBpZiAocmV0dmFsX3R5cGUpCisrCSAgICB2YWx1ZV90eXBlID0gZmluZF9mdW5jdGlv bl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7CisgCX0KICAgICAgfQotQEAgLTM1MSw3ICs0MDUsNyBA QCBtYWtlX3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0 eXBlcHRyKQorLSAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfSU5UKQorKyAgZWxzZSBpZiAo VFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKKyAgICAgeworICAgICAgIC8qIEhh bmRsZSB0aGUgY2FzZSBvZiBmdW5jdGlvbnMgbGFja2luZyBkZWJ1Z2dpbmcgaW5mby4KKyAgICAg ICAgICBUaGVpciB2YWx1ZXMgYXJlIGNoYXJhY3RlcnMgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFy ZSBjaGFyICovCitkaWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCitpbmRl eCBjNGNkYjA2Li5kMjEzZjZhIDEwMDY0NAorLS0tIGEvZ2RiL2luZmNtZC5jCisrKysgYi9nZGIv aW5mY21kLmMKK0BAIC04MjIsNyArODIyLDcgQEAgbmV4dGlfY29tbWFuZCAoY2hhciAqY291bnRf c3RyaW5nLCBpbnQgZnJvbV90dHkpCisgICBzdGVwXzEgKDEsIDEsIGNvdW50X3N0cmluZyk7Cisg fQogIAotICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVk IHRvIGFsbG9jYXRlIG9uZS4gICovCistc3RhdGljIHZvaWQKKyt2b2lkCisgZGVsZXRlX2xvbmdq bXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpCisgeworICAgaW50IHRocmVhZCA9ICog KGludCAqKSBhcmc7CitAQCAtODYyLDEwICs4NjIsMTMgQEAgc3RlcF8xIChpbnQgc2tpcF9zdWJy b3V0aW5lcywgaW50IHNpbmdsZV9pbnN0LCBjaGFyICpjb3VudF9zdHJpbmcpCisgCisgICBpZiAo IXNpbmdsZV9pbnN0IHx8IHNraXBfc3Vicm91dGluZXMpCQkvKiBsZWF2ZSBzaSBjb21tYW5kIGFs b25lICovCiAgICAgIHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0r ICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5 cGVwdHIpCi0gCSp0eXBlcHRyID0gbnR5cGU7CisrICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0 cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKKysKKyAgICAgICBpZiAoaW5fdGhyZWFkX2xpc3QgKGlu ZmVyaW9yX3B0aWQpKQorICAJdGhyZWFkID0gcGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRp ZCk7CisgCisgICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKKysgICAgICB0 cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkp OworIAorICAgICAgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVh bnVwLCAmdGhyZWFkKTsKICAgICAgfQotQEAgLTcyMyw2ICs3NzcsNyBAQCBjcmVhdGVfcmFuZ2Vf dHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLCBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSwK LSAgICAgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0cnVjdCByYW5nZV9ib3Vu ZHMpKTsKLSAgIFRZUEVfTE9XX0JPVU5EIChyZXN1bHRfdHlwZSkgPSBsb3dfYm91bmQ7Ci0gICBU WVBFX0hJR0hfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGhpZ2hfYm91bmQ7Ci0rICBUWVBFX0JZVEVf U1RSSURFIChyZXN1bHRfdHlwZSkgPSAwOworQEAgLTEyMTksNiArMTIyMiwxNSBAQCBzaWduYWxf Y29tbWFuZCAoY2hhciAqc2lnbnVtX2V4cCwgaW50IGZyb21fdHR5KQorICAgcHJvY2VlZCAoKENP UkVfQUREUikgLTEsIG91cnNpZywgMCk7CisgfQogIAotICAgaWYgKGxvd19ib3VuZCA+PSAwKQot ICAgICBUWVBFX1VOU0lHTkVEIChyZXN1bHRfdHlwZSkgPSAxOwotQEAgLTgyMiwyNiArODc3LDQ1 IEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsCisrLyogQSBj b250aW51YXRpb24gY2FsbGJhY2sgZm9yIHVudGlsX25leHRfY29tbWFuZC4gICovCisrCisrc3Rh dGljIHZvaWQKKyt1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQorK3sKKysgIHN0 cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBhcmc7CisrICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50 ICh0cC0+bnVtKTsKKyt9CisrCisgLyogUHJvY2VlZCB1bnRpbCB3ZSByZWFjaCBhIGRpZmZlcmVu dCBzb3VyY2UgbGluZSB3aXRoIHBjIGdyZWF0ZXIgdGhhbgorICAgIG91ciBjdXJyZW50IG9uZSBv ciBleGl0IHRoZSBmdW5jdGlvbi4gIFdlIHNraXAgY2FsbHMgaW4gYm90aCBjYXNlcy4KICAKLSAg IFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwotICAgVFlQRV9UQVJH RVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOwotLSAgaWYgKGdldF9kaXNjcmV0 ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi0tICAg IGxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOwotLSAgQ0hFQ0tfVFlQRURFRiAoZWxlbWVudF90 eXBlKTsKLS0gIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGguICBB ZGEgYXJyYXlzIGNhbiBiZQotLSAgICAgZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQg YmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCi0tICAgICBJbiBzdWNoIGNhc2VzLCB0 aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgKi8KLS0gIGlmIChoaWdoX2JvdW5kIDwg bG93X2JvdW5kKQotLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gMDsKLS0gIGVsc2UK LS0gICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0tICAgICAgVFlQRV9MRU5HVEggKGVs ZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwotICAgVFlQRV9ORklF TERTIChyZXN1bHRfdHlwZSkgPSAxOwotICAgVFlQRV9GSUVMRFMgKHJlc3VsdF90eXBlKSA9Ci0g ICAgIChzdHJ1Y3QgZmllbGQgKikgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0 cnVjdCBmaWVsZCkpOwotICAgVFlQRV9JTkRFWF9UWVBFIChyZXN1bHRfdHlwZSkgPSByYW5nZV90 eXBlOwotICAgVFlQRV9WUFRSX0ZJRUxETk8gKHJlc3VsdF90eXBlKSA9IC0xOworQEAgLTEyMzUs NiArMTI0Nyw4IEBAIHVudGlsX25leHRfY29tbWFuZCAoaW50IGZyb21fdHR5KQorICAgc3RydWN0 IHN5bWJvbCAqZnVuYzsKKyAgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOworICAgc3RydWN0 IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKKysgIGludCB0aHJlYWQgPSB0 cC0+bnVtOworKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKICAKLS0gIC8qIFRZUEVfRkxB R19UQVJHRVRfU1RVQiB3aWxsIHRha2UgY2FyZSBvZiB6ZXJvIGxlbmd0aCBhcnJheXMgKi8KLSsg IC8qIERXQVJGIGJsb2NrcyBtYXkgZGVwZW5kIG9uIHJ1bnRpbWUgaW5mb3JtYXRpb24gbGlrZQot KyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBub3QgYmVpbmcgYXZhaWxhYmxlIGR1cmlu ZyB0aGUKLSsgICAgIENSRUFURV9BUlJBWV9UWVBFIHRpbWUuICAqLwotKyAgaWYgKFRZUEVfUkFO R0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kICE9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RB TlQKLSsgICAgICB8fCBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgIT0g UkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAotKyAgICAgIHx8IFRZUEVfTE9XX0JPVU5EX1VOREVG SU5FRCAocmFuZ2VfdHlwZSkgCi0rICAgICAgfHwgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAo cmFuZ2VfdHlwZSkgCi0rICAgICAgfHwgZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwg Jmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKLSsgICAgewotKyAgICAgIGxvd19ib3VuZCA9 IDA7Ci0rICAgICAgaGlnaF9ib3VuZCA9IC0xOwotKyAgICB9CisgICBjbGVhcl9wcm9jZWVkX3N0 YXR1cyAoKTsKKyAgIHNldF9zdGVwX2ZyYW1lICgpOworQEAgLTEyNzAsNyArMTI4NCwxOSBAQCB1 bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKKyAKKyAgIHRwLT5zdGVwX211bHRpID0g MDsJCS8qIE9ubHkgb25lIGNhbGwgdG8gcHJvY2VlZCAqLworIAorKyAgc2V0X2xvbmdqbXBfYnJl YWtwb2ludCAodGhyZWFkKTsKKysgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lk IChmcmFtZSk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2Jy ZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CiArCi0rICAvKiBCZSBjYXJlZnVsIHdoZW4gc2V0 dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKLSsgICAgIGVtcHR5IGFy cmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2JvdW5k LgotKyAgICAgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4g IFRZUEVfVEFSR0VUX1NUVUIgbmVlZHMgdG8KLSsgICAgIGJlIGNoZWNrZWQgYXMgaXQgbWF5IGhh dmUgZGVwZW5kZW5jaWVzIG9uIERXQVJGIGJsb2NrcyBkZXBlbmRpbmcgb24KLSsgICAgIHJ1bnRp bWUgaW5mb3JtYXRpb24gbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIENSRUFURV9BUlJBWV9UWVBF IHRpbWUuICAqLwotKyAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQgfHwgVFlQRV9UQVJHRVRf U1RVQiAoZWxlbWVudF90eXBlKSkKLSsgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IDA7 Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBDSEVDS19UWVBFREVGIChlbGVtZW50X3R5cGUpOwot KyAgICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPQotKwlUWVBFX0xFTkdUSCAoZWxlbWVu dF90eXBlKSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0rICAgIH0KKyAgIHByb2Nl ZWQgKChDT1JFX0FERFIpIC0xLCBUQVJHRVRfU0lHTkFMX0RFRkFVTFQsIDEpOwogKwotICAgaWYg KFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPT0gMCkKLS0gICAgVFlQRV9UQVJHRVRfU1RVQiAo cmVzdWx0X3R5cGUpID0gMTsKKysgIGlmICh0YXJnZXRfY2FuX2FzeW5jX3AgKCkgJiYgaXNfcnVu bmluZyAoaW5mZXJpb3JfcHRpZCkpCiArICAgIHsKLSsgICAgICAvKiBUaGUgcmVhbCBzaXplIHdp bGwgYmUgY29tcHV0ZWQgZm9yIHNwZWNpZmljIGluc3RhbmNlcyBieQotKwkgQ0hFQ0tfVFlQRURF Ri4gICovCi0rICAgICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKKysgICAg ICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIGFkZF9jb250aW51YXRpb24g KHRwLCB1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiwgdHAsIE5VTEwpOwogKyAgICB9Ci0gCi0gICBy ZXR1cm4gcmVzdWx0X3R5cGU7CisrICBlbHNlCisrICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4p OwogIH0KLUBAIC0xMzM3LDYgKzE0MTEsMTA1IEBAIHN0dWJfbm9uYW1lX2NvbXBsYWludCAodm9p ZCkKLSAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1YiB0eXBlIGhhcyBO VUxMIG5hbWUiKSk7CisgCisgc3RhdGljIHZvaWQKK0BAIC0xNDYzLDYgKzE0ODksNyBAQCBmaW5p c2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKKyAgIGlmIChicyAhPSBOVUxMICYm IHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKKyAgICAgb2JzZXJ2ZXJfbm90aWZ5X25vcm1hbF9zdG9w IChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7CisgICBkZWxldGVfYnJlYWtwb2ludCAoYS0+YnJl YWtwb2ludCk7CisrICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbmZlcmlvcl90aHJlYWQg KCktPm51bSk7CiAgfQogIAotKy8qIENhbGN1bGF0ZSB0aGUgbWVtb3J5IGxlbmd0aCBvZiBhcnJh eSBUWVBFLgotKwotKyAgIFRBUkdFVF9UWVBFIHNob3VsZCBiZSBzZXQgdG8gYGNoZWNrX3R5cGVk ZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKScgYXMKLSsgICBhIHBlcmZvcm1hbmNlIGhpbnQu ICBGZWVsIGZyZWUgdG8gcGFzcyBOVUxMLiAgU2V0IEZVTExfU1BBTiB0byByZXR1cm4gdGhlCi0r ICAgc2l6ZSBpbmNsLiB0aGUgcG9zc2libGUgcGFkZGluZyBvZiB0aGUgbGFzdCBlbGVtZW50IC0g aXQgbWF5IGRpZmZlciBmcm9tIHRoZQotKyAgIGNsZWFyZWQgRlVMTF9TUEFOIHJldHVybiB2YWx1 ZSAodGhlIGV4cGVjdGVkIFNJWkVPRikgZm9yIG5vbi16ZXJvCi0rICAgVFlQRV9CWVRFX1NUUklE RSB2YWx1ZXMuICAqLworIHN0YXRpYyB2b2lkCitAQCAtMTU0Niw2ICsxNTczLDcgQEAgZmluaXNo X2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKKyAgIHN0cnVjdCBjbGVhbnVw ICpvbGRfY2hhaW47CisgICBzdHJ1Y3QgZmluaXNoX2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3Mg KmNhcmdzOworKyAgaW50IHRocmVhZCA9IHRwLT5udW07CisgCisgICBzYWwgPSBmaW5kX3BjX2xp bmUgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAwKTsKKyAgIHNhbC5wYyA9IGdldF9mcmFtZV9wYyAo ZnJhbWUpOworQEAgLTE1NTYsNiArMTU4NCwxMCBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5 bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAKKyAgIG9sZF9jaGFp biA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludCk7CisgCisrICBz ZXRfbG9uZ2ptcF9icmVha3BvaW50ICh0aHJlYWQpOworKyAgdHAtPmluaXRpYXRpbmdfZnJhbWUg PSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKysgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBf YnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKICsKLStzdGF0aWMgTE9OR0VTVAotK3R5cGVf bGVuZ3RoX2dldCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSwg aW50IGZ1bGxfc3BhbikKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKLSsgIExPTkdF U1QgYnl0ZV9zdHJpZGUgPSAwOwkvKiBgPSAwJyBmb3IgYSBmYWxzZSBHQ0Mgd2FybmluZy4gICov Ci0rICBMT05HRVNUIGNvdW50LCBlbGVtZW50X3NpemUsIHJldHZhbDsKKyAgIHRwLT5wcm9jZWVk X3RvX2ZpbmlzaCA9IDE7ICAgIC8qIFdlIHdhbnQgc3RvcF9yZWdpc3RlcnMsIHBsZWFzZS4uLiAg Ki8KKyAgIGNhcmdzID0geG1hbGxvYyAoc2l6ZW9mICgqY2FyZ3MpKTsKKyAKK2RpZmYgLS1naXQg YS9nZGIvaW5mZXJpb3IuaCBiL2dkYi9pbmZlcmlvci5oCitpbmRleCA1YWJlYzY4Li5lMzA5Mjc3 IDEwMDY0NAorLS0tIGEvZ2RiL2luZmVyaW9yLmgKKysrKyBiL2dkYi9pbmZlcmlvci5oCitAQCAt MjkxLDYgKzI5MSw4IEBAIGV4dGVybiB2b2lkIGludGVycnVwdF90YXJnZXRfY29tbWFuZCAoY2hh ciAqYXJncywgaW50IGZyb21fdHR5KTsKKyAKKyBleHRlcm4gdm9pZCBpbnRlcnJ1cHRfdGFyZ2V0 XzEgKGludCBhbGxfdGhyZWFkcyk7CisgCisrZXh0ZXJuIHZvaWQgZGVsZXRlX2xvbmdqbXBfYnJl YWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpOwogKwotKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkg IT0gVFlQRV9DT0RFX0FSUkFZCi0rICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NP REVfU1RSSU5HKQotKyAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpOworIGV4dGVybiB2b2lk IGRldGFjaF9jb21tYW5kIChjaGFyICosIGludCk7CisgCisgZXh0ZXJuIHZvaWQgbm90aWNlX25l d19pbmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5j IGIvZ2RiL2luZnJ1bi5jCitpbmRleCA1N2YyYWI4Li41NzYyYTdmIDEwMDY0NAorLS0tIGEvZ2Ri L2luZnJ1bi5jCisrKysgYi9nZGIvaW5mcnVuLmMKK0BAIC00NSw2ICs0NSw4IEBACisgI2luY2x1 ZGUgImxhbmd1YWdlLmgiCisgI2luY2x1ZGUgInNvbGliLmgiCisgI2luY2x1ZGUgIm1haW4uaCIK KysjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgorKyNpbmNsdWRlICJibG9jay5oIgorICNpbmNsdWRl ICJnZGJfYXNzZXJ0LmgiCisgI2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgorICNpbmNsdWRlICJl dmVudC10b3AuaCIKK0BAIC0zNjcsNiArMzY5LDcgQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgICAg ICBwYXJlbnQgdGhyZWFkIHN0cnVjdHVyZSdzIHJ1biBjb250cm9sIHJlbGF0ZWQgZmllbGRzLCBu b3QganVzdCB0aGVzZS4KKyAgICAgIEluaXRpYWxpemVkIHRvIGF2b2lkICJtYXkgYmUgdXNlZCB1 bmluaXRpYWxpemVkIiB3YXJuaW5ncyBmcm9tIGdjYy4gICovCisgICBzdHJ1Y3QgYnJlYWtwb2lu dCAqc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7CisrICBzdHJ1Y3QgYnJlYWtwb2ludCAq ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKKyAgIENPUkVfQUREUiBzdGVwX3Jh bmdlX3N0YXJ0ID0gMDsKKyAgIENPUkVfQUREUiBzdGVwX3JhbmdlX2VuZCA9IDA7CisgICBzdHJ1 Y3QgZnJhbWVfaWQgc3RlcF9mcmFtZV9pZCA9IHsgMCB9OworQEAgLTQxOSw2ICs0MjIsOCBAQCBm b2xsb3dfZm9yayAodm9pZCkKKyAJICAgIHN0ZXBfcmFuZ2Vfc3RhcnQgPSB0cC0+c3RlcF9yYW5n ZV9zdGFydDsKKyAJICAgIHN0ZXBfcmFuZ2VfZW5kID0gdHAtPnN0ZXBfcmFuZ2VfZW5kOworIAkg ICAgc3RlcF9mcmFtZV9pZCA9IHRwLT5zdGVwX2ZyYW1lX2lkOworKwkgICAgZXhjZXB0aW9uX3Jl c3VtZV9icmVha3BvaW50CisrCSAgICAgID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHRw LT5leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQpOworIAorIAkgICAgLyogRm9yIG5vdywgZGVs ZXRlIHRoZSBwYXJlbnQncyBzciBicmVha3BvaW50LCBvdGhlcndpc2UsCisgCSAgICAgICBwYXJl bnQvY2hpbGQgc3IgYnJlYWtwb2ludHMgYXJlIGNvbnNpZGVyZWQgZHVwbGljYXRlcywKK0BAIC00 MjksNiArNDM0LDcgQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgCSAgICB0cC0+c3RlcF9yYW5nZV9z dGFydCA9IDA7CisgCSAgICB0cC0+c3RlcF9yYW5nZV9lbmQgPSAwOworIAkgICAgdHAtPnN0ZXBf ZnJhbWVfaWQgPSBudWxsX2ZyYW1lX2lkOworKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVf YnJlYWtwb2ludCAodHApOworIAkgIH0KKyAKKyAJcGFyZW50ID0gaW5mZXJpb3JfcHRpZDsKK0BA IC00NzAsNiArNDc2LDggQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgCQkgICAgdHAtPnN0ZXBfcmFu Z2Vfc3RhcnQgPSBzdGVwX3JhbmdlX3N0YXJ0OworIAkJICAgIHRwLT5zdGVwX3JhbmdlX2VuZCA9 IHN0ZXBfcmFuZ2VfZW5kOworIAkJICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0gc3RlcF9mcmFtZV9p ZDsKKysJCSAgICB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50CisrCQkgICAgICA9IGV4 Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsKKyAJCSAgfQorIAkJZWxzZQorIAkJICB7CitAQCAt NTIzLDYgKzUzMSw5IEBAIGZvbGxvd19pbmZlcmlvcl9yZXNldF9icmVha3BvaW50cyAodm9pZCkK KyAgIGlmICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCkKKyAgICAgYnJlYWtwb2ludF9yZV9z ZXRfdGhyZWFkICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCk7CisgCisrICBpZiAodHAtPmV4 Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKKysgICAgYnJlYWtwb2ludF9yZV9zZXRfdGhyZWFk ICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKKysKKyAgIC8qIFJlaW5zZXJ0IGFs bCBicmVha3BvaW50cyBpbiB0aGUgY2hpbGQuICBUaGUgdXNlciBtYXkgaGF2ZSBzZXQKKyAgICAg IGJyZWFrcG9pbnRzIGFmdGVyIGNhdGNoaW5nIHRoZSBmb3JrLCBpbiB3aGljaCBjYXNlIHRob3Nl CisgICAgICB3ZXJlIG5ldmVyIHNldCBpbiB0aGUgY2hpbGQsIGJ1dCBvbmx5IGluIHRoZSBwYXJl bnQuICBUaGlzIG1ha2VzCitAQCAtNzYwLDYgKzc3MSw3IEBAIGZvbGxvd19leGVjIChwdGlkX3Qg cGlkLCBjaGFyICpleGVjZF9wYXRobmFtZSkKKyAgIC8qIElmIHRoZXJlIHdhcyBvbmUsIGl0J3Mg Z29uZSBub3cuICBXZSBjYW5ub3QgdHJ1bHkgc3RlcC10by1uZXh0CisgICAgICBzdGF0ZW1lbnQg dGhyb3VnaCBhbiBleGVjKCkuICovCisgICB0aC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9IE5V TEw7CisrICB0aC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKKyAgIHRoLT5z dGVwX3JhbmdlX3N0YXJ0ID0gMDsKKyAgIHRoLT5zdGVwX3JhbmdlX2VuZCA9IDA7CisgCitAQCAt MjE5MCw2ICsyMjAyLDggQEAgc3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9p bnRfYXRfc2FsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkJCQkgIHN0cnVjdCBzeW10 YWJfYW5kX2xpbmUgc3Jfc2FsLAorIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkIHNyX2lkKTsKKyBz dGF0aWMgdm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFy Y2ggKiwgQ09SRV9BRERSKTsKKytzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChz dHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKKysJCQkJICAgIHN0cnVjdCBmcmFtZV9p bmZvICosIHN0cnVjdCBzeW1ib2wgKik7CisgCisgc3RhdGljIHZvaWQgc3RvcF9zdGVwcGluZyAo c3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOworIHN0YXRpYyB2b2lkIHByZXBh cmVfdG9fd2FpdCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOworQEAgLTIz MTMsNiArMjMyNyw3IEBAIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2NhbGxiYWNrIChz dHJ1Y3QgdGhyZWFkX2luZm8gKmluZm8sIHZvaWQgKmRhdGEpCisgICAgIHJldHVybiAwOworIAor ICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGluZm8pOworKyAgZGVsZXRlX2V4Y2Vw dGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoaW5mbyk7CisgICByZXR1cm4gMDsKKyB9CisgCitAQCAt MjMzNyw2ICsyMzUyLDcgQEAgZGVsZXRlX3N0ZXBfdGhyZWFkX3N0ZXBfcmVzdW1lX2JyZWFrcG9p bnQgKHZvaWQpCisgICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVh ZCAoKTsKKyAKKyAgICAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAodHApOworKyAg ICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKKyAgICAgfQorICAg ZWxzZQorICAgICAvKiBJbiBhbGwtc3RvcCBtb2RlLCBkZWxldGUgYWxsIHN0ZXAtcmVzdW1lIGFu ZCBsb25nam1wLXJlc3VtZQorQEAgLTMyNDEsNiArMzI1NywxMCBAQCBoYW5kbGVfaW5mZXJpb3Jf ZXZlbnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQorIAorICAgICAgIHN0 b3BfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hlIChlY3MtPnB0aWQp KTsKKyAKKysgICAgICAvKiBDbGVhciBXQVRDSFBPSU5UX1RSSUdHRVJFRCB2YWx1ZXMgZnJvbSBw cmV2aW91cyBzdG9wIHdoaWNoIGNvdWxkCisrCSBjb25mdXNlIGJwc3RhdF9zdG9wX3N0YXR1cyBh bmQgYnBzdGF0X2V4cGxhaW5zX3NpZ25hbC4gICovCisrICAgICAgd2F0Y2hwb2ludHNfdHJpZ2dl cmVkICgmZWNzLT53cyk7CiArCi0rICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5E IGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCi0rICAgICBGb3J0cmFuIGFy cmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhleSBjYW4g YmUKLSsgICAgIHplcm8tbGVuZ3RoLiAgKi8KLSsgIGlmIChvYmplY3RfYWRkcmVzc19kYXRhX25v dF92YWxpZCAodHlwZSkpCi0rICAgIHJldHVybiAwOworICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFk LT5zdG9wX2Jwc3RhdAorIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFj ZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAorIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRp ZCk7CitAQCAtMzMyOCw2ICszMzQ4LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0 IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCisgCisgICAgICAgc3RvcF9wYyA9IHJlZ2Nh Y2hlX3JlYWRfcGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOworIAorKyAgICAg IC8qIENsZWFyIFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0b3Ag d2hpY2ggY291bGQKKysJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRfZXhw bGFpbnNfc2lnbmFsLiAgKi8KKysgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3MtPndz KTsKICsKLSsgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwotKyAgaWYgKFRZ UEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkKLSsgICAgICB8fCBUWVBFX0hJR0hf Qk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKLSsgICAgcmV0dXJuIDA7Ci0rICBjb3VudCA9 IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlw ZSkgKyAxOwotKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Igd3JvbmcgRFdBUkYgYW5ub3RhdGlvbnMg cmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCi0rICBpZiAoY291bnQgPCAwKQotKyAgICB3YXJu aW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52YWxpZCBib3VuZHMgJXMuLiVzIiksCi0r CSAgICAgVFlQRV9OQU1FICh0eXBlKSwgcGxvbmdlc3QgKFRZUEVfTE9XX0JPVU5EIChyYW5nZV90 eXBlKSksCi0rCSAgICAgcGxvbmdlc3QgKFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkpKTsK LSsgIC8qIFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBjb3VudCA9PSAwIHJpZ2h0LiAg Ki8KLSsgIGlmIChjb3VudCA8PSAwKQotKyAgICByZXR1cm4gMDsKLSsgIGlmIChmdWxsX3NwYW4g fHwgY291bnQgPiAxKQotKyAgICB7Ci0rICAgICAgLyogV2UgZG8gbm90IHVzZSBUWVBFX0FSUkFZ X0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKSBoZXJlIGFzIHdlIHdhbnQgdG8KLSsgICAgICAgICBm b3JjZSBGVUxMX1NQQU4gdG8gMS4gICovCi0rICAgICAgYnl0ZV9zdHJpZGUgPSBUWVBFX0JZVEVf U1RSSURFIChyYW5nZV90eXBlKTsKLSsgICAgICBpZiAoYnl0ZV9zdHJpZGUgPT0gMCkKLSsgICAg ICAgIHsKLSsJICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKLSsJICAgIHRhcmdldF90eXBlID0g Y2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotKwkgIGJ5dGVfc3RyaWRl ID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRfdHlwZSwgTlVMTCwgMSk7Ci0rCX0KLSsgICAgfQot KwotKyAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3Ro IHRvIGJlIDAgaWYgaXRzIGxlbmd0aAotKyAgICAgZXhjZWVkcyBVSU5UX01BWC4gIFRoZSBjb2Rl IGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAsCi0rICAgICAoVUxPTkdFU1QpIHggPT0gLXgg KyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBpcyB0ZWNobmljYWxseSBub3QgZ3VhcmFudGVlZAot KyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZSAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVl IGlmIHggd2VyZSB1bnNpZ25lZAotKyAgICAgd2l0aCBpdHMgaGlnaC1vcmRlciBiaXQgb24pLiBJ dCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMKLSsgICAgIGFsd2F5 cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhpZ2hfYm91bmQtbG93X2Jv dW5kKzEKLSsgICAgIG92ZXJmbG93cywgaXQgb3ZlcmZsb3dzIHRvIDAuICBXZSBtdXN0IGNoYW5n ZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8KLSsgICAgIGluY3JlYXNlIHRoZSByZXByZXNl bnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4KLSsg ICAgICovCisgICAgICAgLyogRG8gd2hhdGV2ZXIgaXMgbmVjZXNzYXJ5IHRvIHRoZSBwYXJlbnQg YnJhbmNoIG9mIHRoZSB2Zm9yay4gICovCisgICAgICAgaGFuZGxlX3Zmb3JrX2NoaWxkX2V4ZWNf b3JfZXhpdCAoMSk7CisgCitAQCAtNDA3NiwyMyArNDEwMCwzMyBAQCBwcm9jZXNzX2V2ZW50X3N0 b3BfdGVzdDoKKyAKKyAJZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBwaW5nX292ZXJfYnJlYWtwb2lu dCA9IDE7CisgCistCWlmICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXRfcCAoZ2RiYXJjaCkK Ky0JICAgIHx8ICFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldCAoZ2RiYXJjaCwgZnJhbWUsICZq bXBfYnVmX3BjKSkKKysJaWYgKHdoYXQuaXNfbG9uZ2ptcCkKKyAJICB7CistCSAgICBpZiAoZGVi dWdfaW5mcnVuKQorLQkgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJcCisr CSAgICBpZiAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0X3AgKGdkYmFyY2gpCisrCQl8fCAh Z2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQgKGdkYmFyY2gsCisrCQkJCQkJZnJhbWUsICZqbXBf YnVmX3BjKSkKKysJICAgICAgeworKwkJaWYgKGRlYnVnX2luZnJ1bikKKysJCSAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAorIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdK TVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKKy0JICAgIGtlZXBf Z29pbmcgKGVjcyk7CistCSAgICByZXR1cm47CistCSAgfQorKwkJa2VlcF9nb2luZyAoZWNzKTsK KysJCXJldHVybjsKKysJICAgICAgfQorIAorLQkvKiBXZSdyZSBnb2luZyB0byByZXBsYWNlIHRo ZSBjdXJyZW50IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQKKy0JICAgd2l0aCBhIGxvbmdqbXAtcmVz dW1lIGJyZWFrcG9pbnQuICAqLworLQlkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoZWNz LT5ldmVudF90aHJlYWQpOworKwkgICAgLyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3Vy cmVudCBzdGVwLXJlc3VtZSBicmVha3BvaW50CisrCSAgICAgICB3aXRoIGEgbG9uZ2ptcC1yZXN1 bWUgYnJlYWtwb2ludC4gICovCisrCSAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAo ZWNzLT5ldmVudF90aHJlYWQpOworIAorLQkvKiBJbnNlcnQgYSBicmVha3BvaW50IGF0IHJlc3Vt ZSBhZGRyZXNzLiAgKi8KKy0JaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKGdkYmFy Y2gsIGptcF9idWZfcGMpOworKwkgICAgLyogSW5zZXJ0IGEgYnJlYWtwb2ludCBhdCByZXN1bWUg YWRkcmVzcy4gICovCisrCSAgICBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoZ2Ri YXJjaCwgam1wX2J1Zl9wYyk7CisrCSAgfQorKwllbHNlCisrCSAgeworKwkgICAgc3RydWN0IHN5 bWJvbCAqZnVuYyA9IGdldF9mcmFtZV9mdW5jdGlvbiAoZnJhbWUpOworIAorKwkgICAgaWYgKGZ1 bmMpCisrCSAgICAgIGNoZWNrX2V4Y2VwdGlvbl9yZXN1bWUgKGVjcywgZnJhbWUsIGZ1bmMpOwor KwkgIH0KKyAJa2VlcF9nb2luZyAoZWNzKTsKKyAJcmV0dXJuOworIAorQEAgLTQxMDEsOCArNDEz NSw1MiBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hf Z2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CisgCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLAorIAkJCSAgICAgICJpbmZydW46IEJQU1RBVF9XSEFUX0NMRUFSX0xPTkdKTVBfUkVTVU1F XG4iKTsKKyAKKy0JZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnQgIT0gTlVMTCk7CistCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3Mt PmV2ZW50X3RocmVhZCk7CisrCWlmICh3aGF0LmlzX2xvbmdqbXApCisrCSAgeworKwkgICAgZ2Ri X2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVM TCk7CisrCSAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJl YWQpOworKwkgIH0KKysJZWxzZQorKwkgIHsKKysJICAgIC8qIFRoZXJlIGFyZSBzZXZlcmFsIGNh c2VzIHRvIGNvbnNpZGVyLgogKwotKyAgaWYgKGZ1bGxfc3BhbikKLSsgICAgewotKyAgICAgIHJl dHZhbCA9IGNvdW50ICogYnl0ZV9zdHJpZGU7Ci0rICAgICAgaWYgKGNvdW50ID09IDAgfHwgcmV0 dmFsIC8gY291bnQgIT0gYnl0ZV9zdHJpZGUgfHwgcmV0dmFsID4gVUlOVF9NQVgpCi0rCXJldHZh bCA9IDA7Ci0rICAgICAgcmV0dXJuIHJldHZhbDsKLSsgICAgfQotKyAgaWYgKHRhcmdldF90eXBl ID09IE5VTEwpCi0rICAgIHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSkpOwotKyAgZWxlbWVudF9zaXplID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRf dHlwZSwgTlVMTCwgMSk7Ci0rICByZXR2YWwgPSAoY291bnQgLSAxKSAqIGJ5dGVfc3RyaWRlICsg ZWxlbWVudF9zaXplOwotKyAgaWYgKHJldHZhbCA8IGVsZW1lbnRfc2l6ZQotKyAgICAgIHx8IChi eXRlX3N0cmlkZSAhPSAwCi0rICAgICAgICAgICYmIChyZXR2YWwgLSBlbGVtZW50X3NpemUpIC8g Ynl0ZV9zdHJpZGUgIT0gY291bnQgLSAxKQotKyAgICAgIHx8IHJldHZhbCA+IFVJTlRfTUFYKQot KyAgICByZXR2YWwgPSAwOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9CisrCSAgICAgICAxLiBUaGUg aW5pdGlhdGluZyBmcmFtZSBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhpcyBjYXNlCisrCSAgICAg ICB3ZSBtdXN0IHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMgZ29uZSB0b28gZmFyLgog KwotKy8qIFByZXBhcmUgVFlQRSBhZnRlciBiZWluZyByZWFkIGluIGJ5IHRoZSBiYWNrZW5kLiAg Q3VycmVudGx5IHRoaXMgZnVuY3Rpb24KLSsgICBvbmx5IHByb3BhZ2F0ZXMgdGhlIFRZUEVfRFlO QU1JQyBmbGFnLiAgKi8KKysJICAgICAgIDIuIFRoZSBpbml0aWF0aW5nIGZyYW1lIGV4aXN0cywg YW5kIGlzIHRoZSBzYW1lIGFzIHRoZQorKwkgICAgICAgY3VycmVudCBmcmFtZS4gIFdlIHN0b3As IGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMgYmVlbgorKwkgICAgICAgY2F1Z2h0LgogKwotK3Zv aWQKLStmaW5hbGl6ZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0rICBpbnQgaTsKKysJ ICAgICAgIDMuIFRoZSBpbml0aWF0aW5nIGZyYW1lIGV4aXN0cyBhbmQgaXMgZGlmZmVyZW50IGZy b20KKysJICAgICAgIHRoZSBjdXJyZW50IGZyYW1lLiAgVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9u IGhhcyBiZWVuCisrCSAgICAgICBjYXVnaHQgYmVuZWF0aCB0aGUgaW5pdGlhdGluZyBmcmFtZSwg c28ga2VlcCBnb2luZy4gICovCisrCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqaW5pdF9mcmFtZQor KwkgICAgICA9IGZyYW1lX2ZpbmRfYnlfaWQgKGVjcy0+ZXZlbnRfdGhyZWFkLT5pbml0aWF0aW5n X2ZyYW1lKTsKICsKLSsgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyArK2kp Ci0rICAgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpICYmIFRZUEVfRFlOQU1JQyAoVFlQ RV9GSUVMRF9UWVBFICh0eXBlLCBpKSkpCi0rICAgICAgYnJlYWs7CisrCSAgICBnZGJfYXNzZXJ0 IChlY3MtPmV2ZW50X3RocmVhZC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ICE9IE5VTEwp OworKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90 aHJlYWQpOwogKwotKyAgLyogRklYTUU6IGNwbHVzX3N0dWZmIGlzIGlnbm9yZWQgaGVyZS4gICov Ci0rICBpZiAoaSA8IFRZUEVfTkZJRUxEUyAodHlwZSkKLSsgICAgICB8fCAoVFlQRV9WUFRSX0JB U0VUWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkp KQotKyAgICAgIHx8IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkpCi0rICAgIFRZUEVfRFlOQU1JQyAodHlwZSkgPSAxOwot K30KKysJICAgIGlmIChpbml0X2ZyYW1lKQorKwkgICAgICB7CisrCQlzdHJ1Y3QgZnJhbWVfaWQg Y3VycmVudF9pZAorKwkJICA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOwor KwkJaWYgKGZyYW1lX2lkX2VxIChjdXJyZW50X2lkLAorKwkJCQkgZWNzLT5ldmVudF90aHJlYWQt PmluaXRpYXRpbmdfZnJhbWUpKQorKwkJICB7CisrCQkgICAgLyogQ2FzZSAyLiAgRmFsbCB0aHJv dWdoLiAgKi8KKysJCSAgfQorKwkJZWxzZQorKwkJICB7CisrCQkgICAgLyogQ2FzZSAzLiAgKi8K KysJCSAgICBrZWVwX2dvaW5nIChlY3MpOworKwkJICAgIHJldHVybjsKKysJCSAgfQorKwkgICAg ICB9CiArCi0gLyogQWRkZWQgYnkgQnJ5YW4gQm9yZWhhbSwgS2V3aWxsLCBTdW4gU2VwIDE3IDE4 OjA3OjE3IDE5ODkuCisrCSAgICAvKiBGb3IgQ2FzZXMgMSBhbmQgMiwgcmVtb3ZlIHRoZSBzdGVw LXJlc3VtZSBicmVha3BvaW50LAorKwkgICAgICAgaWYgaXQgZXhpc3RzLiAgKi8KKysJICAgIGRl bGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CisrCSAgfQog IAotICAgIElmIHRoaXMgaXMgYSBzdHViYmVkIHN0cnVjdCAoaS5lLiBkZWNsYXJlZCBhcyBzdHJ1 Y3QgZm9vICopLCBzZWUgaWYKLUBAIC0xNDY4LDUxICsxNjQxLDM2IEBAIGNoZWNrX3R5cGVkZWYg KHN0cnVjdCB0eXBlICp0eXBlKQotICAgICAgICAgfQotICAgICB9CisgCWVjcy0+ZXZlbnRfdGhy ZWFkLT5zdG9wX3N0ZXAgPSAxOworIAlwcmludF9zdG9wX3JlYXNvbiAoRU5EX1NURVBQSU5HX1JB TkdFLCAwKTsKK0BAIC01MDcwLDYgKzUxNDgsOTcgQEAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2Jy ZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCisgICAgIHNl dF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2RiYXJjaCwgcGMsIGJwX2xvbmdqbXBfcmVz dW1lKTsKKyB9CiAgCi0tICBpZiAoVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkpCi0rICAvKiBjb3B5 X3R5cGVfcmVjdXJzaXZlIGF1dG9tYXRpY2FsbHkgbWFrZXMgdGhlIHJlc3VsdGluZyB0eXBlIGNv bnRhaW5pbmcgb25seQotKyAgICAgY29uc3RhbnQgdmFsdWVzIGV4cGVjdGVkIGJ5IHRoZSBjYWxs ZXJzIG9mIHRoaXMgZnVuY3Rpb24uICAqLwotKyAgaWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCisr LyogSW5zZXJ0IGFuIGV4Y2VwdGlvbiByZXN1bWUgYnJlYWtwb2ludC4gIFRQIGlzIHRoZSB0aHJl YWQgdGhyb3dpbmcKKysgICB0aGUgZXhjZXB0aW9uLiAgVGhlIGJsb2NrIEIgaXMgdGhlIGJsb2Nr IG9mIHRoZSB1bndpbmRlciBkZWJ1ZyBob29rCisrICAgZnVuY3Rpb24uICBGUkFNRSBpcyB0aGUg ZnJhbWUgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbCB0byB0aGlzCisrICAgZnVuY3Rpb24uICBT WU0gaXMgdGhlIHN5bWJvbCBvZiB0aGUgZnVuY3Rpb24gYXJndW1lbnQgaG9sZGluZyB0aGUKKysg ICB0YXJnZXQgUEMgb2YgdGhlIGV4Y2VwdGlvbi4gICovCisrCisrc3RhdGljIHZvaWQKKytpbnNl cnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAor KwkJCQkgICAgc3RydWN0IGJsb2NrICpiLAorKwkJCQkgICAgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lLAorKwkJCQkgICAgc3RydWN0IHN5bWJvbCAqc3ltKQorK3sKKysgIHN0cnVjdCBnZGJfZXhj ZXB0aW9uIGU7CisrCisrICAvKiBXZSB3YW50IHRvIGlnbm9yZSBlcnJvcnMgaGVyZS4gICovCisr ICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKICsgICAgewotKyAgICAgIGh0YWJfdCBj b3BpZWRfdHlwZXM7Ci0rICAgICAgc3RydWN0IHR5cGUgKnR5cGVfb2xkID0gdHlwZTsKKysgICAg ICBzdHJ1Y3Qgc3ltYm9sICp2c3ltOworKyAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7CisrICAg ICAgQ09SRV9BRERSIGhhbmRsZXI7CisrICAgICAgc3RydWN0IGJyZWFrcG9pbnQgKmJwOwogKwot KyAgICAgIGNvcGllZF90eXBlcyA9IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoTlVMTCk7Ci0r ICAgICAgdHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHR5cGUsIGNvcGllZF90eXBlcyk7Ci0r ICAgICAgaHRhYl9kZWxldGUgKGNvcGllZF90eXBlcyk7CisrICAgICAgdnN5bSA9IGxvb2t1cF9z eW1ib2wgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSksIGIsIFZBUl9ET01BSU4sIE5VTEwpOwor KyAgICAgIHZhbHVlID0gcmVhZF92YXJfdmFsdWUgKHZzeW0sIGZyYW1lKTsKKysgICAgICAvKiBJ ZiB0aGUgdmFsdWUgd2FzIG9wdGltaXplZCBvdXQsIHJldmVydCB0byB0aGUgb2xkIGJlaGF2aW9y LiAgKi8KKysgICAgICBpZiAoISB2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2YWx1ZSkpCisrCXsKKysJ ICBoYW5kbGVyID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwogKwotKyAgICAgIGdkYl9hc3Nl cnQgKFRZUEVfRFlOQU1JQyAodHlwZSkgPT0gMCk7CisrCSAgaWYgKGRlYnVnX2luZnJ1bikKKysJ ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCQkJImluZnJ1bjogZXhjZXB0 aW9uIHJlc3VtZSBhdCAlbHhcbiIsCisrCQkJCSh1bnNpZ25lZCBsb25nKSBoYW5kbGVyKTsKKysK KysJICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2gg KGZyYW1lKSwKKysJCQkJCSAgICAgICBoYW5kbGVyLCBicF9leGNlcHRpb25fcmVzdW1lKTsKKysJ ICBicC0+dGhyZWFkID0gdHAtPm51bTsKKysJICBpbmZlcmlvcl90aHJlYWQgKCktPmV4Y2VwdGlv bl9yZXN1bWVfYnJlYWtwb2ludCA9IGJwOworKwl9CiArICAgIH0KKyt9CiArCi0rICBpZiAoVFlQ RV9UQVJHRVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkKLSAgICAgewotLSAg ICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwotICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSAKLSsgICAg ICBpZiAoVFlQRV9EWU5BTUlDICh0eXBlKSkKLSsJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0 YXJnZXRfdHlwZTsKLSAgICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9U QVJHRVRfU1RVQiAodGFyZ2V0X3R5cGUpKQotIAl7Ci0gCSAgLyogRW1wdHkuICAqLwotIAl9Ci0g ICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLS0JICAg ICAgICYmIFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQotLQkgICAgICAgJiYgKFRZUEVfQ09ERSAo cmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCi0tCQkgICA9PSBUWVBFX0NPREVf UkFOR0UpKQotKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5H KQotIAl7Ci0gCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0eXBl LCBiYXNlZCBvbiBpdHMKLS0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQg dHlwZSdzIGxlbmd0aC4KLS0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBhcnJheXMg d2hlcmUgdGhlIGhpZ2ggYm91bmQKLS0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3Vu ZC4gKi8KLS0JICBjb25zdCBMT05HRVNUIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5n ZV90eXBlKTsKLS0JICBjb25zdCBMT05HRVNUIGhpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQg KHJhbmdlX3R5cGUpOwotLQkgIFVMT05HRVNUIGxlbjsKLS0KLS0JICBpZiAoaGlnaF9ib3VuZCA8 IGxvd19ib3VuZCkKLS0JICAgIGxlbiA9IDA7Ci0tCSAgZWxzZSB7Ci0tCSAgICAvKiBGb3Igbm93 LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8gYmUgMAotLQkgICAg ICAgaWYgaXRzIGxlbmd0aCBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1l cwotLQkgICAgICAgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNU X01BWCArIDEsCi0tCSAgICAgICB3aGljaCBpcyB0ZWNobmljYWxseSBub3QgZ3VhcmFudGVlZCBi eSBDLCBidXQgaXMgdXN1YWxseSB0cnVlCi0tCSAgICAgICAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0 cnVlIGlmIHggd2VyZSB1bnNpZ25lZCB3aXRoIGl0cwotLQkgICAgICAgaGlnaC1vcmRlciBiaXQg b24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQKLS0JICAgICAgIGhpZ2hfYm91bmQtbG93X2JvdW5k IGlzIGFsd2F5cyByZXByZXNlbnRhYmxlIGluCi0tCSAgICAgICBVTE9OR0VTVCBhbmQgdGhhdCBp ZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxIG92ZXJmbG93cywKLS0JICAgICAgIGl0IG92ZXJmbG93 cyB0byAwLiAgV2UgbXVzdCBjaGFuZ2UgdGhlc2UgdGVzdHMgaWYgd2UgCi0tCSAgICAgICBkZWNp ZGUgdG8gaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZUEVfTEVOR1RICi0tCSAgICAg ICBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4gKi8KLS0JICAgIFVMT05HRVNUIHVsb3cg PSBsb3dfYm91bmQsIHVoaWdoID0gaGlnaF9ib3VuZDsKLS0JICAgIFVMT05HRVNUIHRsZW4gPSBU WVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpOwotLQotLQkgICAgbGVuID0gdGxlbiAqICh1aGlnaCAt IHVsb3cgKyAxKTsKLS0JICAgIGlmICh0bGVuID09IDAgfHwgKGxlbiAvIHRsZW4gLSAxICsgdWxv dykgIT0gdWhpZ2ggCi0tCQl8fCBsZW4gPiBVSU5UX01BWCkKLS0JICAgICAgbGVuID0gMDsKLS0J ICB9Ci0tCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gbGVuOwotKwkgICAgIG51bWJlciBvZiBlbGVt ZW50cyBhbmQgdGhlIHRhcmdldCB0eXBlJ3MgbGVuZ3RoLiAgKi8KLSsJICBUWVBFX0xFTkdUSCAo dHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQgKHR5cGUsIHRhcmdldF90eXBlLCAwKTsKLSAJICBUWVBF X1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7Ci0gCX0KLSAgICAgICBlbHNlIGlmIChUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKLUBAIC0xNTIwLDkgKzE2NzgsMTIgQEAgY2hlY2tf dHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCi0gCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gVFlQ RV9MRU5HVEggKHRhcmdldF90eXBlKTsKLSAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7 Ci0gCX0KLSsgICAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMDsKLSAgICAgfQorKy8qIFRoaXMg aXMgY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGludGVyY2VwdGVkLiAgQ2hlY2sg dG8KKysgICBzZWUgd2hldGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVzdGluYXRpb24gaXMgb2YgaW50 ZXJlc3QsIGFuZCBpZiBzbywKKysgICBzZXQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50 IHRoZXJlLiAgKi8KICsKLSAgIC8qIENhY2hlIFRZUEVfTEVOR1RIIGZvciBmdXR1cmUgdXNlLiAg Ki8KLSAgIFRZUEVfTEVOR1RIIChvcmlnX3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOworK3N0 YXRpYyB2b2lkCisrY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250 cm9sX3N0YXRlICplY3MsCisrCQkJc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBzdHJ1Y3Qgc3lt Ym9sICpmdW5jKQorK3sKKysgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CiArCi0gICByZXR1cm4g dHlwZTsKLSB9Ci0gCi1AQCAtMTc5MSw2ICsxOTUyLDggQEAgaW5pdF90eXBlIChlbnVtIHR5cGVf Y29kZSBjb2RlLCBpbnQgbGVuZ3RoLCBpbnQgZmxhZ3MsCi0gICAgIFRZUEVfTk9UVEVYVCAodHlw ZSkgPSAxOwotICAgaWYgKGZsYWdzICYgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFKQotICAgICBU WVBFX0ZJWEVEX0lOU1RBTkNFICh0eXBlKSA9IDE7Ci0rICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdf R05VX0lGVU5DKQotKyAgICBUWVBFX0dOVV9JRlVOQyAodHlwZSkgPSAxOwotIAotICAgaWYgKG5h bWUpCi0gICAgIFRZUEVfTkFNRSAodHlwZSkgPSBvYnNhdmVzdHJpbmcgKG5hbWUsIHN0cmxlbiAo bmFtZSksCi1AQCAtMTgxNSw2ICsxOTc4LDcgQEAgaW5pdF90eXBlIChlbnVtIHR5cGVfY29kZSBj b2RlLCBpbnQgbGVuZ3RoLCBpbnQgZmxhZ3MsCi0gICAgICAgICBUWVBFX1NQRUNJRklDX0ZJRUxE ICh0eXBlKSA9IFRZUEVfU1BFQ0lGSUNfQ0FMTElOR19DT05WRU5USU9OOwotICAgICAgICAgYnJl YWs7Ci0gICAgIH0KKysgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQorKyAgICB7Cisr ICAgICAgc3RydWN0IGJsb2NrICpiOworKyAgICAgIHN0cnVjdCBkaWN0X2l0ZXJhdG9yIGl0ZXI7 CisrICAgICAgc3RydWN0IHN5bWJvbCAqc3ltOworKyAgICAgIGludCBhcmdubyA9IDA7CiArCi0g ICByZXR1cm4gdHlwZTsKLSB9Ci0gCi1AQCAtMjk5MiwzMyArMzE1Niw0MiBAQCB0eXBlX3BhaXJf ZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKLSB9Ci0gCi0g LyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRv IHdhbGsKLS0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JKRklMRSdzIG9i c3RhY2ssIGJlY2F1c2UKLS0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICAqLwot KyAgIHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLwotIAotIGh0YWJfdAotIGNyZWF0ZV9j b3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewotLSAgcmV0dXJu IGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAot LQkJCSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgICBo YXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJICAgICAgIGR1bW15X29ic3RhY2tfZGVhbGxv Y2F0ZSk7Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgLyogTlVMTCBP QkpGSUxFIGlzIGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWluZWQgaW4KLSsJ IE9CSkZJTEVfTUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVFX0hJU1RPUllf Q0hBSU4uICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxv YyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlICgxLCB0eXBl X3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAg ewotKyAgICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFi b3V0IHRvIGJlIGRlbGV0ZWQuICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0 ZWQgYnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3Jl YXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAotKwkJCQkgICB4 ZnJlZSwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJICAgaGFzaHRhYl9vYnN0YWNr X2FsbG9jYXRlLAotKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworKyAgICAgIC8q IFRoZSBleGNlcHRpb24gYnJlYWtwb2ludCBpcyBhIHRocmVhZC1zcGVjaWZpYyBicmVha3BvaW50 IG9uCisrCSB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLCBkZWNsYXJlZCBhczoKKysJIAorKwkg dm9pZCBfVW53aW5kX0RlYnVnSG9vayAodm9pZCAqY2ZhLCB2b2lkICpoYW5kbGVyKTsKKysJIAor KwkgVGhlIENGQSBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGZyYW1lIHRvIHdoaWNoIGNvbnRyb2wg aXMKKysJIGFib3V0IHRvIGJlIHRyYW5zZmVycmVkLiAgSEFORExFUiBpcyB0aGUgZGVzdGluYXRp b24gUEMuCisrCSAKKysJIFdlIGlnbm9yZSB0aGUgQ0ZBIGFuZCBzZXQgYSB0ZW1wb3JhcnkgYnJl YWtwb2ludCBhdCBIQU5ETEVSLgorKwkgVGhpcyBpcyBub3QgZXh0cmVtZWx5IGVmZmljaWVudCBi dXQgaXQgYXZvaWRzIGlzc3VlcyBpbiBnZGIKKysJIHdpdGggY29tcHV0aW5nIHRoZSBEV0FSRiBD RkEsIGFuZCBpdCBhbHNvIHdvcmtzIGV2ZW4gaW4gd2VpcmQKKysJIGNhc2VzIHN1Y2ggYXMgdGhy b3dpbmcgYW4gZXhjZXB0aW9uIGZyb20gaW5zaWRlIGEgc2lnbmFsCisrCSBoYW5kbGVyLiAgKi8K KysKKysgICAgICBiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKKysgICAgICBBTExfQkxP Q0tfU1lNQk9MUyAoYiwgaXRlciwgc3ltKQorKwl7CisrCSAgaWYgKCFTWU1CT0xfSVNfQVJHVU1F TlQgKHN5bSkpCisrCSAgICBjb250aW51ZTsKKysKKysJICBpZiAoYXJnbm8gPT0gMCkKKysJICAg ICsrYXJnbm87CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICBpbnNlcnRfZXhjZXB0aW9uX3Jl c3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCwKKysJCQkJCQkgIGIsIGZyYW1lLCBz eW0pOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQogKyAgICB9Ci0gfQotIAotLS8qIFJl Y3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRSwgaWYgaXQgaXMgYXNzb2NpYXRlZCB3aXRo Ci0tICAgT0JKRklMRS4gIFJldHVybiBhIG5ldyB0eXBlIGFsbG9jYXRlZCB1c2luZyBtYWxsb2Ms IGEgc2F2ZWQgdHlwZSBpZgotLSAgIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIFRZUEUgKHVzaW5n IENPUElFRF9UWVBFUyksIG9yIFRZUEUgaWYgaXQgaXMKLS0gICBub3QgYXNzb2NpYXRlZCB3aXRo IE9CSkZJTEUuICAqLwotKy8qIEEgaGVscGVyIGZvciBjb3B5X3R5cGVfcmVjdXJzaXZlLiAgVGhp cyBkb2VzIGFsbCB0aGUgd29yay4gIE9CSkZJTEUgaXMgdXNlZAotKyAgIG9ubHkgZm9yIGFuIGFz c2VydGlvbiBjaGVja2luZy4gICovCi0gCi0tc3RydWN0IHR5cGUgKgotLWNvcHlfdHlwZV9yZWN1 cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKLS0JCSAgICAgc3RydWN0IHR5cGUgKnR5 cGUsCi0tCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCi0rc3RhdGljIHN0cnVjdCB0eXBlICoK LStjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKLSsJCSAg ICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAgICBodGFiX3QgY29waWVkX3R5cGVzKQor K30KKysKKyBzdGF0aWMgdm9pZAorIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29u dHJvbF9zdGF0ZSAqZWNzKQogIHsKLSAgIHN0cnVjdCB0eXBlX3BhaXIgKnN0b3JlZCwgcGFpcjsK LSAgIHZvaWQgKipzbG90OwotICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwotIAotLSAgaWYgKCEg VFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSkKLSsgIGlmICghIFRZUEVfT0JKRklMRV9PV05FRCAo dHlwZSkgJiYgIVRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHJldHVybiB0eXBlOwotIAotICAg LyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3RoZXIg b2JqZmlsZXM7Ci1AQCAtMzAzMyw4ICszMjA2LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2ggKGdl dF90eXBlX2FyY2ggKHR5cGUpKTsKLSAKLSAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlwZSB0 byB0aGUgaGFzaCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQotLSAgICAgd2UgZW5jb3VudGVy IHRoaXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gICovCi0tICBz dG9yZWQgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2Yg KHN0cnVjdCB0eXBlX3BhaXIpKTsKLSsgICAgIHdlIGVuY291bnRlciB0aGlzIHR5cGUgYWdhaW4g ZHVyaW5nIGEgcmVjdXJzaXZlIGNhbGwgYmVsb3cuICBNZW1vcnkgY291bGQKLSsgICAgIGJlIGFs bG9jYXRlZCBmcm9tIE9CSkZJTEUgaW4gdGhlIGNhc2Ugd2Ugd2lsbCBiZSByZW1vdmluZyBPQkpG SUxFLCB0aGlzCi0rICAgICBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIGFuZCB4ZnJlZSBpcyBjYWxs ZWQgZm9yIGl0IGZyb20gQ09QSUVEX1RZUEVTLiAgKi8KLSsgIHN0b3JlZCA9IHhtYWxsb2MgKHNp emVvZiAoKnN0b3JlZCkpOwotICAgc3RvcmVkLT5vbGQgPSB0eXBlOwotICAgc3RvcmVkLT5uZXcg PSBuZXdfdHlwZTsKLSAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMwNDUsNiArMzIyMCwxOSBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIFRZUEVfT0JK RklMRV9PV05FRCAobmV3X3R5cGUpID0gMDsKLSAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJh cmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7CitkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5j IGIvZ2RiL2xpbnV4LW5hdC5jCitpbmRleCA5M2FkZmNkLi4zNDQxMmE2IDEwMDY0NAorLS0tIGEv Z2RiL2xpbnV4LW5hdC5jCisrKysgYi9nZGIvbGludXgtbmF0LmMKK0BAIC0yNTg3LDYgKzI1ODcs MzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAq b3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKKyAgIHJldHVybiBscC0+c3RvcHBlZF9kYXRhX2FkZHJl c3NfcDsKKyB9CiAgCi0rICAvKiBUWVBFX01BSU5fVFlQRSBtZW1vcnkgY29weSBhYm92ZSByZXdy b3RlIHRoZSBUWVBFX0RJU0NBUkRBQkxFIGZsYWcgc28gd2UKLSsgICAgIG5lZWQgdG8gaW5pdGlh bGl6ZSBpdCBhZ2Fpbi4gIEFuZCBldmVuIGlmIFRZUEUgd2FzIGFscmVhZHkgZGlzY2FyZGFibGUK LSsgICAgIE5FV19UWVBFIHNvIGZhciBpcyBub3QgcmVnaXN0ZXJlZCBpbiBUWVBFX0RJU0NBUkRB QkxFX1RBQkxFLiAgKi8KLSsgIFRZUEVfRElTQ0FSREFCTEUgKG5ld190eXBlKSA9IDA7Ci0rICBz ZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAobmV3X3R5cGUpOworKy8qIEluIGBzZXQgZm9sbG93LWZv cmstbW9kZSBjaGlsZCcgd2l0aCBtdWx0aXRocmVhZGVkIHBhcmVudCB3ZSBuZWVkIHRvIGRldGFj aAorKyAgIHdhdGNocG9pbnRzIGZyb20gYWxsIHRoZSBMV1BzLiAgSW4gc3VjaCBjYXNlIElORkVS SU9SX1BUSUQgd2lsbCBiZSB0aGUKKysgICBub24tdGhyZWFkZWQgbmV3IGNoaWxkIHdoaWxlIExX UF9MSVNUIHdpbGwgc3RpbGwgY29udGFpbiBhbGwgdGhlIHRocmVhZHMgb2YKKysgICB0aGUgcGFy ZW50IGJlaW5nIGRldGFjaGVkLiAgKi8KICsKLSsgIC8qIFByZS1jbGVhciB0aGUgZmllbGRzIHBy b2Nlc3NlZCBieSBkZWxldGVfbWFpbl90eXBlLiAgSWYgRFdBUkYgYmxvY2sKLSsgICAgIGV2YWx1 YXRpb25zIGJlbG93IGNhbGwgZXJyb3Igd2Ugd291bGQgbGVhdmUgYW4gdW5mcmVlYWJsZSBUWVBF LiAgKi8KLSsgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSA9IE5VTEw7Ci0rICBUWVBFX1ZQ VFJfQkFTRVRZUEUgKG5ld190eXBlKSA9IE5VTEw7Ci0rICBUWVBFX05GSUVMRFMgKG5ld190eXBl KSA9IDA7Ci0rICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gTlVMTDsKKytzdGF0aWMgaW50Cisr bGludXhfbmF0X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBzdHJ1Y3QgbHdwX2lu Zm8gKmxwOworKyAgaW50IGZvdW5kID0gMCwgcmV0dmFsID0gMDsKKysgIHB0aWRfdCBmaWx0ZXIg PSBwaWRfdG9fcHRpZCAocHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7CisrICBzdHJ1Y3Qg Y2xlYW51cCAqb2xkX2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOwogKwotICAgaWYgKFRZ UEVfTkFNRSAodHlwZSkpCi0gICAgIFRZUEVfTkFNRSAobmV3X3R5cGUpID0geHN0cmR1cCAoVFlQ RV9OQU1FICh0eXBlKSk7Ci0gICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkpCi1AQCAtMzA1Mywx MiArMzI0MSw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLSAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190eXBlKSA9IFRZUEVfSU5TVEFOQ0VfRkxB R1MgKHR5cGUpOwotICAgVFlQRV9MRU5HVEggKG5ld190eXBlKSA9IFRZUEVfTEVOR1RIICh0eXBl KTsKLSAKLSsgIGlmIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKQotKyAgICB7Ci0rICAgICAg Z2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpKTsKKysgIGZvciAobHAg PSBsd3BfbGlzdDsgbHA7IGxwID0gbHAtPm5leHQpCisrICAgIGlmIChwdGlkX21hdGNoIChscC0+ cHRpZCwgZmlsdGVyKSkKKysgICAgICB7CisrCWluZmVyaW9yX3B0aWQgPSBscC0+cHRpZDsKKysJ cmV0dmFsIHw9IGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOworKwlmb3VuZCA9 IDE7CisrICAgICAgfQogKwotKyAgICAgIGlmICghZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChU WVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKSkKLSsgICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCAo bmV3X3R5cGUpID0gMTsKLSsgICAgICBUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gTlVMTDsK LSsgICAgfQorKyAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiArCi0rICBpZiAoVFlQRV9BU1NP Q0lBVEVEIChuZXdfdHlwZSkpCisrICBpZiAoIWZvdW5kKQogKyAgICB7Ci0rICAgICAgZ2RiX2Fz c2VydCAoIVRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSk7CisrICAgICAgZ2RiX2Fzc2Vy dCAoIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOwogKwotKyAgICAgIGlmICghZHdhcmZfbG9jZXhw cl9iYXRvbl9ldmFsIChUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSkpCi0rICAgICAgICBUWVBF X05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgPSAxOwotKyAgICAgIFRZUEVfQVNTT0NJQVRFRCAo bmV3X3R5cGUpID0gTlVMTDsKKysgICAgICByZXR2YWwgfD0gbGludXhfb3BzLT50b19kZXRhY2hf d2F0Y2hwb2ludHMgKCk7CiArICAgIH0KICsKLSsgIGlmICghVFlQRV9EQVRBX0xPQ0FUSU9OX0lT X0FERFIgKG5ld190eXBlKQotKyAgICAgICYmIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9D SyAobmV3X3R5cGUpKQotKyAgICB7Ci0rICAgICAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3 X3R5cGUpCi0rICAgICAgICAgIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSkKLSsJ VFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIChuZXdfdHlwZSkgPSBOVUxMOwotKyAgICAg IGVsc2UKLSsJewotKwkgIFRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSIChuZXdfdHlwZSkgPSAx OwotKwkgIFRZUEVfREFUQV9MT0NBVElPTl9BRERSIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHBy X2JhdG9uX2V2YWwKLSsJCQkJICAgIChUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5l d190eXBlKSk7Ci0rCX0KLSsgICAgfQorKyAgcmV0dXJuIHJldHZhbDsKKyt9CiArCi0gICAvKiBD b3B5IHRoZSBmaWVsZHMuICAqLwotICAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCi0gICAgIHsK LSAgICAgICBpbnQgaSwgbmZpZWxkczsKKyAvKiBXYWl0IHVudGlsIExQIGlzIHN0b3BwZWQuICAq LwogIAotKyAgICAgIC8qIFRZUEVfQ09ERV9SQU5HRSB1c2VzIFRZUEVfUkFOR0VfREFUQSBvZiB0 aGUgdW5pb24gd2l0aCBUWVBFX0ZJRUxEUy4gICovCi0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9D T0RFICh0eXBlKSAhPSBUWVBFX0NPREVfUkFOR0UpOwotKwotICAgICAgIG5maWVsZHMgPSBUWVBF X05GSUVMRFMgKHR5cGUpOwotKyAgICAgIFRZUEVfTkZJRUxEUyAobmV3X3R5cGUpID0gbmZpZWxk czsKLSAgICAgICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3Ry dWN0IGZpZWxkKTsKLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQotIAl7Ci1A QCAtMzA2Nyw4ICszMjkxLDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCi0gCSAgVFlQRV9GSUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJ RUxEX0JJVFNJWkUgKHR5cGUsIGkpOwotIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkp KQotIAkgICAgVFlQRV9GSUVMRF9UWVBFIChuZXdfdHlwZSwgaSkKLS0JICAgICAgPSBjb3B5X3R5 cGVfcmVjdXJzaXZlIChvYmpmaWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAotLQkJCQkg ICAgIGNvcGllZF90eXBlcyk7Ci0rCSAgICAgID0gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpm aWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAotKwkJCQkgICAgICAgY29waWVkX3R5cGVz KTsKLSAJICBpZiAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSkKLSAJICAgIFRZUEVfRklFTERf TkFNRSAobmV3X3R5cGUsIGkpID0gCi0gCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAo dHlwZSwgaSkpOwotQEAgLTMwOTUsMjQgKzMzMTksMTY2IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAl9Cisgc3RhdGljIGludAorQEAgLTU2MDYsNiAr NTYzOSw4IEBAIGxpbnV4X25hdF9hZGRfdGFyZ2V0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKKyAg IHQtPnRvX3RocmVhZF9hZGRyZXNzX3NwYWNlID0gbGludXhfbmF0X3RocmVhZF9hZGRyZXNzX3Nw YWNlOworICAgdC0+dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gbGludXhfbmF0X3N0b3BwZWRf Ynlfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzID0gbGludXhfbmF0 X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworKyAgaWYgKGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNo cG9pbnRzKQorKyAgICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBsaW51eF9uYXRfZGV0YWNo X3dhdGNocG9pbnRzOworIAorICAgdC0+dG9fY2FuX2FzeW5jX3AgPSBsaW51eF9uYXRfY2FuX2Fz eW5jX3A7CisgICB0LT50b19pc19hc3luY19wID0gbGludXhfbmF0X2lzX2FzeW5jX3A7CitkaWZm IC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAuYyBiL2dkYi9saW51eC10ZGVwLmMKK2luZGV4IDA3ZmQ2 N2MuLjI1MjQyNTAgMTAwNjQ0CistLS0gYS9nZGIvbGludXgtdGRlcC5jCisrKysgYi9nZGIvbGlu dXgtdGRlcC5jCitAQCAtMjMsNiArMjMsOCBAQAorICNpbmNsdWRlICJhdXh2LmgiCisgI2luY2x1 ZGUgInRhcmdldC5oIgorICNpbmNsdWRlICJlbGYvY29tbW9uLmgiCisrI2luY2x1ZGUgInZhbHVl LmgiCisrI2luY2x1ZGUgImluZmNhbGwuaCIKKyAKKyAvKiBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRh YmxlIGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZG9uJ3QKKyAgICBleHRlbmQvb3ZlcnJpZGUgdGhl IHN0YW5kYXJkIHNpZ2luZm8gc3RydWN0dXJlLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvbWkvbWkt Y21kLXZhci5jIGIvZ2RiL21pL21pLWNtZC12YXIuYworaW5kZXggMzEwYWRlOS4uZDg3MTBhMSAx MDA2NDQKKy0tLSBhL2dkYi9taS9taS1jbWQtdmFyLmMKKysrKyBiL2dkYi9taS9taS1jbWQtdmFy LmMKK0BAIC03MDIsNyArNzAyLDYgQEAgbWlfY21kX3Zhcl91cGRhdGUgKGNoYXIgKmNvbW1hbmQs IGNoYXIgKiphcmd2LCBpbnQgYXJnYykKICAgICAgfQorICAgZWxzZQorICAgICB7CistICAgICAg LyogR2V0IHZhcm9iaiBoYW5kbGUsIGlmIGEgdmFsaWQgdmFyIG9iaiBuYW1lIHdhcyBzcGVjaWZp ZWQgKi8KKyAgICAgICBzdHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpfZ2V0X2hhbmRsZSAobmFt ZSk7CiAgCi0rICAvKiBCb3RoIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLIGFuZCBUWVBFX1JB TkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgd2VyZQotKyAgICAgcG9zc2libHkgY29udmVydGVkLiAg Ki8KLSsgIFRZUEVfRFlOQU1JQyAobmV3X3R5cGUpID0gMDsKKyAgICAgICB2YXJvYmpfdXBkYXRl X29uZSAodmFyLCBwcmludF92YWx1ZXMsIDEgLyogZXhwbGljaXQgKi8pOworZGlmZiAtLWdpdCBh L2dkYi9taW5zeW1zLmMgYi9nZGIvbWluc3ltcy5jCitpbmRleCBjYjQ1NDVjLi45MmQ0MDI3IDEw MDY0NAorLS0tIGEvZ2RiL21pbnN5bXMuYworKysrIGIvZ2RiL21pbnN5bXMuYworQEAgLTMzNyw4 ICszMzcsOSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoY29uc3QgY2hhciAqbmFtZSwg c3RydWN0IG9iamZpbGUgKm9iamYpCisgCSAgICAgICBtc3ltYm9sID0gbXN5bWJvbC0+aGFzaF9u ZXh0KQorIAkgICAgeworIAkgICAgICBpZiAoc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FICht c3ltYm9sKSwgbmFtZSkgPT0gMCAmJgorLQkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBt c3RfdGV4dCB8fAorLQkJICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmlsZV90ZXh0 KSkKKysJCSAgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKKysJCSAgIHx8IE1T WU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jCisrCQkgICB8fCBNU1lN Qk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQorIAkJeworIAkJICBzd2l0Y2gg KE1TWU1CT0xfVFlQRSAobXN5bWJvbCkpCisgCQkgICAgeworQEAgLTcwMCw2ICs3MDEsMTYgQEAg bG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcGMpCisgICByZXR1cm4gbG9v a3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKHBjLCBOVUxMKTsKKyB9CisgCisrLyog UmV0dXJuIG5vbi16ZXJvIGlmZiBQQyBpcyBpbiBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgZ251LWlm dW5jIHNlbGVjdGlvbi4gICovCiArCi0gICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJv dW5kcyBpbmZvcm1hdGlvbi4gKi8KLS0gIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9SQU5HRSkKLSsgIGlmIChUWVBFX0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfUkFOR0Up Ci0gICAgIHsKLSAgICAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9IHhtYWxsb2MgKHNp emVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwotICAgICAgICpUWVBFX1JBTkdFX0RBVEEgKG5l d190eXBlKSA9ICpUWVBFX1JBTkdFX0RBVEEgKHR5cGUpOworK2ludAorK2luX2dudV9pZnVuY19z dHViIChDT1JFX0FERFIgcGMpCisreworKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9s ID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChwYyk7CiArCi0rICAgICAgc3dpdGNoIChU WVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LmtpbmQpCi0rCXsKLSsJY2FzZSBSQU5HRV9C T1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRf RFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbicgaXMgdG9v IGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFk ZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBh bmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgotKwkgICAgICov Ci0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZUEVfTk9UX0FTU09D SUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFtZXMgKCkpCi0rCSAg ICB7Ci0rCSAgICAgIC8qIFdlIHNob3VsZCBzZXQgMSBmb3IgRm9ydHJhbiBidXQgaG93IHRvIGZp bmQgdGhlIGxhbmd1YWdlPyAgKi8KLSsJICAgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9 IDA7Ci0rCSAgICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJ ICAgIH0KLSsJICBlbHNlCi0rCSAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID0gZHdhcmZf bG9jZXhwcl9iYXRvbl9ldmFsCi0rCQkJCShUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93 LnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cua2lu ZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgUkFOR0Vf Qk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsKLSsJICAgIENPUkVfQUREUiBhZGRyOwot KwotKwkgICAgLyogYHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbicgaXMgdG9vIGJvdW5kIHRv IGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgICBpdCBpcyBleHBlY3RlZCB0byBiZSBtYWRlIGNvbnN0 YW50IGJ5IENIRUNLX1RZUEVERUYuCi0rCSAgICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZ UEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KLSsJICAgICAgICovCi0r CSAgICBpZiAoISBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKQotKwkgICAgICAgICYmICEg VFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhhc19zdGFja19mcmFtZXMgKCkKLSsJ ICAgICAgICAmJiBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKLSsJCSAgKFRZUEVfUkFOR0VfREFU QSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0rCQkgICBUWVBFX1JB TkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC50eXBlLCAmYWRkcikpCi0r CSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBhZGRyOwotKwkgICAgZWxzZQotKwkg ICAgICB7Ci0rCQkvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0IGhvdyB0byBmaW5k IHRoZSBsYW5ndWFnZT8gICovCi0rCQlUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID0gMDsKLSsJ CVRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJICAgICAgfQotKwkg ICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kID0gUkFOR0VfQk9VTkRfS0lO RF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBzd2l0Y2ggKFRZ UEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQpCi0rCXsKLSsJY2FzZSBSQU5HRV9C T1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRf RFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbicgaXMgdG9v IGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFk ZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBh bmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgotKwkgICAgICov Ci0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZUEVfTk9UX0FTU09D SUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFtZXMgKCkpCi0rCSAg ICB7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQg KG5ld190eXBlKSAtIDE7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKG5ld190 eXBlKSA9IDE7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgVFlQRV9ISUdIX0JPVU5EIChuZXdf dHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkgICAgICAgKFRZUEVfUkFOR0Vf REFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFU QSAobmV3X3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkg IGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKLSsJICB7Ci0r CSAgICBDT1JFX0FERFIgYWRkcjsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3Rf YmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAgaXQgaXMgZXhw ZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgICAgVFlQ RV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9y IFRZUEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdf dHlwZSkKLSsJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBo YXNfc3RhY2tfZnJhbWVzICgpCi0rCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFs Ci0rCQkgICAgICAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2Ns aXN0LmxvY2xpc3QsCi0rCQkgICAgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gu dS5kd2FyZl9sb2NsaXN0LnR5cGUsCi0rCQkgICAgICAgJmFkZHIpKQotKwkgICAgICBUWVBFX0hJ R0hfQk9VTkQgKG5ld190eXBlKSA9IGFkZHI7Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCVRZ UEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSAtIDE7 Ci0rCQlUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOwotKwkgICAgICB9 Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9V TkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KKysgIHJldHVybiBtc3lt Ym9sICYmIE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jOworK30K ICsKLSsgICAgICBzd2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlk ZS5raW5kKQotKwl7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJICBicmVh azsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBzdHJ1Y3Qg ZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkg ICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4K LSsJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5v dCB2YWxpZCBmb3IgVFlQRS4KLSsJICAgICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQg KG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgfHwg ISBoYXNfc3RhY2tfZnJhbWVzICgpKQotKwkgICAgVFlQRV9CWVRFX1NUUklERSAobmV3X3R5cGUp ID0gMDsKLSsJICBlbHNlCi0rCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBkd2Fy Zl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5 dGVfc3RyaWRlLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUp LT5ieXRlX3N0cmlkZS5raW5kCi0rCSAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0r CSAgYnJlYWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsK LSsJICAgIENPUkVfQUREUiBhZGRyID0gMDsKKyAvKiBGaW5kIHRoZSBtaW5pbWFsIHN5bWJvbCBu YW1lZCBOQU1FLCBhbmQgcmV0dXJuIGJvdGggdGhlIG1pbnN5bQorICAgIHN0cnVjdCBhbmQgaXRz IG9iamZpbGUuICBUaGlzIG9ubHkgY2hlY2tzIHRoZSBsaW5rYWdlIG5hbWUuICBTZXRzCisgICAg Kk9CSkZJTEVfUCBhbmQgcmV0dXJucyB0aGUgbWluaW1hbCBzeW1ib2wsIGlmIGl0IGlzIGZvdW5k LiAgSWYgaXQKK0BAIC03NjksNiArNzgwLDcgQEAgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wg KGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBhZGRyZXNzLAorICAgc3dpdGNoIChtc190eXBl KQorICAgICB7CisgICAgIGNhc2UgbXN0X3RleHQ6CisrICAgIGNhc2UgbXN0X3RleHRfZ251X2lm dW5jOgorICAgICBjYXNlIG1zdF9maWxlX3RleHQ6CisgICAgIGNhc2UgbXN0X3NvbGliX3RyYW1w b2xpbmU6CisgICAgICAgc2VjdGlvbiA9IFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpOworQEAgLTEy MzUsNyArMTI0Nyw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQgKHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSwgQ09SRV9BRERSIHBjKQorICAgICB7CisgICAgICAgQUxMX01TWU1CT0xT IChvYmpmaWxlLCBtc3ltYm9sKQorICAgICAgIHsKKy0JaWYgKE1TWU1CT0xfVFlQRSAobXN5bWJv bCkgPT0gbXN0X3RleHQKKysJaWYgKChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0 CisrCSAgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYykK KyAJICAgICYmIHN0cmNtcCAoU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCksCisgCQkgICAg ICAgU1lNQk9MX0xJTktBR0VfTkFNRSAodHN5bWJvbCkpID09IDApCisgCSAgcmV0dXJuIFNZTUJP TF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKTsKK2RpZmYgLS1naXQgYS9nZGIvcC1sYW5nLmMgYi9n ZGIvcC1sYW5nLmMKK2luZGV4IDA4NzM4YWMuLjY0ZDJlOWYgMTAwNjQ0CistLS0gYS9nZGIvcC1s YW5nLmMKKysrKyBiL2dkYi9wLWxhbmcuYworQEAgLTIyMiw3ICsyMjIsMTEgQEAgcGFzY2FsX3By aW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgIHVu c2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CisgICBpbnQgaW5fcXVvdGVzID0gMDsKKyAg IGludCBuZWVkX2NvbW1hID0gMDsKKy0gIGludCB3aWR0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsK KysgIGludCB3aWR0aDsKKysKKysgIC8qIFByZXNlcnZlIFRZUEUncyBvcmlnaW5hbCB0eXBlLCBq dXN0IHNldCBpdHMgTEVOR1RILiAgKi8KKysgIGNoZWNrX3R5cGVkZWYgKHR5cGUpOworKyAgd2lk dGggPSBUWVBFX0xFTkdUSCAodHlwZSk7CisgCisgICAvKiBJZiB0aGUgc3RyaW5nIHdhcyBub3Qg dHJ1bmNhdGVkIGR1ZSB0byBgc2V0IHByaW50IGVsZW1lbnRzJywgYW5kCisgICAgICB0aGUgbGFz dCBieXRlIG9mIGl0IGlzIGEgbnVsbCwgd2UgZG9uJ3QgcHJpbnQgdGhhdCwgaW4gdHJhZGl0aW9u YWwgQworZGlmZiAtLWdpdCBhL2dkYi9wLXZhbHByaW50LmMgYi9nZGIvcC12YWxwcmludC5jCitp bmRleCA0ZDM5YmVkLi5kMGRkZWJjIDEwMDY0NAorLS0tIGEvZ2RiL3AtdmFscHJpbnQuYworKysr IGIvZ2RiL3AtdmFscHJpbnQuYworQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVkZSAicC1sYW5n LmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJjcC1zdXBwb3J0LmgiCisrI2lu Y2x1ZGUgImR3YXJmMmxvYy5oIgorIAwKKyAKKyAKK0BAIC02OCw4ICs2OSwyNyBAQCBwYXNjYWxf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisg ICBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlOworICAgTE9OR0VTVCB2YWw7CisgICBDT1JFX0FERFIg YWRkcjsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKyAgc3RydWN0IHR5cGUgKnNhdmVk X3R5cGUgPSB0eXBlOworKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRyZXNzOworKyAg CisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOworKyAgdHlwZSA9 IG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh0eXBlLCAmYWRkcmVzcyk7CisrICBpZiAodHlwZSA9 PSBOVUxMKQorKyAgICB7CisrICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9hZGRyZXNzX2Rh dGFfbm90X3ZhbGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsKKysgICAgICBnZGJfZmx1c2ggKHN0 cmVhbSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIHJldHVybiAwOwor KyAgICB9CisrICBpZiAoYWRkcmVzcyAhPSBzYXZlZF9hZGRyZXNzKQorKyAgICB7CisrICAgICAg c2l6ZV90IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKKyAKKy0gIENIRUNLX1RZUEVERUYg KHR5cGUpOworKyAgICAgIHZhbGFkZHIgPSB4bWFsbG9jIChsZW5ndGgpOworKyAgICAgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIChnZGJfYnl0ZSAqKSB2YWxhZGRyKTsKKysgICAgICByZWFkX21lbW9y eSAoYWRkcmVzcywgKGdkYl9ieXRlICopIHZhbGFkZHIsIGxlbmd0aCk7CisrICAgIH0KKyAgIHN3 aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKKyAgICAgeworICAgICBjYXNlIFRZUEVfQ09ERV9BUlJB WToKK0BAIC0xMjUsOCArMTQ1LDkgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorIAkJeworIAkJICBpID0gMDsKKyAJCX0KKy0J ICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRf b2Zmc2V0LCBhZGRyZXNzLCBzdHJlYW0sCistCQkJCQlyZWN1cnNlLCBvcmlnaW5hbF92YWx1ZSwg b3B0aW9ucywgaSk7CisrCSAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc2F2ZWRfdHlw ZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwKKysJCQkJCXNhdmVkX2FkZHJlc3MsIHN0cmVh bSwgcmVjdXJzZSwKKysJCQkJCW9yaWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKKyAJICAgICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAifSIpOworIAkgICAgfQorIAkgIGJyZWFrOworQEAg LTE2NCw2ICsxODUsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgCSAgLyogVHJ5IHRvIHByaW50IHdoYXQgZnVuY3Rpb24g aXQgcG9pbnRzIHRvLiAgKi8KKyAJICBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChnZGJhcmNoLCBh ZGRyLCBzdHJlYW0sIGRlbWFuZ2xlKTsKKyAJICAvKiBSZXR1cm4gdmFsdWUgaXMgaXJyZWxldmFu dCBleGNlcHQgZm9yIHN0cmluZyBwb2ludGVycy4gICovCisrCSAgZG9fY2xlYW51cHMgKGJhY2tf dG8pOworIAkgIHJldHVybiAoMCk7CisgCX0KKyAKK0BAIC0yNTIsNiArMjc0LDcgQEAgcGFzY2Fs X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAor ICAgICAgIC8qIFJldHVybiBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBpbmNsdWRpbmcg dGhlIHRlcm1pbmF0aW5nCisgCSAnXDAnIGlmIHdlIHJlYWNoZWQgdGhlIGVuZC4gIHZhbF9wcmlu dF9zdHJpbmcgdGFrZXMgY2FyZSBpbmNsdWRpbmcKKyAJIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGlm IG5lY2Vzc2FyeS4gICovCisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgICAgIHJl dHVybiBpOworIAorICAgICAgIGJyZWFrOworQEAgLTU1NCw2ICs1NzcsNyBAQCBwYXNjYWxfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgICAg ICAgZXJyb3IgKF8oIkludmFsaWQgcGFzY2FsIHR5cGUgY29kZSAlZCBpbiBzeW1ib2wgdGFibGUu IiksIFRZUEVfQ09ERSAodHlwZSkpOworICAgICB9CisgICBnZGJfZmx1c2ggKHN0cmVhbSk7Cisr ICBkb19jbGVhbnVwcyAoYmFja190byk7CisgICByZXR1cm4gKDApOworIH0KKyAMCitkaWZmIC0t Z2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYworaW5kZXggYzg4NWM2YS4uY2JmOWM2NSAx MDA2NDQKKy0tLSBhL2dkYi9wYXJzZS5jCisrKysgYi9nZGIvcGFyc2UuYworQEAgLTQ4Nyw5ICs0 ODcsMjEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJv bCkKKyAgIHBjID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwg YWRkciwgJmN1cnJlbnRfdGFyZ2V0KTsKKyAgIGlmIChwYyAhPSBhZGRyKQorICAgICB7CisrICAg ICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICppZnVuY19tc3ltID0gbG9va3VwX21pbmltYWxfc3lt Ym9sX2J5X3BjIChwYyk7CiArCi0rCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9u JyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KLSsJICAgICAgIGl0IGlzIGV4cGVjdGVk IHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAgICAgIFRZUEVfTk9U X0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBF LgotKwkgICAgICAgKi8KLSsJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUp Ci0rCQkmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJh bWVzICgpKQotKwkgICAgICBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKLSsJICAgICAgIChUWVBF X1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xp c3QsCi0rCQlUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9s b2NsaXN0LnR5cGUsCi0rCQkmYWRkcik7Ci0rCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlw ZSkgPSBhZGRyOwotKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRl LmtpbmQKLSsJICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkgIH0KLSsJICBi cmVhazsKLSsJfQorICAgICAgIC8qIEluIHRoaXMgY2FzZSwgYXNzdW1lIHdlIGhhdmUgYSBjb2Rl IHN5bWJvbCBpbnN0ZWFkIG9mCisgCSBhIGRhdGEgc3ltYm9sLiAgKi8KKy0gICAgICB0eXBlID0g bXN0X3RleHQ7CiArCi0rICAgICAgLyogQ29udmVydCBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNf Q09VTlQgaW50byBhIHJlZ3VsYXIgYm91bmQuICAqLwotKyAgICAgIGlmIChUWVBFX1JBTkdFX0hJ R0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSkKKysgICAgICBpZiAoaWZ1bmNfbXN5bSAhPSBO VUxMICYmIE1TWU1CT0xfVFlQRSAoaWZ1bmNfbXN5bSkgPT0gbXN0X3RleHRfZ251X2lmdW5jCisr CSAgJiYgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGlmdW5jX21zeW0pID09IHBjKQogKwl7Ci0rCSAg VFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgPSBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpCi0r CQkJCSAgICAgICArIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpIC0gMTsKLSsJICBUWVBFX1JB TkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSA9IDA7CisrCSAgLyogQSBmdW5jdGlv biBkZXNjcmlwdG9yIGhhcyBiZWVuIHJlc29sdmVkIGJ1dCBQQyBpcyBzdGlsbCBpbiB0aGUKKysJ ICAgICBnbnUtaWZ1bmMgcmVzb2x2ZXIgYm9keSAoc3VjaCBhcyBiZWNhdXNlIGluZmVyaW9yIGRv ZXMgbm90IHJ1biB0bworKwkgICAgIGJlIGFibGUgdG8gY2FsbCBpdCkuICAqLworKwkgIHR5cGUg PSBtc3RfdGV4dF9nbnVfaWZ1bmM7CiArCX0KKysgICAgICBlbHNlCisrCXR5cGUgPSBtc3RfdGV4 dDsKKyAgICAgICBzZWN0aW9uID0gTlVMTDsKKyAgICAgICBhZGRyID0gcGM7CiAgICAgIH0KK0BA IC01MjEsNiArNTMzLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9zeW1i b2wgKm1zeW1ib2wpCisgICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9i amZpbGUpLT5ub2RlYnVnX3RleHRfc3ltYm9sKTsKKyAgICAgICBicmVhazsKICAKLSAgIC8qIENv cHkgcG9pbnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLwotICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpKQotICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5 X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlLCAKLS0JCQkgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwKLS0JCQkgICBjb3BpZWRfdHlwZXMpOwotKyAgICAgIGNvcHlfdHlwZV9yZWN1cnNpdmVfMSAo b2JqZmlsZSwgCi0rCQkJICAgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJCQkgICAgIGNv cGllZF90eXBlcyk7Ci0gICBpZiAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSkKLSAgICAgVFlQ RV9WUFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5cGVfcmVjdXJzaXZl IChvYmpmaWxlLAotLQkJCSAgIFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksCi0tCQkJICAgY29w aWVkX3R5cGVzKTsKLSsgICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsCi0rCQkJ ICAgICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLAotKwkJCSAgICAgY29waWVkX3R5cGVzKTsK LSAgIC8qIE1heWJlIGNvcHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4KLSAKLSAgICAgIE5PVEUg ZHJvdy8yMDA1LTEyLTA5OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNwZWNpZmljIGJpdHMgbGlr ZQotQEAgLTMxMzAsNiArMzQ5NiwxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKLSAgIHJldHVybiBuZXdfdHlwZTsKLSB9Ci0gCi0rLyogUmVjdXJzaXZl bHkgY29weSAoZGVlcCBjb3B5KSBUWVBFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVz aW5nCi0rICAgbWFsbG9jLCBhIHNhdmVkIHR5cGUgaWYgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQg VFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwKLSsgICBvciBUWVBFIGlmIGl0IGlzIG5vdCBhc3Nv Y2lhdGVkIHdpdGggT0JKRklMRS4gICovCisrICAgIGNhc2UgbXN0X3RleHRfZ251X2lmdW5jOgor KyAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKQorKwkJCQkJ ICAgICAgIC0+bm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2wpOworKyAgICAgIGJyZWFrOwog KwotK3N0cnVjdCB0eXBlICoKLStjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlw ZSwKLSsJCSAgICAgaHRhYl90IGNvcGllZF90eXBlcykKLSt7Ci0rICByZXR1cm4gY29weV90eXBl X3JlY3Vyc2l2ZV8xIChUWVBFX09CSkZJTEUgKHR5cGUpLCB0eXBlLCBjb3BpZWRfdHlwZXMpOwot K30KKyAgICAgY2FzZSBtc3RfZGF0YToKKyAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgorICAgICBj YXNlIG1zdF9ic3M6CitAQCAtNTI4LDYgKzU0NSwxMCBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3Ry dWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQorICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAo b2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z19kYXRhX3N5bWJvbCk7CisgICAgICAgYnJl YWs7CisgCisrICAgIGNhc2UgbXN0X3Nsb3RfZ290X3BsdDoKKysgICAgICB3cml0ZV9leHBfZWx0 X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfZ290X3BsdF9zeW1ib2wpOwor KyAgICAgIGJyZWFrOwogKwotIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNl cHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQotICAgIHR5cGVzIGFyZSBub3QgcHJlc2Vy dmVkLgotICAgIAotQEAgLTMxNTIsNiArMzUyOSwyMTEgQEAgY29weV90eXBlIChjb25zdCBzdHJ1 Y3QgdHlwZSAqdHlwZSkKLSAgIHJldHVybiBuZXdfdHlwZTsKKyAgICAgZGVmYXVsdDoKKyAgICAg ICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdW5r bm93bl9zeW1ib2wpOworICAgICAgIGJyZWFrOworQEAgLTE0MTIsNiArMTQzMyw3IEBAIHBhcnNl cl9mcHJpbnRmIChGSUxFICp4LCBjb25zdCBjaGFyICp5LCAuLi4pCisgCisgaW50Cisgb3BlcmF0 b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisrCQkJ IGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKKyAJCQkg aW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJCQkgICAg ICB2b2lkICpkYXRhKSwKKyAJCQkgdm9pZCAqZGF0YSkKK0BAIC0xNDUzLDcgKzE0NzUsNyBAQCBv cGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywK KyAJICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZWx0c1twb3MgKyAyICsgYXJnXS50eXBlOworIAkg ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGUpOworIAorLQkg ICAgaWYgKG9iamZpbGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKKysJICAg IGlmIChvYmpmaWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUs IGRhdGEpKQorIAkgICAgICByZXR1cm4gMTsKKyAJICB9CisgICAgICAgfQorQEAgLTE0NzEsNyAr MTQ5Myw4IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgcG9zLAorIAorIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIHRoZSB2YXJpYWJsZSBpdHNl bGYgaXMgcGxhY2VkLgorIAkgICBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJvbCkgbWF5IGJlIE5V TEwuICAqLworLQlpZiAoKCpvYmpmaWxlX2Z1bmMpIChTWU1CT0xfU1lNVEFCIChzeW1ib2wpLT5v YmpmaWxlLCBkYXRhKSkKKysJaWYgKG9iamZpbGVfZnVuYworKwkgICAgJiYgKCpvYmpmaWxlX2Z1 bmMpIChTWU1CT0xfU1lNVEFCIChzeW1ib2wpLT5vYmpmaWxlLCBkYXRhKSkKKyAJICByZXR1cm4g MTsKKyAKKyAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSBpcyBwbGFjZWQgdGhlIGNvZGUgdG91Y2hp bmcgdGhlIHZhcmlhYmxlLiAgKi8KK0BAIC0xNDg0LDI0ICsxNTA3LDI3IEBAIG9wZXJhdG9yX2No ZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorIAorICAgLyog SW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBhbmQgT0JKRklMRSBpZiB0aGV5IHdlcmUgc2V0IGFz IG5vbi1OVUxMLiAgKi8KKyAKKy0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkKKysg IGlmICh0eXBlICYmIHR5cGVfZnVuYyAmJiAoKnR5cGVfZnVuYykgKHR5cGUsIGRhdGEpKQorKyAg ICByZXR1cm4gMTsKKysgIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkgJiYgb2JqZmls ZV9mdW5jCisgICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJTEUgKHR5cGUpLCBk YXRhKSkKKyAgICAgcmV0dXJuIDE7CistICBpZiAob2JqZmlsZSAmJiAoKm9iamZpbGVfZnVuYykg KG9iamZpbGUsIGRhdGEpKQorKyAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9mdW5jICYmICgqb2Jq ZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisgICAgIHJldHVybiAxOworIAorICAgcmV0dXJu IDA7CiAgfQogIAotKy8qIENhbGxiYWNrIHR5cGUgZm9yIG1haW5fdHlwZV9jcmF3bC4gICovCi0r dHlwZWRlZiBpbnQgKCptYWluX3R5cGVfY3Jhd2xfaXRlcikgKHN0cnVjdCB0eXBlICp0eXBlLCB2 b2lkICpkYXRhKTsKLSsKLSsjaWYgMAotKwotKy8qIEFsbG9jYXRlIGEgaGFzaCB0YWJsZSB3aGlj aCBpcyB1c2VkIHdoZW4gZnJlZWluZyBhIHN0cnVjdCB0eXBlLiAgKi8KLSsKLStzdGF0aWMgaHRh Yl90Ci0rY3JlYXRlX2RlbGV0ZWRfdHlwZXNfaGFzaCAodm9pZCkKLSt7Ci0rICByZXR1cm4gaHRh Yl9jcmVhdGUgKDEsIGh0YWJfaGFzaF9wb2ludGVyLCBodGFiX2VxX3BvaW50ZXIsIE5VTEwpOwor LS8qIENhbGwgT0JKRklMRV9GVU5DIGZvciBhbnkgVFlQRSBhbmQgT0JKRklMRSBmb3VuZCBiZWlu ZyByZWZlcmVuY2VkIGJ5IEVYUC4KKy0gICBUaGUgZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxsZWQg d2l0aCBOVUxMIE9CSkZJTEUuICBGdW5jdGlvbnMgZ2V0IHBhc3NlZCBhbgorLSAgIGFyYml0cmFy eSBjYWxsZXIgc3VwcGxpZWQgREFUQSBwb2ludGVyLiAgSWYgYW55IG9mIHRoZSBmdW5jdGlvbnMg cmV0dXJucworLSAgIG5vbi16ZXJvIHZhbHVlIHRoZW4gKGFueSBvdGhlcikgbm9uLXplcm8gdmFs dWUgaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8KKy0gICB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNl IHplcm8gaXMgcmV0dXJuZWQgYWZ0ZXIgaXRlcmF0aW5nIHRocm91Z2ggd2hvbGUgRVhQLgorLSAg ICovCisrLyogQ2FsbCBUWVBFX0ZVTkMgYW5kIE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5k IE9CSkZJTEUgZm91bmQgYmVpbmcKKysgICByZWZlcmVuY2VkIGJ5IEVYUC4gIFRoZSBmdW5jdGlv bnMgYXJlIG5ldmVyIGNhbGxlZCB3aXRoIE5VTEwgVFlQRSBvciBOVUxMCisrICAgT0JKRklMRS4g IEZ1bmN0aW9ucyBnZXQgcGFzc2VkIGFuIGFyYml0cmFyeSBjYWxsZXIgc3VwcGxpZWQgREFUQSBw b2ludGVyLgorKyAgIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVybnMgbm9uLXplcm8gdmFs dWUgdGhlbiAoYW55IG90aGVyKSBub24temVybworKyAgIHZhbHVlIGlzIGltbWVkaWF0ZWx5IHJl dHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2UgemVybyBpcyByZXR1cm5lZAorKyAgIGFm dGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4gICovCisgCisgc3RhdGljIGludAorIGV4 cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorKwkgICAgIGludCAoKnR5cGVfZnVu YykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKKyAJICAgICBpbnQgKCpvYmpmaWxl X2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCisgCSAgICAgdm9p ZCAqZGF0YSkKKyB7CitAQCAtMTUxNiw3ICsxNTQyLDkgQEAgZXhwX2l0ZXJhdGUgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsCisgCisgICAgICAgcG9zID0gZW5kcG9zIC0gb3BsZW47CisgICAgICAg aWYgKGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfZXhwX2Rlc2MtPm9wZXJhdG9yX2NoZWNrIChleHAs IHBvcywKKy0JCQkJCQkJICAgb2JqZmlsZV9mdW5jLCBkYXRhKSkKKysJCQkJCQkJICAgdHlwZV9m dW5jLAorKwkJCQkJCQkgICBvYmpmaWxlX2Z1bmMsCisrCQkJCQkJCSAgIGRhdGEpKQorIAlyZXR1 cm4gMTsKKyAKKyAgICAgICBlbmRwb3MgPSBwb3M7CitAQCAtMTU0Nyw3ICsxNTc1LDI2IEBAIGV4 cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKQorIHsKKyAgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZp bGVfYmFja2xpbmsgPT0gTlVMTCk7CisgCistICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgZXhw X3VzZXNfb2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKKysgIHJldHVybiBleHBfaXRlcmF0ZSAoZXhw LCBOVUxMLCBleHBfdXNlc19vYmpmaWxlX2l0ZXIsIG9iamZpbGUpOwogK30KICsKLSsjZW5kaWYK LSsKLSsvKiBJdGVyYXRlIGFsbCBtYWluX3R5cGUgc3RydWN0dXJlcyByZWFjaGFibGUgdGhyb3Vn aCBhbnkgYHN0cnVjdCB0eXBlIConIGZyb20KLSsgICBUWVBFLiAgSVRFUiB3aWxsIGJlIGNhbGxl ZCBvbmx5IGZvciBvbmUgdHlwZSBvZiBlYWNoIG1haW5fdHlwZSwgdXNlCi0rICAgVFlQRV9DSEFJ TiB0cmF2ZXJzYWwgdG8gZmluZCBhbGwgdGhlIHR5cGUgaW5zdGFuY2VzLiAgSVRFUiBpcyBiZWlu ZyBjYWxsZWQKLSsgICBmb3IgZWFjaCBtYWluX3R5cGUgZm91bmQuICBJVEVSIHJldHVybnMgbm9u LXplcm8gaWYgbWFpbl90eXBlX2NyYXdsIHNob3VsZAotKyAgIGRlcHRoLWZpcnN0IGVudGVyIHRo ZSBzcGVjaWZpYyB0eXBlLiAgSVRFUiBtdXN0IHByb3ZpZGUgc29tZSBkZXRlY3Rpb24gZm9yCi0r ICAgcmVlbnRlcmluZyB0aGUgc2FtZSBtYWluX3R5cGUgYXMgdGhpcyBmdW5jdGlvbiB3b3VsZCBv dGhlcndpc2UgZW5kbGVzc2x5Ci0rICAgbG9vcC4gICovCisrLyogSGVscGVyIGZvciBleHBfdHlw ZXNfbWFya191c2VkLiAgKi8KICsKLStzdGF0aWMgdm9pZAotK21haW5fdHlwZV9jcmF3bCAoc3Ry dWN0IHR5cGUgKnR5cGUsIG1haW5fdHlwZV9jcmF3bF9pdGVyIGl0ZXIsIHZvaWQgKmRhdGEpCisr c3RhdGljIGludAorK2V4cF90eXBlc19tYXJrX3VzZWRfaXRlciAoc3RydWN0IHR5cGUgKnR5cGUs IHZvaWQgKnVudXNlZCkKICt7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVyOwotKyAgaW50IGk7 Ci0rCi0rICBpZiAoIXR5cGUpCi0rICAgIHJldHVybjsKKysgIHR5cGVfbWFya191c2VkICh0eXBl KTsKICsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCk7CisrICAv KiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KKysgIHJldHVybiAwOworK30KICsKLSsgIC8q IGBzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUnIGhhbmRsaW5nIGlzIHVuc3VwcG9ydGVkIGJ5IHRo aXMgZnVuY3Rpb24uICAqLwotKyAgZ2RiX2Fzc2VydCAoKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQ RV9DT0RFX1NUUlVDVAotKwkgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVf VU5JT04pCi0rCSAgICAgIHx8ICFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkpOworKy8qIENhbGwg dHlwZV9tYXJrX3VzZWQgZm9yIGFueSB0eXBlIGNvbnRhaW5lZCBpbiBFWFAuICAqLwogKwotKyAg aWYgKCEoKml0ZXIpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuOworK3ZvaWQKKytleHBfdHlw ZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQorK3sKKysgIGV4cF9pdGVyYXRl IChleHAsIGV4cF90eXBlc19tYXJrX3VzZWRfaXRlciwgTlVMTCwgTlVMTCk7CisgfQorIAorIHZv aWQKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJzZXItZGVmcy5oCitp bmRleCBiYjc5YWUxLi5mYmJkNjAwIDEwMDY0NAorLS0tIGEvZ2RiL3BhcnNlci1kZWZzLmgKKysr KyBiL2dkYi9wYXJzZXItZGVmcy5oCitAQCAtMTk0LDYgKzE5NCw4IEBAIGV4dGVybiB2b2lkIG9w ZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LCBp bnQgKiwKKyAJCQkJICAgICAgaW50ICopOworIAorIGV4dGVybiBpbnQgb3BlcmF0b3JfY2hlY2tf c3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisrCQkJCSAgICBpbnQg KCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCQkJCQkgICAgICB2b2lkICpkYXRh KSwKKyAJCQkJICAgIGludCAoKm9iamZpbGVfZnVuYykKKyAJCQkJICAgICAgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKKyAJCQkJICAgIHZvaWQgKmRhdGEpOworQEAgLTI4 NSw2ICsyODcsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKKyAgICAgICAgdmFsdWUgc2hvdWxk IGJlIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2UgemVybwor ICAgICAgICBzaG91bGQgYmUgcmV0dXJuZWQuICAqLworICAgICBpbnQgKCpvcGVyYXRvcl9jaGVj aykgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisrCQkJICAgaW50ICgqdHlwZV9m dW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAorIAkJCSAgIGludCAoKm9iamZp bGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkJCXZvaWQgKmRhdGEpLAor IAkJCSAgIHZvaWQgKmRhdGEpOworQEAgLTMyMyw0ICszMjYsOCBAQCBleHRlcm4gdm9pZCBwYXJz ZXJfZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLikgQVRUUklCVVRFX1BSSU5URiAo MiwgMyk7CisgCisgZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCisrZXh0ZXJuIGludCBleHBfdXNl c19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSk7CiArCi0rICAvKiBJdGVyYXRlIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMgb2YgdGhpcyBtYWlu X3R5cGUuICAqLwotKyAgdHlwZV9pdGVyID0gdHlwZTsKLSsgIGRvCi0rICAgIHsKLSsgICAgICBn ZGJfYXNzZXJ0IChUWVBFX01BSU5fVFlQRSAodHlwZV9pdGVyKSA9PSBUWVBFX01BSU5fVFlQRSAo dHlwZSkpOworK2V4dGVybiB2b2lkIGV4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNz aW9uICpleHApOwogKwotKyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9QT0lOVEVSX1RZUEUg KHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsgICAgICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfUkVGRVJF TkNFX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKKyAjZW5kaWYgLyogUEFSU0VSX0RFRlNfSCAq LworZGlmZiAtLWdpdCBhL2dkYi9wcGMtbGludXgtbmF0LmMgYi9nZGIvcHBjLWxpbnV4LW5hdC5j CitpbmRleCBlOGQ5NmY2Li44YmYwOTdjIDEwMDY0NAorLS0tIGEvZ2RiL3BwYy1saW51eC1uYXQu YworKysrIGIvZ2RiL3BwYy1saW51eC1uYXQuYworQEAgLTIwMTAsNiArMjAxMCwyNCBAQCBwcGNf bGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncs CisgICByZXR1cm4gcmV0OworIH0KKyAKKysvKiBTZWUgdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50 cy4gIERvIG5vdCB1c2Ugd3JhcHBlcgorKyAgIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCBh cyBpdCB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVyIGNhY2hlCisrICAgKHNhdmVkX2RhYnJfdmFs dWUpLiAgKi8KICsKLSsgICAgICB0eXBlX2l0ZXIgPSBUWVBFX0NIQUlOICh0eXBlX2l0ZXIpOwot KyAgICB9Ci0rICB3aGlsZSAodHlwZV9pdGVyICE9IHR5cGUpOworK3N0YXRpYyBpbnQKKytwcGNf bGludXhfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorK3sKKysgIHBpZF90IHRpZDsKICsKLSsg IGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpKyspCi0rICAgIG1haW5fdHlw ZV9jcmF3bCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgaXRlciwgZGF0YSk7CisrICB0aWQg PSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQ SURHRVQgKGluZmVyaW9yX3B0aWQpOwogKwotKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwgaXRlciwgZGF0YSk7Ci0rICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfVlBU Ul9CQVNFVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOworKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NF VF9ERUJVR1JFRywgdGlkLCBOVUxMLCBOVUxMKSA8IDApCisrICAgIHJldHVybiAtMTsKKysgIHJl dHVybiAwOwogK30KICsKLSsvKiBBIGhlbHBlciBmb3IgZGVsZXRlX3R5cGUgd2hpY2ggZGVsZXRl cyBhIG1haW5fdHlwZSBhbmQgdGhlIHRoaW5ncyB0byB3aGljaAotKyAgIGl0IHJlZmVycy4gIFRZ UEUgaXMgYSB0eXBlIHdob3NlIG1haW5fdHlwZSB3ZSB3aXNoIHRvIGRlc3Ryb3kuICAqLworIHN0 YXRpYyB2b2lkCisgcHBjX2xpbnV4X25ld190aHJlYWQgKHB0aWRfdCBwdGlkKQorIHsKK0BAIC0y MzQ5LDYgKzIzNjcsNyBAQCBfaW5pdGlhbGl6ZV9wcGNfbGludXhfbmF0ICh2b2lkKQorICAgdC0+ dG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50ID0gcHBjX2xpbnV4X3JlZ2lvbl9va19mb3Jf aHdfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX2luc2VydF93YXRjaHBvaW50ID0gcHBjX2xpbnV4X2lu c2VydF93YXRjaHBvaW50OworICAgdC0+dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBwcGNfbGludXhf cmVtb3ZlX3dhdGNocG9pbnQ7CisrICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBwcGNfbGlu dXhfZGV0YWNoX3dhdGNocG9pbnRzOworICAgdC0+dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0g cHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3N0b3BwZWRfZGF0YV9h ZGRyZXNzID0gcHBjX2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworICAgdC0+dG9fd2F0Y2hw b2ludF9hZGRyX3dpdGhpbl9yYW5nZSA9IHBwY19saW51eF93YXRjaHBvaW50X2FkZHJfd2l0aGlu X3JhbmdlOworZGlmZiAtLWdpdCBhL2dkYi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKK2lu ZGV4IDVmZmEwOTkuLjU4ZDljNzkgMTAwNjQ0CistLS0gYS9nZGIvcHJpbnRjbWQuYworKysrIGIv Z2RiL3ByaW50Y21kLmMKK0BAIC05NzEsNiArOTcxLDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hh ciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKKyAgIGVsc2UKKyAgICAgdmFsID0g YWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDApOworIAorKyAgLyogRG8gbm90IHRyeSB0byBPQkpFQ1Rf QUREUkVTU19TRVQgaGVyZSBhbnl0aGluZy4gIFdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZQorKyAg ICAgc291cmNlIHZhcmlhYmxlIGJhc2UgYWRkcmVzc2VzIGFzIGZvdW5kIGJ5IFJFQURfVkFSX1ZB TFVFLiAgVGhlIHZhbHVlIGhlcmUKKysgICAgIGNhbiBiZSBhbHJlYWR5IGEgY2FsY3VsYXRlZCBl eHByZXNzaW9uIGFkZHJlc3MgaW5hcHByb3ByaWF0ZSBmb3IKKysgICAgIERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3MuICAqLwogKwotK3N0YXRpYyB2b2lkCi0rZGVsZXRlX21haW5fdHlwZSAoc3Ry dWN0IHR5cGUgKnR5cGUpCi0rewotKyAgaW50IGk7CisgICBpZiAodm9pZHByaW50IHx8ICh2YWwg JiYgdmFsdWVfdHlwZSAodmFsKSAmJgorIAkJICAgIFRZUEVfQ09ERSAodmFsdWVfdHlwZSAodmFs KSkgIT0gVFlQRV9DT0RFX1ZPSUQpKQorICAgICB7CitAQCAtMTQ3MSw2ICsxNDc2LDIyIEBAIHhf Y29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJvbV90dHkpCisgCXNldF9pbnRlcm5hbHZhciAobG9v a3VwX2ludGVybmFsdmFyICgiX18iKSwgbGFzdF9leGFtaW5lX3ZhbHVlKTsKKyAgICAgfQorIH0K ICsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKTsKLSsgIGdkYl9hc3Nl cnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCk7CisrLyogQ2FsbCB0eXBlX21hcmtfdXNl ZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICov CiArCi0rICB4ZnJlZSAoVFlQRV9OQU1FICh0eXBlKSk7Ci0rICB4ZnJlZSAoVFlQRV9UQUdfTkFN RSAodHlwZSkpOworK3N0YXRpYyB2b2lkCisrcHJpbnRfdHlwZXNfbWFya191c2VkICh2b2lkKQor K3sKKysgIHN0cnVjdCBkaXNwbGF5ICpkOwogKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJ RUxEUyAodHlwZSk7ICsraSkKLSsgICAgewotKyAgICAgIHhmcmVlIChUWVBFX0ZJRUxEX05BTUUg KHR5cGUsIGkpKTsKKysgIGlmIChsYXN0X2V4YW1pbmVfdmFsdWUpCisrICAgIHR5cGVfbWFya191 c2VkICh2YWx1ZV90eXBlIChsYXN0X2V4YW1pbmVfdmFsdWUpKTsKICsKLSsgICAgICBpZiAoVFlQ RV9GSUVMRF9MT0NfS0lORCAodHlwZSwgaSkgPT0gRklFTERfTE9DX0tJTkRfUEhZU05BTUUpCi0r CXhmcmVlIChUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSAodHlwZSwgaSkpOwotKyAgICB9Ci0r ICB4ZnJlZSAoVFlQRV9GSUVMRFMgKHR5cGUpKTsKKysgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47 IGQ7IGQgPSBkLT5uZXh0KQorKyAgICBpZiAoZC0+ZXhwKQorKyAgICAgIGV4cF90eXBlc19tYXJr X3VzZWQgKGQtPmV4cCk7CisrfQogKwotKyAgZ2RiX2Fzc2VydCAoIUhBVkVfQ1BMVVNfU1RSVUNU ICh0eXBlKSk7CisgDAorIAorIC8qIEFkZCBhbiBleHByZXNzaW9uIHRvIHRoZSBhdXRvLWRpc3Bs YXkgY2hhaW4uCitAQCAtMjg2OSw0ICsyODkwLDYgQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2Ug ZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCisgICBhZGRf Y29tICgiZXZhbCIsIG5vX2NsYXNzLCBldmFsX2NvbW1hbmQsIF8oIlwKKyBDb252ZXJ0IFwicHJp bnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJnMywgLi4uLCBhcmduIHRvXG5cCisg YSBjb21tYW5kIGxpbmUsIGFuZCBjYWxsIGl0LiIpKTsKICsKLSsgIHhmcmVlIChUWVBFX01BSU5f VFlQRSAodHlwZSkpOwotK30KKysgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHByaW50X3R5 cGVzX21hcmtfdXNlZCk7CisgfQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdHlwZS5jIGIv Z2RiL3B5dGhvbi9weS10eXBlLmMKK2luZGV4IGI5MDEyNTUuLjRmZjE4ZTUgMTAwNjQ0CistLS0g YS9nZGIvcHl0aG9uL3B5LXR5cGUuYworKysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKK0BAIC0y Nyw2ICsyNyw4IEBACisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1ZGUgIm9iamZpbGVz LmgiCisgI2luY2x1ZGUgImxhbmd1YWdlLmgiCisrI2luY2x1ZGUgIm9ic2VydmVyLmgiCisrI2lu Y2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAKKyB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0 CisgeworQEAgLTM1LDExICszNywxNyBAQCB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0 CisgCisgICAvKiBJZiBhIFR5cGUgb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmpmaWxl LCBpdCBpcyBrZXB0IG9uIGEKKyAgICAgIGRvdWJseS1saW5rZWQgbGlzdCwgcm9vdGVkIGluIHRo ZSBvYmpmaWxlLiAgVGhpcyBsZXRzIHVzIGNvcHkgdGhlCistICAgICB1bmRlcmx5aW5nIHN0cnVj dCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4gICovCisrICAgICB1bmRlcmx5aW5n IHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4KICsKLSsvKiBEZWxldGUg YWxsIHRoZSBpbnN0YW5jZXMgb24gVFlQRV9DSEFJTiBvZiBUWVBFLCBpbmNsdWRpbmcgdGhlaXIg cmVmZXJlbmNlZAotKyAgIG1haW5fdHlwZS4gIFRZUEUgbXVzdCBiZSBhIHJlY2xhaW1hYmxlIHR5 cGUgLSBuZWl0aGVyIHBlcm1hbmVudCBub3Igb2JqZmlsZQotKyAgIGFzc29jaWF0ZWQuICAqLwor KyAgICAgV2l0aCBOVUxMIG9iamZpbGUgVHlwZSBzdGlsbCBjYW4gYmUgZG91Ymx5LWxpbmtlZCBp biB0aGUgbGlzdAorKyAgICAgUFlUWV9PQkpFQ1RTX0RJU0NBUkRBQkxFLiAgKi8KKyAgIHN0cnVj dCBweXR5X3R5cGVfb2JqZWN0ICpwcmV2OworICAgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QgKm5l eHQ7CisgfSB0eXBlX29iamVjdDsKKyAKKysvKiBGaXJzdCBlbGVtZW50IG9mIGEgZG91Ymx5LWxp bmtlZCBsaXN0IG9mIFRZUEVfRElTQ0FSREFCTEUgVHlwZXMuICAqLworK3N0YXRpYyB0eXBlX29i amVjdCAqcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlOwogKworIHN0YXRpYyBQeVR5cGVPYmplY3Qg dHlwZV9vYmplY3RfdHlwZTsKKyAKKyAvKiBBIEZpZWxkIG9iamVjdC4gICovCitAQCAtNjE4LDgg KzYyNiw1OSBAQCB0eXB5X3N0ciAoUHlPYmplY3QgKnNlbGYpCisgCisgDAorIAorKy8qIEtleSBh c3NvY2lhdGVkIHdpdGggZWFjaCBvYmpmaWxlIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBlbGVtZW50 IG9mCisrICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb2YgVHlwZXMgYXNzb2NpYXRlZCB3aXRoIHRo aXMgb2JqZmlsZS4gICovCisgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKnR5cHlf b2JqZmlsZV9kYXRhX2tleTsKKyAKKysvKiBMaW5rIFRZUEVfT0JKIHRvIGl0cyBhcHByb3ByaWF0 ZSBsaXN0LiAgRWl0aGVyIHRvIGl0cyBvYmpmaWxlIGFzc29jaWF0ZWQgb25lCisrICAgb3IgYXQg bGVhc3QgdG8gdGhlIGdsb2JhbCBsaXN0IGZvciBUWVBFX0RJU0NBUkRBQkxFIFR5cGVzLiAgUGVy bWFuZW50IHR5cGVzCisrICAgZG8gbm90IGdldCBsaW5rZWQgYW55d2hlcmUuICAqLwogK3N0YXRp YyB2b2lkCi0rZGVsZXRlX3R5cGVfY2hhaW4gKHN0cnVjdCB0eXBlICp0eXBlKQorK3R5cHlfbGlu ayAodHlwZV9vYmplY3QgKnR5cGVfb2JqKQogK3sKLSsgIHN0cnVjdCB0eXBlICp0eXBlX2l0ZXIs ICp0eXBlX2l0ZXJfdG9fZnJlZTsKLSsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FSREFCTEUg KHR5cGUpKTsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCk7Cisr ICB0eXBlX29iai0+cHJldiA9IE5VTEw7CiArCi0rICBkZWxldGVfbWFpbl90eXBlICh0eXBlKTsK KysgIGlmICh0eXBlX29iai0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKSkK KysgICAgeworKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0 eXBlX29iai0+dHlwZSk7CiArCi0rICB0eXBlX2l0ZXIgPSB0eXBlOwotKyAgZG8KKysgICAgICB0 eXBlX29iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFf a2V5KTsKKysgICAgICBpZiAodHlwZV9vYmotPm5leHQpCisrCXR5cGVfb2JqLT5uZXh0LT5wcmV2 ID0gdHlwZV9vYmo7CisrICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpm aWxlX2RhdGFfa2V5LCB0eXBlX29iaik7CisrICAgIH0KKysgIGVsc2UgaWYgKHR5cGVfb2JqLT50 eXBlICYmIFRZUEVfRElTQ0FSREFCTEUgKHR5cGVfb2JqLT50eXBlKSkKICsgICAgewotKyAgICAg IHR5cGVfaXRlcl90b19mcmVlID0gdHlwZV9pdGVyOwotKyAgICAgIHR5cGVfaXRlciA9IFRZUEVf Q0hBSU4gKHR5cGVfaXRlcik7Ci0rICAgICAgeGZyZWUgKHR5cGVfaXRlcl90b19mcmVlKTsKKysg ICAgICB0eXBlX29iai0+bmV4dCA9IHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKKysgICAgICBp ZiAodHlwZV9vYmotPm5leHQpCisrCXR5cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmo7Cisr ICAgICAgcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID0gdHlwZV9vYmo7CiArICAgIH0KLSsgIHdo aWxlICh0eXBlX2l0ZXIgIT0gdHlwZSk7CisrICBlbHNlCisrICAgIHR5cGVfb2JqLT5uZXh0ID0g TlVMTDsKICt9CiArCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJs ZS4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK3R5cGVfZGlzY2FyZGFibGVfaGFzaCAoY29u c3Qgdm9pZCAqcCkKKysvKiBVbmxpbmsgVFlQRV9PQkogZnJvbSBpdHMgY3VycmVudCBsaXN0LiAg UGVybWFuZW50IHR5cGVzIGFyZSBub3QgbGlua2VkCisrICAgYW55d2hlcmUgYW5kIHRoaXMgZnVu Y3Rpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGVtLiAgKi8KKytzdGF0aWMgdm9pZAorK3R5cHlfdW5s aW5rICh0eXBlX29iamVjdCAqdHlwZV9vYmopCiArewotKyAgY29uc3Qgc3RydWN0IHR5cGUgKnR5 cGUgPSBwOworKyAgaWYgKHR5cGVfb2JqLT5wcmV2KQorKyAgICB0eXBlX29iai0+cHJldi0+bmV4 dCA9IHR5cGVfb2JqLT5uZXh0OworKyAgZWxzZSBpZiAodHlwZV9vYmotPnR5cGUgJiYgVFlQRV9P QkpGSUxFICh0eXBlX29iai0+dHlwZSkpCisrICAgIHsKKysgICAgICAvKiBNdXN0IHJlc2V0IGhl YWQgb2YgbGlzdC4gICovCisrICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09C SkZJTEUgKHR5cGVfb2JqLT50eXBlKTsKICsKLSsgIHJldHVybiBodGFiX2hhc2hfcG9pbnRlciAo VFlQRV9NQUlOX1RZUEUgKHR5cGUpKTsKLSt9CisrICAgICAgc2V0X29iamZpbGVfZGF0YSAob2Jq ZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7CisrICAgIH0KKysg IGVsc2UgaWYgKHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9PSB0eXBlX29iaikKKysgICAgcHl0 eV9vYmplY3RzX2Rpc2NhcmRhYmxlID0gdHlwZV9vYmotPm5leHQ7CiArCi0rLyogRXF1YWxpdHkg ZnVuY3Rpb24gZm9yIHR5cGVfZGlzY2FyZGFibGVfdGFibGUuICAqLworKyAgaWYgKHR5cGVfb2Jq LT5uZXh0KQorKyAgICB0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5cGVfb2JqLT5wcmV2OworK30K ICsKLStzdGF0aWMgaW50Ci0rdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29uc3Qgdm9pZCAqYSwg Y29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVmdCA9IGE7Ci0rICBj b25zdCBzdHJ1Y3QgdHlwZSAqcmlnaHQgPSBiOwotKwotKyAgcmV0dXJuIFRZUEVfTUFJTl9UWVBF IChsZWZ0KSA9PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOwotK30KLSsKLSsvKiBBIGhlbHBlciBm b3IgdHlwZV9tYXJrX3VzZWQuICAqLwotKwotK3N0YXRpYyBpbnQKLSt0eXBlX21hcmtfdXNlZF9j cmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKLSt7Ci0rICBpZiAoIVRZUEVf RElTQ0FSREFCTEUgKHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChUWVBFX0RJU0NB UkRBQkxFX0FHRSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCkKLSsgICAg cmV0dXJuIDA7Ci0rCi0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2Nh cmRhYmxlX2FnZV9jdXJyZW50OwotKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICov Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogTWFyayBUWVBFIGFuZCBpdHMgY29ubmVjdGVkIHR5 cGVzIGFzIHVzZWQgaW4gdGhpcyBmcmVlX2FsbF90eXBlcyBwYXNzLiAgKi8KLSsKLSt2b2lkCi0r dHlwZV9tYXJrX3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGlmICh0eXBlID09IE5V TEwpCi0rICAgIHJldHVybjsKLSsKLSsgIGlmICghVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpCi0r ICAgIHJldHVybjsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAodHlwZSwgdHlwZV9tYXJrX3VzZWRf Y3Jhd2wsIE5VTEwpOwotK30KLSsKLSsvKiBBIHRyYXZlcnNlIGNhbGxiYWNrIGZvciB0eXBlX2Rp c2NhcmRhYmxlX3RhYmxlIHdoaWNoIHJlbW92ZXMgYW55Ci0rICAgdHlwZV9kaXNjYXJkYWJsZSB3 aG9zZSByZWZlcmVuY2UgY291bnQgaXMgbm93IHplcm8gKHVudXNlZCBsaW5rKS4gICovCi0rCi0r c3RhdGljIGludAotK3R5cGVfZGlzY2FyZGFibGVfcmVtb3ZlICh2b2lkICoqc2xvdCwgdm9pZCAq dW51c2VkKQotK3sKLSsgIHN0cnVjdCB0eXBlICp0eXBlID0gKnNsb3Q7Ci0rCi0rICBnZGJfYXNz ZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rCi0rICBpZiAoVFlQRV9ESVNDQVJEQUJM RV9BR0UgKHR5cGUpICE9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQpCi0rICAgIHsKLSsg ICAgICBkZWxldGVfdHlwZV9jaGFpbiAodHlwZSk7Ci0rCi0rICAgICAgaHRhYl9jbGVhcl9zbG90 ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCBzbG90KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDE7 Ci0rfQotKwotKy8qIEZyZWUgYWxsIHRoZSByZWNsYWltYWJsZSB0eXBlcyB0aGF0IGhhdmUgYmVl biBhbGxvY2F0ZWQgYW5kIHRoYXQgaGF2ZQotKyAgIGN1cnJlbnRseSB6ZXJvIHJlZmVyZW5jZSBj b3VudGVyLgotKwotKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIGVhY2ggY29tbWFu ZCwgc3VjY2Vzc2Z1bCBvciBub3QuICBVc2UgdGhpcwotKyAgIGNsZWFudXAgb25seSBpbiB0aGUg R0RCIGlkbGUgc3RhdGUgYXMgR0RCIG9ubHkgbWFya3MgdGhvc2UgdHlwZXMgdXNlZCBieQotKyAg IGdsb2JhbGx5IHRyYWNrZWQgb2JqZWN0cyAod2l0aCBubyBhdXRvdmFyaWFibGUgcmVmZXJlbmNl cyB0cmFja2luZykuICAqLwotKwotK3ZvaWQKLStmcmVlX2FsbF90eXBlcyAodm9pZCkKLSt7Ci0r ICAvKiBNYXJrIGEgbmV3IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3ZXJl IHZpc2l0ZWQgYWZ0ZXIgZWFjaAotKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0YWxl IGVudHJpZXMgYWxyZWFkeSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCi0rICAgICB2YWx1ZS4gICov Ci0rICB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50IF49IDE7Ci0rCi0rICBvYnNlcnZlcl9u b3RpZnlfbWFya191c2VkICgpOwotKwotKyAgaHRhYl90cmF2ZXJzZSAodHlwZV9kaXNjYXJkYWJs ZV90YWJsZSwgdHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUsIE5VTEwpOwotK30KKyBzdGF0aWMgdm9p ZAorIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRh dHVtKQorIHsKK0BAIC02MzcsMTIgKzY5NiwxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKKyAgICAgeworICAgICAgIHR5cGVfb2Jq ZWN0ICpuZXh0ID0gb2JqLT5uZXh0OwogIAotIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlh bGl6ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgdHlwZXMuICAqLworLSAgICAgIGh0YWJfZW1wdHkg KGNvcGllZF90eXBlcyk7CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFIChvYmotPnR5 cGUpID09IG9iamZpbGUpOworKyAgICAgIHR5cHlfdW5saW5rIChvYmopOwogIAotQEAgLTM0NzUs NiArNDA1Nyw4IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp Ci0gICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQp OwotICAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCi0gICAgID0gbG9va3VwX3BvaW50 ZXJfdHlwZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lk KSk7Ci0rICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCi0rICAgID0gbG9va3VwX2Z1 bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7CistICAgICAgb2Jq LT50eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgb2JqLT50eXBlLCBjb3BpZWRf dHlwZXMpOworKyAgICAgIG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iai0+dHlw ZSwgY29waWVkX3R5cGVzKTsKICAKLSAgIC8qIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgR0RCIGlu dGVybmFsIGZ1bmN0aW9uLiAgKi8KLSAgIGJ1aWx0aW5fdHlwZS0+aW50ZXJuYWxfZm4KLUBAIC0z NTg4LDYgKzQxNzIsMTEgQEAgb2JqZmlsZV90eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK LSAJCSAiPHRleHQgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+Iiwgb2JqZmlsZSk7Ci0gICBUWVBF X1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2wpCi0gICAgID0g b2JqZmlsZV90eXBlLT5idWlsdGluX2ludDsKLSsgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0 X2dudV9pZnVuY19zeW1ib2wKLSsgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9GVU5DLCAxLCBU WVBFX0ZMQUdfR05VX0lGVU5DLAotKwkJICI8dGV4dCBnbnUtaWZ1bmMgdmFyaWFibGUsIG5vIGRl YnVnIGluZm8+Iiwgb2JqZmlsZSk7Ci0rICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUt Pm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKQotKyAgICA9IG9iamZpbGVfdHlwZS0+bm9k ZWJ1Z190ZXh0X3N5bWJvbDsKLSAgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19kYXRhX3N5bWJvbAot ICAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwKLSAJCSBnZGJhcmNoX2ludF9iaXQgKGdk YmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwgMCwKLUBAIC0zNjQyLDYgKzQyMzEsMTEgQEAgdm9pZAot IF9pbml0aWFsaXplX2dkYnR5cGVzICh2b2lkKQorLSAgICAgIG9iai0+bmV4dCA9IE5VTEw7Cist ICAgICAgb2JqLT5wcmV2ID0gTlVMTDsKKysgICAgICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUg KG9iai0+dHlwZSkgPT0gTlVMTCk7CisrICAgICAgdHlweV9saW5rIChvYmopOworIAorICAgICAg IG9iaiA9IG5leHQ7CisgICAgIH0KK0BAIC02NTMsNDIgKzcxMywyNSBAQCBzYXZlX29iamZpbGVf dHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKKyB9CisgCisgc3Rh dGljIHZvaWQKKy1zZXRfdHlwZSAodHlwZV9vYmplY3QgKm9iaiwgc3RydWN0IHR5cGUgKnR5cGUp CisrdHlweV9kZWFsbG9jIChQeU9iamVjdCAqb2JqKQogIHsKLSAgIGdkYnR5cGVzX2RhdGEgPSBn ZGJhcmNoX2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0IChnZGJ0eXBlc19wb3N0X2luaXQpOwotKwot KyAgdHlwZV9kaXNjYXJkYWJsZV90YWJsZSA9IGh0YWJfY3JlYXRlX2FsbG9jICgyMCwgdHlwZV9k aXNjYXJkYWJsZV9oYXNoLAotKwkJCQkJICAgICB0eXBlX2Rpc2NhcmRhYmxlX2VxdWFsLCBOVUxM LAotKwkJCQkJICAgICB4Y2FsbG9jLCB4ZnJlZSk7CistICBvYmotPnR5cGUgPSB0eXBlOworLSAg b2JqLT5wcmV2ID0gTlVMTDsKKy0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkpCist ICAgIHsKKy0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlw ZSk7CisrICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2JqOworIAor LSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2Rh dGFfa2V5KTsKKy0gICAgICBpZiAob2JqLT5uZXh0KQorLQlvYmotPm5leHQtPnByZXYgPSBvYmo7 CistICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5 LCBvYmopOworLSAgICB9CistICBlbHNlCistICAgIG9iai0+bmV4dCA9IE5VTEw7CisrICB0eXB5 X3VubGluayAodHlwZV9vYmopOwogKwotICAgb2JqZmlsZV90eXBlX2RhdGEgPSByZWdpc3Rlcl9v YmpmaWxlX2RhdGEgKCk7CisrICB0eXBlX29iai0+b2JfdHlwZS0+dHBfZnJlZSAob2JqKTsKKyB9 CiAgCi0gICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIsIG5vX2NsYXNzLCAm b3ZlcmxvYWRfZGVidWcsIF8oIlwKLWRpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuaCBiL2dkYi9n ZGJ0eXBlcy5oCi1pbmRleCA2NDNmYTAzLi5lZmU1NTEyIDEwMDY0NAotLS0tIGEvZ2RiL2dkYnR5 cGVzLmgKLSsrKyBiL2dkYi9nZGJ0eXBlcy5oCi1AQCAtMTM4LDYgKzEzOCw4IEBAIGVudW0gdHlw ZV9jb2RlCisrLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQg ZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCisgc3RhdGljIHZvaWQKKy10eXB5X2RlYWxs b2MgKFB5T2JqZWN0ICpvYmopCisrdHlweV90eXBlc19tYXJrX3VzZWQgKHZvaWQpCisgeworLSAg dHlwZV9vYmplY3QgKnR5cGUgPSAodHlwZV9vYmplY3QgKikgb2JqOworLQorLSAgaWYgKHR5cGUt PnByZXYpCistICAgIHR5cGUtPnByZXYtPm5leHQgPSB0eXBlLT5uZXh0OworLSAgZWxzZSBpZiAo dHlwZS0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpKQorLSAgICB7CistICAgICAg LyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLworLSAgICAgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKTsKKy0KKy0gICAgICBpZiAob2JqZmls ZSkKKy0Jc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0 eXBlLT5uZXh0KTsKKy0gICAgfQorLSAgaWYgKHR5cGUtPm5leHQpCistICAgIHR5cGUtPm5leHQt PnByZXYgPSB0eXBlLT5wcmV2OworKyAgdHlwZV9vYmplY3QgKnR5cGVfb2JqOwogIAotICAgICBU WVBFX0NPREVfREVDRkxPQVQsCQkvKiBEZWNpbWFsIGZsb2F0aW5nIHBvaW50LiAgKi8KKy0gIHR5 cGUtPm9iX3R5cGUtPnRwX2ZyZWUgKHR5cGUpOworKyAgZm9yICh0eXBlX29iaiA9IHB5dHlfb2Jq ZWN0c19kaXNjYXJkYWJsZTsKKysgICAgICAgdHlwZV9vYmogIT0gTlVMTDsKKysgICAgICAgdHlw ZV9vYmogPSB0eXBlX29iai0+bmV4dCkKKysgICAgdHlwZV9tYXJrX3VzZWQgKHR5cGVfb2JqLT50 eXBlKTsKKyB9CiAgCi0rICAgIFRZUEVfQ09ERV9NT0RVTEUsCQkvKiBGb3J0cmFuIG1vZHVsZS4g ICovCi0rCi0gICAgIC8qIEludGVybmFsIGZ1bmN0aW9uIHR5cGUuICAqLwotICAgICBUWVBFX0NP REVfSU5URVJOQUxfRlVOQ1RJT04KLSAgIH07Ci1AQCAtMTcxLDYgKzE3Myw3IEBAIGVudW0gdHlw ZV9mbGFnX3ZhbHVlCi0gICBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UgPSAoMSA8PCAxNSksCi0g ICBUWVBFX0ZMQUdfU1RVQl9TVVBQT1JURUQgPSAoMSA8PCAxNiksCi0gICBUWVBFX0ZMQUdfTk9U VEVYVCA9ICgxIDw8IDE3KSwKLSsgIFRZUEVfRkxBR19HTlVfSUZVTkMgPSAoMSA8PCAxOCksCisg LyogQ3JlYXRlIGEgbmV3IFR5cGUgcmVmZXJyaW5nIHRvIFRZUEUuICAqLworQEAgLTY5OSw3ICs3 NDIsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUpCiAgCi0gICAv KiBVc2VkIGZvciBlcnJvci1jaGVja2luZy4gICovCi0gICBUWVBFX0ZMQUdfTUlOID0gVFlQRV9G TEFHX1VOU0lHTkVECi1AQCAtMjE0LDYgKzIxNywxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxh Z192YWx1ZQorICAgdHlwZV9vYmogPSBQeU9iamVjdF9OZXcgKHR5cGVfb2JqZWN0LCAmdHlwZV9v YmplY3RfdHlwZSk7CisgICBpZiAodHlwZV9vYmopCistICAgIHNldF90eXBlICh0eXBlX29iaiwg dHlwZSk7CisrICAgIHsKKysgICAgICB0eXBlX29iai0+dHlwZSA9IHR5cGU7CisrICAgICAgdHlw eV9saW5rICh0eXBlX29iaik7CisrICAgIH0KICAKLSAjZGVmaW5lIFRZUEVfVEFSR0VUX1NUVUIo dCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ190YXJnZXRfc3R1YikKKyAgIHJldHVybiAoUHlP YmplY3QgKikgdHlwZV9vYmo7CisgfQorQEAgLTc3Myw2ICs4MTksOCBAQCBnZGJweV9pbml0aWFs aXplX3R5cGVzICh2b2lkKQogIAotKy8qIFR5cGUgbmVlZHMgdG8gYmUgZXZhbHVhdGVkIG9uIGVh Y2ggQ0hFQ0tfVFlQRURFRiBhbmQgaXRzIHJlc3VsdHMgbXVzdCBub3QgYmUKLSsgICBzdGlja3ku ICAqLwotKwotKyNkZWZpbmUgVFlQRV9EWU5BTUlDKHQpCQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5m bGFnX2R5bmFtaWMpCisgICBQeV9JTkNSRUYgKCZmaWVsZF9vYmplY3RfdHlwZSk7CisgICBQeU1v ZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJGaWVsZCIsIChQeU9iamVjdCAqKSAmZmllbGRf b2JqZWN0X3R5cGUpOwogKwotIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBj b3JyZXNwb25kaW5nIHR5cGUgaGFkIAotICAqIGEgc3RhdGljIG1vZGlmaWVyLgotICAqIE5vdGU6 IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJzCi1AQCAt MjcxLDYgKzI3OSwxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQorKyAgb2JzZXJ2 ZXJfYXR0YWNoX21hcmtfdXNlZCAodHlweV90eXBlc19tYXJrX3VzZWQpOworIH0KICAKLSAjZGVm aW5lIFRZUEVfTk9UVEVYVCh0KQkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3R0ZXh0KQor IAwKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9nZGIvcHl0aG9uL3B5LXZh bHVlLmMKK2luZGV4IDIwMjQwMjEuLmU4YmUxMmQgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5 LXZhbHVlLmMKKysrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYworQEAgLTI1LDYgKzI1LDcgQEAK KyAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKKyAjaW5jbHVkZSAiZGZwLmgiCisgI2luY2x1ZGUgInZh bHByaW50LmgiCisrI2luY2x1ZGUgIm9ic2VydmVyLmgiCiAgCi0rLyogQ3VycmVudGx5IHVzZWQg b25seSBmb3IgVFlQRV9DT0RFX0ZVTkMgd2hlcmUgc3BlY2lmaWVzIHRoZSByZWFsIGZ1bmN0aW9u Ci0rICAgYWRkcmVzcyBpcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGNhbGwuICBUWVBFX1RB UkdFVF9UWVBFIGRldGVybWluZXMgdGhlCi0rICAgZmluYWwgcmV0dXJuZWQgZnVuY3Rpb24gdHlw ZSB0byBiZSBwcmVzZW50ZWQgdG8gdXNlci4gICovCi0rCi0rI2RlZmluZSBUWVBFX0dOVV9JRlVO Qyh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2dudV9pZnVuYykKLSsKLSAvKiBUeXBlIG93 bmVyLiAgSWYgVFlQRV9PQkpGSUxFX09XTkVEIGlzIHRydWUsIHRoZSB0eXBlIGlzIG93bmVkIGJ5 Ci0gICAgdGhlIG9iamZpbGUgcmV0cmlldmVkIGFzIFRZUEVfT0JKRklMRS4gIE90aGVyd2Vpc2Us IHRoZSB0eXBlIGlzCi0gICAgb3duZWQgYnkgYW4gYXJjaGl0ZWN0dXJlOyBUWVBFX09CSkZJTEUg aXMgTlVMTCBpbiB0aGlzIGNhc2UuICAqLwotQEAgLTI4NSw2ICsyOTksNDggQEAgZW51bSB0eXBl X2luc3RhbmNlX2ZsYWdfdmFsdWUKKyAjaWZkZWYgSEFWRV9QWVRIT04KICAKLSAjZGVmaW5lIFRZ UEVfREVDTEFSRURfQ0xBU1ModCkgKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kZWNsYXJlZF9j bGFzcykKK0BAIC0xMDY3LDYgKzEwNjgsMTcgQEAgZ2RicHlfaXNfdmFsdWVfb2JqZWN0IChQeU9i amVjdCAqb2JqKQorICAgcmV0dXJuIFB5T2JqZWN0X1R5cGVDaGVjayAob2JqLCAmdmFsdWVfb2Jq ZWN0X3R5cGUpOworIH0KICAKLSsvKiBEZWZpbmUgdGhpcyB0eXBlIGFzIGJlaW5nIHJlY2xhaW1h YmxlIGR1cmluZyBmcmVlX2FsbF90eXBlcy4gIFR5cGUgaXMKLSsgICByZXF1aXJlZCB0byBiZSBo YXZlIFRZUEVfT0JKRklMRSBzZXQgdG8gTlVMTC4gIFNldHRpbmcgdGhpcyBmbGFnIHJlcXVpcmVz Ci0rICAgaW5pdGlhbGl6aW5nIFRZUEVfRElTQ0FSREFCTEVfQUdFLCBzZWUgYWxsb2NfdHlwZV9k aXNjYXJkYWJsZS4gICovCi0rCi0rI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFKHQpCShUWVBFX01B SU5fVFlQRSAodCktPmZsYWdfZGlzY2FyZGFibGUpCi0rCi0rLyogTWFya2VyIHRoaXMgdHlwZSBo YXMgYmVlbiB2aXNpdGVkIGJ5IHRoZSB0eXBlX21hcmtfdXNlZCBieSB0aGlzCi0rICAgbWFyay1h bmQtc3dlZXAgdHlwZXMgZ2FyYmFnZSBjb2xsZWN0aW5nIHBhc3MuICBDdXJyZW50IHBhc3MgaXMg cmVwcmVzZW50ZWQKLSsgICBieSBUWVBFX0RJU0NBUkRBQkxFX0FHRV9DVVJSRU5ULiAgKi8KLSsK LSsjZGVmaW5lIFRZUEVfRElTQ0FSREFCTEVfQUdFKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZs YWdfZGlzY2FyZGFibGVfYWdlKQorKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBF cyByZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNlIGZpbGUuICAqLwogKwotKy8qIElzIEhJ R0hfQk9VTkQgYSBsb3ctYm91bmQgcmVsYXRpdmUgY291bnQgKDEpIG9yIHRoZSBoaWdoIGJvdW5k IGl0c2VsZiAoMCk/ICAqLworK3N0YXRpYyB2b2lkCisrcHl0aG9uX3R5cGVzX21hcmtfdXNlZCAo dm9pZCkKKyt7CisrICB2YWx1ZV9vYmplY3QgKml0ZXI7CiArCi0rI2RlZmluZSBUWVBFX1JBTkdF X0hJR0hfQk9VTkRfSVNfQ09VTlQocmFuZ2VfdHlwZSkgXAotKyAgKFRZUEVfTUFJTl9UWVBFIChy YW5nZV90eXBlKS0+ZmxhZ19yYW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50KQorKyAgZm9yIChpdGVy ID0gdmFsdWVzX2luX3B5dGhvbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpCisrICAgIHR5cGVf bWFya191c2VkICh2YWx1ZV90eXBlIChpdGVyLT52YWx1ZSkpOworK30KICsKLSsvKiBOb3QgYWxs b2NhdGVkLiAgVFlQRV9BTExPQ0FURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2ggY2FzZS4gIElm IHRoaXMgZmxhZwotKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBOVUxMIHRo ZW4gdGhlIHR5cGUgaXMgYWxsb2NhdGVkLiAgSWYgdGhpcwotKyAgIGZsYWcgaXMgdW5zZXQgYW5k IFRZUEVfQUxMT0NBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJGIGJsb2NrCi0rICAg ZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFsbG9jYXRpb24gc3RhdGUuICAqLworIHZvaWQKKyBnZGJw eV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKKyB7CitAQCAtMTA3Nyw2ICsxMDg5LDggQEAgZ2Ri cHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCisgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9t b2R1bGUsICJWYWx1ZSIsIChQeU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5cGUpOworIAorICAg dmFsdWVzX2luX3B5dGhvbiA9IE5VTEw7CiArCi0rI2RlZmluZSBUWVBFX05PVF9BTExPQ0FURUQo dCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3RfYWxsb2NhdGVkKQotKwotKy8qIE5vdCBh c3NvY2lhdGVkLiAgVFlQRV9BU1NPQ0lBVEVEKHQpIG11c3QgYmUgTlVMTCBpbiBzdWNoIGNhc2Uu ICBJZiB0aGlzIGZsYWcKLSsgICBpcyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlzIE5V TEwgdGhlbiB0aGUgdHlwZSBpcyBhc3NvY2lhdGVkLiAgSWYKLSsgICB0aGlzIGZsYWcgaXMgdW5z ZXQgYW5kIFRZUEVfQVNTT0NJQVRFRCh0KSBpcyBub3QgTlVMTCB0aGVuIGl0cyBEV0FSRiBibG9j awotKyAgIGRldGVybWluZXMgdGhlIGFjdHVhbCBhc3NvY2lhdGlvbiBzdGF0ZS4gICovCi0rCi0r I2RlZmluZSBUWVBFX05PVF9BU1NPQ0lBVEVEKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdf bm90X2Fzc29jaWF0ZWQpCi0rCi0rLyogQWRkcmVzcyBvZiB0aGUgYWN0dWFsIGRhdGEgYXMgZm9y IERXX0FUX2RhdGFfbG9jYXRpb24uICBJdHMgZHdhcmYgYmxvY2sgbXVzdAotKyAgIG5vdCBiZSBl dmFsdWF0ZWQgdW5sZXNzIGJvdGggVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NP Q0lBVEVEIGFyZQotKyAgIGZhbHNlLiAgSWYgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgc2V0 IHRoZW4gVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgdmFsdWUKLSsgICBpcyB0aGUgYWN0dWFsIGRh dGEgYWRkcmVzcyB2YWx1ZS4gIElmIHVuc2V0IGFuZAotKyAgIFRZUEVfREFUQV9MT0NBVElPTl9E V0FSRl9CTE9DSyBpcyBOVUxMIHRoZW4gdGhlIHZhbHVlIGlzIHRoZSBub3JtYWwKLSsgICB2YWx1 ZV9yYXdfYWRkcmVzcy4gIElmIHVuc2V0IGFuZCBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxP Q0sgaXMgbm90IE5VTEwKLSsgICB0aGVuIGl0cyBEV0FSRiBibG9jayBkZXRlcm1pbmVzIHRoZSBh Y3R1YWwgZGF0YSBhZGRyZXNzLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9J U19BRERSKHQpIFwKLSsgIChUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZGF0YV9sb2NhdGlvbl9p c19hZGRyKQotKwotIC8qIENvbnN0YW50IHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJl c3BvbmRpbmcgdHlwZSBoYXMgYQotICAqIGNvbnN0IG1vZGlmaWVyLgotICAqLwotQEAgLTM0Miw4 ICszOTgsNyBAQCBlbnVtIGZpZWxkX2xvY19raW5kCi0gICB7Ci0gICAgIEZJRUxEX0xPQ19LSU5E X0JJVFBPUywJLyogYml0cG9zICovCi0gICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSLAkvKiBw aHlzYWRkciAqLwotLSAgICBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJLyogcGh5c25hbWUgKi8K LS0gICAgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0sJLyogZHdhcmZfYmxvY2sgKi8KLSsgICAg RklFTERfTE9DX0tJTkRfUEhZU05BTUUJLyogcGh5c25hbWUgKi8KLSAgIH07CisrICBvYnNlcnZl cl9hdHRhY2hfbWFya191c2VkIChweXRob25fdHlwZXNfbWFya191c2VkKTsKKyB9CiAgCi0gLyog QSBkaXNjcmltaW5hbnQgdG8gZGV0ZXJtaW5lIHdoaWNoIGZpZWxkIGluIHRoZSBtYWluX3R5cGUu dHlwZV9zcGVjaWZpYwotQEAgLTM5MCwxMSArNDQ1LDE5IEBAIHN0cnVjdCBtYWluX3R5cGUKLSAg IHVuc2lnbmVkIGludCBmbGFnX3ZlY3RvciA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19zdHVi X3N1cHBvcnRlZCA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19ub3R0ZXh0IDogMTsKLSsgIHVu c2lnbmVkIGludCBmbGFnX2dudV9pZnVuYyA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19maXhl ZF9pbnN0YW5jZSA6IDE7Ci0gICB1bnNpZ25lZCBpbnQgZmxhZ19vYmpmaWxlX293bmVkIDogMTsK LSAgIC8qIFRydWUgaWYgdGhpcyB0eXBlIHdhcyBkZWNsYXJlZCB3aXRoICJjbGFzcyIgcmF0aGVy IHRoYW4KLSAgICAgICJzdHJ1Y3QiLiAgKi8KLSAgIHVuc2lnbmVkIGludCBmbGFnX2RlY2xhcmVk X2NsYXNzIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2Rpc2NhcmRhYmxlIDogMTsKLSsgIHVu c2lnbmVkIGludCBmbGFnX2Rpc2NhcmRhYmxlX2FnZSA6IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxh Z19keW5hbWljIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX3JhbmdlX2hpZ2hfYm91bmRfaXNf Y291bnQgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfbm90X2FsbG9jYXRlZCA6IDE7Ci0rICB1 bnNpZ25lZCBpbnQgZmxhZ19ub3RfYXNzb2NpYXRlZCA6IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxh Z19kYXRhX2xvY2F0aW9uX2lzX2FkZHIgOiAxOworIAwKK2RpZmYgLS1naXQgYS9nZGIvc29saWIt c3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYworaW5kZXggMWYxMzVkNC4uNDg5ODM4ZCAxMDA2NDQK Ky0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKKysrKyBiL2dkYi9zb2xpYi1zdnI0LmMKK0BAIC0xMjc4 LDcgKzEyNzgsOCBAQCBzdnI0X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUgKENPUkVfQUREUiBwYykK KyAJICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2gpCisgCSAgfHwgKHBjID49 IGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cKKyAJICAgICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBf cGx0X3NlY3RfaGlnaCkKKy0JICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpKTsKKysJICB8 fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpCisrCSAgfHwgaW5fZ251X2lmdW5jX3N0dWIgKHBj KSk7CisgfQogIAotICAgLyogQSBkaXNjcmltaW5hbnQgdGVsbGluZyB1cyB3aGljaCBmaWVsZCBv ZiB0aGUgdHlwZV9zcGVjaWZpYyB1bmlvbgotICAgICAgaXMgYmVpbmcgdXNlZCBmb3IgdGhpcyB0 eXBlLCBpZiBhbnkuICAqLwotQEAgLTQ2NSw2ICs1MjgsMjAgQEAgc3RydWN0IG1haW5fdHlwZQor IC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQsIGNvbXB1dGUgdGhlIGVu dHJ5LXBvaW50CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bW1pc2MuYyBiL2dkYi9zeW1taXNjLmMKK2lu ZGV4IDYyZTZiOTcuLjAwZGM2MTMgMTAwNjQ0CistLS0gYS9nZGIvc3ltbWlzYy5jCisrKysgYi9n ZGIvc3ltbWlzYy5jCitAQCAtMjYyLDYgKzI2Miw5IEBAIGR1bXBfbXN5bWJvbHMgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgdWlfZmlsZSAqb3V0ZmlsZSkKKyAJY2FzZSBtc3RfdGV4 dDoKKyAJICBtc190eXBlID0gJ1QnOworIAkgIGJyZWFrOworKwljYXNlIG1zdF90ZXh0X2dudV9p ZnVuYzoKKysJICBtc190eXBlID0gJ2knOworKwkgIGJyZWFrOworIAljYXNlIG1zdF9zb2xpYl90 cmFtcG9saW5lOgorIAkgIG1zX3R5cGUgPSAnUyc7CisgCSAgYnJlYWs7CitkaWZmIC0tZ2l0IGEv Z2RiL3N5bXRhYi5jIGIvZ2RiL3N5bXRhYi5jCitpbmRleCA5NDcyYzI0Li41NjFlZTUwIDEwMDY0 NAorLS0tIGEvZ2RiL3N5bXRhYi5jCisrKysgYi9nZGIvc3ltdGFiLmMKK0BAIC0yOTE0LDcgKzI5 MTQsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5kLCBp bnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAorICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xf dHlwZSB0eXBlczNbXQorICAgICA9IHttc3RfZmlsZV9kYXRhLCBtc3Rfc29saWJfdHJhbXBvbGlu ZSwgbXN0X2FicywgbXN0X3Vua25vd259OworICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xf dHlwZSB0eXBlczRbXQorLSAgICA9IHttc3RfZmlsZV9ic3MsIG1zdF90ZXh0LCBtc3RfYWJzLCBt c3RfdW5rbm93bn07CisrICAgID0ge21zdF9maWxlX2JzcywgbXN0X3RleHRfZ251X2lmdW5jLCBt c3RfYWJzLCBtc3RfdW5rbm93bn07CisgICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlw ZTsKKyAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMjsKKyAgIGVudW0gbWluaW1h bF9zeW1ib2xfdHlwZSBvdXJ0eXBlMzsKK2RpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmggYi9nZGIv c3ltdGFiLmgKK2luZGV4IGJlZGMxMGEuLmY1ZGRjYjEgMTAwNjQ0CistLS0gYS9nZGIvc3ltdGFi LmgKKysrKyBiL2dkYi9zeW10YWIuaAorQEAgLTI3Nyw2ICsyNzcsOSBAQCBlbnVtIG1pbmltYWxf c3ltYm9sX3R5cGUKKyB7CisgICBtc3RfdW5rbm93biA9IDAsCQkvKiBVbmtub3duIHR5cGUsIHRo ZSBkZWZhdWx0ICovCisgICBtc3RfdGV4dCwJCQkvKiBHZW5lcmFsbHkgZXhlY3V0YWJsZSBpbnN0 cnVjdGlvbnMgKi8KKysgIG1zdF90ZXh0X2dudV9pZnVuYywJCS8qIEV4ZWN1dGFibGUgY29kZSBy ZXR1cm5pbmcgYWRkcmVzcworKwkJCQkgICBvZiBleGVjdXRhYmxlIGNvZGUgKi8KKysgIG1zdF9z bG90X2dvdF9wbHQsCisgICBtc3RfZGF0YSwJCQkvKiBHZW5lcmFsbHkgaW5pdGlhbGl6ZWQgZGF0 YSAqLworICAgbXN0X2JzcywJCQkvKiBHZW5lcmFsbHkgdW5pbml0aWFsaXplZCBkYXRhICovCisg ICBtc3RfYWJzLAkJCS8qIEdlbmVyYWxseSBhYnNvbHV0ZSAobm9ucmVsb2NhdGFibGUpICovCitA QCAtOTE3LDExICs5MjAsMjUgQEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmZpbmRfcGNfc2VjdF9m dW5jdGlvbiAoQ09SRV9BRERSLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKik7CiAgCi0gICBzdHJ1Y3Qg dHlwZSAqdGFyZ2V0X3R5cGU7CisgLyogbG9va3VwIGZ1bmN0aW9uIGZyb20gYWRkcmVzcywgcmV0 dXJuIG5hbWUsIHN0YXJ0IGFkZHIgYW5kIGVuZCBhZGRyICovCiAgCi0rICAvKiBGb3IgRFdfQVRf ZGF0YV9sb2NhdGlvbi4gICovCi0rICB1bmlvbgotKyAgICB7Ci0rICAgICAgc3RydWN0IGR3YXJm Ml9sb2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKLSsgICAgICBDT1JFX0FERFIgYWRkcjsKLSsg ICAgfQotKyAgZGF0YV9sb2NhdGlvbjsKKy1leHRlcm4gaW50IGZpbmRfcGNfcGFydGlhbF9mdW5j dGlvbiAoQ09SRV9BRERSLCBjaGFyICoqLCBDT1JFX0FERFIgKiwKKy0JCQkJICAgICBDT1JFX0FE RFIgKik7CisrZXh0ZXJuIGVudW0gZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX3R5cGUKKysgIHsK KysgICAgRklORF9QQ19QQVJUSUFMX0ZVTkNUSU9OX05PVF9GT1VORCA9IDAsCisrICAgIEZJTkRf UENfUEFSVElBTF9GVU5DVElPTl9OT1JNQUwsCisrICAgIEZJTkRfUENfUEFSVElBTF9GVU5DVElP Tl9HTlVfSUZVTkMKKysgIH0gZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIsIGNo YXIgKiosIENPUkVfQUREUiAqLCBDT1JFX0FERFIgKik7CisgCisgZXh0ZXJuIHZvaWQgY2xlYXJf cGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpOworIAorK2V4dGVybiBpbnQgcmVzb2x2ZV9nbnVfaWZ1 bmMgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCisrCQkJICAgICAgQ09SRV9BRERSICpmdW5j dGlvbl9hZGRyZXNzcCk7CiArCi0rICAvKiBGb3IgRFdfQVRfYWxsb2NhdGVkLiAgKi8KLSsgIHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYWxsb2NhdGVkOworK2V4dGVybiBzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKnJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlCisrICAoY29uc3QgY2hhciAq ZnVuY3Rpb25fbmFtZSk7CiArCi0rICAvKiBGb3IgRFdfQVRfYXNzb2NpYXRlZC4gICovCi0rICBz dHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFzc29jaWF0ZWQ7CisrZXh0ZXJuIHZvaWQgZ251 X2lmdW5jX3JlY29yZF9jYWNoZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrCQkJCSAgICBj b25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLAorKwkJCQkgICAgQ09SRV9BRERSIGZ1bmN0aW9uX2Fk ZHJlc3MpOwogKwotICAgLyogRm9yIHN0cnVjdHVyZSBhbmQgdW5pb24gdHlwZXMsIGEgZGVzY3Jp cHRpb24gb2YgZWFjaCBmaWVsZC4KLSAgICAgIEZvciBzZXQgYW5kIHBhc2NhbCBhcnJheSB0eXBl cywgdGhlcmUgaXMgb25lICJmaWVsZCIsCi0gICAgICB3aG9zZSB0eXBlIGlzIHRoZSBkb21haW4g dHlwZSBvZiB0aGUgc2V0IG9yIGFycmF5LgotQEAgLTUwMSwxMiArNTc4LDYgQEAgc3RydWN0IG1h aW5fdHlwZQotIAotIAlDT1JFX0FERFIgcGh5c2FkZHI7Ci0gCWNoYXIgKnBoeXNuYW1lOwotLQot LQkvKiBUaGUgZmllbGQgbG9jYXRpb24gY2FuIGJlIGNvbXB1dGVkIGJ5IGV2YWx1YXRpbmcgdGhl IGZvbGxvd2luZyBEV0FSRgotLQkgICBibG9jay4gIFRoaXMgY2FuIGJlIHVzZWQgaW4gRm9ydHJh biB2YXJpYWJsZS1sZW5ndGggYXJyYXlzLCBmb3IKLS0JICAgaW5zdGFuY2UuICAqLwotLQotLQlz dHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmR3YXJmX2Jsb2NrOwotICAgICAgIH0KLSAgICAg ICBsb2M7Ci0gCi1AQCAtNTQ0LDEzICs2MTUsMzQgQEAgc3RydWN0IG1haW5fdHlwZQotIAotICAg ICBzdHJ1Y3QgcmFuZ2VfYm91bmRzCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QKLSsJewotKwkgIHVu aW9uCi0rCSAgICB7Ci0rCSAgICAgIExPTkdFU1QgY29uc3RhbnQ7Ci0rCSAgICAgIHN0cnVjdCBk d2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7Ci0rCSAgICAgIHN0cnVjdAotKwkJewot KwkJICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xpc3Q7Ci0rCQkgIHN0cnVjdCB0 eXBlICp0eXBlOwotKwkJfQotKwkgICAgICBkd2FyZl9sb2NsaXN0OwotKwkgICAgfQotKwkgIHU7 Ci0rCSAgZW51bSByYW5nZV9ib3VuZF9raW5kCi0rCSAgICB7Ci0rCSAgICAgIFJBTkdFX0JPVU5E X0tJTkRfQ09OU1RBTlQsCi0rCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0ssCi0r CSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVAotKwkgICAgfQotKwkgIGtpbmQ7 Ci0rCX0KLSAgICAgICAvKiBMb3cgYm91bmQgb2YgcmFuZ2UuICovCi0tCi0tICAgICAgTE9OR0VT VCBsb3c7Ci0tCi0rICAgICAgbG93LAotICAgICAgIC8qIEhpZ2ggYm91bmQgb2YgcmFuZ2UuICov Ci0tCi0tICAgICAgTE9OR0VTVCBoaWdoOwotKyAgICAgIGhpZ2gsCi0rICAgICAgLyogQnl0ZSBz dHJpZGUgb2YgcmFuZ2UuICovCi0rICAgICAgYnl0ZV9zdHJpZGU7Ci0gCi0gICAgICAgLyogRmxh Z3MgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB2YWx1ZXMgb2YgbG93IGFuZCBoaWdoIGFyZQotICAg ICAgICAgIHZhbGlkLiAgV2hlbiB0cnVlLCB0aGUgcmVzcGVjdGl2ZSByYW5nZSB2YWx1ZSBpcwot QEAgLTYwMiw2ICs2OTQsOSBAQCBzdHJ1Y3QgbWFpbl90eXBlCi0gICAgICAgIHN1cHBvcnRpbmcg bXVsdGlwbGUgQUJJcy4gIFJpZ2h0IG5vdyB0aGlzIGlzIG9ubHkgZmV0Y2hlZCBmcm9tCi0gICAg ICAgIHRoZSBEd2FyZi0yIERXX0FUX2NhbGxpbmdfY29udmVudGlvbiBhdHRyaWJ1dGUuICAqLwot ICAgICB1bnNpZ25lZCBjYWxsaW5nX2NvbnZlbnRpb247Ci0rCi0rICAgIC8qIEZvciBUWVBFX0NP REVfTU9EVUxFLCB0aGUgbGlzdCBvZiBzeW1ib2xzIGNvbnRhaW5lZCBpbiB0aGUgbW9kdWxlLiAg Ki8KLSsgICAgc3RydWN0IGJsb2NrICptb2R1bGVfYmxvY2s7Ci0gICB9IHR5cGVfc3BlY2lmaWM7 Ci0gfTsKLSAKLUBAIC04MzgsMTMgKzkzMyw2IEBAIHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlwZQot ICAgICBpbnQgaXNfZHluYW1pYyA6IDI7Ci0gICB9OworIC8qIGxvb2t1cCBwYXJ0aWFsIHN5bWJv bCB0YWJsZSBieSBhZGRyZXNzIGFuZCBzZWN0aW9uICovCiAgCi0tLyogU3RydWN0IHVzZWQgaW4g Y29tcHV0aW5nIHZpcnR1YWwgYmFzZSBsaXN0ICovCi0tc3RydWN0IHZiYXNlCi0tICB7Ci0tICAg IHN0cnVjdCB0eXBlICp2YmFzZXR5cGU7CS8qIHBvaW50ZXIgdG8gdmlydHVhbCBiYXNlICovCi0t ICAgIHN0cnVjdCB2YmFzZSAqbmV4dDsJCS8qIG5leHQgaW4gY2hhaW4gKi8KLS0gIH07Ci0tCi0g LyogU3RydWN0IHVzZWQgZm9yIHJhbmtpbmcgYSBmdW5jdGlvbiBmb3Igb3ZlcmxvYWQgcmVzb2x1 dGlvbiAqLwotIHN0cnVjdCBiYWRuZXNzX3ZlY3RvcgotICAgewotQEAgLTg5OSw5ICs5ODcsOSBA QCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAj ZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5 cGUKLSAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJl ZmVyZW5jZV90eXBlCi0gI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5j aGFpbgotLS8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYgdHlwZSwgeW91IGhh dmUgdG8gY2FsbCBjaGVja190eXBlZGVmLgotLSAgIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0 IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRiB0eXBlLAotLSAgIHNvIHlvdSBvbmx5IGhh dmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQotKy8q IE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYsIEFSUkFZIG9yIFNUUklORyB0eXBl LCB5b3UgaGF2ZSB0byBjYWxsCi0rICAgY2hlY2tfdHlwZWRlZi4gIEJ1dCBjaGVja190eXBlZGVm IGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRgotKyAgIHR5cGUsIHNvIHlv dSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92 YWx1ZQotICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChY KSkgaXMgc2FmZS4gICovCi0gI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBl KS0+bGVuZ3RoCi0gLyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVE RUYsIHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCi1AQCAtOTEwLDExICs5OTgsMTYgQEAgZXh0ZXJu IHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7Ci0gI2RlZmluZSBU WVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+bmZpZWxkcwot ICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+ Zmxkc19ibmRzLmZpZWxkcwotICNkZWZpbmUgVFlQRV9URU1QTEFURV9BUkdTKHRoaXN0eXBlKSBU WVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+dGVtcGxhdGVfYXJncwotKyNkZWZpbmUgVFlQ RV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhp c3R5cGUpLT5kYXRhX2xvY2F0aW9uLmR3YXJmX2Jsb2NrCi0rI2RlZmluZSBUWVBFX0RBVEFfTE9D QVRJT05fQUREUih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+ZGF0YV9sb2Nh dGlvbi5hZGRyCi0rI2RlZmluZSBUWVBFX0FMTE9DQVRFRCh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZ UEUgKHRoaXN0eXBlKS0+YWxsb2NhdGVkCi0rI2RlZmluZSBUWVBFX0FTU09DSUFURUQodGhpc3R5 cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFzc29jaWF0ZWQKKyBleHRlcm4gc3RydWN0 IHN5bXRhYiAqZmluZF9wY19zZWN0X3N5bXRhYl92aWFfcGFydGlhbCAoQ09SRV9BRERSLAorQEAg LTk5Niw2ICsxMDEzLDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjX25hbWUKICAKLSAjZGVmaW5lIFRZUEVfSU5ERVhfVFlQRSh0eXBl KSBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApCi0gI2RlZmluZSBUWVBFX1JBTkdFX0RBVEEodGhp c3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRzLmJvdW5kcwotLSNkZWZp bmUgVFlQRV9MT1dfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUp LT5sb3cKLS0jZGVmaW5lIFRZUEVfSElHSF9CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RB VEEocmFuZ2VfdHlwZSktPmhpZ2gKLSsjZGVmaW5lIFRZUEVfTE9XX0JPVU5EKHJhbmdlX3R5cGUp IFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93LnUuY29uc3RhbnQKLSsjZGVmaW5lIFRZ UEVfSElHSF9CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmhp Z2gudS5jb25zdGFudAotKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERShyYW5nZV90eXBlKSBUWVBF X1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLnUuY29uc3RhbnQKLSAjZGVmaW5l IFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCi0gICAgVFlQRV9SQU5HRV9E QVRBKHJhbmdlX3R5cGUpLT5sb3dfdW5kZWZpbmVkCi0gI2RlZmluZSBUWVBFX0hJR0hfQk9VTkRf VU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwKLUBAIC05MzEsNyArMTAyNCwxNCBAQCBleHRlcm4gdm9p ZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAgICAoVFlQRV9ISUdI X0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkpKQorIGV4dGVybiBzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoQ09SRV9BRERSKTsKICAK LSAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfVkFMVUUoYXJyYXl0eXBlKSBcCi0tICAg KFRZUEVfTE9XX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkpKQotKyAgVFlQRV9M T1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkKKytleHRlcm4gaW50IGluX2du dV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpOwogKwotKy8qIFRZUEVfQllURV9TVFJJREUgKFRZ UEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkgd2l0aCBhIGZhbGxiYWNrIHRvIHRoZQotKyAgIGVs ZW1lbnQgc2l6ZSBpZiBubyBzcGVjaWZpYyBzdHJpZGUgdmFsdWUgaXMga25vd24uICAqLwotKyNk ZWZpbmUgVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRShhcnJheXR5cGUpCQlcCi0rICAoVFlQ RV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSA9PSAwCVwKLSsgICA/ IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheXR5cGUpKQkJXAotKyAgIDogVFlQ RV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSkKLSAKLSAvKiBDKysg Ki8KLSAKLUBAIC05NTksNiArMTA1OSw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4 X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICNkZWZpbmUgVFlQRV9HTkFUX1NQRUNJRklDKHRoaXN0 eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPnR5cGVfc3BlY2lmaWMuZ25hdF9zdHVmZgot ICNkZWZpbmUgVFlQRV9ERVNDUklQVElWRV9UWVBFKHRoaXN0eXBlKSBUWVBFX0dOQVRfU1BFQ0lG SUModGhpc3R5cGUpLT5kZXNjcmlwdGl2ZV90eXBlCi0gI2RlZmluZSBUWVBFX0NBTExJTkdfQ09O VkVOVElPTih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT50eXBlX3NwZWNpZmlj LmNhbGxpbmdfY29udmVudGlvbgotKyNkZWZpbmUgVFlQRV9NT0RVTEVfQkxPQ0sodGhpc3R5cGUp IFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+dHlwZV9zcGVjaWZpYy5tb2R1bGVfYmxvY2sKLSAj ZGVmaW5lIFRZUEVfQkFTRUNMQVNTKHRoaXN0eXBlLGluZGV4KSBUWVBFX0ZJRUxEX1RZUEUodGhp c3R5cGUsIGluZGV4KQotICNkZWZpbmUgVFlQRV9OX0JBU0VDTEFTU0VTKHRoaXN0eXBlKSBUWVBF X0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+bl9iYXNlY2xhc3NlcwotICNkZWZpbmUgVFlQRV9C QVNFQ0xBU1NfTkFNRSh0aGlzdHlwZSxpbmRleCkgVFlQRV9GSUVMRF9OQU1FKHRoaXN0eXBlLCBp bmRleCkKLUBAIC05NzcsNyArMTA3OCw2IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4 X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICNkZWZpbmUgRklFTERfQklUUE9TKHRoaXNmbGQpICgo dGhpc2ZsZCkubG9jLmJpdHBvcykKLSAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlz ZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzbmFtZSkKLSAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlT QUREUih0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzYWRkcikKLS0jZGVmaW5lIEZJRUxEX0RX QVJGX0JMT0NLKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmR3YXJmX2Jsb2NrKQotICNkZWZpbmUg U0VUX0ZJRUxEX0JJVFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAotICAgKEZJRUxEX0xPQ19LSU5E ICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKLSAgICBGSUVMRF9CSVRQT1Mg KHRoaXNmbGQpID0gKGJpdHBvcykpCi1AQCAtOTg3LDkgKzEwODcsNiBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFNFVF9GSUVM RF9QSFlTQUREUih0aGlzZmxkLCBhZGRyKQkJCVwKLSAgIChGSUVMRF9MT0NfS0lORCAodGhpc2Zs ZCkgPSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUiwJCVwKLSAgICBGSUVMRF9TVEFUSUNfUEhZU0FE RFIgKHRoaXNmbGQpID0gKGFkZHIpKQotLSNkZWZpbmUgU0VUX0ZJRUxEX0RXQVJGX0JMT0NLKHRo aXNmbGQsIGFkZHIpCQkJXAotLSAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xP Q19LSU5EX0RXQVJGX0JMT0NLLAlcCi0tICAgRklFTERfRFdBUkZfQkxPQ0sgKHRoaXNmbGQpID0g KGFkZHIpKQotICNkZWZpbmUgRklFTERfQVJUSUZJQ0lBTCh0aGlzZmxkKSAoKHRoaXNmbGQpLmFy dGlmaWNpYWwpCi0gI2RlZmluZSBGSUVMRF9CSVRTSVpFKHRoaXNmbGQpICgodGhpc2ZsZCkuYml0 c2l6ZSkKLSAKLUBAIC0xMDAwLDcgKzEwOTcsNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0 X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFRZUEVfRklFTERfQklUUE9TKHRo aXN0eXBlLCBuKSBGSUVMRF9CSVRQT1MgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKLSAjZGVm aW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNf UEhZU05BTUUgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKLSAjZGVmaW5lIFRZUEVfRklFTERf U1RBVElDX1BIWVNBRERSKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKFRZUEVf RklFTEQgKHRoaXN0eXBlLCBuKSkKLS0jZGVmaW5lIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sodGhp c3R5cGUsIG4pIEZJRUxEX0RXQVJGX0JMT0NLIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCi0g I2RlZmluZSBUWVBFX0ZJRUxEX0FSVElGSUNJQUwodGhpc3R5cGUsIG4pIEZJRUxEX0FSVElGSUNJ QUwoVFlQRV9GSUVMRCh0aGlzdHlwZSxuKSkKLSAjZGVmaW5lIFRZUEVfRklFTERfQklUU0laRSh0 aGlzdHlwZSwgbikgRklFTERfQklUU0laRShUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKQotICNkZWZp bmUgVFlQRV9GSUVMRF9QQUNLRUQodGhpc3R5cGUsIG4pIChGSUVMRF9CSVRTSVpFKFRZUEVfRklF TEQodGhpc3R5cGUsbikpIT0wKQotQEAgLTExMzksNiArMTIzNSwxMCBAQCBzdHJ1Y3QgYnVpbHRp bl90eXBlCi0gICAgICAoKikgKCkgY2FuIHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9p bnRlci4gICovCi0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsKKyBleHRlcm4gc3Ry dWN0IG1pbmltYWxfc3ltYm9sICoKKyAgICAgbG9va3VwX21pbmltYWxfc3ltYm9sX2FuZF9vYmpm aWxlIChjb25zdCBjaGFyICosCisgCQkJCSAgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqKik7CitkaWZm IC0tZ2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3RhcmdldC5jCitpbmRleCA4NjJkZjRlLi5hOGYx YmRkIDEwMDY0NAorLS0tIGEvZ2RiL3RhcmdldC5jCisrKysgYi9nZGIvdGFyZ2V0LmMKK0BAIC0x MjMsNiArMTIzLDggQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSLCBpbnQsIGludCwKKyBzdGF0aWMgaW50IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50 IChDT1JFX0FERFIsIGludCwgaW50LAorIAkJCQkgICAgICAgc3RydWN0IGV4cHJlc3Npb24gKik7 CiAgCi0rICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rpb24gKHJldHVy bmluZyB2b2lkKScgdHlwZS4KLSsgICAgIFRoZSBmaW5hbCB2b2lkIHJldHVybiB0eXBlIGlzIG5v dCBzaWduaWZpY2FudCBmb3IgaXQuICAqLwotKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19m dW5jOworK3N0YXRpYyBpbnQgZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKTsKICsK KyBzdGF0aWMgaW50IGRlYnVnX3RvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCk7CiAgCi0g ICAvKiBTcGVjaWFsLXB1cnBvc2UgdHlwZXMuICAqLwotIAotQEAgLTExNzksNiArMTI3OSw3IEBA IHN0cnVjdCBvYmpmaWxlX3R5cGUKLSAKLSAgIC8qIFR5cGVzIHVzZWQgZm9yIHN5bWJvbHMgd2l0 aCBubyBkZWJ1ZyBpbmZvcm1hdGlvbi4gICovCi0gICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0 X3N5bWJvbDsKLSsgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbDsK LSAgIHN0cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOwotICAgc3RydWN0IHR5cGUgKm5v ZGVidWdfdW5rbm93bl9zeW1ib2w7Ci0gICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190bHNfc3ltYm9s OwotQEAgLTEzMzMsNiArMTQzNCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJh eV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAotIAkJCQkgICAgICAgc3RydWN0 IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfYXJyYXlfcmFuZ2VfdHlwZSAo c3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOworIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9k YXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAqKTsKK0BAIC02MDYs NiArNjA4LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQorICAgICAgIElOSEVSSVQg KHRvX3JlbW92ZV9od19icmVha3BvaW50LCB0KTsKKyAgICAgICBJTkhFUklUICh0b19pbnNlcnRf d2F0Y2hwb2ludCwgdCk7CisgICAgICAgSU5IRVJJVCAodG9fcmVtb3ZlX3dhdGNocG9pbnQsIHQp OworKyAgICAgIElOSEVSSVQgKHRvX2RldGFjaF93YXRjaHBvaW50cywgdCk7CisgICAgICAgSU5I RVJJVCAodG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOworICAgICAgIElOSEVSSVQgKHRvX2hh dmVfc3RlcHBhYmxlX3dhdGNocG9pbnQsIHQpOworICAgICAgIElOSEVSSVQgKHRvX2hhdmVfY29u dGludWFibGVfd2F0Y2hwb2ludCwgdCk7CitAQCAtNzM5LDYgKzc0Miw5IEBAIHVwZGF0ZV9jdXJy ZW50X3RhcmdldCAodm9pZCkKKyAgIGRlX2ZhdWx0ICh0b19yZW1vdmVfd2F0Y2hwb2ludCwKKyAJ ICAgIChpbnQgKCopIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKSkK KyAJICAgIHJldHVybl9taW51c19vbmUpOworKyAgZGVfZmF1bHQgKHRvX2RldGFjaF93YXRjaHBv aW50cywKKysJICAgIChpbnQgKCopICh2b2lkKSkKKysJICAgIHJldHVybl96ZXJvKTsKKyAgIGRl X2ZhdWx0ICh0b19zdG9wcGVkX2J5X3dhdGNocG9pbnQsCisgCSAgICAoaW50ICgqKSAodm9pZCkp CisgCSAgICByZXR1cm5femVybyk7CitAQCAtMzQ0MSw2ICszNDQ3LDE5IEBAIGRlYnVnX3RvX3Jl bW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCisgICBy ZXR1cm4gcmV0dmFsOworIH0KICAKLStleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFuZ2VfYW55X2Zp ZWxkX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkJCQlpbnQgZmllbGRu byk7Ci0rCi0rZXh0ZXJuIGludCB0eXBlX3JhbmdlX2hpZ2hfYm91bmRfaW50ZXJuYWwgKHN0cnVj dCB0eXBlICpyYW5nZV90eXBlKTsKKytzdGF0aWMgaW50CisrZGVidWdfdG9fZGV0YWNoX3dhdGNo cG9pbnRzICh2b2lkKQorK3sKKysgIGludCByZXR2YWw7CiArCi0rZXh0ZXJuIGludCB0eXBlX3Jh bmdlX2NvdW50X2JvdW5kX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSk7CisrICBy ZXR2YWwgPSBkZWJ1Z190YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOwogKwotK2V4dGVy biBDT1JFX0FERFIgdHlwZV9yYW5nZV9ieXRlX3N0cmlkZV9pbnRlcm5hbCAoc3RydWN0IHR5cGUg KnJhbmdlX3R5cGUsCi0rCQkJCQkJICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlKTsKLSsKLStl eHRlcm4gdm9pZCBmaW5hbGl6ZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci0rCi0gZXh0ZXJu IHN0cnVjdCB0eXBlICpjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0 eXBlICosCi0gCQkJCQlzdHJ1Y3QgdHlwZSAqKTsKLSBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1 cF9zdHJpbmdfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwotQEAgLTEzNzUs NiArMTQ4OCw4IEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAq LCBzdHJ1Y3QgdHlwZSAqKTsKLSAKLSBleHRlcm4gaW50IGlzX3VuaXF1ZV9hbmNlc3RvciAoc3Ry dWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwotIAotK2V4dGVybiB2b2lkIHR5cGVfbWFya191 c2VkIChzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci0rCi0gLyogT3ZlcmxvYWQgcmVzb2x1dGlvbiAqLwot IAotICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+cmFua1swXSkKLUBAIC0xNDM3LDEw ICsxNTUyLDExIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwg aW50KTsKLSAKLSBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpOwotIAotLWV4dGVybiBzdHJ1Y3QgdHlwZSAqY29weV90eXBlX3Jl Y3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJCQkgc3RydWN0IHR5cGUgKnR5 cGUsCi0rZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlw ZSAqdHlwZSwKLSAJCQkJCSBodGFiX3QgY29waWVkX3R5cGVzKTsKLSAKLSBleHRlcm4gc3RydWN0 IHR5cGUgKmNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpOwotIAotK2V4dGVybiB2 b2lkIGZyZWVfYWxsX3R5cGVzICh2b2lkKTsKLSsKLSAjZW5kaWYgLyogR0RCVFlQRVNfSCAqLwot ZGlmZiAtLWdpdCBhL2dkYi9nbnUtdjMtYWJpLmMgYi9nZGIvZ251LXYzLWFiaS5jCi1pbmRleCA1 MzIxNDAxLi5iMTg4MmEyIDEwMDY0NAotLS0tIGEvZ2RiL2dudS12My1hYmkuYwotKysrIGIvZ2Ri L2dudS12My1hYmkuYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAiZGVtYW5nbGUuaCIK LSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAidmFscHJpbnQuaCIKLSsjaW5jbHVk ZSAiYy1sYW5nLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVkZSAiZ2Ri X3N0cmluZy5oIgotQEAgLTQ1NiwxMCArNDU3LDggQEAgZ251djNfZmluZF9tZXRob2RfaW4gKHN0 cnVjdCB0eXBlICpkb21haW4sIENPUkVfQUREUiB2b2Zmc2V0LAotIAkJICAgICAgTE9OR0VTVCBh ZGp1c3RtZW50KQotIHsKLSAgIGludCBpOwotLSAgY29uc3QgY2hhciAqcGh5c25hbWU7Ci0gCi0g ICAvKiBTZWFyY2ggdGhpcyBjbGFzcyBmaXJzdC4gICovCi0tICBwaHlzbmFtZSA9IE5VTEw7Ci0g ICBpZiAoYWRqdXN0bWVudCA9PSAwKQotICAgICB7Ci0gICAgICAgaW50IGxlbjsKLUBAIC01ODcs MTUgKzU4NiwyNCBAQCBnbnV2M19wcmludF9tZXRob2RfcHRyIChjb25zdCBnZGJfYnl0ZSAqY29u dGVudHMsCi0gCXsKLSAJICBjaGFyICpkZW1hbmdsZWRfbmFtZSA9IGNwbHVzX2RlbWFuZ2xlIChw aHlzbmFtZSwKLSAJCQkJCQkgRE1HTF9BTlNJIHwgRE1HTF9QQVJBTVMpOwotLQkgIGlmIChkZW1h bmdsZWRfbmFtZSAhPSBOVUxMKQotKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiZ2aXJ0 dWFsICIpOwotKwkgIGlmIChkZW1hbmdsZWRfbmFtZSA9PSBOVUxMKQotKwkgICAgZnB1dHNfZmls dGVyZWQgKHBoeXNuYW1lLCBzdHJlYW0pOwotKwkgIGVsc2UKLSAJICAgIHsKLS0JICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJnZpcnR1YWwgIik7Ci0gCSAgICAgIGZwdXRzX2ZpbHRl cmVkIChkZW1hbmdsZWRfbmFtZSwgc3RyZWFtKTsKLSAJICAgICAgeGZyZWUgKGRlbWFuZ2xlZF9u YW1lKTsKLS0JICAgICAgcmV0dXJuOwotIAkgICAgfQotKwkgIHJldHVybjsKLSAJfQotICAgICB9 Ci0rICBlbHNlIGlmIChwdHJfdmFsdWUgIT0gMCkKLSsgICAgewotKyAgICAgIC8qIEZvdW5kIGEg bm9uLXZpcnR1YWwgZnVuY3Rpb246IHByaW50IG91dCB0aGUgdHlwZS4gICovCi0rICAgICAgZnB1 dHNfZmlsdGVyZWQgKCIoIiwgc3RyZWFtKTsKLSsgICAgICBjX3ByaW50X3R5cGUgKHR5cGUsICIi LCBzdHJlYW0sIC0xLCAwKTsKLSsgICAgICBmcHV0c19maWx0ZXJlZCAoIikgIiwgc3RyZWFtKTsK LSsgICAgfQotIAotICAgLyogV2UgZGlkbid0IGZpbmQgaXQ7IHByaW50IHRoZSByYXcgZGF0YS4g ICovCi0gICBpZiAodmJpdCkKLWRpZmYgLS1naXQgYS9nZGIvaHBwYS1saW51eC10ZGVwLmMgYi9n ZGIvaHBwYS1saW51eC10ZGVwLmMKLWluZGV4IGViZmMyZjUuLmU0MDEwNWIgMTAwNjQ0Ci0tLS0g YS9nZGIvaHBwYS1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9ocHBhLWxpbnV4LXRkZXAuYwotQEAg LTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSAicmVnc2V0LmgiCi0gI2luY2x1ZGUgInJlZ2NhY2hl LmgiCi0gI2luY2x1ZGUgImhwcGEtdGRlcC5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0g Ci0gI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAKLUBAIC01MTMsNyArNTE0LDIxIEBAIGhwcGFf bGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK LSAKLSAgIHJldHVybiBOVUxMOwotIH0KLS0MCi0rCi0rc3RhdGljIENPUkVfQUREUgotK2hwcGEz Ml9saW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCi0rCQkJCQkgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkgc3RydWN0IHRhcmdldF9vcHMgKnRh cmcpCi0rewotKyAgQ09SRV9BRERSIHBjID0gaHBwYTMyX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyIChnZGJhcmNoLCBhZGRyLCB0YXJnKTsKLSsgIENPUkVfQUREUiByZXNvbHZlZDsKLSsKLSsg IHJlc29sdmVkID0gbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRk ciwgcGMpOwotKyAgaWYgKHJlc29sdmVkICE9IHBjKQotKyAgICBwYyA9IGhwcGEzMl9jb252ZXJ0 X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgcmVzb2x2ZWQsIHRhcmcpOwotKwotKyAgcmV0 dXJuIHBjOwotK30KLSAKLSAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucy4gICovCi0gZXh0ZXJuIGlu aXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9ocHBhX2xpbnV4X3RkZXA7Ci1AQCAtNTU1 LDYgKzU3MCwxMCBAQCBocHBhX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGlu Zm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgLyogRW5hYmxlIFRMUyBzdXBwb3J0LiAg Ki8KLSAgIHNldF9nZGJhcmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9hZGRyZXNzIChnZGJhcmNo LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2cjRfZmV0 Y2hfb2JqZmlsZV9saW5rX21hcCk7Ci0rCi0rICBpZiAodGRlcC0+Ynl0ZXNfcGVyX2FkZHJlc3Mg PT0gNCkKLSsgICAgc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFy Y2gsCi0rCQkJCSAgICAgICBocHBhMzJfbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIp OwotIH0KLSAKLSB2b2lkCi1kaWZmIC0tZ2l0IGEvZ2RiL2hwcGEtdGRlcC5jIGIvZ2RiL2hwcGEt dGRlcC5jCi1pbmRleCBhMDY2NWVmLi4zNDdmYmU0IDEwMDY0NAotLS0tIGEvZ2RiL2hwcGEtdGRl cC5jCi0rKysgYi9nZGIvaHBwYS10ZGVwLmMKLUBAIC0xMjQ3LDcgKzEyNDcsNyBAQCBocHBhNjRf cmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHR5cGUgKmZ1bmNf dHlwZSwKLSB9Ci0gDAotIAotLXN0YXRpYyBDT1JFX0FERFIKLStDT1JFX0FERFIKLSBocHBhMzJf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JF X0FERFIgYWRkciwKLSAJCQkJICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpCi0gewotZGlmZiAt LWdpdCBhL2dkYi9ocHBhLXRkZXAuaCBiL2dkYi9ocHBhLXRkZXAuaAotaW5kZXggZTJkODc1Mi4u YzYyNjYzNyAxMDA2NDQKLS0tLSBhL2dkYi9ocHBhLXRkZXAuaAotKysrIGIvZ2RiL2hwcGEtdGRl cC5oCi1AQCAtMjQ2LDQgKzI0Niw4IEBAIGV4dGVybiBpbnQgaHBwYV9pbl9zb2xpYl9jYWxsX3Ry YW1wb2xpbmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAkJCQkJICBDT1JFX0FERFIgcGMs IGNoYXIgKm5hbWUpOwotIGV4dGVybiBDT1JFX0FERFIgaHBwYV9za2lwX3RyYW1wb2xpbmVfY29k ZSAoc3RydWN0IGZyYW1lX2luZm8gKiwgQ09SRV9BRERSIHBjKTsKLSAKLStleHRlcm4gQ09SRV9B RERSIGhwcGEzMl9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsCi0rCQkJCQkJICAgIENPUkVfQUREUiBhZGRyLAotKwkJCQkJCSAgICBzdHJ1Y3QgdGFy Z2V0X29wcyAqdGFyZyk7Ci0rCi0gI2VuZGlmICAvKiBocHBhLXRkZXAuaCAqLwotZGlmZiAtLWdp dCBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKLWluZGV4IGZm ODM3ZjIuLjE3MTA0ODcgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1saW51eC1uYXQuYwotKysrIGIv Z2RiL2kzODYtbGludXgtbmF0LmMKLUBAIC02OTYsNiArNjk2LDIxIEBAIGkzODZfbGludXhfZHJf dW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCi0gICAgIH0KLSB9Ci0gCi0rLyogU2Vl IGkzODZfZHJfbG93X3R5cGUuZGV0YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVycyBpMzg2X2xpbnV4 X2RyX3NldF9jb250cm9sCi0rICAgb3IgaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkg d291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQotKyAgIChpMzg2X2xpbnV4X2RyKS4gICov Ci0rCi0rc3RhdGljIHZvaWQKLStpMzg2X2xpbnV4X2RyX2RldGFjaCAodm9pZCkKLSt7Ci0rICBp bnQgcmVnbnVtOwotKwotKyAgaTM4Nl9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIERSX0NP TlRST0wsIDApOwotKyAgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKH4wVUwpOwotKyAgZm9y IChyZWdudW0gPSBEUl9GSVJTVEFERFI7IHJlZ251bSA8PSBEUl9MQVNUQUREUjsgcmVnbnVtKysp Ci0rICAgIGkzODZfbGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlkLCByZWdudW0sIDApOwotK30K KysgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKKysJCSAgICAgICJ0YXJnZXRfZGV0 YWNoX3dhdGNocG9pbnRzICgpID0gJWxkXG4iLAorKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHJl dHZhbCk7CisrICByZXR1cm4gcmV0dmFsOworK30KICsKICBzdGF0aWMgdm9pZAotIGkzODZfbGlu dXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCi0gewotQEAgLTg2OCw2ICs4ODMsNyBAQCBfaW5p dGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKLSAgIGkzODZfZHJfbG93LnJlc2V0X2FkZHIg PSBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHI7Ci0gICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzID0g aTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzOwotICAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0g aTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXM7Ci0rICBpMzg2X2RyX2xvdy5kZXRhY2ggPSBpMzg2 X2xpbnV4X2RyX2RldGFjaDsKLSAgIGkzODZfc2V0X2RlYnVnX3JlZ2lzdGVyX2xlbmd0aCAoNCk7 Ci0gCi0gICAvKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBwdHJhY2UgcmVzdW1lIG1ldGhvZC4gICov Ci1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtdGRlcC5jIGIvZ2RiL2kzODYtbGludXgtdGRl cC5jCi1pbmRleCA1YWNkMjI5Li5hZWMxNzM2IDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbGludXgt dGRlcC5jCi0rKysgYi9nZGIvaTM4Ni1saW51eC10ZGVwLmMKLUBAIC03OTgsNiArNzk4LDkgQEAg aTM4Nl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTM4Nl9s aW51eF9nZXRfc3lzY2FsbF9udW1iZXIpOwotIAotICAgc2V0X2dkYmFyY2hfZ2V0X3NpZ2luZm9f dHlwZSAoZ2RiYXJjaCwgbGludXhfZ2V0X3NpZ2luZm9fdHlwZSk7Ci0rCi0rICBzZXRfZ2RiYXJj aF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29u dmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBl IHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9p Mzg2LW5hdC5jIGIvZ2RiL2kzODYtbmF0LmMKLWluZGV4IGZhMGNjZTYuLjQyZGZkMWMgMTAwNjQ0 Ci0tLS0gYS9nZGIvaTM4Ni1uYXQuYwotKysrIGIvZ2RiL2kzODYtbmF0LmMKLUBAIC01MjcsNiAr NTI3LDE3IEBAIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVu LCBpbnQgdHlwZSkKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotKy8qIFNlZSB0YXJnZXRfZGV0 YWNoX3dhdGNocG9pbnRzLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0raTM4Nl9kZXRhY2hfd2F0Y2hw b2ludHMgKHZvaWQpCi0rewotKyAgaWYgKGkzODZfZHJfbG93LmRldGFjaCkKLSsgICAgaTM4Nl9k cl9sb3cuZGV0YWNoICgpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotIC8qIFJldHVybiBub24t emVybyBpZiB3ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3RhcnRzIGF0Ci0gICAg YWRkcmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8KLSAKLUBAIC02 NzksNiArNjkwLDcgQEAgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0 KQotICAgdC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRy ZXNzOwotICAgdC0+dG9faW5zZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50 OwotICAgdC0+dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50Owot KyAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0g ICB0LT50b19pbnNlcnRfaHdfYnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7 Ci0gICB0LT50b19yZW1vdmVfaHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9p bnQ7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKLWlu ZGV4IDczMTdlN2QuLmVhOTE0YTUgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1uYXQuaAotKysrIGIv Z2RiL2kzODYtbmF0LmgKLUBAIC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93 YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKik7Ci0gICAgICAgdW5zZXRfc3RhdHVzICAg ICAgICAgICAgIC0tIHVuc2V0IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKLSAJCQkJ ICBzdGF0dXMgKERSNikgcmVnaXN0ZXIgZm9yIGFsbCBMV1BzCi0gCi0rICAgICAgZGV0YWNoICAg ICAgICAgICAgICAgICAgIC0tIGNsZWFyIGFsbCBkZWJ1ZyByZWdpc3RlcnMgb2Ygb25seSB0aGUK LSsJCQkJICBJTkZFUklPUl9QVElEIHRhc2sgd2l0aG91dCBhZmZlY3RpbmcgYW55Ci0rCQkJCSAg cmVnaXN0ZXIgY2FjaGVzLgotKwotICAgIEFkZGl0aW9uYWxseSwgdGhlIG5hdGl2ZSBmaWxlIHNo b3VsZCBzZXQgdGhlIGRlYnVnX3JlZ2lzdGVyX2xlbmd0aAotICAgIGZpZWxkIHRvIDQgb3IgOCBk ZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIGZvcgotICAgIGRldWJnIHJlZ2lz dGVycy4gICovCi1AQCAtNzMsNiArNzcsNyBAQCBzdHJ1Y3QgaTM4Nl9kcl9sb3dfdHlwZQotICAg ICB2b2lkICgqcmVzZXRfYWRkcikgKGludCk7Ci0gICAgIHVuc2lnbmVkIGxvbmcgKCpnZXRfc3Rh dHVzKSAodm9pZCk7Ci0gICAgIHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNpZ25lZCBsb25nKTsK LSsgICAgdm9pZCAoKmRldGFjaCkgKHZvaWQpOwotICAgICBpbnQgZGVidWdfcmVnaXN0ZXJfbGVu Z3RoOwotICAgfTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvaWE2NC1saW51eC10ZGVwLmMgYi9nZGIv aWE2NC1saW51eC10ZGVwLmMKLWluZGV4IGIxMmYyODIuLjhkZGIyNGEgMTAwNjQ0Ci0tLS0gYS9n ZGIvaWE2NC1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9pYTY0LWxpbnV4LXRkZXAuYwotQEAgLTI2 LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSAib3NhYmkuaCIKLSAjaW5jbHVkZSAic29saWItc3ZyNC5o IgotICNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5jbHVkZSAibGludXgtdGRlcC5oIgotIAotIC8q IFRoZSBzaWd0cmFtcCBjb2RlIGlzIGluIGEgbm9uLXJlYWRhYmxlIChleGVjdXRhYmxlLW9ubHkp IHJlZ2lvbgotICAgIG9mIG1lbW9yeSBjYWxsZWQgdGhlIGBgZ2F0ZSBwYWdlJycuICBUaGUgYWRk cmVzc2VzIGluIHF1ZXN0aW9uCi1AQCAtMTM5LDYgKzE0MCw5IEBAIGlhNjRfbGludXhfaW5pdF9h YmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0g ICAvKiBFbmFibGUgVExTIHN1cHBvcnQuICAqLwotICAgc2V0X2dkYmFyY2hfZmV0Y2hfdGxzX2xv YWRfbW9kdWxlX2FkZHJlc3MgKGdkYmFyY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3ZyNF9mZXRjaF9vYmpmaWxlX2xpbmtfbWFwKTsKLSsKLSsgIHNl dF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBs aW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBw cm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1kaWZmIC0tZ2l0 IGEvZ2RiL2luZmNhbGwuYyBiL2dkYi9pbmZjYWxsLmMKLWluZGV4IGU2NDI4OTQuLjZhYzk1Y2Mg MTAwNjQ0Ci0tLS0gYS9nZGIvaW5mY2FsbC5jCi0rKysgYi9nZGIvaW5mY2FsbC5jCi1AQCAtMjUy LDkgKzI1MiwxNyBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24s IHN0cnVjdCB0eXBlICoqcmV0dmFsX3R5cGUpCi0gICAgICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUp ID09IFRZUEVfQ09ERV9GVU5DCi0gCSAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RF X01FVEhPRCkKLSAJewotLQkgIGZ1bmFkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyIChnZGJhcmNoLCBmdW5hZGRyLAotLQkJCQkJCQkmY3VycmVudF90YXJnZXQpOwotLQkg IHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7Ci0rCSAgQ09SRV9BRERSIGZ1 bmFkZHIyOwotKwotKwkgIGZ1bmFkZHIyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJf YWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKLSsJCQkJCQkJICZjdXJyZW50X3RhcmdldCk7Ci0rCi0r CSAgLyogSWYgVFlQRV9HTlVfSUZVTkMgaXMgY3VycmVudGx5IG5vdCByZXNvbHZhYmxlIGtlZXAg aXRzIHR5cGUuICAqLwotKwkgIGlmIChmdW5hZGRyMiAhPSBmdW5hZGRyIHx8ICFUWVBFX0dOVV9J RlVOQyAoZnR5cGUpKQotKwkgICAgewotKwkgICAgICBmdW5hZGRyID0gZnVuYWRkcjI7Ci0rCSAg ICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7Ci0rCSAgICB9Ci0gCX0K LSAgICAgfQotICAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfSU5UKQotZGlmZiAtLWdpdCBh L2dkYi9pbmZjbWQuYyBiL2dkYi9pbmZjbWQuYwotaW5kZXggMjljZjQyNy4uMGVjNTk4ZSAxMDA2 NDQKLS0tLSBhL2dkYi9pbmZjbWQuYwotKysrIGIvZ2RiL2luZmNtZC5jCi1AQCAtODA4LDcgKzgw OCw3IEBAIG5leHRpX2NvbW1hbmQgKGNoYXIgKmNvdW50X3N0cmluZywgaW50IGZyb21fdHR5KQot ICAgc3RlcF8xICgxLCAxLCBjb3VudF9zdHJpbmcpOwotIH0KLSAKLS1zdGF0aWMgdm9pZAotK3Zv aWQKLSBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFyZykKKyBkZWJ1 Z190b190ZXJtaW5hbF9pbml0ICh2b2lkKQogIHsKLSAgIGludCB0aHJlYWQgPSAqIChpbnQgKikg YXJnOwotQEAgLTg0OCwxMCArODQ4LDEzIEBAIHN0ZXBfMSAoaW50IHNraXBfc3Vicm91dGluZXMs IGludCBzaW5nbGVfaW5zdCwgY2hhciAqY291bnRfc3RyaW5nKQotIAotICAgaWYgKCFzaW5nbGVf aW5zdCB8fCBza2lwX3N1YnJvdXRpbmVzKQkJLyogbGVhdmUgc2kgY29tbWFuZCBhbG9uZSAqLwot ICAgICB7Ci0rICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAo KTsKLSsKLSAgICAgICBpZiAoaW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQotICAJdGhy ZWFkID0gcGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7Ci0gCi0gICAgICAgc2V0X2xv bmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKLSsgICAgICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9 IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOwotIAotICAgICAgIG1ha2VfY2xl YW51cCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKLSAgICAg fQotQEAgLTEyMDAsNiArMTIwMywxNSBAQCBzaWduYWxfY29tbWFuZCAoY2hhciAqc2lnbnVtX2V4 cCwgaW50IGZyb21fdHR5KQotICAgcHJvY2VlZCAoKENPUkVfQUREUikgLTEsIG91cnNpZywgMCk7 Ci0gfQotIAotKy8qIEEgY29udGludWF0aW9uIGNhbGxiYWNrIGZvciB1bnRpbF9uZXh0X2NvbW1h bmQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rdW50aWxfbmV4dF9jb250aW51YXRpb24gKHZvaWQg KmFyZykKLSt7Ci0rICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gYXJnOwotKyAgZGVsZXRlX2xv bmdqbXBfYnJlYWtwb2ludCAodHAtPm51bSk7Ci0rfQotKwotIC8qIFByb2NlZWQgdW50aWwgd2Ug cmVhY2ggYSBkaWZmZXJlbnQgc291cmNlIGxpbmUgd2l0aCBwYyBncmVhdGVyIHRoYW4KLSAgICBv dXIgY3VycmVudCBvbmUgb3IgZXhpdCB0aGUgZnVuY3Rpb24uICBXZSBza2lwIGNhbGxzIGluIGJv dGggY2FzZXMuCi0gCi1AQCAtMTIxNiw2ICsxMjI4LDggQEAgdW50aWxfbmV4dF9jb21tYW5kIChp bnQgZnJvbV90dHkpCi0gICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwotICAgc3RydWN0IHN5bXRhYl9h bmRfbGluZSBzYWw7Ci0gICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gaW5mZXJpb3JfdGhyZWFk ICgpOwotKyAgaW50IHRocmVhZCA9IHRwLT5udW07Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2No YWluOwotIAotICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7Ci0gICBzZXRfc3RlcF9mcmFtZSAo KTsKLUBAIC0xMjUxLDcgKzEyNjUsMTkgQEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90 dHkpCitAQCAtMzY4OCw2ICszNzA3LDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQorICAg Y3VycmVudF90YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1vdmVf aHdfYnJlYWtwb2ludDsKKyAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50ID0g ZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQ7CisgICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVf d2F0Y2hwb2ludCA9IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OworKyAgY3VycmVudF90YXJn ZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzID0gZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRzOwor ICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gZGVidWdfdG9fc3Rv cHBlZF9ieV93YXRjaHBvaW50OworICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9kYXRhX2Fk ZHJlc3MgPSBkZWJ1Z190b19zdG9wcGVkX2RhdGFfYWRkcmVzczsKKyAgIGN1cnJlbnRfdGFyZ2V0 LnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBkZWJ1Z190b193YXRjaHBvaW50X2Fk ZHJfd2l0aGluX3JhbmdlOworZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90YXJnZXQu aAoraW5kZXggM2M4YzAxNy4uZTk1MDNkZSAxMDA2NDQKKy0tLSBhL2dkYi90YXJnZXQuaAorKysr IGIvZ2RiL3RhcmdldC5oCitAQCAtNDMzLDYgKzQzMyw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCisg ICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0XyogbWFjcm9zLiAg Ki8KKyAgICAgaW50ICgqdG9fcmVtb3ZlX3dhdGNocG9pbnQpIChDT1JFX0FERFIsIGludCwgaW50 LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKKyAgICAgaW50ICgqdG9faW5zZXJ0X3dhdGNocG9pbnQp IChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKKysgICAgaW50ICgq dG9fZGV0YWNoX3dhdGNocG9pbnRzKSAodm9pZCk7CiAgCi0gICB0cC0+c3RlcF9tdWx0aSA9IDA7 CQkvKiBPbmx5IG9uZSBjYWxsIHRvIHByb2NlZWQgKi8KKyAgICAgaW50ICgqdG9fc3RvcHBlZF9i eV93YXRjaHBvaW50KSAodm9pZCk7CisgICAgIGludCB0b19oYXZlX3N0ZXBwYWJsZV93YXRjaHBv aW50OworQEAgLTEzMTYsNiArMTMxNywxNSBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19z dHIgKHB0aWRfdCBwdGlkKTsKKyAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludChhZGRy LCBsZW4sIHR5cGUsIGNvbmQpIFwKKyAgICAgICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dh dGNocG9pbnQpIChhZGRyLCBsZW4sIHR5cGUsIGNvbmQpCiAgCi0rICBzZXRfbG9uZ2ptcF9icmVh a3BvaW50ICh0aHJlYWQpOwotKyAgdHAtPmluaXRpYXRpbmdfZnJhbWUgPSBnZXRfZnJhbWVfaWQg KGZyYW1lKTsKLSsgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBfYnJl YWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKKysvKiBDbGVhciBhbGwgZGVidWcgcmVnaXN0ZXJz IHdpdGhvdXQgYWZmZWN0aW5nIGFueSByZWdpc3RlciBjYWNoZXMuICBGdW5jdGlvbgorKyAgIGFj dHMgb24gSU5GRVJJT1JfUFRJRCB3aGljaCBzaG91bGQgYmUgdGhlIGZvcmtlZC1vZmYgcHJvY2Vz cywgZWl0aGVyIHRoZQorKyAgIG5vbi10aHJlYWRlZCBjaGlsZCBvbmUgb3IgdGhlIHRocmVhZGVk IHBhcmVudCBvbmUsIGRlcGVuZGluZyBvbiBgc2V0CisrICAgZm9sbG93LWZvcmstbW9kZScuICBC b3RoIHdhdGNocG9pbnRzIGFuZCBoYXJkd2FyZSBicmVha3BvaW50cyBnZXQgcmVtb3ZlZC4KKysg ICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlLiAgKi8KICsKLSAgIHByb2NlZWQg KChDT1JFX0FERFIpIC0xLCBUQVJHRVRfU0lHTkFMX0RFRkFVTFQsIDEpOworKyNkZWZpbmUJdGFy Z2V0X2RldGFjaF93YXRjaHBvaW50cygpCVwKKysgICAgICgqY3VycmVudF90YXJnZXQudG9fZGV0 YWNoX3dhdGNocG9pbnRzKSAoKQogKwotKyAgaWYgKHRhcmdldF9jYW5fYXN5bmNfcCAoKSAmJiBp c19ydW5uaW5nIChpbmZlcmlvcl9wdGlkKSkKLSsgICAgewotKyAgICAgIGRpc2NhcmRfY2xlYW51 cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgYWRkX2NvbnRpbnVhdGlvbiAodHAsIHVudGlsX25leHRf Y29udGludWF0aW9uLCB0cCwgTlVMTCk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTQyOCw2ICsxNDU0LDcg QEAgZmluaXNoX2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICphcmcpCi0gICBpZiAoYnMgIT0g TlVMTCAmJiB0cC0+cHJvY2VlZF90b19maW5pc2gpCi0gICAgIG9ic2VydmVyX25vdGlmeV9ub3Jt YWxfc3RvcCAoYnMsIDEgLyogcHJpbnQgZnJhbWUgKi8pOwotICAgZGVsZXRlX2JyZWFrcG9pbnQg KGEtPmJyZWFrcG9pbnQpOwotKyAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAoaW5mZXJpb3Jf dGhyZWFkICgpLT5udW0pOwotIH0KKyAjZGVmaW5lIHRhcmdldF9pbnNlcnRfaHdfYnJlYWtwb2lu dChnZGJhcmNoLCBicF90Z3QpIFwKKyAgICAgICgqY3VycmVudF90YXJnZXQudG9faW5zZXJ0X2h3 X2JyZWFrcG9pbnQpIChnZGJhcmNoLCBicF90Z3QpCiAgCi0gc3RhdGljIHZvaWQKLUBAIC0xNTEx LDYgKzE1MzgsNyBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50 OwotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSAgIHN0cnVjdCBmaW5pc2hfY29tbWFu ZF9jb250aW51YXRpb25fYXJncyAqY2FyZ3M7Ci0rICBpbnQgdGhyZWFkID0gdHAtPm51bTsKLSAK LSAgIHNhbCA9IGZpbmRfcGNfbGluZSAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksIDApOwotICAgc2Fs LnBjID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7Ci1AQCAtMTUyMSw2ICsxNTQ5LDEwIEBAIGZpbmlz aF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lKQotIAotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChi cmVha3BvaW50KTsKLSAKLSsgIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0rICB0 cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotKyAgbWFrZV9jbGVh bnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwotKwotICAg dHAtPnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9wX3JlZ2lzdGVycywg cGxlYXNlLi4uICAqLwotICAgY2FyZ3MgPSB4bWFsbG9jIChzaXplb2YgKCpjYXJncykpOwotIAot ZGlmZiAtLWdpdCBhL2dkYi9pbmZlcmlvci5oIGIvZ2RiL2luZmVyaW9yLmgKLWluZGV4IGU1NTdk NmMuLmQ0YWUxZGYgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mZXJpb3IuaAotKysrIGIvZ2RiL2luZmVy aW9yLmgKLUBAIC0yNzUsNiArMjc1LDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF9j b21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpOwotIAotIGV4dGVybiB2b2lkIGludGVy cnVwdF90YXJnZXRfMSAoaW50IGFsbF90aHJlYWRzKTsKLSAKLStleHRlcm4gdm9pZCBkZWxldGVf bG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFyZyk7Ci0rCi0gZXh0ZXJuIHZvaWQg ZGV0YWNoX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKLSAKLSBleHRlcm4gdm9pZCBub3RpY2VfbmV3 X2luZmVyaW9yIChwdGlkX3QsIGludCwgaW50KTsKLWRpZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMg Yi9nZGIvaW5mcnVuLmMKLWluZGV4IDlhNWMzYTguLmVkMmY1MzAgMTAwNjQ0Ci0tLS0gYS9nZGIv aW5mcnVuLmMKLSsrKyBiL2dkYi9pbmZydW4uYwotQEAgLTQ1LDYgKzQ1LDggQEAKLSAjaW5jbHVk ZSAibGFuZ3VhZ2UuaCIKLSAjaW5jbHVkZSAic29saWIuaCIKLSAjaW5jbHVkZSAibWFpbi5oIgot KyNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCi0rI2luY2x1ZGUgImJsb2NrLmgiCi0gI2luY2x1ZGUg ImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVkZSAibWkvbWktY29tbW9uLmgiCi0gI2luY2x1ZGUgImV2 ZW50LXRvcC5oIgotQEAgLTIwMjQsNiArMjAyNiw4IEBAIHN0YXRpYyB2b2lkIGluc2VydF9zdGVw X3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCQkJ CQkJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNyX3NhbCwKLSAJCQkJCQkgIHN0cnVjdCBmcmFt ZV9pZCBzcl9pZCk7Ci0gc3RhdGljIHZvaWQgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9p bnQgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUik7Ci0rc3RhdGljIHZvaWQgY2hlY2tfZXhj ZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICosCi0rCQkJCSAg ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBzdHJ1Y3Qgc3ltYm9sICopOwotIAotIHN0YXRpYyB2b2lk IHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKLSBz dGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0 ZSAqZWNzKTsKLUBAIC0yOTcxLDYgKzI5NzUsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChz dHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKLSAKLSAgICAgICBzdG9wX3BjID0g cmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7Ci0gCi0r ICAgICAgLyogQ2xlYXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMg c3RvcCB3aGljaCBjb3VsZAotKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3Rh dF9leHBsYWluc19zaWduYWwuICAqLwotKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVj cy0+d3MpOwotKwotICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdAotIAk9IGJw c3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAoZ2V0X2N1cnJlbnRfcmVnY2Fj aGUgKCkpLAotIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRpZCk7Ci1AQCAtMzA1NSw2ICszMDYz LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0 YXRlICplY3MpCi0gCi0gICAgICAgc3RvcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90aHJl YWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOwotIAotKyAgICAgIC8qIENsZWFyIFdBVENIUE9JTlRf VFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0b3Agd2hpY2ggY291bGQKLSsJIGNvbmZ1 c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRfZXhwbGFpbnNfc2lnbmFsLiAgKi8KLSsg ICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3MtPndzKTsKLSsKLSAgICAgICAvKiBEbyB3 aGF0ZXZlciBpcyBuZWNlc3NhcnkgdG8gdGhlIHBhcmVudCBicmFuY2ggb2YgdGhlIHZmb3JrLiAg Ki8KLSAgICAgICBoYW5kbGVfdmZvcmtfY2hpbGRfZXhlY19vcl9leGl0ICgxKTsKLSAKLUBAIC0z NzkzLDIzICszODA1LDMzIEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgotIAotIAllY3MtPmV2 ZW50X3RocmVhZC0+c3RlcHBpbmdfb3Zlcl9icmVha3BvaW50ID0gMTsKLSAKLS0JaWYgKCFnZGJh cmNoX2dldF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNoKQotLQkgICAgfHwgIWdkYmFyY2hfZ2V0 X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLCBmcmFtZSwgJmptcF9idWZfcGMpKQotKwlpZiAod2hh dC5pc19sb25nam1wKQotIAkgIHsKLS0JICAgIGlmIChkZWJ1Z19pbmZydW4pCi0tCSAgICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwKLSsJICAgIGlmICghZ2RiYXJjaF9nZXRf bG9uZ2ptcF90YXJnZXRfcCAoZ2RiYXJjaCkKLSsJCXx8ICFnZGJhcmNoX2dldF9sb25nam1wX3Rh cmdldCAoZ2RiYXJjaCwKLSsJCQkJCQlmcmFtZSwgJmptcF9idWZfcGMpKQotKwkgICAgICB7Ci0r CQlpZiAoZGVidWdfaW5mcnVuKQotKwkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs ICJcCi0gaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dl dF9sb25nam1wX3RhcmdldClcbiIpOwotLQkgICAga2VlcF9nb2luZyAoZWNzKTsKLS0JICAgIHJl dHVybjsKLS0JICB9Ci0rCQlrZWVwX2dvaW5nIChlY3MpOwotKwkJcmV0dXJuOwotKwkgICAgICB9 Ci0gCi0tCS8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUg YnJlYWtwb2ludAotLQkgICB3aXRoIGEgbG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludC4gICovCi0t CWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0rCSAg ICAvKiBXZSdyZSBnb2luZyB0byByZXBsYWNlIHRoZSBjdXJyZW50IHN0ZXAtcmVzdW1lIGJyZWFr cG9pbnQKLSsJICAgICAgIHdpdGggYSBsb25nam1wLXJlc3VtZSBicmVha3BvaW50LiAgKi8KLSsJ ICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0g Ci0tCS8qIEluc2VydCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFkZHJlc3MuICAqLwotLQlpbnNl cnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoZ2RiYXJjaCwgam1wX2J1Zl9wYyk7Ci0rCSAg ICAvKiBJbnNlcnQgYSBicmVha3BvaW50IGF0IHJlc3VtZSBhZGRyZXNzLiAgKi8KLSsJICAgIGlu c2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3BjKTsKLSsJ ICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jID0gZ2V0X2ZyYW1l X2Z1bmN0aW9uIChmcmFtZSk7Ci0gCi0rCSAgICBpZiAoZnVuYykKLSsJICAgICAgY2hlY2tfZXhj ZXB0aW9uX3Jlc3VtZSAoZWNzLCBmcmFtZSwgZnVuYyk7Ci0rCSAgfQotIAlrZWVwX2dvaW5nIChl Y3MpOwotIAlyZXR1cm47Ci0gCi1AQCAtMzgyMSw2ICszODQzLDUzIEBAIGluZnJ1bjogQlBTVEFU X1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4i KTsKLSAJZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9p bnQgIT0gTlVMTCk7Ci0gCWRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50 X3RocmVhZCk7Ci0gCi0rCWlmICghd2hhdC5pc19sb25nam1wKQotKwkgIHsKLSsJICAgIC8qIFRo ZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHRvIGNvbnNpZGVyLgotKwkgICAgICAgCi0rCSAgICAgICAx LiBUaGUgaW5pdGlhdGluZyBmcmFtZSBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhpcyBjYXNlCi0r CSAgICAgICB3ZSBtdXN0IHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMgZ29uZSB0b28g ZmFyLgotKwkgICAgICAgCi0rCSAgICAgICAyLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlzdHMs IGFuZCBpcyB0aGUgc2FtZSBhcyB0aGUKLSsJICAgICAgIGN1cnJlbnQgZnJhbWUuCi0rCSAgICAg ICAKLSsJICAgICAgIDIuMS4gSWYgd2UgYXJlIHN0ZXBwaW5nLCBkZWZlciB0byB0aGUgc3RlcHBp bmcgbG9naWMuCi0rCSAgICAgICAKLSsJICAgICAgIDIuMi4gT3RoZXJ3aXNlLCB3ZSBhcmUgbm90 IHN0ZXBwaW5nLCBzbyB3ZSBhcmUgZG9pbmcgYQotKwkgICAgICAgImZpbmlzaCIgYW5kIHdlIGhh dmUgcmVhY2hlZCB0aGUgY2FsbGluZyBmcmFtZS4gIFNvLAotKwkgICAgICAgc3RvcC4KLSsJICAg ICAgIAotKwkgICAgICAgMy4gVGhlIGluaXRpYXRpbmcgZnJhbWUgZXhpc3RzIGFuZCBpcyBkaWZm ZXJlbnQgZnJvbQotKwkgICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBUaGlzIG1lYW5zIHRoZSBl eGNlcHRpb24gaGFzIGJlZW4KLSsJICAgICAgIGNhdWdodCBiZW5lYXRoIHRoZSBpbml0aWF0aW5n IGZyYW1lLCBzbyBrZWVwIGdvaW5nLiAgKi8KLSsJICAgIHN0cnVjdCBmcmFtZV9pbmZvICppbml0 X2ZyYW1lCi0rCSAgICAgID0gZnJhbWVfZmluZF9ieV9pZCAoZWNzLT5ldmVudF90aHJlYWQtPmlu aXRpYXRpbmdfZnJhbWUpOwotKwkgICAgaWYgKGluaXRfZnJhbWUpCi0rCSAgICAgIHsKLSsJCXN0 cnVjdCBmcmFtZV9pZCBjdXJyZW50X2lkCi0rCQkgID0gZ2V0X2ZyYW1lX2lkIChnZXRfY3VycmVu dF9mcmFtZSAoKSk7Ci0rCQlpZiAoZnJhbWVfaWRfZXEgKGN1cnJlbnRfaWQsCi0rCQkJCSBlY3Mt PmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSkpCi0rCQkgIHsKLSsJCSAgICBpZiAoZWNz LT5ldmVudF90aHJlYWQtPnN0ZXBfcmFuZ2Vfc3RhcnQpCi0rCQkgICAgICB7Ci0rCQkJLyogQ2Fz ZSAyLjEuICAqLwotKwkJCWJyZWFrOwotKwkJICAgICAgfQotKwkJICAgIGVsc2UKLSsJCSAgICAg IHsKLSsJCQkvKiBDYXNlIDIuMjogZmFsbCB0aHJvdWdoLiAgKi8KLSsJCSAgICAgIH0KLSsJCSAg fQotKwkJZWxzZQotKwkJICB7Ci0rCQkgICAgLyogQ2FzZSAzLiAgKi8KLSsJCSAgICBrZWVwX2dv aW5nIChlY3MpOwotKwkJICAgIHJldHVybjsKLSsJCSAgfQotKwkgICAgICB9Ci0rCSAgfQotKwot IAllY3MtPmV2ZW50X3RocmVhZC0+c3RvcF9zdGVwID0gMTsKLSAJcHJpbnRfc3RvcF9yZWFzb24g KEVORF9TVEVQUElOR19SQU5HRSwgMCk7Ci0gCXN0b3Bfc3RlcHBpbmcgKGVjcyk7Ci1AQCAtNDg0 MCw2ICs0OTA5LDk2IEBAIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQotICAgICBzZXRfbW9tZW50YXJ5X2JyZWFr cG9pbnRfYXRfcGMgKGdkYmFyY2gsIHBjLCBicF9sb25nam1wX3Jlc3VtZSk7Ci0gfQotIAotKy8q IEluc2VydCBhbiBleGNlcHRpb24gcmVzdW1lIGJyZWFrcG9pbnQuICBUUCBpcyB0aGUgdGhyZWFk IHRocm93aW5nCi0rICAgdGhlIGV4Y2VwdGlvbi4gIFRoZSBibG9jayBCIGlzIHRoZSBibG9jayBv ZiB0aGUgdW53aW5kZXIgZGVidWcgaG9vawotKyAgIGZ1bmN0aW9uLiAgRlJBTUUgaXMgdGhlIGZy YW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNhbGwgdG8gdGhpcwotKyAgIGZ1bmN0aW9uLiAgU1lN IGlzIHRoZSBzeW1ib2wgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGhvbGRpbmcgdGhlCi0rICAg dGFyZ2V0IFBDIG9mIHRoZSBleGNlcHRpb24uICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5zZXJ0 X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKLSsJ CQkJICAgIHN0cnVjdCBibG9jayAqYiwKLSsJCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSwKLSsJCQkJICAgIHN0cnVjdCBzeW1ib2wgKnN5bSkKLSt7Ci0rICBzdHJ1Y3QgZ2RiX2V4Y2Vw dGlvbiBlOwotKwotKyAgLyogV2Ugd2FudCB0byBpZ25vcmUgZXJyb3JzIGhlcmUuICAqLwotKyAg VFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc3lt Ym9sICp2c3ltOwotKyAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7Ci0rICAgICAgQ09SRV9BRERS IGhhbmRsZXI7Ci0rICAgICAgc3RydWN0IGJyZWFrcG9pbnQgKmJwOwotKwotKyAgICAgIHZzeW0g PSBsb29rdXBfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pLCBiLCBWQVJfRE9NQUlO LCBOVUxMKTsKLSsgICAgICB2YWx1ZSA9IHJlYWRfdmFyX3ZhbHVlICh2c3ltLCBmcmFtZSk7Ci0r ICAgICAgaGFuZGxlciA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbHVlKTsKLSsKLSsgICAgICAvKiBX ZSdyZSBnb2luZyB0byByZXBsYWNlIHRoZSBjdXJyZW50IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQK LSsJIHdpdGggYW4gZXhjZXB0aW9uLXJlc3VtZSBicmVha3BvaW50LiAgKi8KLSsgICAgICBkZWxl dGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAodHApOwotKwotKyAgICAgIGlmIChkZWJ1Z19pbmZy dW4pCi0rCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkgICAgImluZnJ1bjog ZXhjZXB0aW9uIHJlc3VtZSBhdCAlbHhcbiIsCi0rCQkJICAgICh1bnNpZ25lZCBsb25nKSBoYW5k bGVyKTsKLSsKLSsgICAgICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2V0 X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJCQkJCSAgIGhhbmRsZXIsIGJwX2V4Y2VwdGlvbl9yZXN1 bWUpOwotKyAgICAgIGluZmVyaW9yX3RocmVhZCAoKS0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9 IGJwOwotKyAgICB9Ci0rfQotKwotKy8qIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9u IGhhcyBiZWVuIGludGVyY2VwdGVkLiAgQ2hlY2sgdG8KLSsgICBzZWUgd2hldGhlciB0aGUgZXhj ZXB0aW9uJ3MgZGVzdGluYXRpb24gaXMgb2YgaW50ZXJlc3QsIGFuZCBpZiBzbywKLSsgICBzZXQg YW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50IHRoZXJlLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK2NoZWNrX2V4Y2VwdGlvbl9yZXN1bWUgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0 ZSAqZWNzLAotKwkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgc3RydWN0IHN5bWJvbCAqZnVu YykKLSt7Ci0rICBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOwotKwotKyAgVFJZX0NBVENIIChlLCBS RVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYmxvY2sgKmI7Ci0rICAgICAg c3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKLSsgICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0r ICAgICAgaW50IGFyZ25vID0gMDsKLSsKLSsgICAgICAvKiBUaGUgZXhjZXB0aW9uIGJyZWFrcG9p bnQgaXMgYSB0aHJlYWQtc3BlY2lmaWMgYnJlYWtwb2ludCBvbgotKwkgdGhlIHVud2luZGVyJ3Mg ZGVidWcgaG9vaywgZGVjbGFyZWQgYXM6Ci0rCSAKLSsJIHZvaWQgX1Vud2luZF9EZWJ1Z0hvb2sg KHZvaWQgKmNmYSwgdm9pZCAqaGFuZGxlcik7Ci0rCSAKLSsJIFRoZSBDRkEgYXJndW1lbnQgaW5k aWNhdGVzIHRoZSBmcmFtZSB0byB3aGljaCBjb250cm9sIGlzCi0rCSBhYm91dCB0byBiZSB0cmFu c2ZlcnJlZC4gIEhBTkRMRVIgaXMgdGhlIGRlc3RpbmF0aW9uIFBDLgotKwkgCi0rCSBXZSBpZ25v cmUgdGhlIENGQSBhbmQgc2V0IGEgdGVtcG9yYXJ5IGJyZWFrcG9pbnQgYXQgSEFORExFUi4KLSsJ IFRoaXMgaXMgbm90IGV4dHJlbWVseSBlZmZpY2llbnQgYnV0IGl0IGF2b2lkcyBpc3N1ZXMgaW4g Z2RiCi0rCSB3aXRoIGNvbXB1dGluZyB0aGUgRFdBUkYgQ0ZBLCBhbmQgaXQgYWxzbyB3b3JrcyBl dmVuIGluIHdlaXJkCi0rCSBjYXNlcyBzdWNoIGFzIHRocm93aW5nIGFuIGV4Y2VwdGlvbiBmcm9t IGluc2lkZSBhIHNpZ25hbAotKwkgaGFuZGxlci4gICovCi0rCi0rICAgICAgYiA9IFNZTUJPTF9C TE9DS19WQUxVRSAoZnVuYyk7Ci0rICAgICAgQUxMX0JMT0NLX1NZTUJPTFMgKGIsIGl0ZXIsIHN5 bSkKLSsJewotKwkgIGlmICghU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pKQotKwkgICAgY29udGlu dWU7Ci0rCi0rCSAgaWYgKGFyZ25vID09IDApCi0rCSAgICArK2FyZ25vOwotKwkgIGVsc2UKLSsJ ICAgIHsKLSsJICAgICAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5l dmVudF90aHJlYWQsCi0rCQkJCQkJICBiLCBmcmFtZSwgc3ltKTsKLSsJICAgICAgYnJlYWs7Ci0r CSAgICB9Ci0rCX0KLSsgICAgfQotK30KLSsKLSBzdGF0aWMgdm9pZAotIHN0b3Bfc3RlcHBpbmcg KHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQotIHsKLWRpZmYgLS1naXQgYS9n ZGIvanYtbGFuZy5jIGIvZ2RiL2p2LWxhbmcuYwotaW5kZXggMjRiNjY3My4uMjJlZDk2MCAxMDA2 NDQKLS0tLSBhL2dkYi9qdi1sYW5nLmMKLSsrKyBiL2dkYi9qdi1sYW5nLmMKLUBAIC0xMTIxLDYg KzExMjEsNyBAQCBjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IgZXhwX2Rlc2NyaXB0b3JfamF2 YSA9Ci0gewotICAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkLAotICAgb3BlcmF0b3JfbGVuZ3RoX3N0 YW5kYXJkLAotKyAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQsCi0gICBvcF9uYW1lX3N0YW5kYXJk LAotICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKLSAgIGV2YWx1YXRlX3N1YmV4cF9qYXZh Ci1kaWZmIC0tZ2l0IGEvZ2RiL2xhbmd1YWdlLmggYi9nZGIvbGFuZ3VhZ2UuaAotaW5kZXggNGY3 OGEyOC4uZTAwOTZmNSAxMDA2NDQKLS0tLSBhL2dkYi9sYW5ndWFnZS5oCi0rKysgYi9nZGIvbGFu Z3VhZ2UuaAotQEAgLTI1OCw3ICsyNTgsNiBAQCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbgotICAgICAg ICB2YXJpYWJsZXMuICAqLwotIAotICAgICBzdHJ1Y3Qgc3ltYm9sICooKmxhX2xvb2t1cF9zeW1i b2xfbm9ubG9jYWwpIChjb25zdCBjaGFyICosCi0tCQkJCQkJIGNvbnN0IGNoYXIgKiwKLSAJCQkJ CQkgY29uc3Qgc3RydWN0IGJsb2NrICosCi0gCQkJCQkJIGNvbnN0IGRvbWFpbl9lbnVtKTsKLSAK LWRpZmYgLS1naXQgYS9nZGIvbGluZXNwZWMuYyBiL2dkYi9saW5lc3BlYy5jCi1pbmRleCA3NWE3 NGUyLi5lYzRkNTY5IDEwMDY0NAotLS0tIGEvZ2RiL2xpbmVzcGVjLmMKLSsrKyBiL2dkYi9saW5l c3BlYy5jCi1AQCAtNDAsNiArNDAsNyBAQAotICNpbmNsdWRlICJpbnRlcnBzLmgiCi0gI2luY2x1 ZGUgIm1pL21pLWNtZHMuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0rI2luY2x1ZGUgImFyY2gt dXRpbHMuaCIKLSAKLSAvKiBXZSBzaGFyZSB0aGlzIG9uZSB3aXRoIHN5bXRhYi5jLCBidXQgaXQg aXMgbm90IGV4cG9ydGVkIHdpZGVseS4gKi8KLSAKLUBAIC01MCw4ICs1MSw2IEBAIGV4dGVybiBj aGFyICpvcGVyYXRvcl9jaGFycyAoY2hhciAqLCBjaGFyICoqKTsKLSBzdGF0aWMgdm9pZCBpbml0 aWFsaXplX2RlZmF1bHRzIChzdHJ1Y3Qgc3ltdGFiICoqZGVmYXVsdF9zeW10YWIsCi0gCQkJCSBp bnQgKmRlZmF1bHRfbGluZSk7Ci0gCi0tc3RhdGljIHZvaWQgc2V0X2ZsYWdzIChjaGFyICphcmcs IGludCAqaXNfcXVvdGVkLCBjaGFyICoqcGFyZW5fcG9pbnRlcik7Ci0tCi0gc3RhdGljIHN0cnVj dCBzeW10YWJzX2FuZF9saW5lcyBkZWNvZGVfaW5kaXJlY3QgKGNoYXIgKiphcmdwdHIpOwotIAot IHN0YXRpYyBjaGFyICpsb2NhdGVfZmlyc3RfaGFsZiAoY2hhciAqKmFyZ3B0ciwgaW50ICppc19x dW90ZV9lbmNsb3NlZCk7Ci1AQCAtMzEzLDEwICszMTIsNyBAQCBhZGRfbWF0Y2hpbmdfbWV0aG9k cyAoaW50IG1ldGhvZF9jb3VudGVyLCBzdHJ1Y3QgdHlwZSAqdCwKLSAJCQkJICAgTlVMTCwgVkFS X0RPTUFJTiwKLSAJCQkJICAgbGFuZ3VhZ2UsCi0gCQkJCSAgIChpbnQgKikgTlVMTCk7Ci0tICAg ICAgLyogU2VlIFBSMTA5NjYuICBSZW1vdmUgY2hlY2sgb24gc3ltYm9sIGRvbWFpbiBhbmQgY2xh c3Mgd2hlbgotLQkgd2Ugc3RvcCB1c2luZyAoYmFkKSBsaW5rYWdlIG5hbWVzIG9uIGNvbnN0cnVj dG9ycy4gICovCi0tICAgICAgaWYgKHN5bV9hcnJbaTFdICYmIChTWU1CT0xfRE9NQUlOIChzeW1f YXJyW2kxXSkgPT0gVkFSX0RPTUFJTgotLQkJCSAgJiYgU1lNQk9MX0NMQVNTIChzeW1fYXJyW2kx XSkgPT0gTE9DX0JMT0NLKSkKLSsgICAgICBpZiAoc3ltX2FycltpMV0pCi0gCWkxKys7Ci0gICAg ICAgZWxzZQotIAl7Ci1AQCAtNjMxLDYgKzYyNywzNyBAQCBTZWUgc2V0L3Nob3cgbXVsdGlwbGUt c3ltYm9sLiIpKTsKLSAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0gICByZXR1cm4g cmV0dXJuX3ZhbHVlczsKLSB9Ci0rCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGRlY29kZV9s aW5lXzEgYW5kIGZyaWVuZHMgd2hpY2ggc2tpcHMgUAotKyAgIHBhc3QgYW55IG1ldGhvZCBvdmVy bG9hZCBpbmZvcm1hdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIFAsIGUuZy4sCi0rICAgIihjb25z dCBzdHJ1Y3QgZm9vICopIi4KLSsKLSsgICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBQIGhh cyBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIHRvIGNvbnRhaW4KLSsgICBvdmVybG9hZCBpbmZvcm1h dGlvbiwgYW5kIGl0IHdpbGwgYXNzZXJ0IGlmICpQICE9ICcoJy4gICovCi0rc3RhdGljIGNoYXIg KgotK2ZpbmRfbWV0aG9kX292ZXJsb2FkX2VuZCAoY2hhciAqcCkKLSt7Ci0rICBpbnQgZGVwdGgg PSAwOwotKwotKyAgZ2RiX2Fzc2VydCAoKnAgPT0gJygnKTsKLSsKLSsgIHdoaWxlICgqcCkKLSsg ICAgewotKyAgICAgIGlmICgqcCA9PSAnKCcpCi0rCSsrZGVwdGg7Ci0rICAgICAgZWxzZSBpZiAo KnAgPT0gJyknKQotKwl7Ci0rCSAgaWYgKC0tZGVwdGggPT0gMCkKLSsJICAgIHsKLSsJICAgICAg KytwOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAgICAgICsrcDsKLSsgICAgfQot KwotKyAgcmV0dXJuIHA7Ci0rfQotIAwKLSAvKiBUaGUgcGFyc2VyIG9mIGxpbmVzcGVjIGl0c2Vs Zi4gKi8KLSAKLUBAIC02OTEsMTggKzcxOCwxNyBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoqYXJn cHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwKLSAg IHN0cnVjdCBzeW10YWIgKmZpbGVfc3ltdGFiID0gTlVMTDsKLSAKLSAgIGNoYXIgKmNvcHk7Ci0t ICAvKiBUaGlzIGlzIE5VTEwgaWYgdGhlcmUgYXJlIG5vIHBhcmVucyBpbiAqQVJHUFRSLCBvciBh IHBvaW50ZXIgdG8KLS0gICAgIHRoZSBjbG9zaW5nIHBhcmVudGhlc2lzIGlmIHRoZXJlIGFyZSBw YXJlbnMuICAqLwotLSAgY2hhciAqcGFyZW5fcG9pbnRlcjsKLSAgIC8qIFRoaXMgc2F5cyB3aGV0 aGVyIG9yIG5vdCBzb21ldGhpbmcgaW4gKkFSR1BUUiBpcyBxdW90ZWQgd2l0aAotICAgICAgY29t cGxldGVyX3F1b3RlcyAoaS5lLiB3aXRoIHNpbmdsZSBxdW90ZXMpLiAgKi8KLSAgIGludCBpc19x dW90ZWQ7Ci0tICAvKiBJcyBwYXJ0IG9mICpBUkdQVFIgaXMgZW5jbG9zZWQgaW4gZG91YmxlIHF1 b3Rlcz8gICovCi0rICAvKiBJcyAqQVJHUFRSIGlzIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXM/ ICAqLwotICAgaW50IGlzX3F1b3RlX2VuY2xvc2VkOwotICAgaW50IGlzX29iamNfbWV0aG9kID0g MDsKLSAgIGNoYXIgKnNhdmVkX2FyZyA9ICphcmdwdHI7Ci0gICAvKiBJZiBJU19RVU9URUQsIHRo ZSBlbmQgb2YgdGhlIHF1b3RlZCBiaXQuICAqLwotICAgY2hhciAqZW5kX3F1b3RlID0gTlVMTDsK LSsgIC8qIFRoZSAiZmlyc3QgaGFsZiIgb2YgdGhlIGxpbmVzcGVjLiAgKi8KLSsgIGNoYXIgKmZp cnN0X2hhbGY7Ci0gCi0gICBpZiAobm90X2ZvdW5kX3B0cikKLSAgICAgKm5vdF9mb3VuZF9wdHIg PSAwOwotQEAgLTcxNiwxMiArNzQyLDkgQEAgZGVjb2RlX2xpbmVfMSAoY2hhciAqKmFyZ3B0ciwg aW50IGZ1bmZpcnN0bGluZSwgc3RydWN0IHN5bXRhYiAqZGVmYXVsdF9zeW10YWIsCi0gICBpZiAo KiphcmdwdHIgPT0gJyonKQotICAgICByZXR1cm4gZGVjb2RlX2luZGlyZWN0IChhcmdwdHIpOwot IAotLSAgLyogU2V0IHZhcmlvdXMgZmxhZ3MuICAncGFyZW5fcG9pbnRlcicgaXMgaW1wb3J0YW50 IGZvciBvdmVybG9hZAotLSAgICAgY2hlY2tpbmcsIHdoZXJlIHdlIGFsbG93IHRoaW5ncyBsaWtl OgotLSAgICAgICAgKGdkYikgYnJlYWsgYzo6ZihpbnQpCi0tICAqLwotLQotLSAgc2V0X2ZsYWdz ICgqYXJncHRyLCAmaXNfcXVvdGVkLCAmcGFyZW5fcG9pbnRlcik7Ci0rICBpc19xdW90ZWQgPSAo KmFyZ3B0cgotKwkgICAgICAgJiYgc3RyY2hyIChnZXRfZ2RiX2NvbXBsZXRlcl9xdW90ZV9jaGFy YWN0ZXJzICgpLAotKwkJCSAgKiphcmdwdHIpICE9IE5VTEwpOwotICAgaWYgKGlzX3F1b3RlZCkK LSAgICAgZW5kX3F1b3RlID0gc2tpcF9xdW90ZWQgKCphcmdwdHIpOwotIAotQEAgLTczNCwxNSAr NzU3LDEyIEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUs IHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAotICAgICAgd2lsbCBwb2ludCB0byAiIi4g SWYgdGhpcyBpcyBhIEMrKyBuYW1lLCBsaWtlICJBOjpCOjpmb28iLCBwIHdpbGwKLSAgICAgIHBv aW50IHRvICI6OkI6OmZvbyIuIEFyZ3B0ciBpcyBub3QgY2hhbmdlZCBieSB0aGlzIGNhbGwuICAq LwotIAotLSAgcCA9IGxvY2F0ZV9maXJzdF9oYWxmIChhcmdwdHIsICZpc19xdW90ZV9lbmNsb3Nl ZCk7Ci0rICBmaXJzdF9oYWxmID0gcCA9IGxvY2F0ZV9maXJzdF9oYWxmIChhcmdwdHIsICZpc19x dW90ZV9lbmNsb3NlZCk7Ci0gCi0gICAvKiBDaGVjayBpZiB0aGlzIGlzIGFuIE9iamVjdGl2ZS1D IG1ldGhvZCAoYW55dGhpbmcgdGhhdCBzdGFydHMgd2l0aAotICAgICAgYSAnKycgb3IgJy0nIGFu ZCBhICdbJykuICAqLwotICAgaWYgKGlzX29iamNfbWV0aG9kX2Zvcm1hdCAocCkpCi0tICAgIHsK LS0gICAgICBpc19vYmpjX21ldGhvZCA9IDE7Ci0tICAgICAgcGFyZW5fcG9pbnRlciAgPSBOVUxM OyAvKiBKdXN0IGEgY2F0ZWdvcnkgbmFtZS4gIElnbm9yZSBpdC4gICovCi0tICAgIH0KLSsgICAg aXNfb2JqY19tZXRob2QgPSAxOwotIAotICAgLyogQ2hlY2sgaWYgdGhlIHN5bWJvbCBjb3VsZCBi ZSBhbiBPYmplY3RpdmUtQyBzZWxlY3Rvci4gICovCi0gCi1AQCAtNzU0LDkgKzc3NCw2IEBAIGRl Y29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10 YWIgKmRlZmF1bHRfc3ltdGFiLAotICAgICAgIHJldHVybiB2YWx1ZXM7Ci0gICB9Ci0gCi0tICBp ZiAoaXNfcXVvdGVkKQotLSAgICAqYXJncHRyID0gKmFyZ3B0ciArIDE7Ci0tCi0gICAvKiBEb2Vz IGl0IGxvb2sgbGlrZSB0aGVyZSBhY3R1YWxseSB3ZXJlIHR3byBwYXJ0cz8gICovCi0gCi0gICBp ZiAocFswXSA9PSAnOicgfHwgcFswXSA9PSAnLicpCi1AQCAtNzcwLDY3ICs3ODcsNDggQEAgZGVj b2RlX2xpbmVfMSAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgc3RydWN0IHN5bXRh YiAqZGVmYXVsdF9zeW10YWIsCi0gCQotICAgICAgIGlmIChwWzBdID09ICcuJyB8fCBwWzFdID09 ICc6JykKLSAJewotLQkgIGlmIChwYXJlbl9wb2ludGVyID09IE5VTEwpCi0tCSAgICByZXR1cm4g ZGVjb2RlX2NvbXBvdW5kIChhcmdwdHIsIGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsLAotKwkgIHN0 cnVjdCBzeW10YWJzX2FuZF9saW5lcyB2YWx1ZXM7Ci0rCi0rCSAgaWYgKGlzX3F1b3RlX2VuY2xv c2VkKQotKwkgICAgKytzYXZlZF9hcmc7Ci0rCSAgdmFsdWVzID0gZGVjb2RlX2NvbXBvdW5kIChh cmdwdHIsIGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsLAotIAkJCQkgICAgc2F2ZWRfYXJnLCBwLCBu b3RfZm91bmRfcHRyKTsKLS0JICAvKiBPdGhlcndpc2UsIGZhbGwgdGhyb3VnaCB0byBkZWNvZGVf dmFyaWFibGUgYmVsb3cuICAqLwotKwkgIGlmIChpc19xdW90ZWQgJiYgKiphcmdwdHIgPT0gJ1wn JykKLSsJICAgICphcmdwdHIgPSAqYXJncHRyICsgMTsKLSsJICByZXR1cm4gdmFsdWVzOwotIAl9 Ci0tICAgICAgZWxzZQotLQl7Ci0tCSAgLyogTm8sIHRoZSBmaXJzdCBwYXJ0IGlzIGEgZmlsZW5h bWU7IHNldCBmaWxlX3N5bXRhYiB0byBiZSB0aGF0IGZpbGUncwotLQkgICAgIHN5bXRhYi4gIEFs c28sIG1vdmUgYXJncHRyIHBhc3QgdGhlIGZpbGVuYW1lLiAgKi8KLSAKLS0JICBmaWxlX3N5bXRh YiA9IHN5bXRhYl9mcm9tX2ZpbGVuYW1lIChhcmdwdHIsIHAsIGlzX3F1b3RlX2VuY2xvc2VkLAot LQkJCQkJICAgICAgbm90X2ZvdW5kX3B0cik7Ci0rICAgICAgLyogTm8sIHRoZSBmaXJzdCBwYXJ0 IGlzIGEgZmlsZW5hbWU7IHNldCBmaWxlX3N5bXRhYiB0byBiZSB0aGF0IGZpbGUncwotKwkgc3lt dGFiLiAgQWxzbywgbW92ZSBhcmdwdHIgcGFzdCB0aGUgZmlsZW5hbWUuICAqLwotIAotLQkgIC8q IENoZWNrIGZvciBzaW5nbGUgcXVvdGVzIG9uIHRoZSBub24tZmlsZW5hbWUgcGFydC4gICovCi0t CSAgaWYgKCFpc19xdW90ZWQpCi0tCSAgICB7Ci0tCSAgICAgIGlzX3F1b3RlZCA9ICgqKmFyZ3B0 cgotLQkJCSAgICYmIHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFjdGVycyAo KSwKLS0JCQkJICAgICAgKiphcmdwdHIpICE9IE5VTEwpOwotLQkgICAgICBpZiAoaXNfcXVvdGVk KQotLQkJZW5kX3F1b3RlID0gc2tpcF9xdW90ZWQgKCphcmdwdHIpOwotLQkgICAgfQotLQl9Ci0t ICAgIH0KLS0jaWYgMAotLSAgLyogTm8gb25lIHJlYWxseSBzZWVtcyB0byBrbm93IHdoeSB0aGlz IHdhcyBhZGRlZC4gSXQgY2VydGFpbmx5Ci0tICAgICBicmVha3MgdGhlIGNvbW1hbmQgbGluZSwg dGhvdWdoLCB3aGVuZXZlciB0aGUgcGFzc2VkCi0tICAgICBuYW1lIGlzIG9mIHRoZSBmb3JtIENs YXNzTmFtZTo6TWV0aG9kLiBUaGlzIGJpdCBvZiBjb2RlCi0tICAgICBzaW5nbGVzIG91dCB0aGUg Y2xhc3MgbmFtZSwgYW5kIGlmIGZ1bmZpcnN0bGluZSBpcyBzZXQgKGZvcgotLSAgICAgZXhhbXBs ZSwgeW91IGFyZSBzZXR0aW5nIGEgYnJlYWtwb2ludCBhdCB0aGlzIGZ1bmN0aW9uKSwKLS0gICAg IHlvdSBnZXQgYW4gZXJyb3IuIFRoaXMgZGlkIG5vdCBvY2N1ciB3aXRoIGVhcmxpZXIKLS0gICAg IHZlcmlvbnMsIHNvIEkgYW0gaWZkZWYnaW5nIHRoaXMgb3V0LiAzLzI5Lzk5ICovCi0tICBlbHNl Ci0tICAgIHsKLS0gICAgICAvKiBDaGVjayBpZiB3aGF0IHdlIGhhdmUgdGlsbCBub3cgaXMgYSBz eW1ib2wgbmFtZSAqLwotKyAgICAgIGZpbGVfc3ltdGFiID0gc3ltdGFiX2Zyb21fZmlsZW5hbWUg KGFyZ3B0ciwgcCwgaXNfcXVvdGVfZW5jbG9zZWQsCi0rCQkJCQkgIG5vdF9mb3VuZF9wdHIpOwot IAotLSAgICAgIC8qIFdlIG1heSBiZSBsb29raW5nIGF0IGEgdGVtcGxhdGUgaW5zdGFudGlhdGlv biBzdWNoCi0tICAgICAgICAgYXMgImZvbzxpbnQ+Ii4gIENoZWNrIGhlcmUgd2hldGhlciB3ZSBr bm93IGFib3V0IGl0LAotLSAgICAgICAgIGluc3RlYWQgb2YgZmFsbGluZyB0aHJvdWdoIHRvIHRo ZSBjb2RlIGJlbG93IHdoaWNoCi0tICAgICAgICAgaGFuZGxlcyBvcmRpbmFyeSBmdW5jdGlvbiBu YW1lcywgYmVjYXVzZSB0aGF0IGNvZGUKLS0gICAgICAgICBkb2Vzbid0IGxpa2Ugc2VlaW5nICc8 JyBhbmQgJz4nIGluIGEgbmFtZSAtLSB0aGUKLS0gICAgICAgICBza2lwX3F1b3RlZCBjYWxsIGRv ZXNuJ3QgZ28gcGFzdCB0aGVtLiAgU28gc2VlIGlmIHdlCi0tICAgICAgICAgY2FuIGZpZ3VyZSBp dCBvdXQgcmlnaHQgbm93LiAqLwotLQotLSAgICAgIGNvcHkgPSAoY2hhciAqKSBhbGxvY2EgKHAg LSAqYXJncHRyICsgMSk7Ci0tICAgICAgbWVtY3B5IChjb3B5LCAqYXJncHRyLCBwIC0gKmFyZ3B0 cik7Ci0tICAgICAgY29weVtwIC0gKmFyZ3B0cl0gPSAnXDAwMCc7Ci0tICAgICAgc3ltID0gbG9v a3VwX3N5bWJvbCAoY29weSwgMCwgVkFSX0RPTUFJTiwgMCk7Ci0tICAgICAgaWYgKHN5bSkKLSsg ICAgICAvKiBDaGVjayBmb3Igc2luZ2xlIHF1b3RlcyBvbiB0aGUgbm9uLWZpbGVuYW1lIHBhcnQu ICAqLwotKyAgICAgIGlmICghaXNfcXVvdGVkKQotIAl7Ci0tCSAgKmFyZ3B0ciA9ICgqcCA9PSAn XCcnKSA/IHAgKyAxIDogcDsKLS0JICByZXR1cm4gc3ltYm9sX2ZvdW5kIChmdW5maXJzdGxpbmUs IGNhbm9uaWNhbCwgY29weSwgc3ltLCBOVUxMKTsKLSsJICBpc19xdW90ZWQgPSAoKiphcmdwdHIK LSsJCSAgICAgICAmJiBzdHJjaHIgKGdldF9nZGJfY29tcGxldGVyX3F1b3RlX2NoYXJhY3RlcnMg KCksCi0rCQkJCSAgKiphcmdwdHIpICE9IE5VTEwpOwotKwkgIGlmIChpc19xdW90ZWQpCi0rCSAg ICBlbmRfcXVvdGUgPSBza2lwX3F1b3RlZCAoKmFyZ3B0cik7Ci0gCX0KLS0gICAgICAvKiBPdGhl cndpc2UgZmFsbCBvdXQgZnJvbSBoZXJlIGFuZCBnbyB0byBmaWxlL2xpbmUgc3BlYwotLSAgICAg ICAgIHByb2Nlc3NpbmcsIGV0Yy4gKi8KLSAgICAgfQotLSNlbmRpZgotIAotICAgLyogZmlsZV9z eW10YWIgaXMgc3BlY2lmaWVkIGZpbGUncyBzeW10YWIsIG9yIDAgaWYgbm8gZmlsZSBzcGVjaWZp ZWQuCi0gICAgICBhcmcgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBmaWxlIG5hbWUuICAqLwotIAot KyAgLyogSWYgdGhlIGZpbGVuYW1lIHdhcyBxdW90ZWQsIHdlIG11c3QgcmUtY2hlY2sgdGhlIHF1 b3RhdGlvbi4gICovCi0rCi0rICBpZiAoZW5kX3F1b3RlID09IGZpcnN0X2hhbGYgJiYgKmVuZF9x dW90ZSE9ICdcMCcpCi0rICAgIHsKLSsgICAgICBpc19xdW90ZWQgPSAoKiphcmdwdHIKLSsJCSAg ICYmIHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFjdGVycyAoKSwKLSsJCQkg ICAgICAqKmFyZ3B0cikgIT0gTlVMTCk7Ci0rICAgICAgaWYgKGlzX3F1b3RlZCkKLSsJZW5kX3F1 b3RlID0gc2tpcF9xdW90ZWQgKCphcmdwdHIpOwotKyAgICB9Ci0rCi0gICAvKiBDaGVjayB3aGV0 aGVyIGFyZyBpcyBhbGwgZGlnaXRzIChhbmQgc2lnbikuICAqLwotIAotICAgcSA9ICphcmdwdHI7 Ci1AQCAtODYxLDEwICs4NTksNiBAQCBkZWNvZGVfbGluZV8xIChjaGFyICoqYXJncHRyLCBpbnQg ZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRhYiwKLSAgICAgICAvKiBh bGxvdyB3b3JkIHNlcGFyYXRvcnMgaW4gbWV0aG9kIG5hbWVzIGZvciBPYmotQyAqLwotICAgICAg IHAgPSBza2lwX3F1b3RlZF9jaGFycyAoKmFyZ3B0ciwgTlVMTCwgIiIpOwotICAgICB9Ci0tICBl bHNlIGlmIChwYXJlbl9wb2ludGVyICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBwID0gcGFyZW5f cG9pbnRlciArIDE7Ci0tICAgIH0KLSAgIGVsc2UKLSAgICAgewotICAgICAgIHAgPSBza2lwX3F1 b3RlZCAoKmFyZ3B0cik7Ci1AQCAtODc0LDYgKzg2OCwxNCBAQCBkZWNvZGVfbGluZV8xIChjaGFy ICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRh YiwKLSAgIGlmICgqcCA9PSAnPCcpCi0gICAgIHAgPSBmaW5kX3RlbXBsYXRlX25hbWVfZW5kIChw KTsKLSAKLSsgIC8qIEtlZXAgbWV0aG9kIG92ZXJsb2FkIGluZm9ybWF0aW9uLiAgKi8KLSsgIGlm ICgqcCA9PSAnKCcpCi0rICAgIHAgPSBmaW5kX21ldGhvZF9vdmVybG9hZF9lbmQgKHApOwotKwot KyAgLyogTWFrZSBzdXJlIHdlIGtlZXAgaW1wb3J0YW50IGtld29yZHMgbGlrZSAiY29uc3QiICov Ci0rICBpZiAoc3RybmNtcCAocCwgIiBjb25zdCIsIDYpID09IDApCi0rICAgIHAgKz0gNjsKLSsK LSAgIGNvcHkgPSAoY2hhciAqKSBhbGxvY2EgKHAgLSAqYXJncHRyICsgMSk7Ci0gICBtZW1jcHkg KGNvcHksICphcmdwdHIsIHAgLSAqYXJncHRyKTsKLSAgIGNvcHlbcCAtICphcmdwdHJdID0gJ1ww JzsKLUBAIC05MjEsMTAgKzkyMyw5IEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGlu dCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1bHRfc3ltdGFiLAotICAgIGZ1bmN0 aW9uIGlzIHBhc3NlZCBBUkdQVFIgYXMgYW4gYXJndW1lbnQsIGl0IG1vZGlmaWVzIHdoYXQgQVJH UFRSCi0gICAgcG9pbnRzIHRvOyB0eXBpY2FsbHksIGl0IGFkdmFuY2VzICpBUkdQVFIgcGFzdCB3 aGF0ZXZlciBzdWJzdHJpbmcKLSAgICBpdCBoYXMganVzdCBsb29rZWQgYXQuICAoSWYgaXQgZG9l c24ndCBtb2RpZnkgKkFSR1BUUiwgdGhlbiB0aGUKLS0gICBmdW5jdGlvbiBnZXRzIHBhc3NlZCAq QVJHUFRSIGluc3RlYWQsIHdoaWNoIGlzIHRoZW4gY2FsbGVkIEFSRzogc2VlCi0tICAgc2V0X2Zs YWdzLCBmb3IgZXhhbXBsZS4pICBBbHNvLCBmdW5jdGlvbnMgdGhhdCByZXR1cm4gYSBzdHJ1Y3QK LS0gICBzeW10YWJzX2FuZF9saW5lcyBtYXkgbW9kaWZ5IENBTk9OSUNBTCwgYXMgaW4gdGhlIGRl c2NyaXB0aW9uIG9mCi0tICAgZGVjb2RlX2xpbmVfMS4KLSsgICBmdW5jdGlvbiBnZXRzIHBhc3Nl ZCAqQVJHUFRSIGluc3RlYWQsIHdoaWNoIGlzIHRoZW4gY2FsbGVkIEFSRy4pCi0rICAgQWxzbywg ZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGEgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIG1heSBtb2Rp ZnkKLSsgICBDQU5PTklDQUwsIGFzIGluIHRoZSBkZXNjcmlwdGlvbiBvZiBkZWNvZGVfbGluZV8x LgotIAotICAgIElmIGEgZnVuY3Rpb24gcmV0dXJucyBhIHN0cnVjdCBzeW10YWJzX2FuZF9saW5l cywgdGhlbiB0aGF0IHN0cnVjdAotICAgIHdpbGwgaW1tZWRpYXRlbHkgbWFrZSBpdHMgd2F5IHVw IHRoZSBjYWxsIGNoYWluIHRvIGJlIHJldHVybmVkIGJ5Ci1AQCAtOTUxLDQ0ICs5NTIsNiBAQCBp bml0aWFsaXplX2RlZmF1bHRzIChzdHJ1Y3Qgc3ltdGFiICoqZGVmYXVsdF9zeW10YWIsIGludCAq ZGVmYXVsdF9saW5lKQotICAgICB9Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0tc2V0X2ZsYWdzIChj aGFyICphcmcsIGludCAqaXNfcXVvdGVkLCBjaGFyICoqcGFyZW5fcG9pbnRlcikKLS17Ci0tICBj aGFyICppaTsKLS0gIGludCBoYXNfaWYgPSAwOwotLQotLSAgLyogJ2hhc19pZicgaXMgZm9yIHRo ZSBzeW50YXg6Ci0tICAgICAgICAoZ2RiKSBicmVhayBmb28gaWYgKGE9PWIpCi0tICAqLwotLSAg aWYgKChpaSA9IHN0cnN0ciAoYXJnLCAiIGlmICIpKSAhPSBOVUxMIHx8Ci0tICAgICAgKGlpID0g c3Ryc3RyIChhcmcsICJcdGlmICIpKSAhPSBOVUxMIHx8Ci0tICAgICAgKGlpID0gc3Ryc3RyIChh cmcsICIgaWZcdCIpKSAhPSBOVUxMIHx8Ci0tICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICJcdGlm XHQiKSkgIT0gTlVMTCB8fAotLSAgICAgIChpaSA9IHN0cnN0ciAoYXJnLCAiIGlmKCIpKSAhPSBO VUxMIHx8Ci0tICAgICAgKGlpID0gc3Ryc3RyIChhcmcsICJcdGlmKCAiKSkgIT0gTlVMTCkKLS0g ICAgaGFzX2lmID0gMTsKLS0gIC8qIFRlbXBvcmFyaWx5IHphcCBvdXQgImlmIChjb25kaXRpb24p IiB0byBub3QgY29uZnVzZSB0aGUKLS0gICAgIHBhcmVudGhlc2lzLWNoZWNraW5nIGNvZGUgYmVs b3cuICBUaGlzIGlzIHVuZG9uZSBiZWxvdy4gRG8gbm90Ci0tICAgICBjaGFuZ2UgaWkhISAgKi8K LS0gIGlmIChoYXNfaWYpCi0tICAgIHsKLS0gICAgICAqaWkgPSAnXDAnOwotLSAgICB9Ci0tCi0t ICAqaXNfcXVvdGVkID0gKCphcmcKLS0JCSYmIHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVv dGVfY2hhcmFjdGVycyAoKSwKLS0JCQkgICAqYXJnKSAhPSBOVUxMKTsKLS0KLS0gICpwYXJlbl9w b2ludGVyID0gc3RyY2hyIChhcmcsICcoJyk7Ci0tICBpZiAoKnBhcmVuX3BvaW50ZXIgIT0gTlVM TCkKLS0gICAgKnBhcmVuX3BvaW50ZXIgPSBzdHJyY2hyICgqcGFyZW5fcG9pbnRlciwgJyknKTsK LS0KLS0gIC8qIE5vdyB0aGF0IHdlJ3JlIHNhZmVseSBwYXN0IHRoZSBwYXJlbl9wb2ludGVyIGNo ZWNrLCBwdXQgYmFjayAiIGlmCi0tICAgICAoY29uZGl0aW9uKSIgc28gb3V0ZXIgbGF5ZXJzIGNh biBzZWUgaXQuICAqLwotLSAgaWYgKGhhc19pZikKLS0gICAgKmlpID0gJyAnOwotLX0KLS0KLSAM Ci0gCi0gLyogRGVjb2RlIGFyZyBvZiB0aGUgZm9ybSAqUEMuICAqLwotQEAgLTEwNTksNyArMTAy MiwxNCBAQCBsb2NhdGVfZmlyc3RfaGFsZiAoY2hhciAqKmFyZ3B0ciwgaW50ICppc19xdW90ZV9l bmNsb3NlZCkKLSAgICAgICBwKys7Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgKmlzX3F1b3RlX2Vu Y2xvc2VkID0gMDsKLSsgICAgewotKyAgICAgICppc19xdW90ZV9lbmNsb3NlZCA9IDA7Ci0rICAg ICAgaWYgKHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVfY2hhcmFjdGVycyAoKSwgKnAp KQotKwl7Ci0rCSAgKysoKmFyZ3B0cik7Ci0rCSAgKytwOwotKwl9Ci0rICAgIH0KLSAgIGZvciAo OyAqcDsgcCsrKQotICAgICB7Ci0gICAgICAgaWYgKHBbMF0gPT0gJzwnKQotQEAgLTEwODgsOCAr MTA1OCw5IEBAIGxvY2F0ZV9maXJzdF9oYWxmIChjaGFyICoqYXJncHRyLCBpbnQgKmlzX3F1b3Rl X2VuY2xvc2VkKQotICAgICAgIGlmIChwWzBdID09ICcuJyAmJiBzdHJjaHIgKHAsICc6JykgPT0g TlVMTCkKLSAJewotIAkgIC8qIEphdmEgcXVhbGlmaWVkIG1ldGhvZC4gIEZpbmQgdGhlICpsYXN0 KiAnLicsIHNpbmNlIHRoZQotLQkgICAgIG90aGVycyBhcmUgcGFja2FnZSBxdWFsaWZpZXJzLiAg Ki8KLS0JICBmb3IgKHAxID0gcDsgKnAxOyBwMSsrKQotKwkgICAgIG90aGVycyBhcmUgcGFja2Fn ZSBxdWFsaWZpZXJzLiAgU3RvcCBhdCBhbnkgb3BlbiBwYXJlbnRoZXNpcwotKwkgICAgIHdoaWNo IG1pZ2h0IHByb3ZpZGUgb3ZlcmxvYWQgaW5mb3JtYXRpb24uICAqLwotKwkgIGZvciAocDEgPSBw OyAqcDEgJiYgKnAxICE9ICcoJzsgcDErKykKLSAJICAgIHsKLSAJICAgICAgaWYgKCpwMSA9PSAn LicpCi0gCQlwID0gcDE7Ci1AQCAtMTI0MSw2ICsxMjEyLDcgQEAgZGVjb2RlX2NvbXBvdW5kIChj aGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNhbm9uaWNhbCwKLSAgIHN0 cnVjdCBzeW1ib2wgKnN5bV9jbGFzczsKLSAgIHN0cnVjdCBzeW1ib2wgKipzeW1fYXJyOwotICAg c3RydWN0IHR5cGUgKnQ7Ci0rICBjaGFyICpzYXZlZF9qYXZhX2FyZ3B0ciA9IE5VTEw7Ci0gCi0g ICAvKiBGaXJzdCBjaGVjayBmb3IgImdsb2JhbCIgbmFtZXNwYWNlIHNwZWNpZmljYXRpb24sIG9m IHRoZSBmb3JtCi0gICAgICAiOjpmb28iLiAgSWYgZm91bmQsIHNraXAgb3ZlciB0aGUgY29sb25z IGFuZCBqdW1wIHRvIG5vcm1hbAotQEAgLTEyODksNyArMTI2MSw4IEBAIGRlY29kZV9jb21wb3Vu ZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmljYWwsCi0g ICAgICAgLyogUEFTUzI6IHAyLT4iOjpmdW4iLCBwLT4iOmZ1biIgKi8KLSAKLSAgICAgICAvKiBN b3ZlIHBvaW50ZXIgYWhlYWQgdG8gbmV4dCBkb3VibGUtY29sb24uICAqLwotLSAgICAgIHdoaWxl ICgqcCAmJiAocFswXSAhPSAnICcpICYmIChwWzBdICE9ICdcdCcpICYmIChwWzBdICE9ICdcJycp KQotKyAgICAgIHdoaWxlICgqcCAmJiAocFswXSAhPSAnICcpICYmIChwWzBdICE9ICdcdCcpICYm IChwWzBdICE9ICdcJycpCi0rCSAgICAgJiYgKCpwICE9ICcoJykpCi0gCXsKLSAJICBpZiAoY3Vy cmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0gCSAgICBwICs9 IGNwX3ZhbGlkYXRlX29wZXJhdG9yIChwKTsKLUBAIC0xMzY3LDggKzEzNDAsMTAgQEAgZGVjb2Rl X2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNhbm9u aWNhbCwKLSAgICAgICBlbHNlCi0gCXsKLSAJICAvKiBBdCB0aGlzIHBvaW50IGFyZ3B0ci0+ImZ1 biIuICAqLwotKwkgIGNoYXIgKmE7Ci0gCSAgcCA9ICphcmdwdHI7Ci0tCSAgd2hpbGUgKCpwICYm ICpwICE9ICcgJyAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcsJyAmJiAqcCAhPSAnOicpCi0rCSAg d2hpbGUgKCpwICYmICpwICE9ICcgJyAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcsJyAmJiAqcCAh PSAnOicKLSsJCSAmJiAqcCAhPSAnKCcpCi0gCSAgICBwKys7Ci0gCSAgLyogQXQgdGhpcyBwb2lu dCBwLT4iIi4gIFN0cmluZyBlbmRlZC4gICovCi0gCSAgLyogTm9wZSwgQysrIG9wZXJhdG9ycyBj b3VsZCBoYXZlIHNwYWNlcyBpbiB0aGVtCi1AQCAtMTM4MCw2ICsxMzU1LDQyIEBAIGRlY29kZV9j b21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmlj YWwsCi0gCSAgICAgIC8qIFRoZSBhYm92ZSBsb29wIGhhcyBhbHJlYWR5IHN3YWxsb3dlZCAib3Bl cmF0b3IiLiAgKi8KLSAJICAgICAgcCArPSBjcF92YWxpZGF0ZV9vcGVyYXRvciAocCAtIDgpIC0g ODsKLSAJICAgIH0KLSsKLSsJICAvKiBLZWVwIGFueSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzICovCi0r CSAgaWYgKCpwID09ICc8JykKLSsJICAgIHAgPSBmaW5kX3RlbXBsYXRlX25hbWVfZW5kIChwKTsK LSsKLSsJICAvKiBLZWVwIG1ldGhvZCBvdmVybG9hZCBpbmZvcm1hdGlvbi4gICovCi0rCSAgYSA9 IHN0cmNociAocCwgJygnKTsKLSsJICBpZiAoYSAhPSBOVUxMKQotKwkgICAgcCA9IGZpbmRfbWV0 aG9kX292ZXJsb2FkX2VuZCAoYSk7Ci0rCi0rCSAgLyogTWFrZSBzdXJlIHdlIGtlZXAgaW1wb3J0 YW50IGtld29yZHMgbGlrZSAiY29uc3QiICovCi0rCSAgaWYgKHN0cm5jbXAgKHAsICIgY29uc3Qi LCA2KSA9PSAwKQotKwkgICAgcCArPSA2OwotKwotKwkgIC8qIEphdmEgbWF5IGFwcGVuZCB0eXBl bmFtZXMsICBzbyBhc3N1bWUgdGhhdCBpZiB0aGVyZSBpcwotKwkgICAgIGFueXRoaW5nIGVsc2Ug bGVmdCBpbiAqYXJncHRyLCBpdCBtdXN0IGJlIGEgdHlwZW5hbWUuICAqLwotKwkgIGlmICgqcCAm JiBjdXJyZW50X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKQotKwkgICAg ewotKwkgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsJICAgICAgcDIgPSBwOwotKwkgICAgICB3 aGlsZSAoKnAyKQotKwkJKytwMjsKLSsJICAgICAgY29weSA9IChjaGFyICopIGFsbG9jYSAocDIg LSBwICsgMSk7Ci0rCSAgICAgIG1lbWNweSAoY29weSwgcCwgcDIgLSBwKTsKLSsJICAgICAgY29w eVtwMiAtIHBdID0gJ1wwJzsKLSsJICAgICAgdHlwZSA9IGxvb2t1cF90eXBlbmFtZSAoY3VycmVu dF9sYW5ndWFnZSwgZ2V0X2N1cnJlbnRfYXJjaCAoKSwKLSsJCQkJICAgICAgY29weSwgTlVMTCwg MSk7Ci0rCSAgICAgIGlmICh0eXBlICE9IE5VTEwpCi0rCQl7Ci0rCQkgIC8qIFNhdmUgdGhlIGxv Y2F0aW9uIG9mIHRoaXMganVzdCBpbiBjYXNlIHRoaXMKLSsJCSAgICAgbWV0aG9kL3R5cGUgY29t YmluYXRpb24gaXNuJ3QgYWN0dWFsbHkgZGVmaW5lZC4KLSsJCSAgICAgSXQgd2lsbCBiZSBjaGVj a2VkIGxhdGVyLiAgKi8KLSsJCSAgc2F2ZWRfamF2YV9hcmdwdHIgPSBwOwotKwkJICBwID0gcDI7 Ci0rCQl9Ci0rCSAgICB9Ci0gCX0KLSAKLSAgICAgICAvKiBBbGxvY2F0ZSBvdXIgb3duIGNvcHkg b2YgdGhlIHN1YnN0cmluZyBiZXR3ZWVuIGFyZ3B0ciBhbmQKLUBAIC0xNDA4LDkgKzE0MTksMjYg QEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFy ICoqKmNhbm9uaWNhbCwKLSAJIGhlcmUsIHdlIHJldHVybi4gSWYgbm90LCBhbmQgd2UgYXJlIGF0 IHRoZSBhbmQgb2YgdGhlIHN0cmluZywKLSAJIHdlJ2xsIGxvb2t1cCB0aGUgd2hvbGUgc3RyaW5n IGluIHRoZSBzeW1ib2wgdGFibGVzLiAgKi8KLSAKLS0gICAgICByZXR1cm4gZmluZF9tZXRob2Qg KGZ1bmZpcnN0bGluZSwgY2Fub25pY2FsLCBzYXZlZF9hcmcsCi0tCQkJICBjb3B5LCB0LCBzeW1f Y2xhc3MsIG5vdF9mb3VuZF9wdHIpOwotLQotKyAgICAgIHZhbHVlcyA9IGZpbmRfbWV0aG9kIChm dW5maXJzdGxpbmUsIGNhbm9uaWNhbCwgc2F2ZWRfYXJnLAotKwkJCSAgICBjb3B5LCB0LCBzeW1f Y2xhc3MsIG5vdF9mb3VuZF9wdHIpOwotKyAgICAgIGlmIChzYXZlZF9qYXZhX2FyZ3B0ciAhPSBO VUxMICYmIHZhbHVlcy5uZWx0cyA9PSAxKQotKwl7Ci0rCSAgLyogVGhlIHVzZXIgc3BlY2lmaWVk IGEgc3BlY2lmaWMgcmV0dXJuIHR5cGUgZm9yIGEgamF2YSBtZXRob2QuCi0rCSAgICAgRG91Ymxl LWNoZWNrIHRoYXQgaXQgcmVhbGx5IGlzIHRoZSBvbmUgdGhlIHVzZXIgc3BlY2lmaWVkLgotKwkg ICAgIFtUaGlzIGlzIGEgbmVjZXNzYXJ5IGV2aWwgYmVjYXVzZSBzdHJjbXBfaXdfb3JkZXJlZCBz dG9wcwotKwkgICAgIGNvbXBhcmlzb25zIHRvbyBwcmVtYXR1cmVseS5dICAqLwotKwkgIHN5bSA9 IGZpbmRfcGNfc2VjdF9mdW5jdGlvbiAodmFsdWVzLnNhbHNbMF0ucGMsCi0rCQkJCSAgICAgICB2 YWx1ZXMuc2Fsc1swXS5zZWN0aW9uKTsKLSsJICAvKiBXZSBqdXN0IGZvdW5kIGEgU0FMLCB3ZSBo YWQgYmV0dGVyIGJlIGFibGUgdG8gZ28gYmFja3dhcmRzISAgKi8KLSsJICBnZGJfYXNzZXJ0IChz eW0gIT0gTlVMTCk7Ci0rCSAgaWYgKHN0cmNtcF9pdyAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3lt KSwgc2F2ZWRfYXJnKSAhPSAwKQotKwkgICAgewotKwkgICAgICB4ZnJlZSAodmFsdWVzLnNhbHMp OwotKwkgICAgICBlcnJvciAoXygidGhlIGNsYXNzIGAlcycgZG9lcyBub3QgaGF2ZSBhbnkgbWV0 aG9kIGluc3RhbmNlIG5hbWVkICVzXG4iKSwKLSsJCSAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHN5 bV9jbGFzcyksIGNvcHkpOwotKwkgICAgfQotKwl9Ci0rICAgICAgcmV0dXJuIHZhbHVlczsKLSAg ICAgfSAvKiBFbmQgaWYgc3ltYm9sIGZvdW5kICovCi0gCi0gCi1AQCAtMTUzNCw4ICsxNTYyLDM5 IEBAIGZpbmRfbWV0aG9kIChpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNhbm9uaWNhbCwgY2hh ciAqc2F2ZWRfYXJnLAotICAgICB9Ci0gICBpZiAoaTEgPiAwKQotICAgICB7Ci0tICAgICAgLyog VGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBmaWVsZCB3aXRoIHRoYXQgbmFtZQotLQkgKG92ZXJsb2Fk ZWQpLiAgQXNrIHRoZSB1c2VyIHdoaWNoIG9uZSB0byB1c2UuICAqLwotKyAgICAgIC8qIElmIHdl IHdlcmUgZ2l2ZW4gYSBzcGVjaWZpYyBvdmVybG9hZCBpbnN0YW5jZSwgdXNlIHRoYXQKLSsJIChv ciBlcnJvciBpZiBubyBtYXRjaGVzIHdlcmUgZm91bmQpLiAgT3RoZXJ3aXNlIGFzayB0aGUgdXNl cgotKwkgd2hpY2ggb25lIHRvIHVzZS4gICovCi0rICAgICAgaWYgKHN0cmNociAoc2F2ZWRfYXJn LCAnKCcpICE9IE5VTEwpCi0rCXsKLSsJICBpbnQgaTsKLSsJICBmb3IgKGkgPSAwOyBpIDwgaTE7 ICsraSkKLSsJICAgIHsKLSsJICAgICAgY2hhciAqbmFtZSA9IHNhdmVkX2FyZzsKLSsJICAgICAg Y2hhciAqY2Fub24gPSBjcF9jYW5vbmljYWxpemVfc3RyaW5nIChuYW1lKTsKLSsJICAgICAgaWYg KGNhbm9uICE9IE5VTEwpCi0rCQluYW1lID0gY2Fub247Ci0rCi0rCSAgICAgIGlmIChzdHJjbXBf aXcgKG5hbWUsIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bV9hcnJbaV0pKSA9PSAwKQotKwkJewot KwkJICB2YWx1ZXMuc2FscyA9IChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICopCi0rCQkgICAgeG1h bGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lKSk7Ci0rCQkgIHZhbHVlcy5uZWx0 cyA9IDE7Ci0rCQkgIHZhbHVlcy5zYWxzWzBdID0gZmluZF9mdW5jdGlvbl9zdGFydF9zYWwgKHN5 bV9hcnJbaV0sCi0rCQkJCQkJCSAgICBmdW5maXJzdGxpbmUpOwotKwkJICBpZiAoY2Fub24pCi0r CQkgICAgeGZyZWUgKGNhbm9uKTsKLSsJCSAgcmV0dXJuIHZhbHVlczsKLSsJCX0KLSsKLSsJICAg ICAgaWYgKGNhbm9uKQotKwkJeGZyZWUgKGNhbm9uKTsKLSsJICAgIH0KLSsKLSsJICBlcnJvciAo XygidGhlIGNsYXNzIGAlcycgZG9lcyBub3QgaGF2ZSBhbnkgbWV0aG9kIGluc3RhbmNlIG5hbWVk ICVzXG4iKSwKLSsJCSBTWU1CT0xfUFJJTlRfTkFNRSAoc3ltX2NsYXNzKSwgY29weSk7Ci0rCX0K LSsKLSAgICAgICByZXR1cm4gZGVjb2RlX2xpbmVfMiAoc3ltX2FyciwgaTEsIGZ1bmZpcnN0bGlu ZSwgY2Fub25pY2FsKTsKLSAgICAgfQotICAgZWxzZQotQEAgLTE1NzcsNyArMTYzNiw4IEBAIHN5 bXRhYl9mcm9tX2ZpbGVuYW1lIChjaGFyICoqYXJncHRyLCBjaGFyICpwLCBpbnQgaXNfcXVvdGVf ZW5jbG9zZWQsCi0gICBjb3B5ID0gKGNoYXIgKikgYWxsb2NhIChwIC0gKmFyZ3B0ciArIDEpOwot ICAgbWVtY3B5IChjb3B5LCAqYXJncHRyLCBwIC0gKmFyZ3B0cik7Ci0gICAvKiBJdCBtYXkgaGF2 ZSB0aGUgZW5kaW5nIHF1b3RlIHJpZ2h0IGFmdGVyIHRoZSBmaWxlIG5hbWUuICAqLwotLSAgaWYg KGlzX3F1b3RlX2VuY2xvc2VkICYmIGNvcHlbcCAtICphcmdwdHIgLSAxXSA9PSAnIicpCi0rICBp ZiAoKGlzX3F1b3RlX2VuY2xvc2VkICYmIGNvcHlbcCAtICphcmdwdHIgLSAxXSA9PSAnIicpCi0r ICAgICAgfHwgY29weVtwIC0gKmFyZ3B0ciAtIDFdID09ICdcJycpCi0gICAgIGNvcHlbcCAtICph cmdwdHIgLSAxXSA9IDA7Ci0gICBlbHNlCi0gICAgIGNvcHlbcCAtICphcmdwdHJdID0gMDsKLUBA IC0xODQwLDcgKzE5MDAsNyBAQCBzeW1ib2xfZm91bmQgKGludCBmdW5maXJzdGxpbmUsIGNoYXIg KioqY2Fub25pY2FsLCBjaGFyICpjb3B5LAotIAl7Ci0gCSAgc3RydWN0IGJsb2NrdmVjdG9yICpi diA9IEJMT0NLVkVDVE9SIChTWU1CT0xfU1lNVEFCIChzeW0pKTsKLSAJICBzdHJ1Y3QgYmxvY2sg KmIgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIFNUQVRJQ19CTE9DSyk7Ci0tCSAgaWYgKGxvb2t1 cF9ibG9ja19zeW1ib2wgKGIsIGNvcHksIE5VTEwsIFZBUl9ET01BSU4pICE9IE5VTEwpCi0rCSAg aWYgKGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIGNvcHksIFZBUl9ET01BSU4pICE9IE5VTEwpCi0g CSAgICBidWlsZF9jYW5vbmljYWxfbGluZV9zcGVjICh2YWx1ZXMuc2FscywgY29weSwgY2Fub25p Y2FsKTsKLSAJfQotICAgICAgIHJldHVybiB2YWx1ZXM7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4 LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCBlNTVkOTU4Li5lNDFlZDc0IDEwMDY0NAot LS0tIGEvZ2RiL2xpbnV4LW5hdC5jCi0rKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC0yNjE4LDYg KzI2MTgsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKLSAgIHJldHVybiBscC0+c3RvcHBlZF9kYXRh X2FkZHJlc3NfcDsKLSB9Ci0gCi0rLyogSW4gYHNldCBmb2xsb3ctZm9yay1tb2RlIGNoaWxkJyB3 aXRoIG11bHRpdGhyZWFkZWQgcGFyZW50IHdlIG5lZWQgdG8gZGV0YWNoCi0rICAgd2F0Y2hwb2lu dHMgZnJvbSBhbGwgdGhlIExXUHMuICBJbiBzdWNoIGNhc2UgSU5GRVJJT1JfUFRJRCB3aWxsIGJl IHRoZQotKyAgIG5vbi10aHJlYWRlZCBuZXcgY2hpbGQgd2hpbGUgTFdQX0xJU1Qgd2lsbCBzdGls bCBjb250YWluIGFsbCB0aGUgdGhyZWFkcyBvZgotKyAgIHRoZSBwYXJlbnQgYmVpbmcgZGV0YWNo ZWQuICAqLwotKwotK3N0YXRpYyBpbnQKLStsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzICh2 b2lkKQotK3sKLSsgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0rICBpbnQgZm91bmQgPSAwLCByZXR2 YWwgPSAwOwotKyAgcHRpZF90IGZpbHRlciA9IHBpZF90b19wdGlkIChwdGlkX2dldF9waWQgKGlu ZmVyaW9yX3B0aWQpKTsKLSsgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBzYXZlX2luZmVy aW9yX3B0aWQgKCk7Ci0rCi0rICBmb3IgKGxwID0gbHdwX2xpc3Q7IGxwOyBscCA9IGxwLT5uZXh0 KQotKyAgICBpZiAocHRpZF9tYXRjaCAobHAtPnB0aWQsIGZpbHRlcikpCi0rICAgICAgewotKwlp bmZlcmlvcl9wdGlkID0gbHAtPnB0aWQ7Ci0rCXJldHZhbCB8PSBsaW51eF9vcHMtPnRvX2RldGFj aF93YXRjaHBvaW50cyAoKTsKLSsJZm91bmQgPSAxOwotKyAgICAgIH0KLSsKLSsgIGRvX2NsZWFu dXBzIChvbGRfY2hhaW4pOwotKwotKyAgaWYgKCFmb3VuZCkKLSsgICAgewotKyAgICAgIGdkYl9h c3NlcnQgKCFpc19sd3AgKGluZmVyaW9yX3B0aWQpKTsKLSsKLSsgICAgICByZXR2YWwgfD0gbGlu dXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBy ZXR2YWw7Ci0rfQotKwotIC8qIFdhaXQgdW50aWwgTFAgaXMgc3RvcHBlZC4gICovCi0gCi0gc3Rh dGljIGludAotQEAgLTU1ODQsNiArNTYxNyw4IEBAIGxpbnV4X25hdF9hZGRfdGFyZ2V0IChzdHJ1 Y3QgdGFyZ2V0X29wcyAqdCkKLSAgIHQtPnRvX3RocmVhZF9hZGRyZXNzX3NwYWNlID0gbGludXhf bmF0X3RocmVhZF9hZGRyZXNzX3NwYWNlOwotICAgdC0+dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50 ID0gbGludXhfbmF0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludDsKLSAgIHQtPnRvX3N0b3BwZWRfZGF0 YV9hZGRyZXNzID0gbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzOwotKyAgaWYgKGxpbnV4 X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzKQotKyAgICB0LT50b19kZXRhY2hfd2F0Y2hwb2lu dHMgPSBsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzOwotIAotICAgdC0+dG9fY2FuX2FzeW5j X3AgPSBsaW51eF9uYXRfY2FuX2FzeW5jX3A7Ci0gICB0LT50b19pc19hc3luY19wID0gbGludXhf bmF0X2lzX2FzeW5jX3A7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAuYyBiL2dkYi9saW51 eC10ZGVwLmMKLWluZGV4IDA3ZmQ2N2MuLjAyYjIzNDIgMTAwNjQ0Ci0tLS0gYS9nZGIvbGludXgt dGRlcC5jCi0rKysgYi9nZGIvbGludXgtdGRlcC5jCi1AQCAtMjMsNiArMjMsOCBAQAotICNpbmNs dWRlICJhdXh2LmgiCi0gI2luY2x1ZGUgInRhcmdldC5oIgotICNpbmNsdWRlICJlbGYvY29tbW9u LmgiCi0rI2luY2x1ZGUgInZhbHVlLmgiCi0rI2luY2x1ZGUgImluZmNhbGwuaCIKLSAKLSAvKiBU aGlzIGZ1bmN0aW9uIGlzIHN1aXRhYmxlIGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZG9uJ3QKLSAg ICBleHRlbmQvb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIHNpZ2luZm8gc3RydWN0dXJlLiAgKi8KLUBA IC0xNTIsMyArMTU0LDQzIEBAIGxpbnV4X2hhc19zaGFyZWRfYWRkcmVzc19zcGFjZSAodm9pZCkK LSAKLSAgIHJldHVybiB0YXJnZXRfaXNfdWNsaW51eDsKLSB9Ci0rCi0rLyogQ2FsbCBnbnUtaWZ1 bmMgdG8gcmVzb2x2ZSBicmVha3BvaW50IGF0IGl0cyByZXR1cm5lZCBmdW5jdGlvbi4gICovCi0r Ci0rQ09SRV9BRERSCi0rbGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBmdW5jX3B0ciwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDT1JFX0FERFIgcGMpCi0rewotKyAgc3RydWN0IHR5cGUgKmZ1bmNfZnVu Y190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9mdW5jX2Z1bmM7Ci0rICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7Ci0rICBzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9u LCAqYWRkcmVzczsKLSsKLSsgIGlmICghdGFyZ2V0X2hhc19leGVjdXRpb24pCi0rICAgIHJldHVy biBwYzsKLSsKLSsgIG1zeW1ib2wgPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKGZ1bmNf cHRyKTsKLSsgIGlmIChtc3ltYm9sID09IE5VTEwpCi0rICAgIHJldHVybiBwYzsKLSsgIGlmIChN U1lNQk9MX1RZUEUgKG1zeW1ib2wpICE9IG1zdF90ZXh0X2dudV9pZnVuYykKLSsgICAgcmV0dXJu IHBjOwotKwotKyAgLyogTm90IGF0IHRoZSBnbnUtaWZ1bmMgZW50cnkgcG9pbnQ/ICAqLwotKyAg aWYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKSAhPSBmdW5jX3B0cikKLSsgICAgcmV0 dXJuIHBjOwotKwotKyAgZnVuY3Rpb24gPSBhbGxvY2F0ZV92YWx1ZSAoZnVuY19mdW5jX3R5cGUp OwotKyAgc2V0X3ZhbHVlX2FkZHJlc3MgKGZ1bmN0aW9uLCBwYyk7Ci0rCi0rICAvKiBnbnUtaWZ1 bmNzIGhhdmUgbm8gYXJndW1lbnRzLiAgRlVOQ1RJT04gaXMgdGhlIGNvZGUgaW5zdHJ1Y3Rpb24g YWRkcmVzcwotKyAgICAgd2hpbGUgQUREUkVTUyBpcyBhIGZ1bmN0aW9uIGRlc2NyaXB0b3IuICAq LwotKyAgYWRkcmVzcyA9IGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVuY3Rpb24sIDAsIE5VTEwp OwotKwotKyAgcmV0dXJuIHZhbHVlX2FzX2FkZHJlc3MgKGFkZHJlc3MpOwotK30KLSsKLStDT1JF X0FERFIKLStsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIENPUkVfQUREUiBhZGRyLAotKwkJCQkgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJn KQotK3sKLSsgIHJldHVybiBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19hbmRfcHRyIChnZGJhcmNo LCBhZGRyLCBhZGRyKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAuaCBiL2dkYi9s aW51eC10ZGVwLmgKLWluZGV4IGE4YjUyMmIuLjI4MjE5MGUgMTAwNjQ0Ci0tLS0gYS9nZGIvbGlu dXgtdGRlcC5oCi0rKysgYi9nZGIvbGludXgtdGRlcC5oCi1AQCAtMjIsNCArMjIsMTEgQEAKLSAK LSBzdHJ1Y3QgdHlwZSAqbGludXhfZ2V0X3NpZ2luZm9fdHlwZSAoc3RydWN0IGdkYmFyY2ggKik7 Ci0gCi0rQ09SRV9BRERSIGxpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX2FuZF9wdHIgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAotKwkJCQkJICAgQ09SRV9BRERSIGZ1bmNfcHRyLCBDT1JFX0FERFIg cGMpOwotKwotK0NPUkVfQUREUiBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCQkgICAgQ09SRV9BRERSIGFkZHIsCi0rCQkJCQkg ICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmcpOwotKwotICNlbmRpZiAvKiBsaW51eC10ZGVwLmgg Ki8KLWRpZmYgLS1naXQgYS9nZGIvbTItbGFuZy5jIGIvZ2RiL20yLWxhbmcuYwotaW5kZXggODBl OWJmOS4uMzA1Nzc3NCAxMDA2NDQKLS0tLSBhL2dkYi9tMi1sYW5nLmMKLSsrKyBiL2dkYi9tMi1s YW5nLmMKLUBAIC0zNTYsNiArMzU2LDcgQEAgY29uc3Qgc3RydWN0IGV4cF9kZXNjcmlwdG9yIGV4 cF9kZXNjcmlwdG9yX21vZHVsYTIgPQotIHsKLSAgIHByaW50X3N1YmV4cF9zdGFuZGFyZCwKLSAg IG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCwKLSsgIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkLAot ICAgb3BfbmFtZV9zdGFuZGFyZCwKLSAgIGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQsCi0gICBl dmFsdWF0ZV9zdWJleHBfbW9kdWxhMgotZGlmZiAtLWdpdCBhL2dkYi9tMzJyLWxpbnV4LXRkZXAu YyBiL2dkYi9tMzJyLWxpbnV4LXRkZXAuYwotaW5kZXggNjgwNDYwOS4uMmNiMWJmOSAxMDA2NDQK LS0tLSBhL2dkYi9tMzJyLWxpbnV4LXRkZXAuYwotKysrIGIvZ2RiL20zMnItbGludXgtdGRlcC5j Ci1AQCAtMzAsNiArMzAsNyBAQAotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gCi0gI2luY2x1 ZGUgImdsaWJjLXRkZXAuaCIKLSsjaW5jbHVkZSAibGludXgtdGRlcC5oIgotICNpbmNsdWRlICJz b2xpYi1zdnI0LmgiCi0gI2luY2x1ZGUgInN5bXRhYi5oIgotIAotQEAgLTQyMiw2ICs0MjMsOSBA QCBtMzJyX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoKQotICAgLyogRW5hYmxlIFRMUyBzdXBwb3J0LiAgKi8KLSAgIHNldF9n ZGJhcmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9hZGRyZXNzIChnZGJhcmNoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2cjRfZmV0Y2hfb2JqZmlsZV9s aW5rX21hcCk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAo Z2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0K LSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlw ZXMuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9tYWNob3JlYWQuYyBiL2dkYi9tYWNob3JlYWQuYwot aW5kZXggYTgxMGJiMi4uYjQxNjk3MCAxMDA2NDQKLS0tLSBhL2dkYi9tYWNob3JlYWQuYwotKysr IGIvZ2RiL21hY2hvcmVhZC5jCi1AQCAtODQyLDYgKzg0Miw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3lt X2ZucyBtYWNob19zeW1fZm5zID0gewotICAgbWFjaG9fbmV3X2luaXQsICAgICAgICAgICAgICAg Lyogc3ltX25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCi0g ICBtYWNob19zeW1maWxlX2luaXQsICAgICAgICAgICAvKiBzeW1faW5pdDogcmVhZCBpbml0aWFs IGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCi0gICBtYWNob19zeW1maWxlX3JlYWQsICAg ICAgICAgICAvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCi0r ICBOVUxMLAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLwotICAgbWFjaG9fc3ltZmlsZV9maW5p c2gsICAgICAgICAgLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICov Ci0gICBtYWNob19zeW1maWxlX29mZnNldHMsICAgICAgICAvKiBzeW1fb2Zmc2V0czogIHhsYXRl IGV4dGVybmFsIHRvIGludGVybmFsIGZvcm0gKi8KLSAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50 cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCi1kaWZmIC0t Z2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKLWluZGV4IGUyNjEzNDguLjkyYzYzYTcgMTAw NjQ0Ci0tLS0gYS9nZGIvbWFpbi5jCi0rKysgYi9nZGIvbWFpbi5jCi1AQCAtNDAsNiArNDAsNyBA QAotICNpbmNsdWRlICJpbnRlcnBzLmgiCi0gI2luY2x1ZGUgIm1haW4uaCIKLSAKLSsjaW5jbHVk ZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJzb3VyY2UuaCIKLSAKLSAvKiBJZiBub256 ZXJvLCBkaXNwbGF5IHRpbWUgdXNhZ2UgYm90aCBhdCBzdGFydHVwIGFuZCBmb3IgZWFjaCBjb21t YW5kLiAgKi8KLUBAIC0yNTksNiArMjYwLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK LSAgIGNoYXIgKmNkYXJnID0gTlVMTDsKLSAgIGNoYXIgKnR0eWFyZyA9IE5VTEw7Ci0gCi0rICBp bnQgcHl0aG9uX3NjcmlwdCA9IDA7Ci0rCi0gICAvKiBUaGVzZSBhcmUgc3RhdGljIHNvIHRoYXQg d2UgY2FuIHRha2UgdGhlaXIgYWRkcmVzcyBpbiBhbiBpbml0aWFsaXplci4gICovCi0gICBzdGF0 aWMgaW50IHByaW50X2hlbHA7Ci0gICBzdGF0aWMgaW50IHByaW50X3ZlcnNpb247Ci1AQCAtNDM0 LDEwICs0MzcsMTQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAgICB7ImFyZ3Mi LCBub19hcmd1bWVudCwgJnNldF9hcmdzLCAxfSwKLSAgICAgICB7ImwiLCByZXF1aXJlZF9hcmd1 bWVudCwgMCwgJ2wnfSwKLSAgICAgICB7InJldHVybi1jaGlsZC1yZXN1bHQiLCBub19hcmd1bWVu dCwgJnJldHVybl9jaGlsZF9yZXN1bHQsIDF9LAotKyNpZiBIQVZFX1BZVEhPTgotKyAgICAgIHsi cHl0aG9uIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCi0rICAgICAgeyJQIiwgbm9fYXJndW1lbnQs IDAsICdQJ30sCi0rI2VuZGlmCi0gICAgICAgezAsIG5vX2FyZ3VtZW50LCAwLCAwfQotICAgICB9 OwotIAotLSAgICB3aGlsZSAoMSkKLSsgICAgd2hpbGUgKCFweXRob25fc2NyaXB0KQotICAgICAg IHsKLSAJaW50IG9wdGlvbl9pbmRleDsKLSAKLUBAIC00NTUsNiArNDYyLDkgQEAgY2FwdHVyZWRf bWFpbiAodm9pZCAqZGF0YSkKLSAJICBjYXNlIDA6Ci0gCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0 IGp1c3Qgc2V0cyBhIGZsYWcuICAqLwotIAkgICAgYnJlYWs7Ci0rCSAgY2FzZSAnUCc6Ci0rCSAg ICBweXRob25fc2NyaXB0ID0gMTsKLSsJICAgIGJyZWFrOwotIAkgIGNhc2UgT1BUX1NFOgotIAkg ICAgc3ltYXJnID0gb3B0YXJnOwotIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02NDEsNyAr NjUxLDMxIEBAIGV4dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKLSAKLSAgIC8qIE5vdyB0 aGF0IGdkYl9pbml0IGhhcyBjcmVhdGVkIHRoZSBpbml0aWFsIGluZmVyaW9yLCB3ZSdyZSBpbiBw b3NpdGlvbgotICAgICAgdG8gc2V0IGFyZ3MgZm9yIHRoYXQgaW5mZXJpb3IuICAqLwotLSAgaWYg KHNldF9hcmdzKQotKyAgaWYgKHB5dGhvbl9zY3JpcHQpCi0rICAgIHsKLSsgICAgICAvKiBUaGUg Zmlyc3QgYXJndW1lbnQgaXMgYSBweXRob24gc2NyaXB0IHRvIGV2YWx1YXRlLCBhbmQKLSsJIHN1 YnNlcXVlbnQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCBmb3IKLSsJIHByb2Nl c3NpbmcgdGhlcmUuICAqLwotKyAgICAgIGlmIChvcHRpbmQgPj0gYXJnYykKLSsJewotKwkgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwKLSsJCQkgICAgICBfKCIlczogUHl0aG9uIHNj cmlwdCBmaWxlIG5hbWUgcmVxdWlyZWRcbiIpLAotKwkJCSAgICAgIGFyZ3ZbMF0pOwotKwkgIGV4 aXQgKDEpOwotKwl9Ci0rCi0rICAgICAgLyogRklYTUU6IHNob3VsZCBoYW5kbGUgaW5mZXJpb3Ig SS9PIGludGVsbGlnZW50bHkgaGVyZS4KLSsJIEUuZy4sIHNob3VsZCBiZSBwb3NzaWJsZSB0byBy dW4gZ2RiIGluIHBpcGVsaW5lIGFuZCBoYXZlCi0rCSBQeXRob24gKGFuZCBnZGIpIG91dHB1dCBn byB0byBzdGRlcnIgb3IgZmlsZTsgYW5kIGlmIGEKLSsJIHByb21wdCBpcyBuZWVkZWQsIG9wZW4g dGhlIHR0eS4gICovCi0rICAgICAgcXVpZXQgPSAxOwotKyAgICAgIC8qIEZJWE1FOiBzaG91bGQg cmVhZCAuZ2RiaW5pdCBpZiwgYW5kIG9ubHkgaWYsIGEgcHJvbXB0IGlzCi0rCSByZXF1ZXN0ZWQg YnkgdGhlIHNjcmlwdC4gIFRob3VnaC4uLiBtYXliZSB0aGlzIGlzIG5vdAotKwkgaWRlYWw/ICAq LwotKyAgICAgIC8qIEZJWE1FOiBsaWtld2lzZSwgcmVhZGluZyBpbiBoaXN0b3J5LiAgKi8KLSsg ICAgICBpbmhpYml0X2dkYmluaXQgPSAxOwotKyAgICB9Ci0rICBlbHNlIGlmIChzZXRfYXJncykK LSAgICAgewotICAgICAgIC8qIFRoZSByZW1haW5pbmcgb3B0aW9ucyBhcmUgdGhlIGNvbW1hbmQt bGluZSBvcHRpb25zIGZvciB0aGUKLSAJIGluZmVyaW9yLiAgVGhlIGZpcnN0IG9uZSBpcyB0aGUg c3ltL2V4ZWMgZmlsZSwgYW5kIHRoZSByZXN0Ci1AQCAtODY3LDcgKzkwMSw4IEBAIENhbid0IGF0 dGFjaCB0byBwcm9jZXNzIGFuZCBzcGVjaWZ5IGEgY29yZSBmaWxlIGF0IHRoZSBzYW1lIHRpbWUu IikpOwotICAgeGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9y eSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuIHJlYWQuICovCi0tICBpbml0 X2hpc3RvcnkgKCk7Ci0rICBpZiAoIXB5dGhvbl9zY3JpcHQpCi0rICAgIGluaXRfaGlzdG9yeSAo KTsKLSAKLSAgIGlmIChiYXRjaCkKLSAgICAgewotQEAgLTg5NiwxMyArOTMxLDI1IEBAIENhbid0 IGF0dGFjaCB0byBwcm9jZXNzIGFuZCBzcGVjaWZ5IGEgY29yZSBmaWxlIGF0IHRoZSBzYW1lIHRp bWUuIikpOwotICNlbmRpZgotICAgICB9Ci0gCi0tICAvKiBOT1RFOiBjYWduZXkvMTk5OS0xMS0w NzogVGhlcmUgaXMgcHJvYmFibHkgbm8gcmVhc29uIGZvciBub3QKLS0gICAgIG1vdmluZyB0aGlz IGxvb3AgYW5kIHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCgpCi0tICAg ICBpbnRvIHRoZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUgbWFpbiB0aGluZyBob2xkaW5n IGJhY2sgdGhhdAotLSAgICAgY2hhbmdlIC0gU0VUX1RPUF9MRVZFTCgpIC0gaGFzIGJlZW4gZWxp bWluYXRlZC4gKi8KLS0gIHdoaWxlICgxKQotKyNpZiBIQVZFX1BZVEhPTgotKyAgaWYgKHB5dGhv bl9zY3JpcHQpCi0gICAgIHsKLS0gICAgICBjYXRjaF9lcnJvcnMgKGNhcHR1cmVkX2NvbW1hbmRf bG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rICAgICAgZXh0ZXJuIGludCBwYWdpbmF0 aW9uX2VuYWJsZWQ7Ci0rICAgICAgcGFnaW5hdGlvbl9lbmFibGVkID0gMDsKLSsgICAgICBydW5f cHl0aG9uX3NjcmlwdCAoYXJnYyAtIG9wdGluZCwgJmFyZ3Zbb3B0aW5kXSk7Ci0rICAgICAgcmV0 dXJuIDE7Ci0rICAgIH0KLSsgIGVsc2UKLSsjZW5kaWYKLSsgICAgewotKyAgICAgIC8qIE5PVEU6 IGNhZ25leS8xOTk5LTExLTA3OiBUaGVyZSBpcyBwcm9iYWJseSBubyByZWFzb24gZm9yIG5vdAot KwkgbW92aW5nIHRoaXMgbG9vcCBhbmQgdGhlIGNvZGUgZm91bmQgaW4gY2FwdHVyZWRfY29tbWFu ZF9sb29wKCkKLSsJIGludG8gdGhlIGNvbW1hbmRfbG9vcCgpIHByb3Blci4gIFRoZSBtYWluIHRo aW5nIGhvbGRpbmcgYmFjayB0aGF0Ci0rCSBjaGFuZ2UgLSBTRVRfVE9QX0xFVkVMKCkgLSBoYXMg YmVlbiBlbGltaW5hdGVkLiAqLwotKyAgICAgIHdoaWxlICgxKQotKwl7Ci0rCSAgY2F0Y2hfZXJy b3JzIChjYXB0dXJlZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19BTEwpOwotKwl9 Ci0gICAgIH0KLSAgIC8qIE5vIGV4aXQgLS0gZXhpdCBpcyB0aHJvdWdoIHF1aXRfY29tbWFuZC4g ICovCi0gfQotQEAgLTkzNCw3ICs5ODEsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCi0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0gVGhpcyBpcyB0aGUgR05V IGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKLSAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1m aWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCi0tICAgIGdkYiBbb3B0aW9uc10gLS1h cmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cblxuXAotKyAgICBn ZGIgW29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAu Li5dXG4iKSwgc3RyZWFtKTsKLSsjaWYgSEFWRV9QWVRIT04KLSsgIGZwdXRzX3VuZmlsdGVyZWQg KF8oIlwKLSsgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtzY3Jp cHQtYXJndW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0 ZXJlZCAoXygiXG5cCi0gT3B0aW9uczpcblxuXAotICIpLCBzdHJlYW0pOwotICAgZnB1dHNfdW5m aWx0ZXJlZCAoXygiXAotQEAgLTk3Miw3ICsxMDI0LDEzIEBAIE9wdGlvbnM6XG5cblwKLSAgIC0t bncJCSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCi0gICAtLW54ICAgICAg ICAgICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7Ci0gICBmcHV0c191bmZpbHRlcmVkIChn ZGJpbml0LCBzdHJlYW0pOwotLSAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCi0rICBm cHV0c191bmZpbHRlcmVkIChfKCIgZmlsZS5cbiIpLCBzdHJlYW0pOwotKyNpZiBIQVZFX1BZVEhP TgotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotKyAgLS1weXRob24sIC1QICAgICAgIEZvbGxv d2luZyBhcmd1bWVudCBpcyBQeXRob24gc2NyaXB0IGZpbGU7IHJlbWFpbmluZ1xuXAotKyAgICAg ICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHNjcmlwdC5cbiIpLCBzdHJl YW0pOwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotICAgLS1xdWlldCAgICAg ICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXAotICAgLS1y ZWFkbm93ICAgICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0IGFjY2Vzcy5c blwKLSAiKSwgc3RyZWFtKTsKLWRpZmYgLS1naXQgYS9nZGIvbWFpbnQuYyBiL2dkYi9tYWludC5j Ci1pbmRleCA0MzE2ZDY2Li5mZThhMDY5IDEwMDY0NAotLS0tIGEvZ2RiL21haW50LmMKLSsrKyBi L2dkYi9tYWludC5jCi1AQCAtOTE0LDQgKzkxNCwxMiBAQCBXaGVuIGVuYWJsZWQgR0RCIGlzIHBy b2ZpbGVkLiIpLAotIAkJCSAgIHNob3dfbWFpbnRlbmFuY2VfcHJvZmlsZV9wLAotIAkJCSAgICZt YWludGVuYW5jZV9zZXRfY21kbGlzdCwKLSAJCQkgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0 KTsKLSsgIGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoImdkYl9kYXRhZGlyIiwgY2xhc3NfbWFp bnRlbmFuY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdkYl9kYXRhZGlyLCBfKCJT ZXQgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o IlNob3cgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg IF8oIlwKLStXaGVuIHNldCwgR0RCIHVzZXMgdGhlIHNwZWNpZmllZCBwYXRoIHRvIHNlYXJjaCBm b3IgZGF0YSBmaWxlcy4iKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxM LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWludGVuYW5jZV9zZXRfY21kbGlzdCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsK LSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9taS9taS1jbWQtdmFy LmMKLWluZGV4IGIyMjc0MTEuLjNiOTMyZjAgMTAwNjQ0Ci0tLS0gYS9nZGIvbWkvbWktY21kLXZh ci5jCi0rKysgYi9nZGIvbWkvbWktY21kLXZhci5jCi1AQCAtNjk3LDcgKzY5Nyw2IEBAIG1pX2Nt ZF92YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCi0gICAg IH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIC8qIEdldCB2YXJvYmogaGFuZGxlLCBpZiBhIHZh bGlkIHZhciBvYmogbmFtZSB3YXMgc3BlY2lmaWVkICovCi0gICAgICAgc3RydWN0IHZhcm9iaiAq dmFyID0gdmFyb2JqX2dldF9oYW5kbGUgKG5hbWUpOwotIAotICAgICAgIHZhcm9ial91cGRhdGVf b25lICh2YXIsIHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7Ci1kaWZmIC0tZ2l0IGEv Z2RiL21pY3JvYmxhemUtbGludXgtdGRlcC5jIGIvZ2RiL21pY3JvYmxhemUtbGludXgtdGRlcC5j Ci1pbmRleCBhNjkxYjYyLi5kNjc5NTE2IDEwMDY0NAotLS0tIGEvZ2RiL21pY3JvYmxhemUtbGlu dXgtdGRlcC5jCi0rKysgYi9nZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMKLUBAIC0zNSw2ICsz NSw3IEBACi0gI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKLSAjaW5jbHVkZSAiZnJhbWUtdW53aW5k LmgiCi0gI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgiCi0rI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIK LSAKLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTMzLDYgKzEzNCw5IEBAIG1pY3JvYmxhemVfbGludXhf aW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKLSAgIC8qIFRyYW1wb2xpbmVzLiAg Ki8KLSAgIHRyYW1wX2ZyYW1lX3ByZXBlbmRfdW53aW5kZXIgKGdkYmFyY2gsCi0gCQkJCSZtaWNy b2JsYXplX2xpbnV4X3NpZ2hhbmRsZXJfdHJhbXBfZnJhbWUpOwotKwotKyAgc2V0X2dkYmFyY2hf Y29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsCi0rCQkJCQkgIGxpbnV4X2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyKTsKLSB9Ci0gCi0gdm9pZAotZGlmZiAtLWdpdCBhL2dkYi9t aW5zeW1zLmMgYi9nZGIvbWluc3ltcy5jCi1pbmRleCAyODdmOWRlLi4xZmUwZmJlIDEwMDY0NAot LS0tIGEvZ2RiL21pbnN5bXMuYwotKysrIGIvZ2RiL21pbnN5bXMuYwotQEAgLTMzMSw4ICszMzEs OSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0 IG9iamZpbGUgKm9iamYpCi0gCSAgICAgICBtc3ltYm9sID0gbXN5bWJvbC0+aGFzaF9uZXh0KQot IAkgICAgewotIAkgICAgICBpZiAoc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9s KSwgbmFtZSkgPT0gMCAmJgotLQkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4 dCB8fAotLQkJICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmlsZV90ZXh0KSkKLSsJ CSAgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJCSAgIHx8IE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jCi0rCQkgICB8fCBNU1lNQk9MX1RZ UEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQotIAkJewotIAkJICBzd2l0Y2ggKE1TWU1C T0xfVFlQRSAobXN5bWJvbCkpCi0gCQkgICAgewotQEAgLTY5NCw2ICs2OTUsMTYgQEAgbG9va3Vw X21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcGMpCi0gICByZXR1cm4gbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKHBjLCBOVUxMKTsKLSB9Ci0gCi0rLyogUmV0dXJu IG5vbi16ZXJvIGlmZiBQQyBpcyBpbiBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgZ251LWlmdW5jIHNl bGVjdGlvbi4gICovCi0rCi0raW50Ci0raW5fZ251X2lmdW5jX3N0dWIgKENPUkVfQUREUiBwYykK LSt7Ci0rICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPSBsb29rdXBfbWluaW1hbF9z eW1ib2xfYnlfcGMgKHBjKTsKLSsKLSsgIHJldHVybiBtc3ltYm9sICYmIE1TWU1CT0xfVFlQRSAo bXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jOwotK30KLSsKLSAvKiBGaW5kIHRoZSBtaW5p bWFsIHN5bWJvbCBuYW1lZCBOQU1FLCBhbmQgcmV0dXJuIGJvdGggdGhlIG1pbnN5bQotICAgIHN0 cnVjdCBhbmQgaXRzIG9iamZpbGUuICBUaGlzIG9ubHkgY2hlY2tzIHRoZSBsaW5rYWdlIG5hbWUu ICBTZXRzCi0gICAgKk9CSkZJTEVfUCBhbmQgcmV0dXJucyB0aGUgbWluaW1hbCBzeW1ib2wsIGlm IGl0IGlzIGZvdW5kLiAgSWYgaXQKLUBAIC03NjMsNiArNzc0LDcgQEAgcHJpbV9yZWNvcmRfbWlu aW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBhZGRyZXNzLAotICAgc3dp dGNoIChtc190eXBlKQotICAgICB7Ci0gICAgIGNhc2UgbXN0X3RleHQ6Ci0rICAgIGNhc2UgbXN0 X3RleHRfZ251X2lmdW5jOgotICAgICBjYXNlIG1zdF9maWxlX3RleHQ6Ci0gICAgIGNhc2UgbXN0 X3NvbGliX3RyYW1wb2xpbmU6Ci0gICAgICAgc2VjdGlvbiA9IFNFQ1RfT0ZGX1RFWFQgKG9iamZp bGUpOwotQEAgLTEyMjgsNyArMTI0MCw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQg KHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgQ09SRV9BRERSIHBjKQotICAgICB7Ci0gICAgICAg QUxMX01TWU1CT0xTIChvYmpmaWxlLCBtc3ltYm9sKQotICAgICAgIHsKLS0JaWYgKE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJaWYgKChNU1lNQk9MX1RZUEUgKG1zeW1ib2wp ID09IG1zdF90ZXh0Ci0rCSAgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0 X2dudV9pZnVuYykKLSAJICAgICYmIHN0cmNtcCAoU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJv bCksCi0gCQkgICAgICAgU1lNQk9MX0xJTktBR0VfTkFNRSAodHN5bWJvbCkpID09IDApCi0gCSAg cmV0dXJuIFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKTsKLWRpZmYgLS1naXQgYS9nZGIv bWlwcy1saW51eC10ZGVwLmMgYi9nZGIvbWlwcy1saW51eC10ZGVwLmMKLWluZGV4IDU5MjRiMzAu LjI5NTcwMjQgMTAwNjQ0Ci0tLS0gYS9nZGIvbWlwcy1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9t aXBzLWxpbnV4LXRkZXAuYwotQEAgLTM4LDYgKzM4LDcgQEAKLSAjaW5jbHVkZSAidGFyZ2V0LWRl c2NyaXB0aW9ucy5oIgotICNpbmNsdWRlICJtaXBzLWxpbnV4LXRkZXAuaCIKLSAjaW5jbHVkZSAi Z2xpYmMtdGRlcC5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gc3RhdGljIHN0cnVj dCB0YXJnZXRfc29fb3BzIG1pcHNfc3ZyNF9zb19vcHM7Ci0gCi1AQCAtMTIyMiw2ICsxMjIzLDkg QEAgbWlwc19saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLAotIAl0ZGVz Y19udW1iZXJlZF9yZWdpc3RlciAoZmVhdHVyZSwgdGRlc2NfZGF0YSwgTUlQU19SRVNUQVJUX1JF R05VTSwKLSAJCQkJICJyZXN0YXJ0Iik7Ci0gICAgIH0KLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZl cnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zy b21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2ls ZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL21pcHNyZWFk LmMgYi9nZGIvbWlwc3JlYWQuYwotaW5kZXggMDkzMzEzZS4uOTE0NGQwMCAxMDA2NDQKLS0tLSBh L2dkYi9taXBzcmVhZC5jCi0rKysgYi9nZGIvbWlwc3JlYWQuYwotQEAgLTM5NCw2ICszOTQsNyBA QCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgZWNvZmZfc3ltX2ZucyA9Ci0gICBtaXBzY29mZl9uZXdf aW5pdCwJCS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRh YiAqLwotICAgbWlwc2NvZmZfc3ltZmlsZV9pbml0LAkvKiBzeW1faW5pdDogcmVhZCBpbml0aWFs IGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCi0gICBtaXBzY29mZl9zeW1maWxlX3JlYWQs CS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIgKi8KLSsgIE5VTEws CQkJCS8qIHN5bV9yZWFkX3BzeW1ib2xzICovCi0gICBtaXBzY29mZl9zeW1maWxlX2ZpbmlzaCwJ Lyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCi0gICBkZWZhdWx0 X3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6IGR1bW15IEZJWE1FIHRpbCBpbXBsZW0g c3ltIHJlbG9jICovCi0gICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8qIHN5bV9zZWdtZW50 czogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbQotZGlmZiAtLWdpdCBhL2dkYi9tbjEwMzAw LWxpbnV4LXRkZXAuYyBiL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYwotaW5kZXggZDQ2MDJhNC4u N2JiYTcwNyAxMDA2NDQKLS0tLSBhL2dkYi9tbjEwMzAwLWxpbnV4LXRkZXAuYwotKysrIGIvZ2Ri L21uMTAzMDAtbGludXgtdGRlcC5jCi1AQCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJmcmFt ZS5oIgotICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCi0gI2luY2x1ZGUgInRyYW1wLWZyYW1lLmgi Ci0rI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi1A QCAtNzE4LDYgKzcxOSw5IEBAIGFtMzNfbGludXhfaW5pdF9vc2FiaSAoc3RydWN0IGdkYmFyY2hf aW5mbyBnZGJpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSAKLSAgIHRyYW1wX2ZyYW1l X3ByZXBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZhbTMzX2xpbnV4X3NpZ2ZyYW1lKTsKLSAgIHRy YW1wX2ZyYW1lX3ByZXBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZhbTMzX2xpbnV4X3J0X3NpZ2Zy YW1lKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJh cmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0gfQotIAot IC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4g ICovCi1kaWZmIC0tZ2l0IGEvZ2RiL29iamMtbGFuZy5jIGIvZ2RiL29iamMtbGFuZy5jCi1pbmRl eCBhMDUwZjE1Li4wNGQxZjFjIDEwMDY0NAotLS0tIGEvZ2RiL29iamMtbGFuZy5jCi0rKysgYi9n ZGIvb2JqYy1sYW5nLmMKLUBAIC0xMTc4LDE2ICsxMTc4LDYgQEAgZmluZF9tZXRob2RzIChzdHJ1 Y3Qgc3ltdGFiICpzeW10YWIsIGNoYXIgdHlwZSwKLSAKLSAJICBRVUlUOwotIAotLQkgIC8qIFRo ZSBtaW5pbWFsIHN5bWJvbCBtaWdodCBwb2ludCB0byBhIGZ1bmN0aW9uIGRlc2NyaXB0b3I7Ci0t CSAgICAgcmVzb2x2ZSBpdCB0byB0aGUgYWN0dWFsIGNvZGUgYWRkcmVzcyBpbnN0ZWFkLiAgKi8K LS0JICBwYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHBj LAotLQkJCQkJCSAgICZjdXJyZW50X3RhcmdldCk7Ci0tCi0tCSAgaWYgKHN5bXRhYikKLS0JICAg IGlmIChwYyA8IEJMT0NLX1NUQVJUIChibG9jaykgfHwgcGMgPj0gQkxPQ0tfRU5EIChibG9jaykp Ci0tCSAgICAgIC8qIE5vdCBpbiB0aGUgc3BlY2lmaWVkIHN5bXRhYi4gICovCi0tCSAgICAgIGNv bnRpbnVlOwotLQotIAkgIHN5bW5hbWUgPSBTWU1CT0xfTkFUVVJBTF9OQU1FIChtc3ltYm9sKTsK LSAJICBpZiAoc3ltbmFtZSA9PSBOVUxMKQotIAkgICAgY29udGludWU7Ci1AQCAtMTIyMyw2ICsx MjEzLDE3IEBAIGZpbmRfbWV0aG9kcyAoc3RydWN0IHN5bXRhYiAqc3ltdGFiLCBjaGFyIHR5cGUs Ci0gCSAgICAgICgobnNlbGVjdG9yID09IE5VTEwpIHx8IChzdHJjbXAgKHNlbGVjdG9yLCBuc2Vs ZWN0b3IpICE9IDApKSkKLSAJICAgIGNvbnRpbnVlOwotIAotKwkgIC8qIFRoZSBtaW5pbWFsIHN5 bWJvbCBtaWdodCBwb2ludCB0byBhIGZ1bmN0aW9uIGRlc2NyaXB0b3I7Ci0rCSAgICAgcmVzb2x2 ZSBpdCB0byB0aGUgYWN0dWFsIGNvZGUgYWRkcmVzcyBpbnN0ZWFkLiAgRGVsYXkgdGhlIGNhbGwg YXMKLSsJICAgICBpdHMgcmVzb2x1dGlvbiBtYXkgYmUgZXhwZW5zaXZlLiAgKi8KLSsJICBwYyA9 IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHBjLAotKwkJCQkJ CSAgICZjdXJyZW50X3RhcmdldCk7Ci0rCi0rCSAgaWYgKHN5bXRhYikKLSsJICAgIGlmIChwYyA8 IEJMT0NLX1NUQVJUIChibG9jaykgfHwgcGMgPj0gQkxPQ0tfRU5EIChibG9jaykpCi0rCSAgICAg IC8qIE5vdCBpbiB0aGUgc3BlY2lmaWVkIHN5bXRhYi4gICovCi0rCSAgICAgIGNvbnRpbnVlOwot KwotIAkgIHN5bSA9IGZpbmRfcGNfZnVuY3Rpb24gKHBjKTsKLSAJICBpZiAoc3ltICE9IE5VTEwp Ci0gCSAgICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYwot aW5kZXggYzI3NjNjMi4uNWQ2MjAyMCAxMDA2NDQKLS0tLSBhL2dkYi9vYmpmaWxlcy5jCi0rKysg Yi9nZGIvb2JqZmlsZXMuYwotQEAgLTc5Miw2ICs3OTIsMTAgQEAgb2JqZmlsZV9yZWxvY2F0ZTEg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zm c2V0cykKLSAgICAgfQotICAgfQotIAotKyAgaWYgKG9iamZpbGUtPnF1aWNrX2FkZHJtYXApCi0r ICAgIGFkZHJtYXBfcmVsb2NhdGUgKG9iamZpbGUtPnF1aWNrX2FkZHJtYXAsCi0rCQkgICAgICBB Tk9GRlNFVCAoZGVsdGEsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKSk7Ci0rCi0gICB7Ci0gICAg IHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW07Ci0gCi1AQCAtOTE3LDcgKzkyMSw3IEBAIG9i amZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9v ZmZzZXRzICpuZXdfb2Zmc2V0cykKLSBpbnQKLSBvYmpmaWxlX2hhc19wYXJ0aWFsX3N5bWJvbHMg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIHsKLS0gIHJldHVybiBvYmpmaWxlLT5wc3ltdGFi cyAhPSBOVUxMOwotKyAgcmV0dXJuIG9iamZpbGUtPnBzeW10YWJzICE9IE5VTEwgfHwgb2JqZmls ZS0+cXVpY2tfYWRkcm1hcDsKLSB9Ci0gCi0gLyogUmV0dXJuIG5vbi16ZXJvIGlmIE9CSkZJTEUg aGFzIGZ1bGwgc3ltYm9scy4gICovCi1AQCAtOTU3LDYgKzk2MSwyMCBAQCBoYXZlX3BhcnRpYWxf c3ltYm9scyAodm9pZCkKLSAgICAgaWYgKG9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2Zw KSkKLSAgICAgICByZXR1cm4gMTsKLSAgIH0KLSsKLSsgIC8qIFRyeSBhZ2FpbiwgYWZ0ZXIgcmVh ZGluZyBwYXJ0aWFsIHN5bWJvbHMuICBXZSBkbyB0aGlzIGluIHR3bwotKyAgICAgcGFzc2VzIGJl Y2F1c2Ugb2JqZmlsZXMgYXJlIGFsd2F5cyBhZGRlZCB0byB0aGUgaGVhZCBvZiB0aGUgbGlzdCwK LSsgICAgIGFuZCB0aGVyZSBtaWdodCBiZSBhIGxhdGVyIG9iamZpbGUgZm9yIHdoaWNoIHdlJ3Zl IGFscmVhZHkgcmVhZAotKyAgICAgcGFydGlhbCBzeW1ib2xzLiAgKi8KLSsgIEFMTF9PQkpGSUxF UyAob2ZwKQotKyAgewotKyAgICByZXF1aXJlX3BhcnRpYWxfc3ltYm9scyAob2ZwKTsKLSsgICAg aWYgKG9mcC0+cHN5bXRhYnMgIT0gTlVMTCkKLSsgICAgICB7Ci0rCXJldHVybiAxOwotKyAgICAg IH0KLSsgIH0KLSsKLSAgIHJldHVybiAwOwotIH0KLSAKLWRpZmYgLS1naXQgYS9nZGIvb2JqZmls ZXMuaCBiL2dkYi9vYmpmaWxlcy5oCi1pbmRleCBjNjg5NjIyLi5lYjNhZTEwIDEwMDY0NAotLS0t IGEvZ2RiL29iamZpbGVzLmgKLSsrKyBiL2dkYi9vYmpmaWxlcy5oCi1AQCAtMjEzLDYgKzIxMywx MSBAQCBzdHJ1Y3Qgb2JqZmlsZQotIAotICAgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzeW10 YWJzOwotIAotKyAgICAvKiBBbiBhZGRyZXNzIG1hcCB0aGF0IGNhbiBiZSB1c2VkIHRvIHF1aWNr bHkgZGV0ZXJtaW5lIGlmIGFuCi0rICAgICAgIGFkZHJlc3MgY29tZXMgZnJvbSB0aGlzIG9iamZp bGUuICBUaGlzIGNhbiBiZSBOVUxMLiAgKi8KLSsKLSsgICAgc3RydWN0IGFkZHJtYXAgKnF1aWNr X2FkZHJtYXA7Ci0rCi0gICAgIC8qIE1hcCBhZGRyZXNzZXMgdG8gdGhlIGVudHJpZXMgb2YgUFNZ TVRBQlMuICBJdCB3b3VsZCBiZSBtb3JlIGVmZmljaWVudCB0bwotICAgICAgICBoYXZlIGEgbWFw IHBlciB0aGUgd2hvbGUgcHJvY2VzcyBidXQgQUREUk1BUCBjYW5ub3Qgc2VsZWN0aXZlbHkgcmVt b3ZlCi0gICAgICAgIGl0cyBpdGVtcyBkdXJpbmcgRlJFRV9PQkpGSUxFLiAgVGhpcyBtYXBwaW5n IGlzIGFscmVhZHkgcHJlc2VudCBldmVuIGZvcgotQEAgLTQyNiw2ICs0MzEsMTUgQEAgc3RydWN0 IG9iamZpbGUKLSAKLSAjZGVmaW5lIE9CSkZfVVNFUkxPQURFRAkoMSA8PCAzKQkvKiBVc2VyIGxv YWRlZCAqLwotIAotKy8qIFNldCBpZiB3ZSBoYXZlIHRyaWVkIHRvIHJlYWQgcGFydGlhbCBzeW10 YWJzIGZvciB0aGlzIG9iamZpbGUuCi0rICAgVGhpcyBpcyB1c2VkIHRvIGFsbG93IGxhenkgcmVh ZGluZyBvZiBwYXJ0aWFsIHN5bXRhYnMuICAqLwotKwotKyNkZWZpbmUgT0JKRl9TWU1UQUJTX1JF QUQgKDEgPDwgNikKLSsKLSsvKiBUaGlzIGZsYWcgaXMgc2V0IGZvciB0aGUgbWFpbiBvYmpmaWxl LiAgKi8KLSsKLSsjZGVmaW5lIE9CSkZfTUFJTiAoMSA8PCA3KQotKwotIC8qIFRoZSBvYmplY3Qg ZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBydW50aW1lIGNvbW1vbiBtaW5pbWFsIHN5bWJvbHMKLSAg ICBmb3IgU3VuT1M0LiBOb3RlIHRoYXQgdGhpcyBvYmpmaWxlIGhhcyBubyBhc3NvY2lhdGVkIEJG RC4gICovCi0gCi1AQCAtNjA2LDYgKzYyMCwxMyBAQCBleHRlcm4gdm9pZCBnZGJfYmZkX3VucmVm IChzdHJ1Y3QgYmZkICphYmZkKTsKLSAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkJIFwKLSAgICAg QUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZpbGUsIHApCi0gCi0rLyogTGlrZSBBTExfUFNZTVRB QlMsIGJ1dCBlbnN1cmUgdGhhdCBwYXJ0aWFsIHN5bWJvbHMgaGF2ZSBiZWVuIHJlYWQKLSsgICBi ZWZvcmUgZXhhbWluaW5nIHRoZSBvYmpmaWxlLiAgKi8KLSsKLSsjZGVmaW5lIEFMTF9QU1lNVEFC U19SRVFVSVJFRChvYmpmaWxlLCBwKQkJCVwKLSsgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkJCQkJ CVwKLSsgICAgQUxMX09CSkZJTEVfUFNZTVRBQlMgKHJlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChv YmpmaWxlKSwgcCkKLSsKLSAjZGVmaW5lIEFMTF9QU1BBQ0VfUFNZTVRBQlMoc3MsIG9iamZpbGUs IHApCQlcCi0gICBBTExfUFNQQUNFX09CSkZJTEVTIChzcywgb2JqZmlsZSkJCQlcCi0gICAgIEFM TF9PQkpGSUxFX1BTWU1UQUJTIChvYmpmaWxlLCBwKQotZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5j IGIvZ2RiL3BhcnNlLmMKLWluZGV4IGFhYmM0NjEuLmUyYWI4ZDkgMTAwNjQ0Ci0tLS0gYS9nZGIv cGFyc2UuYwotKysrIGIvZ2RiL3BhcnNlLmMKLUBAIC02Miw2ICs2Miw3IEBAIGNvbnN0IHN0cnVj dCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3JpcHRvcl9zdGFuZGFyZCA9Ci0gICB7Ci0gICAgIHBy aW50X3N1YmV4cF9zdGFuZGFyZCwKLSAgICAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkLAotKyAg ICBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCwKLSAgICAgb3BfbmFtZV9zdGFuZGFyZCwKLSAgICAg ZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKLSAgICAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk Ci1AQCAtNTIzLDYgKzUyNCwxMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxf c3ltYm9sICptc3ltYm9sKQotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBl IChvYmpmaWxlKS0+bm9kZWJ1Z190ZXh0X3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAg IGNhc2UgbXN0X3RleHRfZ251X2lmdW5jOgotKyAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2Jq ZmlsZV90eXBlIChvYmpmaWxlKQotKwkJCQkJICAgICAgIC0+bm9kZWJ1Z190ZXh0X2dudV9pZnVu Y19zeW1ib2wpOwotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIG1zdF9kYXRhOgotICAgICBj YXNlIG1zdF9maWxlX2RhdGE6Ci0gICAgIGNhc2UgbXN0X2JzczoKLUBAIC04NTMsNiArODU5LDEw IEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cHIsIGlu dCBlbmRwb3MsCi0gICAgICAgYXJncyA9IDE7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAgIGNhc2Ug VFlQRV9JTlNUQU5DRV9MT09LVVA6Ci0rICAgICAgb3BsZW4gPSAzOwotKyAgICAgIGJyZWFrOwot KwotICAgICBjYXNlIE9QX09CSkNfTVNHQ0FMTDoJLyogT2JqZWN0aXZlIEMgbWVzc2FnZSAobWV0 aG9kKSBjYWxsICovCi0gICAgICAgb3BsZW4gPSA0OwotICAgICAgIGFyZ3MgPSAxICsgbG9uZ2Vz dF90b19pbnQgKGV4cHItPmVsdHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKLUBAIC04ODksNiAr ODk5LDEzIEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cHIsIGludCBlbmRwb3MsCi0gICAgICAgYXJncyA9IDE7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAg IGNhc2UgT1BfQURMX0ZVTkM6Ci0rICAgICAgb3BsZW4gPSBsb25nZXN0X3RvX2ludCAoZXhwci0+ ZWx0c1tlbmRwb3MgLSAyXS5sb25nY29uc3QpOwotKyAgICAgIG9wbGVuID0gNCArIEJZVEVTX1RP X0VYUF9FTEVNIChvcGxlbiArIDEpOwotKyAgICAgIG9wbGVuKys7Ci0rICAgICAgb3BsZW4rKzsK LSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSBPUF9MQUJFTEVEOgotICAgICBjYXNlIFNUUlVD VE9QX1NUUlVDVDoKLSAgICAgY2FzZSBTVFJVQ1RPUF9QVFI6Ci1AQCAtMTM3Myw2ICsxMzkwLDE1 MSBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQotICAgdmFf ZW5kIChhcmdzKTsKLSB9Ci0gCi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGV4cF9kZXNjcmlw dG9yIG1ldGhvZCBvcGVyYXRvcl9jaGVjay4gICovCi0rCi0raW50Ci0rb3BlcmF0b3JfY2hlY2tf c3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0rCQkJIGludCAoKnR5 cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKLSsJCQkgaW50ICgqb2Jq ZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCQkgICAgICB2b2lkICpk YXRhKSwKLSsJCQkgdm9pZCAqZGF0YSkKLSt7Ci0rICBjb25zdCB1bmlvbiBleHBfZWxlbWVudCAq Y29uc3QgZWx0cyA9IGV4cC0+ZWx0czsKLSsgIHN0cnVjdCB0eXBlICp0eXBlID0gTlVMTDsKLSsg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gTlVMTDsKLSsKLSsgIC8qIEV4dGVuZGVkIG9wZXJh dG9ycyBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkgaGFuZGxlZCBieSBleHBfZGVzY3JpcHRvcgot KyAgICAgaXRlcmF0ZSBtZXRob2Qgb2YgaXRzIHNwZWNpZmljIGxhbmd1YWdlLiAgKi8KLSsgIGdk Yl9hc3NlcnQgKGVsdHNbcG9zXS5vcGNvZGUgPCBPUF9FWFRFTkRFRDApOwotKwotKyAgLyogVHJh Y2sgdGhlIGNhbGxlcnMgb2Ygd3JpdGVfZXhwX2VsdF90eXBlIGZvciB0aGlzIHRhYmxlLiAgKi8K LSsKLSsgIHN3aXRjaCAoZWx0c1twb3NdLm9wY29kZSkKLSsgICAgewotKyAgICBjYXNlIEJJTk9Q X1ZBTDoKLSsgICAgY2FzZSBPUF9DT01QTEVYOgotKyAgICBjYXNlIE9QX0RFQ0ZMT0FUOgotKyAg ICBjYXNlIE9QX0RPVUJMRToKLSsgICAgY2FzZSBPUF9MT05HOgotKyAgICBjYXNlIE9QX1NDT1BF OgotKyAgICBjYXNlIE9QX1RZUEU6Ci0rICAgIGNhc2UgVU5PUF9DQVNUOgotKyAgICBjYXNlIFVO T1BfTUFYOgotKyAgICBjYXNlIFVOT1BfTUVNVkFMOgotKyAgICBjYXNlIFVOT1BfTUlOOgotKyAg ICAgIHR5cGUgPSBlbHRzW3BvcyArIDFdLnR5cGU7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNh c2UgVU5PUF9NRU1WQUxfVExTOgotKyAgICAgIG9iamZpbGUgPSBlbHRzW3BvcyArIDFdLm9iamZp bGU7Ci0rICAgICAgdHlwZSA9IGVsdHNbcG9zICsgMl0udHlwZTsKLSsgICAgICBicmVhazsKLSsK LSsgICAgY2FzZSBPUF9WQVJfVkFMVUU6Ci0rICAgICAgewotKwljb25zdCBzdHJ1Y3QgYmxvY2sg KmNvbnN0IGJsb2NrID0gZWx0c1twb3MgKyAxXS5ibG9jazsKLSsJY29uc3Qgc3RydWN0IHN5bWJv bCAqY29uc3Qgc3ltYm9sID0gZWx0c1twb3MgKyAyXS5zeW1ib2w7Ci0rCWNvbnN0IHN0cnVjdCBv Ympfc2VjdGlvbiAqY29uc3Qgc2VjdGlvbiA9IFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9sKTsK LSsKLSsJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNl ZC4KLSsJICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KLSsJ aWYgKG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKFNZTUJPTF9TWU1UQUIgKHN5bWJv bCktPm9iamZpbGUsIGRhdGEpKQotKwkgIHJldHVybiAxOwotKwotKwkvKiBDaGVjayBvYmpmaWxl IHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAqLwotKwlv YmpmaWxlID0gYmxvY2tfb2JqZmlsZSAoYmxvY2spOwotKwotKwl0eXBlID0gU1lNQk9MX1RZUEUg KHN5bWJvbCk7Ci0rICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAvKiBJbnZv a2UgY2FsbGJhY2tzIGZvciBUWVBFIGFuZCBPQkpGSUxFIGlmIHRoZXkgd2VyZSBzZXQgYXMgbm9u LU5VTEwuICAqLwotKwotKyAgaWYgKHR5cGUgJiYgdHlwZV9mdW5jICYmICgqdHlwZV9mdW5jKSAo dHlwZSwgZGF0YSkpCi0rICAgIHJldHVybiAxOwotKyAgaWYgKHR5cGUgJiYgVFlQRV9PQkpGSUxF ICh0eXBlKSAmJiBvYmpmaWxlX2Z1bmMKLSsgICAgICAmJiAoKm9iamZpbGVfZnVuYykgKFRZUEVf T0JKRklMRSAodHlwZSksIGRhdGEpKQotKyAgICByZXR1cm4gMTsKLSsgIGlmIChvYmpmaWxlICYm IG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQotKyAgICBy ZXR1cm4gMTsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBDYWxsIFRZUEVfRlVOQyBhbmQg T0JKRklMRV9GVU5DIGZvciBhbnkgVFlQRSBhbmQgT0JKRklMRSBmb3VuZCBiZWluZwotKyAgIHJl ZmVyZW5jZWQgYnkgRVhQLiAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGggTlVM TCBUWVBFIG9yIE5VTEwKLSsgICBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4gYXJi aXRyYXJ5IGNhbGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuCi0rICAgSWYgYW55IG9mIHRoZSBm dW5jdGlvbnMgcmV0dXJucyBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJv Ci0rICAgdmFsdWUgaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIE90aGVy d2lzZSB6ZXJvIGlzIHJldHVybmVkCi0rICAgYWZ0ZXIgaXRlcmF0aW5nIHRocm91Z2ggd2hvbGUg RVhQLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZXhwX2l0ZXJhdGUgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsCi0rCSAgICAgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQg KmRhdGEpLAotKwkgICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCB2b2lkICpkYXRhKSwKLSsJICAgICB2b2lkICpkYXRhKQotK3sKLSsgIGludCBlbmRwb3M7 Ci0rICBjb25zdCB1bmlvbiBleHBfZWxlbWVudCAqY29uc3QgZWx0cyA9IGV4cC0+ZWx0czsKLSsK LSsgIGZvciAoZW5kcG9zID0gZXhwLT5uZWx0czsgZW5kcG9zID4gMDsgKQotKyAgICB7Ci0rICAg ICAgaW50IHBvcywgYXJncywgb3BsZW4gPSAwOwotKwotKyAgICAgIGV4cC0+bGFuZ3VhZ2VfZGVm bi0+bGFfZXhwX2Rlc2MtPm9wZXJhdG9yX2xlbmd0aCAoZXhwLCBlbmRwb3MsCi0rCQkJCQkJCSZv cGxlbiwgJmFyZ3MpOwotKyAgICAgIGdkYl9hc3NlcnQgKG9wbGVuID4gMCk7Ci0rCi0rICAgICAg cG9zID0gZW5kcG9zIC0gb3BsZW47Ci0rICAgICAgaWYgKGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFf ZXhwX2Rlc2MtPm9wZXJhdG9yX2NoZWNrIChleHAsIHBvcywgdHlwZV9mdW5jLAotKwkJCQkJCQkg ICBvYmpmaWxlX2Z1bmMsIGRhdGEpKQotKwlyZXR1cm4gMTsKLSsKLSsgICAgICBlbmRwb3MgPSBw b3M7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBIZWxwZXIgZm9yIGV4cF91 c2VzX29iamZpbGUuICAqLwotKwotK3N0YXRpYyBpbnQKLStleHBfdXNlc19vYmpmaWxlX2l0ZXIg KHN0cnVjdCBvYmpmaWxlICpleHBfb2JqZmlsZSwgdm9pZCAqb2JqZmlsZV92b2lkcCkKLSt7Ci0r ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IG9iamZpbGVfdm9pZHA7Ci0rCi0rICByZXR1cm4g ZXhwX29iamZpbGUgPT0gb2JqZmlsZTsKLSt9Ci0rCi0rLyogUmV0dXJuIDEgaWYgRVhQIHVzZXMg T0JKRklMRSAoYW5kIHdpbGwgYmVjb21lIGRhbmdsaW5nIHdoZW4gT0JKRklMRQotKyAgIGlzIHVu bG9hZGVkKSwgb3RoZXJ3aXNlIHJldHVybiAwLiAgKi8KLSsKLStpbnQKLStleHBfdXNlc19vYmpm aWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSt7 Ci0rICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgTlVMTCwgZXhwX3VzZXNfb2JqZmlsZV9pdGVy LCBvYmpmaWxlKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZvciBleHBfdHlwZXNfbWFya191c2VkLiAg Ki8KLSsKLStzdGF0aWMgaW50Ci0rZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVyIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgdm9pZCAqdW51c2VkKQotK3sKLSsgIHR5cGVfbWFya191c2VkICh0eXBlKTsKLSsK LSsgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLwotKyAgcmV0dXJuIDA7Ci0rfQotKwot Ky8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFIGNvbnRhaW5lZCBpbiBFWFAuICAq LwotKwotK3ZvaWQKLStleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw KQotK3sKLSsgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90eXBlc19tYXJrX3VzZWRfaXRlciwgTlVM TCwgTlVMTCk7Ci0rfQotKwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9wYXJzZSAodm9pZCkKLSB7Ci1k aWZmIC0tZ2l0IGEvZ2RiL3BhcnNlci1kZWZzLmggYi9nZGIvcGFyc2VyLWRlZnMuaAotaW5kZXgg YzRlYjFhMC4uMmE0M2ZlMyAxMDA2NDQKLS0tLSBhL2dkYi9wYXJzZXItZGVmcy5oCi0rKysgYi9n ZGIvcGFyc2VyLWRlZnMuaAotQEAgLTE5Miw2ICsxOTIsMTMgQEAgZXh0ZXJuIHZvaWQgb3BlcmF0 b3JfbGVuZ3RoIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLCBpbnQgKik7Ci0gCi0g ZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq LCBpbnQsIGludCAqLCBpbnQgKik7Ci0gCi0rZXh0ZXJuIGludCBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCQkJICAgIGludCAoKnR5 cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCQkJCSAgICAgIHZvaWQgKmRhdGEpLAot KwkJCQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKQotKwkJCQkgICAgICAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIHZvaWQgKmRhdGEpLAotKwkJCQkgICAgdm9pZCAqZGF0YSk7Ci0rCi0gZXh0ZXJu IGNoYXIgKm9wX25hbWVfc3RhbmRhcmQgKGVudW0gZXhwX29wY29kZSk7Ci0gCi0gZXh0ZXJuIHN0 cnVjdCB0eXBlICpmb2xsb3dfdHlwZXMgKHN0cnVjdCB0eXBlICopOwotQEAgLTI3MCw2ICsyNzcs MjAgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCi0gICAgICAgIHRoZSBudW1iZXIgb2Ygc3ViZXhw cmVzc2lvbnMgaXQgdGFrZXMuICAqLwotICAgICB2b2lkICgqb3BlcmF0b3JfbGVuZ3RoKSAoc3Ry dWN0IGV4cHJlc3Npb24qLCBpbnQsIGludCosIGludCAqKTsKLSAKLSsgICAgLyogQ2FsbCBUWVBF X0ZVTkMgYW5kIE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVp bmcKLSsgICAgICAgcmVmZXJlbmNlZCBieSB0aGUgc2luZ2xlIG9wZXJhdG9yIG9mIEVYUCBhdCBw b3NpdGlvbiBQT1MuICBPcGVyYXRvcgotKyAgICAgICBwYXJhbWV0ZXJzIGFyZSBsb2NhdGVkIGF0 IHBvc2l0aXZlIChQT1MgKyBudW1iZXIpIG9mZnNldHMgaW4gRVhQLgotKyAgICAgICBUaGUgZnVu Y3Rpb25zIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTCBPQkpG SUxFLgotKyAgICAgICBGdW5jdGlvbnMgc2hvdWxkIGdldCBwYXNzZWQgYW4gYXJiaXRyYXJ5IGNh bGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuCi0rICAgICAgIElmIGFueSBvZiB0aGUgZnVuY3Rp b25zIHJldHVybnMgbm9uLXplcm8gdmFsdWUgdGhlbiAoYW55IG90aGVyKSBub24temVybwotKyAg ICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4g IE90aGVyd2lzZSB6ZXJvCi0rICAgICAgIHNob3VsZCBiZSByZXR1cm5lZC4gICovCi0rICAgIGlu dCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJ CQkgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0r CQkJICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJ CQkJdm9pZCAqZGF0YSksCi0rCQkJICAgdm9pZCAqZGF0YSk7Ci0rCi0gICAgIC8qIE5hbWUgb2Yg dGhpcyBvcGVyYXRvciBmb3IgZHVtcGluZyBwdXJwb3Nlcy4gICovCi0gICAgIGNoYXIgKigqb3Bf bmFtZSkgKGVudW0gZXhwX29wY29kZSk7Ci0gCi1AQCAtMzAyLDQgKzMyMyw4IEBAIGV4dGVybiB2 b2lkIHByaW50X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgaW50ICosCi0g Ci0gZXh0ZXJuIHZvaWQgcGFyc2VyX2ZwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4p IEFUVFJfRk9STUFUIChwcmludGYsIDIgLDMpOwotIAotK2V4dGVybiBpbnQgZXhwX3VzZXNfb2Jq ZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwot KwotK2V4dGVybiB2b2lkIGV4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpl eHApOwotKwotICNlbmRpZiAvKiBQQVJTRVJfREVGU19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Bw Yy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLWluZGV4IDEwZmY3M2QuLjViNjhm NTYgMTAwNjQ0Ci0tLS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvcHBjLWxpbnV4 LW5hdC5jCi1AQCAtMTM5MSw2ICsxMzkxLDI0IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydykKLSAgIHJldHVybiAwOwotIH0KLSAK LSsvKiBTZWUgdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cy4gIERvIG5vdCB1c2Ugd3JhcHBlcgot KyAgIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCBhcyBpdCB3b3VsZCBtb2RpZnkgdGhlIHJl Z2lzdGVyIGNhY2hlCi0rICAgKHNhdmVkX2RhYnJfdmFsdWUpLiAgKi8KLSsKLStzdGF0aWMgaW50 Ci0rcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKLSt7Ci0rICBwaWRfdCB0aWQ7 Ci0rCi0rICB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOwotKyAgaWYgKHRpZCA9PSAwKQot KyAgICB0aWQgPSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOwotKwotKyAgaWYgKHB0cmFjZSAoUFRS QUNFX1NFVF9ERUJVR1JFRywgdGlkLCBOVUxMLCBOVUxMKSA8IDApCi0rICAgIHJldHVybiAtMTsK LSsgIHJldHVybiAwOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIHBwY19saW51eF9uZXdfdGhyZWFk IChwdGlkX3QgcHRpZCkKLSB7Ci1AQCAtMTY0OCw2ICsxNjY2LDcgQEAgX2luaXRpYWxpemVfcHBj X2xpbnV4X25hdCAodm9pZCkKLSAgIHQtPnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9 IHBwY19saW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQ7Ci0gICB0LT50b19pbnNlcnRf d2F0Y2hwb2ludCA9IHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludDsKLSAgIHQtPnRvX3JlbW92 ZV93YXRjaHBvaW50ID0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50OwotKyAgdC0+dG9fZGV0 YWNoX3dhdGNocG9pbnRzID0gcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50czsKLSAgIHQtPnRv X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7 Ci0gICB0LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFf YWRkcmVzczsKLSAgIHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGlu dXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZTsKLWRpZmYgLS1naXQgYS9nZGIvcHBjLWxp bnV4LXRkZXAuYyBiL2dkYi9wcGMtbGludXgtdGRlcC5jCi1pbmRleCBmYWU1YWIyLi45NGY5OTNl IDEwMDY0NAotLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9wcGMtbGludXgt dGRlcC5jCi1AQCAtNDgsNiArNDgsNyBAQAotICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0gI2lu Y2x1ZGUgInNwdS10ZGVwLmgiCi0gI2luY2x1ZGUgInhtbC1zeXNjYWxsLmgiCi0rI2luY2x1ZGUg ImxpbnV4LXRkZXAuaCIKLSAKLSAjaW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtMzJs LmMiCi0gI2luY2x1ZGUgImZlYXR1cmVzL3JzNjAwMC9wb3dlcnBjLWFsdGl2ZWMzMmwuYyIKLUBA IC02NzIsOCArNjczLDE5IEBAIHBwYzY0X2xpbnV4X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRy IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgICByZXMgPSBiZmRfZ2V0X3NlY3Rpb25f Y29udGVudHMgKHMtPmJmZCwgcy0+dGhlX2JmZF9zZWN0aW9uLAotIAkJCQkgICAgICAmYnVmLCBh ZGRyIC0gcy0+YWRkciwgOCk7Ci0gICAgICAgaWYgKHJlcyAhPSAwKQotLQlyZXR1cm4gZXh0cmFj dF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIDgsIGJ5dGVfb3JkZXIpCi0tCQktIGJmZF9zZWN0aW9u X3ZtYSAocy0+YmZkLCBzLT50aGVfYmZkX3NlY3Rpb24pICsgcy0+YWRkcjsKLSsJewotKwkgIENP UkVfQUREUiBwYywgcmVzb2x2ZWQ7Ci0rCSAgCi0rCSAgcGMgPSBleHRyYWN0X3Vuc2lnbmVkX2lu dGVnZXIgKGJ1ZiwgOCwgYnl0ZV9vcmRlcikKLSsJICAgICAgIC0gYmZkX3NlY3Rpb25fdm1hIChz LT5iZmQsIHMtPnRoZV9iZmRfc2VjdGlvbikgKyBzLT5hZGRyOwotKwotKwkgIHJlc29sdmVkID0g bGludXhfY29udmVydF9mcm9tX2Z1bmNfYW5kX3B0ciAoZ2RiYXJjaCwgYWRkciwgcGMpOwotKwkg IGlmIChyZXNvbHZlZCAhPSBwYykKLSsJICAgIHBjID0gcHBjNjRfbGludXhfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIHJlc29sdmVkLAotKwkJCQkJCQkgdGFyZyk7Ci0rCi0r CSAgcmV0dXJuIHBjOwotKwl9Ci0gICAgfQotIAotICAgcmV0dXJuIGFkZHI7Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwotaW5kZXggYzhjYjM1Yy4uMThkYWU5 ZSAxMDA2NDQKLS0tLSBhL2dkYi9wcmludGNtZC5jCi0rKysgYi9nZGIvcHJpbnRjbWQuYwotQEAg LTQ2LDcgKzQ2LDYgQEAKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotICNpbmNsdWRlICJvYnNl cnZlci5oIgotICNpbmNsdWRlICJzb2xpc3QuaCIKLS0jaW5jbHVkZSAic29saWIuaCIKLSAjaW5j bHVkZSAicGFyc2VyLWRlZnMuaCIKLSAjaW5jbHVkZSAiY2hhcnNldC5oIgotICNpbmNsdWRlICJh cmNoLXV0aWxzLmgiCi1AQCAtOTQxLDYgKzk0MCwxMSBAQCBwcmludF9jb21tYW5kXzEgKGNoYXIg KmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCi0gICBlbHNlCi0gICAgIHZhbCA9IGFj Y2Vzc192YWx1ZV9oaXN0b3J5ICgwKTsKLSAKLSsgIC8qIERvIG5vdCB0cnkgdG8gT0JKRUNUX0FE RFJFU1NfU0VUIGhlcmUgYW55dGhpbmcuICBXZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUKLSsgICAg IHNvdXJjZSB2YXJpYWJsZSBiYXNlIGFkZHJlc3NlcyBhcyBmb3VuZCBieSBSRUFEX1ZBUl9WQUxV RS4gIFRoZSB2YWx1ZSBoZXJlCi0rICAgICBjYW4gYmUgYWxyZWFkeSBhIGNhbGN1bGF0ZWQgZXhw cmVzc2lvbiBhZGRyZXNzIGluYXBwcm9wcmlhdGUgZm9yCi0rICAgICBEV19PUF9wdXNoX29iamVj dF9hZGRyZXNzLiAgKi8KLSsKLSAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAmJiB2YWx1ZV90eXBl ICh2YWwpICYmCi0gCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwpKSAhPSBUWVBFX0NP REVfVk9JRCkpCi0gICAgIHsKLUBAIC0xNDM3LDYgKzE0NDEsMjIgQEAgeF9jb21tYW5kIChjaGFy ICpleHAsIGludCBmcm9tX3R0eSkKLSAJc2V0X2ludGVybmFsdmFyIChsb29rdXBfaW50ZXJuYWx2 YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwotICAgICB9Ci0gfQotKwotKy8qIENhbGwg dHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291 cmNlIGZpbGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHJpbnRfdHlwZXNfbWFya191c2VkICh2 b2lkKQotK3sKLSsgIHN0cnVjdCBkaXNwbGF5ICpkOwotKwotKyAgaWYgKGxhc3RfZXhhbWluZV92 YWx1ZSkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKGxhc3RfZXhhbWluZV92YWx1 ZSkpOwotKwotKyAgZm9yIChkID0gZGlzcGxheV9jaGFpbjsgZDsgZCA9IGQtPm5leHQpCi0rICAg IGlmIChkLT5leHApCi0rICAgICAgZXhwX3R5cGVzX21hcmtfdXNlZCAoZC0+ZXhwKTsKLSt9Ci0r Ci0gDAotIAotIC8qIEFkZCBhbiBleHByZXNzaW9uIHRvIHRoZSBhdXRvLWRpc3BsYXkgY2hhaW4u Ci1AQCAtMTg1OSw1MSArMTg3OSw2IEBAIGRpc2FibGVfZGlzcGxheV9jb21tYW5kIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCi0gICAgICAgfQotIH0KLSAKLS0vKiBSZXR1cm4gMSBpZiBEIHVz ZXMgU09MSUIgKGFuZCB3aWxsIGJlY29tZSBkYW5nbGluZyB3aGVuIFNPTElCCi0tICAgaXMgdW5s b2FkZWQpLCBvdGhlcndpc2UgcmV0dXJuIDAuICAqLwotLQotLXN0YXRpYyBpbnQKLS1kaXNwbGF5 X3VzZXNfc29saWJfcCAoY29uc3Qgc3RydWN0IGRpc3BsYXkgKmQsCi0tCQkgICAgICBjb25zdCBz dHJ1Y3Qgc29fbGlzdCAqc29saWIpCi0tewotLSAgaW50IGVuZHBvczsKLS0gIHN0cnVjdCBleHBy ZXNzaW9uICpjb25zdCBleHAgPSBkLT5leHA7Ci0tICBjb25zdCB1bmlvbiBleHBfZWxlbWVudCAq Y29uc3QgZWx0cyA9IGV4cC0+ZWx0czsKLS0KLS0gIGlmIChkLT5ibG9jayAhPSBOVUxMCi0tICAg ICAgJiYgZC0+cHNwYWNlID09IHNvbGliLT5wc3BhY2UKLS0gICAgICAmJiBzb2xpYl9jb250YWlu c19hZGRyZXNzX3AgKHNvbGliLCBkLT5ibG9jay0+c3RhcnRhZGRyKSkKLS0gICAgcmV0dXJuIDE7 Ci0tCi0tICBmb3IgKGVuZHBvcyA9IGV4cC0+bmVsdHM7IGVuZHBvcyA+IDA7ICkKLS0gICAgewot LSAgICAgIGludCBpLCBhcmdzLCBvcGxlbiA9IDA7Ci0tCi0tICAgICAgZXhwLT5sYW5ndWFnZV9k ZWZuLT5sYV9leHBfZGVzYy0+b3BlcmF0b3JfbGVuZ3RoIChleHAsIGVuZHBvcywKLS0JCQkJCQkJ Jm9wbGVuLCAmYXJncyk7Ci0tICAgICAgZ2RiX2Fzc2VydCAob3BsZW4gPiAwKTsKLS0KLS0gICAg ICBpID0gZW5kcG9zIC0gb3BsZW47Ci0tICAgICAgaWYgKGVsdHNbaV0ub3Bjb2RlID09IE9QX1ZB Ul9WQUxVRSkKLS0JewotLQkgIGNvbnN0IHN0cnVjdCBibG9jayAqY29uc3QgYmxvY2sgPSBlbHRz W2kgKyAxXS5ibG9jazsKLS0JICBjb25zdCBzdHJ1Y3Qgc3ltYm9sICpjb25zdCBzeW1ib2wgPSBl bHRzW2kgKyAyXS5zeW1ib2w7Ci0tCi0tCSAgaWYgKGJsb2NrICE9IE5VTEwKLS0JICAgICAgJiYg c29saWJfY29udGFpbnNfYWRkcmVzc19wIChzb2xpYiwKLS0JCQkJCSAgIGJsb2NrLT5zdGFydGFk ZHIpKQotLQkgICAgcmV0dXJuIDE7Ci0tCi0tCSAgLyogU1lNQk9MX09CSl9TRUNUSU9OIChzeW1i b2wpIG1heSBiZSBOVUxMLiAgKi8KLS0JICBpZiAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2Jq ZmlsZSA9PSBzb2xpYi0+b2JqZmlsZSkKLS0JICAgIHJldHVybiAxOwotLQl9Ci0tICAgICAgZW5k cG9zIC09IG9wbGVuOwotLSAgICB9Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0tCi0gLyogZGlzcGxh eV9jaGFpbiBpdGVtcyBwb2ludCB0byBibG9ja3MgYW5kIGV4cHJlc3Npb25zLiAgU29tZSBleHBy ZXNzaW9ucyBpbgotICAgIHR1cm4gbWF5IHBvaW50IHRvIHN5bWJvbHMuCi0gICAgQm90aCBzeW1i b2xzIGFuZCBibG9ja3MgYXJlIG9ic3RhY2tfYWxsb2MnZCBvbiBvYmpmaWxlX3N0YWNrLCBhbmQg YXJlCi1AQCAtMTkxNSwxOCArMTg5MCwyMCBAQCBkaXNwbGF5X3VzZXNfc29saWJfcCAoY29uc3Qg c3RydWN0IGRpc3BsYXkgKmQsCi0gc3RhdGljIHZvaWQKLSBjbGVhcl9kYW5nbGluZ19kaXNwbGF5 X2V4cHJlc3Npb25zIChzdHJ1Y3Qgc29fbGlzdCAqc29saWIpCi0gewotKyAgc3RydWN0IG9iamZp bGUgKm9iamZpbGUgPSBzb2xpYi0+b2JqZmlsZTsKLSAgIHN0cnVjdCBkaXNwbGF5ICpkOwotLSAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBOVUxMOwotIAotLSAgZm9yIChkID0gZGlzcGxheV9j aGFpbjsgZDsgZCA9IGQtPm5leHQpCi0tICAgIHsKLS0gICAgICBpZiAoZC0+ZXhwICYmIGRpc3Bs YXlfdXNlc19zb2xpYl9wIChkLCBzb2xpYikpCi0tCXsKLS0JICB4ZnJlZSAoZC0+ZXhwKTsKLS0J ICBkLT5leHAgPSBOVUxMOwotLQkgIGQtPmJsb2NrID0gTlVMTDsKLS0JfQotLSAgICB9Ci0rICBp ZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBmb3IgKGQgPSBkaXNwbGF5 X2NoYWluOyBkICE9IE5VTEw7IGQgPSBkLT5uZXh0KQotKyAgICBpZiAoYmxvY2tfb2JqZmlsZSAo ZC0+YmxvY2spID09IG9iamZpbGUKLSsJfHwgKGQtPmV4cCAmJiBleHBfdXNlc19vYmpmaWxlIChk LT5leHAsIG9iamZpbGUpKSkKLSsgICAgICB7Ci0rCXhmcmVlIChkLT5leHApOwotKwlkLT5leHAg PSBOVUxMOwotKwlkLT5ibG9jayA9IE5VTEw7Ci0rICAgICAgfQotIH0KLSAMCi0gCi1AQCAtMjgx MSw0ICsyNzg4LDYgQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUg bnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCi0gCQkJICAgTlVMTCwKLSAJCQkgICBzaG93 X3ByaW50X3N5bWJvbF9maWxlbmFtZSwKLSAJCQkgICAmc2V0cHJpbnRsaXN0LCAmc2hvd3ByaW50 bGlzdCk7Ci0rCi0rICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmludF90eXBlc19tYXJr X3VzZWQpOwotIH0KLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRv ci5weSBiL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5Ci1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTY1NDU0NgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKLUBAIC0wLDAgKzEsMzMgQEAKLSsjIEl0 ZXJhdG9yIG92ZXIgZnJhbWVzLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsKLStjbGFzcyBGcmFtZUl0ZXJhdG9yOgotKyAgICAiIiJBbiBpdGVyYXRvciB0aGF0IGl0 ZXJhdGVzIG92ZXIgZnJhbWVzLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYsIGZyYW1l KToKLSsgICAgICAgICJJbml0aWFsaXplIGEgRnJhbWVJdGVyYXRvci4gIEZSQU1FIGlzIHRoZSBz dGFydGluZyBmcmFtZS4iCi0rICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWUKLSsKLSsgICAgZGVm IF9faXRlcl9fIChzZWxmKToKLSsgICAgICAgIHJldHVybiBzZWxmCi0rCi0rICAgIGRlZiBuZXh0 IChzZWxmKToKLSsgICAgICAgIHJlc3VsdCA9IHNlbGYuZnJhbWUKLSsgICAgICAgIGlmIHJlc3Vs dCBpcyBOb25lOgotKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSsgICAgICAgIHNl bGYuZnJhbWUgPSByZXN1bHQub2xkZXIgKCkKLSsgICAgICAgIHJldHVybiByZXN1bHQKLWRpZmYg LS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5IGIvZ2RiL3B5dGhvbi9s aWIvZ2RiL0ZyYW1lV3JhcHBlci5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLmI3OTBhNTQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9GcmFt ZVdyYXBwZXIucHkKLUBAIC0wLDAgKzEsMTEyIEBACi0rIyBXcmFwcGVyIEFQSSBmb3IgZnJhbWVz LgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2Ri Ci0rCi0rIyBGSVhNRTogYXJndWFibHkgYWxsIHRoaXMgc2hvdWxkIGJlIG9uIEZyYW1lIHNvbWVo b3cuCi0rY2xhc3MgRnJhbWVXcmFwcGVyOgotKyAgICBkZWYgX19pbml0X18gKHNlbGYsIGZyYW1l KToKLSsgICAgICAgIHNlbGYuZnJhbWUgPSBmcmFtZTsKLSsKLSsgICAgZGVmIHdyaXRlX3N5bWJv bCAoc2VsZiwgc3RyZWFtLCBzeW0sIGJsb2NrKToKLSsgICAgICAgIGlmIGxlbiAoc3ltLmxpbmth Z2VfbmFtZSk6Ci0rICAgICAgICAgICAgbnN5bSwgaXNfZmllbGRfb2ZfdGhpcyA9IGdkYi5sb29r dXBfc3ltYm9sIChzeW0ubGlua2FnZV9uYW1lLCBibG9jaykKLSsgICAgICAgICAgICBpZiBuc3lt LmFkZHJfY2xhc3MgIT0gZ2RiLlNZTUJPTF9MT0NfUkVHSVNURVI6Ci0rICAgICAgICAgICAgICAg IHN5bSA9IG5zeW0KLSsKLSsgICAgICAgIHN0cmVhbS53cml0ZSAoc3ltLnByaW50X25hbWUgKyAi PSIpCi0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgdmFsID0gc2VsZi5yZWFkX3ZhciAoc3lt KQotKyAgICAgICAgICAgIGlmIHZhbCAhPSBOb25lOgotKyAgICAgICAgICAgICAgICB2YWwgPSBz dHIgKHZhbCkKLSsgICAgICAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBhIG1vcmUg cHJlY2lzZSBleGNlcHRpb24gaGVyZS4KLSsgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IsIHRl eHQ6Ci0rICAgICAgICAgICAgdmFsID0gdGV4dAotKyAgICAgICAgaWYgdmFsID09IE5vbmU6Ci0r ICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiPz8/IikKLSsgICAgICAgIGVsc2U6Ci0rICAgICAg ICAgICAgc3RyZWFtLndyaXRlIChzdHIgKHZhbCkpCi0rCi0rICAgIGRlZiBwcmludF9mcmFtZV9s b2NhbHMgKHNlbGYsIHN0cmVhbSwgZnVuYyk6Ci0rICAgICAgICBpZiBub3QgZnVuYzoKLSsgICAg ICAgICAgICByZXR1cm4KLSsKLSsgICAgICAgIGZpcnN0ID0gVHJ1ZQotKyAgICAgICAgYmxvY2sg PSBmdW5jLnZhbHVlCi0rCi0rICAgICAgICBmb3Igc3ltIGluIGJsb2NrOgotKyAgICAgICAgICAg IGlmIHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAgICAgICAgICAgY29udGludWU7Ci0rCi0rICAg ICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwgc3ltLCBibG9jaykKLSsgICAgICAg ICAgICBzdHJlYW0ud3JpdGUgKCdcbicpCi0rCi0rICAgIGRlZiBwcmludF9mcmFtZV9hcmdzIChz ZWxmLCBzdHJlYW0sIGZ1bmMpOgotKyAgICAgICAgaWYgbm90IGZ1bmM6Ci0rICAgICAgICAgICAg cmV0dXJuCi0rCi0rICAgICAgICBmaXJzdCA9IFRydWUKLSsgICAgICAgIGJsb2NrID0gZnVuYy52 YWx1ZQotKwotKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAgICAgICBpZiBub3Qg c3ltLmlzX2FyZ3VtZW50OgotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICAg ICAgICBpZiBub3QgZmlyc3Q6Ci0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiwgIikK LSsKLSsgICAgICAgICAgICBzZWxmLndyaXRlX3N5bWJvbCAoc3RyZWFtLCBzeW0sIGJsb2NrKQot KyAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKLSsKLSsgICAgIyBGSVhNRTogdGhpcyBzaG91bGQg cHJvYmFibHkganVzdCBiZSBhIG1ldGhvZCBvbiBnZGIuRnJhbWUuCi0rICAgICMgQnV0IHRoZW4g d2UgbmVlZCBzdHJlYW0gd3JhcHBlcnMuCi0rICAgIGRlZiBkZXNjcmliZSAoc2VsZiwgc3RyZWFt LCBmdWxsKToKLSsgICAgICAgIGlmIHNlbGYudHlwZSAoKSA9PSBnZGIuRFVNTVlfRlJBTUU6Ci0r ICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiIDxmdW5jdGlvbiBjYWxsZWQgZnJvbSBnZGI+XG4i KQotKyAgICAgICAgZWxpZiBzZWxmLnR5cGUgKCkgPT0gZ2RiLlNJR1RSQU1QX0ZSQU1FOgotKyAg ICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiA8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPlxuIikKLSsg ICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgc2FsID0gc2VsZi5maW5kX3NhbCAoKQotKyAgICAg ICAgICAgIHBjID0gc2VsZi5wYyAoKQotKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgKCkK LSsgICAgICAgICAgICBpZiBub3QgbmFtZToKLSsgICAgICAgICAgICAgICAgbmFtZSA9ICI/PyIK LSsgICAgICAgICAgICBpZiBwYyAhPSBzYWwucGMgb3Igbm90IHNhbC5zeW10YWI6Ci0rICAgICAg ICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiAweCUwOHggaW4iICUgcGMpCi0rICAgICAgICAgICAg c3RyZWFtLndyaXRlICgiICIgKyBuYW1lICsgIiAoIikKLSsKLSsgICAgICAgICAgICBmdW5jID0g c2VsZi5mdW5jdGlvbiAoKQotKyAgICAgICAgICAgIHNlbGYucHJpbnRfZnJhbWVfYXJncyAoc3Ry ZWFtLCBmdW5jKQotKwotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIikiKQotKwotKyAgICAg ICAgICAgIGlmIHNhbC5zeW10YWIgYW5kIHNhbC5zeW10YWIuZmlsZW5hbWU6Ci0rICAgICAgICAg ICAgICAgIHN0cmVhbS53cml0ZSAoIiBhdCAiICsgc2FsLnN5bXRhYi5maWxlbmFtZSkKLSsgICAg ICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiOiIgKyBzdHIgKHNhbC5saW5lKSkKLSsKLSsgICAg ICAgICAgICBpZiBub3Qgc2VsZi5uYW1lICgpIG9yIChub3Qgc2FsLnN5bXRhYiBvciBub3Qgc2Fs LnN5bXRhYi5maWxlbmFtZSk6Ci0rICAgICAgICAgICAgICAgIGxpYiA9IGdkYi5zb2xpYl9hZGRy ZXNzIChwYykKLSsgICAgICAgICAgICAgICAgaWYgbGliOgotKyAgICAgICAgICAgICAgICAgICAg c3RyZWFtLndyaXRlICgiIGZyb20gIiArIGxpYikKLSsKLSsgICAgICAgICAgICBzdHJlYW0ud3Jp dGUgKCJcbiIpCi0rCi0rICAgICAgICAgICAgaWYgZnVsbDoKLSsgICAgICAgICAgICAgICAgc2Vs Zi5wcmludF9mcmFtZV9sb2NhbHMgKHN0cmVhbSwgZnVuYykKLSsKLSsgICAgZGVmIF9fZ2V0YXR0 cl9fIChzZWxmLCBuYW1lKToKLSsgICAgICAgIHJldHVybiBnZXRhdHRyIChzZWxmLmZyYW1lLCBu YW1lKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weSBiL2dkYi9w eXRob24vbGliL2dkYi9fX2luaXRfXy5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLmIzNzVjNjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9f X2luaXRfXy5weQotQEAgLTAsMCArMSwxOSBAQAotKyMgU3RhcnR1cCBjb2RlLgotKwotKyMgQ29w eXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIExvYWQgdGhlIHJlcXVpcmUgY29tbWFuZCBi eSBkZWZhdWx0LgotK2ltcG9ydCBnZGIuY29tbWFuZC5yZXF1aXJlCi1kaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJh Y2UucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yYmFhYjVmCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5Ci1AQCAtMCww ICsxLDQyIEBACi0rIyBGaWx0ZXJpbmcgYmFja3RyYWNlLgotKwotKyMgQ29weXJpZ2h0IChDKSAy MDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0raW1wb3J0IGl0ZXJ0b29scwotKwotKyMgT3Vy IG9ubHkgZXhwb3J0cy4KLStfX2FsbF9fID0gWydwdXNoX2ZyYW1lX2ZpbHRlcicsICdjcmVhdGVf ZnJhbWVfZmlsdGVyJ10KLSsKLStmcmFtZV9maWx0ZXIgPSBOb25lCi0rCi0rZGVmIHB1c2hfZnJh bWVfZmlsdGVyIChjb25zdHJ1Y3Rvcik6Ci0rICAgICIiIlJlZ2lzdGVyIGEgbmV3IGJhY2t0cmFj ZSBmaWx0ZXIgY2xhc3Mgd2l0aCB0aGUgJ2JhY2t0cmFjZScgY29tbWFuZC4KLStUaGUgZmlsdGVy IHdpbGwgYmUgcGFzc2VkIGFuIGl0ZXJhdG9yIGFzIGFuIGFyZ3VtZW50LiAgVGhlIGl0ZXJhdG9y Ci0rd2lsbCByZXR1cm4gZ2RiLkZyYW1lLWxpa2Ugb2JqZWN0cy4gIFRoZSBmaWx0ZXIgc2hvdWxk IGluIHR1cm4gYWN0IGFzCi0rYW4gaXRlcmF0b3IgcmV0dXJuaW5nIHN1Y2ggb2JqZWN0cy4iIiIK LSsgICAgZ2xvYmFsIGZyYW1lX2ZpbHRlcgotKyAgICBpZiBmcmFtZV9maWx0ZXIgPT0gTm9uZToK LSsgICAgICAgIGZyYW1lX2ZpbHRlciA9IGNvbnN0cnVjdG9yCi0rICAgIGVsc2U6Ci0rICAgICAg ICBmcmFtZV9maWx0ZXIgPSBsYW1iZGEgaXRlcmF0b3I6IGNvbnN0cnVjdG9yIChmcmFtZV9maWx0 ZXIgKGl0ZXJhdG9yKSkKLSsKLStkZWYgY3JlYXRlX2ZyYW1lX2ZpbHRlciAoaXRlcik6Ci0rICAg IGdsb2JhbCBmcmFtZV9maWx0ZXIKLSsgICAgaWYgZnJhbWVfZmlsdGVyIGlzIE5vbmU6Ci0rICAg ICAgICByZXR1cm4gaXRlcgotKyAgICByZXR1cm4gZnJhbWVfZmlsdGVyIChpdGVyKQotKwotZGlm ZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL19faW5pdF9fLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvX19pbml0X18ucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvY29tbWFuZC9fX2luaXRfXy5weQotQEAgLTAsMCArMSBAQAotKwotZGlmZiAtLWdpdCBh L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2FsaWFzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvYWxpYXMucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45 NmI2NjE4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9h bGlhcy5weQotQEAgLTAsMCArMSw1OSBAQAotKyMgQWxpYXMgY29tbWFuZC4KLSsKLSsjIENvcHly aWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotKwotK2NsYXNzIEFsaWFzSW1w bGVtZW50YXRpb24gKGdkYi5Db21tYW5kKToKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmLCBuYW1l LCByZWFsLCBkb2MpOgotKyAgICAgICAgIyBIYXZlIHRvIHNldCBfX2RvY19fIGJlZm9yZSB0aGUg c3VwZXIgaW5pdCBjYWxsLgotKyAgICAgICAgIyBJdCB3b3VsZCBiZSBuaWNlIGlmIGdkYidzIGhl bHAgbG9va2VkIHVwIF9fZG9jX18gZHluYW1pY2FsbHkuCi0rICAgICAgICBzZWxmLl9fZG9jX18g PSBkb2MKLSsgICAgICAgICMgTm90ZTogbm8gZ29vZCB3YXkgdG8gY29tcGxldGUgOigKLSsgICAg ICAgIHN1cGVyIChBbGlhc0ltcGxlbWVudGF0aW9uLCBzZWxmKS5fX2luaXRfXyAobmFtZSwgZ2Ri LkNPTU1BTkRfTk9ORSkKLSsgICAgICAgIHNlbGYucmVhbCA9IHJlYWwKLSsKLSsgICAgZGVmIGlu dm9rZShzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsgICAgICAgIGdkYi5leGVjdXRlIChzZWxmLnJl YWwgKyAnICcgKyBhcmcsIGZyb21fdHR5KQotKwotK2NsYXNzIEFsaWFzQ29tbWFuZCAoZ2RiLkNv bW1hbmQpOgotKyAgICAiIiJBbGlhcyBvbmUgY29tbWFuZCB0byBhbm90aGVyLgotK0luIHRoZSBz aW1wbGVzdCBmb3JtLCB0aGUgZmlyc3Qgd29yZCBpcyB0aGUgbmFtZSBvZiB0aGUgYWxpYXMsIGFu ZAotK3RoZSByZW1haW5pbmcgd29yZHMgYXJlIHRoZSB0aGUgZXhwYW5zaW9uLgotK0FuICc9JyBi eSBpdHNlbGYgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGEgbXVsdGktd29yZCBhbGlhczsgd29yZHMK LStiZWZvcmUgdGhlICc9JyBhcmUgdGhlIG5hbWUgb2YgdGhlIG5ldyBjb21tYW5kLiIiIgotKwot KyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgIyBDb21wbGV0aW9uIGlzIG5vdCBx dWl0ZSByaWdodCBoZXJlLgotKyAgICAgICAgc3VwZXIgKEFsaWFzQ29tbWFuZCwgc2VsZikuX19p bml0X18gKCJhbGlhcyIsIGdkYi5DT01NQU5EX05PTkUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX0NPTU1BTkQpCi0rCi0rICAgIGRl ZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5kb250X3JlcGVh dCAoKQotKyAgICAgICAgIyBXaXRob3V0IHNvbWUgZm9ybSBvZiBxdW90aW5nIHdlIGNhbid0IGFs aWFzIGEgbXVsdGktd29yZAotKyAgICAgICAgIyBjb21tYW5kIHRvIGFub3RoZXIgY29tbWFuZC4K LSsgICAgICAgIGFyZ3MgPSBhcmcuc3BsaXQoKQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAg IHN0YXJ0ID0gYXJncy5pbmRleCAoJz0nKQotKyAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgMQot KyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0rICAgICAgICAgICAgc3RhcnQgPSAxCi0rICAg ICAgICAgICAgZW5kID0gMQotKyAgICAgICAgdGFyZ2V0ID0gIiAiLmpvaW4oYXJnc1tlbmQ6XSkK LSsgICAgICAgIEFsaWFzSW1wbGVtZW50YXRpb24gKCIgIi5qb2luIChhcmdzWzA6c3RhcnRdKSwg dGFyZ2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgY29tbWFuZCBpcyBh biBhbGlhcyBmb3IgJyVzJy4iICUgdGFyZ2V0KQotKwotK0FsaWFzQ29tbWFuZCgpCi1kaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5IGIvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uZWM5YTUyNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIv Z2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5Ci1AQCAtMCwwICsxLDEwNiBAQAotKyMgTmV3IGJhY2t0 cmFjZSBjb21tYW5kLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LStpbXBvcnQgZ2RiCi0raW1wb3J0IGdkYi5iYWNrdHJhY2UKLStpbXBvcnQgaXRlcnRvb2xzCi0r ZnJvbSBnZGIuRnJhbWVJdGVyYXRvciBpbXBvcnQgRnJhbWVJdGVyYXRvcgotK2Zyb20gZ2RiLkZy YW1lV3JhcHBlciBpbXBvcnQgRnJhbWVXcmFwcGVyCi0raW1wb3J0IHN5cwotKwotK2NsYXNzIFJl dmVyc2VCYWNrdHJhY2VQYXJhbWV0ZXIgKGdkYi5QYXJhbWV0ZXIpOgotKyAgICAiIiJUaGUgbmV3 LWJhY2t0cmFjZSBjb21tYW5kIGNhbiBzaG93IGJhY2t0cmFjZXMgaW4gJ3JldmVyc2UnIG9yZGVy LgotK1RoaXMgbWVhbnMgdGhhdCB0aGUgaW5uZXJtb3N0IGZyYW1lIHdpbGwgYmUgcHJpbnRlZCBs YXN0LgotK05vdGUgdGhhdCByZXZlcnNlIGJhY2t0cmFjZXMgYXJlIG1vcmUgZXhwZW5zaXZlIHRv IGNvbXB1dGUuIiIiCi0rCi0rICAgIHNldF9kb2MgPSAiRW5hYmxlIG9yIGRpc2FibGUgcmV2ZXJz ZSBiYWNrdHJhY2VzLiIKLSsgICAgc2hvd19kb2MgPSAiU2hvdyB3aGV0aGVyIGJhY2t0cmFjZXMg d2lsbCBiZSBwcmludGVkIGluIHJldmVyc2Ugb3JkZXIuIgotKwotKyAgICBkZWYgX19pbml0X18o c2VsZik6Ci0rICAgICAgICBnZGIuUGFyYW1ldGVyLl9faW5pdF9fIChzZWxmLCAicmV2ZXJzZS1i YWNrdHJhY2UiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRf U1RBQ0ssIGdkYi5QQVJBTV9CT09MRUFOKQotKyAgICAgICAgIyBEZWZhdWx0IHRvIGNvbXBhdGli aWxpdHkgd2l0aCBnZGIuCi0rICAgICAgICBzZWxmLnZhbHVlID0gRmFsc2UKLSsKLStjbGFzcyBG aWx0ZXJpbmdCYWNrdHJhY2UgKGdkYi5Db21tYW5kKToKLSsgICAgIiIiUHJpbnQgYmFja3RyYWNl IG9mIGFsbCBzdGFjayBmcmFtZXMsIG9yIGlubmVybW9zdCBDT1VOVCBmcmFtZXMuCi0rV2l0aCBh IG5lZ2F0aXZlIGFyZ3VtZW50LCBwcmludCBvdXRlcm1vc3QgLUNPVU5UIGZyYW1lcy4KLStVc2Ug b2YgdGhlICdmdWxsJyBxdWFsaWZpZXIgYWxzbyBwcmludHMgdGhlIHZhbHVlcyBvZiB0aGUgbG9j YWwgdmFyaWFibGVzLgotK1VzZSBvZiB0aGUgJ3JhdycgcXVhbGlmaWVyIGF2b2lkcyBhbnkgZmls dGVyaW5nIGJ5IGxvYWRhYmxlIG1vZHVsZXMuCi0rIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAo c2VsZik6Ci0rICAgICAgICAjIEZJWE1FOiB0aGlzIGlzIG5vdCB3b3JraW5nIHF1aXRlIHdlbGwg ZW5vdWdoIHRvIHJlcGxhY2UKLSsgICAgICAgICMgImJhY2t0cmFjZSIgeWV0LgotKyAgICAgICAg Z2RiLkNvbW1hbmQuX19pbml0X18gKHNlbGYsICJuZXctYmFja3RyYWNlIiwgZ2RiLkNPTU1BTkRf U1RBQ0spCi0rICAgICAgICBzZWxmLnJldmVyc2UgPSBSZXZlcnNlQmFja3RyYWNlUGFyYW1ldGVy KCkKLSsKLSsgICAgZGVmIHJldmVyc2VfaXRlciAoc2VsZiwgaXRlcik6Ci0rICAgICAgICByZXN1 bHQgPSBbXQotKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcjoKLSsgICAgICAgICAgICByZXN1bHQu YXBwZW5kIChpdGVtKQotKyAgICAgICAgcmVzdWx0LnJldmVyc2UoKQotKyAgICAgICAgcmV0dXJu IHJlc3VsdAotKwotKyAgICBkZWYgZmluYWxfbiAoc2VsZiwgaXRlciwgeCk6Ci0rICAgICAgICBy ZXN1bHQgPSBbXQotKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcjoKLSsgICAgICAgICAgICByZXN1 bHQuYXBwZW5kIChpdGVtKQotKyAgICAgICAgcmV0dXJuIHJlc3VsdFt4Ol0KLSsKLSsgICAgZGVm IGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBpID0gMAotKyAgICAgICAg Y291bnQgPSAwCi0rICAgICAgICBmaWx0ZXIgPSBUcnVlCi0rICAgICAgICBmdWxsID0gRmFsc2UK LSsKLSsgICAgICAgIGZvciB3b3JkIGluIGFyZy5zcGxpdCAoIiAiKToKLSsgICAgICAgICAgICBp ZiB3b3JkID09ICcnOgotKyAgICAgICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAgICAgIGVs aWYgd29yZCA9PSAncmF3JzoKLSsgICAgICAgICAgICAgICAgZmlsdGVyID0gRmFsc2UKLSsgICAg ICAgICAgICBlbGlmIHdvcmQgPT0gJ2Z1bGwnOgotKyAgICAgICAgICAgICAgICBmdWxsID0gVHJ1 ZQotKyAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgIGNvdW50ID0gaW50ICh3b3Jk KQotKwotKyAgICAgICAgIyBGSVhNRTogcHJvdmlkZSBvcHRpb24gdG8gc3RhcnQgYXQgc2VsZWN0 ZWQgZnJhbWUKLSsgICAgICAgICMgSG93ZXZlciwgc2hvdWxkIHN0aWxsIG51bWJlciBhcyBpZiBz dGFydGluZyBmcm9tIG5ld2VzdAotKwluZXdlc3RfZnJhbWUgPSBnZGIuc2VsZWN0ZWRfdGhyZWFk ICgpLm5ld2VzdF9mcmFtZSAoKQotKyAgICAgICAgaXRlciA9IGl0ZXJ0b29scy5pbWFwIChGcmFt ZVdyYXBwZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lSXRlcmF0b3Ig KG5ld2VzdF9mcmFtZSkpCi0rICAgICAgICBpZiBmaWx0ZXI6Ci0rICAgICAgICAgICAgaXRlciA9 IGdkYi5iYWNrdHJhY2UuY3JlYXRlX2ZyYW1lX2ZpbHRlciAoaXRlcikKLSsKLSsgICAgICAgICMg Tm93IHdyYXAgaW4gYW4gaXRlcmF0b3IgdGhhdCBudW1iZXJzIHRoZSBmcmFtZXMuCi0rICAgICAg ICBpdGVyID0gaXRlcnRvb2xzLml6aXAgKGl0ZXJ0b29scy5jb3VudCAoMCksIGl0ZXIpCi0rCi0r ICAgICAgICAjIFJldmVyc2UgaWYgdGhlIHVzZXIgd2FudGVkIHRoYXQuCi0rICAgICAgICBpZiBz ZWxmLnJldmVyc2UudmFsdWU6Ci0rICAgICAgICAgICAgaXRlciA9IHNlbGYucmV2ZXJzZV9pdGVy IChpdGVyKQotKwotKyAgICAgICAgIyBFeHRyYWN0IHN1Yi1yYW5nZSB1c2VyIHdhbnRzLgotKyAg ICAgICAgaWYgY291bnQgPCAwOgotKyAgICAgICAgICAgIGl0ZXIgPSBzZWxmLmZpbmFsX24gKGl0 ZXIsIGNvdW50KQotKyAgICAgICAgZWxpZiBjb3VudCA+IDA6Ci0rICAgICAgICAgICAgaXRlciA9 IGl0ZXJ0b29scy5pc2xpY2UgKGl0ZXIsIDAsIGNvdW50KQotKwotKyAgICAgICAgZm9yIHBhaXIg aW4gaXRlcjoKLSsgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlICgiIyUtMmQiICUgcGFpclsw XSkKLSsgICAgICAgICAgICBwYWlyWzFdLmRlc2NyaWJlIChzeXMuc3Rkb3V0LCBmdWxsKQotKwot K0ZpbHRlcmluZ0JhY2t0cmFjZSgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvaWdub3JlX2Vycm9ycy5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9y ZV9lcnJvcnMucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42ZmE0OGZm Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVf ZXJyb3JzLnB5Ci1AQCAtMCwwICsxLDM3IEBACi0rIyBJZ25vcmUgZXJyb3JzIGluIHVzZXIgY29t bWFuZHMuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIK LSsKLStjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIkV4 ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVycm9ycy4KLStPbmx5IG9uZS1s aW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCi0rVGhpcyBpcyBwcmltYXJpbHkgdXNlZnVsIGlu IHNjcmlwdHMuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBl ciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJpZ25vcmUtZXJyb3JzIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Ri LkNPTU1BTkRfT0JTQ1VSRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBGSVhNRS4uLgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFORCkKLSsKLSsgICAgZGVm IGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICB0cnk6Ci0rICAgICAgICAg ICAgZ2RiLmV4ZWN1dGUgKGFyZywgZnJvbV90dHkpCi0rICAgICAgICBleGNlcHQ6Ci0rICAgICAg ICAgICAgcGFzcwotKwotK0lnbm9yZUVycm9yc0NvbW1hbmQgKCkKLWRpZmYgLS1naXQgYS9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29t bWFuZC9wYWhvbGUucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMWEw YmYwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhv bGUucHkKLUBAIC0wLDAgKzEsNzUgQEAKLSsjIHBhaG9sZSBjb21tYW5kIGZvciBnZGIKLSsKLSsj IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotKwotK2Ns YXNzIFBhaG9sZSAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJTaG93IHRoZSBob2xlcyBpbiBhIHN0 cnVjdHVyZS4KLStUaGlzIGNvbW1hbmQgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQsIGEgdHlwZSBu YW1lLgotK0l0IHByaW50cyB0aGUgdHlwZSBhbmQgZGlzcGxheXMgY29tbWVudHMgc2hvd2luZyB3 aGVyZSBob2xlcyBhcmUuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAg ICBzdXBlciAoUGFob2xlLCBzZWxmKS5fX2luaXRfXyAoInBhaG9sZSIsIGdkYi5DT01NQU5EX05P TkUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRF X1NZTUJPTCkKLSsKLSsgICAgZGVmIHBhaG9sZSAoc2VsZiwgdHlwZSwgbGV2ZWwsIG5hbWUpOgot KyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotKyAgICAgICAgICAgIG5hbWUgPSAnJwotKyAgICAg ICAgdGFnID0gdHlwZS50YWcKLSsgICAgICAgIGlmIHRhZyBpcyBOb25lOgotKyAgICAgICAgICAg IHRhZyA9ICcnCi0rICAgICAgICBwcmludCAnJXNzdHJ1Y3QgJXMgeycgJSAoJyAnICogKDIgKiBs ZXZlbCksIHRhZykKLSsgICAgICAgIGJpdHBvcyA9IDAKLSsgICAgICAgIGZvciBmaWVsZCBpbiB0 eXBlLmZpZWxkcyAoKToKLSsgICAgICAgICAgICAjIFNraXAgc3RhdGljIGZpZWxkcy4KLSsgICAg ICAgICAgICBpZiBub3QgaGFzYXR0ciAoZmllbGQsICgnYml0cG9zJykpOgotKyAgICAgICAgICAg ICAgICBjb250aW51ZQotKwotKyAgICAgICAgICAgIGZ0eXBlID0gZmllbGQudHlwZS5zdHJpcF90 eXBlZGVmcygpCi0rCi0rICAgICAgICAgICAgaWYgYml0cG9zICE9IGZpZWxkLmJpdHBvczoKLSsg ICAgICAgICAgICAgICAgaG9sZSA9IGZpZWxkLmJpdHBvcyAtIGJpdHBvcwotKyAgICAgICAgICAg ICAgICBwcmludCAnICAvKiBYWFggJWQgYml0IGhvbGUsIHRyeSB0byBwYWNrICovJyAlIGhvbGUK LSsgICAgICAgICAgICAgICAgYml0cG9zID0gZmllbGQuYml0cG9zCi0rICAgICAgICAgICAgaWYg ZmllbGQuYml0c2l6ZSA+IDA6Ci0rICAgICAgICAgICAgICAgIGZpZWxkc2l6ZSA9IGZpZWxkLmJp dHNpemUKLSsgICAgICAgICAgICBlbHNlOgotKyAgICAgICAgICAgICAgICAjIFRBUkdFVF9DSEFS X0JJVCBoZXJlLi4uCi0rICAgICAgICAgICAgICAgIGZpZWxkc2l6ZSA9IDggKiBmdHlwZS5zaXpl b2YKLSsKLSsgICAgICAgICAgICAjIFRBUkdFVF9DSEFSX0JJVAotKyAgICAgICAgICAgIHByaW50 ICcgLyogJTNkICUzZCAqLycgJSAoaW50IChiaXRwb3MgLyA4KSwgaW50IChmaWVsZHNpemUgLyA4 KSksCi0rICAgICAgICAgICAgYml0cG9zID0gYml0cG9zICsgZmllbGRzaXplCi0rCi0rICAgICAg ICAgICAgaWYgZnR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoKLSsgICAgICAgICAg ICAgICAgc2VsZi5wYWhvbGUgKGZ0eXBlLCBsZXZlbCArIDEsIGZpZWxkLm5hbWUpCi0rICAgICAg ICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgcHJpbnQgJyAnICogKDIgKyAyICogbGV2ZWwp LAotKyAgICAgICAgICAgICAgICBwcmludCAnJXMgJXMnICUgKHN0ciAoZnR5cGUpLCBmaWVsZC5u YW1lKQotKwotKyAgICAgICAgcHJpbnQgJyAnICogKDE0ICsgMiAqIGxldmVsKSwKLSsgICAgICAg IHByaW50ICd9ICVzJyAlIG5hbWUKLSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9t X3R0eSk6Ci0rICAgICAgICB0eXBlID0gZ2RiLmxvb2t1cF90eXBlIChhcmcpCi0rICAgICAgICB0 eXBlID0gdHlwZS5zdHJpcF90eXBlZGVmcyAoKQotKyAgICAgICAgaWYgdHlwZS5jb2RlICE9IGdk Yi5UWVBFX0NPREVfU1RSVUNUOgotKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvciwgJyVzIGlz IG5vdCBhIHN0cnVjdCB0eXBlJyAlIGFyZwotKyAgICAgICAgcHJpbnQgJyAnICogMTQsCi0rICAg ICAgICBzZWxmLnBhaG9sZSAodHlwZSwgMCwgJycpCi0rCi0rUGFob2xlKCkKLWRpZmYgLS1naXQg YS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5IGIvZ2RiL3B5dGhvbi9saWIv Z2RiL2NvbW1hbmQvcmVxdWlyZS5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLjFmYmMxZTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL3JlcXVpcmUucHkKLUBAIC0wLDAgKzEsNTcgQEAKLSsjIERlbWFuZC1sb2FkaW5nIGNvbW1h bmRzLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQg Z2RiCi0raW1wb3J0IG9zCi0rCi0rY2xhc3MgUmVxdWlyZUNvbW1hbmQgKGdkYi5Db21tYW5kKToK LSsgICAgIiIiUHJlZml4IGNvbW1hbmQgZm9yIHJlcXVpcmluZyBmZWF0dXJlcy4iIiIKLSsKLSsg ICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChSZXF1aXJlQ29tbWFuZCwg c2VsZikuX19pbml0X18gKCJyZXF1aXJlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX1NVUFBPUlQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfTk9ORSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCi0rCi0rY2xh c3MgUmVxdWlyZVN1YmNvbW1hbmQgKGdkYi5Db21tYW5kKToKLSsgICAgIiIiRGVtYW5kLWxvYWQg YSBjb21tYW5kIGJ5IG5hbWUuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgbmFtZSk6 Ci0rICAgICAgICBzZWxmLl9fZG9jX18gPSAiRGVtYW5kLWxvYWQgYSAlcyBieSBuYW1lLiIgJSBu YW1lCi0rICAgICAgICBzdXBlciAoUmVxdWlyZVN1YmNvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgi cmVxdWlyZSAlcyIgJSBuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCkKLSsgICAgICAgIHNlbGYubmFtZSA9 IG5hbWUKLSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAg ICBmb3IgY21kIGluIGFyZy5zcGxpdCgpOgotKyAgICAgICAgICAgIGV4ZWMgKCdpbXBvcnQgZ2Ri LicgKyBzZWxmLm5hbWUgKyAnLicgKyBjbWQsIGdsb2JhbHMgKCkpCi0rCi0rICAgIGRlZiBjb21w bGV0ZSAoc2VsZiwgdGV4dCwgd29yZCk6Ci0rICAgICAgICBkaXIgPSBnZGIucHl0aG9uZGlyICsg Jy9nZGIvJyArIHNlbGYubmFtZQotKyAgICAgICAgcmVzdWx0ID0gW10KLSsgICAgICAgIGZvciBm aWxlIGluIG9zLmxpc3RkaXIoZGlyKToKLSsgICAgICAgICAgICBpZiBub3QgZmlsZS5zdGFydHN3 aXRoICh3b3JkKSBvciBub3QgZmlsZS5lbmRzd2l0aCAoJy5weScpOgotKyAgICAgICAgICAgICAg ICBjb250aW51ZQotKyAgICAgICAgICAgIGZlYXR1cmUgPSBmaWxlWzA6LTNdCi0rICAgICAgICAg ICAgaWYgZmVhdHVyZSA9PSAncmVxdWlyZScgb3IgZmVhdHVyZSA9PSAnX19pbml0X18nOgotKyAg ICAgICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGZlYXR1 cmUpCi0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0rCi0rUmVxdWlyZUNvbW1hbmQoKQotK1JlcXVp cmVTdWJjb21tYW5kKCJjb21tYW5kIikKLStSZXF1aXJlU3ViY29tbWFuZCgiZnVuY3Rpb24iKQot ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3NhdmVfYnJlYWtwb2ludHMu cHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9zYXZlX2JyZWFrcG9pbnRzLnB5Ci1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjE0MzE4NwotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvc2F2ZV9icmVha3BvaW50cy5weQotQEAg LTAsMCArMSw2NSBAQAotKyMgU2F2ZSBicmVha3BvaW50cy4KLSsKLSsjIENvcHlyaWdodCAoQykg MjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRl bWVudAotK2ltcG9ydCBnZGIKLSsKLStjbGFzcyBTYXZlUHJlZml4Q29tbWFuZCAoZ2RiLkNvbW1h bmQpOgotKyAgIlByZWZpeCBjb21tYW5kIGZvciBzYXZpbmcgdGhpbmdzLiIKLSsKLSsgIGRlZiBf X2luaXRfXyAoc2VsZik6Ci0rICAgIHN1cGVyIChTYXZlUHJlZml4Q29tbWFuZCwgc2VsZikuX19p bml0X18gKCJzYXZlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX05PTkUsIFRydWUpCi0rCi0rY2xhc3MgU2F2 ZUJyZWFrcG9pbnRzQ29tbWFuZCAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJTYXZlIHRoZSBjdXJy ZW50IGJyZWFrcG9pbnRzIHRvIGEgZmlsZS4KLStUaGlzIGNvbW1hbmQgdGFrZXMgYSBzaW5nbGUg YXJndW1lbnQsIGEgZmlsZSBuYW1lLgotK1RoZSBicmVha3BvaW50cyBjYW4gYmUgcmVzdG9yZWQg dXNpbmcgdGhlICdzb3VyY2UnIGNvbW1hbmQuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2Vs Zik6Ci0rICAgICAgICBzdXBlciAoU2F2ZUJyZWFrcG9pbnRzQ29tbWFuZCwgc2VsZikuX19pbml0 X18gKCJzYXZlIGJyZWFrcG9pbnRzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRF X0ZJTEVOQU1FKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsg ICAgICAgIHNlbGYuZG9udF9yZXBlYXQgKCkKLSsgICAgICAgIGJwcyA9IGdkYi5icmVha3BvaW50 cyAoKQotKyAgICAgICAgaWYgYnBzIGlzIE5vbmU6Ci0rICAgICAgICAgICAgcmFpc2UgUnVudGlt ZUVycm9yLCAnTm8gYnJlYWtwb2ludHMgdG8gc2F2ZScKLSsgICAgICAgIHdpdGggb3BlbiAoYXJn LnN0cmlwICgpLCAndycpIGFzIGY6Ci0rICAgICAgICAgICAgZm9yIGJwIGluIGJwczoKLSsgICAg ICAgICAgICAgICAgcHJpbnQgPj4gZiwgImJyZWFrIiwgYnAubG9jYXRpb24sCi0rICAgICAgICAg ICAgICAgIGlmIGJwLnRocmVhZCBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICAgICAgICAgIHBy aW50ID4+IGYsICIgdGhyZWFkIiwgYnAudGhyZWFkLAotKyAgICAgICAgICAgICAgICBpZiBicC5j b25kaXRpb24gaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgICAgICAgICBwcmludCA+PiBmLCAi IGlmIiwgYnAuY29uZGl0aW9uLAotKyAgICAgICAgICAgICAgICBwcmludCA+PiBmCi0rICAgICAg ICAgICAgICAgIGlmIG5vdCBicC5lbmFibGVkOgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQg Pj4gZiwgImRpc2FibGUgJGJwbnVtIgotKyAgICAgICAgICAgICAgICAjIE5vdGU6IHdlIGRvbid0 IHNhdmUgdGhlIGlnbm9yZSBjb3VudDsgdGhlcmUgZG9lc24ndAotKyAgICAgICAgICAgICAgICAj IHNlZW0gdG8gYmUgbXVjaCBwb2ludC4KLSsgICAgICAgICAgICAgICAgY29tbWFuZHMgPSBicC5j b21tYW5kcwotKyAgICAgICAgICAgICAgICBpZiBjb21tYW5kcyBpcyBub3QgTm9uZToKLSsgICAg ICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICJjb21tYW5kcyIKLSsgICAgICAgICAgICAgICAg ICAgICMgTm90ZSB0aGF0IENPTU1BTkRTIGhhcyBhIHRyYWlsaW5nIG5ld2xpbmUuCi0rICAgICAg ICAgICAgICAgICAgICBwcmludCA+PiBmLCBjb21tYW5kcywKLSsgICAgICAgICAgICAgICAgICAg IHByaW50ID4+IGYsICJlbmQiCi0rICAgICAgICAgICAgICAgIHByaW50ID4+IGYKLSsKLStTYXZl UHJlZml4Q29tbWFuZCAoKQotK1NhdmVCcmVha3BvaW50c0NvbW1hbmQgKCkKLWRpZmYgLS1naXQg YS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvdXB0by5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmZh ZjU0ZWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3Vw dG8ucHkKLUBAIC0wLDAgKzEsMTI5IEBACi0rIyB1cHRvIGNvbW1hbmQuCi0rCi0rIyBDb3B5cmln aHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLStpbXBvcnQgcmUKLStmcm9tIGdk Yi5GcmFtZUl0ZXJhdG9yIGltcG9ydCBGcmFtZUl0ZXJhdG9yCi0rZnJvbSBnZGIuRnJhbWVXcmFw cGVyIGltcG9ydCBGcmFtZVdyYXBwZXIKLSsKLStjbGFzcyBVcHRvUHJlZml4IChnZGIuQ29tbWFu ZCk6Ci0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBlciAoVXB0b1ByZWZp eCwgc2VsZikuX19pbml0X18gKCJ1cHRvIiwgZ2RiLkNPTU1BTkRfU1RBQ0ssCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IFRydWUpCi0rCi0rY2xh c3MgVXB0b0ltcGxlbWVudGF0aW9uIChnZGIuQ29tbWFuZCk6Ci0rICAgIGRlZiBfX2luaXRfXyAo c2VsZiwgc3ViY29tbWFuZCk6Ci0rICAgICAgICBzdXBlciAoVXB0b0ltcGxlbWVudGF0aW9uLCBz ZWxmKS5fX2luaXRfXyAoInVwdG8gIiArIHN1YmNvbW1hbmQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1RBQ0spCi0rCi0r ICAgIGRlZiBzZWFyY2ggKHNlbGYpOgotKyAgICAgICAgc2F2ZWQgPSBnZGIuc2VsZWN0ZWRfZnJh bWUgKCkKLSsgICAgICAgIGl0ZXIgPSBGcmFtZUl0ZXJhdG9yIChzYXZlZCkKLSsgICAgICAgIGZv dW5kID0gRmFsc2UKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBmb3IgZnJhbWUgaW4gaXRl cjoKLSsgICAgICAgICAgICAgICAgZnJhbWUuc2VsZWN0ICgpCi0rICAgICAgICAgICAgICAgIHRy eToKLSsgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZmlsdGVyIChmcmFtZSk6Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgd3JhcHBlciA9IEZyYW1lV3JhcHBlciAoZnJhbWUpCi0rICAgICAg ICAgICAgICAgICAgICAgICAgd3JhcHBlci5kZXNjcmliZSAoc3lzLnN0ZG91dCwgRmFsc2UpCi0r ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0rICAgICAgICAgICAgICAgIGV4Y2VwdDoK LSsgICAgICAgICAgICAgICAgICAgIHBhc3MKLSsgICAgICAgIGV4Y2VwdDoKLSsgICAgICAgICAg ICBwYXNzCi0rICAgICAgICBzYXZlZC5zZWxlY3QgKCkKLSsgICAgICAgIHJhaXNlIFJ1bnRpbWVF cnJvciwgJ0NvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgZnJhbWUnCi0rCi0rICAgIGRlZiBpbnZv a2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5yeCA9IHJlLmNvbXBpbGUg KGFyZykKLSsgICAgICAgIHNlbGYuc2VhcmNoICgpCi0rCi0rY2xhc3MgVXB0b1N5bWJvbENvbW1h bmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6Ci0rICAgICIiIlNlbGVjdCBhbmQgcHJpbnQgc29tZSBj YWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNlZCBvbiBzeW1ib2wuCi0rVGhlIGFyZ3VtZW50IGlzIGEg cmVndWxhciBleHByZXNzaW9uLiAgVGhpcyBjb21tYW5kIG1vdmVzIHVwIHRoZQotK3N0YWNrLCBz dG9wcGluZyBhdCB0aGUgZmlyc3QgZnJhbWUgd2hvc2Ugc3ltYm9sIG1hdGNoZXMgdGhlIHJlZ3Vs YXIKLStleHByZXNzaW9uLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAg ICAgc3VwZXIgKFVwdG9TeW1ib2xDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInN5bWJvbCIpCi0r Ci0rICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKLSsgICAgICAgIG5hbWUgPSBmcmFtZS5u YW1lICgpCi0rICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIGlmIHNl bGYucnguc2VhcmNoIChuYW1lKSBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICAgICAgcmV0dXJu IFRydWUKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotK2NsYXNzIFVwdG9Tb3VyY2VDb21tYW5k IChVcHRvSW1wbGVtZW50YXRpb24pOgotKyAgICAiIiJTZWxlY3QgYW5kIHByaW50IHNvbWUgY2Fs bGluZyBzdGFjayBmcmFtZSwgYmFzZWQgb24gc291cmNlIGZpbGUuCi0rVGhlIGFyZ3VtZW50IGlz IGEgcmVndWxhciBleHByZXNzaW9uLiAgVGhpcyBjb21tYW5kIG1vdmVzIHVwIHRoZQotK3N0YWNr LCBzdG9wcGluZyBhdCB0aGUgZmlyc3QgZnJhbWUgd2hvc2Ugc291cmNlIGZpbGUgbmFtZSBtYXRj aGVzIHRoZQotK3JlZ3VsYXIgZXhwcmVzc2lvbi4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChz ZWxmKToKLSsgICAgICAgIHN1cGVyIChVcHRvU291cmNlQ29tbWFuZCwgc2VsZikuX19pbml0X18g KCJzb3VyY2UiKQotKwotKyAgICBkZWYgZmlsdGVyIChzZWxmLCBmcmFtZSk6Ci0rICAgICAgICBu YW1lID0gZnJhbWUuZmluZF9zYWwgKCkuc3ltdGFiLmZpbGVuYW1lCi0rICAgICAgICBpZiBuYW1l IGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIGlmIHNlbGYucnguc2VhcmNoIChuYW1lKSBpcyBu b3QgTm9uZToKLSsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIHJldHVybiBG YWxzZQotKwotK2NsYXNzIFVwdG9PYmplY3RDb21tYW5kIChVcHRvSW1wbGVtZW50YXRpb24pOgot KyAgICAiIiJTZWxlY3QgYW5kIHByaW50IHNvbWUgY2FsbGluZyBzdGFjayBmcmFtZSwgYmFzZWQg b24gb2JqZWN0IGZpbGUuCi0rVGhlIGFyZ3VtZW50IGlzIGEgcmVndWxhciBleHByZXNzaW9uLiAg VGhpcyBjb21tYW5kIG1vdmVzIHVwIHRoZQotK3N0YWNrLCBzdG9wcGluZyBhdCB0aGUgZmlyc3Qg ZnJhbWUgd2hvc2Ugb2JqZWN0IGZpbGUgbmFtZSBtYXRjaGVzIHRoZQotK3JlZ3VsYXIgZXhwcmVz c2lvbi4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChV cHRvT2JqZWN0Q29tbWFuZCwgc2VsZikuX19pbml0X18gKCJvYmplY3QiKQotKwotKyAgICBkZWYg ZmlsdGVyIChzZWxmLCBmcmFtZSk6Ci0rICAgICAgICBuYW1lID0gZnJhbWUuZmluZF9zYWwgKCku c3ltdGFiLm9iamZpbGUuZmlsZW5hbWUKLSsgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0r ICAgICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgotKyAgICAg ICAgICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJuIEZhbHNlCi0rCi0rY2xhc3Mg VXB0b1doZXJlQ29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9uKToKLSsgICAgIiIiU2VsZWN0IGFu ZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJhc2VkIG9uIGV4cHJlc3Npb24uCi0r VGhlIGFyZ3VtZW50IGlzIGFuIGV4cHJlc3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhl IHN0YWNrLAotK3BhcnNpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gaW4gZWFjaCBm cmFtZS4gIFRoaXMgc3RvcHMgd2hlbgotK3RoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBhIG5v bi16ZXJvICh0cnVlKSB2YWx1ZS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsg ICAgICAgIHN1cGVyIChVcHRvV2hlcmVDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoIndoZXJlIikK LSsKLSsgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAgdHJ5OgotKyAgICAg ICAgICAgIGlmIGdkYi5wYXJzZV9hbmRfZXZhbCAoc2VsZi5leHByZXNzaW9uKToKLSsgICAgICAg ICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIGV4Y2VwdDoKLSsgICAgICAgICAgICBwYXNz Ci0rICAgICAgICByZXR1cm4gRmFsc2UKLSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBm cm9tX3R0eSk6Ci0rICAgICAgICBzZWxmLmV4cHJlc3Npb24gPSBhcmcKLSsgICAgICAgIHNlbGYu c2VhcmNoICgpCi0rCi0rVXB0b1ByZWZpeCAoKQotK1VwdG9TeW1ib2xDb21tYW5kICgpCi0rVXB0 b1NvdXJjZUNvbW1hbmQgKCkKLStVcHRvT2JqZWN0Q29tbWFuZCAoKQotK1VwdG9XaGVyZUNvbW1h bmQgKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vX19pbml0X18u cHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vX19pbml0X18ucHkKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vX19pbml0X18ucHkKLUBAIC0wLDAgKzEgQEAKLSsK LWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5IGIv Z2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weQotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLjJiOWM1YzcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9w eXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKLUBAIC0wLDAgKzEsNTggQEAKLSsj IENhbGxlci1pcyBmdW5jdGlvbnMuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMK LSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotK2ltcG9ydCBnZGIKLStpbXBvcnQgcmUKLSsKLStjbGFzcyBDYWxsZXJJcyAoZ2RiLkZ1bmN0 aW9uKToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncyBuYW1l IGlzIGVxdWFsIHRvIGEgc3RyaW5nLgotK1RoaXMgZnVuY3Rpb24gdGFrZXMgb25lIG9yIHR3byBh cmd1bWVudHMuCi0rVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIGEgZnVuY3Rpb247 IGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKLStuYW1lIGlzIGVxdWFsIHRvIHRoaXMgYXJndW1l bnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgotK1RoZSBvcHRpb25hbCBzZWNvbmQgYXJn dW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFjayBmcmFtZXMKLSt0byB0cmF2 ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQgaXMgMS4iIiIK LSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChDYWxsZXJJcywg c2VsZikuX19pbml0X18gKCJjYWxsZXJfaXMiKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBu YW1lLCBuZnJhbWVzID0gMSk6Ci0rICAgICAgICBmcmFtZSA9IGdkYi5zZWxlY3RlZF9mcmFtZSAo KQotKyAgICAgICAgd2hpbGUgbmZyYW1lcyA+IDA6Ci0rICAgICAgICAgICAgZnJhbWUgPSBmcmFt ZS5vbGRlciAoKQotKyAgICAgICAgICAgIG5mcmFtZXMgPSBuZnJhbWVzIC0gMQotKyAgICAgICAg cmV0dXJuIGZyYW1lLm5hbWUgKCkgPT0gbmFtZS5zdHJpbmcgKCkKLSsKLStjbGFzcyBDYWxsZXJN YXRjaGVzIChnZGIuRnVuY3Rpb24pOgotKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgY2FsbGlu ZyBmdW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmluZy4KLStUaGlzIGZ1bmN0aW9uIHRha2Vz IG9uZSBvciB0d28gYXJndW1lbnRzLgotK1RoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHJlZ3VsYXIg ZXhwcmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncwotK25hbWUgaXMgbWF0Y2hlZCBi eSB0aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgVHJ1ZS4KLStUaGUgb3B0aW9u YWwgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVuY3Rpb24gaG93IG1hbnkgc3RhY2sgZnJh bWVzCi0rdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2FsbGluZyBmdW5jdGlvbi4gIFRoZSBkZWZh dWx0IGlzIDEuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBl ciAoQ2FsbGVyTWF0Y2hlcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfbWF0Y2hlcyIpCi0rCi0r ICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKLSsgICAgICAgIGZyYW1l ID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCi0rICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKLSsg ICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCi0rICAgICAgICAgICAgbmZyYW1lcyA9 IG5mcmFtZXMgLSAxCi0rICAgICAgICByZXR1cm4gcmUubWF0Y2ggKG5hbWUuc3RyaW5nICgpLCBm cmFtZS5uYW1lICgpKSBpcyBub3QgTm9uZQotKwotK0NhbGxlcklzKCkKLStDYWxsZXJNYXRjaGVz KCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkg Yi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kZWJiM2JiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv cHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLUBAIC0wLDAgKzEsNDcgQEAKLSsj IEluLXNjb3BlIGZ1bmN0aW9uLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgSW5TY29wZSAoZ2RiLkZ1bmN0aW9uKToKLSsgICAgIiIi UmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZlbiB2YXJpYWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBz Y29wZS4KLStUYWtlcyBvbmUgYXJndW1lbnQgZm9yIGVhY2ggdmFyaWFibGUgbmFtZSB0byBiZSBj aGVja2VkLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKwlzdXBlciAoSW5TY29w ZSwgc2VsZikuX19pbml0X18gKCJpbl9zY29wZSIpCi0rCi0rICAgIGRlZiBpbnZva2UgKHNlbGYs ICp2YXJzKToKLSsgICAgICAgIGlmIGxlbiAodmFycykgPT0gMDoKLSsJICAgIHJhaXNlIFR5cGVF cnJvciwgImluX3Njb3BlIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIKLSsKLSsgICAgICAg ICMgZ2RiLlZhbHVlIGlzbid0IGhhc2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1dCBpbiBhIG1hcC4K LSsJIyBDb252ZXJ0IHRvIHN0cmluZyBmaXJzdC4KLSsJd2FudGVkID0gc2V0IChtYXAgKGxhbWJk YSB4OiB4LnN0cmluZyAoKSwgdmFycykpCi0rCWZvdW5kID0gc2V0ICgpCi0rCWJsb2NrID0gZ2Ri LnNlbGVjdGVkX2ZyYW1lICgpLmJsb2NrICgpCi0rCXdoaWxlIGJsb2NrOgotKwkgICAgZm9yIHN5 bSBpbiBibG9jazoKLSsJCWlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2NvbnN0YW50Ci0r CQkgICAgICBvciBzeW0uaXNfZnVuY3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxlKToKLSsJCSAgICBp ZiBzeW0ubmFtZSBpbiB3YW50ZWQ6Ci0rCQkJZm91bmQuYWRkIChzeW0ubmFtZSkKLSsKLSsJICAg IGJsb2NrID0gYmxvY2suc3VwZXJibG9jawotKwotKwlyZXR1cm4gd2FudGVkID09IGZvdW5kCi0r Ci0rSW5TY29wZSAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktYmxvY2suYyBiL2dkYi9w eXRob24vcHktYmxvY2suYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjgw MTllOWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vcHktYmxvY2suYwotQEAgLTAs MCArMSwyNjUgQEAKLSsvKiBQeXRob24gaW50ZXJmYWNlIHRvIGJsb2Nrcy4KLSsKLSsgICBDb3B5 cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJibG9jay5oIgot KyNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCi0rI2luY2x1ZGUgInN5bXRhYi5oIgotKyNpbmNsdWRl ICJweXRob24taW50ZXJuYWwuaCIKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICBQeU9iamVjdF9I RUFECi0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotK30gYmxvY2tfb2JqZWN0OwotKwotK3R5cGVk ZWYgc3RydWN0IHsKLSsgIFB5T2JqZWN0X0hFQUQKLSsgIHN0cnVjdCBkaWN0aW9uYXJ5ICpkaWN0 OwotKyAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKLSsgIGludCBpbml0aWFsaXplZF9wOwot K30gYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3Q7Ci0rCi0rc3RhdGljIFB5VHlwZU9iamVjdCBi bG9ja19zeW1zX2l0ZXJhdG9yX29iamVjdF90eXBlOwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0r YmxweV9pdGVyIChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICBibG9ja19zeW1zX2l0ZXJhdG9yX29i amVjdCAqYmxvY2tfaXRlcl9vYmo7Ci0rCi0rICBibG9ja19pdGVyX29iaiA9IFB5T2JqZWN0X05l dyAoYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3QsCi0rCQkJICAgICZibG9ja19zeW1zX2l0ZXJh dG9yX29iamVjdF90eXBlKTsKLSsgIGlmIChibG9ja19pdGVyX29iaiA9PSBOVUxMKQotKyAgICB7 Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19NZW1vcnlFcnJvciwKLSsJCSAgICAgICAi Q291bGQgbm90IGFsbG9jYXRlIGl0ZXJhdG9yIG9iamVjdC4iKTsKLSsgICAgICByZXR1cm4gTlVM TDsKLSsgICAgfQotKwotKyAgYmxvY2tfaXRlcl9vYmotPmRpY3QgPSBCTE9DS19ESUNUICgoKGJs b2NrX29iamVjdCAqKSBzZWxmKS0+YmxvY2spOwotKyAgYmxvY2tfaXRlcl9vYmotPmluaXRpYWxp emVkX3AgPSAwOwotKwotKyAgcmV0dXJuIChQeU9iamVjdCAqKSBibG9ja19pdGVyX29iajsKLSt9 Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStibHB5X2dldF9zdGFydCAoUHlPYmplY3QgKnNlbGYs IHZvaWQgKmNsb3N1cmUpCi0rewotKyAgYmxvY2tfb2JqZWN0ICpzZWxmX2Jsb2NrID0gKGJsb2Nr X29iamVjdCAqKSBzZWxmOwotKwotKyAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9u ZyAoQkxPQ0tfU1RBUlQgKHNlbGZfYmxvY2stPmJsb2NrKSk7Ci0rfQotKwotK3N0YXRpYyBQeU9i amVjdCAqCi0rYmxweV9nZXRfZW5kIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7 Ci0rICBibG9ja19vYmplY3QgKnNlbGZfYmxvY2sgPSAoYmxvY2tfb2JqZWN0ICopIHNlbGY7Ci0r Ci0rICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nIChCTE9DS19FTkQgKHNlbGZf YmxvY2stPmJsb2NrKSk7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rYmxweV9nZXRfZnVu Y3Rpb24gKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIGJsb2NrX29iamVj dCAqc2VsZl9ibG9jayA9IChibG9ja19vYmplY3QgKikgc2VsZjsKLSsgIHN0cnVjdCBzeW1ib2wg KnN5bTsKLSsKLSsgIHN5bSA9IEJMT0NLX0ZVTkNUSU9OIChzZWxmX2Jsb2NrLT5ibG9jayk7Ci0r ICBpZiAoc3ltKQotKyAgICByZXR1cm4gc3ltYm9sX3RvX3N5bWJvbF9vYmplY3QgKHN5bSk7Ci0r Ci0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStibHB5X2dl dF9zdXBlcmJsb2NrIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBibG9j a19vYmplY3QgKnNlbGZfYmxvY2sgPSAoYmxvY2tfb2JqZWN0ICopIHNlbGY7Ci0rICBzdHJ1Y3Qg YmxvY2sgKmJsb2NrOwotKwotKyAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChzZWxmX2Jsb2Nr LT5ibG9jayk7Ci0rICBpZiAoYmxvY2spCi0rICAgIHJldHVybiBibG9ja190b19ibG9ja19vYmpl Y3QgKGJsb2NrKTsKLSsKLSsgIFB5X1JFVFVSTl9OT05FOwotK30KLSsKLStQeU9iamVjdCAqCi0r YmxvY2tfdG9fYmxvY2tfb2JqZWN0IChzdHJ1Y3QgYmxvY2sgKmJsb2NrKQotK3sKLSsgIGJsb2Nr X29iamVjdCAqYmxvY2tfb2JqOwotKwotKyAgYmxvY2tfb2JqID0gUHlPYmplY3RfTmV3IChibG9j a19vYmplY3QsICZibG9ja19vYmplY3RfdHlwZSk7Ci0rICBpZiAoYmxvY2tfb2JqID09IE5VTEwp Ci0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVycm9yLCAiQ291 bGQgbm90IGFsbG9jYXRlIGJsb2NrIG9iamVjdC4iKTsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsg ICAgfQotKwotKyAgYmxvY2tfb2JqLT5ibG9jayA9IGJsb2NrOwotKwotKyAgcmV0dXJuIChQeU9i amVjdCAqKSBibG9ja19vYmo7Ci0rfQotKwotK3N0cnVjdCBibG9jayAqCi0rYmxvY2tfb2JqZWN0 X3RvX2Jsb2NrIChQeU9iamVjdCAqb2JqKQotK3sKLSsgIGlmICghIFB5T2JqZWN0X1R5cGVDaGVj ayAob2JqLCAmYmxvY2tfb2JqZWN0X3R5cGUpKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIHJldHVy biAoKGJsb2NrX29iamVjdCAqKSBvYmopLT5ibG9jazsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0 ICoKLStibHB5X2Jsb2NrX3N5bXNfaXRlciAoUHlPYmplY3QgKnNlbGYpCi0rewotKyAgcmV0dXJu IHNlbGY7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rYmxweV9ibG9ja19zeW1zX2l0ZXJu ZXh0IChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICBibG9ja19zeW1zX2l0ZXJhdG9yX29iamVjdCAq aXRlcl9vYmogPSAoYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3QgKikgc2VsZjsKLSsgIHN0cnVj dCBzeW1ib2wgKnN5bTsKLSsKLSsgIGlmICghaXRlcl9vYmotPmluaXRpYWxpemVkX3ApCi0rICAg IHsKLSsgICAgICBzeW0gPSBkaWN0X2l0ZXJhdG9yX2ZpcnN0IChpdGVyX29iai0+ZGljdCwgICYo aXRlcl9vYmotPml0ZXIpKTsKLSsgICAgICBpdGVyX29iai0+aW5pdGlhbGl6ZWRfcCA9IDE7Ci0r ICAgIH0KLSsgIGVsc2UKLSsgICAgc3ltID0gZGljdF9pdGVyYXRvcl9uZXh0ICgmKGl0ZXJfb2Jq LT5pdGVyKSk7Ci0rCi0rICByZXR1cm4gKHN5bSA9PSBOVUxMKT8gTlVMTCA6IHN5bWJvbF90b19z eW1ib2xfb2JqZWN0IChzeW0pOwotK30KLSsKLSsvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBsZXhp Y2FsIGJsb2NrIGNvbnRhaW5pbmcgdGhlIHNwZWNpZmllZCBwYyB2YWx1ZSwKLSsgICBvciAwIGlm IHRoZXJlIGlzIG5vbmUuICAqLwotKwotK1B5T2JqZWN0ICoKLStnZGJweV9ibG9ja19mb3JfcGMg KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICB1bnNpZ25lZCBQWV9MT05H X0xPTkcgcGM7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotKyAgUHlPYmplY3QgKnN5bV9vYmo7 Ci0rCi0rICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJLIiwgJnBjKSkKLSsgICAgcmV0 dXJuIE5VTEw7Ci0rCi0rICBibG9jayA9IGJsb2NrX2Zvcl9wYyAocGMpOwotKyAgaWYgKGJsb2Nr KQotKyAgICByZXR1cm4gYmxvY2tfdG9fYmxvY2tfb2JqZWN0IChibG9jayk7Ci0rCi0rICBQeV9S RVRVUk5fTk9ORTsKLSt9Ci0rCi0rdm9pZAotK2dkYnB5X2luaXRpYWxpemVfYmxvY2tzICh2b2lk KQotK3sKLSsgIGJsb2NrX29iamVjdF90eXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owot KyAgaWYgKFB5VHlwZV9SZWFkeSAoJmJsb2NrX29iamVjdF90eXBlKSA8IDApCi0rICAgIHJldHVy bjsKLSsKLSsgIGJsb2NrX3N5bXNfaXRlcmF0b3Jfb2JqZWN0X3R5cGUudHBfbmV3ID0gUHlUeXBl X0dlbmVyaWNOZXc7Ci0rICBpZiAoUHlUeXBlX1JlYWR5ICgmYmxvY2tfc3ltc19pdGVyYXRvcl9v YmplY3RfdHlwZSkgPCAwKQotKyAgICByZXR1cm47Ci0rCi0rICBQeV9JTkNSRUYgKCZibG9ja19v YmplY3RfdHlwZSk7Ci0rICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJCbG9jayIs IChQeU9iamVjdCAqKSAmYmxvY2tfb2JqZWN0X3R5cGUpOwotKwotKyAgUHlfSU5DUkVGICgmYmxv Y2tfc3ltc19pdGVyYXRvcl9vYmplY3RfdHlwZSk7Ci0rICBQeU1vZHVsZV9BZGRPYmplY3QgKGdk Yl9tb2R1bGUsICJCbG9ja0l0ZXJhdG9yIiwKLSsJCSAgICAgIChQeU9iamVjdCAqKSAmYmxvY2tf c3ltc19pdGVyYXRvcl9vYmplY3RfdHlwZSk7Ci0rfQotKwotKwwKLSsKLStzdGF0aWMgUHlHZXRT ZXREZWYgYmxvY2tfb2JqZWN0X2dldHNldFtdID0gewotKyAgeyAic3RhcnQiLCBibHB5X2dldF9z dGFydCwgTlVMTCwgIlN0YXJ0IGFkZHJlc3Mgb2YgdGhlIGJsb2NrLiIsIE5VTEwgfSwKLSsgIHsg ImVuZCIsIGJscHlfZ2V0X2VuZCwgTlVMTCwgIkVuZCBhZGRyZXNzIG9mIHRoZSBibG9jay4iLCBO VUxMIH0sCi0rICB7ICJmdW5jdGlvbiIsIGJscHlfZ2V0X2Z1bmN0aW9uLCBOVUxMLAotKyAgICAi U3ltYm9sIHRoYXQgbmFtZXMgdGhlIGJsb2NrLCBvciBOb25lLiIsIE5VTEwgfSwKLSsgIHsgInN1 cGVyYmxvY2siLCBibHB5X2dldF9zdXBlcmJsb2NrLCBOVUxMLAotKyAgICAiQmxvY2sgY29udGFp bmluZyB0aGUgYmxvY2ssIG9yIE5vbmUuIiwgTlVMTCB9LAotKyAgeyBOVUxMIH0gIC8qIFNlbnRp bmVsICovCi0rfTsKLSsKLStQeVR5cGVPYmplY3QgYmxvY2tfb2JqZWN0X3R5cGUgPSB7Ci0rICBQ eU9iamVjdF9IRUFEX0lOSVQgKE5VTEwpCi0rICAwLAkJCQkgIC8qb2Jfc2l6ZSovCi0rICAiZ2Ri LkJsb2NrIiwJCQkgIC8qdHBfbmFtZSovCi0rICBzaXplb2YgKGJsb2NrX29iamVjdCksCSAgLyp0 cF9iYXNpY3NpemUqLwotKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXplKi8KLSsgIDAsCQkJCSAgLyp0 cF9kZWFsbG9jKi8KLSsgIDAsCQkJCSAgLyp0cF9wcmludCovCi0rICAwLAkJCQkgIC8qdHBfZ2V0 YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfc2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfY29tcGFy ZSovCi0rICAwLAkJCQkgIC8qdHBfcmVwciovCi0rICAwLAkJCQkgIC8qdHBfYXNfbnVtYmVyKi8K LSsgIDAsCQkJCSAgLyp0cF9hc19zZXF1ZW5jZSovCi0rICAwLAkJCQkgIC8qdHBfYXNfbWFwcGlu ZyovCi0rICAwLAkJCQkgIC8qdHBfaGFzaCAqLwotKyAgMCwJCQkJICAvKnRwX2NhbGwqLwotKyAg MCwJCQkJICAvKnRwX3N0ciovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0cm8qLwotKyAgMCwJCQkJ ICAvKnRwX3NldGF0dHJvKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19idWZmZXIqLwotKyAgUHlfVFBG TEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0lURVIsICAvKnRwX2ZsYWdzKi8KLSsgICJH REIgYmxvY2sgb2JqZWN0IiwJCSAgLyogdHBfZG9jICovCi0rICAwLAkJCQkgIC8qIHRwX3RyYXZl cnNlICovCi0rICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCi0rICAwLAkJCQkgIC8qIHRwX3JpY2hj b21wYXJlICovCi0rICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0rICBibHB5X2l0 ZXIsCQkJICAvKiB0cF9pdGVyICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXJuZXh0ICovCi0rICAw LAkJCQkgIC8qIHRwX21ldGhvZHMgKi8KLSsgIDAsCQkJCSAgLyogdHBfbWVtYmVycyAqLwotKyAg YmxvY2tfb2JqZWN0X2dldHNldAkJICAvKiB0cF9nZXRzZXQgKi8KLSt9OwotKwotK3N0YXRpYyBQ eVR5cGVPYmplY3QgYmxvY2tfc3ltc19pdGVyYXRvcl9vYmplY3RfdHlwZSA9IHsKLSsgIFB5T2Jq ZWN0X0hFQURfSU5JVCAoTlVMTCkKLSsgIDAsCQkJCSAgLypvYl9zaXplKi8KLSsgICJnZGIuQmxv Y2tJdGVyYXRvciIsCQkgIC8qdHBfbmFtZSovCi0rICBzaXplb2YgKGJsb2NrX3N5bXNfaXRlcmF0 b3Jfb2JqZWN0KSwJICAgICAgLyp0cF9iYXNpY3NpemUqLwotKyAgMCwJCQkJICAvKnRwX2l0ZW1z aXplKi8KLSsgIDAsCQkJCSAgLyp0cF9kZWFsbG9jKi8KLSsgIDAsCQkJCSAgLyp0cF9wcmludCov Ci0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfc2V0YXR0ciovCi0r ICAwLAkJCQkgIC8qdHBfY29tcGFyZSovCi0rICAwLAkJCQkgIC8qdHBfcmVwciovCi0rICAwLAkJ CQkgIC8qdHBfYXNfbnVtYmVyKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19zZXF1ZW5jZSovCi0rICAw LAkJCQkgIC8qdHBfYXNfbWFwcGluZyovCi0rICAwLAkJCQkgIC8qdHBfaGFzaCAqLwotKyAgMCwJ CQkJICAvKnRwX2NhbGwqLwotKyAgMCwJCQkJICAvKnRwX3N0ciovCi0rICAwLAkJCQkgIC8qdHBf Z2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHJvKi8KLSsgIDAsCQkJCSAgLyp0cF9h c19idWZmZXIqLwotKyAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0lURVIs ICAvKnRwX2ZsYWdzKi8KLSsgICJHREIgYmxvY2sgc3ltcyBpdGVyYXRvciBvYmplY3QiLAkgICAg ICAvKiB0cF9kb2MgKi8KLSsgIDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KLSsgIDAsCQkJCSAg LyogdHBfY2xlYXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSsgIDAsCQkJ CSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSsgIGJscHlfYmxvY2tfc3ltc19pdGVyLAkJICAv KiB0cF9pdGVyICovCi0rICBibHB5X2Jsb2NrX3N5bXNfaXRlcm5leHQsCSAgLyogdHBfaXRlcm5l eHQgKi8KLSsgIDAJCQkJICAvKiB0cF9tZXRob2RzICovCi0rfTsKLWRpZmYgLS1naXQgYS9nZGIv cHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBiL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzgzMzg1ZQotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMKLUBAIC0wLDAgKzEsNjY2IEBACi0rLyog UHl0aG9uIGludGVyZmFjZSB0byBicmVha3BvaW50cwotKwotKyAgIENvcHlyaWdodCAoQykgMjAw OCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUg aXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgInZhbHVlLmgiCi0rI2luY2x1 ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCi0rI2luY2x1 ZGUgImNoYXJzZXQuaCIKLSsjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgotKyNpbmNsdWRlICJnZGJj bWQuaCIKLSsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0r I2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKLSsKLSsvKiBG cm9tIGJyZWFrcG9pbnQuYy4gICovCi0rZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICpicmVha3Bv aW50X2NoYWluOwotKwotKwotK3R5cGVkZWYgc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0IGJyZWFr cG9pbnRfb2JqZWN0OwotKwotK3N0YXRpYyBQeVR5cGVPYmplY3QgYnJlYWtwb2ludF9vYmplY3Rf dHlwZTsKLSsKLSsvKiBBIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB2ZWN0b3Igb2YgYnJlYWtwb2lu dCBvYmplY3RzLiAgRWFjaAotKyAgIGJyZWFrcG9pbnQgaGFzIGEgbnVtYmVyLiAgQSBicmVha3Bv aW50IGlzIHZhbGlkIGlmIGl0cyBzbG90IGluIHRoaXMKLSsgICB2ZWN0b3IgaXMgbm9uLW51bGwu ICBXaGVuIGEgYnJlYWtwb2ludCBpcyBkZWxldGVkLCB3ZSBkcm9wIG91cgotKyAgIHJlZmVyZW5j ZSB0byBpdCBhbmQgemVybyBpdHMgc2xvdDsgdGhpcyBpcyBob3cgd2UgbGV0IHRoZSBQeXRob24K LSsgICBvYmplY3QgaGF2ZSBhIGxpZmV0aW1lIHdoaWNoIGlzIGluZGVwZW5kZW50IGZyb20gdGhh dCBvZiB0aGUgZ2RiCi0rICAgYnJlYWtwb2ludC4gICovCi0rc3RhdGljIGJyZWFrcG9pbnRfb2Jq ZWN0ICoqYnBweV9icmVha3BvaW50czsKLSsKLSsvKiBOdW1iZXIgb2Ygc2xvdHMgaW4gYnBweV9i cmVha3BvaW50cy4gICovCi0rc3RhdGljIGludCBicHB5X3Nsb3RzOwotKwotKy8qIE51bWJlciBv ZiBsaXZlIGJyZWFrcG9pbnRzLiAgKi8KLStzdGF0aWMgaW50IGJwcHlfbGl2ZTsKLSsKLSsvKiBW YXJpYWJsZXMgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIGJldHdlZW4gdGhlIEJyZWFrcG9pbnQK LSsgICBjb25zdHJ1Y3RvciBhbmQgdGhlIGJyZWFrcG9pbnQtY3JlYXRlZCBob29rIGZ1bmN0aW9u LiAgKi8KLStzdGF0aWMgYnJlYWtwb2ludF9vYmplY3QgKmJwcHlfcGVuZGluZ19vYmplY3Q7Ci0r Ci0rc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0Ci0rewotKyAgUHlPYmplY3RfSEVBRAotKwotKyAg LyogVGhlIGJyZWFrcG9pbnQgbnVtYmVyIGFjY29yZGluZyB0byBnZGIuICAqLwotKyAgaW50IG51 bWJlcjsKLSsKLSsgIC8qIFRoZSBnZGIgYnJlYWtwb2ludCBvYmplY3QsIG9yIE5VTEwgaWYgdGhl IGJyZWFrcG9pbnQgaGFzIGJlZW4KLSsgICAgIGRlbGV0ZWQuICAqLwotKyAgc3RydWN0IGJyZWFr cG9pbnQgKmJwOwotK307Ci0rCi0rLyogRXZhbHVhdGUgdG8gdHJ1ZSBpZiB0aGUgYnJlYWtwb2lu dCBOVU0gaXMgdmFsaWQsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rI2RlZmluZSBCUFBZX1ZBTElE X1AoTnVtKQkJCVwKLSsgICAgKChOdW0pID49IDAJCQkJCVwKLSsgICAgICYmIChOdW0pIDwgYnBw eV9zbG90cwkJCVwKLSsgICAgICYmIGJwcHlfYnJlYWtwb2ludHNbTnVtXSAhPSBOVUxMKQotKwot Ky8qIFJlcXVpcmUgdGhhdCBCUkVBS1BPSU5UIGJlIGEgdmFsaWQgYnJlYWtwb2ludCBJRDsgdGhy b3cgYSBQeXRob24KLSsgICBleGNlcHRpb24gaWYgaXQgaXMgaW52YWxpZC4gICovCi0rI2RlZmlu ZSBCUFBZX1JFUVVJUkVfVkFMSUQoQnJlYWtwb2ludCkJCQkJCVwKLSsgICAgZG8gewkJCQkJCQkJ XAotKyAgICAgIGlmICghIEJQUFlfVkFMSURfUCAoKEJyZWFrcG9pbnQpLT5udW1iZXIpKQkJCVwK LSsJcmV0dXJuIFB5RXJyX0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAiYnJlYWtwb2ludCAl ZCBpcyBpbnZhbGlkIiwgXAotKwkJCSAgICAgKEJyZWFrcG9pbnQpLT5udW1iZXIpOwkJCVwKLSsg ICAgfSB3aGlsZSAoMCkKLSsKLSsvKiBSZXF1aXJlIHRoYXQgQlJFQUtQT0lOVCBiZSBhIHZhbGlk IGJyZWFrcG9pbnQgSUQ7IHRocm93IGEgUHl0aG9uCi0rICAgZXhjZXB0aW9uIGlmIGl0IGlzIGlu dmFsaWQuICBUaGlzIG1hY3JvIGlzIGZvciB1c2UgaW4gc2V0dGVyIGZ1bmN0aW9ucy4gICovCi0r I2RlZmluZSBCUFBZX1NFVF9SRVFVSVJFX1ZBTElEKEJyZWFrcG9pbnQpCQkJCVwKLSsgICAgZG8g ewkJCQkJCQkJXAotKyAgICAgIGlmICghIEJQUFlfVkFMSURfUCAoKEJyZWFrcG9pbnQpLT5udW1i ZXIpKQkJCVwKLSsgICAgICAgIHsJCQkJCQkJCVwKLSsJICBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1 bnRpbWVFcnJvciwgImJyZWFrcG9pbnQgJWQgaXMgaW52YWxpZCIsIFwKLSsJCQkoQnJlYWtwb2lu dCktPm51bWJlcik7CQkJCVwKLSsJICByZXR1cm4gLTE7CQkJCQkJCVwKLSsJfQkJCQkJCQkJXAot KyAgICB9IHdoaWxlICgwKQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB3aGljaCBjaGVja3MgdGhl IHZhbGlkaXR5IG9mIGEgYnJlYWtwb2ludCBvYmplY3QuICAqLwotK3N0YXRpYyBQeU9iamVjdCAq Ci0rYnBweV9pc192YWxpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsg IGlmICgoKGJyZWFrcG9pbnRfb2JqZWN0ICopIHNlbGYpLT5icCkKLSsgICAgUHlfUkVUVVJOX1RS VUU7Ci0rICBQeV9SRVRVUk5fRkFMU0U7Ci0rfQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB0byB0 ZXN0IHdoZXRoZXIgb3Igbm90IHRoZSBicmVha3BvaW50IGlzIGVuYWJsZWQuICAqLwotK3N0YXRp YyBQeU9iamVjdCAqCi0rYnBweV9nZXRfZW5hYmxlZCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNs b3N1cmUpCi0rewotKyAgaWYgKCEgKChicmVha3BvaW50X29iamVjdCAqKSBzZWxmKS0+YnApCi0r ICAgIFB5X1JFVFVSTl9GQUxTRTsKLSsgIC8qIE5vdCBjbGVhciB3aGF0IHdlIHJlYWxseSB3YW50 IGhlcmUuICAqLwotKyAgaWYgKCgoYnJlYWtwb2ludF9vYmplY3QgKikgc2VsZiktPmJwLT5lbmFi bGVfc3RhdGUgPT0gYnBfZW5hYmxlZCkKLSsgICAgUHlfUkVUVVJOX1RSVUU7Ci0rICBQeV9SRVRV Uk5fRkFMU0U7Ci0rfQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB0byB0ZXN0IHdoZXRoZXIgb3Ig bm90IHRoZSBicmVha3BvaW50IGlzIHNpbGVudC4gICovCi0rc3RhdGljIFB5T2JqZWN0ICoKLSti cHB5X2dldF9zaWxlbnQgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIEJQ UFlfUkVRVUlSRV9WQUxJRCAoKGJyZWFrcG9pbnRfb2JqZWN0ICopIHNlbGYpOwotKyAgaWYgKCgo YnJlYWtwb2ludF9vYmplY3QgKikgc2VsZiktPmJwLT5zaWxlbnQpCi0rICAgIFB5X1JFVFVSTl9U UlVFOwotKyAgUHlfUkVUVVJOX0ZBTFNFOwotK30KLSsKLSsvKiBQeXRob24gZnVuY3Rpb24gdG8g c2V0IHRoZSBlbmFibGVkIHN0YXRlIG9mIGEgYnJlYWtwb2ludC4gICovCi0rc3RhdGljIGludAot K2JwcHlfc2V0X2VuYWJsZWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmV3dmFsdWUsIHZv aWQgKmNsb3N1cmUpCi0rewotKyAgYnJlYWtwb2ludF9vYmplY3QgKnNlbGZfYnAgPSAoYnJlYWtw b2ludF9vYmplY3QgKikgc2VsZjsKLSsgIGludCBjbXA7Ci0rCi0rICBCUFBZX1NFVF9SRVFVSVJF X1ZBTElEIChzZWxmX2JwKTsKLSsKLSsgIGlmIChuZXd2YWx1ZSA9PSBOVUxMKQotKyAgICB7Ci0r ICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3QgZGVsZXRlIGBl bmFibGVkJyBhdHRyaWJ1dGUiKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgIGVsc2Ug aWYgKCEgUHlCb29sX0NoZWNrIChuZXd2YWx1ZSkpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRT dHJpbmcgKFB5RXhjX1R5cGVFcnJvciwKLSsJCSAgICAgICAidGhlIHZhbHVlIG9mIGBlbmFibGVk JyBtdXN0IGJlIGEgYm9vbGVhbiIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAg Y21wID0gUHlPYmplY3RfSXNUcnVlIChuZXd2YWx1ZSk7Ci0rICBpZiAoY21wIDwgMCkKLSsgICAg cmV0dXJuIC0xOwotKyAgZWxzZSBpZiAoY21wID09IDEpCi0rICAgIGVuYWJsZV9icmVha3BvaW50 IChzZWxmX2JwLT5icCk7Ci0rICBlbHNlIAotKyAgICBkaXNhYmxlX2JyZWFrcG9pbnQgKHNlbGZf YnAtPmJwKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBQeXRob24gZnVuY3Rpb24gdG8gc2V0 IHRoZSAnc2lsZW50JyBzdGF0ZSBvZiBhIGJyZWFrcG9pbnQuICAqLwotK3N0YXRpYyBpbnQKLSti cHB5X3NldF9zaWxlbnQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmV3dmFsdWUsIHZvaWQg KmNsb3N1cmUpCi0rewotKyAgYnJlYWtwb2ludF9vYmplY3QgKnNlbGZfYnAgPSAoYnJlYWtwb2lu dF9vYmplY3QgKikgc2VsZjsKLSsgIGludCBjbXA7Ci0rCi0rICBCUFBZX1NFVF9SRVFVSVJFX1ZB TElEIChzZWxmX2JwKTsKLSsKLSsgIGlmIChuZXd2YWx1ZSA9PSBOVUxMKQotKyAgICB7Ci0rICAg ICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsICJjYW5ub3QgZGVsZXRlIGBzaWxl bnQnIGF0dHJpYnV0ZSIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKyAgZWxzZSBpZiAo ISBQeUJvb2xfQ2hlY2sgKG5ld3ZhbHVlKSkKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmlu ZyAoUHlFeGNfVHlwZUVycm9yLAotKwkJICAgICAgICJ0aGUgdmFsdWUgb2YgYHNpbGVudCcgbXVz dCBiZSBhIGJvb2xlYW4iKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsKLSsgIGNtcCA9 IFB5T2JqZWN0X0lzVHJ1ZSAobmV3dmFsdWUpOwotKyAgaWYgKGNtcCA8IDApCi0rICAgIHJldHVy biAtMTsKLSsgIGVsc2UKLSsgICAgc2VsZl9icC0+YnAtPnNpbGVudCA9IGNtcDsKLSsKLSsgIHJl dHVybiAwOwotK30KLSsKLSsvKiBQeXRob24gZnVuY3Rpb24gdG8gc2V0IHRoZSB0aHJlYWQgb2Yg YSBicmVha3BvaW50LiAgKi8KLStzdGF0aWMgaW50Ci0rYnBweV9zZXRfdGhyZWFkIChQeU9iamVj dCAqc2VsZiwgUHlPYmplY3QgKm5ld3ZhbHVlLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIGJyZWFr cG9pbnRfb2JqZWN0ICpzZWxmX2JwID0gKGJyZWFrcG9pbnRfb2JqZWN0ICopIHNlbGY7Ci0rICBp bnQgaWQ7Ci0rCi0rICBCUFBZX1NFVF9SRVFVSVJFX1ZBTElEIChzZWxmX2JwKTsKLSsKLSsgIGlm IChuZXd2YWx1ZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4 Y19UeXBlRXJyb3IsICJjYW5ub3QgZGVsZXRlIGB0aHJlYWQnIGF0dHJpYnV0ZSIpOwotKyAgICAg IHJldHVybiAtMTsKLSsgICAgfQotKyAgZWxzZSBpZiAoUHlJbnRfQ2hlY2sgKG5ld3ZhbHVlKSkK LSsgICAgewotKyAgICAgIGlkID0gKGludCkgUHlJbnRfQXNMb25nIChuZXd2YWx1ZSk7Ci0rICAg ICAgaWYgKCEgdmFsaWRfdGhyZWFkX2lkIChpZCkpCi0rCXsKLSsJICBQeUVycl9TZXRTdHJpbmcg KFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgdGhyZWFkIGlkIik7Ci0rCSAgcmV0dXJuIC0x OwotKwl9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKG5ld3ZhbHVlID09IFB5X05vbmUpCi0rICAgIGlk ID0gLTE7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1R5 cGVFcnJvciwKLSsJCSAgICAgICAidGhlIHZhbHVlIG9mIGB0aHJlYWQnIG11c3QgYmUgYW4gaW50 ZWdlciBvciBOb25lIik7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICBzZWxmX2Jw LT5icC0+dGhyZWFkID0gaWQ7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogUHl0aG9uIGZ1 bmN0aW9uIHRvIHNldCB0aGUgaWdub3JlIGNvdW50IG9mIGEgYnJlYWtwb2ludC4gICovCi0rc3Rh dGljIGludAotK2JwcHlfc2V0X2lnbm9yZV9jb3VudCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0 ICpuZXd2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBicmVha3BvaW50X29iamVjdCAqc2Vs Zl9icCA9IChicmVha3BvaW50X29iamVjdCAqKSBzZWxmOwotKyAgbG9uZyB2YWx1ZTsKLSsKLSsg IEJQUFlfU0VUX1JFUVVJUkVfVkFMSUQgKHNlbGZfYnApOwotKwotKyAgaWYgKG5ld3ZhbHVlID09 IE5VTEwpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1R5cGVFcnJvciwK LSsJCSAgICAgICAiY2Fubm90IGRlbGV0ZSBgaWdub3JlX2NvdW50JyBhdHRyaWJ1dGUiKTsKLSsg ICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKCEgUHlJbnRfQ2hlY2sgKG5ld3Zh bHVlKSkKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfVHlwZUVycm9yLAot KwkJICAgICAgICJ0aGUgdmFsdWUgb2YgYGlnbm9yZV9jb3VudCcgbXVzdCBiZSBhbiBpbnRlZ2Vy Iik7Ci0rICAgICAgcmV0dXJuIC0xOwotKyAgICB9Ci0rCi0rICB2YWx1ZSA9IFB5SW50X0FzTG9u ZyAobmV3dmFsdWUpOwotKyAgaWYgKHZhbHVlIDwgMCkKLSsgICAgdmFsdWUgPSAwOwotKyAgc2V0 X2lnbm9yZV9jb3VudCAoc2VsZl9icC0+bnVtYmVyLCAoaW50KSB2YWx1ZSwgMCk7Ci0rCi0rICBy ZXR1cm4gMDsKLSt9Ci0rCi0rLyogUHl0aG9uIGZ1bmN0aW9uIHRvIHNldCB0aGUgaGl0IGNvdW50 IG9mIGEgYnJlYWtwb2ludC4gICovCi0rc3RhdGljIGludAotK2JwcHlfc2V0X2hpdF9jb3VudCAo UHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuZXd2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0r ICBicmVha3BvaW50X29iamVjdCAqc2VsZl9icCA9IChicmVha3BvaW50X29iamVjdCAqKSBzZWxm OwotKwotKyAgQlBQWV9TRVRfUkVRVUlSRV9WQUxJRCAoc2VsZl9icCk7Ci0rCi0rICBpZiAobmV3 dmFsdWUgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfVHlw ZUVycm9yLCAiY2Fubm90IGRlbGV0ZSBgaGl0X2NvdW50JyBhdHRyaWJ1dGUiKTsKLSsgICAgICBy ZXR1cm4gLTE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKCEgUHlJbnRfQ2hlY2sgKG5ld3ZhbHVlKSB8 fCBQeUludF9Bc0xvbmcgKG5ld3ZhbHVlKSAhPSAwKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0 U3RyaW5nIChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSsJCSAgICAgICAidGhlIHZhbHVlIG9mIGBo aXRfY291bnQnIG11c3QgYmUgemVybyIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwot KyAgc2VsZl9icC0+YnAtPmhpdF9jb3VudCA9IDA7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0r LyogUHl0aG9uIGZ1bmN0aW9uIHRvIGdldCB0aGUgbG9jYXRpb24gb2YgYSBicmVha3BvaW50LiAg Ki8KLStzdGF0aWMgUHlPYmplY3QgKgotK2JwcHlfZ2V0X2xvY2F0aW9uIChQeU9iamVjdCAqc2Vs Ziwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBjaGFyICpzdHI7Ci0rCi0rICBCUFBZX1JFUVVJUkVf VkFMSUQgKChicmVha3BvaW50X29iamVjdCAqKSBzZWxmKTsKLSsgIHN0ciA9ICgoYnJlYWtwb2lu dF9vYmplY3QgKikgc2VsZiktPmJwLT5hZGRyX3N0cmluZzsKLSsgIC8qIEZJWE1FOiB3YXRjaHBv aW50cz8gIHRyYWNlcG9pbnRzPyAgKi8KLSsgIGlmICghIHN0cikKLSsgICAgc3RyID0gIiI7Ci0r ICByZXR1cm4gUHlTdHJpbmdfRGVjb2RlIChzdHIsIHN0cmxlbiAoc3RyKSwgaG9zdF9jaGFyc2V0 ICgpLCBOVUxMKTsKLSt9Ci0rCi0rLyogUHl0aG9uIGZ1bmN0aW9uIHRvIGdldCB0aGUgY29uZGl0 aW9uIGV4cHJlc3Npb24gb2YgYSBicmVha3BvaW50LiAgKi8KLStzdGF0aWMgUHlPYmplY3QgKgot K2JwcHlfZ2V0X2NvbmRpdGlvbiAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi0rewot KyAgY2hhciAqc3RyOwotKyAgQlBQWV9SRVFVSVJFX1ZBTElEICgoYnJlYWtwb2ludF9vYmplY3Qg Kikgc2VsZik7Ci0rCi0rICBzdHIgPSAoKGJyZWFrcG9pbnRfb2JqZWN0ICopIHNlbGYpLT5icC0+ Y29uZF9zdHJpbmc7Ci0rICBpZiAoISBzdHIpCi0rICAgIFB5X1JFVFVSTl9OT05FOwotKyAgcmV0 dXJuIFB5U3RyaW5nX0RlY29kZSAoc3RyLCBzdHJsZW4gKHN0ciksIGhvc3RfY2hhcnNldCAoKSwg TlVMTCk7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSticHB5X3NldF9jb25kaXRpb24gKFB5T2JqZWN0 ICpzZWxmLCBQeU9iamVjdCAqbmV3dmFsdWUsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgY2hhciAq ZXhwOwotKyAgYnJlYWtwb2ludF9vYmplY3QgKnNlbGZfYnAgPSAoYnJlYWtwb2ludF9vYmplY3Qg Kikgc2VsZjsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsg IEJQUFlfU0VUX1JFUVVJUkVfVkFMSUQgKHNlbGZfYnApOwotKwotKyAgaWYgKG5ld3ZhbHVlID09 IE5VTEwpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1R5cGVFcnJvciwg ImNhbm5vdCBkZWxldGUgYGNvbmRpdGlvbicgYXR0cmlidXRlIik7Ci0rICAgICAgcmV0dXJuIC0x OwotKyAgICB9Ci0rICBlbHNlIGlmIChuZXd2YWx1ZSA9PSBQeV9Ob25lKQotKyAgICBleHAgPSAi IjsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGV4cCA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9z dHJpbmcgKG5ld3ZhbHVlKTsKLSsgICAgICBpZiAoZXhwID09IE5VTEwpCi0rCXJldHVybiAtMTsK LSsgICAgfQotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAg ewotKyAgICAgIHNldF9icmVha3BvaW50X2NvbmRpdGlvbiAoc2VsZl9icC0+YnAsIGV4cCwgMCk7 Ci0rICAgIH0KLSsgIEdEQl9QWV9TRVRfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSsKLSsg IHJldHVybiAwOwotK30KLSsKLSsvKiBQeXRob24gZnVuY3Rpb24gdG8gZ2V0IHRoZSBjb21tYW5k cyBhdHRhY2hlZCB0byBhIGJyZWFrcG9pbnQuICAqLwotK3N0YXRpYyBQeU9iamVjdCAqCi0rYnBw eV9nZXRfY29tbWFuZHMgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIGJy ZWFrcG9pbnRfb2JqZWN0ICpzZWxmX2JwID0gKGJyZWFrcG9pbnRfb2JqZWN0ICopIHNlbGY7Ci0r ICBsb25nIGxlbmd0aDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsK LSsgIHN0cnVjdCB1aV9maWxlICpzdHJpbmdfZmlsZTsKLSsgIHN0cnVjdCBjbGVhbnVwICpjaGFp bjsKLSsgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0rICBjaGFyICpjbWRzdHI7Ci0rCi0rICBCUFBZX1JF UVVJUkVfVkFMSUQgKHNlbGZfYnApOwotKwotKyAgaWYgKCEgc2VsZl9icC0+YnAtPmNvbW1hbmRz KQotKyAgICBQeV9SRVRVUk5fTk9ORTsKLSsKLSsgIHN0cmluZ19maWxlID0gbWVtX2ZpbGVvcGVu ICgpOwotKyAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0cmluZ19maWxl KTsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsg ICAgICAvKiBGSVhNRTogdGhpcyBjYW4gZmFpbC4gIE1heWJlIHdlIG5lZWQgdG8gYmUgbWFraW5n IGEgbmV3Ci0rCSB1aV9vdXQgb2JqZWN0IGhlcmU/ICAqLwotKyAgICAgIHVpX291dF9yZWRpcmVj dCAodWlvdXQsIHN0cmluZ19maWxlKTsKLSsgICAgICBwcmludF9jb21tYW5kX2xpbmVzICh1aW91 dCwgc2VsZl9icC0+YnAtPmNvbW1hbmRzLCAwKTsKLSsgICAgICB1aV9vdXRfcmVkaXJlY3QgKHVp b3V0LCBOVUxMKTsKLSsgICAgfQotKyAgY21kc3RyID0gdWlfZmlsZV94c3RyZHVwIChzdHJpbmdf ZmlsZSwgJmxlbmd0aCk7Ci0rICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSsK LSsgIHJlc3VsdCA9IFB5U3RyaW5nX0RlY29kZSAoY21kc3RyLCBzdHJsZW4gKGNtZHN0ciksIGhv c3RfY2hhcnNldCAoKSwgTlVMTCk7Ci0rICBkb19jbGVhbnVwcyAoY2hhaW4pOwotKyAgeGZyZWUg KGNtZHN0cik7Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsvKiBQeXRob24gZnVuY3Rpb24g dG8gZ2V0IHRoZSBicmVha3BvaW50J3MgbnVtYmVyLiAgKi8KLStzdGF0aWMgUHlPYmplY3QgKgot K2JwcHlfZ2V0X251bWJlciAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAg YnJlYWtwb2ludF9vYmplY3QgKnNlbGZfYnAgPSAoYnJlYWtwb2ludF9vYmplY3QgKikgc2VsZjsK LSsKLSsgIEJQUFlfUkVRVUlSRV9WQUxJRCAoc2VsZl9icCk7Ci0rCi0rICByZXR1cm4gUHlJbnRf RnJvbUxvbmcgKHNlbGZfYnAtPm51bWJlcik7Ci0rfQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB0 byBnZXQgdGhlIGJyZWFrcG9pbnQncyB0aHJlYWQgSUQuICAqLwotK3N0YXRpYyBQeU9iamVjdCAq Ci0rYnBweV9nZXRfdGhyZWFkIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0r ICBicmVha3BvaW50X29iamVjdCAqc2VsZl9icCA9IChicmVha3BvaW50X29iamVjdCAqKSBzZWxm OwotKwotKyAgQlBQWV9SRVFVSVJFX1ZBTElEIChzZWxmX2JwKTsKLSsKLSsgIGlmIChzZWxmX2Jw LT5icC0+dGhyZWFkID09IC0xKQotKyAgICBQeV9SRVRVUk5fTk9ORTsKLSsKLSsgIHJldHVybiBQ eUludF9Gcm9tTG9uZyAoc2VsZl9icC0+YnAtPnRocmVhZCk7Ci0rfQotKwotKy8qIFB5dGhvbiBm dW5jdGlvbiB0byBnZXQgdGhlIGJyZWFrcG9pbnQncyBoaXQgY291bnQuICAqLwotK3N0YXRpYyBQ eU9iamVjdCAqCi0rYnBweV9nZXRfaGl0X2NvdW50IChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xv c3VyZSkKLSt7Ci0rICBicmVha3BvaW50X29iamVjdCAqc2VsZl9icCA9IChicmVha3BvaW50X29i amVjdCAqKSBzZWxmOwotKwotKyAgQlBQWV9SRVFVSVJFX1ZBTElEIChzZWxmX2JwKTsKLSsKLSsg IHJldHVybiBQeUludF9Gcm9tTG9uZyAoc2VsZl9icC0+YnAtPmhpdF9jb3VudCk7Ci0rfQotKwot Ky8qIFB5dGhvbiBmdW5jdGlvbiB0byBnZXQgdGhlIGJyZWFrcG9pbnQncyBpZ25vcmUgY291bnQu ICAqLwotK3N0YXRpYyBQeU9iamVjdCAqCi0rYnBweV9nZXRfaWdub3JlX2NvdW50IChQeU9iamVj dCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBicmVha3BvaW50X29iamVjdCAqc2VsZl9i cCA9IChicmVha3BvaW50X29iamVjdCAqKSBzZWxmOwotKwotKyAgQlBQWV9SRVFVSVJFX1ZBTElE IChzZWxmX2JwKTsKLSsKLSsgIHJldHVybiBQeUludF9Gcm9tTG9uZyAoc2VsZl9icC0+YnAtPmln bm9yZV9jb3VudCk7Ci0rfQotKwotKy8qIFB5dGhvbiBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcg YnJlYWtwb2ludC4gICovCi0rc3RhdGljIFB5T2JqZWN0ICoKLSticHB5X25ldyAoUHlUeXBlT2Jq ZWN0ICpzdWJ0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLSt7Ci0rICBQ eU9iamVjdCAqcmVzdWx0OwotKyAgY2hhciAqc3BlYzsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJf ZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIC8qIEZJWE1FOiBhbGxvdyBjb25kaXRpb24sIHRocmVh ZCwgdGVtcG9yYXJ5LCAuLi4gPyAqLwotKyAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZSAoYXJncywg InMiLCAmc3BlYykpCi0rICAgIHJldHVybiBOVUxMOwotKyAgcmVzdWx0ID0gc3VidHlwZS0+dHBf YWxsb2MgKHN1YnR5cGUsIDApOwotKyAgaWYgKCEgcmVzdWx0KQotKyAgICByZXR1cm4gTlVMTDsK LSsgIGJwcHlfcGVuZGluZ19vYmplY3QgPSAoYnJlYWtwb2ludF9vYmplY3QgKikgcmVzdWx0Owot KyAgYnBweV9wZW5kaW5nX29iamVjdC0+bnVtYmVyID0gLTE7Ci0rICBicHB5X3BlbmRpbmdfb2Jq ZWN0LT5icCA9IE5VTEw7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxM KQotKyAgICB7Ci0rICAgICAgc2V0X2JyZWFrcG9pbnQgKHB5dGhvbl9nZGJhcmNoLCBzcGVjLCBO VUxMLCAwLCAwLCAtMSwgMCwKLSsJCSAgICAgIEFVVE9fQk9PTEVBTl9UUlVFLCAxKTsKLSsgICAg fQotKyAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKyAgICB7Ci0rICAgICAgc3VidHlwZS0+dHBf ZnJlZSAocmVzdWx0KTsKLSsgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChleGNlcHQucmVhc29u ID09IFJFVFVSTl9RVUlUCi0rCQkJICAgICA/IFB5RXhjX0tleWJvYXJkSW50ZXJydXB0IDogUHlF eGNfUnVudGltZUVycm9yLAotKwkJCSAgICAgIiVzIiwgZXhjZXB0Lm1lc3NhZ2UpOwotKyAgICB9 Ci0rCi0rICBCUFBZX1JFUVVJUkVfVkFMSUQgKChicmVha3BvaW50X29iamVjdCAqKSByZXN1bHQp OwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rDAotKwotKy8qIFN0YXRpYyBmdW5jdGlvbiB0 byByZXR1cm4gYSB0dXBsZSBob2xkaW5nIGFsbCBicmVha3BvaW50cy4gICovCi0rCi0rUHlPYmpl Y3QgKgotK2dkYnB5X2JyZWFrcG9pbnRzIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Mp Ci0rewotKyAgUHlPYmplY3QgKnJlc3VsdDsKLSsKLSsgIGlmIChicHB5X2xpdmUgPT0gMCkKLSsg ICAgUHlfUkVUVVJOX05PTkU7Ci0rCi0rICByZXN1bHQgPSBQeVR1cGxlX05ldyAoYnBweV9saXZl KTsKLSsgIGlmIChyZXN1bHQpCi0rICAgIHsKLSsgICAgICBpbnQgaSwgb3V0ID0gMDsKLSsgICAg ICBmb3IgKGkgPSAwOyBvdXQgPCBicHB5X2xpdmU7ICsraSkKLSsJewotKwkgIGlmICghIGJwcHlf YnJlYWtwb2ludHNbaV0pCi0rCSAgICBjb250aW51ZTsKLSsJICBQeV9JTkNSRUYgKGJwcHlfYnJl YWtwb2ludHNbaV0pOwotKwkgIFB5VHVwbGVfU2V0SXRlbSAocmVzdWx0LCBvdXQsIChQeU9iamVj dCAqKSBicHB5X2JyZWFrcG9pbnRzW2ldKTsKLSsJICArK291dDsKLSsJfQotKyAgICB9Ci0rICBy ZXR1cm4gcmVzdWx0OwotK30KLSsKLSsMCi0rCi0rLyogRXZlbnQgY2FsbGJhY2sgZnVuY3Rpb25z LiAgKi8KLSsKLSsvKiBDYWxsYmFjayB0aGF0IGlzIHVzZWQgd2hlbiBhIGJyZWFrcG9pbnQgaXMg Y3JlYXRlZC4gIFRoaXMgZnVuY3Rpb24KLSsgICB3aWxsIGNyZWF0ZSBhIG5ldyBQeXRob24gYnJl YWtwb2ludCBvYmplY3QuICAqLwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfYnJlYWtwb2ludF9jcmVh dGVkIChpbnQgbnVtKQotK3sKLSsgIGJyZWFrcG9pbnRfb2JqZWN0ICpuZXdicDsKLSsgIHN0cnVj dCBicmVha3BvaW50ICpicDsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKwotKyAgaWYg KG51bSA8IDApCi0rICAgIHJldHVybjsKLSsKLSsgIGZvciAoYnAgPSBicmVha3BvaW50X2NoYWlu OyBicDsgYnAgPSBicC0+bmV4dCkKLSsgICAgaWYgKGJwLT5udW1iZXIgPT0gbnVtKQotKyAgICAg IGJyZWFrOwotKyAgaWYgKCEgYnApCi0rICAgIHJldHVybjsKLSsKLSsgIGlmIChudW0gPj0gYnBw eV9zbG90cykKLSsgICAgewotKyAgICAgIGludCBvbGQgPSBicHB5X3Nsb3RzOwotKyAgICAgIGJw cHlfc2xvdHMgPSBicHB5X3Nsb3RzICogMiArIDEwOwotKyAgICAgIGJwcHlfYnJlYWtwb2ludHMK LSsJPSAoYnJlYWtwb2ludF9vYmplY3QgKiopIHhyZWFsbG9jIChicHB5X2JyZWFrcG9pbnRzLAot KwkJCQkJICAgKGJwcHlfc2xvdHMKLSsJCQkJCSAgICAqIHNpemVvZiAoYnJlYWtwb2ludF9vYmpl Y3QgKikpKTsKLSsgICAgICBtZW1zZXQgKCZicHB5X2JyZWFrcG9pbnRzW29sZF0sIDAsCi0rCSAg ICAgIChicHB5X3Nsb3RzIC0gb2xkKSAqIHNpemVvZiAoUHlPYmplY3QgKikpOwotKyAgICB9Ci0r Ci0rICArK2JwcHlfbGl2ZTsKLSsKLSsgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0 X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7Ci0rCi0rICBpZiAoYnBweV9wZW5k aW5nX29iamVjdCkKLSsgICAgewotKyAgICAgIG5ld2JwID0gYnBweV9wZW5kaW5nX29iamVjdDsK LSsgICAgICBicHB5X3BlbmRpbmdfb2JqZWN0ID0gTlVMTDsKLSsgICAgfQotKyAgZWxzZQotKyAg ICBuZXdicCA9IFB5T2JqZWN0X05ldyAoYnJlYWtwb2ludF9vYmplY3QsICZicmVha3BvaW50X29i amVjdF90eXBlKTsKLSsgIGlmIChuZXdicCkKLSsgICAgewotKyAgICAgIFB5T2JqZWN0ICpob29r Zm47Ci0rCi0rICAgICAgbmV3YnAtPm51bWJlciA9IG51bTsKLSsgICAgICBuZXdicC0+YnAgPSBi cDsKLSsgICAgICBicHB5X2JyZWFrcG9pbnRzW251bV0gPSBuZXdicDsKLSsKLSsgICAgICBob29r Zm4gPSBnZGJweV9nZXRfaG9va19mdW5jdGlvbiAoIm5ld19icmVha3BvaW50Iik7Ci0rICAgICAg aWYgKGhvb2tmbikKLSsJewotKwkgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0rCSAgcmVzdWx0ID0gUHlP YmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyAoaG9va2ZuLCBuZXdicCwgTlVMTCk7Ci0rCSAgaWYg KHJlc3VsdCkKLSsJICAgIHsKLSsJICAgICAgUHlfREVDUkVGIChyZXN1bHQpOwotKwkgICAgfQot KwkgIFB5X0RFQ1JFRiAoaG9va2ZuKTsKLSsJfQotKyAgICB9Ci0rCi0rICAvKiBKdXN0IGlnbm9y ZSBlcnJvcnMgaGVyZS4gICovCi0rICBQeUVycl9DbGVhciAoKTsKLSsKLSsgIGRvX2NsZWFudXBz IChjbGVhbnVwKTsKLSt9Ci0rCi0rLyogQ2FsbGJhY2sgdGhhdCBpcyB1c2VkIHdoZW4gYSBicmVh a3BvaW50IGlzIGRlbGV0ZWQuICBUaGlzIHdpbGwKLSsgICBpbnZhbGlkYXRlIHRoZSBjb3JyZXNw b25kaW5nIFB5dGhvbiBvYmplY3QuICAqLwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfYnJlYWtwb2lu dF9kZWxldGVkIChpbnQgbnVtKQotK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKwot KyAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJy ZW50X2xhbmd1YWdlKTsKLSsgIGlmIChCUFBZX1ZBTElEX1AgKG51bSkpCi0rICAgIHsKLSsgICAg ICBicHB5X2JyZWFrcG9pbnRzW251bV0tPmJwID0gTlVMTDsKLSsgICAgICBQeV9ERUNSRUYgKGJw cHlfYnJlYWtwb2ludHNbbnVtXSk7Ci0rICAgICAgYnBweV9icmVha3BvaW50c1tudW1dID0gTlVM TDsKLSsgICAgICAtLWJwcHlfbGl2ZTsKLSsgICAgfQotKyAgZG9fY2xlYW51cHMgKGNsZWFudXAp OwotK30KLSsKLSsMCi0rCi0rLyogSW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGJyZWFrcG9pbnQgY29k ZS4gICovCi0rdm9pZAotK2dkYnB5X2luaXRpYWxpemVfYnJlYWtwb2ludHMgKHZvaWQpCi0rewot KyAgYnJlYWtwb2ludF9vYmplY3RfdHlwZS50cF9uZXcgPSBicHB5X25ldzsKLSsgIGlmIChQeVR5 cGVfUmVhZHkgKCZicmVha3BvaW50X29iamVjdF90eXBlKSA8IDApCi0rICAgIHJldHVybjsKLSsK LSsgIFB5X0lOQ1JFRiAoJmJyZWFrcG9pbnRfb2JqZWN0X3R5cGUpOwotKyAgUHlNb2R1bGVfQWRk T2JqZWN0IChnZGJfbW9kdWxlLCAiQnJlYWtwb2ludCIsCi0rCQkgICAgICAoUHlPYmplY3QgKikg JmJyZWFrcG9pbnRfb2JqZWN0X3R5cGUpOwotKwotKyAgb2JzZXJ2ZXJfYXR0YWNoX2JyZWFrcG9p bnRfY3JlYXRlZCAoZ2RicHlfYnJlYWtwb2ludF9jcmVhdGVkKTsKLSsgIG9ic2VydmVyX2F0dGFj aF9icmVha3BvaW50X2RlbGV0ZWQgKGdkYnB5X2JyZWFrcG9pbnRfZGVsZXRlZCk7Ci0rfQotKwot KwwKLSsKLStzdGF0aWMgUHlHZXRTZXREZWYgYnJlYWtwb2ludF9vYmplY3RfZ2V0c2V0W10gPSB7 Ci0rICB7ICJlbmFibGVkIiwgYnBweV9nZXRfZW5hYmxlZCwgYnBweV9zZXRfZW5hYmxlZCwKLSsg ICAgIkJvb2xlYW4gdGVsbGluZyB3aGV0aGVyIHRoZSBicmVha3BvaW50IGlzIGVuYWJsZWQuIiwg TlVMTCB9LAotKyAgeyAic2lsZW50IiwgYnBweV9nZXRfc2lsZW50LCBicHB5X3NldF9zaWxlbnQs Ci0rICAgICJCb29sZWFuIHRlbGxpbmcgd2hldGhlciB0aGUgYnJlYWtwb2ludCBpcyBzaWxlbnQu IiwgTlVMTCB9LAotKyAgeyAidGhyZWFkIiwgYnBweV9nZXRfdGhyZWFkLCBicHB5X3NldF90aHJl YWQsCi0rICAgICJUaHJlYWQgSUQgZm9yIHRoZSBicmVha3BvaW50LlxuXAotK0lmIHRoZSB2YWx1 ZSBpcyBhIHRocmVhZCBJRCAoaW50ZWdlciksIHRoZW4gdGhpcyBpcyBhIHRocmVhZC1zcGVjaWZp YyBicmVha3BvaW50LlxuXAotK0lmIHRoZSB2YWx1ZSBpcyBOb25lLCB0aGVuIHRoaXMgYnJlYWtw b2ludCBub3QgdGhyZWFkLXNwZWNpZmljLlxuXAotK05vIG90aGVyIHR5cGUgb2YgdmFsdWUgY2Fu IGJlIHVzZWQuIiwgTlVMTCB9LAotKyAgeyAiaWdub3JlX2NvdW50IiwgYnBweV9nZXRfaWdub3Jl X2NvdW50LCBicHB5X3NldF9pZ25vcmVfY291bnQsCi0rICAgICJOdW1iZXIgb2YgdGltZXMgdGhp cyBicmVha3BvaW50IHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGNvbnRpbnVlZC4iLAotKyAgICBO VUxMIH0sCi0rICB7ICJudW1iZXIiLCBicHB5X2dldF9udW1iZXIsIE5VTEwsCi0rICAgICJCcmVh a3BvaW50J3MgbnVtYmVyIGFzc2lnbmVkIGJ5IEdEQi4iLCBOVUxMIH0sCi0rICB7ICJoaXRfY291 bnQiLCBicHB5X2dldF9oaXRfY291bnQsIGJwcHlfc2V0X2hpdF9jb3VudCwKLSsgICAgIk51bWJl ciBvZiB0aW1lcyB0aGUgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQuXG5cCi0rQ2FuIGJlIHNldCB0 byB6ZXJvIHRvIGNsZWFyIHRoZSBjb3VudC4gTm8gb3RoZXIgdmFsdWUgaXMgdmFsaWRcblwKLSt3 aGVuIHNldHRpbmcgdGhpcyBwcm9wZXJ0eS4iLCBOVUxMIH0sCi0rICB7ICJsb2NhdGlvbiIsIGJw cHlfZ2V0X2xvY2F0aW9uLCBOVUxMLAotKyAgICAiTG9jYXRpb24gb2YgdGhlIGJyZWFrcG9pbnQs IGFzIHNwZWNpZmllZCBieSB0aGUgdXNlci4iLCBOVUxMfSwKLSsgIHsgImNvbmRpdGlvbiIsIGJw cHlfZ2V0X2NvbmRpdGlvbiwgYnBweV9zZXRfY29uZGl0aW9uLAotKyAgICAiQ29uZGl0aW9uIG9m IHRoZSBicmVha3BvaW50LCBhcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIsXAotK29yIE5vbmUgaWYg bm8gY29uZGl0aW9uIHNldC4ifSwKLSsgIHsgImNvbW1hbmRzIiwgYnBweV9nZXRfY29tbWFuZHMs IE5VTEwsCi0rICAgICJDb21tYW5kcyBvZiB0aGUgYnJlYWtwb2ludCwgYXMgc3BlY2lmaWVkIGJ5 IHRoZSB1c2VyLiJ9LAotKyAgeyBOVUxMIH0gIC8qIFNlbnRpbmVsLiAgKi8KLSt9OwotKwotK3N0 YXRpYyBQeU1ldGhvZERlZiBicmVha3BvaW50X29iamVjdF9tZXRob2RzW10gPQotK3sKLSsgIHsg ImlzX3ZhbGlkIiwgYnBweV9pc192YWxpZCwgTUVUSF9OT0FSR1MsCi0rICAgICJSZXR1cm4gdHJ1 ZSBpZiB0aGlzIGJyZWFrcG9pbnQgaXMgdmFsaWQsIGZhbHNlIGlmIG5vdC4iIH0sCi0rICB7IE5V TEwgfSAvKiBTZW50aW5lbC4gICovCi0rfTsKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IGJyZWFr cG9pbnRfb2JqZWN0X3R5cGUgPQotK3sKLSsgIFB5T2JqZWN0X0hFQURfSU5JVCAoTlVMTCkKLSsg IDAsCQkJCSAgLypvYl9zaXplKi8KLSsgICJnZGIuQnJlYWtwb2ludCIsCQkgIC8qdHBfbmFtZSov Ci0rICBzaXplb2YgKGJyZWFrcG9pbnRfb2JqZWN0KSwJICAvKnRwX2Jhc2ljc2l6ZSovCi0rICAw LAkJCQkgIC8qdHBfaXRlbXNpemUqLwotKyAgMCwJCQkJICAvKnRwX2RlYWxsb2MqLwotKyAgMCwJ CQkJICAvKnRwX3ByaW50Ki8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRyKi8KLSsgIDAsCQkJCSAg Lyp0cF9zZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9jb21wYXJlKi8KLSsgIDAsCQkJCSAgLyp0 cF9yZXByKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19udW1iZXIqLwotKyAgMCwJCQkJICAvKnRwX2Fz X3NlcXVlbmNlKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19tYXBwaW5nKi8KLSsgIDAsCQkJCSAgLyp0 cF9oYXNoICovCi0rICAwLAkJCQkgIC8qdHBfY2FsbCovCi0rICAwLAkJCQkgIC8qdHBfc3RyKi8K LSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRybyovCi0rICAwLAkJCQkgIC8qdHBfc2V0YXR0cm8qLwot KyAgMCwJCQkJICAvKnRwX2FzX2J1ZmZlciovCi0rICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkgIC8q dHBfZmxhZ3MqLwotKyAgIkdEQiBicmVha3BvaW50IG9iamVjdCIsCSAgLyogdHBfZG9jICovCi0r ICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCi0r ICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0 b2Zmc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRl cm5leHQgKi8KLSsgIGJyZWFrcG9pbnRfb2JqZWN0X21ldGhvZHMsCSAgLyogdHBfbWV0aG9kcyAq LwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICBicmVha3BvaW50X29iamVjdF9nZXRz ZXQJICAvKiB0cF9nZXRzZXQgKi8KLSt9OwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktY21k LmMgYi9nZGIvcHl0aG9uL3B5LWNtZC5jCi1pbmRleCBhZTQ2MmQ5Li5kZDM2NGRmIDEwMDY0NAot LS0tIGEvZ2RiL3B5dGhvbi9weS1jbWQuYwotKysrIGIvZ2RiL3B5dGhvbi9weS1jbWQuYwotQEAg LTQ5LDggKzQ5LDcgQEAgc3RhdGljIHN0cnVjdCBjbWRweV9jb21wbGV0ZXIgY29tcGxldGVyc1td ID0KLSAKLSAjZGVmaW5lIE5fQ09NUExFVEVSUyAoc2l6ZW9mIChjb21wbGV0ZXJzKSAvIHNpemVv ZiAoY29tcGxldGVyc1swXSkpCi0gCi0tLyogQSBnZGIgY29tbWFuZC4gIEZvciB0aGUgdGltZSBi ZWluZyBvbmx5IG9yZGluYXJ5IGNvbW1hbmRzIChub3QKLS0gICBzZXQvc2hvdyBjb21tYW5kcykg YXJlIGFsbG93ZWQuICAqLwotKy8qIEEgZ2RiIGNvbW1hbmQuICAqLwotIHN0cnVjdCBjbWRweV9v YmplY3QKLSB7Ci0gICBQeU9iamVjdF9IRUFECi1AQCAtMjYzLDEwICsyNjIsMTMgQEAgY21kcHlf Y29tcGxldGVyIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY29tbWFuZCwgY2hhciAqdGV4dCwg Y2hhciAqd29yZCkKLSAgICAqQkFTRV9MSVNUIGlzIHNldCB0byB0aGUgZmluYWwgcHJlZml4IGNv bW1hbmQncyBsaXN0IG9mCi0gICAgKnN1Yi1jb21tYW5kcy4KLSAgICAKLSsgICBTVEFSVF9MSVNU IGlzIHRoZSBsaXN0IGluIHdoaWNoIHRoZSBzZWFyY2ggc3RhcnRzLgotKyAgIAotICAgIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0aGUgeG1hbGxvYygpZCBuYW1lIG9mIHRoZSBuZXcgY29tbWFuZC4g IE9uCi0gICAgZXJyb3Igc2V0cyB0aGUgUHl0aG9uIGVycm9yIGFuZCByZXR1cm5zIE5VTEwuICAq LwotLXN0YXRpYyBjaGFyICoKLS1wYXJzZV9jb21tYW5kX25hbWUgKGNoYXIgKnRleHQsIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlzdCkKLStjaGFyICoKLStnZGJweV9wYXJzZV9j b21tYW5kX25hbWUgKGNoYXIgKnRleHQsIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2Vf bGlzdCwKLSsJCQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqc3RhcnRfbGlzdCkKLSB7Ci0g ICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqZWx0OwotICAgaW50IGxlbiA9IHN0cmxlbiAodGV4 dCk7Ci1AQCAtMjk5LDcgKzMwMSw3IEBAIHBhcnNlX2NvbW1hbmRfbmFtZSAoY2hhciAqdGV4dCwg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioqYmFzZV9saXN0KQotICAgICA7Ci0gICBpZiAoaSA8 IDApCi0gICAgIHsKLS0gICAgICAqYmFzZV9saXN0ID0gJmNtZGxpc3Q7Ci0rICAgICAgKmJhc2Vf bGlzdCA9IHN0YXJ0X2xpc3Q7Ci0gICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgfQotIAotQEAg LTMwOCw3ICszMTAsNyBAQCBwYXJzZV9jb21tYW5kX25hbWUgKGNoYXIgKnRleHQsIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlzdCkKLSAgIHByZWZpeF90ZXh0W2kgKyAxXSA9ICdc MCc7Ci0gCi0gICB0ZXh0ID0gcHJlZml4X3RleHQ7Ci0tICBlbHQgPSBsb29rdXBfY21kXzEgKCZ0 ZXh0LCBjbWRsaXN0LCBOVUxMLCAxKTsKLSsgIGVsdCA9IGxvb2t1cF9jbWRfMSAoJnRleHQsICpz dGFydF9saXN0LCBOVUxMLCAxKTsKLSAgIGlmICghZWx0IHx8IGVsdCA9PSAoc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKikgLTEpCi0gICAgIHsKLSAgICAgICBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1 bnRpbWVFcnJvciwgXygiY291bGQgbm90IGZpbmQgY29tbWFuZCBwcmVmaXggJXMiKSwKLUBAIC0z OTksNyArNDAxLDcgQEAgY21kcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz LCBQeU9iamVjdCAqa3cpCi0gICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gCi0tICBjbWRfbmFt ZSA9IHBhcnNlX2NvbW1hbmRfbmFtZSAobmFtZSwgJmNtZF9saXN0KTsKLSsgIGNtZF9uYW1lID0g Z2RicHlfcGFyc2VfY29tbWFuZF9uYW1lIChuYW1lLCAmY21kX2xpc3QsICZjbWRsaXN0KTsKLSAg IGlmICghIGNtZF9uYW1lKQotICAgICByZXR1cm4gLTE7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5 dGhvbi9weS1mcmFtZS5jIGIvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCi1pbmRleCAzMzRiYWQ5Li41 MjQzNTNkIDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCi0rKysgYi9nZGIvcHl0 aG9uL3B5LWZyYW1lLmMKLUBAIC0yMDIsMTAgKzIwMiw1OSBAQCBmcmFweV9wYyAoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25n TG9uZyAocGMpOwotIH0KLSAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuRnJhbWUuYmxvY2sg KHNlbGYpIC0+IGdkYi5CbG9jay4KLSsgICBSZXR1cm5zIHRoZSBmcmFtZSdzIGNvZGUgYmxvY2su ICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rZnJhcHlfYmxvY2sgKFB5T2JqZWN0ICpzZWxm LCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7Ci0rICBz dHJ1Y3QgYmxvY2sgKmJsb2NrID0gTlVMTDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0 aW9uIGV4Y2VwdDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0r ICAgIHsKLSsgICAgICBGUkFQWV9SRVFVSVJFX1ZBTElEICgoZnJhbWVfb2JqZWN0ICopIHNlbGYs IGZyYW1lKTsKLSsKLSsgICAgICBibG9jayA9IGJsb2NrX2Zvcl9wYyAoZ2V0X2ZyYW1lX2FkZHJl c3NfaW5fYmxvY2sgKGZyYW1lKSk7Ci0rICAgIH0KLSsgIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9O IChleGNlcHQpOwotKwotKyAgaWYgKGJsb2NrKQotKyAgICByZXR1cm4gYmxvY2tfdG9fYmxvY2tf b2JqZWN0IChibG9jayk7Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rCi0rLyogSW1w bGVtZW50YXRpb24gb2YgZ2RiLkZyYW1lLmZ1bmN0aW9uIChzZWxmKSAtPiBnZGIuU3ltYm9sLgot KyAgIFJldHVybnMgdGhlIHN5bWJvbCBmb3IgdGhlIGZ1bmN0aW9uIGNvcnJlc3BvbmRpbmcgdG8g dGhpcyBmcmFtZS4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStmcmFweV9mdW5jdGlvbiAo UHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wgKnN5 bSA9IE5VTEw7Ci0rICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7Ci0rICB2b2xhdGlsZSBzdHJ1 Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJO X01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgRlJBUFlfUkVRVUlSRV9WQUxJRCAoKGZyYW1lX29i amVjdCAqKSBzZWxmLCBmcmFtZSk7Ci0rCi0rICAgICAgc3ltID0gZmluZF9wY19mdW5jdGlvbiAo Z2V0X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKGZyYW1lKSk7Ci0rICAgIH0KLSsgIEdEQl9QWV9I QU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOwotKwotKyAgaWYgKHN5bSkKLSsgICAgcmV0dXJuIHN5 bWJvbF90b19zeW1ib2xfb2JqZWN0IChzeW0pOwotKwotKyAgUHlfUkVUVVJOX05PTkU7Ci0rfQot KwotIC8qIENvbnZlcnQgYSBmcmFtZV9pbmZvIHN0cnVjdCB0byBhIFB5dGhvbiBGcmFtZSBvYmpl Y3QuCi0gICAgU2V0cyBhIFB5dGhvbiBleGNlcHRpb24gYW5kIHJldHVybnMgTlVMTCBvbiBlcnJv ci4gICovCi0gCi0tc3RhdGljIGZyYW1lX29iamVjdCAqCi0rUHlPYmplY3QgKgotIGZyYW1lX2lu Zm9fdG9fZnJhbWVfb2JqZWN0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gewotICAgZnJh bWVfb2JqZWN0ICpmcmFtZV9vYmo7Ci1AQCAtMjM1LDcgKzI4NCw3IEBAIGZyYW1lX2luZm9fdG9f ZnJhbWVfb2JqZWN0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gCi0gICBmcmFtZV9vYmot PmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwotIAotLSAgcmV0dXJuIGZyYW1lX29i ajsKLSsgIHJldHVybiAoUHlPYmplY3QgKikgZnJhbWVfb2JqOwotIH0KLSAKLSAvKiBJbXBsZW1l bnRhdGlvbiBvZiBnZGIuRnJhbWUub2xkZXIgKHNlbGYpIC0+IGdkYi5GcmFtZS4KLUBAIC0yOTYs NyArMzQ1LDMwIEBAIGZyYXB5X25ld2VyIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Mp Ci0gICByZXR1cm4gbmV4dF9vYmo7Ci0gfQotIAotLS8qIEltcGxlbWVudGF0aW9uIG9mIGdkYi5G cmFtZS5yZWFkX3Zhcl92YWx1ZSAoc2VsZiwgdmFyaWFibGUpIC0+IGdkYi5WYWx1ZS4KLSsvKiBJ bXBsZW1lbnRhdGlvbiBvZiBnZGIuRnJhbWUuZmluZF9zYWwgKHNlbGYpIC0+IGdkYi5TeW10YWJf YW5kX2xpbmUuCi0rICAgUmV0dXJucyB0aGUgZnJhbWUncyBzeW10YWIgYW5kIGxpbmUuICAqLwot KwotK3N0YXRpYyBQeU9iamVjdCAqCi0rZnJhcHlfZmluZF9zYWwgKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncykKLSt7Ci0rICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7Ci0rICBzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9u IGV4Y2VwdDsKLSsgIFB5T2JqZWN0ICpzYWxfb2JqID0gTlVMTDsgICAvKiBJbml0aWFsaXplIHRv IGFwcGVhc2UgZ2NjIHdhcm5pbmcuICAqLwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVS Tl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIEZSQVBZX1JFUVVJUkVfVkFMSUQgKChmcmFtZV9v YmplY3QgKikgc2VsZiwgZnJhbWUpOwotKwotKyAgICAgIGZpbmRfZnJhbWVfc2FsIChmcmFtZSwg JnNhbCk7Ci0rICAgICAgc2FsX29iaiA9IHN5bXRhYl9hbmRfbGluZV90b19zYWxfb2JqZWN0IChz YWwpOwotKyAgICB9Ci0rICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSsKLSsg IHJldHVybiBzYWxfb2JqOwotK30KLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuRnJhbWUu cmVhZF92YXIgKHNlbGYsIHZhcmlhYmxlKSAtPiBnZGIuVmFsdWUuCi0gICAgUmV0dXJucyB0aGUg dmFsdWUgb2YgdGhlIGdpdmVuIHZhcmlhYmxlIGluIHRoaXMgZnJhbWUuICBUaGUgYXJndW1lbnQg bXVzdCBiZQotICAgIGEgc3RyaW5nLiAgUmV0dXJucyBOb25lIGlmIEdEQiBjYW4ndCBmaW5kIHRo ZSBzcGVjaWZpZWQgdmFyaWFibGUuICAqLwotIAotQEAgLTMxMiw3ICszODQsOSBAQCBmcmFweV9y ZWFkX3ZhciAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgaWYgKCFQeUFyZ19Q YXJzZVR1cGxlIChhcmdzLCAiTyIsICZzeW1fb2JqKSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0t ICBpZiAoZ2RicHlfaXNfc3RyaW5nIChzeW1fb2JqKSkKLSsgIGlmIChQeU9iamVjdF9UeXBlQ2hl Y2sgKHN5bV9vYmosICZzeW1ib2xfb2JqZWN0X3R5cGUpKQotKyAgICB2YXIgPSBzeW1ib2xfb2Jq ZWN0X3RvX3N5bWJvbCAoc3ltX29iaik7Ci0rICBlbHNlIGlmIChnZGJweV9pc19zdHJpbmcgKHN5 bV9vYmopKQotICAgICB7Ci0gICAgICAgY2hhciAqdmFyX25hbWU7Ci0gICAgICAgc3RydWN0IGJs b2NrICpibG9jayA9IE5VTEw7Ci1AQCAtMzY1LDYgKzQzOSwyNSBAQCBmcmFweV9yZWFkX3ZhciAo UHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgUHlfUkVUVVJOX05PTkU7Ci0gfQot IAotKy8qIFNlbGVjdCB0aGlzIGZyYW1lLiAgKi8KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK2Zy YXB5X3NlbGVjdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIHN0cnVj dCBmcmFtZV9pbmZvICpmaTsKLSsgIGZyYW1lX29iamVjdCAqZnJhbWUgPSAoZnJhbWVfb2JqZWN0 ICopIHNlbGY7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0r ICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgRlJB UFlfUkVRVUlSRV9WQUxJRCAoZnJhbWUsIGZpKTsKLSsgICAgICBzZWxlY3RfZnJhbWUgKGZpKTsK LSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7Ci0rCi0rICBQeV9S RVRVUk5fTk9ORTsKLSt9Ci0rCi0gLyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLnNlbGVjdGVkX2Zy YW1lICgpIC0+IGdkYi5GcmFtZS4KLSAgICBSZXR1cm5zIHRoZSBzZWxlY3RlZCBmcmFtZSBvYmpl Y3QuICAqLwotIAotQEAgLTM3Miw3ICs0NjUsNyBAQCBQeU9iamVjdCAqCi0gZ2RicHlfc2VsZWN0 ZWRfZnJhbWUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSB7Ci0gICBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWU7Ci0tICBmcmFtZV9vYmplY3QgKmZyYW1lX29iaiA9IE5VTEw7ICAg LyogSW5pdGlhbGl6ZSB0byBhcHBlYXNlIGdjYyB3YXJuaW5nLiAgKi8KLSsgIFB5T2JqZWN0ICpm cmFtZV9vYmogPSBOVUxMOyAgIC8qIEluaXRpYWxpemUgdG8gYXBwZWFzZSBnY2Mgd2FybmluZy4g ICovCi0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0gCi0gICBUUllf Q0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotQEAgLTM4Miw3ICs0NzUsNyBAQCBnZGJw eV9zZWxlY3RlZF9mcmFtZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgICB9 Ci0gICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSAKLS0gIHJldHVybiAoUHlP YmplY3QgKikgZnJhbWVfb2JqOwotKyAgcmV0dXJuIGZyYW1lX29iajsKLSB9Ci0gCi0gLyogSW1w bGVtZW50YXRpb24gb2YgZ2RiLnN0b3BfcmVhc29uX3N0cmluZyAoSW50ZWdlcikgLT4gU3RyaW5n LgotQEAgLTQ4NCwxNSArNTc3LDI2IEBAIFJldHVybiB0aGUgcmVhc29uIHdoeSBpdCdzIG5vdCBw b3NzaWJsZSB0byBmaW5kIGZyYW1lcyBvbGRlciB0aGFuIHRoaXMuIiB9LAotICAgeyAicGMiLCBm cmFweV9wYywgTUVUSF9OT0FSR1MsCi0gICAgICJwYyAoKSAtPiBMb25nLlxuXAotIFJldHVybiB0 aGUgZnJhbWUncyByZXN1bWUgYWRkcmVzcy4iIH0sCi0rICB7ICJibG9jayIsIGZyYXB5X2Jsb2Nr LCBNRVRIX05PQVJHUywKLSsgICAgImJsb2NrICgpIC0+IGdkYi5CbG9jay5cblwKLStSZXR1cm4g dGhlIGZyYW1lJ3MgY29kZSBibG9jay4iIH0sCi0rICB7ICJmdW5jdGlvbiIsIGZyYXB5X2Z1bmN0 aW9uLCBNRVRIX05PQVJHUywKLSsgICAgImZ1bmN0aW9uICgpIC0+IGdkYi5TeW1ib2wuXG5cCi0r UmV0dXJucyB0aGUgc3ltYm9sIGZvciB0aGUgZnVuY3Rpb24gY29ycmVzcG9uZGluZyB0byB0aGlz IGZyYW1lLiIgfSwKLSAgIHsgIm9sZGVyIiwgZnJhcHlfb2xkZXIsIE1FVEhfTk9BUkdTLAotICAg ICAib2xkZXIgKCkgLT4gZ2RiLkZyYW1lLlxuXAotIFJldHVybiB0aGUgZnJhbWUgdGhhdCBjYWxs ZWQgdGhpcyBmcmFtZS4iIH0sCi0gICB7ICJuZXdlciIsIGZyYXB5X25ld2VyLCBNRVRIX05PQVJH UywKLSAgICAgIm5ld2VyICgpIC0+IGdkYi5GcmFtZS5cblwKLSBSZXR1cm4gdGhlIGZyYW1lIGNh bGxlZCBieSB0aGlzIGZyYW1lLiIgfSwKLSsgIHsgImZpbmRfc2FsIiwgZnJhcHlfZmluZF9zYWws IE1FVEhfTk9BUkdTLAotKyAgICAiZmluZF9zYWwgKCkgLT4gZ2RiLlN5bXRhYl9hbmRfbGluZS5c blwKLStSZXR1cm4gdGhlIGZyYW1lJ3Mgc3ltdGFiIGFuZCBsaW5lLiIgfSwKLSAgIHsgInJlYWRf dmFyIiwgZnJhcHlfcmVhZF92YXIsIE1FVEhfVkFSQVJHUywKLSAgICAgInJlYWRfdmFyICh2YXJp YWJsZSkgLT4gZ2RiLlZhbHVlLlxuXAotIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxl IGluIHRoaXMgZnJhbWUuIiB9LAotKyAgeyAic2VsZWN0IiwgZnJhcHlfc2VsZWN0LCBNRVRIX05P QVJHUywKLSsgICAgIlNlbGVjdCB0aGlzIGZyYW1lIGFzIHRoZSB1c2VyJ3MgY3VycmVudCBmcmFt ZS4iIH0sCi0gICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi0gfTsKLSAKLWRpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL3B5LWhvb2tzLmMgYi9nZGIvcHl0aG9uL3B5LWhvb2tzLmMKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hMzE0MGJjCi0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvcHl0aG9uL3B5LWhvb2tzLmMKLUBAIC0wLDAgKzEsNTAgQEAKLSsvKiBOb3RpZmljYXRpb25z IGZyb20gZ2RiIHRvIFB5dGhvbgotKwotKyAgIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRl ICJkZWZzLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCi0rI2luY2x1ZGUgImNoYXJz ZXQuaCIKLSsjaW5jbHVkZSAicHl0aG9uLmgiCi0rI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5o IgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotKwotK1B5T2JqZWN0ICoKLStnZGJweV9nZXRfaG9v a19mdW5jdGlvbiAoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICBQeU9iamVjdCAqaG9va3M7Ci0r ICBQeU9iamVjdCAqcmVzdWx0OwotKwotKyAgaWYgKCEgUHlPYmplY3RfSGFzQXR0clN0cmluZyAo Z2RiX21vZHVsZSwgImhvb2tzIikpCi0rICAgIHJldHVybiBOVUxMOwotKyAgaG9va3MgPSBQeU9i amVjdF9HZXRBdHRyU3RyaW5nIChnZGJfbW9kdWxlLCAiaG9va3MiKTsKLSsgIGlmICghIGhvb2tz KQotKyAgICByZXR1cm4gTlVMTDsKLSsgIC8qIFRoZSBjYXN0IGlzIGJlY2F1c2UgdGhlIFB5dGhv biBmdW5jdGlvbiBkb2Vzbid0IGRlY2xhcmUgY29uc3QgYXJndW1lbnQuCi0rICAgICBUaGlzIGlz IGEgcHJvYmxlbSBpbiBQeXRob24gdmVyc2lvbiAyLjQsIGJ1dCBub3QgaW4gMi41LiAgKi8KLSsg IGlmICghIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcgKGhvb2tzLCAoY2hhciAqKSBuYW1lKSkKLSsg ICAgewotKyAgICAgIFB5X0RFQ1JFRiAoaG9va3MpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAg ICB9Ci0rICAvKiBUaGUgY2FzdCBpcyBiZWNhdXNlIHRoZSBQeXRob24gZnVuY3Rpb24gZG9lc24n dCBkZWNsYXJlIGNvbnN0IGFyZ3VtZW50LgotKyAgICAgVGhpcyBpcyBhIHByb2JsZW0gaW4gUHl0 aG9uIHZlcnNpb24gMi40LCBidXQgbm90IGluIDIuNS4gICovCi0rICByZXN1bHQgPSBQeU9iamVj dF9HZXRBdHRyU3RyaW5nIChob29rcywgKGNoYXIgKikgbmFtZSk7Ci0rICBQeV9ERUNSRUYgKGhv b2tzKTsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHkt aW5mZXJpb3IuYyBiL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLmIyNTlhYjUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRo b24vcHktaW5mZXJpb3IuYwotQEAgLTAsMCArMSw5MzQgQEAKLSsvKiBQeXRob24gaW50ZXJmYWNl IHRvIGluZmVyaW9ycy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVk ZSAiZGVmcy5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImdkYmNvcmUu aCIKLSsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0rI2lu Y2x1ZGUgIm9ic2VydmVyLmgiCi0rI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5oIgotKyNpbmNs dWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImxhbmd1YWdlLmgiCi0rCi0rc3RydWN0IHRo cmVhZGxpc3RfZW50cnkgewotKyAgdGhyZWFkX29iamVjdCAqdGhyZWFkX29iajsKLSsgIHN0cnVj dCB0aHJlYWRsaXN0X2VudHJ5ICpuZXh0OwotK307Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0r ICBQeU9iamVjdF9IRUFECi0rCi0rICAvKiBUaGUgaW5mZXJpb3Igd2UgcmVwcmVzZW50LiAgKi8K LSsgIHN0cnVjdCBpbmZlcmlvciAqaW5mZXJpb3I7Ci0rCi0rICAvKiB0aHJlYWRfb2JqZWN0IGlu c3RhbmNlcyB1bmRlciB0aGlzIGluZmVyaW9yLiAgVGhpcyBsaXN0IG93bnMgYSByZWZlcmVuY2UK LSsgICAgIHRvIGVhY2ggb2JqZWN0IGl0IGNvbnRhaW5zLiAqLwotKyAgc3RydWN0IHRocmVhZGxp c3RfZW50cnkgKnRocmVhZHM7Ci0rCi0rICAvKiBOdW1iZXIgb2YgdGhyZWFkcyBpbiB0aGUgbGlz dC4gICovCi0rICBpbnQgbnRocmVhZHM7Ci0rfSBpbmZlcmlvcl9vYmplY3Q7Ci0rCi0rc3RhdGlj IFB5VHlwZU9iamVjdCBpbmZlcmlvcl9vYmplY3RfdHlwZTsKLSsKLSt0eXBlZGVmIHN0cnVjdCB7 Ci0rICBQeU9iamVjdF9IRUFECi0rICB2b2lkICpidWZmZXI7Ci0rCi0rICAvKiBUaGVzZSBhcmUg a2VwdCBqdXN0IGZvciBtYnB5X3N0ci4gICovCi0rICBDT1JFX0FERFIgYWRkcjsKLSsgIENPUkVf QUREUiBsZW5ndGg7Ci0rfSBtZW1idWZfb2JqZWN0OwotKwotK3N0YXRpYyBQeVR5cGVPYmplY3Qg bWVtYnVmX29iamVjdF90eXBlOwotKwotKy8qIFJlcXVpcmUgdGhhdCBJTkZFUklPUiBiZSBhIHZh bGlkIGluZmVyaW9yIElELiAgKi8KLSsjZGVmaW5lIElORlBZX1JFUVVJUkVfVkFMSUQoSW5mZXJp b3IpCQkJCVwKLSsgIGRvIHsJCQkJCQkJCVwKLSsgICAgaWYgKCFJbmZlcmlvci0+aW5mZXJpb3Ip CQkJCQlcCi0rICAgICAgewkJCQkJCQkJXAotKwlQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRp bWVFcnJvciwJCQlcCi0rCQkJICJpbmZlcmlvciBubyBsb25nZXIgZXhpc3RzIik7CSAgICAgICAg XAotKwlyZXR1cm4gTlVMTDsJCQkJCQlcCi0rICAgICAgfQkJCQkJCQkJXAotKyAgfSB3aGlsZSAo MCkKLSsKLStzdHJ1Y3QgaW5mbGlzdF9lbnRyeSB7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZl9v Ymo7Ci0rICBzdHJ1Y3QgaW5mbGlzdF9lbnRyeSAqbmV4dDsKLSt9OwotKwotKwwKLSsKLSsvKiBJ bmZlcmlvciBvYmplY3RzIGxpc3QuICAqLwotKwotKy8qIExpc3QgY29udGFpbmluZyBpbmZlcmlv cl9vYmplY3RzLiAgVGhpcyBsaXN0IG93bnMgYSByZWZlcmVuY2UgdG8gZWFjaAotKyAgIG9iamVj dCBpdCBjb250YWlucy4gICovCi0rc3RhdGljIHN0cnVjdCBpbmZsaXN0X2VudHJ5ICpnZGJweV9p bmZlcmlvcl9saXN0OwotKwotK3N0YXRpYyBpbnQgbmluZmVyaW9yczsKLSsKLSsKLSsvKiBBbiBv YnNlcnZlciBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIGFuIGluZmVyaW9y IGhhcwotKyAgIGJlZW4gY3JlYXRlZC4gIENyZWF0ZXMgYSBjb3JyZXNwb25kaW5nIFB5dGhvbiBv YmplY3QgZm9yIHRoZSBpbmZlcmlvcgotKyAgIGFuZCBhZGRzIGl0IHRvIHRoZSBsaXN0LiAgKi8K LStzdGF0aWMgdm9pZAotK2FkZF9pbmZlcmlvcl9vYmplY3QgKGludCBwaWQpCi0rewotKyAgc3Ry dWN0IGluZmVyaW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAocGlkKTsKLSsgIGluZmVyaW9y X29iamVjdCAqaW5mX29iajsKLSsgIHN0cnVjdCBpbmZsaXN0X2VudHJ5ICplbnRyeTsKLSsgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKwotKyAgaWYgKCFpbmYpCi0rICAgIHsKLSsgICAgICB3 YXJuaW5nIChfKCJDYW4ndCBjcmVhdGUgUHl0aG9uIEluZmVyaW9yIG9iamVjdC4iKSk7Ci0rICAg ICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAvKiBXaGlsZSBjcmVhdGluZyBuZXcgaW5mZXJpb3Ig bm8gaW5mZXJpb3IgdGhyZWFkIGlzIGF2YWlsYWJsZS4gIFRoZXJlZm9yZQotKyAgICAgZ2V0X2N1 cnJlbnRfYXJjaCBoYXMgbm8gdmFsaWQgY3VycmVudCBmcmFtZSAoYW5kIGl0IHdvdWxkIGNyYXNo KS4gICovCi0rCi0rICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKHRhcmdldF9nZGJhcmNo LCBjdXJyZW50X2xhbmd1YWdlKTsKLSsKLSsgIGluZl9vYmogPSBQeU9iamVjdF9OZXcgKGluZmVy aW9yX29iamVjdCwgJmluZmVyaW9yX29iamVjdF90eXBlKTsKLSsgIGlmICghaW5mX29iaikKLSsg ICAgewotKyAgICAgIHdhcm5pbmcgKF8oIkNhbid0IGNyZWF0ZSBQeXRob24gSW5mZXJpb3Igb2Jq ZWN0LiIpKTsKLSsgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKLSsgICAgICBkb19jbGVhbnVw cyAoY2xlYW51cCk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBpbmZfb2JqLT5pbmZl cmlvciA9IGluZjsKLSsgIGluZl9vYmotPnRocmVhZHMgPSBOVUxMOwotKyAgaW5mX29iai0+bnRo cmVhZHMgPSAwOwotKwotKyAgZW50cnkgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBpbmZsaXN0 X2VudHJ5KSk7Ci0rICBlbnRyeS0+aW5mX29iaiA9IGluZl9vYmo7Ci0rICBlbnRyeS0+bmV4dCA9 IGdkYnB5X2luZmVyaW9yX2xpc3Q7Ci0rCi0rICBnZGJweV9pbmZlcmlvcl9saXN0ID0gZW50cnk7 Ci0rCi0rICBuaW5mZXJpb3JzKys7Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQot KwotKy8qIEFuIG9ic2VydmVyIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4g YW4gaW5mZXJpb3IgaGFzCi0rICAgYmVlbiBkZWxldGVkLiAgUmVtb3ZlcyB0aGUgY29ycmVzcG9u ZGluZyBQeXRob24gb2JqZWN0IGZyb20gdGhlCi0rICAgaW5mZXJpb3IgbGlzdCwgYW5kIHJlbW92 ZXMgdGhlIGxpc3QncyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdC4gICovCi0rc3RhdGljIHZvaWQK LStkZWxldGVfaW5mZXJpb3Jfb2JqZWN0IChpbnQgcGlkKQotK3sKLSsgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwOwotKyAgc3RydWN0IGluZmxpc3RfZW50cnkgKippbmZfZW50cnksICppbmZfdG1w OwotKyAgc3RydWN0IHRocmVhZGxpc3RfZW50cnkgKnRoX2VudHJ5LCAqdGhfdG1wOwotKwotKyAg LyogRmluZCBpbmZlcmlvcl9vYmplY3QgZm9yIHRoZSBnaXZlbiBQSUQuICAqLwotKyAgZm9yIChp bmZfZW50cnkgPSAmZ2RicHlfaW5mZXJpb3JfbGlzdDsgKmluZl9lbnRyeSAhPSBOVUxMOwotKyAg ICAgICBpbmZfZW50cnkgPSAmKCppbmZfZW50cnkpLT5uZXh0KQotKyAgICBpZiAoKCppbmZfZW50 cnkpLT5pbmZfb2JqLT5pbmZlcmlvci0+cGlkID09IHBpZCkKLSsgICAgICBicmVhazsKLSsKLSsg IGlmICghKmluZl9lbnRyeSkKLSsgICAgcmV0dXJuOwotKwotKyAgY2xlYW51cCA9IGVuc3VyZV9w eXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSsKLSsg IGluZl90bXAgPSAqaW5mX2VudHJ5OwotKyAgaW5mX3RtcC0+aW5mX29iai0+aW5mZXJpb3IgPSBO VUxMOwotKwotKyAgLyogRGVhbGxvY2F0ZSB0aHJlYWRzIGxpc3QuICAqLwotKyAgZm9yICh0aF9l bnRyeSA9IGluZl90bXAtPmluZl9vYmotPnRocmVhZHM7IHRoX2VudHJ5ICE9IE5VTEw7KQotKyAg ICB7Ci0rICAgICAgUHlfREVDUkVGICh0aF9lbnRyeS0+dGhyZWFkX29iaik7Ci0rCi0rICAgICAg dGhfdG1wID0gdGhfZW50cnk7Ci0rICAgICAgdGhfZW50cnkgPSB0aF9lbnRyeS0+bmV4dDsKLSsg ICAgICB4ZnJlZSAodGhfdG1wKTsKLSsgICAgfQotKwotKyAgaW5mX3RtcC0+aW5mX29iai0+bnRo cmVhZHMgPSAwOwotKwotKyAgKmluZl9lbnRyeSA9ICgqaW5mX2VudHJ5KS0+bmV4dDsKLSsgIFB5 X0RFQ1JFRiAoaW5mX3RtcC0+aW5mX29iaik7Ci0rICB4ZnJlZSAoaW5mX3RtcCk7Ci0rCi0rICBu aW5mZXJpb3JzLS07Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwotKy8qIEZp bmRzIHRoZSBQeXRob24gSW5mZXJpb3Igb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcGlkLiAgUmV0dXJu cyBhIGJvcnJvd2VkCi0rICAgcmVmZXJlbmNlLiAgKi8KLStQeU9iamVjdCAqCi0rZmluZF9pbmZl cmlvcl9vYmplY3QgKGludCBwaWQpCi0rewotKyAgc3RydWN0IGluZmxpc3RfZW50cnkgKnA7Ci0r Ci0rICBmb3IgKHAgPSBnZGJweV9pbmZlcmlvcl9saXN0OyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0 KQotKyAgICBpZiAocC0+aW5mX29iai0+aW5mZXJpb3ItPnBpZCA9PSBwaWQpCi0rICAgICAgcmV0 dXJuIChQeU9iamVjdCAqKSBwLT5pbmZfb2JqOwotKwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwot Ky8qIEZpbmRzIHRoZSBQeXRob24gSW5mZXJpb3JUaHJlYWQgb2JqZWN0IGZvciB0aGUgZ2l2ZW4g cHRpZC4gIFJldHVybnMgYQotKyAgIGJvcnJvd2VkIHJlZmVyZW5jZS4gICovCi0rdGhyZWFkX29i amVjdCAqCi0rZmluZF90aHJlYWRfb2JqZWN0IChwdGlkX3QgcHRpZCkKLSt7Ci0rICBpbnQgcGlk OwotKyAgc3RydWN0IGluZmxpc3RfZW50cnkgKnA7Ci0rICBzdHJ1Y3QgdGhyZWFkbGlzdF9lbnRy eSAqcTsKLSsKLSsgIHBpZCA9IFBJREdFVCAocHRpZCk7Ci0rICBmb3IgKHAgPSBnZGJweV9pbmZl cmlvcl9saXN0OyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KQotKyAgICBpZiAocC0+aW5mX29iai0+ aW5mZXJpb3ItPnBpZCA9PSBwaWQpCi0rICAgICAgZm9yIChxID0gcC0+aW5mX29iai0+dGhyZWFk czsgcSAhPSBOVUxMOyBxID0gcS0+bmV4dCkKLSsJaWYgKHB0aWRfZXF1YWwgKHEtPnRocmVhZF9v YmotPnRocmVhZC0+cHRpZCwgcHRpZCkpCi0rCSAgcmV0dXJuIHEtPnRocmVhZF9vYmo7Ci0rCi0r ICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rDAotKwotKy8qIEluZmVyaW9yIG9iamVjdC4gICovCi0r Ci0rc3RhdGljIHZvaWQKLSthZGRfdGhyZWFkX29iamVjdCAoc3RydWN0IHRocmVhZF9pbmZvICp0 cCkKLSt7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSsgIHRocmVhZF9vYmplY3QgKnRo cmVhZF9vYmo7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZl9vYmo7Ci0rICBzdHJ1Y3QgdGhyZWFk bGlzdF9lbnRyeSAqZW50cnk7Ci0rCi0rICAvKiBOb3RlIHRoYXQgdGhlIGFyY2ggZG9lcyBub3Qg bWF0dGVyIGhlcmUsIGJlY2F1c2Ugd2UgY2FuJ3QgcnVuCi0rICAgICBhcmJpdHJhcnkgUHl0aG9u IGNvZGUuICBDYWxsaW5nIGdldF9jdXJyZW50X2FyY2ggaGVyZSB3aWxsCi0rICAgICBjcmFzaC4g ICovCi0rICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKHRhcmdldF9nZGJhcmNoLCBjdXJy ZW50X2xhbmd1YWdlKTsKLSsKLSsgIHRocmVhZF9vYmogPSBjcmVhdGVfdGhyZWFkX29iamVjdCAo dHApOwotKyAgaWYgKCF0aHJlYWRfb2JqKQotKyAgICB7Ci0rICAgICAgd2FybmluZyAoXygiQ2Fu J3QgY3JlYXRlIFB5dGhvbiBJbmZlcmlvclRocmVhZCBvYmplY3QuIikpOwotKyAgICAgIGdkYnB5 X3ByaW50X3N0YWNrICgpOwotKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSsgICAgICBy ZXR1cm47Ci0rICAgIH0KLSsKLSsgIGluZl9vYmogPSAoaW5mZXJpb3Jfb2JqZWN0ICopIHRocmVh ZF9vYmotPmluZl9vYmo7Ci0rCi0rICBlbnRyeSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHRo cmVhZGxpc3RfZW50cnkpKTsKLSsgIGVudHJ5LT50aHJlYWRfb2JqID0gdGhyZWFkX29iajsKLSsg IGVudHJ5LT5uZXh0ID0gaW5mX29iai0+dGhyZWFkczsKLSsKLSsgIGluZl9vYmotPnRocmVhZHMg PSBlbnRyeTsKLSsgIGluZl9vYmotPm50aHJlYWRzKys7Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xl YW51cCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rZGVsZXRlX3RocmVhZF9vYmplY3QgKHN0cnVj dCB0aHJlYWRfaW5mbyAqdHAsIGludCBpZ25vcmUpCi0rewotKyAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXA7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZl9vYmo7Ci0rICB0aHJlYWRfb2JqZWN0ICp0 aHJlYWRfb2JqOwotKyAgc3RydWN0IHRocmVhZGxpc3RfZW50cnkgKiplbnRyeSwgKnRtcDsKLSsK LSsgIGluZl9vYmogPSAoaW5mZXJpb3Jfb2JqZWN0ICopIGZpbmRfaW5mZXJpb3Jfb2JqZWN0IChQ SURHRVQodHAtPnB0aWQpKTsKLSsgIGlmICghaW5mX29iaikKLSsgICAgcmV0dXJuOwotKwotKyAg LyogRmluZCB0aHJlYWQgZW50cnkgaW4gaXRzIGluZmVyaW9yJ3MgdGhyZWFkX2xpc3QuICAqLwot KyAgZm9yIChlbnRyeSA9ICZpbmZfb2JqLT50aHJlYWRzOyAqZW50cnkgIT0gTlVMTDsgZW50cnkg PSAmKCplbnRyeSktPm5leHQpCi0rICAgIGlmICgoKmVudHJ5KS0+dGhyZWFkX29iai0+dGhyZWFk ID09IHRwKQotKyAgICAgIGJyZWFrOwotKwotKyAgaWYgKCEqZW50cnkpCi0rICAgIHJldHVybjsK LSsKLSsgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwg Y3VycmVudF9sYW5ndWFnZSk7Ci0rCi0rICB0bXAgPSAqZW50cnk7Ci0rICB0bXAtPnRocmVhZF9v YmotPnRocmVhZCA9IE5VTEw7Ci0rCi0rICAqZW50cnkgPSAoKmVudHJ5KS0+bmV4dDsKLSsgIGlu Zl9vYmotPm50aHJlYWRzLS07Ci0rCi0rICBQeV9ERUNSRUYgKHRtcC0+dGhyZWFkX29iaik7Ci0r ICB4ZnJlZSAodG1wKTsKLSsKLSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSt9Ci0rCi0r c3RhdGljIFB5T2JqZWN0ICoKLStpbmZweV90aHJlYWRzIChQeU9iamVjdCAqc2VsZiwgUHlPYmpl Y3QgKmFyZ3MpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgdGhyZWFkbGlzdF9lbnRyeSAqZW50 cnk7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZl9vYmogPSAoaW5mZXJpb3Jfb2JqZWN0ICopIHNl bGY7Ci0rICBQeU9iamVjdCAqdHVwbGU7Ci0rCi0rICBJTkZQWV9SRVFVSVJFX1ZBTElEIChpbmZf b2JqKTsKLSsKLSsKLSsgIHR1cGxlID0gUHlUdXBsZV9OZXcgKGluZl9vYmotPm50aHJlYWRzKTsK LSsgIGlmICghdHVwbGUpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyogVGhlIGxpc3QgaXMg aW4gcmV2ZXJzZSBvcmRlciBvZiB0aHJlYWQgYWdlIChpLmUuLCBuZXdlc3QgY29tZXMgZmlyc3Qp LAotKyAgICAgaXMgdGhpcyBhIHByb2JsZW0/ICAqLwotKyAgZm9yIChpID0gMCwgZW50cnkgPSBp bmZfb2JqLT50aHJlYWRzOyBpIDwgaW5mX29iai0+bnRocmVhZHM7Ci0rICAgICAgIGkrKywgZW50 cnkgPSBlbnRyeS0+bmV4dCkKLSsgICAgewotKyAgICAgIFB5X0lOQ1JFRiAoZW50cnktPnRocmVh ZF9vYmopOwotKyAgICAgIFB5VHVwbGVfU0VUX0lURU0gKHR1cGxlLCBpLCAoUHlPYmplY3QgKikg ZW50cnktPnRocmVhZF9vYmopOwotKyAgICB9Ci0rCi0rICByZXR1cm4gdHVwbGU7Ci0rfQotKwot K3N0YXRpYyBQeU9iamVjdCAqCi0raW5mcHlfZ2V0X251bSAoUHlPYmplY3QgKnNlbGYsIHZvaWQg KmNsb3N1cmUpCi0rewotKyAgaW5mZXJpb3Jfb2JqZWN0ICppbmYgPSAoaW5mZXJpb3Jfb2JqZWN0 ICopIHNlbGY7Ci0rCi0rICBJTkZQWV9SRVFVSVJFX1ZBTElEIChpbmYpOwotKwotKyAgcmV0dXJu IFB5TG9uZ19Gcm9tTG9uZyAoaW5mLT5pbmZlcmlvci0+bnVtKTsKLSt9Ci0rCi0rc3RhdGljIFB5 T2JqZWN0ICoKLStpbmZweV9nZXRfcGlkIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkK LSt7Ci0rICBpbmZlcmlvcl9vYmplY3QgKmluZiA9IChpbmZlcmlvcl9vYmplY3QgKikgc2VsZjsK LSsKLSsgIElORlBZX1JFUVVJUkVfVkFMSUQgKGluZik7Ci0rCi0rICByZXR1cm4gUHlMb25nX0Zy b21Mb25nIChpbmYtPmluZmVyaW9yLT5waWQpOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgot K2luZnB5X2dldF93YXNfYXR0YWNoZWQgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQot K3sKLSsgIGluZmVyaW9yX29iamVjdCAqaW5mID0gKGluZmVyaW9yX29iamVjdCAqKSBzZWxmOwot KyAgSU5GUFlfUkVRVUlSRV9WQUxJRCAoaW5mKTsKLSsgIGlmIChpbmYtPmluZmVyaW9yLT5hdHRh Y2hfZmxhZykKLSsgICAgUHlfUkVUVVJOX1RSVUU7Ci0rICBQeV9SRVRVUk5fRkFMU0U7Ci0rfQot KwotKwwKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuaW5mZXJpb3JzICgpIC0+IChnZGIu SW5mZXJpb3IsIC4uLikuCi0rICAgUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGluZmVyaW9ycy4gICov Ci0rCi0rUHlPYmplY3QgKgotK2dkYnB5X2luZmVyaW9ycyAoUHlPYmplY3QgKnVudXNlZCwgUHlP YmplY3QgKnVudXNlZDIpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgaW5mbGlzdF9lbnRyeSAq ZW50cnk7Ci0rICBQeU9iamVjdCAqdHVwbGU7Ci0rCi0rICB0dXBsZSA9IFB5VHVwbGVfTmV3IChu aW5mZXJpb3JzKTsKLSsgIGlmICghdHVwbGUpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyog VGhlIGxpc3QgaXMgaW4gcmV2ZXJzZSBvcmRlciBvZiBpbmZlcmlvciBhZ2UgKGkuZS4sIG5ld2Vz dCBjb21lcyBmaXJzdCksCi0rICAgICBpcyB0aGlzIGEgcHJvYmxlbT8gICovCi0rICBmb3IgKGkg PSAwLCBlbnRyeSA9IGdkYnB5X2luZmVyaW9yX2xpc3Q7Ci0rICAgICAgIGkgPCBuaW5mZXJpb3Jz OwotKyAgICAgICBpKyssIGVudHJ5ID0gZW50cnktPm5leHQpCi0rICAgIHsKLSsgICAgICBQeV9J TkNSRUYgKGVudHJ5LT5pbmZfb2JqKTsKLSsgICAgICBQeVR1cGxlX1NFVF9JVEVNICh0dXBsZSwg aSwgKFB5T2JqZWN0ICopIGVudHJ5LT5pbmZfb2JqKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHR1 cGxlOwotK30KLSsKLSsMCi0rCi0rLyogTWVtYnVmIGFuZCBtZW1vcnkgbWFuaXB1bGF0aW9uLiAg Ki8KLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIucmVhZF9tZW1vcnkgKGFkZHJlc3MsIGxl bmd0aCkuCi0rICAgUmV0dXJucyBhIFB5dGhvbiBidWZmZXIgb2JqZWN0IHdpdGggTEVOR1RIIGJ5 dGVzIG9mIHRoZSBpbmZlcmlvcidzIG1lbW9yeQotKyAgIGF0IEFERFJFU1MuIEJvdGggYXJndW1l bnRzIGFyZSBpbnRlZ2Vycy4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStpbmZweV9yZWFk X21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIGludCBlcnJv ciA9IDA7Ci0rICBDT1JFX0FERFIgYWRkciwgbGVuZ3RoOwotKyAgdm9pZCAqYnVmZmVyID0gTlVM TDsKLSsgIG1lbWJ1Zl9vYmplY3QgKm1lbWJ1Zl9vYmo7Ci0rICBQeU9iamVjdCAqYWRkcl9vYmos ICpsZW5ndGhfb2JqOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwotKyAgdm9sYXRpbGUg c3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotKwotKyAgaWYgKCEgUHlBcmdfUGFyc2VUdXBs ZSAoYXJncywgIk9PIiwgJmFkZHJfb2JqLCAmbGVuZ3RoX29iaikpCi0rICAgIHJldHVybiBOVUxM OwotKwotKyAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7Ci0r Ci0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAg aWYgKCFnZXRfYWRkcl9mcm9tX3B5dGhvbiAoYWRkcl9vYmosICZhZGRyKQotKwkgIHx8ICFnZXRf YWRkcl9mcm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsKLSsJICBlcnJvciA9 IDE7Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBidWZmZXIgPSB4bWFsbG9jIChsZW5ndGgp OwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1ZmZlcik7Ci0rCi0rICAgICAgcmVhZF9t ZW1vcnkgKGFkZHIsIGJ1ZmZlciwgbGVuZ3RoKTsKLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9F WENFUFRJT04gKGV4Y2VwdCk7Ci0rCi0rICBpZiAoZXJyb3IpCi0rICAgIHsKLSsgICAgICBkb19j bGVhbnVwcyAoY2xlYW51cHMpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICBt ZW1idWZfb2JqID0gUHlPYmplY3RfTmV3IChtZW1idWZfb2JqZWN0LCAmbWVtYnVmX29iamVjdF90 eXBlKTsKLSsgIGlmIChtZW1idWZfb2JqID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBQeUVycl9T ZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVycm9yLAotKwkJICAgICAgICJDb3VsZCBub3QgYWxsb2Nh dGUgbWVtb3J5IGJ1ZmZlciBvYmplY3QuIik7Ci0rICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXBz KTsKLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAgZGlzY2FyZF9jbGVhbnVwcyAo Y2xlYW51cHMpOwotKwotKyAgbWVtYnVmX29iai0+YnVmZmVyID0gYnVmZmVyOwotKyAgbWVtYnVm X29iai0+YWRkciA9IGFkZHI7Ci0rICBtZW1idWZfb2JqLT5sZW5ndGggPSBsZW5ndGg7Ci0rCi0r ICByZXR1cm4gUHlCdWZmZXJfRnJvbVJlYWRXcml0ZU9iamVjdCAoKFB5T2JqZWN0ICopIG1lbWJ1 Zl9vYmosIDAsCi0rCQkJCSAgICAgICBQeV9FTkRfT0ZfQlVGRkVSKTsKLSt9Ci0rCi0rLyogSW1w bGVtZW50YXRpb24gb2YgZ2RiLndyaXRlX21lbW9yeSAoYWRkcmVzcywgYnVmZmVyIFssIGxlbmd0 aF0pLgotKyAgIFdyaXRlcyB0aGUgY29udGVudHMgb2YgQlVGRkVSIChhIFB5dGhvbiBvYmplY3Qg c3VwcG9ydGluZyB0aGUgcmVhZCBidWZmZXIKLSsgICBwcm90b2NvbCkgYXQgQUREUkVTUyBpbiB0 aGUgaW5mZXJpb3IncyBtZW1vcnkuICBXcml0ZSBMRU5HVEggYnl0ZXMgZnJvbQotKyAgIEJVRkZF Uiwgb3IgaXRzIGVudGlyZSBjb250ZW50cyBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHByb3ZpZGVk LiAgVGhlCi0rICAgZnVuY3Rpb24gcmV0dXJucyBub3RoaW5nLiAgKi8KLSsKLStzdGF0aWMgUHlP YmplY3QgKgotK2luZnB5X3dyaXRlX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICph cmdzKQotK3sKLSsgIGludCBidWZfbGVuLCBlcnJvciA9IDA7Ci0rICBjb25zdCBjaGFyICpidWZm ZXI7Ci0rICBDT1JFX0FERFIgYWRkciwgbGVuZ3RoOwotKyAgUHlPYmplY3QgKmFkZHJfb2JqLCAq bGVuZ3RoX29iaiA9IE5VTEw7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNl cHQ7Ci0rCi0rICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiT3MjfE8iLCAmYWRkcl9v YmosICZidWZmZXIsICZidWZfbGVuLAotKwkJCSAgJmxlbmd0aF9vYmopKQotKyAgICByZXR1cm4g TlVMTDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsK LSsgICAgICBpZiAoIWdldF9hZGRyX2Zyb21fcHl0aG9uIChhZGRyX29iaiwgJmFkZHIpKQotKwl7 Ci0rCSAgZXJyb3IgPSAxOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgICAgCi0rICAgICAgaWYgKCFs ZW5ndGhfb2JqKQotKwlsZW5ndGggPSBidWZfbGVuOwotKyAgICAgIGVsc2UgaWYgKCFnZXRfYWRk cl9mcm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsKLSsJICBlcnJvciA9IDE7 Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICB3cml0ZV9tZW1vcnkgKGFkZHIsIGJ1ZmZlciwg bGVuZ3RoKTsKLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7Ci0r Ci0rICBpZiAoZXJyb3IpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgUHlfUkVUVVJOX05PTkU7 Ci0rfQotKwotKy8qIERlc3RydWN0b3Igb2YgTWVtYnVmIG9iamVjdHMuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rbWJweV9kZWFsbG9jIChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICB4ZnJlZSAoKCht ZW1idWZfb2JqZWN0ICopIHNlbGYpLT5idWZmZXIpOwotKyAgc2VsZi0+b2JfdHlwZS0+dHBfZnJl ZSAoc2VsZik7Ci0rfQotKwotKy8qIFJldHVybiBhIGRlc2NyaXB0aW9uIG9mIHRoZSBNZW1idWYg b2JqZWN0LiAgKi8KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK21icHlfc3RyIChQeU9iamVjdCAq c2VsZikKLSt7Ci0rICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1lbWJ1Zl9vYmplY3Qg Kikgc2VsZjsKLSsKLSsgIHJldHVybiBQeVN0cmluZ19Gcm9tRm9ybWF0ICgibWVtb3J5IGJ1ZmZl ciBmb3IgYWRkcmVzcyAlcywgJXMgYnl0ZXMgbG9uZyIsCi0rCQkJICAgICAgcGFkZHJlc3MgKHB5 dGhvbl9nZGJhcmNoLCBtZW1idWZfb2JqLT5hZGRyKSwKLSsJCQkgICAgICBwdWxvbmdlc3QgKG1l bWJ1Zl9vYmotPmxlbmd0aCkpOwotK30KLSsKLStzdGF0aWMgUHlfc3NpemVfdAotK2dldF9yZWFk X2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3Qgc2VnbWVudCwgdm9pZCAqKnB0cnB0 cikKLSt7Ci0rICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1lbWJ1Zl9vYmplY3QgKikg c2VsZjsKLSsKLSsgIGlmIChzZWdtZW50KQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5n IChQeUV4Y19TeXN0ZW1FcnJvciwKLSsJCSAgICAgICAiVGhlIG1lbW9yeSBidWZmZXIgc3VwcG9y dHMgb25seSBvbmUgc2VnbWVudC4iKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsKLSsg ICpwdHJwdHIgPSBtZW1idWZfb2JqLT5idWZmZXI7Ci0rCi0rICByZXR1cm4gbWVtYnVmX29iai0+ bGVuZ3RoOwotK30KLSsKLStzdGF0aWMgUHlfc3NpemVfdAotK2dldF93cml0ZV9idWZmZXIgKFB5 T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IHNlZ21lbnQsIHZvaWQgKipwdHJwdHIpCi0rewotKyAg cmV0dXJuIGdldF9yZWFkX2J1ZmZlciAoc2VsZiwgc2VnbWVudCwgcHRycHRyKTsKLSt9Ci0rCi0r c3RhdGljIFB5X3NzaXplX3QKLStnZXRfc2VnX2NvdW50IChQeU9iamVjdCAqc2VsZiwgUHlfc3Np emVfdCAqbGVucCkKLSt7Ci0rICBpZiAobGVucCkKLSsgICAgKmxlbnAgPSAoKG1lbWJ1Zl9vYmpl Y3QgKikgc2VsZiktPmxlbmd0aDsKLSsKLSsgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgUHlf c3NpemVfdAotK2dldF9jaGFyX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3Qgc2Vn bWVudCwgY2hhciAqKnB0cnB0cikKLSt7Ci0rICB2b2lkICpwdHIgPSBOVUxMOwotKyAgUHlfc3Np emVfdCByZXQ7Ci0rCi0rICByZXQgPSBnZXRfcmVhZF9idWZmZXIgKHNlbGYsIHNlZ21lbnQsICZw dHIpOwotKyAgKnB0cnB0ciA9IChjaGFyICopIHB0cjsKLSsKLSsgIHJldHVybiByZXQ7Ci0rfQot KwotKy8qIEFkZHMgR0RCIHZhbHVlIFYgdG8gdGhlIHBhdHRlcm4gYnVmZmVyIGluICpQQVRURVJO X0JVRi4gIElmIFNJWkUgaXMgbm90IHplcm8sCi0rICAgaXQgc3BlY2lmaWVzIHRoZSBudW1iZXIg b2YgYnl0ZXMgZnJvbSBWIHRvIGNvcHkgdG8gKlBBVFRFUk5fQlVGLiAgVGhlCi0rICAgZnVuY3Rp b24gaW5jcmVhc2VzIHRoZSBzaXplIG9mICpQQVRURVJOX0JVRiBhcyBuZWNlc3NhcnksIGFkanVz dGluZwotKyAgICpQQVRURVJOX0JVRl9FTkQgYW5kICpQQVRURVJOX0JVRl9TSVpFIGluIHRoZSBw cm9jZXNzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2FkZF92YWx1ZV9wYXR0ZXJuIChzdHJ1Y3Qg dmFsdWUgKnYsIGludCBzaXplLCBjaGFyICoqcGF0dGVybl9idWYsCi0rCQkgICBjaGFyICoqcGF0 dGVybl9idWZfZW5kLCBVTE9OR0VTVCAqcGF0dGVybl9idWZfc2l6ZSkKLSt7Ci0rICBpbnQgdmFs X2J5dGVzOwotKwotKyAgaWYgKHNpemUpCi0rICAgIHsKLSsgICAgICBMT05HRVNUIHggPSB2YWx1 ZV9hc19sb25nICh2KTsKLSsKLSsgICAgICBpZiAoc2l6ZSA9PSAxKQotKwkqKCpwYXR0ZXJuX2J1 Zl9lbmQpKysgPSB4OwotKyAgICAgIGVsc2UKLSsJewotKwkgIHB1dF9iaXRzICh4LCAqcGF0dGVy bl9idWZfZW5kLCBzaXplICogOCwKLSsJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKHB5dGhvbl9n ZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRyk7Ci0rCSAgKnBhdHRlcm5fYnVmX2VuZCArPSBzaXpl OwotKwl9Ci0rICAgIH0KLSsgIGVsc2UKLSsgICB7Ci0rICAgICB2YWxfYnl0ZXMgPSBUWVBFX0xF TkdUSCAodmFsdWVfdHlwZSAodikpOwotKwotKyAgICAgaW5jcmVhc2VfcGF0dGVybl9idWZmZXIg KHBhdHRlcm5fYnVmLCBwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJICAgICAgcGF0dGVybl9idWZfc2l6 ZSwgdmFsX2J5dGVzKTsKLSsKLSsgICAgIG1lbWNweSAoKnBhdHRlcm5fYnVmX2VuZCwgdmFsdWVf Y29udGVudHNfcmF3ICh2KSwgdmFsX2J5dGVzKTsKLSsgICAgICpwYXR0ZXJuX2J1Zl9lbmQgKz0g dmFsX2J5dGVzOwotKyAgIH0KLSt9Ci0rCi0rLyogVGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBhY3R1 YWwgd29yayBvZiBjb25zdHJ1Y3RpbmcgdGhlIHBhdHRlcm4gYnVmZmVyIGZyb20KLSsgICBPQkou ICBJZiBPQkogaXMgYW4gb2JqZWN0IHdoaWNoIGltcGxlbWVudHMgdGhlIHJlYWQgYnVmZmVyIHBy b3RvY29sIChzdWNoCi0rICAgYXMgYSBzdHJpbmcsIGEgYnl0ZSBhcnJheSBvciBnZGIuTWVtYnVm KSwgdGhlbiBpdHMgY29udGVudHMgYXJlIGRpcmVjdGx5Ci0rICAgY29waWVkIHRvICpQQVRURVJO X0JVRi4gIElmIGl0IGlzIGEgbGlzdCwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIHJlY3Vyc2l2ZWx5 Ci0rICAgY2FsbGVkIGZvciBlYWNoIG9mIGl0cyBlbGVtZW50cy4gIElmIE9CSiBpcyBhbiBvYmpl Y3Qgd2hpY2ggY2FuIGJlIGNvbnZlcnRlZAotKyAgIHRvIGEgR0RCIHZhbHVlLCB0aGVuIHRoZSBj b250ZW50cyBvZiB0aGUgdmFsdWUgYXJlIGNvcGllZCB0byBQQVRURVJOX0JVRi4KLSsgICBJZiBT SVpFIGlzIGRpZmZlcmVudCB0aGFuIHplcm8sIHRoZW4gaXQgbGltaXRzIHRoZSBudW1iZXIgb2Yg Ynl0ZXMgd2hpY2gKLSsgICBhcmUgY29waWVkIHRvIHRoZSBidWZmZXIgaW4gY2FzZSBPQkogaXMg Y29udmVydGVkIHRvIGEgR0RCIHZhbHVlLiAgVGhhdAotKyAgIG1lYW5zIHRoYXQgU0laRSBpbmZs dWVuY2VzIG9ubHkgUHl0aG9uIHNjYWxhcnMgYW5kIGdkYi5WYWx1ZSBvYmplY3RzLgotKyAgIFRo ZSBmdW5jdGlvbiBpbmNyZWFzZXMgdGhlIHNpemUgb2YgKlBBVFRFUk5fQlVGIGFzIG5lY2Vzc2Fy eSwgYWRqdXN0aW5nCi0rICAgKlBBVFRFUk5fQlVGX0VORCBhbmQgKlBBVFRFUk5fQlVGX1NJWkUg aW4gdGhlIHByb2Nlc3MuCi0rCi0rICAgUmV0dXJucyAxIG9uIHN1Y2Nlc3Mgb3IgMCBvbiBmYWls dXJlLCB3aXRoIGEgUHl0aG9uIGV4Y2VwdGlvbiBzZXQuICBUaGlzCi0rICAgZnVuY3Rpb24gY2Fu IGFsc28gdGhyb3cgR0RCIGV4Y2VwdGlvbnMuICAqLwotKwotK3N0YXRpYyBpbnQKLSthZGRfcGF0 dGVybl9lbGVtZW50IChQeU9iamVjdCAqb2JqLCBpbnQgc2l6ZSwgY2hhciAqKnBhdHRlcm5fYnVm LAotKwkJICAgICBjaGFyICoqcGF0dGVybl9idWZfZW5kLCBVTE9OR0VTVCAqcGF0dGVybl9idWZf c2l6ZSkKLSt7Ci0rICBpZiAoUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyIChvYmopKQotKyAgICB7 Ci0rICAgICAgLyogSGFuZGxlIHN0cmluZywgVW5pY29kZSBzdHJpbmcsIGJ5dGUgYXJyYXksIGdk Yi5NZW1idWYgYW5kIGFueSBvdGhlcgotKyAgICAgICAgIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhl IGJ1ZmZlciBwcm90b2NvbC4gIFRoZSBTSVpFIHBhcmFtZXRlciBpcwotKwkgaWdub3JlZCBpbiB0 aGlzIGNhc2UuICAqLwotKwotKyAgICAgIFB5X3NzaXplX3QgdmFsX2J5dGVzOwotKyAgICAgIGNv bnN0IHZvaWQgKmJ1ZmZlcjsKLSsKLSsgICAgICBpZiAoUHlPYmplY3RfQXNSZWFkQnVmZmVyIChv YmosICZidWZmZXIsICZ2YWxfYnl0ZXMpID09IC0xKQotKwlyZXR1cm4gMDsKLSsKLSsgICAgICBp bmNyZWFzZV9wYXR0ZXJuX2J1ZmZlciAocGF0dGVybl9idWYsIHBhdHRlcm5fYnVmX2VuZCwKLSsJ CQkgICAgICAgcGF0dGVybl9idWZfc2l6ZSwgdmFsX2J5dGVzKTsKLSsKLSsgICAgICBtZW1jcHkg KCpwYXR0ZXJuX2J1Zl9lbmQsIGJ1ZmZlciwgdmFsX2J5dGVzKTsKLSsgICAgICAqcGF0dGVybl9i dWZfZW5kICs9IHZhbF9ieXRlczsKLSsgICAgfQotKyAgZWxzZSBpZiAoZ2RicHlfaXNfdmFsdWVf b2JqZWN0IChvYmopKQotKyAgICBhZGRfdmFsdWVfcGF0dGVybiAodmFsdWVfb2JqZWN0X3RvX3Zh bHVlIChvYmopLCBzaXplLCBwYXR0ZXJuX2J1ZiwKLSsJCSAgICAgICBwYXR0ZXJuX2J1Zl9lbmQs IHBhdHRlcm5fYnVmX3NpemUpOwotKyAgZWxzZSBpZiAoUHlTZXF1ZW5jZV9DaGVjayAob2JqKSkK LSsgICAgewotKyAgICAgIC8qIEhhbmRsZSBsaXN0cyBhbmQgdHVwbGVzLiAgKi8KLSsKLSsgICAg ICBQeV9zc2l6ZV90IGksIG51bV9vYmpzOwotKwotKyAgICAgIG51bV9vYmpzID0gUHlTZXF1ZW5j ZV9TaXplIChvYmopOwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fb2JqczsgaSsrKQotKwlp ZiAoIWFkZF9wYXR0ZXJuX2VsZW1lbnQgKFB5U2VxdWVuY2VfR2V0SXRlbSAob2JqLCBpKSwgc2l6 ZSwKLSsJCQkJICBwYXR0ZXJuX2J1ZiwgcGF0dGVybl9idWZfZW5kLAotKwkJCQkgIHBhdHRlcm5f YnVmX3NpemUpKQotKwkgIHJldHVybiAwOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAg ICAvKiBTZWUgaWYgd2UgY2FuIGNvbnZlcnQgZnJvbSBhIFB5dGhvbiBvYmplY3QgdG8gYSBHREIg dmFsdWUuICAqLwotKwotKyAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IGNvbnZlcnRfdmFsdWVfZnJv bV9weXRob24gKG9iaik7Ci0rCi0rICAgICAgaWYgKHYpCi0rCWFkZF92YWx1ZV9wYXR0ZXJuICh2 LCBzaXplLCBwYXR0ZXJuX2J1ZiwgcGF0dGVybl9idWZfZW5kLAotKwkJCSAgIHBhdHRlcm5fYnVm X3NpemUpOwotKyAgICAgIGVsc2UKLSsJcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAx OwotK30KLSsKLSsvKiBDb25zdHJ1Y3RzIHRoZSBzZWFyY2ggcGF0dGVybiBmcm9tIE9CSiwgcHV0 dGluZyBpdCBpbiAqUEFUVEVSTl9CVUZQLCBhbmQgaXRzCi0rICAgc2l6ZSBpbiAqUEFUVEVSTl9M RU5QLiAgU2VlIHRoZSBmdW5jdGlvbiBhZGRfcGF0dGVybl9lbGVtZW50IHRvIGxlYXJuIGhvdwot KyAgIHRoZSBzZWFyY2ggcGF0dGVybiBpcyBvYnRhaW5lZCBmcm9tIE9CSi4KLSsKLSsgICBSZXR1 cm5zIDEgb24gc3VjY2VzcyBvciAwIG9uIGZhaWx1cmUsIHdpdGggYSBQeXRob24gZXhjZXB0aW9u IHNldC4gIFRoaXMKLSsgICBmdW5jdGlvbiBjYW4gYWxzbyB0aHJvdyBHREIgZXhjZXB0aW9ucy4g ICovCi0rCi0rc3RhdGljIGludAotK2dldF9zZWFyY2hfcGF0dGVybiAoUHlPYmplY3QgKm9iaiwg aW50IHNpemUsIGNoYXIgKipwYXR0ZXJuX2J1ZnAsCi0rCQkgICAgVUxPTkdFU1QgKnBhdHRlcm5f bGVucCkKLSt7Ci0rICAvKiBCdWZmZXIgdG8gaG9sZCB0aGUgc2VhcmNoIHBhdHRlcm4uICAqLwot KyAgY2hhciAqcGF0dGVybl9idWY7Ci0rICAvKiBDdXJyZW50IHNpemUgb2Ygc2VhcmNoIHBhdHRl cm4gYnVmZmVyLgotKyAgICAgV2UgcmVhbGxvYyBzcGFjZSBhcyBuZWVkZWQuICAqLwotKyAgVUxP TkdFU1QgcGF0dGVybl9idWZfc2l6ZTsKLSsgIC8qIFBvaW50ZXIgdG8gb25lIHBhc3QgdGhlIGxh c3QgaW4tdXNlIHBhcnQgb2YgcGF0dGVybl9idWYuICAqLwotKyAgY2hhciAqcGF0dGVybl9idWZf ZW5kOwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVwczsKLSsKLSsgIGFsbG9jYXRlX3Bh dHRlcm5fYnVmZmVyICgmcGF0dGVybl9idWYsICZwYXR0ZXJuX2J1Zl9lbmQsICZwYXR0ZXJuX2J1 Zl9zaXplKTsKLSsgIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2Nv bnRlbnRzLCAmcGF0dGVybl9idWYpOwotKwotKyAgaWYgKCFhZGRfcGF0dGVybl9lbGVtZW50IChv YmosIHNpemUsICZwYXR0ZXJuX2J1ZiwgJnBhdHRlcm5fYnVmX2VuZCwKLSsJCQkgICAgJnBhdHRl cm5fYnVmX3NpemUpKQotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7 Ci0rCi0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsgICpwYXR0ZXJuX2J1ZnAgPSBwYXR0 ZXJuX2J1ZjsKLSsgICpwYXR0ZXJuX2xlbnAgPSBwYXR0ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1 ZjsKLSsKLSsgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7Ci0rCi0rICByZXR1cm4g MTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YKLSsgICBnZGIuc2VhcmNoX21lbW9yeSAo YWRkcmVzcywgbGVuZ3RoLCBwYXR0ZXJuIFssIHNpemVdIFssIG1heF9jb3VudF0pLgotKyAgIFRo ZSB0aGlyZCBhcmd1bWVudCBtYXkgYmUgZWl0aGVyIGEgcGF0dGVybiwgb3IgYSBsaXN0IG9yIHR1 cHBsZSBvZiBwYXR0ZXJucwotKyAgIHRvIGJlIHNlYXJjaGVkLiAgU2l6ZSBpcyB0aGUgc2l6ZSBp biBieXRlcyBvZiBlYWNoIHNlYXJjaCBxdWVyeSB2YWx1ZSwgZWl0aGVyCi0rICAgMSwgMiwgNCBv ciA4LiAgUmV0dXJucyBhIGxpc3Qgb2YgdGhlIGFkZHJlc3NlcyB3aGVyZSBtYXRjaGVzIHdlcmUg Zm91bmQuICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0raW5mcHlfc2VhcmNoX21lbW9yeSAo UHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCi0rewotKyAgaW50 IHNpemUgPSAwOwotKyAgdW5zaWduZWQgaW50IGZvdW5kX2NvdW50ID0gMDsKLSsgIGxvbmcgbWF4 X2NvdW50ID0gMDsKLSsgIENPUkVfQUREUiBzdGFydF9hZGRyLCBsZW5ndGg7Ci0rICBjaGFyICpw YXR0ZXJuX2J1ZjsKLSsgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyAiYWRkcmVzcyIsICJs ZW5ndGgiLCAicGF0dGVybiIsICJzaXplIiwKLSsJCQkgICAgICAibWF4X2NvdW50IiwgTlVMTCB9 OwotKyAgVUxPTkdFU1QgcGF0dGVybl9sZW4sIHNlYXJjaF9zcGFjZV9sZW47Ci0rICBQeU9iamVj dCAqcGF0dGVybiwgKmxpc3QgPSBOVUxMLCAqc3RhcnRfYWRkcl9vYmosICpsZW5ndGhfb2JqOwot KyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotKwotKyAgaWYgKCEgUHlB cmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIChhcmdzLCBrdywgIk9PT3xpbCIsIGtleXdvcmRzLAot KwkJCQkgICAgICZzdGFydF9hZGRyX29iaiwgJmxlbmd0aF9vYmosICZwYXR0ZXJuLAotKwkJCQkg ICAgICZzaXplLCAmbWF4X2NvdW50KSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBpZiAoIW1h eF9jb3VudCkKLSsgICAgbWF4X2NvdW50ID0gTE9OR19NQVg7Ci0rCi0rICBpZiAoc2l6ZSAhPSAw ICYmIHNpemUgIT0gMSAmJiBzaXplICE9IDIgJiYgc2l6ZSAhPSA0ICYmIHNpemUgIT0gOCkKLSsg ICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQg cGF0dGVybiBzaXplIik7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIFRSWV9D QVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBpZiAoZ2V0X2Fk ZHJfZnJvbV9weXRob24gKHN0YXJ0X2FkZHJfb2JqLCAmc3RhcnRfYWRkcikKLSsJICAmJiBnZXRf YWRkcl9mcm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsKLSsJICBpZiAoIWxl bmd0aCkKLSsJICAgIHsKLSsJICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19WYWx1ZUVycm9y LCAiZW1wdHkgc2VhcmNoIHJhbmdlIik7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwkgIC8q IFdhdGNoIGZvciBvdmVyZmxvd3MuICAqLwotKwkgIGVsc2UgaWYgKGxlbmd0aCA+IENPUkVfQURE Ul9NQVgKLSsJCSAgIHx8IChzdGFydF9hZGRyICsgbGVuZ3RoIC0gMSkgPCBzdGFydF9hZGRyKQot KwkgICAgewotKwkgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1ZhbHVlRXJyb3IsICJzZWFy Y2ggcmFuZ2UgdG9vIGxhcmdlIik7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwotKwkgIHNl YXJjaF9zcGFjZV9sZW4gPSBsZW5ndGg7Ci0rCi0rCSAgaWYgKGdldF9zZWFyY2hfcGF0dGVybiAo cGF0dGVybiwgc2l6ZSwgJnBhdHRlcm5fYnVmLCAmcGF0dGVybl9sZW4pKQotKwkgICAgewotKwkg ICAgICAvKiBBbnkgY2xlYW51cHMgZ2V0IGF1dG9tYXRpY2FsbHkgZXhlY3V0ZWQgb24gYW4gZXhj ZXB0aW9uLiAgKi8KLSsJICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVh bnVwICh4ZnJlZSwgcGF0dGVybl9idWYpOwotKwotKwkgICAgICBsaXN0ID0gUHlMaXN0X05ldyAo MCk7Ci0rCi0rCSAgICAgIHdoaWxlIChzZWFyY2hfc3BhY2VfbGVuID49IHBhdHRlcm5fbGVuICYm IGZvdW5kX2NvdW50IDwgbWF4X2NvdW50KQotKwkJewotKwkJICBDT1JFX0FERFIgZm91bmRfYWRk cjsKLSsJCSAgaW50IGZvdW5kOwotKwotKwkJICBmb3VuZCA9IHNlYXJjaF9tZW1vcnkgKCZzdGFy dF9hZGRyLCAmc2VhcmNoX3NwYWNlX2xlbiwKLSsJCQkJCSBwYXR0ZXJuX2J1ZiwgcGF0dGVybl9s ZW4sICZmb3VuZF9hZGRyKTsKLSsJCSAgaWYgKGZvdW5kIDw9IDApCi0rCQkgICAgYnJlYWs7Ci0r Ci0rCQkgIFB5TGlzdF9BcHBlbmQgKGxpc3QsIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nIChmb3Vu ZF9hZGRyKSk7Ci0rCQkgICsrZm91bmRfY291bnQ7Ci0rCQl9Ci0rCi0rCSAgICAgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9F WENFUFRJT04gKGV4Y2VwdCk7Ci0rCi0rICByZXR1cm4gbGlzdDsKLSt9Ci0rCi0rDAotKwotK3Zv aWQKLStnZGJweV9pbml0aWFsaXplX2luZmVyaW9yICh2b2lkKQotK3sKLSsgIGlmIChQeVR5cGVf UmVhZHkgKCZpbmZlcmlvcl9vYmplY3RfdHlwZSkgPCAwKQotKyAgICByZXR1cm47Ci0rCi0rICBQ eV9JTkNSRUYgKCZpbmZlcmlvcl9vYmplY3RfdHlwZSk7Ci0rICBQeU1vZHVsZV9BZGRPYmplY3Qg KGdkYl9tb2R1bGUsICJJbmZlcmlvciIsCi0rCQkgICAgICAoUHlPYmplY3QgKikgJmluZmVyaW9y X29iamVjdF90eXBlKTsKLSsKLSsgIGdkYnB5X2luZmVyaW9yX2xpc3QgPSBOVUxMOwotKyAgbmlu ZmVyaW9ycyA9IDA7Ci0rCi0rICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJpb3JfYXBwZWFyZWQgKGFk ZF9pbmZlcmlvcl9vYmplY3QpOwotKyAgb2JzZXJ2ZXJfYXR0YWNoX2luZmVyaW9yX2V4aXQgKGRl bGV0ZV9pbmZlcmlvcl9vYmplY3QpOwotKyAgb2JzZXJ2ZXJfYXR0YWNoX25ld190aHJlYWQgKGFk ZF90aHJlYWRfb2JqZWN0KTsKLSsgIG9ic2VydmVyX2F0dGFjaF90aHJlYWRfZXhpdCAoZGVsZXRl X3RocmVhZF9vYmplY3QpOwotKwotKyAgaWYgKFB5VHlwZV9SZWFkeSAoJm1lbWJ1Zl9vYmplY3Rf dHlwZSkgPCAwKQotKyAgICByZXR1cm47Ci0rCi0rICBQeV9JTkNSRUYgKCZtZW1idWZfb2JqZWN0 X3R5cGUpOwotKyAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiTWVtYnVmIiwgKFB5 T2JqZWN0ICopICZtZW1idWZfb2JqZWN0X3R5cGUpOwotK30KLSsKLSsMCi0rCi0rc3RhdGljIFB5 R2V0U2V0RGVmIGluZmVyaW9yX29iamVjdF9nZXRzZXRbXSA9Ci0rewotKyAgeyAibnVtIiwgaW5m cHlfZ2V0X251bSwgTlVMTCwgIklEIG9mIGluZmVyaW9yLCBhcyBhc3NpZ25lZCBieSBHREIuIiwg TlVMTCB9LAotKyAgeyAicGlkIiwgaW5mcHlfZ2V0X3BpZCwgTlVMTCwgIlBJRCBvZiBpbmZlcmlv ciwgYXMgYXNzaWduZWQgYnkgdGhlIE9TLiIsCi0rICAgIE5VTEwgfSwKLSsgIHsgIndhc19hdHRh Y2hlZCIsIGluZnB5X2dldF93YXNfYXR0YWNoZWQsIE5VTEwsCi0rICAgICJUcnVlIGlmIHRoZSBp bmZlcmlvciB3YXMgY3JlYXRlZCB1c2luZyAnYXR0YWNoJy4iLCBOVUxMIH0sCi0rCi0rICB7IE5V TEwgfQotK307Ci0rCi0rc3RhdGljIFB5TWV0aG9kRGVmIGluZmVyaW9yX29iamVjdF9tZXRob2Rz W10gPQotK3sKLSsgIHsgInRocmVhZHMiLCBpbmZweV90aHJlYWRzLCBNRVRIX05PQVJHUywKLSsg ICAgIlJldHVybiBhbGwgdGhlIHRocmVhZHMgb2YgdGhpcyBpbmZlcmlvci4iIH0sCi0rCi0rICB7 ICJyZWFkX21lbW9yeSIsIGluZnB5X3JlYWRfbWVtb3J5LCBNRVRIX1ZBUkFSR1MsCi0rICAgICJy ZWFkX21lbW9yeSAoYWRkcmVzcywgbGVuZ3RoKSAtPiBidWZmZXJcblwKLStSZXR1cm4gYSBidWZm ZXIgb2JqZWN0IGZvciByZWFkaW5nIGZyb20gdGhlIGluZmVyaW9yJ3MgbWVtb3J5LiIgfSwKLSsg IHsgIndyaXRlX21lbW9yeSIsIGluZnB5X3dyaXRlX21lbW9yeSwgTUVUSF9WQVJBUkdTLAotKyAg ICAid3JpdGVfbWVtb3J5IChhZGRyZXNzLCBidWZmZXIgWywgbGVuZ3RoXSlcblwKLStXcml0ZSB0 aGUgZ2l2ZW4gYnVmZmVyIG9iamVjdCB0byB0aGUgaW5mZXJpb3IncyBtZW1vcnkuIiB9LAotKyAg eyAic2VhcmNoX21lbW9yeSIsIChQeUNGdW5jdGlvbikgaW5mcHlfc2VhcmNoX21lbW9yeSwgTUVU SF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSsgICAgInNlYXJjaF9tZW1vcnkgKGFkZHJlc3Ms IGxlbmd0aCwgcGF0dGVybiBbLCBzaXplXSBbLCBtYXhfY291bnRdKSAtPiBsaXN0XG5cCi0rUmV0 dXJuIGEgbGlzdCB3aXRoIHRoZSBhZGRyZXNzZXMgd2hlcmUgbWF0Y2hlcyB3ZXJlIGZvdW5kLiIg fSwKLSsKLSsgIHsgTlVMTCB9Ci0rfTsKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IGluZmVyaW9y X29iamVjdF90eXBlID0KLSt7Ci0rICBQeU9iamVjdF9IRUFEX0lOSVQgKE5VTEwpCi0rICAwLAkJ CQkgIC8qIG9iX3NpemUgKi8KLSsgICJnZGIuSW5mZXJpb3IiLAkJICAvKiB0cF9uYW1lICovCi0r ICBzaXplb2YgKGluZmVyaW9yX29iamVjdCksCSAgLyogdHBfYmFzaWNzaXplICovCi0rICAwLAkJ CQkgIC8qIHRwX2l0ZW1zaXplICovCi0rICAwLAkJCQkgIC8qIHRwX2RlYWxsb2MgKi8KLSsgIDAs CQkJCSAgLyogdHBfcHJpbnQgKi8KLSsgIDAsCQkJCSAgLyogdHBfZ2V0YXR0ciAqLwotKyAgMCwJ CQkJICAvKiB0cF9zZXRhdHRyICovCi0rICAwLAkJCQkgIC8qIHRwX2NvbXBhcmUgKi8KLSsgIDAs CQkJCSAgLyogdHBfcmVwciAqLwotKyAgMCwJCQkJICAvKiB0cF9hc19udW1iZXIgKi8KLSsgIDAs CQkJCSAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSsgIDAsCQkJCSAgLyogdHBfYXNfbWFwcGluZyAq LwotKyAgMCwJCQkJICAvKiB0cF9oYXNoICAqLwotKyAgMCwJCQkJICAvKiB0cF9jYWxsICovCi0r ICAwLAkJCQkgIC8qIHRwX3N0ciAqLwotKyAgMCwJCQkJICAvKiB0cF9nZXRhdHRybyAqLwotKyAg MCwJCQkJICAvKiB0cF9zZXRhdHRybyAqLwotKyAgMCwJCQkJICAvKiB0cF9hc19idWZmZXIgKi8K LSsgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9JVEVSLCAgLyogdHBfZmxh Z3MgKi8KLSsgICJHREIgaW5mZXJpb3Igb2JqZWN0IiwJICAvKiB0cF9kb2MgKi8KLSsgIDAsCQkJ CSAgLyogdHBfdHJhdmVyc2UgKi8KLSsgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KLSsgIDAsCQkJ CSAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSsgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQg Ki8KLSsgIDAsCQkJCSAgLyogdHBfaXRlciAqLwotKyAgMCwJCQkJICAvKiB0cF9pdGVybmV4dCAq LwotKyAgaW5mZXJpb3Jfb2JqZWN0X21ldGhvZHMsCSAgLyogdHBfbWV0aG9kcyAqLwotKyAgMCwJ CQkJICAvKiB0cF9tZW1iZXJzICovCi0rICBpbmZlcmlvcl9vYmplY3RfZ2V0c2V0LAkgIC8qIHRw X2dldHNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9iYXNlICovCi0rICAwLAkJCQkgIC8qIHRwX2Rp Y3QgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGVzY3JfZ2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2Rl c2NyX3NldCAqLwotKyAgMCwJCQkJICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0rICAwLAkJCQkgIC8q IHRwX2luaXQgKi8KLSsgIDAJCQkJICAvKiB0cF9hbGxvYyAqLwotK307Ci0rCi0rDAotKwotKy8q IFB5dGhvbiBkb2Vzbid0IHByb3ZpZGUgYSBkZWNlbnQgd2F5IHRvIGdldCBjb21wYXRpYmlsaXR5 IGhlcmUuICAqLwotKyNpZiBIQVZFX0xJQlBZVEhPTjJfNAotKyNkZWZpbmUgQ0hBUkJVRkZFUlBS T0NfTkFNRSBnZXRjaGFyYnVmZmVycHJvYwotKyNlbHNlCi0rI2RlZmluZSBDSEFSQlVGRkVSUFJP Q19OQU1FIGNoYXJidWZmZXJwcm9jCi0rI2VuZGlmCi0rCi0rc3RhdGljIFB5QnVmZmVyUHJvY3Mg YnVmZmVyX3Byb2NzID0gewotKyAgZ2V0X3JlYWRfYnVmZmVyLAotKyAgZ2V0X3dyaXRlX2J1ZmZl ciwKLSsgIGdldF9zZWdfY291bnQsCi0rICAvKiBUaGUgY2FzdCBoZXJlIHdvcmtzIGFyb3VuZCBh IGRpZmZlcmVuY2UgYmV0d2VlbiBQeXRob24gMi40IGFuZAotKyAgICAgUHl0aG9uIDIuNS4gICov Ci0rICAoQ0hBUkJVRkZFUlBST0NfTkFNRSkgZ2V0X2NoYXJfYnVmZmVyCi0rfTsKLSsKLStzdGF0 aWMgUHlUeXBlT2JqZWN0IG1lbWJ1Zl9vYmplY3RfdHlwZSA9IHsKLSsgIFB5T2JqZWN0X0hFQURf SU5JVCAoTlVMTCkKLSsgIDAsCQkJCSAgLypvYl9zaXplKi8KLSsgICJnZGIuTWVtYnVmIiwJCQkg IC8qdHBfbmFtZSovCi0rICBzaXplb2YgKG1lbWJ1Zl9vYmplY3QpLAkgIC8qdHBfYmFzaWNzaXpl Ki8KLSsgIDAsCQkJCSAgLyp0cF9pdGVtc2l6ZSovCi0rICBtYnB5X2RlYWxsb2MsCQkJICAvKnRw X2RlYWxsb2MqLwotKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8KLSsgIDAsCQkJCSAgLyp0cF9nZXRh dHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9jb21wYXJl Ki8KLSsgIDAsCQkJCSAgLyp0cF9yZXByKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19udW1iZXIqLwot KyAgMCwJCQkJICAvKnRwX2FzX3NlcXVlbmNlKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19tYXBwaW5n Ki8KLSsgIDAsCQkJCSAgLyp0cF9oYXNoICovCi0rICAwLAkJCQkgIC8qdHBfY2FsbCovCi0rICBt YnB5X3N0ciwJCQkgIC8qdHBfc3RyKi8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRybyovCi0rICAw LAkJCQkgIC8qdHBfc2V0YXR0cm8qLwotKyAgJmJ1ZmZlcl9wcm9jcywJCSAgLyp0cF9hc19idWZm ZXIqLwotKyAgUHlfVFBGTEFHU19ERUZBVUxULAkJICAvKnRwX2ZsYWdzKi8KLSsgICJHREIgbWVt b3J5IGJ1ZmZlciBvYmplY3QiLCAJICAvKnRwX2RvYyovCi0rICAwLAkJCQkgIC8qIHRwX3RyYXZl cnNlICovCi0rICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCi0rICAwLAkJCQkgIC8qIHRwX3JpY2hj b21wYXJlICovCi0rICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0rICAwLAkJCQkg IC8qIHRwX2l0ZXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRlcm5leHQgKi8KLSsgIDAsCQkJCSAg LyogdHBfbWV0aG9kcyAqLwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICAwLAkJCQkg IC8qIHRwX2dldHNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9iYXNlICovCi0rICAwLAkJCQkgIC8q IHRwX2RpY3QgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGVzY3JfZ2V0ICovCi0rICAwLAkJCQkgIC8q IHRwX2Rlc2NyX3NldCAqLwotKyAgMCwJCQkJICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0rICAwLAkJ CQkgIC8qIHRwX2luaXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfYWxsb2MgKi8KLSsgIFB5VHlwZV9H ZW5lcmljTmV3CQkgIC8qIHRwX25ldyAqLwotK307Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9w eS1pbmZ0aHJlYWQuYyBiL2dkYi9weXRob24vcHktaW5mdGhyZWFkLmMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMWU0ZWFiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv cHl0aG9uL3B5LWluZnRocmVhZC5jCi1AQCAtMCwwICsxLDI4NSBAQAotKy8qIFB5dGhvbiBpbnRl cmZhY2UgdG8gaW5mZXJpb3IgdGhyZWFkcy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsj aW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImdk YnRocmVhZC5oIgotKyNpbmNsdWRlICJpbmZlcmlvci5oIgotKyNpbmNsdWRlICJweXRob24taW50 ZXJuYWwuaCIKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IHRocmVhZF9vYmplY3RfdHlwZTsKLSsK LSsvKiBSZXF1aXJlIHRoYXQgSU5GRVJJT1IgYmUgYSB2YWxpZCBpbmZlcmlvciBJRC4gICovCi0r I2RlZmluZSBUSFBZX1JFUVVJUkVfVkFMSUQoVGhyZWFkKQkJCQlcCi0rICBkbyB7CQkJCQkJCQlc Ci0rICAgIGlmICghVGhyZWFkLT50aHJlYWQpCQkJCQlcCi0rICAgICAgewkJCQkJCQkJXAotKwlQ eUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwJCQlcCi0rCQkJICJ0aHJlYWQgbm8g bG9uZ2VyIGV4aXN0cyIpOwkgICAgICAgIFwKLSsJcmV0dXJuIE5VTEw7CQkJCQkJXAotKyAgICAg IH0JCQkJCQkJCVwKLSsgIH0gd2hpbGUgKDApCi0rCi0rDAotKwotK3RocmVhZF9vYmplY3QgKgot K2NyZWF0ZV90aHJlYWRfb2JqZWN0IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQotK3sKLSsgIHRo cmVhZF9vYmplY3QgKnRocmVhZF9vYmo7Ci0rICAKLSsgIHRocmVhZF9vYmogPSBQeU9iamVjdF9O ZXcgKHRocmVhZF9vYmplY3QsICZ0aHJlYWRfb2JqZWN0X3R5cGUpOwotKyAgaWYgKCF0aHJlYWRf b2JqKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIHRocmVhZF9vYmotPnRocmVhZCA9IHRwOwot KyAgdGhyZWFkX29iai0+aW5mX29iaiA9IGZpbmRfaW5mZXJpb3Jfb2JqZWN0IChQSURHRVQgKHRw LT5wdGlkKSk7Ci0rICBQeV9JTkNSRUYgKHRocmVhZF9vYmotPmluZl9vYmopOwotKwotKyAgcmV0 dXJuIHRocmVhZF9vYmo7Ci0rfQotKwotKwwKLSsKLStzdGF0aWMgdm9pZAotK3RocHlfZGVhbGxv YyAoUHlPYmplY3QgKnNlbGYpCi0rewotKyAgUHlfREVDUkVGICgoKHRocmVhZF9vYmplY3QgKikg c2VsZiktPmluZl9vYmopOwotKyAgc2VsZi0+b2JfdHlwZS0+dHBfZnJlZSAoc2VsZik7Ci0rfQot KwotK3N0YXRpYyBQeU9iamVjdCAqCi0rdGhweV9nZXRfbnVtIChQeU9iamVjdCAqc2VsZiwgdm9p ZCAqY2xvc3VyZSkKLSt7Ci0rICB0aHJlYWRfb2JqZWN0ICp0aHJlYWRfb2JqID0gKHRocmVhZF9v YmplY3QgKikgc2VsZjsKLSsKLSsgIFRIUFlfUkVRVUlSRV9WQUxJRCAodGhyZWFkX29iaik7Ci0r Ci0rICByZXR1cm4gUHlMb25nX0Zyb21Mb25nICh0aHJlYWRfb2JqLT50aHJlYWQtPm51bSk7Ci0r fQotKwotKwwKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBJbmZlcmlvci5mcmFtZXMgKCkgLT4g KGdkYi5GcmFtZSwgLi4uKS4KLSsgICBSZXR1cm5zIGEgdHVwbGUgb2YgYWxsIGZyYW1lIG9iamVj dHMuICAqLwotK1B5T2JqZWN0ICoKLSt0aHB5X2ZyYW1lcyAoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzKQotK3sKLSsgIGludCByZXN1bHQgPSAwOwotKyAgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lOwotKyAgUHlPYmplY3QgKmZyYW1lX29iajsKLSsgIFB5T2JqZWN0ICpsaXN0LCAqdHVw bGU7Ci0rICB0aHJlYWRfb2JqZWN0ICp0aHJlYWRfb2JqID0gKHRocmVhZF9vYmplY3QgKikgc2Vs ZjsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9l eGNlcHRpb24gZXhjZXB0OwotKwotKyAgVEhQWV9SRVFVSVJFX1ZBTElEICh0aHJlYWRfb2JqKTsK LSsKLSsgIGxpc3QgPSBQeUxpc3RfTmV3ICgwKTsKLSsgIGlmIChsaXN0ID09IE5VTEwpCi0rICAg IHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVycm9yLCAiQ291bGQgbm90 IGFsbG9jYXRlIGZyYW1lcyBsaXN0LiIpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0r Ci0rICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3Jlc3RvcmVfY3VycmVudF90aHJlYWQgKCk7Ci0r Ci0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAg c3dpdGNoX3RvX3RocmVhZCAodGhyZWFkX29iai0+dGhyZWFkLT5wdGlkKTsKLSsKLSsgICAgICBm b3IgKGZyYW1lID0gZ2V0X2N1cnJlbnRfZnJhbWUgKCk7IGZyYW1lOyBmcmFtZSA9IGdldF9wcmV2 X2ZyYW1lIChmcmFtZSkpCi0rCXsKLSsJICBmcmFtZV9vYmogPSBmcmFtZV9pbmZvX3RvX2ZyYW1l X29iamVjdCAoZnJhbWUpOwotKwkgIGlmIChmcmFtZV9vYmogPT0gTlVMTCkKLSsJICAgIHsKLSsJ ICAgICAgUHlfREVDUkVGIChsaXN0KTsKLSsJICAgICAgbGlzdCA9IE5VTEw7Ci0rCSAgICAgIGJy ZWFrOwotKwkgICAgfQotKwotKwkgIFB5TGlzdF9BcHBlbmQgKGxpc3QsIGZyYW1lX29iaik7Ci0r CX0KLSsgICAgfQotKyAgaWYgKGV4Y2VwdC5yZWFzb24gPCAwKQotKyAgICB7Ci0rICAgICAgUHlf REVDUkVGIChsaXN0KTsKLSsgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChleGNlcHQucmVhc29u ID09IFJFVFVSTl9RVUlUCi0rCQkJICAgPyBQeUV4Y19LZXlib2FyZEludGVycnVwdCA6IFB5RXhj X1J1bnRpbWVFcnJvciwKLSsJCQkgICAiJXMiLCBleGNlcHQubWVzc2FnZSk7Ci0rICAgIH0KLSsK LSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSsKLSsgIGlmIChsaXN0KQotKyAgICB7Ci0rICAg ICAgdHVwbGUgPSBQeUxpc3RfQXNUdXBsZSAobGlzdCk7Ci0rICAgICAgUHlfREVDUkVGIChsaXN0 KTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB0dXBsZSA9IE5VTEw7Ci0rCi0rICByZXR1cm4gdHVw bGU7Ci0rfQotKwotKy8qIEltcGxlbWVudGF0aW9uIG9mIEluZmVyaW9yVGhyZWFkLm5ld2VzdF9m cmFtZSAoKSAtPiBnZGIuRnJhbWUuCi0rICAgUmV0dXJucyB0aGUgbmV3ZXN0IGZyYW1lIG9iamVj dC4gICovCi0rUHlPYmplY3QgKgotK3RocHlfbmV3ZXN0X2ZyYW1lIChQeU9iamVjdCAqc2VsZiwg UHlPYmplY3QgKmFyZ3MpCi0rewotKyAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lOwotKyAgUHlP YmplY3QgKmZyYW1lX29iaiA9IE5VTEw7ICAgLyogSW5pdGlhbGl6ZSB0byBhcHBlYXNlIGdjYyB3 YXJuaW5nLiAgKi8KLSsgIHRocmVhZF9vYmplY3QgKnRocmVhZF9vYmogPSAodGhyZWFkX29iamVj dCAqKSBzZWxmOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0rICB2b2xhdGlsZSBzdHJ1 Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBUSFBZX1JFUVVJUkVfVkFMSUQgKHRocmVh ZF9vYmopOwotKwotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9yZXN0b3JlX2N1cnJlbnRfdGhy ZWFkICgpOwotKwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAg ewotKyAgICAgIHN3aXRjaF90b190aHJlYWQgKHRocmVhZF9vYmotPnRocmVhZC0+cHRpZCk7Ci0r Ci0rICAgICAgZnJhbWUgPSBnZXRfY3VycmVudF9mcmFtZSAoKTsKLSsgICAgICBmcmFtZV9vYmog PSBmcmFtZV9pbmZvX3RvX2ZyYW1lX29iamVjdCAoZnJhbWUpOwotKyAgICB9Ci0rICBHREJfUFlf SEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsK LSsKLSsgIHJldHVybiBmcmFtZV9vYmo7Ci0rfQotKwotKy8qIEltcGxlbWVudGF0aW9uIG9mIElu ZmVyaW9yVGhyZWFkLnN3aXRjaCAoKS4KLSsgICBNYWtlcyB0aGlzIHRoZSBHREIgc2VsZWN0ZWQg dGhyZWFkLiAgKi8KLStzdGF0aWMgUHlPYmplY3QgKgotK3RocHlfc3dpdGNoIChQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0rewotKyAgdGhyZWFkX29iamVjdCAqdGhyZWFkX29iaiA9 ICh0aHJlYWRfb2JqZWN0ICopIHNlbGY7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSsg IHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIFRIUFlfUkVRVUlS RV9WQUxJRCAodGhyZWFkX29iaik7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01B U0tfQUxMKQotKyAgICB7Ci0rICAgICAgc3dpdGNoX3RvX3RocmVhZCAodGhyZWFkX29iai0+dGhy ZWFkLT5wdGlkKTsKLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7 Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rDAotKwotKy8qIEltcGxlbWVudGF0aW9u IG9mIGdkYi5zZWxlY3RlZF90aHJlYWQgKCkgLT4gZ2RiLkluZmVyaW9yVGhyZWFkLgotKyAgIFJl dHVybnMgdGhlIHNlbGVjdGVkIHRocmVhZCBvYmplY3QuICAqLwotK1B5T2JqZWN0ICoKLStnZGJw eV9zZWxlY3RlZF90aHJlYWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0r ICBQeU9iamVjdCAqdGhyZWFkX29iajsKLSsgIAotKyAgdGhyZWFkX29iaiA9IChQeU9iamVjdCAq KSBmaW5kX3RocmVhZF9vYmplY3QgKGluZmVyaW9yX3B0aWQpOwotKyAgaWYgKHRocmVhZF9vYmop Ci0rICAgIHsKLSsgICAgICBQeV9JTkNSRUYgKHRocmVhZF9vYmopOwotKyAgICAgIHJldHVybiB0 aHJlYWRfb2JqOwotKyAgICB9Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rDAotKwot K3ZvaWQKLStnZGJweV9pbml0aWFsaXplX3RocmVhZCAodm9pZCkKLSt7Ci0rICBpZiAoUHlUeXBl X1JlYWR5ICgmdGhyZWFkX29iamVjdF90eXBlKSA8IDApCi0rICAgIHJldHVybjsKLSsKLSsgIFB5 X0lOQ1JFRiAoJnRocmVhZF9vYmplY3RfdHlwZSk7Ci0rICBQeU1vZHVsZV9BZGRPYmplY3QgKGdk Yl9tb2R1bGUsICJJbmZlcmlvclRocmVhZCIsCi0rCQkgICAgICAoUHlPYmplY3QgKikgJnRocmVh ZF9vYmplY3RfdHlwZSk7Ci0rfQotKwotKwwKLSsKLStzdGF0aWMgUHlHZXRTZXREZWYgdGhyZWFk X29iamVjdF9nZXRzZXRbXSA9Ci0rewotKyAgeyAibnVtIiwgdGhweV9nZXRfbnVtLCBOVUxMLCAi SUQgb2YgdGhlIHRocmVhZCwgYXMgYXNzaWduZWQgYnkgR0RCLiIsIE5VTEwgfSwKLSsKLSsgIHsg TlVMTCB9Ci0rfTsKLSsKLStzdGF0aWMgUHlNZXRob2REZWYgdGhyZWFkX29iamVjdF9tZXRob2Rz W10gPQotK3sKLSsgIHsgImZyYW1lcyIsIHRocHlfZnJhbWVzLCBNRVRIX05PQVJHUywKLSsgICAg ImZyYW1lcyAoKSAtPiAoZ2RiLkZyYW1lLCAuLi4pXG5cCi0rUmV0dXJuIGEgdHVwbGUgY29udGFp bmluZyBhbGwgZnJhbWVzIGluIHRoZSB0aHJlYWQuIiB9LAotKyAgeyAibmV3ZXN0X2ZyYW1lIiwg dGhweV9uZXdlc3RfZnJhbWUsIE1FVEhfTk9BUkdTLAotKyAgICAibmV3ZXN0X2ZyYW1lICgpIC0+ IGdkYi5GcmFtZVxuXAotK1JldHVybiB0aGUgbmV3ZXN0IGZyYW1lIGluIHRoZSB0aHJlYWQuIiB9 LAotKyAgeyAic3dpdGNoIiwgdGhweV9zd2l0Y2gsIE1FVEhfTk9BUkdTLAotKyAgICAic3dpdGNo ICgpXG5cCi0rTWFrZXMgdGhpcyB0aGUgR0RCIHNlbGVjdGVkIHRocmVhZC4iIH0sCi0rCi0rICB7 IE5VTEwgfQotK307Ci0rCi0rc3RhdGljIFB5VHlwZU9iamVjdCB0aHJlYWRfb2JqZWN0X3R5cGUg PQotK3sKLSsgIFB5T2JqZWN0X0hFQURfSU5JVCAoTlVMTCkKLSsgIDAsCQkJCSAgLypvYl9zaXpl Ki8KLSsgICJnZGIuSW5mZXJpb3JUaHJlYWQiLAkJICAvKnRwX25hbWUqLwotKyAgc2l6ZW9mICh0 aHJlYWRfb2JqZWN0KSwJICAvKnRwX2Jhc2ljc2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfaXRlbXNp emUqLwotKyAgdGhweV9kZWFsbG9jLAkJCSAgLyp0cF9kZWFsbG9jKi8KLSsgIDAsCQkJCSAgLyp0 cF9wcmludCovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfc2V0 YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfY29tcGFyZSovCi0rICAwLAkJCQkgIC8qdHBfcmVwciov Ci0rICAwLAkJCQkgIC8qdHBfYXNfbnVtYmVyKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19zZXF1ZW5j ZSovCi0rICAwLAkJCQkgIC8qdHBfYXNfbWFwcGluZyovCi0rICAwLAkJCQkgIC8qdHBfaGFzaCAq LwotKyAgMCwJCQkJICAvKnRwX2NhbGwqLwotKyAgMCwJCQkJICAvKnRwX3N0ciovCi0rICAwLAkJ CQkgIC8qdHBfZ2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHJvKi8KLSsgIDAsCQkJ CSAgLyp0cF9hc19idWZmZXIqLwotKyAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19I QVZFX0lURVIsICAvKnRwX2ZsYWdzKi8KLSsgICJHREIgdGhyZWFkIG9iamVjdCIsCQkgIC8qIHRw X2RvYyAqLwotKyAgMCwJCQkJICAvKiB0cF90cmF2ZXJzZSAqLwotKyAgMCwJCQkJICAvKiB0cF9j bGVhciAqLwotKyAgMCwJCQkJICAvKiB0cF9yaWNoY29tcGFyZSAqLwotKyAgMCwJCQkJICAvKiB0 cF93ZWFrbGlzdG9mZnNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9pdGVyICovCi0rICAwLAkJCQkg IC8qIHRwX2l0ZXJuZXh0ICovCi0rICB0aHJlYWRfb2JqZWN0X21ldGhvZHMsCSAgLyogdHBfbWV0 aG9kcyAqLwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICB0aHJlYWRfb2JqZWN0X2dl dHNldCwJCSAgLyogdHBfZ2V0c2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2Jhc2UgKi8KLSsgIDAs CQkJCSAgLyogdHBfZGljdCAqLwotKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9nZXQgKi8KLSsgIDAs CQkJCSAgLyogdHBfZGVzY3Jfc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2RpY3RvZmZzZXQgKi8K LSsgIDAsCQkJCSAgLyogdHBfaW5pdCAqLwotKyAgMAkJCQkgIC8qIHRwX2FsbG9jICovCi0rfTsK LWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LW1lbWJ1Zi5jIGIvZ2RiL3B5dGhvbi9weS1tZW1i dWYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjdiYzI5NGMKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vcHktbWVtYnVmLmMKLUBAIC0wLDAgKzEsMjY4IEBA Ci0rLyogUHl0aG9uIGludGVyZmFjZSB0byB0aGUgaW5mZXJpb3IgbWVtb3J5LgotKwotKyAgIENv cHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImV4 Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAiZ2RiY29yZS5oIgotKyNpbmNsdWRlICJweXRob24taW50 ZXJuYWwuaCIKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICBQeU9iamVjdF9IRUFECi0rICB2b2lk ICpidWZmZXI7Ci0rCi0rICAvKiBUaGVzZSBhcmUga2VwdCBqdXN0IGZvciBtYnB5X3N0ci4gICov Ci0rICBDT1JFX0FERFIgYWRkcjsKLSsgIENPUkVfQUREUiBsZW5ndGg7Ci0rfSBtZW1idWZfb2Jq ZWN0OwotKwotK3N0YXRpYyBQeVR5cGVPYmplY3QgbWVtYnVmX29iamVjdF90eXBlOwotKwotKy8q IEltcGxlbWVudGF0aW9uIG9mIGdkYi5yZWFkX21lbW9yeSAoYWRkcmVzcywgbGVuZ3RoKS4KLSsg ICBSZXR1cm5zIGEgUHl0aG9uIGJ1ZmZlciBvYmplY3Qgd2l0aCBMRU5HVEggYnl0ZXMgb2YgdGhl IGluZmVyaW9yJ3MgbWVtb3J5Ci0rICAgYXQgQUREUkVTUy4gQm90aCBhcmd1bWVudHMgYXJlIGlu dGVnZXJzLiAgKi8KLSsKLStQeU9iamVjdCAqCi0rZ2RicHlfcmVhZF9tZW1vcnkgKFB5T2JqZWN0 ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBpbnQgZXJyb3IgPSAwOwotKyAgQ09SRV9B RERSIGFkZHIsIGxlbmd0aDsKLSsgIHZvaWQgKmJ1ZmZlciA9IE5VTEw7Ci0rICBtZW1idWZfb2Jq ZWN0ICptZW1idWZfb2JqOwotKyAgUHlPYmplY3QgKmFkZHJfb2JqLCAqbGVuZ3RoX29iajsKLSsg IHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IE5VTEw7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2Ri X2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAi T08iLCAmYWRkcl9vYmosICZsZW5ndGhfb2JqKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBU UllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgaWYgKCFn ZXRfYWRkcl9mcm9tX3B5dGhvbiAoYWRkcl9vYmosICZhZGRyKQotKwkgIHx8ICFnZXRfYWRkcl9m cm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsKLSsJICBlcnJvciA9IDE7Ci0r CSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBidWZmZXIgPSB4bWFsbG9jIChsZW5ndGgpOwotKyAg ICAgIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYnVmZmVyKTsKLSsKLSsgICAgICBy ZWFkX21lbW9yeSAoYWRkciwgYnVmZmVyLCBsZW5ndGgpOwotKyAgICB9Ci0rICBHREJfUFlfSEFO RExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSsKLSsgIGlmIChlcnJvcikKLSsgICAgcmV0dXJuIE5V TEw7Ci0rCi0rICBkaXNjYXJkX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0rCi0rICBtZW1idWZfb2Jq ID0gUHlPYmplY3RfTmV3IChtZW1idWZfb2JqZWN0LCAmbWVtYnVmX29iamVjdF90eXBlKTsKLSsg IGlmIChtZW1idWZfb2JqID09IE5VTEwpCi0rICAgIHsKLSsgICAgICB4ZnJlZSAoYnVmZmVyKTsK LSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVycm9yLAotKwkJICAgICAgICJD b3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGJ1ZmZlciBvYmplY3QuIik7Ci0rICAgICAgcmV0dXJu IE5VTEw7Ci0rICAgIH0KLSsKLSsgIG1lbWJ1Zl9vYmotPmJ1ZmZlciA9IGJ1ZmZlcjsKLSsgIG1l bWJ1Zl9vYmotPmFkZHIgPSBhZGRyOwotKyAgbWVtYnVmX29iai0+bGVuZ3RoID0gbGVuZ3RoOwot KwotKyAgcmV0dXJuIFB5QnVmZmVyX0Zyb21SZWFkV3JpdGVPYmplY3QgKChQeU9iamVjdCAqKSBt ZW1idWZfb2JqLCAwLAotKwkJCQkgICAgICAgUHlfRU5EX09GX0JVRkZFUik7Ci0rfQotKwotKy8q IEltcGxlbWVudGF0aW9uIG9mIGdkYi53cml0ZV9tZW1vcnkgKGFkZHJlc3MsIGJ1ZmZlciBbLCBs ZW5ndGhdKS4KLSsgICBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIEJVRkZFUiAoYSBQeXRob24gb2Jq ZWN0IHN1cHBvcnRpbmcgdGhlIHJlYWQgYnVmZmVyCi0rICAgcHJvdG9jb2wpIGF0IEFERFJFU1Mg aW4gdGhlIGluZmVyaW9yJ3MgbWVtb3J5LiAgV3JpdGUgTEVOR1RIIGJ5dGVzIGZyb20KLSsgICBC VUZGRVIsIG9yIGl0cyBlbnRpcmUgY29udGVudHMgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCBwcm92 aWRlZC4gIFRoZQotKyAgIGZ1bmN0aW9uIHJldHVybnMgbm90aGluZy4gICovCi0rCi0rUHlPYmpl Y3QgKgotK2dkYnB5X3dyaXRlX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KQotK3sKLSsgIGludCBidWZfbGVuLCBlcnJvciA9IDA7Ci0rICBjb25zdCBjaGFyICpidWZmZXI7 Ci0rICBDT1JFX0FERFIgYWRkciwgbGVuZ3RoOwotKyAgUHlPYmplY3QgKmFkZHJfb2JqLCAqbGVu Z3RoX29iaiA9IE5VTEw7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7 Ci0rCi0rICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiT3MjfE8iLCAmYWRkcl9vYmos ICZidWZmZXIsICZidWZfbGVuLAotKwkJCSAgJmxlbmd0aF9vYmopKQotKyAgICByZXR1cm4gTlVM TDsKLSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsg ICAgICBpZiAoIWdldF9hZGRyX2Zyb21fcHl0aG9uIChhZGRyX29iaiwgJmFkZHIpKQotKwl7Ci0r CSAgZXJyb3IgPSAxOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgICAgCi0rICAgICAgaWYgKCFsZW5n dGhfb2JqKQotKwlsZW5ndGggPSBidWZfbGVuOwotKyAgICAgIGVsc2UgaWYgKCFnZXRfYWRkcl9m cm9tX3B5dGhvbiAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCi0rCXsKLSsJICBlcnJvciA9IDE7Ci0r CSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICB3cml0ZV9tZW1vcnkgKGFkZHIsIGJ1ZmZlciwgbGVu Z3RoKTsKLSsgICAgfQotKyAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7Ci0rCi0r ICBpZiAoZXJyb3IpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgUHlfUkVUVVJOX05PTkU7Ci0r fQotKwotKy8qIERlc3RydWN0b3Igb2YgTWVtYnVmIG9iamVjdHMuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rbWJweV9kZWFsbG9jIChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICB4ZnJlZSAoKChtZW1i dWZfb2JqZWN0ICopIHNlbGYpLT5idWZmZXIpOwotKyAgc2VsZi0+b2JfdHlwZS0+dHBfZnJlZSAo c2VsZik7Ci0rfQotKwotKy8qIFJldHVybiBhIGRlc2NyaXB0aW9uIG9mIHRoZSBNZW1idWYgb2Jq ZWN0LiAgKi8KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK21icHlfc3RyIChQeU9iamVjdCAqc2Vs ZikKLSt7Ci0rICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1lbWJ1Zl9vYmplY3QgKikg c2VsZjsKLSsKLSsgIHJldHVybiBQeVN0cmluZ19Gcm9tRm9ybWF0ICgibWVtb3J5IGJ1ZmZlciBm b3IgYWRkcmVzcyAlcywgJXMgYnl0ZXMgbG9uZyIsCi0rCQkJICAgICAgcGFkZHJlc3MgKG1lbWJ1 Zl9vYmotPmFkZHIpLAotKwkJCSAgICAgIHB1bG9uZ2VzdCAobWVtYnVmX29iai0+bGVuZ3RoKSk7 Ci0rfQotKwotK3N0YXRpYyBQeV9zc2l6ZV90Ci0rZ2V0X3JlYWRfYnVmZmVyIChQeU9iamVjdCAq c2VsZiwgUHlfc3NpemVfdCBzZWdtZW50LCB2b2lkICoqcHRycHRyKQotK3sKLSsgIG1lbWJ1Zl9v YmplY3QgKm1lbWJ1Zl9vYmogPSAobWVtYnVmX29iamVjdCAqKSBzZWxmOwotKwotKyAgaWYgKHNl Z21lbnQpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1N5c3RlbUVycm9y LAotKwkJICAgICAgICJUaGUgbWVtb3J5IGJ1ZmZlciBzdXBwb3J0cyBvbmx5IG9uZSBzZWdtZW50 LiIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgKnB0cnB0ciA9IG1lbWJ1Zl9v YmotPmJ1ZmZlcjsKLSsKLSsgIHJldHVybiBtZW1idWZfb2JqLT5sZW5ndGg7Ci0rfQotKwotK3N0 YXRpYyBQeV9zc2l6ZV90Ci0rZ2V0X3dyaXRlX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3Nz aXplX3Qgc2VnbWVudCwgdm9pZCAqKnB0cnB0cikKLSt7Ci0rICByZXR1cm4gZ2V0X3JlYWRfYnVm ZmVyIChzZWxmLCBzZWdtZW50LCBwdHJwdHIpOwotK30KLSsKLStzdGF0aWMgUHlfc3NpemVfdAot K2dldF9zZWdfY291bnQgKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90ICpsZW5wKQotK3sKLSsg IGlmIChsZW5wKQotKyAgICAqbGVucCA9ICgobWVtYnVmX29iamVjdCAqKSBzZWxmKS0+bGVuZ3Ro OwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBQeV9zc2l6ZV90Ci0rZ2V0X2NoYXJf YnVmZmVyIChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBzZWdtZW50LCBjaGFyICoqcHRycHRy KQotK3sKLSsgIHZvaWQgKnB0ciA9IE5VTEw7Ci0rICBQeV9zc2l6ZV90IHJldDsKLSsKLSsgIHJl dCA9IGdldF9yZWFkX2J1ZmZlciAoc2VsZiwgc2VnbWVudCwgJnB0cik7Ci0rICAqcHRycHRyID0g KGNoYXIgKikgcHRyOwotKwotKyAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rLyogUHl0aG9uIGRvZXNu J3QgcHJvdmlkZSBhIGRlY2VudCB3YXkgdG8gZ2V0IGNvbXBhdGliaWxpdHkgaGVyZS4gICovCi0r I2lmIEhBVkVfTElCUFlUSE9OMl80Ci0rI2RlZmluZSBDSEFSQlVGRkVSUFJPQ19OQU1FIGdldGNo YXJidWZmZXJwcm9jCi0rI2Vsc2UKLSsjZGVmaW5lIENIQVJCVUZGRVJQUk9DX05BTUUgY2hhcmJ1 ZmZlcnByb2MKLSsjZW5kaWYKLSsKLStzdGF0aWMgUHlCdWZmZXJQcm9jcyBidWZmZXJfcHJvY3Mg PSB7Ci0rICBnZXRfcmVhZF9idWZmZXIsCi0rICBnZXRfd3JpdGVfYnVmZmVyLAotKyAgZ2V0X3Nl Z19jb3VudCwKLSsgIC8qIFRoZSBjYXN0IGhlcmUgd29ya3MgYXJvdW5kIGEgZGlmZmVyZW5jZSBi ZXR3ZWVuIFB5dGhvbiAyLjQgYW5kCi0rICAgICBQeXRob24gMi41LiAgKi8KLSsgIChDSEFSQlVG RkVSUFJPQ19OQU1FKSBnZXRfY2hhcl9idWZmZXIKLSt9OwotKwotK3N0YXRpYyBQeVR5cGVPYmpl Y3QgbWVtYnVmX29iamVjdF90eXBlID0gewotKyAgUHlPYmplY3RfSEVBRF9JTklUIChOVUxMKQot KyAgMCwJCQkJICAvKm9iX3NpemUqLwotKyAgImdkYi5NZW1idWYiLAkJCSAgLyp0cF9uYW1lKi8K LSsgIHNpemVvZiAobWVtYnVmX29iamVjdCksCSAgLyp0cF9iYXNpY3NpemUqLwotKyAgMCwJCQkJ ICAvKnRwX2l0ZW1zaXplKi8KLSsgIG1icHlfZGVhbGxvYywJCQkgIC8qdHBfZGVhbGxvYyovCi0r ICAwLAkJCQkgIC8qdHBfcHJpbnQqLwotKyAgMCwJCQkJICAvKnRwX2dldGF0dHIqLwotKyAgMCwJ CQkJICAvKnRwX3NldGF0dHIqLwotKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLwotKyAgMCwJCQkJ ICAvKnRwX3JlcHIqLwotKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCi0rICAwLAkJCQkgIC8q dHBfYXNfc2VxdWVuY2UqLwotKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLwotKyAgMCwJCQkJ ICAvKnRwX2hhc2ggKi8KLSsgIDAsCQkJCSAgLyp0cF9jYWxsKi8KLSsgIG1icHlfc3RyLAkJCSAg Lyp0cF9zdHIqLwotKyAgMCwJCQkJICAvKnRwX2dldGF0dHJvKi8KLSsgIDAsCQkJCSAgLyp0cF9z ZXRhdHRybyovCi0rICAmYnVmZmVyX3Byb2NzLAkJICAvKnRwX2FzX2J1ZmZlciovCi0rICBQeV9U UEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBfZmxhZ3MqLwotKyAgIkdEQiBtZW1vcnkgYnVmZmVyIG9i amVjdCIsIAkgIC8qdHBfZG9jKi8KLSsgIDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KLSsgIDAs CQkJCSAgLyogdHBfY2xlYXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSsg IDAsCQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRlciAq LwotKyAgMCwJCQkJICAvKiB0cF9pdGVybmV4dCAqLwotKyAgMCwJCQkJICAvKiB0cF9tZXRob2Rz ICovCi0rICAwLAkJCQkgIC8qIHRwX21lbWJlcnMgKi8KLSsgIDAsCQkJCSAgLyogdHBfZ2V0c2V0 ICovCi0rICAwLAkJCQkgIC8qIHRwX2Jhc2UgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGljdCAqLwot KyAgMCwJCQkJICAvKiB0cF9kZXNjcl9nZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGVzY3Jfc2V0 ICovCi0rICAwLAkJCQkgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfaW5p dCAqLwotKyAgMCwJCQkJICAvKiB0cF9hbGxvYyAqLwotKyAgUHlUeXBlX0dlbmVyaWNOZXcJCSAg LyogdHBfbmV3ICovCi0rfTsKLSsKLSt2b2lkCi0rZ2RicHlfaW5pdGlhbGl6ZV9tZW1idWYgKHZv aWQpCi0rewotKyAgaWYgKFB5VHlwZV9SZWFkeSAoJm1lbWJ1Zl9vYmplY3RfdHlwZSkgPCAwKQot KyAgICByZXR1cm47Ci0rCi0rICBQeV9JTkNSRUYgKCZtZW1idWZfb2JqZWN0X3R5cGUpOwotKyAg UHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiTWVtYnVmIiwgKFB5T2JqZWN0ICopICZt ZW1idWZfb2JqZWN0X3R5cGUpOwotK30KLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXBhcmFt LmMgYi9nZGIvcHl0aG9uL3B5LXBhcmFtLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi4xZjU5MWE4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL3B5LXBhcmFt LmMKLUBAIC0wLDAgKzEsNjA2IEBACi0rLyogZ2RiIHBhcmFtZXRlcnMgaW1wbGVtZW50ZWQgaW4g UHl0aG9uCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r Ci0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rCi0rI2luY2x1ZGUgImRl ZnMuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNp bmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSsjaW5jbHVkZSAiY2hhcnNldC5oIgotKyNpbmNs dWRlICJnZGJjbWQuaCIKLSsjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKLSsjaW5jbHVkZSAi Y29tcGxldGVyLmgiCi0rCi0rLyogUGFyYW1ldGVyIGNvbnN0YW50cyBhbmQgdGhlaXIgdmFsdWVz LiAgKi8KLStzdHJ1Y3QgcGFybV9jb25zdGFudAotK3sKLSsgIGNoYXIgKm5hbWU7Ci0rICBpbnQg dmFsdWU7Ci0rfTsKLSsKLStzdHJ1Y3QgcGFybV9jb25zdGFudCBwYXJtX2NvbnN0YW50c1tdID0K LSt7Ci0rICB7ICJQQVJBTV9CT09MRUFOIiwgdmFyX2Jvb2xlYW4gfSwKLSsgIHsgIlBBUkFNX0FV VE9fQk9PTEVBTiIsIHZhcl9hdXRvX2Jvb2xlYW4gfSwKLSsgIHsgIlBBUkFNX1VJTlRFR0VSIiwg dmFyX3VpbnRlZ2VyIH0sCi0rICB7ICJQQVJBTV9JTlRFR0VSIiwgdmFyX2ludGVnZXIgfSwKLSsg IHsgIlBBUkFNX1NUUklORyIsIHZhcl9zdHJpbmcgfSwKLSsgIHsgIlBBUkFNX1NUUklOR19OT0VT Q0FQRSIsIHZhcl9zdHJpbmdfbm9lc2NhcGUgfSwKLSsgIHsgIlBBUkFNX09QVElPTkFMX0ZJTEVO QU1FIiwgdmFyX29wdGlvbmFsX2ZpbGVuYW1lIH0sCi0rICB7ICJQQVJBTV9GSUxFTkFNRSIsIHZh cl9maWxlbmFtZSB9LAotKyAgeyAiUEFSQU1fWklOVEVHRVIiLCB2YXJfemludGVnZXIgfSwKLSsg IHsgIlBBUkFNX0VOVU0iLCB2YXJfZW51bSB9LAotKyAgeyBOVUxMLCAwIH0KLSt9OwotKwotKy8q IEEgdW5pb24gdGhhdCBjYW4gaG9sZCBhbnl0aGluZyBkZXNjcmliZWQgYnkgZW51bSB2YXJfdHlw ZXMuICAqLwotK3VuaW9uIHBhcm1weV92YXJpYWJsZQotK3sKLSsgIC8qIEhvbGQgYW4gaW50ZWdl ciB2YWx1ZSwgZm9yIGJvb2xlYW4gYW5kIGludGVnZXIgdHlwZXMuICAqLwotKyAgaW50IGludHZh bDsKLSsKLSsgIC8qIEhvbGQgYW4gYXV0b19ib29sZWFuLiAgKi8KLSsgIGVudW0gYXV0b19ib29s ZWFuIGF1dG9ib29sdmFsOwotKwotKyAgLyogSG9sZCBhbiB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVl LCBmb3IgdWludGVnZXIuICAqLwotKyAgdW5zaWduZWQgaW50IHVpbnR2YWw7Ci0rCi0rICAvKiBI b2xkIGEgc3RyaW5nLCBmb3IgdGhlIHZhcmlvdXMgc3RyaW5nIHR5cGVzLiAgKi8KLSsgIGNoYXIg KnN0cmluZ3ZhbDsKLSsKLSsgIC8qIEhvbGQgYSBzdHJpbmcsIGZvciBlbnVtcy4gICovCi0rICBj b25zdCBjaGFyICpjc3RyaW5ndmFsOwotK307Ci0rCi0rLyogQSBnZGIgcGFyYW1ldGVyLiAgKi8K LStzdHJ1Y3QgcGFybXB5X29iamVjdAotK3sKLSsgIFB5T2JqZWN0X0hFQUQKLSsKLSsgIC8qIFRo ZSB0eXBlIG9mIHRoZSBwYXJhbWV0ZXIuICAqLwotKyAgZW51bSB2YXJfdHlwZXMgdHlwZTsKLSsK LSsgIC8qIFRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLiAgKi8KLSsgIHVuaW9uIHBhcm1weV92 YXJpYWJsZSB2YWx1ZTsKLSsKLSsgIC8qIEZvciBhbiBlbnVtIGNvbW1hbmQsIHRoZSBwb3NzaWJs ZSB2YWx1ZXMuICBUaGUgdmVjdG9yIGlzCi0rICAgICBhbGxvY2F0ZWQgd2l0aCB4bWFsbG9jLCBh cyBpcyBlYWNoIGVsZW1lbnQuICBJdCBpcwotKyAgICAgTlVMTC10ZXJtaW5hdGVkLiAgKi8KLSsg IGNvbnN0IGNoYXIgKiplbnVtZXJhdGlvbjsKLSt9OwotKwotK3R5cGVkZWYgc3RydWN0IHBhcm1w eV9vYmplY3QgcGFybXB5X29iamVjdDsKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IHBhcm1weV9v YmplY3RfdHlwZTsKLSsKLSsvKiBTb21lIGhhbmR5IHN0cmluZyBjb25zdGFudHMuICAqLwotK3N0 YXRpYyBQeU9iamVjdCAqc2V0X2RvY19jc3Q7Ci0rc3RhdGljIFB5T2JqZWN0ICpzaG93X2RvY19j c3Q7Ci0rCi0rDAotKwotKy8qIEdldCBhbiBhdHRyaWJ1dGUuICAqLwotK3N0YXRpYyBQeU9iamVj dCAqCi0rZ2V0X2F0dHIgKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphdHRyX25hbWUpCi0rewot KyAgaWYgKFB5U3RyaW5nX0NoZWNrIChhdHRyX25hbWUpCi0rICAgICAgJiYgISBzdHJjbXAgKFB5 U3RyaW5nX0FzU3RyaW5nIChhdHRyX25hbWUpLCAidmFsdWUiKSkKLSsgICAgewotKyAgICAgIHBh cm1weV9vYmplY3QgKnNlbGYgPSAocGFybXB5X29iamVjdCAqKSBvYmo7Ci0rICAgICAgcmV0dXJu IGdkYnB5X3BhcmFtZXRlcl92YWx1ZSAoc2VsZi0+dHlwZSwgJnNlbGYtPnZhbHVlKTsKLSsgICAg fQotKwotKyAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyIChvYmosIGF0dHJfbmFtZSk7 Ci0rfQotKwotKy8qIFNldCBhIHBhcmFtZXRlciB2YWx1ZSBmcm9tIGEgUHl0aG9uIHZhbHVlLiAg UmV0dXJuIDAgb24gc3VjY2VzcywgLTEKLSsgICBvbiBmYWlsdXJlLiAgKi8KLStzdGF0aWMgaW50 Ci0rc2V0X3BhcmFtZXRlcl92YWx1ZSAocGFybXB5X29iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZh bHVlKQotK3sKLSsgIGludCBjbXA7Ci0rCi0rICBzd2l0Y2ggKHNlbGYtPnR5cGUpCi0rICAgIHsK LSsgICAgY2FzZSB2YXJfc3RyaW5nOgotKyAgICBjYXNlIHZhcl9zdHJpbmdfbm9lc2NhcGU6Ci0r ICAgIGNhc2UgdmFyX29wdGlvbmFsX2ZpbGVuYW1lOgotKyAgICBjYXNlIHZhcl9maWxlbmFtZToK LSsgICAgICBpZiAoISBnZGJweV9pc19zdHJpbmcgKHZhbHVlKQotKwkgICYmIChzZWxmLT50eXBl ID09IHZhcl9maWxlbmFtZQotKwkgICAgICB8fCB2YWx1ZSAhPSBQeV9Ob25lKSkKLSsJewotKwkg IFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLCAic3RyaW5nIHJlcXVpcmVkIik7 Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0rICAgICAgaWYgKHNlbGYtPnZhbHVlLnN0cmluZ3ZhbCkK LSsJeGZyZWUgKHNlbGYtPnZhbHVlLnN0cmluZ3ZhbCk7Ci0rICAgICAgaWYgKHZhbHVlID09IFB5 X05vbmUpCi0rCXsKLSsJICBpZiAoc2VsZi0+dHlwZSA9PSB2YXJfb3B0aW9uYWxfZmlsZW5hbWUp Ci0rCSAgICBzZWxmLT52YWx1ZS5zdHJpbmd2YWwgPSB4c3RyZHVwICgiIik7Ci0rCSAgZWxzZQot KwkgICAgc2VsZi0+dmFsdWUuc3RyaW5ndmFsID0gTlVMTDsKLSsJfQotKyAgICAgIGVsc2UKLSsJ c2VsZi0+dmFsdWUuc3RyaW5ndmFsID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAodmFs dWUpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIHZhcl9lbnVtOgotKyAgICAgIHsKLSsJ aW50IGk7Ci0rCWNoYXIgKnN0cjsKLSsKLSsJaWYgKCEgZ2RicHlfaXNfc3RyaW5nICh2YWx1ZSkp Ci0rCSAgewotKwkgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsICJzdHJp bmcgcmVxdWlyZWQiKTsKLSsJICAgIHJldHVybiAtMTsKLSsJICB9Ci0rCi0rCXN0ciA9IHB5dGhv bl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKHZhbHVlKTsKLSsJZm9yIChpID0gMDsgc2VsZi0+ZW51 bWVyYXRpb25baV07ICsraSkKLSsJICBpZiAoISBzdHJjbXAgKHNlbGYtPmVudW1lcmF0aW9uW2ld LCBzdHIpKQotKwkgICAgYnJlYWs7Ci0rCXhmcmVlIChzdHIpOwotKwlpZiAoISBzZWxmLT5lbnVt ZXJhdGlvbltpXSkKLSsJICB7Ci0rCSAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVF cnJvciwKLSsJCQkgICAgICJ2YWx1ZSBtdXN0IGJlIG1lbWJlciBvZiBlbnVtZXJhdGlvbiIpOwot KwkgICAgcmV0dXJuIC0xOwotKwkgIH0KLSsJc2VsZi0+dmFsdWUuY3N0cmluZ3ZhbCA9IHNlbGYt PmVudW1lcmF0aW9uW2ldOwotKwlicmVhazsKLSsgICAgICB9Ci0rCi0rICAgIGNhc2UgdmFyX2Jv b2xlYW46Ci0rICAgICAgaWYgKCEgUHlCb29sX0NoZWNrICh2YWx1ZSkpCi0rCXsKLSsJICBQeUVy cl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwgImJvb2xlYW4gcmVxdWlyZWQiKTsKLSsJ ICByZXR1cm4gLTE7Ci0rCX0KLSsgICAgICBjbXAgPSBQeU9iamVjdF9Jc1RydWUgKHZhbHVlKTsK LSsgICAgICBpZiAoY21wIDwgMCkgCi0rCSAgcmV0dXJuIC0xOwotKyAgICAgIHNlbGYtPnZhbHVl LmludHZhbCA9IGNtcDsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfYXV0b19ib29s ZWFuOgotKyAgICAgIGlmICghIFB5Qm9vbF9DaGVjayAodmFsdWUpICYmIHZhbHVlICE9IFB5X05v bmUpCi0rCXsKLSsJICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwKLSsJCQkg ICAiYm9vbGVhbiBvciBOb25lIHJlcXVpcmVkIik7Ci0rCSAgcmV0dXJuIC0xOwotKwl9Ci0rCi0r ICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCi0rCXNlbGYtPnZhbHVlLmF1dG9ib29sdmFsID0g QVVUT19CT09MRUFOX0FVVE87Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgY21wID0gUHlPYmplY3Rf SXNUcnVlICh2YWx1ZSk7Ci0rCSAgaWYgKGNtcCA8IDAgKQotKwkgICAgcmV0dXJuIC0xOwkgIAot KwkgIGlmIChjbXAgPT0gMSkKLSsJICAgIHNlbGYtPnZhbHVlLmF1dG9ib29sdmFsID0gQVVUT19C T09MRUFOX1RSVUU7Ci0rCSAgZWxzZSAKLSsJICAgIHNlbGYtPnZhbHVlLmF1dG9ib29sdmFsID0g QVVUT19CT09MRUFOX0ZBTFNFOwotKwotKwkgIGJyZWFrOwotKwl9Ci0rCi0rICAgIGNhc2UgdmFy X2ludGVnZXI6Ci0rICAgIGNhc2UgdmFyX3ppbnRlZ2VyOgotKyAgICBjYXNlIHZhcl91aW50ZWdl cjoKLSsgICAgICB7Ci0rCWxvbmcgbDsKLSsJaW50IG9rOwotKwotKwlpZiAoISBQeUludF9DaGVj ayAodmFsdWUpKQotKwkgIHsKLSsJICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVy cm9yLCAidmFsdWUgbXVzdCBiZSBpbnRlZ2VyIik7Ci0rCSAgICByZXR1cm4gLTE7Ci0rCSAgfQot KwotKwlsID0gUHlJbnRfQXNMb25nICh2YWx1ZSk7Ci0rCWlmIChzZWxmLT50eXBlID09IHZhcl91 aW50ZWdlcikKLSsJICB7Ci0rCSAgICBvayA9IChsID49IDAgJiYgbCA8PSBVSU5UX01BWCk7Ci0r CSAgICBpZiAobCA9PSAwKQotKwkgICAgICBsID0gVUlOVF9NQVg7Ci0rCSAgfQotKwllbHNlIGlm IChzZWxmLT50eXBlID09IHZhcl9pbnRlZ2VyKQotKwkgIHsKLSsJICAgIG9rID0gKGwgPj0gSU5U X01JTiAmJiBsIDw9IElOVF9NQVgpOwotKwkgICAgaWYgKGwgPT0gMCkKLSsJICAgICAgbCA9IElO VF9NQVg7Ci0rCSAgfQotKwllbHNlCi0rCSAgb2sgPSAobCA+PSBJTlRfTUlOICYmIGwgPD0gSU5U X01BWCk7Ci0rCi0rCWlmICghIG9rKQotKwkgIHsKLSsJICAgIFB5RXJyX1NldFN0cmluZyAoUHlF eGNfUnVudGltZUVycm9yLCAicmFuZ2UgZXhjZWVkZWQiKTsKLSsJICAgIHJldHVybiAtMTsKLSsJ ICB9Ci0rCi0rCXNlbGYtPnZhbHVlLmludHZhbCA9IChpbnQpIGw7Ci0rCWJyZWFrOwotKyAgICAg IH0KLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRp bWVFcnJvciwgInByb2dyYW1tZXIgZXJyb3I6IHVuaGFuZGxlZCB0eXBlIik7Ci0rICAgICAgcmV0 dXJuIC0xOwotKyAgICB9Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogU2V0IGFuIGF0dHJp YnV0ZS4gICovCi0rc3RhdGljIGludAotK3NldF9hdHRyIChQeU9iamVjdCAqb2JqLCBQeU9iamVj dCAqYXR0cl9uYW1lLCBQeU9iamVjdCAqdmFsKQotK3sKLSsgIGlmIChQeVN0cmluZ19DaGVjayAo YXR0cl9uYW1lKQotKyAgICAgICYmICEgc3RyY21wIChQeVN0cmluZ19Bc1N0cmluZyAoYXR0cl9u YW1lKSwgInZhbHVlIikpCi0rICAgIHsKLSsgICAgICBpZiAoIXZhbCkKLSsJewotKwkgIFB5RXJy X1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLAotKwkJCSAgICJjYW5ub3QgZGVsZXRlIGEg cGFyYW1ldGVyJ3MgdmFsdWUiKTsKLSsJICByZXR1cm4gLTE7Ci0rCX0KLSsgICAgICByZXR1cm4g c2V0X3BhcmFtZXRlcl92YWx1ZSAoKHBhcm1weV9vYmplY3QgKikgb2JqLCB2YWwpOwotKyAgICB9 Ci0rCi0rICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY1NldEF0dHIgKG9iaiwgYXR0cl9uYW1lLCB2 YWwpOwotK30KLSsKLSsMCi0rCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBkaXNwYXRjaGVz IHRvIHRoZSBhcHByb3ByaWF0ZSBhZGRfc2V0c2hvdwotKyAgIGZ1bmN0aW9uLiAgKi8KLStzdGF0 aWMgdm9pZAotK2FkZF9zZXRzaG93X2dlbmVyaWMgKGludCBwYXJtY2xhc3MsIGVudW0gY29tbWFu ZF9jbGFzcyBjbWRjbGFzcywKLSsJCSAgICAgY2hhciAqY21kX25hbWUsIHBhcm1weV9vYmplY3Qg KnNlbGYsCi0rCQkgICAgIGNoYXIgKnNldF9kb2MsIGNoYXIgKnNob3dfZG9jLCBjaGFyICpoZWxw X2RvYywKLSsJCSAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzZXRfbGlzdCwKLSsJCSAg ICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzaG93X2xpc3QpCi0rewotKyAgc3dpdGNoIChw YXJtY2xhc3MpCi0rICAgIHsKLSsgICAgY2FzZSB2YXJfYm9vbGVhbjoKLSsgICAgICBhZGRfc2V0 c2hvd19ib29sZWFuX2NtZCAoY21kX25hbWUsIGNtZGNsYXNzLCAmc2VsZi0+dmFsdWUuaW50dmFs LAotKwkJCSAgICAgICBzZXRfZG9jLCBzaG93X2RvYywgaGVscF9kb2MsCi0rCQkJICAgICAgIE5V TEwsIE5VTEwsIHNldF9saXN0LCBzaG93X2xpc3QpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBj YXNlIHZhcl9hdXRvX2Jvb2xlYW46Ci0rICAgICAgYWRkX3NldHNob3dfYXV0b19ib29sZWFuX2Nt ZCAoY21kX25hbWUsIGNtZGNsYXNzLAotKwkJCQkgICAgJnNlbGYtPnZhbHVlLmF1dG9ib29sdmFs LAotKwkJCQkgICAgc2V0X2RvYywgc2hvd19kb2MsIGhlbHBfZG9jLAotKwkJCQkgICAgTlVMTCwg TlVMTCwgc2V0X2xpc3QsIHNob3dfbGlzdCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2Ug dmFyX3VpbnRlZ2VyOgotKyAgICAgIGFkZF9zZXRzaG93X3VpbnRlZ2VyX2NtZCAoY21kX25hbWUs IGNtZGNsYXNzLCAmc2VsZi0+dmFsdWUudWludHZhbCwKLSsJCQkJc2V0X2RvYywgc2hvd19kb2Ms IGhlbHBfZG9jLAotKwkJCQlOVUxMLCBOVUxMLCBzZXRfbGlzdCwgc2hvd19saXN0KTsKLSsgICAg ICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfaW50ZWdlcjoKLSsgICAgICBhZGRfc2V0c2hvd19p bnRlZ2VyX2NtZCAoY21kX25hbWUsIGNtZGNsYXNzLCAmc2VsZi0+dmFsdWUuaW50dmFsLAotKwkJ CSAgICAgICBzZXRfZG9jLCBzaG93X2RvYywgaGVscF9kb2MsCi0rCQkJICAgICAgIE5VTEwsIE5V TEwsIHNldF9saXN0LCBzaG93X2xpc3QpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIHZh cl9zdHJpbmc6Ci0rICAgICAgYWRkX3NldHNob3dfc3RyaW5nX2NtZCAoY21kX25hbWUsIGNtZGNs YXNzLCAmc2VsZi0+dmFsdWUuc3RyaW5ndmFsLAotKwkJCSAgICAgIHNldF9kb2MsIHNob3dfZG9j LCBoZWxwX2RvYywKLSsJCQkgICAgICBOVUxMLCBOVUxMLCBzZXRfbGlzdCwgc2hvd19saXN0KTsK LSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfc3RyaW5nX25vZXNjYXBlOgotKyAgICAg IGFkZF9zZXRzaG93X3N0cmluZ19ub2VzY2FwZV9jbWQgKGNtZF9uYW1lLCBjbWRjbGFzcywKLSsJ CQkJICAgICAgICZzZWxmLT52YWx1ZS5zdHJpbmd2YWwsCi0rCQkJCSAgICAgICBzZXRfZG9jLCBz aG93X2RvYywgaGVscF9kb2MsCi0rCQkJCSAgICAgICBOVUxMLCBOVUxMLCBzZXRfbGlzdCwgc2hv d19saXN0KTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfb3B0aW9uYWxfZmlsZW5h bWU6Ci0rICAgICAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVfY21kIChjbWRfbmFtZSwg Y21kY2xhc3MsCi0rCQkJCQkgJnNlbGYtPnZhbHVlLnN0cmluZ3ZhbCwKLSsJCQkJCSBzZXRfZG9j LCBzaG93X2RvYywgaGVscF9kb2MsCi0rCQkJCQkgTlVMTCwgTlVMTCwgc2V0X2xpc3QsIHNob3df bGlzdCk7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgdmFyX2ZpbGVuYW1lOgotKyAgICAg IGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoY21kX25hbWUsIGNtZGNsYXNzLCAmc2VsZi0+dmFs dWUuc3RyaW5ndmFsLAotKwkJCQlzZXRfZG9jLCBzaG93X2RvYywgaGVscF9kb2MsCi0rCQkJCU5V TEwsIE5VTEwsIHNldF9saXN0LCBzaG93X2xpc3QpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBj YXNlIHZhcl96aW50ZWdlcjoKLSsgICAgICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKGNtZF9u YW1lLCBjbWRjbGFzcywgJnNlbGYtPnZhbHVlLmludHZhbCwKLSsJCQkJc2V0X2RvYywgc2hvd19k b2MsIGhlbHBfZG9jLAotKwkJCQlOVUxMLCBOVUxMLCBzZXRfbGlzdCwgc2hvd19saXN0KTsKLSsg ICAgICBicmVhazsKLSsKLSsgICAgY2FzZSB2YXJfZW51bToKLSsgICAgICBhZGRfc2V0c2hvd19l bnVtX2NtZCAoY21kX25hbWUsIGNtZGNsYXNzLCBzZWxmLT5lbnVtZXJhdGlvbiwKLSsJCQkgICAg JnNlbGYtPnZhbHVlLmNzdHJpbmd2YWwsCi0rCQkJICAgIHNldF9kb2MsIHNob3dfZG9jLCBoZWxw X2RvYywKLSsJCQkgICAgTlVMTCwgTlVMTCwgc2V0X2xpc3QsIHNob3dfbGlzdCk7Ci0rICAgICAg LyogSW5pdGlhbGl6ZSB0aGUgdmFsdWUsIGp1c3QgaW4gY2FzZS4gICovCi0rICAgICAgc2VsZi0+ dmFsdWUuY3N0cmluZ3ZhbCA9IHNlbGYtPmVudW1lcmF0aW9uWzBdOwotKyAgICAgIGJyZWFrOwot KyAgICB9Ci0rfQotKwotKy8qIEEgaGVscGVyIHdoaWNoIGNvbXB1dGVzIGVudW0gdmFsdWVzLiAg UmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24KLSsgICBlcnJvci4gICovCi0rc3RhdGljIGludAot K2NvbXB1dGVfZW51bV92YWx1ZXMgKHBhcm1weV9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICplbnVt X3ZhbHVlcykKLSt7Ci0rICBQeV9zc2l6ZV90IHNpemUsIGk7Ci0rCi0rICBpZiAoISBlbnVtX3Zh bHVlcykKLSsgICAgewotKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9y LAotKwkJICAgICAgICJlbnVtZXJhdGlvbiByZXF1aXJlZCBmb3IgUEFSQU1fRU5VTSIpOwotKyAg ICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICBpZiAoISBQeVNlcXVlbmNlX0NoZWNrIChlbnVt X3ZhbHVlcykpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVF cnJvciwgImVudW1lcmF0aW9uIGlzIG5vdCBhIHNlcXVlbmNlIik7Ci0rICAgICAgcmV0dXJuIDA7 Ci0rICAgIH0KLSsKLSsgIHNpemUgPSBQeVNlcXVlbmNlX1NpemUgKGVudW1fdmFsdWVzKTsKLSsg IGlmIChzaXplIDwgMCkKLSsgICAgcmV0dXJuIDA7Ci0rICBpZiAoc2l6ZSA9PSAwKQotKyAgICB7 Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsICJlbXB0eSBlbnVt ZXJhdGlvbiIpOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICBzZWxmLT5lbnVtZXJh dGlvbiA9IHhtYWxsb2MgKChzaXplICsgMSkgKiBzaXplb2YgKGNoYXIgKikpOwotKyAgbWVtc2V0 IChzZWxmLT5lbnVtZXJhdGlvbiwgMCwgKHNpemUgKyAxKSAqIHNpemVvZiAoY2hhciAqKSk7Ci0r Ci0rICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotKyAgICB7Ci0rICAgICAgUHlPYmplY3Qg Kml0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0gKGVudW1fdmFsdWVzLCBpKTsKLSsgICAgICBpZiAo ISBpdGVtKQotKwlyZXR1cm4gMDsKLSsgICAgICBpZiAoISBnZGJweV9pc19zdHJpbmcgKGl0ZW0p KQotKwl7Ci0rCSAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsICJlbnVtZXJh dGlvbiBpdGVtIG5vdCBhIHN0cmluZyIpOwotKwkgIHJldHVybiAwOwotKwl9Ci0rICAgICAgc2Vs Zi0+ZW51bWVyYXRpb25baV0gPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChpdGVtKTsK LSsgICAgfQotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHdo aWNoIHJldHVybnMgYSBkb2N1bWVudGF0aW9uIHN0cmluZyBmb3IgYW4KLSsgICBvYmplY3QuICAq LwotK3N0YXRpYyBjaGFyICoKLStnZXRfZG9jX3N0cmluZyAoUHlPYmplY3QgKm9iamVjdCwgUHlP YmplY3QgKmF0dHIpCi0rewotKyAgY2hhciAqcmVzdWx0ID0gTlVMTDsKLSsgIGlmIChQeU9iamVj dF9IYXNBdHRyIChvYmplY3QsIGF0dHIpKQotKyAgICB7Ci0rICAgICAgUHlPYmplY3QgKmRzX29i aiA9IFB5T2JqZWN0X0dldEF0dHIgKG9iamVjdCwgYXR0cik7Ci0rICAgICAgaWYgKGRzX29iaiAm JiBnZGJweV9pc19zdHJpbmcgKGRzX29iaikpCi0rCXJlc3VsdCA9IHB5dGhvbl9zdHJpbmdfdG9f aG9zdF9zdHJpbmcgKGRzX29iaik7Ci0rICAgIH0KLSsgIGlmICghIHJlc3VsdCkKLSsgICAgcmVz dWx0ID0geHN0cmR1cCAoIlRoaXMgY29tbWFuZCBpcyBub3QgZG9jdW1lbnRlZC4iKTsKLSsgIHJl dHVybiByZXN1bHQ7Ci0rfQotKwotKy8qIE9iamVjdCBpbml0aWFsaXplcjsgc2V0cyB1cCBnZGIt c2lkZSBzdHJ1Y3R1cmVzIGZvciBjb21tYW5kLgotKwotKyAgIFVzZTogX19pbml0X18oTkFNRSwg Q01EQ0xBU1MsIFBBUk1DTEFTUywgW0VOVU1dKQotKwotKyAgIE5BTUUgaXMgdGhlIG5hbWUgb2Yg dGhlIHBhcmFtZXRlci4gIEl0IG1heSBjb25zaXN0IG9mIG11bHRpcGxlCi0rICAgd29yZHMsIGlu IHdoaWNoIGNhc2UgdGhlIGZpbmFsIHdvcmQgaXMgdGhlIG5hbWUgb2YgdGhlIG5ldyBjb21tYW5k LAotKyAgIGFuZCBlYXJsaWVyIHdvcmRzIG11c3QgYmUgcHJlZml4IGNvbW1hbmRzLgotKwotKyAg IENNRENMQVNTIGlzIHRoZSBraW5kIG9mIGNvbW1hbmQuICBJdCBzaG91bGQgYmUgb25lIG9mIHRo ZSBDT01NQU5EXyoKLSsgICBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgZ2RiIG1vZHVsZS4KLSsK LSsgICBQQVJNQ0xBU1MgaXMgdGhlIHR5cGUgb2YgdGhlIHBhcmFtZXRlci4gIEl0IHNob3VsZCBi ZSBvbmUgb2YgdGhlCi0rICAgUEFSQU1fKiBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgZ2RiIG1v ZHVsZS4KLSsKLSsgICBJZiBQQVJNQ0xBU1MgaXMgUEFSQU1fRU5VTSwgdGhlbiB0aGUgZmluYWwg YXJndW1lbnQgc2hvdWxkIGJlIGEKLSsgICBjb2xsZWN0aW9uIG9mIHN0cmluZ3MuICBUaGVzZSBz dHJpbmdzIGFyZSB0aGUgdmFsaWQgdmFsdWVzIGZvciB0aGlzCi0rICAgcGFyYW1ldGVyLgotKwot KyAgIFRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgcGFyYW1ldGVyIGlzIHRha2VuIGZyb20gdGhl IGRvYyBzdHJpbmcKLSsgICBmb3IgdGhlIHB5dGhvbiBjbGFzcy4KLSsgICAKLSsqLwotK3N0YXRp YyBpbnQKLStwYXJtcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9i amVjdCAqa3dkcykKLSt7Ci0rICBwYXJtcHlfb2JqZWN0ICpvYmogPSAocGFybXB5X29iamVjdCAq KSBzZWxmOwotKyAgY2hhciAqbmFtZTsKLSsgIGNoYXIgKnNldF9kb2MsICpzaG93X2RvYywgKmRv YzsKLSsgIGNoYXIgKmNtZF9uYW1lOwotKyAgaW50IHBhcm1jbGFzcywgY21kdHlwZTsKLSsgIFB5 T2JqZWN0ICplbnVtX3ZhbHVlcyA9IE5VTEw7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq Y21kX2xpc3Q7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKnNldF9saXN0LCAqKnNob3df bGlzdDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIGlm ICghIFB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJzaWl8TyIsICZuYW1lLCAmY21kdHlwZSwgJnBh cm1jbGFzcywKLSsJCQkgICZlbnVtX3ZhbHVlcykpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIGlm IChjbWR0eXBlICE9IG5vX2NsYXNzICYmIGNtZHR5cGUgIT0gY2xhc3NfcnVuCi0rICAgICAgJiYg Y21kdHlwZSAhPSBjbGFzc192YXJzICYmIGNtZHR5cGUgIT0gY2xhc3Nfc3RhY2sKLSsgICAgICAm JiBjbWR0eXBlICE9IGNsYXNzX2ZpbGVzICYmIGNtZHR5cGUgIT0gY2xhc3Nfc3VwcG9ydAotKyAg ICAgICYmIGNtZHR5cGUgIT0gY2xhc3NfaW5mbyAmJiBjbWR0eXBlICE9IGNsYXNzX2JyZWFrcG9p bnQKLSsgICAgICAmJiBjbWR0eXBlICE9IGNsYXNzX3RyYWNlICYmIGNtZHR5cGUgIT0gY2xhc3Nf b2JzY3VyZQotKyAgICAgICYmIGNtZHR5cGUgIT0gY2xhc3NfbWFpbnRlbmFuY2UpCi0rICAgIHsK LSsgICAgICBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgY29tbWFu ZCBjbGFzcyBhcmd1bWVudCIpOwotKyAgICAgIHJldHVybiAtMTsKLSsgICAgfQotKwotKyAgaWYg KHBhcm1jbGFzcyAhPSB2YXJfYm9vbGVhbiAmJiBwYXJtY2xhc3MgIT0gdmFyX2F1dG9fYm9vbGVh bgotKyAgICAgICYmIHBhcm1jbGFzcyAhPSB2YXJfdWludGVnZXIgJiYgcGFybWNsYXNzICE9IHZh cl9pbnRlZ2VyCi0rICAgICAgJiYgcGFybWNsYXNzICE9IHZhcl9zdHJpbmcgJiYgcGFybWNsYXNz ICE9IHZhcl9zdHJpbmdfbm9lc2NhcGUKLSsgICAgICAmJiBwYXJtY2xhc3MgIT0gdmFyX29wdGlv bmFsX2ZpbGVuYW1lICYmIHBhcm1jbGFzcyAhPSB2YXJfZmlsZW5hbWUKLSsgICAgICAmJiBwYXJt Y2xhc3MgIT0gdmFyX3ppbnRlZ2VyICYmIHBhcm1jbGFzcyAhPSB2YXJfZW51bSkKLSsgICAgewot KyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLCAiaW52YWxpZCBwYXJh bWV0ZXIgY2xhc3MgYXJndW1lbnQiKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsKLSsg IGlmIChlbnVtX3ZhbHVlcyAmJiBwYXJtY2xhc3MgIT0gdmFyX2VudW0pCi0rICAgIHsKLSsgICAg ICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwKLSsJCSAgICAgICAib25seSBQ QVJBTV9FTlVNIGFjY2VwdHMgYSBmb3VydGggYXJndW1lbnQiKTsKLSsgICAgICByZXR1cm4gLTE7 Ci0rICAgIH0KLSsgIGlmIChwYXJtY2xhc3MgPT0gdmFyX2VudW0pCi0rICAgIHsKLSsgICAgICBp ZiAoISBjb21wdXRlX2VudW1fdmFsdWVzIChvYmosIGVudW1fdmFsdWVzKSkKLSsJcmV0dXJuIC0x OwotKyAgICB9Ci0rCi0rICBvYmotPnR5cGUgPSAoZW51bSB2YXJfdHlwZXMpIHBhcm1jbGFzczsK LSsgIG1lbXNldCAoJm9iai0+dmFsdWUsIDAsIHNpemVvZiAob2JqLT52YWx1ZSkpOwotKyAgb2Jq LT5lbnVtZXJhdGlvbiA9IE5VTEw7Ci0rCi0rICBjbWRfbmFtZSA9IGdkYnB5X3BhcnNlX2NvbW1h bmRfbmFtZSAobmFtZSwgJnNldF9saXN0LCAmc2V0bGlzdCk7Ci0rICBpZiAoISBjbWRfbmFtZSkK LSsgICAgcmV0dXJuIC0xOwotKyAgeGZyZWUgKGNtZF9uYW1lKTsKLSsgIGNtZF9uYW1lID0gZ2Ri cHlfcGFyc2VfY29tbWFuZF9uYW1lIChuYW1lLCAmc2hvd19saXN0LCAmc2hvd2xpc3QpOwotKyAg aWYgKCEgY21kX25hbWUpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIC8qIEZJWE1FOiB0aGVyZSBp cyBubyB3YXkgdG8gcmVnaXN0ZXIgYSBkZXN0cnVjdG9yIGZ1bmN0aW9uIGZvcgotKyAgICAgc2V0 L3Nob3cgY29tbWFuZHMuICBTbywgdGhlc2UgYXJlIGxlYWtlZC4gICovCi0rICBzZXRfZG9jID0g Z2V0X2RvY19zdHJpbmcgKHNlbGYsIHNldF9kb2NfY3N0KTsKLSsgIHNob3dfZG9jID0gZ2V0X2Rv Y19zdHJpbmcgKHNlbGYsIHNob3dfZG9jX2NzdCk7Ci0rICBkb2MgPSBnZXRfZG9jX3N0cmluZyAo c2VsZiwgZ2RicHlfZG9jX2NzdCk7Ci0rCi0rICBQeV9JTkNSRUYgKHNlbGYpOwotKwotKyAgVFJZ X0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIGFkZF9zZXRz aG93X2dlbmVyaWMgKHBhcm1jbGFzcywgKGVudW0gY29tbWFuZF9jbGFzcykgY21kdHlwZSwKLSsJ CQkgICBjbWRfbmFtZSwgb2JqLAotKwkJCSAgIHNldF9kb2MsIHNob3dfZG9jLAotKwkJCSAgIGRv Yywgc2V0X2xpc3QsIHNob3dfbGlzdCk7Ci0rICAgIH0KLSsgIGlmIChleGNlcHQucmVhc29uIDwg MCkKLSsgICAgewotKyAgICAgIHhmcmVlIChjbWRfbmFtZSk7Ci0rICAgICAgeGZyZWUgKHNldF9k b2MpOwotKyAgICAgIHhmcmVlIChzaG93X2RvYyk7Ci0rICAgICAgeGZyZWUgKGRvYyk7Ci0rICAg ICAgUHlfREVDUkVGIChzZWxmKTsKLSsgICAgICBQeUVycl9Gb3JtYXQgKGV4Y2VwdC5yZWFzb24g PT0gUkVUVVJOX1FVSVQKLSsJCSAgICA/IFB5RXhjX0tleWJvYXJkSW50ZXJydXB0IDogUHlFeGNf UnVudGltZUVycm9yLAotKwkJICAgICIlcyIsIGV4Y2VwdC5tZXNzYWdlKTsKLSsgICAgICByZXR1 cm4gLTE7Ci0rICAgIH0KLSsgIHJldHVybiAwOwotK30KLSsKLSsMCi0rCi0rLyogSW5pdGlhbGl6 ZSB0aGUgJ3BhcmFtZXRlcnMnIG1vZHVsZS4gICovCi0rdm9pZAotK2dkYnB5X2luaXRpYWxpemVf cGFyYW1ldGVycyAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGlmIChQeVR5cGVfUmVhZHkg KCZwYXJtcHlfb2JqZWN0X3R5cGUpIDwgMCkKLSsgICAgcmV0dXJuOwotKwotKyAgc2V0X2RvY19j c3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nICgic2V0X2RvYyIpOwotKyAgaWYgKCEgc2V0X2RvY19j c3QpCi0rICAgIHJldHVybjsKLSsgIHNob3dfZG9jX2NzdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcg KCJzaG93X2RvYyIpOwotKyAgaWYgKCEgc2hvd19kb2NfY3N0KQotKyAgICByZXR1cm47Ci0rCi0r ICBmb3IgKGkgPSAwOyBwYXJtX2NvbnN0YW50c1tpXS5uYW1lOyArK2kpCi0rICAgIHsKLSsgICAg ICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsCi0rCQkJCSAgIHBhcm1f Y29uc3RhbnRzW2ldLm5hbWUsCi0rCQkJCSAgIHBhcm1fY29uc3RhbnRzW2ldLnZhbHVlKSA8IDAp Ci0rCXJldHVybjsKLSsgICAgfQotKwotKyAgUHlfSU5DUkVGICgmcGFybXB5X29iamVjdF90eXBl KTsKLSsgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIlBhcmFtZXRlciIsCi0rCQkg ICAgICAoUHlPYmplY3QgKikgJnBhcm1weV9vYmplY3RfdHlwZSk7Ci0rfQotKwotKwwKLSsKLStz dGF0aWMgUHlUeXBlT2JqZWN0IHBhcm1weV9vYmplY3RfdHlwZSA9Ci0rewotKyAgUHlPYmplY3Rf SEVBRF9JTklUIChOVUxMKQotKyAgMCwJCQkJICAvKm9iX3NpemUqLwotKyAgImdkYi5QYXJhbWV0 ZXIiLAkJICAvKnRwX25hbWUqLwotKyAgc2l6ZW9mIChwYXJtcHlfb2JqZWN0KSwJICAvKnRwX2Jh c2ljc2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfaXRlbXNpemUqLwotKyAgMCwJCQkJICAvKnRwX2Rl YWxsb2MqLwotKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRy Ki8KLSsgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9jb21wYXJlKi8K LSsgIDAsCQkJCSAgLyp0cF9yZXByKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19udW1iZXIqLwotKyAg MCwJCQkJICAvKnRwX2FzX3NlcXVlbmNlKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19tYXBwaW5nKi8K LSsgIDAsCQkJCSAgLyp0cF9oYXNoICovCi0rICAwLAkJCQkgIC8qdHBfY2FsbCovCi0rICAwLAkJ CQkgIC8qdHBfc3RyKi8KLSsgIGdldF9hdHRyLAkJCSAgLyp0cF9nZXRhdHRybyovCi0rICBzZXRf YXR0ciwJCQkgIC8qdHBfc2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX2FzX2J1ZmZlciovCi0r ICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKnRwX2ZsYWdzKi8K LSsgICJHREIgcGFyYW1ldGVyIG9iamVjdCIsCSAgLyogdHBfZG9jICovCi0rICAwLAkJCQkgIC8q IHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkgIC8qIHRwX2NsZWFyICovCi0rICAwLAkJCQkgIC8q IHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJCQkgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0r ICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KLSsgIDAsCQkJCSAgLyogdHBfaXRlcm5leHQgKi8KLSsg IDAsCQkJCSAgLyogdHBfbWV0aG9kcyAqLwotKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0r ICAwLAkJCQkgIC8qIHRwX2dldHNldCAqLwotKyAgMCwJCQkJICAvKiB0cF9iYXNlICovCi0rICAw LAkJCQkgIC8qIHRwX2RpY3QgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGVzY3JfZ2V0ICovCi0rICAw LAkJCQkgIC8qIHRwX2Rlc2NyX3NldCAqLwotKyAgMCwJCQkJICAvKiB0cF9kaWN0b2Zmc2V0ICov Ci0rICBwYXJtcHlfaW5pdCwJCQkgIC8qIHRwX2luaXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfYWxs b2MgKi8KLSsgIFB5VHlwZV9HZW5lcmljTmV3CQkgIC8qIHRwX25ldyAqLwotK307Ci1kaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jIGIvZ2RiL3B5dGhvbi9weS1wcmV0dHlw cmludC5jCi1pbmRleCA0NTRhYTVhLi45OTkxZjEzIDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhvbi9w eS1wcmV0dHlwcmludC5jCi0rKysgYi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKLUBAIC0x NDMsMTAgKzE0MywxNSBAQCBwcmV0dHlfcHJpbnRfb25lX3ZhbHVlIChQeU9iamVjdCAqcHJpbnRl ciwgc3RydWN0IHZhbHVlICoqb3V0X3ZhbHVlKQotIAkgIGlmICghIGdkYnB5X2lzX3N0cmluZyAo cmVzdWx0KSAmJiAhIGdkYnB5X2lzX2xhenlfc3RyaW5nIChyZXN1bHQpKQotIAkgICAgewotIAkg ICAgICAqb3V0X3ZhbHVlID0gY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAocmVzdWx0KTsKLS0J ICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpKQotLQkJKm91dF92YWx1ZSA9IE5VTEw7Ci0tCSAg ICAgIFB5X0RFQ1JFRiAocmVzdWx0KTsKLS0JICAgICAgcmVzdWx0ID0gTlVMTDsKLSsgCSAgICAg IGlmIChQeUVycl9PY2N1cnJlZCAoKSkKLSsgCQkqb3V0X3ZhbHVlID0gTlVMTDsKLSsJICAgICAg ZWxzZQotKwkJLyogV2UgbXVzdCBpbmNyZW1lbnQgdGhlIHZhbHVlJ3MgcmVmY291bnQsIGJlY2F1 c2Ugd2UKLSsJCSAgIGFyZSBhYm91dCB0byBkZWNyZWYgUkVTVUxULCBhbmQgdGhpcyBtYXkgcmVz dWx0IGluCi0rCQkgICB0aGUgdmFsdWUgYmVpbmcgZGVzdHJveWVkLiAgKi8KLSsJCXZhbHVlX2lu Y3JlZiAoKm91dF92YWx1ZSk7Ci0rIAkgICAgICBQeV9ERUNSRUYgKHJlc3VsdCk7Ci0rIAkgICAg ICByZXN1bHQgPSBOVUxMOwotIAkgICAgfQotIAl9Ci0gICAgIH0KLUBAIC02MDUsMTQgKzYxMCw3 IEBAIGdkYnB5X2dldF92YXJvYmpfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB2YWx1ZSAqdmFsdWUp Ci0gewotICAgUHlPYmplY3QgKnZhbF9vYmo7Ci0gICBQeU9iamVjdCAqcHJldHR5X3ByaW50ZXIg PSBOVUxMOwotLSAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotIAotLSAg VFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLS0gICAgewotLSAgICAgIHZhbHVl ID0gdmFsdWVfY29weSAodmFsdWUpOwotLSAgICB9Ci0tICBHREJfUFlfSEFORExFX0VYQ0VQVElP TiAoZXhjZXB0KTsKLS0gIAotICAgdmFsX29iaiA9IHZhbHVlX3RvX3ZhbHVlX29iamVjdCAodmFs dWUpOwotICAgaWYgKCEgdmFsX29iaikKLSAgICAgcmV0dXJuIE5VTEw7Ci1kaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9weS1zeW1ib2wuYyBiL2dkYi9weXRob24vcHktc3ltYm9sLmMKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wM2Q0M2MxCi0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvcHl0aG9uL3B5LXN5bWJvbC5jCi1AQCAtMCwwICsxLDMzNiBAQAotKy8qIFB5dGhvbiBp bnRlcmZhY2UgdG8gc3ltYm9scy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsj aW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJibG9jay5oIgotKyNpbmNsdWRlICJleGNlcHRp b25zLmgiCi0rI2luY2x1ZGUgImZyYW1lLmgiCi0rI2luY2x1ZGUgInN5bXRhYi5oIgotKyNpbmNs dWRlICJweXRob24taW50ZXJuYWwuaCIKLSsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICBQeU9iamVj dF9IRUFECi0rICBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2w7Ci0rfSBzeW1ib2xfb2JqZWN0OwotKwot KwotK3N0YXRpYyBQeU9iamVjdCAqCi0rc3ltcHlfc3RyIChQeU9iamVjdCAqc2VsZikKLSt7Ci0r ICBpbnQgcmV0OwotKyAgY2hhciAqczsKLSsgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0rCi0rICByZXQg PSBhc3ByaW50ZiAoJnMsICJzeW1ib2wgZm9yICVzIiwKLSsJCSAgU1lNQk9MX1BSSU5UX05BTUUg KCgoc3ltYm9sX29iamVjdCAqKSBzZWxmKS0+c3ltYm9sKSk7Ci0rICBpZiAocmV0IDwgMCkKLSsg ICAgUHlfUkVUVVJOX05PTkU7Ci0rCi0rICByZXN1bHQgPSBQeVN0cmluZ19Gcm9tU3RyaW5nIChz KTsKLSsgIHhmcmVlIChzKTsKLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotK3N0YXRpYyBQ eU9iamVjdCAqCi0rc3ltcHlfZ2V0X3ZhbHVlIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3Vy ZSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpzZWxmX3N5bSA9IChzeW1ib2xfb2JqZWN0ICopIHNl bGY7Ci0rCi0rICBzd2l0Y2ggKFNZTUJPTF9DTEFTUyAoc2VsZl9zeW0tPnN5bWJvbCkpCi0rICAg IHsKLSsgICAgY2FzZSBMT0NfQkxPQ0s6Ci0rICAgICAgcmV0dXJuIGJsb2NrX3RvX2Jsb2NrX29i amVjdCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChzZWxmX3N5bS0+c3ltYm9sKSk7Ci0rICAgIH0KLSsK LSsgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLSsJCSAgICJT eW1ib2wgdHlwZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBQeXRob24gc2NyaXB0cy4iKTsKLSsgIHJl dHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2dldF9zeW10YWIg KFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIHN5bWJvbF9vYmplY3QgKnNl bGZfc3ltID0gKHN5bWJvbF9vYmplY3QgKikgc2VsZjsKLSsKLSsgIHJldHVybiBzeW10YWJfdG9f c3ltdGFiX29iamVjdCAoU1lNQk9MX1NZTVRBQiAoc2VsZl9zeW0tPnN5bWJvbCkpOwotK30KLSsK LStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2dldF9uYW1lIChQeU9iamVjdCAqc2VsZiwgdm9p ZCAqY2xvc3VyZSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpzZWxmX3N5bSA9IChzeW1ib2xfb2Jq ZWN0ICopIHNlbGY7Ci0rCi0rICByZXR1cm4gUHlTdHJpbmdfRnJvbVN0cmluZyAoU1lNQk9MX05B VFVSQUxfTkFNRSAoc2VsZl9zeW0tPnN5bWJvbCkpOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3Qg KgotK3N5bXB5X2dldF9saW5rYWdlX25hbWUgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJl KQotK3sKLSsgIHN5bWJvbF9vYmplY3QgKnNlbGZfc3ltID0gKHN5bWJvbF9vYmplY3QgKikgc2Vs ZjsKLSsKLSsgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nIChTWU1CT0xfTElOS0FHRV9OQU1F IChzZWxmX3N5bS0+c3ltYm9sKSk7Ci0rfQotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rc3ltcHlf Z2V0X3ByaW50X25hbWUgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIHN5 bWJvbF9vYmplY3QgKnNlbGZfc3ltID0gKHN5bWJvbF9vYmplY3QgKikgc2VsZjsKLSsKLSsgIHJl dHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nIChTWU1CT0xfUFJJTlRfTkFNRSAoc2VsZl9zeW0tPnN5 bWJvbCkpOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2dldF9hZGRyX2NsYXNz IChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpz ZWxmX3N5bSA9IChzeW1ib2xfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICByZXR1cm4gUHlJbnRfRnJv bUxvbmcgKFNZTUJPTF9DTEFTUyAoc2VsZl9zeW0tPnN5bWJvbCkpOwotK30KLSsKLStzdGF0aWMg UHlPYmplY3QgKgotK3N5bXB5X2lzX2FyZ3VtZW50IChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xv c3VyZSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpzZWxmX3N5bSA9IChzeW1ib2xfb2JqZWN0ICop IHNlbGY7Ci0rCi0rICByZXR1cm4gUHlCb29sX0Zyb21Mb25nIChTWU1CT0xfSVNfQVJHVU1FTlQg KHNlbGZfc3ltLT5zeW1ib2wpKTsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStzeW1weV9p c19jb25zdGFudCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgc3ltYm9s X29iamVjdCAqc2VsZl9zeW0gPSAoc3ltYm9sX29iamVjdCAqKSBzZWxmOwotKyAgZW51bSBhZGRy ZXNzX2NsYXNzIGNsYXNzID0gU1lNQk9MX0NMQVNTIChzZWxmX3N5bS0+c3ltYm9sKTsKLSsKLSsg IHJldHVybiBQeUJvb2xfRnJvbUxvbmcgKGNsYXNzID09IExPQ19DT05TVCB8fCBjbGFzcyA9PSBM T0NfQ09OU1RfQllURVMpOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2lzX2Z1 bmN0aW9uIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBzeW1ib2xfb2Jq ZWN0ICpzZWxmX3N5bSA9IChzeW1ib2xfb2JqZWN0ICopIHNlbGY7Ci0rICBlbnVtIGFkZHJlc3Nf Y2xhc3MgY2xhc3MgPSBTWU1CT0xfQ0xBU1MgKHNlbGZfc3ltLT5zeW1ib2wpOwotKwotKyAgcmV0 dXJuIFB5Qm9vbF9Gcm9tTG9uZyAoY2xhc3MgPT0gTE9DX0JMT0NLKTsKLSt9Ci0rCi0rc3RhdGlj IFB5T2JqZWN0ICoKLStzeW1weV9pc192YXJpYWJsZSAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNs b3N1cmUpCi0rewotKyAgc3ltYm9sX29iamVjdCAqc2VsZl9zeW0gPSAoc3ltYm9sX29iamVjdCAq KSBzZWxmOwotKyAgZW51bSBhZGRyZXNzX2NsYXNzIGNsYXNzID0gU1lNQk9MX0NMQVNTIChzZWxm X3N5bS0+c3ltYm9sKTsKLSsKLSsgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcgKCFTWU1CT0xfSVNf QVJHVU1FTlQgKHNlbGZfc3ltLT5zeW1ib2wpCi0rICAgICAgJiYgKGNsYXNzID09IExPQ19MT0NB TCB8fCBjbGFzcyA9PSBMT0NfUkVHSVNURVIgfHwgY2xhc3MgPT0gTE9DX1NUQVRJQwotKwkgIHx8 IGNsYXNzID09IExPQ19DT01QVVRFRCB8fCBjbGFzcyA9PSBMT0NfT1BUSU1JWkVEX09VVCkpOwot K30KLSsKLStQeU9iamVjdCAqCi0rc3ltYm9sX3RvX3N5bWJvbF9vYmplY3QgKHN0cnVjdCBzeW1i b2wgKnN5bSkKLSt7Ci0rICBzeW1ib2xfb2JqZWN0ICpzeW1fb2JqOwotKwotKyAgc3ltX29iaiA9 IFB5T2JqZWN0X05ldyAoc3ltYm9sX29iamVjdCwgJnN5bWJvbF9vYmplY3RfdHlwZSk7Ci0rICBp ZiAoc3ltX29iaiA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4 Y19NZW1vcnlFcnJvciwgIkNvdWxkIG5vdCBhbGxvY2F0ZSBzeW1ib2wgb2JqZWN0LiIpOwotKyAg ICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICBzeW1fb2JqLT5zeW1ib2wgPSBzeW07Ci0r Ci0rICByZXR1cm4gKFB5T2JqZWN0ICopIHN5bV9vYmo7Ci0rfQotKwotK3N0cnVjdCBzeW1ib2wg KgotK3N5bWJvbF9vYmplY3RfdG9fc3ltYm9sIChQeU9iamVjdCAqb2JqKQotK3sKLSsgIGlmICgh IFB5T2JqZWN0X1R5cGVDaGVjayAob2JqLCAmc3ltYm9sX29iamVjdF90eXBlKSkKLSsgICAgcmV0 dXJuIE5VTEw7Ci0rICByZXR1cm4gKChzeW1ib2xfb2JqZWN0ICopIG9iaiktPnN5bWJvbDsKLSt9 Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YKLSsgICBnZGIubG9va3VwX3N5bWJvbCAobmFtZSBb LCBibG9ja10gWywgZG9tYWluXSkgLT4gKHN5bWJvbCwgaXNfZmllbGRfb2ZfdGhpcykKLSsgICBB IHR1cGxlIHdpdGggMiBlbGVtZW50cyBpcyBhbHdheXMgcmV0dXJuZWQuICBUaGUgZmlyc3QgaXMg dGhlIHN5bWJvbAotKyAgIG9iamVjdCBvciBOb25lLCB0aGUgc2Vjb25kIGlzIGEgYm9vbGVhbiB3 aXRoIHRoZSB2YWx1ZSBvZgotKyAgIGlzX2FfZmllbGRfb2ZfdGhpcyAoc2VlIGNvbW1lbnQgaW4g bG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSkuICAqLwotKwotK1B5T2JqZWN0ICpnZGJweV9sb29r dXBfc3ltYm9sIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykK LSt7Ci0rICBpbnQgZG9tYWluID0gVkFSX0RPTUFJTiwgaXNfYV9maWVsZF9vZl90aGlzID0gMDsK LSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsgIm5h bWUiLCAiYmxvY2siLCAiZG9tYWluIiwgTlVMTCB9OwotKyAgc3RydWN0IHN5bWJvbCAqc3ltYm9s OwotKyAgUHlPYmplY3QgKmJsb2NrX29iaiA9IE5VTEwsICpyZXRfdHVwbGUsICpzeW1fb2JqLCAq Ym9vbF9vYmo7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrID0gTlVMTDsKLSsKLSsgIGlmICghIFB5 QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyAoYXJncywga3csICJzfE8haSIsIGtleXdvcmRzLCAm bmFtZSwKLSsJCQkJICAgICAmYmxvY2tfb2JqZWN0X3R5cGUsICZibG9ja19vYmosICZkb21haW4p KQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIGlmIChibG9ja19vYmopCi0rICAgIGJsb2NrID0g YmxvY2tfb2JqZWN0X3RvX2Jsb2NrIChibG9ja19vYmopOwotKyAgZWxzZQotKyAgICB7Ci0rICAg ICAgc3RydWN0IGZyYW1lX2luZm8gKnNlbGVjdGVkX2ZyYW1lOwotKyAgICAgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgICAgICBUUllfQ0FUQ0ggKGV4Y2VwdCwg UkVUVVJOX01BU0tfQUxMKQotKwl7Ci0rCSAgc2VsZWN0ZWRfZnJhbWUgID0gZ2V0X3NlbGVjdGVk X2ZyYW1lIChfKCJObyBmcmFtZSBzZWxlY3RlZC4iKSk7Ci0rCSAgYmxvY2sgPSBibG9ja19mb3Jf cGMgKGdldF9mcmFtZV9hZGRyZXNzX2luX2Jsb2NrIChzZWxlY3RlZF9mcmFtZSkpOwotKwl9Ci0r ICAgICAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7Ci0rICAgIH0KLSsKLSsgIHN5 bWJvbCA9IGxvb2t1cF9zeW1ib2wgKG5hbWUsIGJsb2NrLCBkb21haW4sICZpc19hX2ZpZWxkX29m X3RoaXMpOwotKwotKyAgcmV0X3R1cGxlID0gUHlUdXBsZV9OZXcgKDIpOwotKyAgaWYgKCFyZXRf dHVwbGUpCi0rICAgIHsKLSsgICAgICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX01lbW9yeUVycm9y LCAiQ291bGQgbm90IGFsbG9jYXRlIHR1cGxlIG9iamVjdC4iKTsKLSsgICAgICByZXR1cm4gTlVM TDsKLSsgICAgfQotKwotKyAgaWYgKHN5bWJvbCkKLSsgICAgewotKyAgICAgIHN5bV9vYmogPSBz eW1ib2xfdG9fc3ltYm9sX29iamVjdCAoc3ltYm9sKTsKLSsgICAgICBpZiAoIXN5bV9vYmopCi0r CXsKLSsJICBQeV9ERUNSRUYgKHJldF90dXBsZSk7Ci0rCSAgcmV0dXJuIE5VTEw7Ci0rCX0KLSsg ICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3ltX29iaiA9IFB5X05vbmU7Ci0rICAgICAg UHlfSU5DUkVGIChQeV9Ob25lKTsKLSsgICAgfQotKyAgUHlUdXBsZV9TRVRfSVRFTSAocmV0X3R1 cGxlLCAwLCBzeW1fb2JqKTsKLSsKLSsgIGJvb2xfb2JqID0gaXNfYV9maWVsZF9vZl90aGlzPyBQ eV9UcnVlIDogUHlfRmFsc2U7Ci0rICBQeV9JTkNSRUYgKGJvb2xfb2JqKTsKLSsgIFB5VHVwbGVf U0VUX0lURU0gKHJldF90dXBsZSwgMSwgYm9vbF9vYmopOwotKwotKyAgcmV0dXJuIHJldF90dXBs ZTsKLSt9Ci0rCi0rdm9pZAotK2dkYnB5X2luaXRpYWxpemVfc3ltYm9scyAodm9pZCkKLSt7Ci0r ICBpZiAoUHlUeXBlX1JlYWR5ICgmc3ltYm9sX29iamVjdF90eXBlKSA8IDApCi0rICAgIHJldHVy bjsKLSsKLSsgIC8qIEZJWE1FOiBUaGVzZSB3b3VsZCBwcm9iYWJseSBiZSBiZXN0IGV4cG9zZWQg YXMgY2xhc3MgYXR0cmlidXRlcyBvZiBTeW1ib2wsCi0rICAgICBidXQgSSBkb24ndCBrbm93IGhv dyB0byBkbyBpdCBleGNlcHQgYnkgbWVzc2luZyB3aXRoIHRoZSB0eXBlJ3MgZGljdGlvbmFyeS4K LSsgICAgIFRoYXQgc2VlbXMgdG9vIG1lc3N5LiAgKi8KLSsgIC8qIEZJWE1FIDI6IFNvbWUgb2Yg dGhlc2Ugd2VyZSByZW1vdmVkIGZyb20gR0RCIHNpbmNlIEkgZmlyc3Qgd3JvdGUgdGhpcyBjb2Rl LAotKyAgICAgc28gaXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSBub3QgdG8gZXhwb3NlIHRoZW0g dG8gUHl0aG9uLiAgKi8KLSsgIFB5TW9kdWxlX0FkZEludENvbnN0YW50IChnZGJfbW9kdWxlLCAi U1lNQk9MX0xPQ19VTkRFRiIsIExPQ19VTkRFRik7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFu dCAoZ2RiX21vZHVsZSwgIlNZTUJPTF9MT0NfQ09OU1QiLCBMT0NfQ09OU1QpOwotKyAgUHlNb2R1 bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfTE9DX1NUQVRJQyIsIExPQ19T VEFUSUMpOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xf TE9DX1JFR0lTVEVSIiwgTE9DX1JFR0lTVEVSKTsKLSsgIFB5TW9kdWxlX0FkZEludENvbnN0YW50 IChnZGJfbW9kdWxlLCAiU1lNQk9MX0xPQ19BUkciLCBMT0NfQVJHKTsKLSsgIFB5TW9kdWxlX0Fk ZEludENvbnN0YW50IChnZGJfbW9kdWxlLCAiU1lNQk9MX0xPQ19SRUZfQVJHIiwgTE9DX1JFRl9B UkcpOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfTE9D X0xPQ0FMIiwgTE9DX0xPQ0FMKTsKLSsgIFB5TW9kdWxlX0FkZEludENvbnN0YW50IChnZGJfbW9k dWxlLCAiU1lNQk9MX0xPQ19UWVBFREVGIiwgTE9DX1RZUEVERUYpOwotKyAgUHlNb2R1bGVfQWRk SW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfTE9DX0xBQkVMIiwgTE9DX0xBQkVMKTsK LSsgIFB5TW9kdWxlX0FkZEludENvbnN0YW50IChnZGJfbW9kdWxlLCAiU1lNQk9MX0xPQ19CTE9D SyIsIExPQ19CTE9DSyk7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwg IlNZTUJPTF9MT0NfQ09OU1RfQllURVMiLAotKwkJCSAgIExPQ19DT05TVF9CWVRFUyk7Ci0rICBQ eU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwgIlNZTUJPTF9MT0NfVU5SRVNPTFZF RCIsIExPQ19VTlJFU09MVkVEKTsKLSsgIFB5TW9kdWxlX0FkZEludENvbnN0YW50IChnZGJfbW9k dWxlLCAiU1lNQk9MX0xPQ19PUFRJTUlaRURfT1VUIiwKLSsJCQkgICBMT0NfT1BUSU1JWkVEX09V VCk7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwgIlNZTUJPTF9MT0Nf Q09NUFVURUQiLCBMT0NfQ09NUFVURUQpOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdk Yl9tb2R1bGUsICJTWU1CT0xfTE9DX1JFR1BBUk1fQUREUiIsCi0rCQkJICAgTE9DX1JFR1BBUk1f QUREUik7Ci0rICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwgIlNZTUJPTF9V TkRFRl9ET01BSU4iLCBVTkRFRl9ET01BSU4pOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQg KGdkYl9tb2R1bGUsICJTWU1CT0xfVkFSX0RPTUFJTiIsIFZBUl9ET01BSU4pOwotKyAgUHlNb2R1 bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJTWU1CT0xfU1RSVUNUX0RPTUFJTiIsIFNU UlVDVF9ET01BSU4pOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUsICJT WU1CT0xfTEFCRUxfRE9NQUlOIiwgTEFCRUxfRE9NQUlOKTsKLSsgIFB5TW9kdWxlX0FkZEludENv bnN0YW50IChnZGJfbW9kdWxlLCAiU1lNQk9MX1ZBUklBQkxFU19ET01BSU4iLAotKwkJCSAgIFZB UklBQkxFU19ET01BSU4pOwotKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQgKGdkYl9tb2R1bGUs ICJTWU1CT0xfRlVOQ1RJT05TX0RPTUFJTiIsCi0rCQkJICAgRlVOQ1RJT05TX0RPTUFJTik7Ci0r ICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudCAoZ2RiX21vZHVsZSwgIlNZTUJPTF9UWVBFU19ET01B SU4iLCBUWVBFU19ET01BSU4pOwotKwotKyAgUHlfSU5DUkVGICgmc3ltYm9sX29iamVjdF90eXBl KTsKLSsgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIlN5bWJvbCIsIChQeU9iamVj dCAqKSAmc3ltYm9sX29iamVjdF90eXBlKTsKLSt9Ci0rCi0rDAotKwotK3N0YXRpYyBQeUdldFNl dERlZiBzeW1ib2xfb2JqZWN0X2dldHNldFtdID0gewotKyAgeyAidmFsdWUiLCBzeW1weV9nZXRf dmFsdWUsIE5VTEwsICJWYWx1ZSBvZiB0aGUgc3ltYm9sLiIsIE5VTEwgfSwKLSsgIHsgInN5bXRh YiIsIHN5bXB5X2dldF9zeW10YWIsIE5VTEwsCi0rICAgICJTeW1ib2wgdGFibGUgaW4gd2hpY2gg dGhlIHN5bWJvbCBhcHBlYXJzLiIsIE5VTEwgfSwKLSsgIHsgIm5hbWUiLCBzeW1weV9nZXRfbmFt ZSwgTlVMTCwKLSsgICAgIk5hbWUgb2YgdGhlIHN5bWJvbCwgYXMgaXQgYXBwZWFycyBpbiB0aGUg c291cmNlIGNvZGUuIiwgTlVMTCB9LAotKyAgeyAibGlua2FnZV9uYW1lIiwgc3ltcHlfZ2V0X2xp bmthZ2VfbmFtZSwgTlVMTCwKLSsgICAgIk5hbWUgb2YgdGhlIHN5bWJvbCwgYXMgdXNlZCBieSB0 aGUgbGlua2VyIChpLmUuLCBtYXkgYmUgbWFuZ2xlZCkuIiwgTlVMTCB9LAotKyAgeyAicHJpbnRf bmFtZSIsIHN5bXB5X2dldF9wcmludF9uYW1lLCBOVUxMLAotKyAgICAiTmFtZSBvZiB0aGUgc3lt Ym9sIGluIGEgZm9ybSBzdWl0YWJsZSBmb3Igb3V0cHV0LlxuXAotK1RoaXMgaXMgZWl0aGVyIG5h bWUgb3IgbGlua2FnZV9uYW1lLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdXNlciBhc2tlZCBH REJcblwKLSt0byBkaXNwbGF5IGRlbWFuZ2xlZCBvciBtYW5nbGVkIG5hbWVzLiIsIE5VTEwgfSwK LSsgIHsgImFkZHJfY2xhc3MiLCBzeW1weV9nZXRfYWRkcl9jbGFzcywgTlVMTCwgIkFkZHJlc3Mg Y2xhc3Mgb2YgdGhlIHN5bWJvbC4iIH0sCi0rICB7ICJpc19hcmd1bWVudCIsIHN5bXB5X2lzX2Fy Z3VtZW50LCBOVUxMLAotKyAgICAiVHJ1ZSBpZiB0aGUgc3ltYm9sIGlzIGFuIGFyZ3VtZW50IG9m IGEgZnVuY3Rpb24uIiB9LAotKyAgeyAiaXNfY29uc3RhbnQiLCBzeW1weV9pc19jb25zdGFudCwg TlVMTCwKLSsgICAgIlRydWUgaWYgdGhlIHN5bWJvbCBpcyBhIGNvbnN0YW50LiIgfSwKLSsgIHsg ImlzX2Z1bmN0aW9uIiwgc3ltcHlfaXNfZnVuY3Rpb24sIE5VTEwsCi0rICAgICJUcnVlIGlmIHRo ZSBzeW1ib2wgaXMgYSBmdW5jdGlvbiBvciBtZXRob2QuIiB9LAotKyAgeyAiaXNfdmFyaWFibGUi LCBzeW1weV9pc192YXJpYWJsZSwgTlVMTCwKLSsgICAgIlRydWUgaWYgdGhlIHN5bWJvbCBpcyBh IHZhcmlhYmxlLiIgfSwKLSsgIHsgTlVMTCB9ICAvKiBTZW50aW5lbCAqLwotK307Ci0rCi0rUHlU eXBlT2JqZWN0IHN5bWJvbF9vYmplY3RfdHlwZSA9IHsKLSsgIFB5T2JqZWN0X0hFQURfSU5JVCAo TlVMTCkKLSsgIDAsCQkJCSAgLypvYl9zaXplKi8KLSsgICJnZGIuU3ltYm9sIiwJCQkgIC8qdHBf bmFtZSovCi0rICBzaXplb2YgKHN5bWJvbF9vYmplY3QpLAkgIC8qdHBfYmFzaWNzaXplKi8KLSsg IDAsCQkJCSAgLyp0cF9pdGVtc2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfZGVhbGxvYyovCi0rICAw LAkJCQkgIC8qdHBfcHJpbnQqLwotKyAgMCwJCQkJICAvKnRwX2dldGF0dHIqLwotKyAgMCwJCQkJ ICAvKnRwX3NldGF0dHIqLwotKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLwotKyAgMCwJCQkJICAv KnRwX3JlcHIqLwotKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCi0rICAwLAkJCQkgIC8qdHBf YXNfc2VxdWVuY2UqLwotKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLwotKyAgMCwJCQkJICAv KnRwX2hhc2ggKi8KLSsgIDAsCQkJCSAgLyp0cF9jYWxsKi8KLSsgIHN5bXB5X3N0ciwJCQkgIC8q dHBfc3RyKi8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRybyovCi0rICAwLAkJCQkgIC8qdHBfc2V0 YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX2FzX2J1ZmZlciovCi0rICBQeV9UUEZMQUdTX0RFRkFV TFQsCQkgIC8qdHBfZmxhZ3MqLwotKyAgIkdEQiBzeW1ib2wgb2JqZWN0IiwJCSAgLyogdHBfZG9j ICovCi0rICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkgIC8qIHRwX2NsZWFy ICovCi0rICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJCQkgIC8qIHRwX3dl YWtsaXN0b2Zmc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KLSsgIDAsCQkJCSAgLyog dHBfaXRlcm5leHQgKi8KLSsgIDAsCQkJCSAgLyogdHBfbWV0aG9kcyAqLwotKyAgMCwJCQkJICAv KiB0cF9tZW1iZXJzICovCi0rICBzeW1ib2xfb2JqZWN0X2dldHNldAkJICAvKiB0cF9nZXRzZXQg Ki8KLSt9OwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktc3ltdGFiLmMgYi9nZGIvcHl0aG9u L3B5LXN5bXRhYi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODMwZTU4 NgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9weS1zeW10YWIuYwotQEAgLTAsMCAr MSwzMjIgQEAKLSsvKiBQeXRob24gaW50ZXJmYWNlIHRvIHN5bWJvbCB0YWJsZXMuCi0rCi0rICAg Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAi Y2hhcnNldC5oIgotKyNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5jbHVkZSAic291cmNlLmgiCi0r I2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5oIgotKwotK3R5cGVkZWYgc3RydWN0IHsKLSsgIFB5 T2JqZWN0X0hFQUQKLSsgIHN0cnVjdCBzeW10YWIgKnN5bXRhYjsKLSt9IHN5bXRhYl9vYmplY3Q7 Ci0rCi0rc3RhdGljIFB5VHlwZU9iamVjdCBzeW10YWJfb2JqZWN0X3R5cGU7Ci0rCi0rdHlwZWRl ZiBzdHJ1Y3QgewotKyAgUHlPYmplY3RfSEVBRAotKyAgc3ltdGFiX29iamVjdCAqc3ltdGFiOwot KyAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsOwotK30gc2FsX29iamVjdDsKLSsKLStzdGF0 aWMgUHlUeXBlT2JqZWN0IHNhbF9vYmplY3RfdHlwZTsKLSsKLSsKLStzdGF0aWMgUHlPYmplY3Qg KgotK3N0cHlfc3RyIChQeU9iamVjdCAqc2VsZikKLSt7Ci0rICBpbnQgcmV0OwotKyAgY2hhciAq czsKLSsgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0rCi0rICByZXQgPSBhc3ByaW50ZiAoJnMsICJzeW1i b2wgdGFibGUgZm9yICVzIiwKLSsJCSAgKChzeW10YWJfb2JqZWN0ICopIHNlbGYpLT5zeW10YWIt PmZpbGVuYW1lKTsKLSsgIGlmIChyZXQgPCAwKQotKyAgICBQeV9SRVRVUk5fTk9ORTsKLSsKLSsg IHJlc3VsdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcgKHMpOwotKyAgeGZyZWUgKHMpOwotKwotKyAg cmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStzdHB5X2dldF9maWxl bmFtZSAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi0rewotKyAgc3ltdGFiX29iamVj dCAqc2VsZl9zeW10YWIgPSAoc3ltdGFiX29iamVjdCAqKSBzZWxmOwotKyAgUHlPYmplY3QgKnN0 cl9vYmo7Ci0rCi0rICAvKiBGSVhNRTogQ2FuIHN5bXRhYi0+ZmlsZW5hbWUgcmVhbGx5IGJlIE5V TEw/ICAqLwotKyAgaWYgKHNlbGZfc3ltdGFiLT5zeW10YWItPmZpbGVuYW1lKQotKyAgICBzdHJf b2JqID0gUHlTdHJpbmdfRGVjb2RlIChzZWxmX3N5bXRhYi0+c3ltdGFiLT5maWxlbmFtZSwKLSsJ CQkgICAgICAgc3RybGVuIChzZWxmX3N5bXRhYi0+c3ltdGFiLT5maWxlbmFtZSksCi0rCQkJICAg ICAgIGhvc3RfY2hhcnNldCAoKSwgTlVMTCk7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBzdHJf b2JqID0gUHlfTm9uZTsKLSsgICAgICBQeV9JTkNSRUYgKFB5X05vbmUpOwotKyAgICB9Ci0rCi0r ICByZXR1cm4gc3RyX29iajsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStzdHB5X2dldF9v YmpmaWxlIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7Ci0rICBzeW10YWJfb2Jq ZWN0ICpzZWxmX3N5bXRhYiA9IChzeW10YWJfb2JqZWN0ICopIHNlbGY7Ci0rICBQeU9iamVjdCAq cmVzdWx0ID0gb2JqZmlsZV90b19vYmpmaWxlX29iamVjdCAoc2VsZl9zeW10YWItPnN5bXRhYi0+ b2JqZmlsZSk7Ci0rICBQeV9JTkNSRUYgKHJlc3VsdCk7Ci0rICByZXR1cm4gcmVzdWx0OwotK30K LSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3N0cHlfZnVsbG5hbWUgKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncykKLSt7Ci0rICBjaGFyICpmdWxsbmFtZTsKLSsKLSsgIGZ1bGxuYW1lID0g c3ltdGFiX3RvX2Z1bGxuYW1lICgoKHN5bXRhYl9vYmplY3QgKikgc2VsZiktPnN5bXRhYik7Ci0r ICBpZiAoZnVsbG5hbWUpCi0rICAgIHJldHVybiBQeVN0cmluZ19EZWNvZGUgKGZ1bGxuYW1lLCBz dHJsZW4gKGZ1bGxuYW1lKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKLSsKLSsgIFB5X1JFVFVS Tl9OT05FOwotK30KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK3NhbHB5X3N0ciAoUHlPYmplY3Qg KnNlbGYpCi0rewotKyAgaW50IHJldDsKLSsgIGNoYXIgKnMsICpmaWxlbmFtZTsKLSsgIHNhbF9v YmplY3QgKnNhbF9vYmo7Ci0rICBQeU9iamVjdCAqcmVzdWx0OwotKwotKyAgc2FsX29iaiA9IChz YWxfb2JqZWN0ICopIHNlbGY7Ci0rICBmaWxlbmFtZSA9IChzYWxfb2JqLT5zeW10YWIgPT0gKHN5 bXRhYl9vYmplY3QgKikgUHlfTm9uZSk/ICI8dW5rbm93bj4iIDoKLSsJCQkJCSAgIHNhbF9vYmot PnN5bXRhYi0+c3ltdGFiLT5maWxlbmFtZTsKLSsgIHJldCA9IGFzcHJpbnRmICgmcywgInN5bWJv bCBhbmQgbGluZSBmb3IgJXMsIGxpbmUgJWQiLCBmaWxlbmFtZSwKLSsJCSAgc2FsX29iai0+c2Fs LT5saW5lKTsKLSsgIGlmIChyZXQgPCAwKQotKyAgICBQeV9SRVRVUk5fTk9ORTsKLSsKLSsgIHJl c3VsdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcgKHMpOwotKyAgeGZyZWUgKHMpOwotKwotKyAgcmV0 dXJuIHJlc3VsdDsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStzYWxweV9nZXRfcGMgKFB5 T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotK3sKLSsgIHJldHVybiBQeUxvbmdfRnJvbVVu c2lnbmVkTG9uZ0xvbmcgKCgoc2FsX29iamVjdCAqKSBzZWxmKS0+c2FsLT5wYyk7Ci0rfQotKwot K3N0YXRpYyBQeU9iamVjdCAqCi0rc2FscHlfZ2V0X2xpbmUgKFB5T2JqZWN0ICpzZWxmLCB2b2lk ICpjbG9zdXJlKQotK3sKLSsgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcgKCgo c2FsX29iamVjdCAqKSBzZWxmKS0+c2FsLT5saW5lKTsKLSt9Ci0rCi0rc3RhdGljIFB5T2JqZWN0 ICoKLStzYWxweV9nZXRfc3ltdGFiIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKLSt7 Ci0rICBzYWxfb2JqZWN0ICpzZWxmX3NhbCA9IChzYWxfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICBQ eV9JTkNSRUYgKHNlbGZfc2FsLT5zeW10YWIpOwotKwotKyAgcmV0dXJuIChQeU9iamVjdCAqKSBz ZWxmX3NhbC0+c3ltdGFiOwotK30KLSsKLStzdGF0aWMgdm9pZCAKLStzYWxweV9kZWFsbG9jIChQ eU9iamVjdCAqc2VsZikKLSt7Ci0rICBzYWxfb2JqZWN0ICpzZWxmX3NhbCA9IChzYWxfb2JqZWN0 ICopIHNlbGY7Ci0rCi0rICBQeV9ERUNSRUYgKHNlbGZfc2FsLT5zeW10YWIpOwotKyAgeGZyZWUg KHNlbGZfc2FsLT5zYWwpOwotKyAgc2VsZl9zYWwtPm9iX3R5cGUtPnRwX2ZyZWUgKHNlbGYpOwot K30KLSsKLStQeU9iamVjdCAqCi0rc3ltdGFiX2FuZF9saW5lX3RvX3NhbF9vYmplY3QgKHN0cnVj dCBzeW10YWJfYW5kX2xpbmUgc2FsKQotK3sKLSsgIHNhbF9vYmplY3QgKnNhbF9vYmo7Ci0rICBz eW10YWJfb2JqZWN0ICpzeW10YWJfb2JqOwotKwotKyAgc2FsX29iaiA9IFB5T2JqZWN0X05ldyAo c2FsX29iamVjdCwgJnNhbF9vYmplY3RfdHlwZSk7Ci0rICBpZiAoc2FsX29iaiA9PSBOVUxMKQot KyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19NZW1vcnlFcnJvciwKLSsJCSAg ICAgICAiQ291bGQgbm90IGFsbG9jYXRlIFN5bXRhYl9hbmRfbGluZSBvYmplY3QuIik7Ci0rICAg ICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIGlmIChzYWwuc3ltdGFiKQotKyAgICB7Ci0r ICAgICAgc3ltdGFiX29iaiA9IChzeW10YWJfb2JqZWN0ICopIHN5bXRhYl90b19zeW10YWJfb2Jq ZWN0IChzYWwuc3ltdGFiKTsKLSsgICAgICBpZiAoc3ltdGFiX29iaiA9PSBOVUxMKQotKwl7Ci0r CSAgUHlfREVDUkVGIChzYWxfb2JqKTsKLSsJICByZXR1cm4gTlVMTDsKLSsJfQotKwotKyAgICAg IHN5bXRhYl9vYmotPnN5bXRhYiA9IHNhbC5zeW10YWI7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAg ewotKyAgICAgIHN5bXRhYl9vYmogPSAoc3ltdGFiX29iamVjdCAqKSBQeV9Ob25lOwotKyAgICAg IFB5X0lOQ1JFRiAoUHlfTm9uZSk7Ci0rICAgIH0KLSsKLSsgIHNhbF9vYmotPnNhbCA9IChzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lICopCi0rCQkJCSAgICB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBz eW10YWJfYW5kX2xpbmUpKTsKLSsgICooc2FsX29iai0+c2FsKSA9IHNhbDsKLSsgIHNhbF9vYmot PnN5bXRhYiA9IHN5bXRhYl9vYmo7Ci0rCi0rICByZXR1cm4gKFB5T2JqZWN0ICopIHNhbF9vYmo7 Ci0rfQotKwotK1B5T2JqZWN0ICoKLStzeW10YWJfdG9fc3ltdGFiX29iamVjdCAoc3RydWN0IHN5 bXRhYiAqc3ltdGFiKQotK3sKLSsgIHN5bXRhYl9vYmplY3QgKnN5bXRhYl9vYmo7Ci0rICAKLSsg IHN5bXRhYl9vYmogPSBQeU9iamVjdF9OZXcgKHN5bXRhYl9vYmplY3QsICZzeW10YWJfb2JqZWN0 X3R5cGUpOwotKyAgaWYgKHN5bXRhYl9vYmogPT0gTlVMTCkKLSsgICAgewotKyAgICAgIFB5RXJy X1NldFN0cmluZyAoUHlFeGNfTWVtb3J5RXJyb3IsCi0rCSAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBT eW10YWIgb2JqZWN0LiIpOwotKwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICBz eW10YWJfb2JqLT5zeW10YWIgPSBzeW10YWI7Ci0rCi0rICByZXR1cm4gKFB5T2JqZWN0ICopIHN5 bXRhYl9vYmo7Ci0rfQotKwotK3ZvaWQKLStnZGJweV9pbml0aWFsaXplX3N5bXRhYnMgKHZvaWQp Ci0rewotKyAgc3ltdGFiX29iamVjdF90eXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3Owot KyAgaWYgKFB5VHlwZV9SZWFkeSAoJnN5bXRhYl9vYmplY3RfdHlwZSkgPCAwKQotKyAgICByZXR1 cm47Ci0rCi0rICBzYWxfb2JqZWN0X3R5cGUudHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXc7Ci0r ICBpZiAoUHlUeXBlX1JlYWR5ICgmc2FsX29iamVjdF90eXBlKSA8IDApCi0rICAgIHJldHVybjsK LSsKLSsgIFB5X0lOQ1JFRiAoJnN5bXRhYl9vYmplY3RfdHlwZSk7Ci0rICBQeU1vZHVsZV9BZGRP YmplY3QgKGdkYl9tb2R1bGUsICJTeW10YWIiLCAoUHlPYmplY3QgKikgJnN5bXRhYl9vYmplY3Rf dHlwZSk7Ci0rCi0rICBQeV9JTkNSRUYgKCZzYWxfb2JqZWN0X3R5cGUpOwotKyAgUHlNb2R1bGVf QWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiU3ltdGFiX2FuZF9saW5lIiwKLSsJCSAgICAgIChQeU9i amVjdCAqKSAmc2FsX29iamVjdF90eXBlKTsKLSt9Ci0rCi0rDAotKwotK3N0YXRpYyBQeUdldFNl dERlZiBzeW10YWJfb2JqZWN0X2dldHNldFtdID0gewotKyAgeyAiZmlsZW5hbWUiLCBzdHB5X2dl dF9maWxlbmFtZSwgTlVMTCwKLSsgICAgIlRoZSBzeW1ib2wgdGFibGUncyBzb3VyY2UgZmlsZW5h bWUuIiwgTlVMTCB9LAotKyAgeyAib2JqZmlsZSIsIHN0cHlfZ2V0X29iamZpbGUsIE5VTEwsICJU aGUgc3ltdGFiJ3Mgb2JqZmlsZS4iLAotKyAgICBOVUxMIH0sCi0rICB7TlVMTH0gIC8qIFNlbnRp bmVsICovCi0rfTsKLSsKLStzdGF0aWMgUHlNZXRob2REZWYgc3ltdGFiX29iamVjdF9tZXRob2Rz W10gPSB7Ci0rICB7ICJmdWxsbmFtZSIsIHN0cHlfZnVsbG5hbWUsIE1FVEhfTk9BUkdTLAotKyAg ICAiUmV0dXJuIHRoZSBzeW10YWIncyBmdWxsIHNvdXJjZSBmaWxlbmFtZS4iIH0sCi0rICB7TlVM TH0gIC8qIFNlbnRpbmVsICovCi0rfTsKLSsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IHN5bXRhYl9v YmplY3RfdHlwZSA9IHsKLSsgIFB5T2JqZWN0X0hFQURfSU5JVCAoTlVMTCkKLSsgIDAsCQkJCSAg LypvYl9zaXplKi8KLSsgICJnZGIuU3ltdGFiIiwJCQkgIC8qdHBfbmFtZSovCi0rICBzaXplb2Yg KHN5bXRhYl9vYmplY3QpLAkgIC8qdHBfYmFzaWNzaXplKi8KLSsgIDAsCQkJCSAgLyp0cF9pdGVt c2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfZGVhbGxvYyovCi0rICAwLAkJCQkgIC8qdHBfcHJpbnQq LwotKyAgMCwJCQkJICAvKnRwX2dldGF0dHIqLwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHIqLwot KyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLwotKyAgMCwJCQkJICAvKnRwX3JlcHIqLwotKyAgMCwJ CQkJICAvKnRwX2FzX251bWJlciovCi0rICAwLAkJCQkgIC8qdHBfYXNfc2VxdWVuY2UqLwotKyAg MCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLwotKyAgMCwJCQkJICAvKnRwX2hhc2ggKi8KLSsgIDAs CQkJCSAgLyp0cF9jYWxsKi8KLSsgIHN0cHlfc3RyLAkJCSAgLyp0cF9zdHIqLwotKyAgMCwJCQkJ ICAvKnRwX2dldGF0dHJvKi8KLSsgIDAsCQkJCSAgLyp0cF9zZXRhdHRybyovCi0rICAwLAkJCQkg IC8qdHBfYXNfYnVmZmVyKi8KLSsgIFB5X1RQRkxBR1NfREVGQVVMVCwJCSAgLyp0cF9mbGFncyov Ci0rICAiR0RCIHN5bXRhYiBvYmplY3QiLAkJICAvKiB0cF9kb2MgKi8KLSsgIDAsCQkJCSAgLyog dHBfdHJhdmVyc2UgKi8KLSsgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KLSsgIDAsCQkJCSAgLyog dHBfcmljaGNvbXBhcmUgKi8KLSsgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSsg IDAsCQkJCSAgLyogdHBfaXRlciAqLwotKyAgMCwJCQkJICAvKiB0cF9pdGVybmV4dCAqLwotKyAg c3ltdGFiX29iamVjdF9tZXRob2RzLAkgIC8qIHRwX21ldGhvZHMgKi8KLSsgIDAsCQkJCSAgLyog dHBfbWVtYmVycyAqLwotKyAgc3ltdGFiX29iamVjdF9nZXRzZXQJCSAgLyogdHBfZ2V0c2V0ICov Ci0rfTsKLSsKLStzdGF0aWMgUHlHZXRTZXREZWYgc2FsX29iamVjdF9nZXRzZXRbXSA9IHsKLSsg IHsgInN5bXRhYiIsIHNhbHB5X2dldF9zeW10YWIsIE5VTEwsICJTeW10YWIgb2JqZWN0LiIsIE5V TEwgfSwKLSsgIHsgInBjIiwgc2FscHlfZ2V0X3BjLCBOVUxMLCAiUmV0dXJuIHRoZSBzeW10YWJf YW5kX2xpbmUncyBwYy4iLCBOVUxMIH0sCi0rICB7ICJsaW5lIiwgc2FscHlfZ2V0X2xpbmUsIE5V TEwsCi0rICAgICJSZXR1cm4gdGhlIHN5bXRhYl9hbmRfbGluZSdzIGxpbmUuIiwgTlVMTCB9LAot KyAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotK307Ci0rCi0rc3RhdGljIFB5VHlwZU9iamVjdCBz YWxfb2JqZWN0X3R5cGUgPSB7Ci0rICBQeU9iamVjdF9IRUFEX0lOSVQgKE5VTEwpCi0rICAwLAkJ CQkgIC8qb2Jfc2l6ZSovCi0rICAiZ2RiLlN5bXRhYl9hbmRfbGluZSIsCSAgLyp0cF9uYW1lKi8K LSsgIHNpemVvZiAoc2FsX29iamVjdCksCQkgIC8qdHBfYmFzaWNzaXplKi8KLSsgIDAsCQkJCSAg Lyp0cF9pdGVtc2l6ZSovCi0rICBzYWxweV9kZWFsbG9jLAkJICAvKnRwX2RlYWxsb2MqLwotKyAg MCwJCQkJICAvKnRwX3ByaW50Ki8KLSsgIDAsCQkJCSAgLyp0cF9nZXRhdHRyKi8KLSsgIDAsCQkJ CSAgLyp0cF9zZXRhdHRyKi8KLSsgIDAsCQkJCSAgLyp0cF9jb21wYXJlKi8KLSsgIDAsCQkJCSAg Lyp0cF9yZXByKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19udW1iZXIqLwotKyAgMCwJCQkJICAvKnRw X2FzX3NlcXVlbmNlKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19tYXBwaW5nKi8KLSsgIDAsCQkJCSAg Lyp0cF9oYXNoICovCi0rICAwLAkJCQkgIC8qdHBfY2FsbCovCi0rICBzYWxweV9zdHIsCQkJICAv KnRwX3N0ciovCi0rICAwLAkJCQkgIC8qdHBfZ2V0YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX3Nl dGF0dHJvKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19idWZmZXIqLwotKyAgUHlfVFBGTEFHU19ERUZB VUxULAkJICAvKnRwX2ZsYWdzKi8KLSsgICJHREIgc3ltdGFiX2FuZF9saW5lIG9iamVjdCIsCSAg LyogdHBfZG9jICovCi0rICAwLAkJCQkgIC8qIHRwX3RyYXZlcnNlICovCi0rICAwLAkJCQkgIC8q IHRwX2NsZWFyICovCi0rICAwLAkJCQkgIC8qIHRwX3JpY2hjb21wYXJlICovCi0rICAwLAkJCQkg IC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXIgKi8KLSsgIDAs CQkJCSAgLyogdHBfaXRlcm5leHQgKi8KLSsgIDAsCQkJCSAgLyogdHBfbWV0aG9kcyAqLwotKyAg MCwJCQkJICAvKiB0cF9tZW1iZXJzICovCi0rICBzYWxfb2JqZWN0X2dldHNldAkJICAvKiB0cF9n ZXRzZXQgKi8KLSt9OwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdHlwZS5jIGIvZ2RiL3B5 dGhvbi9weS10eXBlLmMKLWluZGV4IGE5N2MxMjUuLmFjMzY2YmIgMTAwNjQ0Ci0tLS0gYS9nZGIv cHl0aG9uL3B5LXR5cGUuYwotKysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLUBAIC0yNyw2ICsy Nyw4IEBACi0gI2luY2x1ZGUgImRlbWFuZ2xlLmgiCi0gI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0g I2luY2x1ZGUgImxhbmd1YWdlLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0rI2luY2x1ZGUg ImdkYl9hc3NlcnQuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0Ci0gewot QEAgLTM1LDExICszNywxNyBAQCB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0Ci0gCi0g ICAvKiBJZiBhIFR5cGUgb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmpmaWxlLCBpdCBp cyBrZXB0IG9uIGEKLSAgICAgIGRvdWJseS1saW5rZWQgbGlzdCwgcm9vdGVkIGluIHRoZSBvYmpm aWxlLiAgVGhpcyBsZXRzIHVzIGNvcHkgdGhlCi0tICAgICB1bmRlcmx5aW5nIHN0cnVjdCB0eXBl IHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4gICovCi0rICAgICB1bmRlcmx5aW5nIHN0cnVj dCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4KLSsKLSsgICAgIFdpdGggTlVMTCBv YmpmaWxlIFR5cGUgc3RpbGwgY2FuIGJlIGRvdWJseS1saW5rZWQgaW4gdGhlIGxpc3QKLSsgICAg IFBZVFlfT0JKRUNUU19ESVNDQVJEQUJMRS4gICovCi0gICBzdHJ1Y3QgcHl0eV90eXBlX29iamVj dCAqcHJldjsKLSAgIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0ICpuZXh0OwotIH0gdHlwZV9vYmpl Y3Q7Ci0gCi0rLyogRmlyc3QgZWxlbWVudCBvZiBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBUWVBF X0RJU0NBUkRBQkxFIFR5cGVzLiAgKi8KLStzdGF0aWMgdHlwZV9vYmplY3QgKnB5dHlfb2JqZWN0 c19kaXNjYXJkYWJsZTsKLSsKLSBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVfb2JqZWN0X3R5cGU7 Ci0gCi0gLyogQSBGaWVsZCBvYmplY3QuICAqLwotQEAgLTQzNCw3ICs0NDIsNyBAQCB0eXB5X2dl dF9zaXplb2YgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotIH0KLSAKLSBzdGF0aWMg c3RydWN0IHR5cGUgKgotLXR5cHlfbG9va3VwX3R5cGVuYW1lIChjaGFyICp0eXBlX25hbWUpCi0r dHlweV9sb29rdXBfdHlwZW5hbWUgKGNoYXIgKnR5cGVfbmFtZSwgc3RydWN0IGJsb2NrICpibG9j aykKLSB7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IE5VTEw7Ci0gICB2b2xhdGlsZSBzdHJ1Y3Qg Z2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci1AQCAtNDQ4LDcgKzQ1Niw3IEBAIHR5cHlfbG9va3VwX3R5 cGVuYW1lIChjaGFyICp0eXBlX25hbWUpCi0gCXR5cGUgPSBsb29rdXBfZW51bSAodHlwZV9uYW1l ICsgNSwgTlVMTCk7Ci0gICAgICAgZWxzZQotIAl0eXBlID0gbG9va3VwX3R5cGVuYW1lIChweXRo b25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoLAotLQkJCQl0eXBlX25hbWUsIE5VTEwsIDApOwot KwkJCQl0eXBlX25hbWUsIGJsb2NrLCAwKTsKLSAgICAgfQotICAgaWYgKGV4Y2VwdC5yZWFzb24g PCAwKQotICAgICB7Ci1AQCAtNDYyLDcgKzQ3MCw4IEBAIHR5cHlfbG9va3VwX3R5cGVuYW1lIChj aGFyICp0eXBlX25hbWUpCi0gfQotIAotIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0tdHlweV9sb29r dXBfdHlwZSAoc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZGVtYW5nbGVkKQotK3R5cHlfbG9v a3VwX3R5cGUgKHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRlbWFuZ2xlZCwKLSsJCSAgc3Ry dWN0IGJsb2NrICpibG9jaykKLSB7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSAgIGNoYXIgKnR5 cGVfbmFtZTsKLUBAIC00NzcsNyArNDg2LDcgQEAgdHlweV9sb29rdXBfdHlwZSAoc3RydWN0IGRl bWFuZ2xlX2NvbXBvbmVudCAqZGVtYW5nbGVkKQotICAgICAgIHx8IGRlbWFuZ2xlZF90eXBlID09 IERFTUFOR0xFX0NPTVBPTkVOVF9DT05TVAotICAgICAgIHx8IGRlbWFuZ2xlZF90eXBlID09IERF TUFOR0xFX0NPTVBPTkVOVF9WT0xBVElMRSkKLSAgICAgewotLSAgICAgIHR5cGUgPSB0eXB5X2xv b2t1cF90eXBlIChkZW1hbmdsZWQtPnUuc19iaW5hcnkubGVmdCk7Ci0rICAgICAgdHlwZSA9IHR5 cHlfbG9va3VwX3R5cGUgKGRlbWFuZ2xlZC0+dS5zX2JpbmFyeS5sZWZ0LCBibG9jayk7Ci0gICAg ICAgaWYgKCEgdHlwZSkKLSAJcmV0dXJuIE5VTEw7Ci0gCi1AQCAtNDk1LDcgKzUwNCw3IEBAIHR5 cHlfbG9va3VwX3R5cGUgKHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRlbWFuZ2xlZCkKLSAg ICAgfQotIAotICAgdHlwZV9uYW1lID0gY3BfY29tcF90b19zdHJpbmcgKGRlbWFuZ2xlZCwgMTAp OwotLSAgdHlwZSA9IHR5cHlfbG9va3VwX3R5cGVuYW1lICh0eXBlX25hbWUpOwotKyAgdHlwZSA9 IHR5cHlfbG9va3VwX3R5cGVuYW1lICh0eXBlX25hbWUsIGJsb2NrKTsKLSAgIHhmcmVlICh0eXBl X25hbWUpOwotIAotICAgcmV0dXJuIHR5cGU7Ci1AQCAtNTA5LDEwICs1MTgsMjMgQEAgdHlweV90 ZW1wbGF0ZV9hcmd1bWVudCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgc3Ry dWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqZGVtYW5nbGVkOwotICAgY29uc3QgY2hhciAqZXJyOwot ICAgc3RydWN0IHR5cGUgKmFyZ3R5cGU7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrID0gTlVMTDsK LSsgIFB5T2JqZWN0ICpibG9ja19vYmogPSBOVUxMOwotIAotLSAgaWYgKCEgUHlBcmdfUGFyc2VU dXBsZSAoYXJncywgImkiLCAmYXJnbm8pKQotKyAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZSAoYXJn cywgIml8TyIsICZhcmdubywgJmJsb2NrX29iaikpCi0gICAgIHJldHVybiBOVUxMOwotIAotKyAg aWYgKGJsb2NrX29iaikKLSsgICAgewotKyAgICAgIGJsb2NrID0gYmxvY2tfb2JqZWN0X3RvX2Js b2NrIChibG9ja19vYmopOwotKyAgICAgIGlmICghIGJsb2NrKQotKwl7Ci0rCSAgUHlFcnJfU2V0 U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsCi0rCQkJICAgInNlY29uZCBhcmd1bWVudCBtdXN0 IGJlIGJsb2NrIik7Ci0rCSAgcmV0dXJuIE5VTEw7Ci0rCX0KLSsgICAgfQotKwotICAgdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D T0RFX1JFRikKLSAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKTsKLUBAIC01NTUsNyArNTc3LDcgQEAgdHlweV90ZW1wbGF0ZV9hcmd1bWVudCAoUHlPYmpl Y3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0g Ci0tICBhcmd0eXBlID0gdHlweV9sb29rdXBfdHlwZSAoZGVtYW5nbGVkLT51LnNfYmluYXJ5Lmxl ZnQpOwotKyAgYXJndHlwZSA9IHR5cHlfbG9va3VwX3R5cGUgKGRlbWFuZ2xlZC0+dS5zX2JpbmFy eS5sZWZ0LCBibG9jayk7Ci0gICBpZiAoISBhcmd0eXBlKQotICAgICByZXR1cm4gTlVMTDsKLSAK LUBAIC01OTcsOCArNjE5LDU5IEBAIHR5cHlfc3RyIChQeU9iamVjdCAqc2VsZikKLSAKLSAMCi0g Ci0rLyogS2V5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9iamZpbGUgcG9pbnRpbmcgdG8gdGhlIGZp cnN0IGVsZW1lbnQgb2YKLSsgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBUeXBlcyBhc3NvY2lh dGVkIHdpdGggdGhpcyBvYmpmaWxlLiAgKi8KLSBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZpbGVf ZGF0YSAqdHlweV9vYmpmaWxlX2RhdGFfa2V5OwotIAotKy8qIExpbmsgVFlQRV9PQkogdG8gaXRz IGFwcHJvcHJpYXRlIGxpc3QuICBFaXRoZXIgdG8gaXRzIG9iamZpbGUgYXNzb2NpYXRlZCBvbmUK LSsgICBvciBhdCBsZWFzdCB0byB0aGUgZ2xvYmFsIGxpc3QgZm9yIFRZUEVfRElTQ0FSREFCTEUg VHlwZXMuICBQZXJtYW5lbnQgdHlwZXMKLSsgICBkbyBub3QgZ2V0IGxpbmtlZCBhbnl3aGVyZS4g ICovCi0rc3RhdGljIHZvaWQKLSt0eXB5X2xpbmsgKHR5cGVfb2JqZWN0ICp0eXBlX29iaikKLSt7 Ci0rICB0eXBlX29iai0+cHJldiA9IE5VTEw7Ci0rCi0rICBpZiAodHlwZV9vYmotPnR5cGUgJiYg VFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSkpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpOwotKwotKyAgICAg IHR5cGVfb2JqLT5uZXh0ID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZpbGVfZGF0 YV9rZXkpOwotKyAgICAgIGlmICh0eXBlX29iai0+bmV4dCkKLSsJdHlwZV9vYmotPm5leHQtPnBy ZXYgPSB0eXBlX29iajsKLSsgICAgICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29i amZpbGVfZGF0YV9rZXksIHR5cGVfb2JqKTsKLSsgICAgfQotKyAgZWxzZSBpZiAodHlwZV9vYmot PnR5cGUgJiYgVFlQRV9ESVNDQVJEQUJMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAg ICAgdHlwZV9vYmotPm5leHQgPSBweXR5X29iamVjdHNfZGlzY2FyZGFibGU7Ci0rICAgICAgaWYg KHR5cGVfb2JqLT5uZXh0KQotKwl0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5cGVfb2JqOwotKyAg ICAgIHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9IHR5cGVfb2JqOwotKyAgICB9Ci0rICBlbHNl Ci0rICAgIHR5cGVfb2JqLT5uZXh0ID0gTlVMTDsKLSt9Ci0rCi0rLyogVW5saW5rIFRZUEVfT0JK IGZyb20gaXRzIGN1cnJlbnQgbGlzdC4gIFBlcm1hbmVudCB0eXBlcyBhcmUgbm90IGxpbmtlZAot KyAgIGFueXdoZXJlIGFuZCB0aGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlbS4gICov Ci0rc3RhdGljIHZvaWQKLSt0eXB5X3VubGluayAodHlwZV9vYmplY3QgKnR5cGVfb2JqKQotK3sK LSsgIGlmICh0eXBlX29iai0+cHJldikKLSsgICAgdHlwZV9vYmotPnByZXYtPm5leHQgPSB0eXBl X29iai0+bmV4dDsKLSsgIGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAo dHlwZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxp c3QuICAqLwotKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0 eXBlX29iai0+dHlwZSk7Ci0rCi0rICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlw eV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7Ci0rICAgIH0KLSsgIGVsc2UgaWYg KHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9PSB0eXBlX29iaikKLSsgICAgcHl0eV9vYmplY3Rz X2Rpc2NhcmRhYmxlID0gdHlwZV9vYmotPm5leHQ7Ci0rCi0rICBpZiAodHlwZV9vYmotPm5leHQp Ci0rICAgIHR5cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmotPnByZXY7Ci0rfQotKwotIHN0 YXRpYyB2b2lkCi0gc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg dm9pZCAqZGF0dW0pCi0gewotQEAgLTYxNiwxMiArNjg5LDEzIEBAIHNhdmVfb2JqZmlsZV90eXBl cyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQotICAgICB7Ci0gICAgICAg dHlwZV9vYmplY3QgKm5leHQgPSBvYmotPm5leHQ7Ci0gCi0tICAgICAgaHRhYl9lbXB0eSAoY29w aWVkX3R5cGVzKTsKLSsgICAgICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKG9iai0+dHlwZSkg PT0gb2JqZmlsZSk7Ci0rICAgICAgdHlweV91bmxpbmsgKG9iaik7Ci0gCi0tICAgICAgb2JqLT50 eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgb2JqLT50eXBlLCBjb3BpZWRfdHlw ZXMpOwotKyAgICAgIG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iai0+dHlwZSwg Y29waWVkX3R5cGVzKTsKLSAKLS0gICAgICBvYmotPm5leHQgPSBOVUxMOwotLSAgICAgIG9iai0+ cHJldiA9IE5VTEw7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFIChvYmotPnR5cGUp ID09IE5VTEwpOwotKyAgICAgIHR5cHlfbGluayAob2JqKTsKLSAKLSAgICAgICBvYmogPSBuZXh0 OwotICAgICB9Ci1AQCAtNjMyLDQxICs3MDYsMjUgQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCi0gfQotIAotIHN0YXRpYyB2b2lkCi0t c2V0X3R5cGUgKHR5cGVfb2JqZWN0ICpvYmosIHN0cnVjdCB0eXBlICp0eXBlKQotK3R5cHlfZGVh bGxvYyAoUHlPYmplY3QgKm9iaikKLSB7Ci0tICBvYmotPnR5cGUgPSB0eXBlOwotLSAgb2JqLT5w cmV2ID0gTlVMTDsKLS0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkpCi0tICAgIHsK LS0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7Ci0r ICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2JqOwotIAotLSAgICAg IG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5 KTsKLS0gICAgICBpZiAob2JqLT5uZXh0KQotLQlvYmotPm5leHQtPnByZXYgPSBvYmo7Ci0tICAg ICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCBvYmop OwotLSAgICB9Ci0tICBlbHNlCi0tICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0rICB0eXB5X3VubGlu ayAodHlwZV9vYmopOwotKwotKyAgdHlwZV9vYmotPm9iX3R5cGUtPnRwX2ZyZWUgKG9iaik7Ci0g fQotIAotKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZy b20gdGhpcyBHREIgc291cmNlIGZpbGUuICAqLwotIHN0YXRpYyB2b2lkCi0tdHlweV9kZWFsbG9j IChQeU9iamVjdCAqb2JqKQotK3R5cHlfdHlwZXNfbWFya191c2VkICh2b2lkKQotIHsKLS0gIHR5 cGVfb2JqZWN0ICp0eXBlID0gKHR5cGVfb2JqZWN0ICopIG9iajsKLS0KLS0gIGlmICh0eXBlLT5w cmV2KQotLSAgICB0eXBlLT5wcmV2LT5uZXh0ID0gdHlwZS0+bmV4dDsKLS0gIGVsc2UgaWYgKHR5 cGUtPnR5cGUgJiYgVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKSkKLS0gICAgewotLSAgICAgIC8q IE11c3QgcmVzZXQgaGVhZCBvZiBsaXN0LiAgKi8KLS0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZS0+dHlwZSk7Ci0tICAgICAgaWYgKG9iamZpbGUpCi0t CXNldF9vYmpmaWxlX2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tleSwgdHlwZS0+ bmV4dCk7Ci0tICAgIH0KLS0gIGlmICh0eXBlLT5uZXh0KQotLSAgICB0eXBlLT5uZXh0LT5wcmV2 ID0gdHlwZS0+cHJldjsKLSsgIHR5cGVfb2JqZWN0ICp0eXBlX29iajsKLSAKLS0gIHR5cGUtPm9i X3R5cGUtPnRwX2ZyZWUgKHR5cGUpOwotKyAgZm9yICh0eXBlX29iaiA9IHB5dHlfb2JqZWN0c19k aXNjYXJkYWJsZTsKLSsgICAgICAgdHlwZV9vYmogIT0gTlVMTDsKLSsgICAgICAgdHlwZV9vYmog PSB0eXBlX29iai0+bmV4dCkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHR5cGVfb2JqLT50eXBlKTsK LSB9Ci0gCi0gLyogQ3JlYXRlIGEgbmV3IFR5cGUgcmVmZXJyaW5nIHRvIFRZUEUuICAqLwotQEAg LTY3Nyw3ICs3MzUsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUp Ci0gCi0gICB0eXBlX29iaiA9IFB5T2JqZWN0X05ldyAodHlwZV9vYmplY3QsICZ0eXBlX29iamVj dF90eXBlKTsKLSAgIGlmICh0eXBlX29iaikKLS0gICAgc2V0X3R5cGUgKHR5cGVfb2JqLCB0eXBl KTsKLSsgICAgewotKyAgICAgIHR5cGVfb2JqLT50eXBlID0gdHlwZTsKLSsgICAgICB0eXB5X2xp bmsgKHR5cGVfb2JqKTsKLSsgICAgfQotIAotICAgcmV0dXJuIChQeU9iamVjdCAqKSB0eXBlX29i ajsKLSB9Ci1AQCAtNjk2LDE0ICs3NTcsMjggQEAgdHlwZV9vYmplY3RfdG9fdHlwZSAoUHlPYmpl Y3QgKm9iaikKLSBQeU9iamVjdCAqCi0gZ2RicHlfbG9va3VwX3R5cGUgKFB5T2JqZWN0ICpzZWxm LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQotIHsKLS0gIHN0YXRpYyBjaGFyICprZXl3 b3Jkc1tdID0geyAibmFtZSIsIE5VTEwgfTsKLSsgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0g eyAibmFtZSIsICJibG9jayIsIE5VTEwgfTsKLSAgIGNoYXIgKnR5cGVfbmFtZSA9IE5VTEw7Ci0g ICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IE5VTEw7Ci0rICBQeU9iamVjdCAqYmxvY2tfb2JqID0gTlVM TDsKLSsgIHN0cnVjdCBibG9jayAqYmxvY2sgPSBOVUxMOwotIAotLSAgaWYgKCEgUHlBcmdfUGFy c2VUdXBsZUFuZEtleXdvcmRzIChhcmdzLCBrdywgInMiLCBrZXl3b3JkcywgJnR5cGVfbmFtZSkp Ci0rICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgKGFyZ3MsIGt3LCAic3xPIiwg a2V5d29yZHMsCi0rCQkJCSAgICAgJnR5cGVfbmFtZSwgJmJsb2NrX29iaikpCi0gICAgIHJldHVy biBOVUxMOwotIAotLSAgdHlwZSA9IHR5cHlfbG9va3VwX3R5cGVuYW1lICh0eXBlX25hbWUpOwot KyAgaWYgKGJsb2NrX29iaikKLSsgICAgewotKyAgICAgIGJsb2NrID0gYmxvY2tfb2JqZWN0X3Rv X2Jsb2NrIChibG9ja19vYmopOwotKyAgICAgIGlmICghIGJsb2NrKQotKwl7Ci0rCSAgUHlFcnJf U2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsCi0rCQkJICAgIidibG9jaycgYXJndW1lbnQg bXVzdCBiZSBhIEJsb2NrIik7Ci0rCSAgcmV0dXJuIE5VTEw7Ci0rCX0KLSsgICAgfQotKwotKyAg dHlwZSA9IHR5cHlfbG9va3VwX3R5cGVuYW1lICh0eXBlX25hbWUsIGJsb2NrKTsKLSAgIGlmICgh IHR5cGUpCi0gICAgIHJldHVybiBOVUxMOwotIAotQEAgLTczNyw2ICs4MTIsOCBAQCBnZGJweV9p bml0aWFsaXplX3R5cGVzICh2b2lkKQotIAotICAgUHlfSU5DUkVGICgmZmllbGRfb2JqZWN0X3R5 cGUpOwotICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiRmllbGQiLCAoUHlPYmpl Y3QgKikgJmZpZWxkX29iamVjdF90eXBlKTsKLSsKLSsgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3Vz ZWQgKHR5cHlfdHlwZXNfbWFya191c2VkKTsKLSB9Ci0gCi0gDAotZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vcHktdXRpbHMuYyBiL2dkYi9weXRob24vcHktdXRpbHMuYwotaW5kZXggNGNjZjk3Zi4u ODdjZGU3MyAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHktdXRpbHMuYwotKysrIGIvZ2RiL3B5 dGhvbi9weS11dGlscy5jCi1AQCAtMTksNiArMTksNyBAQAotIAotICNpbmNsdWRlICJkZWZzLmgi Ci0gI2luY2x1ZGUgImNoYXJzZXQuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSAjaW5jbHVkZSAi cHl0aG9uLWludGVybmFsLmgiCi0gCi0gCi1AQCAtMjE5LDMgKzIyMCw0OCBAQCBnZGJweV9pc19z dHJpbmcgKFB5T2JqZWN0ICpvYmopCi0gewotICAgcmV0dXJuIFB5U3RyaW5nX0NoZWNrIChvYmop IHx8IFB5VW5pY29kZV9DaGVjayAob2JqKTsKLSB9Ci0rCi0rLyogQ29udmVydHMgT0JKIHRvIGEg Q09SRV9BRERSIHZhbHVlLgotKwotKyAgIFJldHVybnMgMSBvbiBzdWNjZXNzIG9yIDAgb24gZmFp bHVyZSwgd2l0aCBhIFB5dGhvbiBleGNlcHRpb24gc2V0LiAgVGhpcwotKyAgIGZ1bmN0aW9uIGNh biBhbHNvIHRocm93IEdEQiBleGNlcHRpb25zLiAgKi8KLSsKLStpbnQKLStnZXRfYWRkcl9mcm9t X3B5dGhvbiAoUHlPYmplY3QgKm9iaiwgQ09SRV9BRERSICphZGRyKQotK3sKLSsgIGlmIChnZGJw eV9pc192YWx1ZV9vYmplY3QgKG9iaikpCi0rICAgICphZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAo dmFsdWVfb2JqZWN0X3RvX3ZhbHVlIChvYmopKTsKLSsgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayAo b2JqKSkKLSsgICAgewotKyAgICAgIC8qIEFzc3VtZSBDT1JFX0FERFIgY29ycmVzcG9uZHMgdG8g dW5zaWduZWQgbG9uZy4gICovCi0rICAgICAgKmFkZHIgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcg KG9iaik7Ci0rICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpICE9IE5VTEwpCi0rCXJldHVybiAw OwotKyAgICB9Ci0rICBlbHNlIGlmIChQeUludF9DaGVjayAob2JqKSkKLSsgICAgewotKyAgICAg IGxvbmcgdmFsOwotKwotKyAgICAgIC8qIEFzc3VtZSBDT1JFX0FERFIgY29ycmVzcG9uZHMgdG8g dW5zaWduZWQgbG9uZy4gICovCi0rICAgICAgdmFsID0gUHlJbnRfQXNMb25nIChvYmopOwotKwot KyAgICAgIGlmICh2YWwgPj0gMCkKLSsJKmFkZHIgPSB2YWw7Ci0rICAgICAgZWxzZQotKyAgICAg IHsKLSsJLyogSWYgbm8gZXJyb3Igb2N1cnJlZCwgVkFMIGlzIGluZGVlZCBuZWdhdGl2ZS4gICov Ci0rCWlmIChQeUVycl9PY2N1cnJlZCAoKSAhPSBOVUxMKQotKwkgIHJldHVybiAwOwotKwotKwlQ eUVycl9TZXRTdHJpbmcgKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBhZGRyZXNzIik7Ci0r CXJldHVybiAwOwotKyAgICAgIH0KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgUHlF cnJfU2V0U3RyaW5nIChQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIHR5cGUgZm9yIGFkZHJlc3Mi KTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgcmV0dXJuIDE7Ci0rfQotZGlmZiAt LWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRob24vcHktdmFsdWUuYwotaW5k ZXggYTc5MjgxOS4uYmRhYzgwZSAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHktdmFsdWUuYwot KysrIGIvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCi1AQCAtMjUsNiArMjUsNyBAQAotICNpbmNsdWRl ICJsYW5ndWFnZS5oIgotICNpbmNsdWRlICJkZnAuaCIKLSAjaW5jbHVkZSAidmFscHJpbnQuaCIK LSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSAKLSAjaWZkZWYgSEFWRV9QWVRIT04KLSAKLUBAIC00 Myw2ICs0NCwxMCBAQAotIC8qIFB5dGhvbidzIGxvbmcgdHlwZSBjb3JyZXNwb25kcyB0byBDJ3Mg bG9uZyBsb25nIHR5cGUuICAqLwotICNkZWZpbmUgYnVpbHRpbl90eXBlX3B5bG9uZyBidWlsdGlu X3R5cGUgKHB5dGhvbl9nZGJhcmNoKS0+YnVpbHRpbl9sb25nX2xvbmcKLSAKLSsvKiBQeXRob24n cyBsb25nIHR5cGUgY29ycmVzcG9uZHMgdG8gQydzIGxvbmcgbG9uZyB0eXBlLiAgVW5zaWduZWQg dmVyc2lvbi4gICovCi0rI2RlZmluZSBidWlsdGluX3R5cGVfdXB5bG9uZyBidWlsdGluX3R5cGUg XAotKyAgKHB5dGhvbl9nZGJhcmNoKS0+YnVpbHRpbl91bnNpZ25lZF9sb25nX2xvbmcKLSsKLSAj ZGVmaW5lIGJ1aWx0aW5fdHlwZV9weWJvb2wgXAotICAgbGFuZ3VhZ2VfYm9vbF90eXBlIChweXRo b25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoKQotIAotQEAgLTk0NSw3ICs5NTAsMzQgQEAgY29u dmVydF92YWx1ZV9mcm9tX3B5dGhvbiAoUHlPYmplY3QgKm9iaikKLSAJewotIAkgIExPTkdFU1Qg bCA9IFB5TG9uZ19Bc0xvbmdMb25nIChvYmopOwotIAotLQkgIGlmICghIFB5RXJyX09jY3VycmVk ICgpKQotKwkgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKLSsJICAgIHsKLSsJICAgICAgLyogSWYg dGhlIGVycm9yIHdhcyBhbiBvdmVyZmxvdywgd2UgY2FuIHRyeSBjb252ZXJ0aW5nIHRvCi0rCSAg ICAgICAgIFVMT05HRVNUIGluc3RlYWQuICAqLwotKwkgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9u TWF0Y2hlcyAoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCi0rCQl7Ci0rCQkgIFB5T2JqZWN0ICpldHlw ZSwgKmV2YWx1ZSwgKmV0cmFjZWJhY2ssICp6ZXJvOwotKwotKwkJICBQeUVycl9GZXRjaCAoJmV0 eXBlLCAmZXZhbHVlLCAmZXRyYWNlYmFjayk7Ci0rCQkgIHplcm8gPSBQeUludF9Gcm9tTG9uZyAo MCk7Ci0rCi0rCQkgIC8qIENoZWNrIHdoZXRoZXIgb2JqIGlzIHBvc2l0aXZlLiAgKi8KLSsJCSAg aWYgKFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCAob2JqLCB6ZXJvLCBQeV9HVCkgPiAwKQotKwkJ ICAgIHsKLSsJCSAgICAgIFVMT05HRVNUIHVsOwotKwotKwkJICAgICAgdWwgPSBQeUxvbmdfQXNV bnNpZ25lZExvbmdMb25nIChvYmopOwotKwkJICAgICAgaWYgKCEgUHlFcnJfT2NjdXJyZWQgKCkp Ci0rCQkJdmFsdWUgPSB2YWx1ZV9mcm9tX3Vsb25nZXN0IChidWlsdGluX3R5cGVfdXB5bG9uZywg dWwpOwotKwkJICAgIH0KLSsJCSAgZWxzZQotKwkJICAgIC8qIFRoZXJlJ3Mgbm90aGluZyB3ZSBj YW4gZG8uICAqLwotKwkJICAgIFB5RXJyX1Jlc3RvcmUgKGV0eXBlLCBldmFsdWUsIGV0cmFjZWJh Y2spOwotKwotKwkJICBQeV9ERUNSRUYgKHplcm8pOwotKwkJfQotKwkgICAgfQotKwkgIGVsc2UK LSAJICAgIHZhbHVlID0gdmFsdWVfZnJvbV9sb25nZXN0IChidWlsdGluX3R5cGVfcHlsb25nLCBs KTsKLSAJfQotICAgICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sgKG9iaikpCi1AQCAtMTAxMSw2 ICsxMDQzLDI1IEBAIGdkYnB5X2hpc3RvcnkgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJn cykKLSAgIHJldHVybiB2YWx1ZV90b192YWx1ZV9vYmplY3QgKHJlc192YWwpOwotIH0KLSAKLSsv KiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMg R0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3B5dGhvbl90eXBlc19tYXJr X3VzZWQgKHZvaWQpCi0rewotKyAgdmFsdWVfb2JqZWN0ICppdGVyOwotKwotKyAgZm9yIChpdGVy ID0gdmFsdWVzX2luX3B5dGhvbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQpCi0rICAgIHR5cGVf bWFya191c2VkICh2YWx1ZV90eXBlIChpdGVyLT52YWx1ZSkpOwotK30KLSsKLSsvKiBSZXR1cm5z IDEgaW4gT0JKIGlzIGEgZ2RiLlZhbHVlIG9iamVjdCwgMCBvdGhlcndpc2UuICAqLwotKwotK2lu dAotK2dkYnB5X2lzX3ZhbHVlX29iamVjdCAoUHlPYmplY3QgKm9iaikKLSt7Ci0rICByZXR1cm4g UHlPYmplY3RfVHlwZUNoZWNrIChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7Ci0rfQotKwotIHZv aWQKLSBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKLSB7Ci1AQCAtMTAyMSw2ICsxMDcy LDggQEAgZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCi0gICBQeU1vZHVsZV9BZGRPYmpl Y3QgKGdkYl9tb2R1bGUsICJWYWx1ZSIsIChQeU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5cGUp OwotIAotICAgdmFsdWVzX2luX3B5dGhvbiA9IE5VTEw7Ci0rCi0rICBvYnNlcnZlcl9hdHRhY2hf bWFya191c2VkIChweXRob25fdHlwZXNfbWFya191c2VkKTsKLSB9Ci0gCi0gDAotZGlmZiAtLWdp dCBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmggYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oCi1pbmRleCAxYmZhNzAwLi41MmY5YjM5IDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhvbi9w eXRob24taW50ZXJuYWwuaAotKysrIGIvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAotQEAg LTYxLDM2ICs2MSw3OSBAQCB0eXBlZGVmIGludCBQeV9zc2l6ZV90OwotICNkZWZpbmUgUHlFdmFs X1JlbGVhc2VMb2NrKCkgMAotICNlbmRpZgotIAotKyNpbmNsdWRlICJjb21tYW5kLmgiCi0rCi0r c3RydWN0IGJsb2NrOwotK3N0cnVjdCBzeW1ib2w7Ci0rc3RydWN0IHN5bXRhYl9hbmRfbGluZTsK LSBzdHJ1Y3QgdmFsdWU7Ci0gc3RydWN0IGxhbmd1YWdlX2RlZm47Ci0gCi0gZXh0ZXJuIFB5T2Jq ZWN0ICpnZGJfbW9kdWxlOwotK2V4dGVybiBQeVR5cGVPYmplY3QgYmxvY2tfb2JqZWN0X3R5cGU7 Ci0gZXh0ZXJuIFB5VHlwZU9iamVjdCB2YWx1ZV9vYmplY3RfdHlwZTsKLStleHRlcm4gUHlUeXBl T2JqZWN0IHN5bWJvbF9vYmplY3RfdHlwZTsKLSsKLSsvKiBVc2VkIGluIHB5dGhvbi1pbmZlcmlv ci5jLiAgKi8KLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIFB5T2JqZWN0X0hFQUQKLSsKLSsgIC8q IFRoZSB0aHJlYWQgd2UgcmVwcmVzZW50LiAgKi8KLSsgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhy ZWFkOwotKwotKyAgLyogVGhlIEluZmVyaW9yIG9iamVjdCB0byB3aGljaCB0aGlzIHRocmVhZCBi ZWxvbmdzLiAgKi8KLSsgIFB5T2JqZWN0ICppbmZfb2JqOwotK30gdGhyZWFkX29iamVjdDsKLSAK LSBQeU9iamVjdCAqZ2RicHlfaGlzdG9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KTsKLStQeU9iamVjdCAqZ2RicHlfYnJlYWtwb2ludHMgKFB5T2JqZWN0ICosIFB5T2JqZWN0ICop OwotIFB5T2JqZWN0ICpnZGJweV9mcmFtZV9zdG9wX3JlYXNvbl9zdHJpbmcgKFB5T2JqZWN0ICos IFB5T2JqZWN0ICopOwotK1B5T2JqZWN0ICpnZGJweV9sb29rdXBfc3ltYm9sIChQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdyk7Ci0gUHlPYmplY3QgKmdkYnB5X3Nl bGVjdGVkX2ZyYW1lIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotK1B5T2JqZWN0 ICpnZGJweV9ibG9ja19mb3JfcGMgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci0g UHlPYmplY3QgKmdkYnB5X2xvb2t1cF90eXBlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFy Z3MsIFB5T2JqZWN0ICprdyk7Ci0gUHlPYmplY3QgKmdkYnB5X2NyZWF0ZV9sYXp5X3N0cmluZ19v YmplY3QgKENPUkVfQUREUiBhZGRyZXNzLCBsb25nIGxlbmd0aCwKLSAJCQkJCSAgIGNvbnN0IGNo YXIgKmVuY29kaW5nLCBzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci0rUHlPYmplY3QgKmdkYnB5X2luZmVy aW9ycyAoUHlPYmplY3QgKnVudXNlZCwgUHlPYmplY3QgKnVudXNlZDIpOwotK1B5T2JqZWN0ICpn ZGJweV9zZWxlY3RlZF90aHJlYWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci0g Ci0rUHlPYmplY3QgKnN5bXRhYl9hbmRfbGluZV90b19zYWxfb2JqZWN0IChzdHJ1Y3Qgc3ltdGFi X2FuZF9saW5lIHNhbCk7Ci0rUHlPYmplY3QgKnN5bXRhYl90b19zeW10YWJfb2JqZWN0IChzdHJ1 Y3Qgc3ltdGFiICpzeW10YWIpOwotK1B5T2JqZWN0ICpzeW1ib2xfdG9fc3ltYm9sX29iamVjdCAo c3RydWN0IHN5bWJvbCAqc3ltKTsKLStQeU9iamVjdCAqYmxvY2tfdG9fYmxvY2tfb2JqZWN0IChz dHJ1Y3QgYmxvY2sgKmJsb2NrKTsKLSBQeU9iamVjdCAqdmFsdWVfdG9fdmFsdWVfb2JqZWN0IChz dHJ1Y3QgdmFsdWUgKnYpOwotIFB5T2JqZWN0ICp0eXBlX3RvX3R5cGVfb2JqZWN0IChzdHJ1Y3Qg dHlwZSAqKTsKLSBQeU9iamVjdCAqb2JqZmlsZV90b19vYmpmaWxlX29iamVjdCAoc3RydWN0IG9i amZpbGUgKik7Ci0rUHlPYmplY3QgKmZyYW1lX2luZm9fdG9fZnJhbWVfb2JqZWN0IChzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpOwotK3RocmVhZF9vYmplY3QgKmNyZWF0ZV90aHJlYWRfb2JqZWN0 IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKTsKLSt0aHJlYWRfb2JqZWN0ICpmaW5kX3RocmVhZF9v YmplY3QgKHB0aWRfdCBwdGlkKTsKLStQeU9iamVjdCAqZmluZF9pbmZlcmlvcl9vYmplY3QgKGlu dCBwaWQpOwotIAotIFB5T2JqZWN0ICpvYmpmcHlfZ2V0X3ByaW50ZXJzIChQeU9iamVjdCAqLCB2 b2lkICopOwotIAotK3N0cnVjdCBibG9jayAqYmxvY2tfb2JqZWN0X3RvX2Jsb2NrIChQeU9iamVj dCAqb2JqKTsKLStzdHJ1Y3Qgc3ltYm9sICpzeW1ib2xfb2JqZWN0X3RvX3N5bWJvbCAoUHlPYmpl Y3QgKm9iaik7Ci0gc3RydWN0IHZhbHVlICp2YWx1ZV9vYmplY3RfdG9fdmFsdWUgKFB5T2JqZWN0 ICpzZWxmKTsKLSBzdHJ1Y3QgdmFsdWUgKmNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24gKFB5T2Jq ZWN0ICpvYmopOwotIHN0cnVjdCB0eXBlICp0eXBlX29iamVjdF90b190eXBlIChQeU9iamVjdCAq b2JqKTsKLSAKLStQeU9iamVjdCAqZ2RicHlfZ2V0X2hvb2tfZnVuY3Rpb24gKGNvbnN0IGNoYXIg Kik7Ci0rCi0gdm9pZCBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCk7Ci0rdm9pZCBnZGJw eV9pbml0aWFsaXplX2JyZWFrcG9pbnRzICh2b2lkKTsKLSB2b2lkIGdkYnB5X2luaXRpYWxpemVf ZnJhbWVzICh2b2lkKTsKLSt2b2lkIGdkYnB5X2luaXRpYWxpemVfc3ltdGFicyAodm9pZCk7Ci0g dm9pZCBnZGJweV9pbml0aWFsaXplX2NvbW1hbmRzICh2b2lkKTsKLSt2b2lkIGdkYnB5X2luaXRp YWxpemVfc3ltYm9scyAodm9pZCk7Ci0gdm9pZCBnZGJweV9pbml0aWFsaXplX3R5cGVzICh2b2lk KTsKLSt2b2lkIGdkYnB5X2luaXRpYWxpemVfYmxvY2tzICh2b2lkKTsKLSB2b2lkIGdkYnB5X2lu aXRpYWxpemVfZnVuY3Rpb25zICh2b2lkKTsKLSB2b2lkIGdkYnB5X2luaXRpYWxpemVfb2JqZmls ZSAodm9pZCk7Ci0gdm9pZCBnZGJweV9pbml0aWFsaXplX2xhenlfc3RyaW5nICh2b2lkKTsKLSt2 b2lkIGdkYnB5X2luaXRpYWxpemVfcGFyYW1ldGVycyAodm9pZCk7Ci0rdm9pZCBnZGJweV9pbml0 aWFsaXplX3RocmVhZCAodm9pZCk7Ci0rdm9pZCBnZGJweV9pbml0aWFsaXplX2luZmVyaW9yICh2 b2lkKTsKLSAKLSBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAoUHlPYmpl Y3QgKnB5KTsKLSAKLUBAIC0xMDAsNiArMTQzLDEyIEBAIHN0cnVjdCBjbGVhbnVwICplbnN1cmVf cHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gZXh0ZXJuIHN0cnVjdCBnZGJh cmNoICpweXRob25fZ2RiYXJjaDsKLSBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4g KnB5dGhvbl9sYW5ndWFnZTsKLSAKLStjaGFyICpnZGJweV9wYXJzZV9jb21tYW5kX25hbWUgKGNo YXIgKnRleHQsCi0rCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlzdCwKLSsJ CQkJc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzdGFydF9saXN0KTsKLSsKLStQeU9iamVjdCAq Z2RicHlfcGFyYW1ldGVyX3ZhbHVlIChlbnVtIHZhcl90eXBlcywgdm9pZCAqKTsKLSsKLSAvKiBV c2UgdGhpcyBhZnRlciBhIFRSWV9FWENFUFQgdG8gdGhyb3cgdGhlIGFwcHJvcHJpYXRlIFB5dGhv bgotICAgIGV4Y2VwdGlvbi4gICovCi0gI2RlZmluZSBHREJfUFlfSEFORExFX0VYQ0VQVElPTihF eGNlcHRpb24pCQkJCVwKLUBAIC0xMTAsNiArMTU5LDE5IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3Qg bGFuZ3VhZ2VfZGVmbiAqcHl0aG9uX2xhbmd1YWdlOwotIAkJCSAgICAgIiVzIiwgRXhjZXB0aW9u Lm1lc3NhZ2UpOwkJCVwKLSAgICAgfSB3aGlsZSAoMCkKLSAKLSsvKiBVc2UgdGhpcyBhZnRlciBh IFRSWV9FWENFUFQgdG8gdGhyb3cgdGhlIGFwcHJvcHJpYXRlIFB5dGhvbgotKyAgIGV4Y2VwdGlv bi4gIFRoaXMgbWFjcm8gaXMgZm9yIHVzZSBpbnNpZGUgc2V0dGVyIGZ1bmN0aW9ucy4gICovCi0r I2RlZmluZSBHREJfUFlfU0VUX0hBTkRMRV9FWENFUFRJT04oRXhjZXB0aW9uKQkJCQlcCi0rICAg IGRvIHsJCQkJCQkJCVwKLSsgICAgICBpZiAoRXhjZXB0aW9uLnJlYXNvbiA8IDApCQkJCQkJXAot KyAgICAgICAgewkJCQkJCQkJXAotKwkgIFB5RXJyX0Zvcm1hdCAoRXhjZXB0aW9uLnJlYXNvbiA9 PSBSRVRVUk5fUVVJVAkJCVwKLSsJCQk/IFB5RXhjX0tleWJvYXJkSW50ZXJydXB0IDogUHlFeGNf UnVudGltZUVycm9yLCBcCi0rCQkJIiVzIiwgRXhjZXB0aW9uLm1lc3NhZ2UpOwkJCVwKLSsJICBy ZXR1cm4gLTE7CQkJCQkJCVwKLSsJfQkJCQkJCQkJXAotKyAgICB9IHdoaWxlICgwKQotKwotIAot IHZvaWQgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpOwotIAotQEAgLTEyNSwxNyArMTg3LDIyIEBA IGdkYl9ieXRlICpnZGJweV9leHRyYWN0X2xhenlfc3RyaW5nIChQeU9iamVjdCAqc3RyaW5nLAot IAkJCQkgICAgIHN0cnVjdCB0eXBlICoqc3RyX3R5cGUsIAotIAkJCQkgICAgIGxvbmcgKmxlbmd0 aCwgY2hhciAqKmVuY29kaW5nKTsKLSAKLStpbnQgZ2RicHlfaXNfdmFsdWVfb2JqZWN0IChQeU9i amVjdCAqb2JqKTsKLSsKLSAvKiBOb3RlIHRoYXQgdGhlc2UgYXJlIGRlY2xhcmVkIGhlcmUsIGFu ZCBub3QgaW4gcHl0aG9uLmggd2l0aCB0aGUKLSAgICBvdGhlciBwcmV0dHktcHJpbnRlciBmdW5j dGlvbnMsIGJlY2F1c2UgdGhleSByZWZlciB0byBQeU9iamVjdC4gICovCi0gUHlPYmplY3QgKmFw cGx5X3Zhcm9ial9wcmV0dHlfcHJpbnRlciAoUHlPYmplY3QgKnByaW50X29iaiwKLSAJCQkJICAg ICAgIHN0cnVjdCB2YWx1ZSAqKnJlcGxhY2VtZW50KTsKLSBQeU9iamVjdCAqZ2RicHlfZ2V0X3Zh cm9ial9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHZhbHVlICp2YWx1ZSk7Ci0rUHlPYmplY3QgKmdk YnB5X2luc3RhbnRpYXRlX3ByaW50ZXIgKFB5T2JqZWN0ICpjb25zLCBQeU9iamVjdCAqdmFsdWUp OwotIGNoYXIgKmdkYnB5X2dldF9kaXNwbGF5X2hpbnQgKFB5T2JqZWN0ICpwcmludGVyKTsKLSBQ eU9iamVjdCAqZ2RicHlfZGVmYXVsdF92aXN1YWxpemVyIChQeU9iamVjdCAqc2VsZiwgUHlPYmpl Y3QgKmFyZ3MpOwotIAotLWV4dGVybiBQeU9iamVjdCAqZ2RicHlfZG9jX2NzdDsKLSBleHRlcm4g UHlPYmplY3QgKmdkYnB5X2NoaWxkcmVuX2NzdDsKLSBleHRlcm4gUHlPYmplY3QgKmdkYnB5X3Rv X3N0cmluZ19jc3Q7Ci0gZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9kaXNwbGF5X2hpbnRfY3N0Owot K2V4dGVybiBQeU9iamVjdCAqZ2RicHlfZG9jX2NzdDsKLSsKLStpbnQgZ2V0X2FkZHJfZnJvbV9w eXRob24gKFB5T2JqZWN0ICpvYmosIENPUkVfQUREUiAqYWRkcik7Ci0gCi0gI2VuZGlmIC8qIEdE Ql9QWVRIT05fSU5URVJOQUxfSCAqLwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmMg Yi9nZGIvcHl0aG9uL3B5dGhvbi5jCi1pbmRleCAyOTM4NmM5Li4xOTVkYWNlIDEwMDY0NAotLS0t IGEvZ2RiL3B5dGhvbi9weXRob24uYwotKysrIGIvZ2RiL3B5dGhvbi9weXRob24uYwotQEAgLTI4 LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSAidmFsdWUuaCIKLSAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIK LSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJldmVudC1sb29wLmgiCi0gCi0g I2luY2x1ZGUgPGN0eXBlLmg+Ci0gCi1AQCAtNDYsMTAgKzQ3LDE3IEBAIHN0YXRpYyBpbnQgZ2Ri cHlfYXV0b19sb2FkID0gMTsKLSAjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKLSAjaW5jbHVk ZSAiY2hhcnNldC5oIgotICNpbmNsdWRlICJ0b3AuaCIKLSsjaW5jbHVkZSAic29saWIuaCIKLSAj aW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCi0rI2luY2x1ZGUgImxpbmVzcGVjLmgiCi0rI2lu Y2x1ZGUgInN5bXRhYi5oIgotKyNpbmNsdWRlICJzb3VyY2UuaCIKLSAjaW5jbHVkZSAidmVyc2lv bi5oIgotKyNpbmNsdWRlICJpbmZlcmlvci5oIgotKyNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKLSAj aW5jbHVkZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUgImdkYnRocmVhZC5oIgotKyNpbmNsdWRlICJl dmVudC10b3AuaCIKLSAKLSBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9kc1tdOwotIAotQEAg LTE5NywxMCArMjA1LDEwIEBAIHB5dGhvbl9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0 eSkKLSAgICBOVUxMIChhbmQgc2V0IGEgUHl0aG9uIGV4Y2VwdGlvbikgb24gZXJyb3IuICBIZWxw ZXIgZnVuY3Rpb24gZm9yCi0gICAgZ2V0X3BhcmFtZXRlci4gICovCi0gCi0tc3RhdGljIFB5T2Jq ZWN0ICoKLS1wYXJhbWV0ZXJfdG9fcHl0aG9uIChzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21k KQotK1B5T2JqZWN0ICoKLStnZGJweV9wYXJhbWV0ZXJfdmFsdWUgKGVudW0gdmFyX3R5cGVzIHR5 cGUsIHZvaWQgKnZhcikKLSB7Ci0tICBzd2l0Y2ggKGNtZC0+dmFyX3R5cGUpCi0rICBzd2l0Y2gg KHR5cGUpCi0gICAgIHsKLSAgICAgY2FzZSB2YXJfc3RyaW5nOgotICAgICBjYXNlIHZhcl9zdHJp bmdfbm9lc2NhcGU6Ci1AQCAtMjA4LDcgKzIxNiw3IEBAIHBhcmFtZXRlcl90b19weXRob24gKHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQpCi0gICAgIGNhc2UgdmFyX2ZpbGVuYW1lOgotICAg ICBjYXNlIHZhcl9lbnVtOgotICAgICAgIHsKLS0JY2hhciAqc3RyID0gKiAoY2hhciAqKikgY21k LT52YXI7Ci0rCWNoYXIgKnN0ciA9ICogKGNoYXIgKiopIHZhcjsKLSAJaWYgKCEgc3RyKQotIAkg IHN0ciA9ICIiOwotIAlyZXR1cm4gUHlTdHJpbmdfRGVjb2RlIChzdHIsIHN0cmxlbiAoc3RyKSwg aG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKLUBAIC0yMTYsNyArMjI0LDcgQEAgcGFyYW1ldGVyX3Rv X3B5dGhvbiAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZCkKLSAKLSAgICAgY2FzZSB2YXJf Ym9vbGVhbjoKLSAgICAgICB7Ci0tCWlmICgqIChpbnQgKikgY21kLT52YXIpCi0rCWlmICgqIChp bnQgKikgdmFyKQotIAkgIFB5X1JFVFVSTl9UUlVFOwotIAllbHNlCi0gCSAgUHlfUkVUVVJOX0ZB TFNFOwotQEAgLTIyNCw3ICsyMzIsNyBAQCBwYXJhbWV0ZXJfdG9fcHl0aG9uIChzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqY21kKQotIAotICAgICBjYXNlIHZhcl9hdXRvX2Jvb2xlYW46Ci0gICAg ICAgewotLQllbnVtIGF1dG9fYm9vbGVhbiBhYiA9ICogKGVudW0gYXV0b19ib29sZWFuICopIGNt ZC0+dmFyOwotKwllbnVtIGF1dG9fYm9vbGVhbiBhYiA9ICogKGVudW0gYXV0b19ib29sZWFuICop IHZhcjsKLSAJaWYgKGFiID09IEFVVE9fQk9PTEVBTl9UUlVFKQotIAkgIFB5X1JFVFVSTl9UUlVF OwotIAllbHNlIGlmIChhYiA9PSBBVVRPX0JPT0xFQU5fRkFMU0UpCi1AQCAtMjM0LDE1ICsyNDIs MTUgQEAgcGFyYW1ldGVyX3RvX3B5dGhvbiAoc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZCkK LSAgICAgICB9Ci0gCi0gICAgIGNhc2UgdmFyX2ludGVnZXI6Ci0tICAgICAgaWYgKCgqIChpbnQg KikgY21kLT52YXIpID09IElOVF9NQVgpCi0rICAgICAgaWYgKCgqIChpbnQgKikgdmFyKSA9PSBJ TlRfTUFYKQotIAlQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwot ICAgICBjYXNlIHZhcl96aW50ZWdlcjoKLS0gICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nICgq IChpbnQgKikgY21kLT52YXIpOwotKyAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcgKCogKGlu dCAqKSB2YXIpOwotIAotICAgICBjYXNlIHZhcl91aW50ZWdlcjoKLSAgICAgICB7Ci0tCXVuc2ln bmVkIGludCB2YWwgPSAqICh1bnNpZ25lZCBpbnQgKikgY21kLT52YXI7Ci0rCXVuc2lnbmVkIGlu dCB2YWwgPSAqICh1bnNpZ25lZCBpbnQgKikgdmFyOwotIAlpZiAodmFsID09IFVJTlRfTUFYKQot IAkgIFB5X1JFVFVSTl9OT05FOwotIAlyZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcgKHZh bCk7Ci1AQCAtMjgwLDcgKzI4OCw3IEBAIGdkYnB5X3BhcmFtZXRlciAoUHlPYmplY3QgKnNlbGYs IFB5T2JqZWN0ICphcmdzKQotIAotICAgaWYgKCEgY21kLT52YXIpCi0gICAgIHJldHVybiBQeUVy cl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImAlcycgaXMgbm90IGEgcGFyYW1ldGVyIiwg YXJnKTsKLS0gIHJldHVybiBwYXJhbWV0ZXJfdG9fcHl0aG9uIChjbWQpOwotKyAgcmV0dXJuIGdk YnB5X3BhcmFtZXRlcl92YWx1ZSAoY21kLT52YXJfdHlwZSwgY21kLT52YXIpOwotIH0KLSAKLSAv KiBBIFB5dGhvbiBmdW5jdGlvbiB3aGljaCBldmFsdWF0ZXMgYSBzdHJpbmcgdXNpbmcgdGhlIGdk YiBDTEkuICAqLwotQEAgLTMyMyw2ICszMzEsMTA1IEBAIGV4ZWN1dGVfZ2RiX2NvbW1hbmQgKFB5 T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSAgIFB5X1JFVFVSTl9OT05FOwotIH0KLSAK LSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIuc29saWJfYWRkcmVzcyAoTG9uZykgLT4gU3RyaW5n LgotKyAgIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGhvbGRpbmcgYSBn aXZlbiBhZGRyZXNzLCBvciBOb25lLiAgKi8KLSsKLStzdGF0aWMgUHlPYmplY3QgKgotK2dkYnB5 X3NvbGliX2FkZHJlc3MgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICB1 bnNpZ25lZCBsb25nIGxvbmcgcGM7Ci0rICBjaGFyICpzb25hbWU7Ci0rICBQeU9iamVjdCAqc3Ry X29iajsKLSsKLSsgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgIksiLCAmcGMpKQotKyAg ICByZXR1cm4gTlVMTDsKLSsKLSsgIHNvbmFtZSA9IHNvbGliX25hbWVfZnJvbV9hZGRyZXNzIChj dXJyZW50X3Byb2dyYW1fc3BhY2UsIHBjKTsKLSsgIGlmIChzb25hbWUpCi0rICAgIHN0cl9vYmog PSBQeVN0cmluZ19EZWNvZGUgKHNvbmFtZSwgc3RybGVuIChzb25hbWUpLCBob3N0X2NoYXJzZXQg KCksIE5VTEwpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RyX29iaiA9IFB5X05vbmU7Ci0r ICAgICAgUHlfSU5DUkVGIChQeV9Ob25lKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHN0cl9vYmo7 Ci0rfQotKwotKy8qIEEgUHl0aG9uIGZ1bmN0aW9uIHdoaWNoIGlzIGEgd3JhcHBlciBmb3IgZGVj b2RlX2xpbmVfMS4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLStnZGJweV9kZWNvZGVfbGlu ZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIHN0cnVjdCBzeW10YWJz X2FuZF9saW5lcyBzYWxzID0geyBOVUxMLCAwIH07IC8qIEluaXRpYWxpemUgdG8gYXBwZWFzZSBn Y2MuICAqLwotKyAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0rICBjaGFyICphcmcgPSBO VUxMOwotKyAgaW50IGZyZWVfc2FscyA9IDAsIGk7Ci0rICBQeU9iamVjdCAqcmVzdWx0ID0gTlVM TDsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIGlmICgh IFB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJ8cyIsICZhcmcpKQotKyAgICByZXR1cm4gTlVMTDsK LSsKLSsgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAg ICBpZiAoYXJnKQotKwl7Ci0rCSAgY2hhciAqY29weTsKLSsKLSsJICBhcmcgPSBzdHJkdXAgKGFy Zyk7Ci0rCSAgY29weSA9IGFyZzsKLSsKLSsJICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJmNvcHks IDAsIDAsIDAsIDAsIDApOwotKwkgIGZyZWVfc2FscyA9IDE7Ci0rCX0KLSsgICAgICBlbHNlCi0r CXsKLSsJICBzZXRfZGVmYXVsdF9zb3VyY2Vfc3ltdGFiX2FuZF9saW5lICgpOwotKwkgIHNhbCA9 IGdldF9jdXJyZW50X3NvdXJjZV9zeW10YWJfYW5kX2xpbmUgKCk7Ci0rCSAgc2Fscy5zYWxzID0g JnNhbDsKLSsJICBzYWxzLm5lbHRzID0gMTsKLSsJfQotKyAgICB9Ci0rICBpZiAoYXJnKQotKyAg ICB4ZnJlZSAoYXJnKTsKLSsKLSsgIGlmIChleGNlcHQucmVhc29uIDwgMCkKLSsgICAgewotKyAg ICAgIGlmIChmcmVlX3NhbHMpCi0rCXhmcmVlIChzYWxzLnNhbHMpOwotKyAgICAgIC8qIFdlIGtu b3cgdGhpcyB3aWxsIGFsd2F5cyB0aHJvdy4gICovCi0rICAgICAgR0RCX1BZX0hBTkRMRV9FWENF UFRJT04gKGV4Y2VwdCk7Ci0rICAgIH0KLSsKLSsgIGlmIChzYWxzLm5lbHRzKQotKyAgICB7Ci0r ICAgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcgKHNhbHMubmVsdHMpOwotKyAgICAgIGZvciAoaSA9 IDA7IGkgPCBzYWxzLm5lbHRzOyArK2kpCi0rCXsKLSsJICBQeU9iamVjdCAqb2JqOwotKwkgIGNo YXIgKnN0cjsKLSsKLSsJICBvYmogPSBzeW10YWJfYW5kX2xpbmVfdG9fc2FsX29iamVjdCAoc2Fs cy5zYWxzW2ldKTsKLSsJICBpZiAoISBvYmopCi0rCSAgICB7Ci0rCSAgICAgIFB5X0RFQ1JFRiAo cmVzdWx0KTsKLSsJICAgICAgcmVzdWx0ID0gTlVMTDsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9 Ci0rCi0rCSAgUHlUdXBsZV9TZXRJdGVtIChyZXN1bHQsIGksIG9iaik7Ci0rCX0KLSsgICAgfQot KwotKyAgaWYgKGZyZWVfc2FscykKLSsgICAgeGZyZWUgKHNhbHMuc2Fscyk7Ci0rCi0rICBpZiAo cmVzdWx0KQotKyAgICByZXR1cm4gcmVzdWx0OwotKyAgUHlfUkVUVVJOX05PTkU7Ci0rfQotKwot IC8qIFBhcnNlIGEgc3RyaW5nIGFuZCBldmFsdWF0ZSBpdCBhcyBhbiBleHByZXNzaW9uLiAgKi8K LSBzdGF0aWMgUHlPYmplY3QgKgotIGdkYnB5X3BhcnNlX2FuZF9ldmFsIChQeU9iamVjdCAqc2Vs ZiwgUHlPYmplY3QgKmFyZ3MpCi1AQCAtMzYxLDYgKzQ2OCwxMTQgQEAgc291cmNlX3B5dGhvbl9z Y3JpcHQgKEZJTEUgKnN0cmVhbSwgY2hhciAqZmlsZSkKLSAKLSAMCi0gCi0rLyogUG9zdGluZyBh bmQgaGFuZGxpbmcgZXZlbnRzLiAgKi8KLSsKLSsvKiBBIHNpbmdsZSBldmVudC4gICovCi0rc3Ry dWN0IGdkYnB5X2V2ZW50Ci0rewotKyAgLyogVGhlIFB5dGhvbiBldmVudC4gIFRoaXMgaXMganVz dCBhIGNhbGxhYmxlIG9iamVjdC4gICovCi0rICBQeU9iamVjdCAqZXZlbnQ7Ci0rICAvKiBUaGUg bmV4dCBldmVudC4gICovCi0rICBzdHJ1Y3QgZ2RicHlfZXZlbnQgKm5leHQ7Ci0rfTsKLSsKLSsv KiBBbGwgcGVuZGluZyBldmVudHMuICAqLwotK3N0YXRpYyBzdHJ1Y3QgZ2RicHlfZXZlbnQgKmdk YnB5X2V2ZW50X2xpc3Q7Ci0rLyogVGhlIGZpbmFsIGxpbmsgb2YgdGhlIGV2ZW50IGxpc3QuICAq LwotK3N0YXRpYyBzdHJ1Y3QgZ2RicHlfZXZlbnQgKipnZGJweV9ldmVudF9saXN0X2VuZDsKLSsK LSsvKiBXZSB1c2UgYSBmaWxlIGhhbmRsZXIsIGFuZCBub3QgYW4gYXN5bmMgaGFuZGxlciwgc28g dGhhdCB3ZSBjYW4KLSsgICB3YWtlIHVwIHRoZSBtYWluIHRocmVhZCBldmVuIHdoZW4gaXQgaXMg YmxvY2tlZCBpbiBwb2xsKCkuICAqLwotK3N0YXRpYyBpbnQgZ2RicHlfZXZlbnRfZmRzWzJdOwot KwotKy8qIFRoZSBmaWxlIGhhbmRsZXIgY2FsbGJhY2suICBUaGlzIHJlYWRzIGZyb20gdGhlIGlu dGVybmFsIHBpcGUsIGFuZAotKyAgIHRoZW4gcHJvY2Vzc2VzIHRoZSBQeXRob24gZXZlbnQgcXVl dWUuICBUaGlzIHdpbGwgYWx3YXlzIGJlIHJ1biBpbgotKyAgIHRoZSBtYWluIGdkYiB0aHJlYWQu ICAqLwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfcnVuX2V2ZW50cyAoaW50IGVyciwgZ2RiX2NsaWVu dF9kYXRhIGlnbm9yZSkKLSt7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSsgIGNoYXIg YnVmZmVyWzEwMF07Ci0rICBpbnQgcjsKLSsKLSsgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2Vu diAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7Ci0rCi0rICAvKiBKdXN0 IHJlYWQgd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIG9uIHRoZSBmZC4gIEl0IGlzIHJlbGF0aXZlbHkK LSsgICAgIGhhcm1sZXNzIGlmIHRoZXJlIGFyZSBhbnkgYnl0ZXMgbGVmdCBvdmVyLiAgKi8KLSsg IHIgPSByZWFkIChnZGJweV9ldmVudF9mZHNbMF0sIGJ1ZmZlciwgc2l6ZW9mIChidWZmZXIpKTsK LSsKLSsgIHdoaWxlIChnZGJweV9ldmVudF9saXN0KQotKyAgICB7Ci0rICAgICAgLyogRGlzcGF0 Y2hpbmcgdGhlIGV2ZW50IG1pZ2h0IHB1c2ggYSBuZXcgZWxlbWVudCBvbnRvIHRoZSBldmVudAot KwkgbG9vcCwgc28gd2UgdXBkYXRlIGhlcmUgImF0b21pY2FsbHkgZW5vdWdoIi4gICovCi0rICAg ICAgc3RydWN0IGdkYnB5X2V2ZW50ICppdGVtID0gZ2RicHlfZXZlbnRfbGlzdDsKLSsgICAgICBn ZGJweV9ldmVudF9saXN0ID0gZ2RicHlfZXZlbnRfbGlzdC0+bmV4dDsKLSsgICAgICBpZiAoZ2Ri cHlfZXZlbnRfbGlzdCA9PSBOVUxMKQotKwlnZGJweV9ldmVudF9saXN0X2VuZCA9ICZnZGJweV9l dmVudF9saXN0OwotKwotKyAgICAgIC8qIElnbm9yZSBlcnJvcnMuICAqLwotKyAgICAgIFB5T2Jq ZWN0X0NhbGxPYmplY3QgKGl0ZW0tPmV2ZW50LCBOVUxMKTsKLSsKLSsgICAgICBQeV9ERUNSRUYg KGl0ZW0tPmV2ZW50KTsKLSsgICAgICB4ZnJlZSAoaXRlbSk7Ci0rICAgIH0KLSsKLSsgIGRvX2Ns ZWFudXBzIChjbGVhbnVwKTsKLSt9Ci0rCi0rLyogU3VibWl0IGFuIGV2ZW50IHRvIHRoZSBnZGIg dGhyZWFkLiAgKi8KLStzdGF0aWMgUHlPYmplY3QgKgotK2dkYnB5X3Bvc3RfZXZlbnQgKFB5T2Jq ZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBzdHJ1Y3QgZ2RicHlfZXZlbnQgKmV2 ZW50OwotKyAgUHlPYmplY3QgKmZ1bmM7Ci0rICBpbnQgd2FrZXVwOwotKwotKyAgaWYgKCFQeUFy Z19QYXJzZVR1cGxlIChhcmdzLCAiTyIsICZmdW5jKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0r ICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2sgKGZ1bmMpKQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0 U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3IsICJQb3N0ZWQgZXZlbnQgaXMgbm90IGNhbGxhYmxl Iik7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIFB5X0lOQ1JFRiAoZnVuYyk7 Ci0rCi0rICAvKiBGcm9tIGhlcmUgdW50aWwgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24sIHdlIGhh dmUgdGhlIEdJTCwgc28gd2UKLSsgICAgIGNhbiBvcGVyYXRlIG9uIG91ciBnbG9iYWwgZGF0YSBz dHJ1Y3R1cmVzIHdpdGhvdXQgd29ycnlpbmcuICAqLwotKyAgd2FrZXVwID0gZ2RicHlfZXZlbnRf bGlzdCA9PSBOVUxMOwotKwotKyAgZXZlbnQgPSBYTkVXIChzdHJ1Y3QgZ2RicHlfZXZlbnQpOwot KyAgZXZlbnQtPmV2ZW50ID0gZnVuYzsKLSsgIGV2ZW50LT5uZXh0ID0gTlVMTDsKLSsgICpnZGJw eV9ldmVudF9saXN0X2VuZCA9IGV2ZW50OwotKyAgZ2RicHlfZXZlbnRfbGlzdF9lbmQgPSAmZXZl bnQtPm5leHQ7Ci0rCi0rICAvKiBXYWtlIHVwIGdkYiB3aGVuIG5lZWRlZC4gICovCi0rICBpZiAo d2FrZXVwKQotKyAgICB7Ci0rICAgICAgY2hhciBjID0gJ3EnOwkJLyogQW55dGhpbmcuICovCi0r ICAgICAgaWYgKHdyaXRlIChnZGJweV9ldmVudF9mZHNbMV0sICZjLCAxKSAhPSAxKQotKyAgICAg ICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyAoUHlFeGNfSU9FcnJvcik7Ci0rICAgIH0KLSsK LSsgIFB5X1JFVFVSTl9OT05FOwotK30KLSsKLSsvKiBJbml0aWFsaXplIHRoZSBQeXRob24gZXZl bnQgaGFuZGxlci4gICovCi0rc3RhdGljIHZvaWQKLStnZGJweV9pbml0aWFsaXplX2V2ZW50cyAo dm9pZCkKLSt7Ci0rICBpZiAoIXBpcGUgKGdkYnB5X2V2ZW50X2ZkcykpCi0rICAgIHsKLSsgICAg ICBnZGJweV9ldmVudF9saXN0X2VuZCA9ICZnZGJweV9ldmVudF9saXN0OwotKyAgICAgIGFkZF9m aWxlX2hhbmRsZXIgKGdkYnB5X2V2ZW50X2Zkc1swXSwgZ2RicHlfcnVuX2V2ZW50cywgTlVMTCk7 Ci0rICAgIH0KLSt9Ci0rCi0rDAotKwotIC8qIFByaW50aW5nLiAgKi8KLSAKLSAvKiBBIHB5dGhv biBmdW5jdGlvbiB0byB3cml0ZSBhIHNpbmdsZSBzdHJpbmcgdXNpbmcgZ2RiJ3MgZmlsdGVyZWQK LUBAIC0zOTcsNiArNjEyLDU1IEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQotIAotIAwKLSAK LSsvKiBTY3JpcHQgaW50ZXJmYWNlLiAgKi8KLSsKLSsvKiBUcnVlIGlmICdnZGIgLVAnIHdhcyB1 c2VkLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQgcnVubmluZ19weXRob25fc2Ny aXB0OwotKwotKy8qIFRydWUgaWYgd2UgYXJlIGN1cnJlbnRseSBpbiBhIGNhbGwgdG8gJ2dkYi5j bGknLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQgaW5fY2xpOwotKwotKy8qIEVu dGVyIHRoZSBjb21tYW5kIGxvb3AuICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rZ2RicHlf Y2xpIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIpCi0rewotKyAgaWYgKCEg cnVubmluZ19weXRob25fc2NyaXB0IHx8IGluX2NsaSkKLSsgICAgcmV0dXJuIFB5RXJyX0Zvcm1h dCAoUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90IGludm9rZSBDTEkgcmVjdXJzaXZlbHkiKTsK LSsKLSsgIGluX2NsaSA9IDE7Ci0rICBjbGlfY29tbWFuZF9sb29wICgpOwotKyAgaW5fY2xpID0g MDsKLSsKLSsgIFB5X1JFVFVSTl9OT05FOwotK30KLSsKLSsvKiBTZXQgdXAgdGhlIFB5dGhvbiBh cmd1bWVudCB2ZWN0b3IgYW5kIGV2YWx1YXRlIGEgc2NyaXB0LiAgVGhpcyBpcwotKyAgIHVzZWQg dG8gaW1wbGVtZW50ICdnZGIgLVAnLiAgKi8KLSsKLSt2b2lkCi0rcnVuX3B5dGhvbl9zY3JpcHQg KGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBGSUxFICppbnB1dDsKLSsKLSsgIC8qIFdl IG5ldmVyIGZyZWUgdGhpcywgc2luY2Ugd2UgcGxhbiB0byBleGl0IGF0IHRoZSBlbmQuICAqLwot KyAgZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3Vh Z2UpOwotKwotKyAgcnVubmluZ19weXRob25fc2NyaXB0ID0gMTsKLSsgIFB5U3lzX1NldEFyZ3Yg KGFyZ2MgLSAxLCBhcmd2ICsgMSk7Ci0rICBpbnB1dCA9IGZvcGVuIChhcmd2WzBdLCAiciIpOwot KyAgaWYgKCEgaW5wdXQpCi0rICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJjb3VsZCBu b3Qgb3BlbiAlczogJXNcbiIsIGFyZ3ZbMF0sIHN0cmVycm9yIChlcnJubykpOwotKyAgICAgIGV4 aXQgKDEpOwotKyAgICB9Ci0rICBQeVJ1bl9TaW1wbGVGaWxlIChpbnB1dCwgYXJndlswXSk7Ci0r ICBmY2xvc2UgKGlucHV0KTsKLSsgIGV4aXQgKDApOwotK30KLSsKLSsMCi0rCi0gLyogVGhlICJj dXJyZW50IiBvYmpmaWxlLiAgVGhpcyBpcyBzZXQgd2hlbiBnZGIgZGV0ZWN0cyB0aGF0IGEgbmV3 Ci0gICAgb2JqZmlsZSBoYXMgYmVlbiBsb2FkZWQuICBJdCBpcyBvbmx5IHNldCBmb3IgdGhlIGR1 cmF0aW9uIG9mIGEgY2FsbAotICAgIHRvIGdkYnB5X25ld19vYmpmaWxlOyBpdCBpcyBOVUxMIGF0 IG90aGVyIHRpbWVzLiAgKi8KLUBAIC02NDAsMTQgKzkwNCwyOCBAQCBFbmFibGVzIG9yIGRpc2Fi bGVzIGF1dG8tbG9hZGluZyBvZiBQeXRob24gY29kZSB3aGVuIGFuIG9iamVjdCBpcyBvcGVuZWQu IiksCi0gICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudCAoZ2RiX21vZHVsZSwgIlZFUlNJT04i LCAoY2hhciopIHZlcnNpb24pOwotICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQgKGdkYl9t b2R1bGUsICJIT1NUX0NPTkZJRyIsIChjaGFyKikgaG9zdF9uYW1lKTsKLSAgIFB5TW9kdWxlX0Fk ZFN0cmluZ0NvbnN0YW50IChnZGJfbW9kdWxlLCAiVEFSR0VUX0NPTkZJRyIsIChjaGFyKikgdGFy Z2V0X25hbWUpOwotKyNpZmRlZiBQWVRIT05ESVIKLSsgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0 YW50IChnZGJfbW9kdWxlLCAicHl0aG9uZGlyIiwgUFlUSE9ORElSKTsKLSsjZWxzZQotKyAgaWYg KGdkYl9kYXRhZGlyKQotKyAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudCAoZ2RiX21vZHVs ZSwgImRhdGFkaXIiLCBnZGJfZGF0YWRpcik7Ci0rI2VuZGlmCi0gCi0gICBnZGJweV9pbml0aWFs aXplX3ZhbHVlcyAoKTsKLSsgIGdkYnB5X2luaXRpYWxpemVfYnJlYWtwb2ludHMgKCk7Ci0gICBn ZGJweV9pbml0aWFsaXplX2ZyYW1lcyAoKTsKLSsgIGdkYnB5X2luaXRpYWxpemVfc3ltdGFicyAo KTsKLSAgIGdkYnB5X2luaXRpYWxpemVfY29tbWFuZHMgKCk7Ci0rICBnZGJweV9pbml0aWFsaXpl X3N5bWJvbHMgKCk7Ci0rICBnZGJweV9pbml0aWFsaXplX2Jsb2NrcyAoKTsKLSAgIGdkYnB5X2lu aXRpYWxpemVfZnVuY3Rpb25zICgpOwotICAgZ2RicHlfaW5pdGlhbGl6ZV90eXBlcyAoKTsKLSsg IGdkYnB5X2luaXRpYWxpemVfcGFyYW1ldGVycyAoKTsKLSAgIGdkYnB5X2luaXRpYWxpemVfb2Jq ZmlsZSAoKTsKLSAgIGdkYnB5X2luaXRpYWxpemVfbGF6eV9zdHJpbmcgKCk7Ci0rICBnZGJweV9p bml0aWFsaXplX3RocmVhZCAoKTsKLSsgIGdkYnB5X2luaXRpYWxpemVfaW5mZXJpb3IgKCk7Ci0r ICBnZGJweV9pbml0aWFsaXplX2V2ZW50cyAoKTsKLSAKLSAgIFB5UnVuX1NpbXBsZVN0cmluZyAo ImltcG9ydCBnZGIiKTsKLSAgIFB5UnVuX1NpbXBsZVN0cmluZyAoImdkYi5wcmV0dHlfcHJpbnRl cnMgPSBbXSIpOwotQEAgLTY4Myw2ICs5NjEsMTUgQEAgY2xhc3MgR2RiT3V0cHV0RmlsZTpcblwK LSBcblwKLSBzeXMuc3RkZXJyID0gR2RiT3V0cHV0RmlsZSgpXG5cCi0gc3lzLnN0ZG91dCA9IEdk Yk91dHB1dEZpbGUoKVxuXAotK2lmIGhhc2F0dHIgKGdkYiwgJ2RhdGFkaXInKTpcblwKLSsgIGdk Yi5weXRob25kaXIgPSBnZGIuZGF0YWRpciArICcvcHl0aG9uJ1xuXAotK2lmIGhhc2F0dHIgKGdk YiwgJ3B5dGhvbmRpcicpOlxuXAotKyAgc3lzLnBhdGguaW5zZXJ0KDAsIGdkYi5weXRob25kaXIp XG5cCi0rICBnZGIuX19wYXRoX18gPSBbZ2RiLnB5dGhvbmRpciArICcvZ2RiJ11cblwKLSsgIGZy b20gb3MucGF0aCBpbXBvcnQgZXhpc3RzXG5cCi0rICBpcHkgPSBnZGIucHl0aG9uZGlyICsgJy9n ZGIvX19pbml0X18ucHknXG5cCi0rICBpZiBleGlzdHMgKGlweSk6XG5cCi0rICAgIGV4ZWNmaWxl IChpcHkpXG5cCi0gIik7Ci0gCi0gICAvKiBSZWxlYXNlIHRoZSBHSUwgd2hpbGUgZ2RiIHJ1bnMu ICAqLwotQEAgLTcwMiw5ICs5ODksMTQgQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNb XSA9Ci0gICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCi0gICB7ICJleGVjdXRlIiwg ZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTLAotICAgICAiRXhlY3V0ZSBhIGdkYiBj b21tYW5kIiB9LAotKyAgeyAiY2xpIiwgZ2RicHlfY2xpLCBNRVRIX05PQVJHUywKLSsgICAgIkVu dGVyIHRoZSBnZGIgQ0xJIiB9LAotICAgeyAicGFyYW1ldGVyIiwgZ2RicHlfcGFyYW1ldGVyLCBN RVRIX1ZBUkFSR1MsCi0gICAgICJSZXR1cm4gYSBnZGIgcGFyYW1ldGVyJ3MgdmFsdWUiIH0sCi0g Ci0rICB7ICJicmVha3BvaW50cyIsIGdkYnB5X2JyZWFrcG9pbnRzLCBNRVRIX05PQVJHUywKLSsg ICAgIlJldHVybiBhIHR1cGxlIG9mIGFsbCBicmVha3BvaW50IG9iamVjdHMiIH0sCi0rCi0gICB7 ICJkZWZhdWx0X3Zpc3VhbGl6ZXIiLCBnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIsIE1FVEhfVkFS QVJHUywKLSAgICAgIkZpbmQgdGhlIGRlZmF1bHQgdmlzdWFsaXplciBmb3IgYSBWYWx1ZS4iIH0s Ci0gCi1AQCAtNzI1LDExICsxMDE3LDM5IEBAIFJldHVybiBhIHN0cmluZyBleHBsYWluaW5nIHVu d2luZCBzdG9wIHJlYXNvbi4iIH0sCi0gICAgICJsb29rdXBfdHlwZSAobmFtZSBbLCBibG9ja10p IC0+IHR5cGVcblwKLSBSZXR1cm4gYSBUeXBlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5h bWUuIiB9LAotIAotKyAgeyAibG9va3VwX3N5bWJvbCIsIChQeUNGdW5jdGlvbikgZ2RicHlfbG9v a3VwX3N5bWJvbCwKLSsgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSsgICAgImxv b2t1cF9zeW1ib2wgKG5hbWUgWywgYmxvY2tdIFssIGRvbWFpbl0pIC0+IChzeW1ib2wsIGlzX2Zp ZWxkX29mX3RoaXMpXG5cCi0rUmV0dXJuIGEgdHVwbGUgd2l0aCB0aGUgc3ltYm9sIGNvcnJlc3Bv bmRpbmcgdG8gdGhlIGdpdmVuIG5hbWUgKG9yIE5vbmUpIGFuZFxuXAotK2EgYm9vbGVhbiBpbmRp Y2F0aW5nIGlmIG5hbWUgaXMgYSBmaWVsZCBvZiB0aGUgY3VycmVudCBpbXBsaWVkIGFyZ3VtZW50 XG5cCi0rYHRoaXMnICh3aGVuIHRoZSBjdXJyZW50IGxhbmd1YWdlIGlzIG9iamVjdC1vcmllbnRl ZCkuIiB9LAotKyAgeyAic29saWJfYWRkcmVzcyIsIGdkYnB5X3NvbGliX2FkZHJlc3MsIE1FVEhf VkFSQVJHUywKLSsgICAgInNvbGliX2FkZHJlc3MgKExvbmcpIC0+IFN0cmluZy5cblwKLStSZXR1 cm4gdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGhvbGRpbmcgYSBnaXZlbiBhZGRyZXNz LCBvciBOb25lLiIgfSwKLSsKLSsgIHsgImJsb2NrX2Zvcl9wYyIsIGdkYnB5X2Jsb2NrX2Zvcl9w YywgTUVUSF9WQVJBUkdTLAotKyAgICAiUmV0dXJuIHRoZSBibG9jayBjb250YWluaW5nIHRoZSBn aXZlbiBwYyB2YWx1ZSwgb3IgTm9uZS4iIH0sCi0rCi0rICB7ICJkZWNvZGVfbGluZSIsIGdkYnB5 X2RlY29kZV9saW5lLCBNRVRIX1ZBUkFSR1MsCi0rICAgICJEZWNvZGUgYSBzdHJpbmcgYXJndW1l bnQgdGhlIHdheSB0aGF0ICdicmVhaycgb3IgJ2VkaXQnIGRvZXMuXG5cCi0rUmV0dXJuIGEgdHVw bGUgaG9sZGluZyB0aGUgZmlsZSBuYW1lIChvciBOb25lKSBhbmQgbGluZSBudW1iZXIgKG9yIE5v bmUpLlxuXAotK05vdGU6IG1heSBsYXRlciBjaGFuZ2UgdG8gcmV0dXJuIGFuIG9iamVjdC4iIH0s Ci0rCi0rICB7ICJzZWxlY3RlZF90aHJlYWQiLCBnZGJweV9zZWxlY3RlZF90aHJlYWQsIE1FVEhf Tk9BUkdTLAotKyAgICAic2VsZWN0ZWRfdGhyZWFkICgpIC0+IGdkYi5JbmZlcmlvclRocmVhZC5c blwKLStSZXR1cm4gdGhlIHNlbGVjdGVkIHRocmVhZCBvYmplY3QuIiB9LAotKyAgeyAiaW5mZXJp b3JzIiwgZ2RicHlfaW5mZXJpb3JzLCBNRVRIX05PQVJHUywKLSsgICAgImluZmVyaW9ycyAoKSAt PiAoZ2RiLkluZmVyaW9yLCAuLi4pLlxuXAotK1JldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxs IGluZmVyaW9ycy4iIH0sCi0rCi0gICB7ICJwYXJzZV9hbmRfZXZhbCIsIGdkYnB5X3BhcnNlX2Fu ZF9ldmFsLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJwYXJzZV9hbmRfZXZhbCAoU3RyaW5nKSAtPiBW YWx1ZS5cblwKLSBQYXJzZSBTdHJpbmcgYXMgYW4gZXhwcmVzc2lvbiwgZXZhbHVhdGUgaXQsIGFu ZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIFZhbHVlLiIKLSAgIH0sCi0gCi0rICB7ICJwb3N0X2V2 ZW50IiwgZ2RicHlfcG9zdF9ldmVudCwgTUVUSF9WQVJBUkdTLAotKyAgICAiUG9zdCBhbiBldmVu dCBpbnRvIGdkYidzIGV2ZW50IGxvb3AuIiB9LAotKwotICAgeyAid3JpdGUiLCBnZGJweV93cml0 ZSwgTUVUSF9WQVJBUkdTLAotICAgICAiV3JpdGUgYSBzdHJpbmcgdXNpbmcgZ2RiJ3MgZmlsdGVy ZWQgc3RyZWFtLiIgfSwKLSAgIHsgImZsdXNoIiwgZ2RicHlfZmx1c2gsIE1FVEhfTk9BUkdTLAot ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLmggYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1p bmRleCA1ZDkzZjY3Li4xYTViOWE4IDEwMDY0NAotLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uaAot KysrIGIvZ2RiL3B5dGhvbi9weXRob24uaAotQEAgLTI2LDYgKzI2LDggQEAgdm9pZCBldmFsX3B5 dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKLSAKLSB2 b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNoYXIgKmZpbGUpOwotIAot K3ZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7Ci0rCi0gaW50 IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLAotIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBh ZGRyZXNzLAotIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAot ZGlmZiAtLWdpdCBhL2dkYi9zY20tbGFuZy5jIGIvZ2RiL3NjbS1sYW5nLmMKLWluZGV4IDU4OThh YWQuLjIzZTVmMjIgMTAwNjQ0Ci0tLS0gYS9nZGIvc2NtLWxhbmcuYwotKysrIGIvZ2RiL3NjbS1s YW5nLmMKLUBAIC0yMzEsNiArMjMxLDcgQEAgY29uc3Qgc3RydWN0IGV4cF9kZXNjcmlwdG9yIGV4 cF9kZXNjcmlwdG9yX3NjbSA9Ci0gewotICAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkLAotICAgb3Bl cmF0b3JfbGVuZ3RoX3N0YW5kYXJkLAotKyAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQsCi0gICBv cF9uYW1lX3N0YW5kYXJkLAotICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKLSAgIGV2YWx1 YXRlX2V4cAotZGlmZiAtLWdpdCBhL2dkYi9zY20tdmFscHJpbnQuYyBiL2dkYi9zY20tdmFscHJp bnQuYwotaW5kZXggMWU4ZDQ4ZS4uOTUxODVkNCAxMDA2NDQKLS0tLSBhL2dkYi9zY20tdmFscHJp bnQuYwotKysrIGIvZ2RiL3NjbS12YWxwcmludC5jCi1AQCAtNjIsOSArNjIsOSBAQCBzY21faW5m ZXJpb3JfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIHZhbHVlLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLAotICAgICB7Ci0gICAgICAgLyogWFhYOiBTaG91bGQgd2UgY2FjaGUgdGhl c2Ugc3ltYm9scz8gICovCi0gICAgICAgZ2RiX291dHB1dF9zeW0gPQotLQlsb29rdXBfc3ltYm9s X2dsb2JhbCAoImdkYl9vdXRwdXQiLCBOVUxMLCBOVUxMLCBWQVJfRE9NQUlOKTsKLSsJbG9va3Vw X3N5bWJvbF9nbG9iYWwgKCJnZGJfb3V0cHV0IiwgTlVMTCwgVkFSX0RPTUFJTik7Ci0gICAgICAg Z2RiX291dHB1dF9sZW5fc3ltID0KLS0JbG9va3VwX3N5bWJvbF9nbG9iYWwgKCJnZGJfb3V0cHV0 X2xlbmd0aCIsIE5VTEwsIE5VTEwsIFZBUl9ET01BSU4pOwotKwlsb29rdXBfc3ltYm9sX2dsb2Jh bCAoImdkYl9vdXRwdXRfbGVuZ3RoIiwgTlVMTCwgVkFSX0RPTUFJTik7Ci0gCi0gICAgICAgaWYg KChnZGJfb3V0cHV0X3N5bSA9PSBOVUxMKSB8fCAoZ2RiX291dHB1dF9sZW5fc3ltID09IE5VTEwp KQotIAlyZXQgPSAtMTsKLWRpZmYgLS1naXQgYS9nZGIvc2gtbGludXgtdGRlcC5jIGIvZ2RiL3No LWxpbnV4LXRkZXAuYwotaW5kZXggZGE0MTM3Yi4uZTNmY2IxYSAxMDA2NDQKLS0tLSBhL2dkYi9z aC1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9zaC1saW51eC10ZGVwLmMKLUBAIC0yNSw2ICsyNSw3 IEBACi0gCi0gI2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKLSAjaW5jbHVkZSAic2gtdGRlcC5oIgot KyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0gCi0gI2RlZmluZSBSRUdTeDE2KGJhc2UpIFwKLSAg IHsoYmFzZSksICAgICAgMH0sIFwKLUBAIC04OSw2ICs5MCw5IEBAIHNoX2xpbnV4X2luaXRfYWJp IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAg ICAgIHRkZXAtPmNvcmVfZ3JlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwICopZ3Jl Z3NfdGFibGU7Ci0gICAgICAgdGRlcC0+Y29yZV9mcHJlZ21hcCA9IChzdHJ1Y3Qgc2hfY29yZWZp bGVfcmVnbWFwICopZnByZWdzX3RhYmxlOwotICAgICB9Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252 ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9m cm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNp bGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1k YXJ3aW4uYyBiL2dkYi9zb2xpYi1kYXJ3aW4uYwotaW5kZXggM2M3MDA4OS4uMGVlN2Q4NSAxMDA2 NDQKLS0tLSBhL2dkYi9zb2xpYi1kYXJ3aW4uYwotKysrIGIvZ2RiL3NvbGliLWRhcndpbi5jCi1A QCAtNDA4LDcgKzQwOCw2IEBAIGRhcndpbl9yZWxvY2F0ZV9zZWN0aW9uX2FkZHJlc3NlcyAoc3Ry dWN0IHNvX2xpc3QgKnNvLAotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLSBkYXJ3aW5fbG9va3Vw X2xpYl9zeW1ib2wgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCSAgY29uc3Qg Y2hhciAqbmFtZSwKLS0JCQkgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkgIGNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICByZXR1cm4gTlVMTDsKLWRpZmYgLS1naXQgYS9n ZGIvc29saWItc3B1LmMgYi9nZGIvc29saWItc3B1LmMKLWluZGV4IDk0YTc3ZmIuLjdlYTY4ZDIg MTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc3B1LmMKLSsrKyBiL2dkYi9zb2xpYi1zcHUuYwotQEAg LTMyNiwxNiArMzI2LDEzIEBAIHNwdV9iZmRfb3BlbiAoY2hhciAqcGF0aG5hbWUpCi0gc3RhdGlj IHN0cnVjdCBzeW1ib2wgKgotIHNwdV9sb29rdXBfbGliX3N5bWJvbCAoY29uc3Qgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCi0gCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLS0JCSAgICAgICBj b25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9t YWluKQotIHsKLSAgIGlmIChiZmRfZ2V0X2FyY2ggKG9iamZpbGUtPm9iZmQpID09IGJmZF9hcmNo X3NwdSkKLS0gICAgcmV0dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAob2Jq ZmlsZSwgbmFtZSwgbGlua2FnZV9uYW1lLAotLQkJCQkJICAgICAgZG9tYWluKTsKLSsgICAgcmV0 dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAob2JqZmlsZSwgbmFtZSwgZG9t YWluKTsKLSAKLSAgIGlmIChzdnI0X3NvX29wcy5sb29rdXBfbGliX2dsb2JhbF9zeW1ib2wgIT0g TlVMTCkKLS0gICAgcmV0dXJuIHN2cjRfc29fb3BzLmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCAo b2JqZmlsZSwgbmFtZSwgbGlua2FnZV9uYW1lLAotLQkJCQkJCSBkb21haW4pOwotKyAgICByZXR1 cm4gc3ZyNF9zb19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sIChvYmpmaWxlLCBuYW1lLCBk b21haW4pOwotICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1z dnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCi1pbmRleCA4ZWRjODg5Li41ZWExNzc5IDEwMDY0NAot LS0tIGEvZ2RiL3NvbGliLXN2cjQuYwotKysrIGIvZ2RiL3NvbGliLXN2cjQuYwotQEAgLTEyNDEs NyArMTI0MSw4IEBAIHN2cjRfaW5fZHluc3ltX3Jlc29sdmVfY29kZSAoQ09SRV9BRERSIHBjKQot IAkgICAmJiBwYyA8IGluZm8tPmludGVycF90ZXh0X3NlY3RfaGlnaCkKLSAJICB8fCAocGMgPj0g aW5mby0+aW50ZXJwX3BsdF9zZWN0X2xvdwotIAkgICAgICAmJiBwYyA8IGluZm8tPmludGVycF9w bHRfc2VjdF9oaWdoKQotLQkgIHx8IGluX3BsdF9zZWN0aW9uIChwYywgTlVMTCkpOwotKwkgIHx8 IGluX3BsdF9zZWN0aW9uIChwYywgTlVMTCkKLSsJICB8fCBpbl9nbnVfaWZ1bmNfc3R1YiAocGMp KTsKLSB9Ci0gCi0gLyogR2l2ZW4gYW4gZXhlY3V0YWJsZSdzIEFCRkQgYW5kIHRhcmdldCwgY29t cHV0ZSB0aGUgZW50cnktcG9pbnQKLUBAIC0yMDM4LDcgKzIwMzksNiBAQCBzdHJ1Y3QgdGFyZ2V0 X3NvX29wcyBzdnI0X3NvX29wczsKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0gZWxmX2xvb2t1 cF9saWJfc3ltYm9sIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCSAgICAgICBj b25zdCBjaGFyICpuYW1lLAotLQkJICAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJ CSAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgYmZkICphYmZkOwotQEAg LTIwNTYsOCArMjA1Niw3IEBAIGVsZl9sb29rdXBfbGliX3N5bWJvbCAoY29uc3Qgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCi0gICBpZiAoYWJmZCA9PSBOVUxMIHx8IHNjYW5fZHludGFnIChEVF9T WU1CT0xJQywgYWJmZCwgTlVMTCkgIT0gMSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0tICByZXR1 cm4gbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlCi0tCQkob2JqZmlsZSwgbmFtZSwg bGlua2FnZV9uYW1lLCBkb21haW4pOwotKyAgcmV0dXJuIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zy b21fb2JqZmlsZSAob2JqZmlsZSwgbmFtZSwgZG9tYWluKTsKLSB9Ci0gCi0gZXh0ZXJuIGluaXRp YWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliOyAvKiAtV21pc3NpbmctcHJv dG90eXBlcyAqLwotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi5jIGIvZ2RiL3NvbGliLmMKLWluZGV4 IDg0MmIyN2MuLmFjMWM0MDcgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWIuYwotKysrIGIvZ2RiL3Nv bGliLmMKLUBAIC0xMTU0LDEzICsxMTU0LDEyIEBAIHNob3dfYXV0b19zb2xpYl9hZGQgKHN0cnVj dCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0gc3RydWN0IHN5bWJvbCAqCi0gc29saWJf Z2xvYmFsX2xvb2t1cCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkgICAgIGNv bnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCSAg ICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLSAgIHN0cnVjdCB0YXJnZXRfc29fb3Bz ICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoKTsKLSAKLSAgIGlmIChvcHMtPmxvb2t1 cF9saWJfZ2xvYmFsX3N5bWJvbCAhPSBOVUxMKQotLSAgICByZXR1cm4gb3BzLT5sb29rdXBfbGli X2dsb2JhbF9zeW1ib2wgKG9iamZpbGUsIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsg ICAgcmV0dXJuIG9wcy0+bG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sIChvYmpmaWxlLCBuYW1lLCBk b21haW4pOwotICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpc3Qu aCBiL2dkYi9zb2xpc3QuaAotaW5kZXggNTczZjczNi4uNTFiZmNlOSAxMDA2NDQKLS0tLSBhL2dk Yi9zb2xpc3QuaAotKysrIGIvZ2RiL3NvbGlzdC5oCi1AQCAtMTE3LDcgKzExNyw2IEBAIHN0cnVj dCB0YXJnZXRfc29fb3BzCi0gICAgIC8qIEhvb2sgZm9yIGxvb2tpbmcgdXAgZ2xvYmFsIHN5bWJv bHMgaW4gYSBsaWJyYXJ5LXNwZWNpZmljIHdheS4gICovCi0gICAgIHN0cnVjdCBzeW1ib2wgKiAo Kmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCkgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAotIAkJCQkJCSBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJCSBjb25zdCBjaGFyICpsaW5rYWdl X25hbWUsCi0gCQkJCQkJIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0gCi0gICAgIC8qIEdp dmVuIHR3byBzb19saXN0IG9iamVjdHMsIG9uZSBmcm9tIHRoZSBHREIgdGhyZWFkIGxpc3QKLUBA IC0xNTcsNyArMTU2LDYgQEAgZXh0ZXJuIHN0cnVjdCB0YXJnZXRfc29fb3BzICpjdXJyZW50X3Rh cmdldF9zb19vcHM7Ci0gLyogSGFuZGxlciBmb3IgbGlicmFyeS1zcGVjaWZpYyBnbG9iYWwgc3lt Ym9sIGxvb2t1cCBpbiBzb2xpYi5jLiAgKi8KLSBzdHJ1Y3Qgc3ltYm9sICpzb2xpYl9nbG9iYWxf bG9va3VwIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJICAgIGNvbnN0IGNo YXIgKm5hbWUsCi0tCQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCSAgICBj b25zdCBkb21haW5fZW51bSBkb21haW4pOwotIAotICNlbmRpZgotZGlmZiAtLWdpdCBhL2dkYi9z b21yZWFkLmMgYi9nZGIvc29tcmVhZC5jCi1pbmRleCAzZDkzYzVlLi5hOTQzODA2IDEwMDY0NAot LS0tIGEvZ2RiL3NvbXJlYWQuYwotKysrIGIvZ2RiL3NvbXJlYWQuYwotQEAgLTQzMiw2ICs0MzIs NyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgc29tX3N5bV9mbnMgPQotICAgc29tX25ld19pbml0 LAkJCS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRhYiAq LwotICAgc29tX3N5bWZpbGVfaW5pdCwJCS8qIHN5bV9pbml0OiByZWFkIGluaXRpYWwgaW5mbywg c2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KLSAgIHNvbV9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVh ZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCi0rICBOVUxMLAkJCQkvKiBzeW1f cmVhZF9wc3ltYm9scyAqLwotICAgc29tX3N5bWZpbGVfZmluaXNoLAkJLyogc3ltX2ZpbmlzaDog ZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCi0gICBzb21fc3ltZmlsZV9vZmZzZXRzLAkJ Lyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJlbG9jYXRpb24gKi8KLSAg IGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBp bmZvcm1hdGlvbiBmcm9tCi1kaWZmIC0tZ2l0IGEvZ2RiL3NwYXJjLWxpbnV4LXRkZXAuYyBiL2dk Yi9zcGFyYy1saW51eC10ZGVwLmMKLWluZGV4IGQ2NWRiNmMuLmU5MWMwYmYgMTAwNjQ0Ci0tLS0g YS9nZGIvc3BhcmMtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvc3BhcmMtbGludXgtdGRlcC5jCi1A QCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJzeW10YWIuaCIKLSAjaW5jbHVkZSAidHJhZC1m cmFtZS5oIgotICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVw LmgiCi0gCi0gI2luY2x1ZGUgInNwYXJjLXRkZXAuaCIKLSAKLUBAIC0yNzksNiArMjgwLDkgQEAg c3BhcmMzMl9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCkKLSAgIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsK LSAKLSAgIHNldF9nZGJhcmNoX3dyaXRlX3BjIChnZGJhcmNoLCBzcGFyY19saW51eF93cml0ZV9w Yyk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJj aCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0KLSAKLSAv KiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAq LwotZGlmZiAtLWdpdCBhL2dkYi9zcGFyYzY0LWxpbnV4LXRkZXAuYyBiL2dkYi9zcGFyYzY0LWxp bnV4LXRkZXAuYwotaW5kZXggOGI3ZTkwOC4uNGRlNmQ5YyAxMDA2NDQKLS0tLSBhL2dkYi9zcGFy YzY0LWxpbnV4LXRkZXAuYwotKysrIGIvZ2RiL3NwYXJjNjQtbGludXgtdGRlcC5jCi1AQCAtMzEs NiArMzEsNyBAQAotICNpbmNsdWRlICJzeW10YWIuaCIKLSAjaW5jbHVkZSAidHJhZC1mcmFtZS5o IgotICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0g Ci0gI2luY2x1ZGUgInNwYXJjNjQtdGRlcC5oIgotIAotQEAgLTI0NCw2ICsyNDUsOSBAQCBzcGFy YzY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQotICAgdGRlcC0+c3RlcF90cmFwID0gc3BhcmM2NF9saW51eF9zdGVwX3Ry YXA7Ci0gCi0gICBzZXRfZ2RiYXJjaF93cml0ZV9wYyAoZ2RiYXJjaCwgc3BhcmM2NF9saW51eF93 cml0ZV9wYyk7Ci0rCi0rICBzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAo Z2RiYXJjaCwKLSsJCQkJCSAgbGludXhfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIpOwotIH0K LSAMCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NwdS10ZGVwLmMgYi9nZGIvc3B1LXRkZXAuYwotaW5k ZXggYzZkYjhkYy4uNzM1OWI1MCAxMDA2NDQKLS0tLSBhL2dkYi9zcHUtdGRlcC5jCi0rKysgYi9n ZGIvc3B1LXRkZXAuYwotQEAgLTE4NDEsNyArMTg0MSw3IEBAIHNwdV9jYXRjaF9zdGFydCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICAgICAgc3RydWN0IHN5bWJvbCAqc3ltOwotICAgICAg IHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOwotIAotLSAgICAgIHN5bSA9IGxvb2t1cF9ibG9j a19zeW1ib2wgKGJsb2NrLCAibWFpbiIsIE5VTEwsIFZBUl9ET01BSU4pOwotKyAgICAgIHN5bSA9 IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCAibWFpbiIsIFZBUl9ET01BSU4pOwotICAgICAg IGlmIChzeW0pCi0gCXsKLSAJICBmaXh1cF9zeW1ib2xfc2VjdGlvbiAoc3ltLCBvYmpmaWxlKTsK LWRpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCi1pbmRleCAyY2FmOWQyLi43 YWRjMzk5IDEwMDY0NAotLS0tIGEvZ2RiL3N0YWNrLmMKLSsrKyBiL2dkYi9zdGFjay5jCi1AQCAt MTMwOSwyNCArMTMwOSwyNCBAQCBiYWNrdHJhY2VfY29tbWFuZF8xIChjaGFyICpjb3VudF9leHAs IGludCBzaG93X2xvY2FscywgaW50IGZyb21fdHR5KQotICAgZWxzZQotICAgICBjb3VudCA9IC0x OwotIAotLSAgaWYgKGluZm9fdmVyYm9zZSkKLS0gICAgewotLSAgICAgIHN0cnVjdCBwYXJ0aWFs X3N5bXRhYiAqcHM7Ci0tCi0tICAgICAgLyogUmVhZCBpbiBzeW1ib2xzIGZvciBhbGwgb2YgdGhl IGZyYW1lcy4gIE5lZWQgdG8gZG8gdGhpcyBpbiBhCi0tICAgICAgICAgc2VwYXJhdGUgcGFzcyBz byB0aGF0ICJSZWFkaW5nIGluIHN5bWJvbHMgZm9yIHh4eCIgbWVzc2FnZXMKLS0gICAgICAgICBk b24ndCBzY3JldyB1cCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYmFja3RyYWNlLiAgQWxzbyBpZgot LSAgICAgICAgIHBlb3BsZSBoYXZlIHN0cm9uZyBvcGluaW9ucyBhZ2FpbnN0IHJlYWRpbmcgc3lt Ym9scyBmb3IKLS0gICAgICAgICBiYWNrdHJhY2UgdGhpcyBtYXkgaGF2ZSB0byBiZSBhbiBvcHRp b24uICAqLwotLSAgICAgIGkgPSBjb3VudDsKLS0gICAgICBmb3IgKGZpID0gdHJhaWxpbmc7IGZp ICE9IE5VTEwgJiYgaS0tOyBmaSA9IGdldF9wcmV2X2ZyYW1lIChmaSkpCi0tCXsKLS0JICBRVUlU OwotLQkgIHBzID0gZmluZF9wY19wc3ltdGFiIChnZXRfZnJhbWVfYWRkcmVzc19pbl9ibG9jayAo ZmkpKTsKLS0JICBpZiAocHMpCi0tCSAgICBQU1lNVEFCX1RPX1NZTVRBQiAocHMpOyAvKiBGb3Jj ZSBzeW1zIHRvIGNvbWUgaW4uICAqLwotLQl9Ci0tICAgIH0KLSsgIHsKLSsgICAgc3RydWN0IHBh cnRpYWxfc3ltdGFiICpwczsKLSsKLSsgICAgLyogUmVhZCBpbiBzeW1ib2xzIGZvciBhbGwgb2Yg dGhlIGZyYW1lcy4gIE5lZWQgdG8gZG8gdGhpcwotKyAgICAgICB1bmNvbmRpdGlvbmFsbHkgdG8g ZW5zdXJlIHRoYXQgcHN5bWJvbHMgYXJlIHJlYWQuICBBbHNvIG5lZWQgdG8KLSsgICAgICAgZG8g dGhpcyBpbiBhIHNlcGFyYXRlIHBhc3Mgc28gdGhhdCAiUmVhZGluZyBpbiBzeW1ib2xzIGZvciB4 eHgiCi0rICAgICAgIG1lc3NhZ2VzIGRvbid0IHNjcmV3IHVwIHRoZSBhcHBlYXJhbmNlIG9mIHRo ZSBiYWNrdHJhY2UuICBBbHNvCi0rICAgICAgIGlmIHBlb3BsZSBoYXZlIHN0cm9uZyBvcGluaW9u cyBhZ2FpbnN0IHJlYWRpbmcgc3ltYm9scyBmb3IKLSsgICAgICAgYmFja3RyYWNlIHRoaXMgbWF5 IGhhdmUgdG8gYmUgYW4gb3B0aW9uLiAgKi8KLSsgICAgaSA9IGNvdW50OwotKyAgICBmb3IgKGZp ID0gdHJhaWxpbmc7IGZpICE9IE5VTEwgJiYgaS0tOyBmaSA9IGdldF9wcmV2X2ZyYW1lIChmaSkp Ci0rICAgICAgewotKwlRVUlUOwotKwlwcyA9IGZpbmRfcGNfcHN5bXRhYiAoZ2V0X2ZyYW1lX2Fk ZHJlc3NfaW5fYmxvY2sgKGZpKSk7Ci0rCWlmIChpbmZvX3ZlcmJvc2UgJiYgcHMpCi0rCSAgUFNZ TVRBQl9UT19TWU1UQUIgKHBzKTsgLyogRm9yY2Ugc3ltcyB0byBjb21lIGluLiAgKi8KLSsgICAg ICB9Ci0rICB9Ci0gCi0gICBmb3IgKGkgPSAwLCBmaSA9IHRyYWlsaW5nOyBmaSAmJiBjb3VudC0t OyBpKyssIGZpID0gZ2V0X3ByZXZfZnJhbWUgKGZpKSkKLSAgICAgewotZGlmZiAtLWdpdCBhL2dk Yi9zeW1maWxlLmMgYi9nZGIvc3ltZmlsZS5jCi1pbmRleCA4NzA1NDIwLi4xNmY5NmExIDEwMDY0 NAotLS0tIGEvZ2RiL3N5bWZpbGUuYwotKysrIGIvZ2RiL3N5bWZpbGUuYwotQEAgLTk2OCwxMyAr OTY4LDE2IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJm ZCwKLSAgIC8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byBidXJwIGlmIHdlJ2QgYmUKLSAgICAgIGlu dGVyYWN0aXZlbHkgd2lwaW5nIG91dCBhbnkgZXhpc3Rpbmcgc3ltYm9scy4gICovCi0gCi0tICBp ZiAoKGhhdmVfZnVsbF9zeW1ib2xzICgpIHx8IGhhdmVfcGFydGlhbF9zeW1ib2xzICgpKQotLSAg ICAgICYmIChhZGRfZmxhZ3MgJiBTWU1GSUxFX01BSU5MSU5FKQotKyAgaWYgKChhZGRfZmxhZ3Mg JiBTWU1GSUxFX01BSU5MSU5FKQotKyAgICAgICYmIChoYXZlX2Z1bGxfc3ltYm9scyAoKSB8fCBo YXZlX3BhcnRpYWxfc3ltYm9scyAoKSkKLSAgICAgICAmJiBmcm9tX3R0eQotKyAgICAgICYmICho YXZlX2Z1bGxfc3ltYm9scyAoKSB8fCBoYXZlX3BhcnRpYWxfc3ltYm9scyAoKSkKLSAgICAgICAm JiAhcXVlcnkgKF8oIkxvYWQgbmV3IHN5bWJvbCB0YWJsZSBmcm9tIFwiJXNcIj8gIiksIG5hbWUp KQotICAgICBlcnJvciAoXygiTm90IGNvbmZpcm1lZC4iKSk7Ci0gCi0gICBvYmpmaWxlID0gYWxs b2NhdGVfb2JqZmlsZSAoYWJmZCwgZmxhZ3MpOwotKyAgaWYgKGFkZF9mbGFncyAmIFNZTUZJTEVf TUFJTkxJTkUpCi0rICAgIG9iamZpbGUtPmZsYWdzIHw9IE9CSkZfTUFJTjsKLSAgIGRpc2NhcmRf Y2xlYW51cHMgKG15X2NsZWFudXBzKTsKLSAKLSAgIC8qIFdlIGVpdGhlciBjcmVhdGVkIGEgbmV3 IG1hcHBlZCBzeW1ib2wgdGFibGUsIG1hcHBlZCBhbiBleGlzdGluZwotQEAgLTEwMDEsNiArMTAw NCw4IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwK LSAKLSAgIGlmICgoZmxhZ3MgJiBPQkpGX1JFQUROT1cpIHx8IHJlYWRub3dfc3ltYm9sX2ZpbGVz KQotICAgICB7Ci0rICAgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKG9iamZpbGUpOwotKwot ICAgICAgIGlmIChmcm9tX3R0eSB8fCBpbmZvX3ZlcmJvc2UpCi0gCXsKLSAJICBwcmludGZfdW5m aWx0ZXJlZCAoXygiZXhwYW5kaW5nIHRvIGZ1bGwgc3ltYm9scy4uLiIpKTsKLUBAIC0yMzIzLDYg KzIzMjgsNyBAQCByZXJlYWRfc3ltYm9scyAodm9pZCkKLSAJICBvYmpmaWxlLT5zeW10YWJzID0g TlVMTDsKLSAJICBvYmpmaWxlLT5wc3ltdGFicyA9IE5VTEw7Ci0gCSAgb2JqZmlsZS0+cHN5bXRh YnNfYWRkcm1hcCA9IE5VTEw7Ci0rCSAgb2JqZmlsZS0+cXVpY2tfYWRkcm1hcCA9IE5VTEw7Ci0g CSAgb2JqZmlsZS0+ZnJlZV9wc3ltdGFicyA9IE5VTEw7Ci0gCSAgb2JqZmlsZS0+Y3BfbmFtZXNw YWNlX3N5bXRhYiA9IE5VTEw7Ci0gCSAgb2JqZmlsZS0+bXN5bWJvbHMgPSBOVUxMOwotQEAgLTIz MzMsNiArMjMzOSw4IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lkKQotIAkgIG1lbXNldCAoJm9iamZp bGUtPm1zeW1ib2xfZGVtYW5nbGVkX2hhc2gsIDAsCi0gCQkgIHNpemVvZiAob2JqZmlsZS0+bXN5 bWJvbF9kZW1hbmdsZWRfaGFzaCkpOwotIAotKwkgIG9iamZpbGUtPmZsYWdzICY9IH5PQkpGX1NZ TVRBQlNfUkVBRDsKLSsKLSAJICBvYmpmaWxlLT5wc3ltYm9sX2NhY2hlID0gYmNhY2hlX3htYWxs b2MgKCk7Ci0gCSAgb2JqZmlsZS0+bWFjcm9fY2FjaGUgPSBiY2FjaGVfeG1hbGxvYyAoKTsKLSAJ ICBvYmpmaWxlLT5maWxlbmFtZV9jYWNoZSA9IGJjYWNoZV94bWFsbG9jICgpOwotZGlmZiAtLWdp dCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCi1pbmRleCBmZTk1MjU1Li4wNzU2MTBi IDEwMDY0NAotLS0tIGEvZ2RiL3N5bWZpbGUuaAotKysrIGIvZ2RiL3N5bWZpbGUuaAotQEAgLTE0 MSw2ICsxNDEsMTIgQEAgc3RydWN0IHN5bV9mbnMKLSAKLSAgIHZvaWQgKCpzeW1fcmVhZCkgKHN0 cnVjdCBvYmpmaWxlICosIGludCk7Ci0gCi0rICAvKiBSZWFkIHRoZSBwYXJ0aWFsIHN5bWJvbHMg Zm9yIGFuIG9iamZpbGUuICBUaGlzIG1heSBiZSBOVUxMLCBpbgotKyAgICAgd2hpY2ggY2FzZSBn ZGIgYXNzdW1lcyB0aGF0IHN5bV9yZWFkIGFscmVhZHkgcmVhZCB0aGUgcGFydGlhbAotKyAgICAg c3ltYm9scy4gICovCi0rCi0rICB2b2lkICgqc3ltX3JlYWRfcHN5bWJvbHMpIChzdHJ1Y3Qgb2Jq ZmlsZSAqKTsKLSsKLSAgIC8qIENhbGxlZCB3aGVuIHdlIGFyZSBmaW5pc2hlZCB3aXRoIGFuIG9i amZpbGUuICBTaG91bGQgZG8gYWxsCi0gICAgICBjbGVhbnVwIHRoYXQgaXMgc3BlY2lmaWMgdG8g dGhlIG9iamVjdCBmaWxlIGZvcm1hdCBmb3IgdGhlCi0gICAgICBwYXJ0aWN1bGFyIG9iamZpbGUu ICAqLwotQEAgLTMzMCw4ICszMzYsNyBAQCBleHRlcm4gaW50IGF1dG9fc29saWJfbGltaXQ7Ci0g Ci0gZXh0ZXJuIHZvaWQgc2V0X2luaXRpYWxfbGFuZ3VhZ2UgKHZvaWQpOwotIAotLWV4dGVybiBz dHJ1Y3QgcGFydGlhbF9zeW10YWIgKmFsbG9jYXRlX3BzeW10YWIgKGNvbnN0IGNoYXIgKiwKLS0J CQkJCQlzdHJ1Y3Qgb2JqZmlsZSAqKTsKLStleHRlcm4gc3RydWN0IHBhcnRpYWxfc3ltdGFiICph bGxvY2F0ZV9wc3ltdGFiIChjb25zdCBjaGFyICosIHN0cnVjdCBvYmpmaWxlICopOwotIAotIGV4 dGVybiB2b2lkIGRpc2NhcmRfcHN5bXRhYiAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICopOwotIAot QEAgLTQwMiw3ICs0MDcsNyBAQCB2b2lkIGZyZWVfc3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0cnVj dCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqZGF0YSk7Ci0gLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8K LSAKLSBleHRlcm4gaW50IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKik7Ci0tCi0r ZXh0ZXJuIHZvaWQgZHdhcmYyX2NyZWF0ZV9xdWlja19hZGRybWFwIChzdHJ1Y3Qgb2JqZmlsZSAq KTsKLSBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICop OwotIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAq KTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5bW1pc2MuYwotaW5kZXgg MWYzZWI5ZS4uM2ZmMjM5YSAxMDA2NDQKLS0tLSBhL2dkYi9zeW1taXNjLmMKLSsrKyBiL2dkYi9z eW1taXNjLmMKLUBAIC0yOTQsNiArMjk0LDkgQEAgZHVtcF9tc3ltYm9scyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHN0cnVjdCB1aV9maWxlICpvdXRmaWxlKQotIAljYXNlIG1zdF90ZXh0Ogot IAkgIG1zX3R5cGUgPSAnVCc7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgbXN0X3RleHRfZ251X2lmdW5j OgotKwkgIG1zX3R5cGUgPSAnaSc7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgbXN0X3NvbGliX3RyYW1w b2xpbmU6Ci0gCSAgbXNfdHlwZSA9ICdTJzsKLSAJICBicmVhazsKLUBAIC0xMTQzLDcgKzExNDYs NyBAQCBtYWludGVuYW5jZV9jaGVja19zeW10YWJzIChjaGFyICppZ25vcmUsIGludCBmcm9tX3R0 eSkKLSAgICAgd2hpbGUgKGxlbmd0aC0tKQotICAgICAgIHsKLSAJc3ltID0gbG9va3VwX2Jsb2Nr X3N5bWJvbCAoYiwgU1lNQk9MX0xJTktBR0VfTkFNRSAoKnBzeW0pLAotLQkJCQkgICBOVUxMLCBT WU1CT0xfRE9NQUlOICgqcHN5bSkpOwotKwkJCQkgICBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwot IAlpZiAoIXN5bSkKLSAJICB7Ci0gCSAgICBwcmludGZfZmlsdGVyZWQgKCJTdGF0aWMgc3ltYm9s IGAiKTsKLUBAIC0xMTYwLDcgKzExNjMsNyBAQCBtYWludGVuYW5jZV9jaGVja19zeW10YWJzIChj aGFyICppZ25vcmUsIGludCBmcm9tX3R0eSkKLSAgICAgd2hpbGUgKGxlbmd0aC0tKQotICAgICAg IHsKLSAJc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYiwgU1lNQk9MX0xJTktBR0VfTkFNRSAo KnBzeW0pLAotLQkJCQkgICBOVUxMLCBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwotKwkJCQkgICBT WU1CT0xfRE9NQUlOICgqcHN5bSkpOwotIAlpZiAoIXN5bSkKLSAJICB7Ci0gCSAgICBwcmludGZf ZmlsdGVyZWQgKCJHbG9iYWwgc3ltYm9sIGAiKTsKLWRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMg Yi9nZGIvc3ltdGFiLmMKLWluZGV4IGFmNGU1MDEuLjk1MzdkYWUgMTAwNjQ0Ci0tLS0gYS9nZGIv c3ltdGFiLmMKLSsrKyBiL2dkYi9zeW10YWIuYwotQEAgLTQyLDYgKzQyLDcgQEAKLSAjaW5jbHVk ZSAiYWRhLWxhbmcuaCIKLSAjaW5jbHVkZSAicC1sYW5nLmgiCi0gI2luY2x1ZGUgImFkZHJtYXAu aCIKLSsjaW5jbHVkZSAiY3Atc3VwcG9ydC5oIgotIAotICNpbmNsdWRlICJoYXNodGFiLmgiCi0g Ci1AQCAtODUsNyArODYsNiBAQCBzdGF0aWMgaW50IGZpbmRfbGluZV9jb21tb24gKHN0cnVjdCBs aW5ldGFibGUgKiwgaW50LCBpbnQgKik7Ci0gY2hhciAqb3BlcmF0b3JfY2hhcnMgKGNoYXIgKnAs IGNoYXIgKiplbmQpOwotIAotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1 eCAoY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCSBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0g CQkJCQkgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCSBjb25zdCBkb21haW5fZW51 bSBkb21haW4sCi0gCQkJCQkgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSwKLUBAIC05MywyMCArOTMs MTkgQEAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFy ICpuYW1lLAotIAotIHN0YXRpYwotIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfYXV4X2xv Y2FsIChjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAot IAkJCQkJY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLS0JCQkJCWNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbik7Ci0rCQkJCQljb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rCQkJCQllbnVtIGxh bmd1YWdlIGxhbmd1YWdlLAotKwkJCQkJaW50ICppc19hX2ZpZWxkX29mX3RoaXMpOwotIAotIHN0 YXRpYwotIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9j a19pbmRleCwKLSAJCQkJCSAgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCSAgY29uc3QgY2hhciAq bGlua2FnZV9uYW1lLAotIAkJCQkJICBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwotIAotIHN0 YXRpYwotIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChpbnQgYmxv Y2tfaW5kZXgsCi0gCQkJCQkgICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJICAgY29uc3QgY2hh ciAqbGlua2FnZV9uYW1lLAotIAkJCQkJICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSAK LSBzdGF0aWMgaW50IGZpbGVfbWF0Y2hlcyAoY2hhciAqLCBjaGFyICoqLCBpbnQpOwotQEAgLTI3 MSw3ICsyNzAsNyBAQCBsb29rdXBfcGFydGlhbF9zeW10YWIgKGNvbnN0IGNoYXIgKm5hbWUpCi0g ICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbF9wYXRoKTsKLSAgICAgfQotIAotLSAgQUxM X1BTWU1UQUJTIChvYmpmaWxlLCBwc3QpCi0rICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZp bGUsIHBzdCkKLSAgIHsKLSAgICAgaWYgKEZJTEVOQU1FX0NNUCAobmFtZSwgcHN0LT5maWxlbmFt ZSkgPT0gMCkKLSAgICAgICB7Ci1AQCAtNDE0LDcgKzQxMyw4IEBAIHN5bWJvbF9pbml0X2xhbmd1 YWdlX3NwZWNpZmljIChzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5mbyAqZ3N5bWJvbCwKLSAgIGdz eW1ib2wtPmxhbmd1YWdlID0gbGFuZ3VhZ2U7Ci0gICBpZiAoZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0g bGFuZ3VhZ2VfY3BsdXMKLSAgICAgICB8fCBnc3ltYm9sLT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9q YXZhCi0tICAgICAgfHwgZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vfb2JqYykKLSsgICAg ICB8fCBnc3ltYm9sLT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9vYmpjCi0rICAgICAgfHwgZ3N5bWJv bC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKLSAgICAgewotICAgICAgIGdzeW1ib2wt Pmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lID0gTlVMTDsK LSAgICAgfQotQEAgLTQ5OCw3ICs0OTgsNyBAQCBzeW1ib2xfZmluZF9kZW1hbmdsZWRfbmFtZSAo c3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wsCi0gICAgICAgfHwgZ3N5bWJvbC0+ bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfYXV0bykKLSAgICAgewotICAgICAgIGRlbWFuZ2xlZCA9Ci0t ICAgICAgICBjcGx1c19kZW1hbmdsZSAobWFuZ2xlZCwgRE1HTF9QQVJBTVMgfCBETUdMX0FOU0kp OwotKyAgICAgICAgY3BsdXNfZGVtYW5nbGUgKG1hbmdsZWQsIERNR0xfUEFSQU1TIHwgRE1HTF9B TlNJIHwgRE1HTF9WRVJCT1NFKTsKLSAgICAgICBpZiAoZGVtYW5nbGVkICE9IE5VTEwpCi0gCXsK LSAJICBnc3ltYm9sLT5sYW5ndWFnZSA9IGxhbmd1YWdlX2NwbHVzOwotQEAgLTY5NSw2ICs2OTUs NyBAQCBzeW1ib2xfbmF0dXJhbF9uYW1lIChjb25zdCBzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5m byAqZ3N5bWJvbCkKLSAgICAgY2FzZSBsYW5ndWFnZV9jcGx1czoKLSAgICAgY2FzZSBsYW5ndWFn ZV9qYXZhOgotICAgICBjYXNlIGxhbmd1YWdlX29iamM6Ci0rICAgIGNhc2UgbGFuZ3VhZ2VfZm9y dHJhbjoKLSAgICAgICBpZiAoZ3N5bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lm aWMuZGVtYW5nbGVkX25hbWUgIT0gTlVMTCkKLSAJcmV0dXJuIGdzeW1ib2wtPmxhbmd1YWdlX3Nw ZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lOwotICAgICAgIGJyZWFrOwotQEAg LTcyMCw2ICs3MjEsNyBAQCBzeW1ib2xfZGVtYW5nbGVkX25hbWUgKGNvbnN0IHN0cnVjdCBnZW5l cmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sKQotICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOgotICAg ICBjYXNlIGxhbmd1YWdlX2phdmE6Ci0gICAgIGNhc2UgbGFuZ3VhZ2Vfb2JqYzoKLSsgICAgY2Fz ZSBsYW5ndWFnZV9mb3J0cmFuOgotICAgICAgIGlmIChnc3ltYm9sLT5sYW5ndWFnZV9zcGVjaWZp Yy5jcGx1c19zcGVjaWZpYy5kZW1hbmdsZWRfbmFtZSAhPSBOVUxMKQotIAlyZXR1cm4gZ3N5bWJv bC0+bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWU7Ci0gICAg ICAgYnJlYWs7Ci1AQCAtOTMxLDcgKzkzMywxMyBAQCBmaW5kX3BjX3NlY3RfcHN5bXRhYiAoQ09S RV9BRERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCi0gICAgICB0aGFuIHRoZSBs YXRlciB1c2VkIFRFWFRMT1cvVEVYVEhJR0ggb25lLiAgKi8KLSAKLSAgIEFMTF9PQkpGSUxFUyAo b2JqZmlsZSkKLS0gICAgaWYgKG9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXAgIT0gTlVMTCkKLSsg IHsKLSsgICAgaWYgKG9iamZpbGUtPnF1aWNrX2FkZHJtYXApCi0rICAgICAgewotKwlpZiAoIWFk ZHJtYXBfZmluZCAob2JqZmlsZS0+cXVpY2tfYWRkcm1hcCwgcGMpKQotKwkgIGNvbnRpbnVlOwot KyAgICAgIH0KLSsgICAgaWYgKHJlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChvYmpmaWxlKS0+cHN5 bXRhYnNfYWRkcm1hcCAhPSBOVUxMKQotICAgICAgIHsKLSAJc3RydWN0IHBhcnRpYWxfc3ltdGFi ICpwc3Q7Ci0gCi1AQCAtOTY0LDYgKzk3Miw3IEBAIGZpbmRfcGNfc2VjdF9wc3ltdGFiIChDT1JF X0FERFIgcGMsIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2VjdGlvbikKLSAJICAgIHJldHVybiBwc3Q7 Ci0gCSAgfQotICAgICAgIH0KLSsgIH0KLSAKLSAgIC8qIEV4aXN0aW5nIFBTWU1UQUJTX0FERFJN QVAgbWFwcGluZyBpcyBwcmVzZW50IGV2ZW4gZm9yIFBBUlRJQUxfU1lNVEFCcwotICAgICAgd2hp Y2ggc3RpbGwgaGF2ZSBubyBjb3JyZXNwb25kaW5nIGZ1bGwgU1lNVEFCcyByZWFkLiAgQnV0IGl0 IGlzIG5vdAotQEAgLTEyMzEsNiArMTI0MCwyMiBAQCBmaXh1cF9wc3ltYm9sX3NlY3Rpb24gKHN0 cnVjdCBwYXJ0aWFsX3N5bWJvbCAqcHN5bSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICBy ZXR1cm4gcHN5bTsKLSB9Ci0gCi0rLyogRW5zdXJlIHRoYXQgdGhlIHBhcnRpYWwgc3ltYm9scyBm b3IgT0JKRklMRSBoYXZlIGJlZW4gbG9hZGVkLiAgVGhpcwotKyAgIGZ1bmN0aW9uIGFsd2F5cyBy ZXR1cm5zIGl0cyBhcmd1bWVudCwgYXMgYSBjb252ZW5pZW5jZS4gICovCi0rCi0rc3RydWN0IG9i amZpbGUgKgotK3JlcXVpcmVfcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKLSt7Ci0rICBpZiAoKG9iamZpbGUtPmZsYWdzICYgT0JKRl9TWU1UQUJTX1JFQUQpID09IDAp Ci0rICAgIHsKLSsgICAgICBvYmpmaWxlLT5mbGFncyB8PSBPQkpGX1NZTVRBQlNfUkVBRDsKLSsK LSsgICAgICBpZiAob2JqZmlsZS0+c2YtPnN5bV9yZWFkX3BzeW1ib2xzKQotKwkoKm9iamZpbGUt PnNmLT5zeW1fcmVhZF9wc3ltYm9scykgKG9iamZpbGUpOwotKyAgICB9Ci0rICByZXR1cm4gb2Jq ZmlsZTsKLSt9Ci0rCi0gLyogRmluZCB0aGUgZGVmaW5pdGlvbiBmb3IgYSBzcGVjaWZpZWQgc3lt Ym9sIG5hbWUgTkFNRQotICAgIGluIGRvbWFpbiBET01BSU4sIHZpc2libGUgZnJvbSBsZXhpY2Fs IGJsb2NrIEJMT0NLLgotICAgIFJldHVybnMgdGhlIHN0cnVjdCBzeW1ib2wgcG9pbnRlciwgb3Ig emVybyBpZiBubyBzeW1ib2wgaXMgZm91bmQuCi1AQCAtMTI1NywxMCArMTI4MiwxNCBAQCBsb29r dXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAotIHsKLSAgIGNoYXIgKmRlbWFuZ2xlZF9uYW1lID0gTlVMTDsKLSAgIGNvbnN0 IGNoYXIgKm1vZGlmaWVkX25hbWUgPSBOVUxMOwotLSAgY29uc3QgY2hhciAqbWFuZ2xlZF9uYW1l ID0gTlVMTDsKLSAgIHN0cnVjdCBzeW1ib2wgKnJldHVybnZhbDsKLSAgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotIAotKyAgaWYoc3Ry bmNtcChuYW1lLCAiOjoiLCAyKSA9PSAwKXsvKiB0aGlzIG11c3QgYmUgYSBnbG9iYWwgbmFtZSAq LwotKyAgICBuYW1lID0gbmFtZSsyOwotKyAgICBibG9jayA9IE5VTEw7Ci0rICB9Ci0rICAKLSAg IG1vZGlmaWVkX25hbWUgPSBuYW1lOwotIAotICAgLyogSWYgd2UgYXJlIHVzaW5nIEMrKyBvciBK YXZhLCBkZW1hbmdsZSB0aGUgbmFtZSBiZWZvcmUgZG9pbmcgYSBsb29rdXAsIHNvCi1AQCAtMTI3 MCw3ICsxMjk5LDYgQEAgbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFt ZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAgICAgICBkZW1hbmdsZWRfbmFtZSA9IGNw bHVzX2RlbWFuZ2xlIChuYW1lLCBETUdMX0FOU0kgfCBETUdMX1BBUkFNUyk7Ci0gICAgICAgaWYg KGRlbWFuZ2xlZF9uYW1lKQotIAl7Ci0tCSAgbWFuZ2xlZF9uYW1lID0gbmFtZTsKLSAJICBtb2Rp ZmllZF9uYW1lID0gZGVtYW5nbGVkX25hbWU7Ci0gCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVt YW5nbGVkX25hbWUpOwotIAl9Ci1AQCAtMTI5Miw3ICsxMzIwLDYgQEAgbG9va3VwX3N5bWJvbF9p bl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywK LSAJCSAgICAgIAkJICAgICAgIERNR0xfQU5TSSB8IERNR0xfUEFSQU1TIHwgRE1HTF9KQVZBKTsK LSAgICAgICBpZiAoZGVtYW5nbGVkX25hbWUpCi0gCXsKLS0JICBtYW5nbGVkX25hbWUgPSBuYW1l OwotIAkgIG1vZGlmaWVkX25hbWUgPSBkZW1hbmdsZWRfbmFtZTsKLSAJICBtYWtlX2NsZWFudXAg KHhmcmVlLCBkZW1hbmdsZWRfbmFtZSk7Ci0gCX0KLUBAIC0xMzExLDggKzEzMzgsOCBAQCBsb29r dXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAotICAgICAgIG1vZGlmaWVkX25hbWUgPSBjb3B5OwotICAgICB9Ci0gCi0tICBy ZXR1cm52YWwgPSBsb29rdXBfc3ltYm9sX2F1eCAobW9kaWZpZWRfbmFtZSwgbWFuZ2xlZF9uYW1l LCBibG9jaywKLS0JCQkJIGRvbWFpbiwgbGFuZywgaXNfYV9maWVsZF9vZl90aGlzKTsKLSsgIHJl dHVybnZhbCA9IGxvb2t1cF9zeW1ib2xfYXV4IChtb2RpZmllZF9uYW1lLCBibG9jaywgZG9tYWlu LCBsYW5nLAotKwkJCQkgaXNfYV9maWVsZF9vZl90aGlzKTsKLSAgIGRvX2NsZWFudXBzIChjbGVh bnVwKTsKLSAKLSAgIHJldHVybiByZXR1cm52YWw7Ci1AQCAtMTMzNiw5ICsxMzYzLDkgQEAgbG9v a3VwX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywK LSAgICB3ZWxsLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0tbG9va3VwX3N5bWJv bF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLS0JCSAg IGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLS0J CSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UsIGludCAqaXNfYV9maWVsZF9vZl90aGlzKQotK2xv b2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJs b2NrLAotKwkJICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLCBlbnVtIGxhbmd1YWdlIGxhbmd1 YWdlLAotKwkJICAgaW50ICppc19hX2ZpZWxkX29mX3RoaXMpCi0gewotICAgc3RydWN0IHN5bWJv bCAqc3ltOwotICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmdkZWY7Ci1AQCAtMTM1 NCw1NiArMTM4MSwxOSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29u c3QgY2hhciAqbGlua2FnZV9uYW1lLAotICAgLyogU2VhcmNoIHNwZWNpZmllZCBibG9jayBhbmQg aXRzIHN1cGVyaW9ycy4gIERvbid0IHNlYXJjaAotICAgICAgU1RBVElDX0JMT0NLIG9yIEdMT0JB TF9CTE9DSy4gICovCi0gCi0tICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9sb2NhbCAobmFtZSwg bGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4 X2xvY2FsIChuYW1lLCBibG9jaywgZG9tYWluLCBsYW5ndWFnZSwgaXNfYV9maWVsZF9vZl90aGlz KTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLSAKLS0gIC8qIElmIHJl cXVlc3RlZCB0byBkbyBzbyBieSB0aGUgY2FsbGVyIGFuZCBpZiBhcHByb3ByaWF0ZSBmb3IgTEFO R1VBR0UsCi0tICAgICBjaGVjayB0byBzZWUgaWYgTkFNRSBpcyBhIGZpZWxkIG9mIGB0aGlzJy4g Ki8KLS0KLS0gIGxhbmdkZWYgPSBsYW5ndWFnZV9kZWYgKGxhbmd1YWdlKTsKLS0KLS0gIGlmIChs YW5nZGVmLT5sYV9uYW1lX29mX3RoaXMgIT0gTlVMTCAmJiBpc19hX2ZpZWxkX29mX3RoaXMgIT0g TlVMTAotLSAgICAgICYmIGJsb2NrICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3Qgc3lt Ym9sICpzeW0gPSBOVUxMOwotLSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqZnVuY3Rpb25fYmxv Y2sgPSBibG9jazsKLS0gICAgICAvKiAndGhpcycgaXMgb25seSBkZWZpbmVkIGluIHRoZSBmdW5j dGlvbidzIGJsb2NrLCBzbyBmaW5kIHRoZQotLQkgZW5jbG9zaW5nIGZ1bmN0aW9uIGJsb2NrLiAg Ki8KLS0gICAgICBmb3IgKDsgZnVuY3Rpb25fYmxvY2sgJiYgIUJMT0NLX0ZVTkNUSU9OIChmdW5j dGlvbl9ibG9jayk7Ci0tCSAgIGZ1bmN0aW9uX2Jsb2NrID0gQkxPQ0tfU1VQRVJCTE9DSyAoZnVu Y3Rpb25fYmxvY2spKTsKLS0KLS0gICAgICBpZiAoZnVuY3Rpb25fYmxvY2sgJiYgIWRpY3RfZW1w dHkgKEJMT0NLX0RJQ1QgKGZ1bmN0aW9uX2Jsb2NrKSkpCi0tCXN5bSA9IGxvb2t1cF9ibG9ja19z eW1ib2wgKGZ1bmN0aW9uX2Jsb2NrLCBsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMsCi0tCQkJCSAg IE5VTEwsIFZBUl9ET01BSU4pOwotLSAgICAgIGlmIChzeW0pCi0tCXsKLS0JICBzdHJ1Y3QgdHlw ZSAqdCA9IHN5bS0+dHlwZTsKLS0KLS0JICAvKiBJJ20gbm90IHJlYWxseSBzdXJlIHRoYXQgdHlw ZSBvZiB0aGlzIGNhbiBldmVyCi0tCSAgICAgYmUgdHlwZWRlZmVkOyBqdXN0IGJlIHNhZmUuICAq LwotLQkgIENIRUNLX1RZUEVERUYgKHQpOwotLQkgIGlmIChUWVBFX0NPREUgKHQpID09IFRZUEVf Q09ERV9QVFIKLS0JICAgICAgfHwgVFlQRV9DT0RFICh0KSA9PSBUWVBFX0NPREVfUkVGKQotLQkg ICAgdCA9IFRZUEVfVEFSR0VUX1RZUEUgKHQpOwotLQotLQkgIGlmIChUWVBFX0NPREUgKHQpICE9 IFRZUEVfQ09ERV9TVFJVQ1QKLS0JICAgICAgJiYgVFlQRV9DT0RFICh0KSAhPSBUWVBFX0NPREVf VU5JT04pCi0tCSAgICBlcnJvciAoXygiSW50ZXJuYWwgZXJyb3I6IGAlcycgaXMgbm90IGFuIGFn Z3JlZ2F0ZSIpLAotLQkJICAgbGFuZ2RlZi0+bGFfbmFtZV9vZl90aGlzKTsKLS0KLS0JICBpZiAo Y2hlY2tfZmllbGQgKHQsIG5hbWUpKQotLQkgICAgewotLQkgICAgICAqaXNfYV9maWVsZF9vZl90 aGlzID0gMTsKLS0JICAgICAgcmV0dXJuIE5VTEw7Ci0tCSAgICB9Ci0tCX0KLS0gICAgfQotKyAg LyogdGhpcyBzeW1ib2wgd2FzIGZvdW5kIHRvIGJlIGEgbWVtYmVyIHZhcmlhYmxlCi0rICAgICBk byBub3QgcGVyZm9ybSB0aGUgZ2xvYmFsIHNlYXJjaC4gKi8KLSsgIGlmIChpc19hX2ZpZWxkX29m X3RoaXMgJiYgKmlzX2FfZmllbGRfb2ZfdGhpcykKLSsgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICAv KiBOb3cgZG8gd2hhdGV2ZXIgaXMgYXBwcm9wcmlhdGUgZm9yIExBTkdVQUdFIHRvIGxvb2sKLSAg ICAgIHVwIHN0YXRpYyBhbmQgZ2xvYmFsIHZhcmlhYmxlcy4gICovCi0tCi0tICBzeW0gPSBsYW5n ZGVmLT5sYV9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2Nr LCBkb21haW4pOwotKyAgbGFuZ2RlZiA9IGxhbmd1YWdlX2RlZiAobGFuZ3VhZ2UpOwotKyAgc3lt ID0gbGFuZ2RlZi0+bGFfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAobmFtZSwgYmxvY2ssIGRvbWFp bik7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi1AQCAtMTQxMywx MSArMTQwMywxMSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qg Y2hhciAqbGlua2FnZV9uYW1lLAotICAgICAgZGVzaXJlZCBuYW1lIGFzIGEgZmlsZS1sZXZlbCBz dGF0aWMsIHRoZW4gZG8gcHN5bXRhYi10by1zeW10YWIKLSAgICAgIGNvbnZlcnNpb24gb24gdGhl IGZseSBhbmQgcmV0dXJuIHRoZSBmb3VuZCBzeW1ib2wuICovCi0gCi0tICBzeW0gPSBsb29rdXBf c3ltYm9sX2F1eF9zeW10YWJzIChTVEFUSUNfQkxPQ0ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9t YWluKTsKLSsgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKFNUQVRJQ19CTE9DSywg bmFtZSwgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLSAK LS0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChTVEFUSUNfQkxPQ0ssIG5hbWUs IGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10 YWJzIChTVEFUSUNfQkxPQ0ssIG5hbWUsIGRvbWFpbik7Ci0gICBpZiAoc3ltICE9IE5VTEwpCi0g ICAgIHJldHVybiBzeW07Ci0gCi1AQCAtMTQyOCwzMCArMTQxOCw4MSBAQCBsb29rdXBfc3ltYm9s X2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotICAgIERv bid0IHNlYXJjaCBTVEFUSUNfQkxPQ0sgb3IgR0xPQkFMX0JMT0NLLiAgKi8KLSAKLSBzdGF0aWMg c3RydWN0IHN5bWJvbCAqCi0tbG9va3VwX3N5bWJvbF9hdXhfbG9jYWwgKGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLS0JCQkgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaywKLS0JCQkgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotK2xvb2t1cF9zeW1ib2xfYXV4 X2xvY2FsIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKwkJ CSBjb25zdCBkb21haW5fZW51bSBkb21haW4sIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UsCi0rCQkJ IGludCAqaXNfYV9maWVsZF9vZl90aGlzKQotIHsKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLS0g IGNvbnN0IHN0cnVjdCBibG9jayAqc3RhdGljX2Jsb2NrID0gYmxvY2tfc3RhdGljX2Jsb2NrIChi bG9jayk7Ci0rICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmdsb2JhbF9ibG9jayA9IGJsb2NrX2dsb2Jh bF9ibG9jayAoYmxvY2spOwotKyAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9ja19pdGVyYXRvciA9 IGJsb2NrOwotKyAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmdkZWY7Ci0rCi0rICBs YW5nZGVmID0gbGFuZ3VhZ2VfZGVmIChsYW5ndWFnZSk7Ci0gCi0gICAvKiBDaGVjayBpZiBlaXRo ZXIgbm8gYmxvY2sgaXMgc3BlY2lmaWVkIG9yIGl0J3MgYSBnbG9iYWwgYmxvY2suICAqLwotIAot LSAgaWYgKHN0YXRpY19ibG9jayA9PSBOVUxMKQotKyAgaWYgKGdsb2JhbF9ibG9jayA9PSBOVUxM KQotICAgICByZXR1cm4gTlVMTDsKLSAKLS0gIHdoaWxlIChibG9jayAhPSBzdGF0aWNfYmxvY2sp Ci0rICB3aGlsZSAoYmxvY2tfaXRlcmF0b3IgIT0gZ2xvYmFsX2Jsb2NrKQotICAgICB7Ci0tICAg ICAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIGxpbmthZ2VfbmFtZSwgYmxv Y2ssIGRvbWFpbik7Ci0rCi0rICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5h bWUsIGJsb2NrX2l0ZXJhdG9yLCBkb21haW4pOwotKwotICAgICAgIGlmIChzeW0gIT0gTlVMTCkK LSAJcmV0dXJuIHN5bTsKLSsgICAgCi0rICAgICAgaWYgKGxhbmd1YWdlID09IGxhbmd1YWdlX2Nw bHVzICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbXBv cnRzIChibG9ja19zY29wZSAoYmxvY2tfaXRlcmF0b3IpLCBuYW1lLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX2l0ZXJhdG9yLCBkb21haW4sIDEsIDEp OwotIAotLSAgICAgIGlmIChCTE9DS19GVU5DVElPTiAoYmxvY2spICE9IE5VTEwgJiYgYmxvY2tf aW5saW5lZF9wIChibG9jaykpCi0tCWJyZWFrOwotLSAgICAgIGJsb2NrID0gQkxPQ0tfU1VQRVJC TE9DSyAoYmxvY2spOwotKyAgICAgICAgICBpZiAoc3ltICE9IE5VTEwpCi0rICAgICAgICAgICAg cmV0dXJuIHN5bTsKLSsgICAgICAgIH0KLSsKLSsgICAgICBpZiAobGFuZ2RlZi0+bGFfbmFtZV9v Zl90aGlzICE9IE5VTEwgJiYgaXNfYV9maWVsZF9vZl90aGlzICE9IE5VTEwKLSsJICAmJiBCTE9D S19GVU5DVElPTiAoYmxvY2tfaXRlcmF0b3IpKQotKyAgICAgICAgewotKyAgICAgICAgICBpZiAo IWRpY3RfZW1wdHkgKEJMT0NLX0RJQ1QgKGJsb2NrX2l0ZXJhdG9yKSkpCi0rICAgICAgICAgICAg ewotKyAgICAgICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2tfaXRlcmF0 b3IsCi0rCQkJCQkgbGFuZ2RlZi0+bGFfbmFtZV9vZl90aGlzLAotKwkJCQkJIFZBUl9ET01BSU4p OwotKwotKwotKyAgICAgICAgICAgICAgaWYgKHN5bSkKLSsgICAgICAgICAgICAgICAgewotKyAg ICAgICAgICAgICAgICAgIHN0cnVjdCB0eXBlICp0ID0gc3ltLT50eXBlOwotKwotKyAgICAgICAg ICAgICAgICAgIC8qIEknbSBub3QgcmVhbGx5IHN1cmUgdGhhdCB0eXBlIG9mIHRoaXMgY2FuIGV2 ZXIKLSsgICAgICAgICAgICAgICAgICAgICBiZSB0eXBlZGVmZWQ7IGp1c3QgYmUgc2FmZS4gICov Ci0rICAgICAgICAgICAgICAgICAgQ0hFQ0tfVFlQRURFRiAodCk7Ci0rICAgICAgICAgICAgICAg ICAgaWYgKFRZUEVfQ09ERSAodCkgPT0gVFlQRV9DT0RFX1BUUgotKyAgICAgICAgICAgICAgICAg ICAgICB8fCBUWVBFX0NPREUgKHQpID09IFRZUEVfQ09ERV9SRUYpCi0rICAgICAgICAgICAgICAg ICAgICAgIHQgPSBUWVBFX1RBUkdFVF9UWVBFICh0KTsKLSsKLSsgICAgICAgICAgICAgICAgICBp ZiAoVFlQRV9DT0RFICh0KSAhPSBUWVBFX0NPREVfU1RSVUNUCi0rICAgICAgICAgICAgICAgICAg ICAgICYmIFRZUEVfQ09ERSAodCkgIT0gVFlQRV9DT0RFX1VOSU9OKQotKyAgICAgICAgICAgICAg ICAgICAgZXJyb3IgKF8oIkludGVybmFsIGVycm9yOiBgJXMnIGlzIG5vdCBhbiBhZ2dyZWdhdGUi KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMpOwot KwotKyAgICAgICAgICAgICAgICAgIGlmIChjaGVja19maWVsZCAodCwgbmFtZSkpCi0rICAgICAg ICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICppc19hX2ZpZWxkX29mX3Ro aXMgPSAxOwotKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgICAgICAg ICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAg IH0KLSsKLSsgICAgICBpZiAoQkxPQ0tfRlVOQ1RJT04gKGJsb2NrX2l0ZXJhdG9yKSAhPSBOVUxM ICYmIGJsb2NrX2lubGluZWRfcCAoYmxvY2tfaXRlcmF0b3IpKQotKyAgICAgICAgYnJlYWs7Ci0r Ci0rICAgICAgYmxvY2tfaXRlcmF0b3IgPSBCTE9DS19TVVBFUkJMT0NLIChibG9ja19pdGVyYXRv cik7Ci0gICAgIH0KLSAKLS0gIC8qIFdlJ3ZlIHJlYWNoZWQgdGhlIGVkZ2Ugb2YgdGhlIGZ1bmN0 aW9uIHdpdGhvdXQgZmluZGluZyBhIHJlc3VsdC4gICovCi0rICAvKiBXZSd2ZSByZWFjaGVkIHRo ZSBnbG9iYWwgYmxvY2sgd2l0aG91dCBmaW5kaW5nIGEgcmVzdWx0LiAgKi8KLSAKLSAgIHJldHVy biBOVUxMOwotIH0KLUBAIC0xNDg1LDEzICsxNTI2LDEyIEBAIGxvb2t1cF9vYmpmaWxlX2Zyb21f YmxvY2sgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spCi0gICAgYmxvY2tfZm91bmQgYXBwcm9w cmlhdGVseS4gICovCi0gCi0gc3RydWN0IHN5bWJvbCAqCi0tbG9va3VwX3N5bWJvbF9hdXhfYmxv Y2sgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLS0JCQkgY29u c3Qgc3RydWN0IGJsb2NrICpibG9jaywKLStsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAoY29uc3Qg Y2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkgY29uc3QgZG9tYWlu X2VudW0gZG9tYWluKQotIHsKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSAKLS0gIHN5bSA9IGxv b2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Ci0r ICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLSAgIGlm IChzeW0pCi0gICAgIHsKLSAgICAgICBibG9ja19mb3VuZCA9IGJsb2NrOwotQEAgLTE1MDcsNyAr MTU0Nyw2IEBAIGxvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLCBjb25z dCBjaGFyICpsaW5rYWdlX25hbWUsCi0gc3RydWN0IHN5bWJvbCAqCi0gbG9va3VwX2dsb2JhbF9z eW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLAot IAkJCQkgICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkgICBjb25zdCBjaGFyICpsaW5rYWdlX25h bWUsCi0gCQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBjb25zdCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLUBAIC0xNTI2LDcgKzE1NjUsNyBAQCBsb29rdXBfZ2xvYmFs X3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUs Ci0gICAgICAgICB7Ci0gICAgICAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotICAgICAgICAg ICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKLS0gICAgICAg ICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFtZSwg ZG9tYWluKTsKLSsgICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5h bWUsIGRvbWFpbik7Ci0gICAgICAgICAgIGlmIChzeW0pCi0gICAgICAgICAgICAgewotICAgICAg ICAgICAgICAgYmxvY2tfZm91bmQgPSBibG9jazsKLUBAIC0xNTM1LDE2ICsxNTc0LDE2IEBAIGxv b2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm1h aW5fb2JqZmlsZSwKLSAgICAgICAgIH0KLSAKLSAgICAgICAvKiBOb3cgZ28gdGhyb3VnaCBwc3lt dGFicy4gICovCi0rICAgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKChzdHJ1Y3Qgb2JqZmls ZSAqKSBvYmpmaWxlKTsKLSAgICAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmlsZSwgcHMp Ci0gICAgICAgICB7Ci0gICAgICAgICAgIGlmICghcHMtPnJlYWRpbgotLSAgICAgICAgICAgICAg JiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgbGlua2FnZV9uYW1lLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBkb21haW4pKQotKyAgICAgICAg ICAgICAgJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgMSwgZG9tYWluKSkKLSAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBzID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsK LSAgICAgICAgICAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotICAgICAgICAgICAgICAgYmxv Y2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7Ci0tICAgICAgICAgICAg ICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgbGlua2FnZV9uYW1lLCBk b21haW4pOwotKyAgICAgICAgICAgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ss IG5hbWUsIGRvbWFpbik7Ci0gICAgICAgICAgICAgICByZXR1cm4gZml4dXBfc3ltYm9sX3NlY3Rp b24gKHN5bSwgKHN0cnVjdCBvYmpmaWxlICopb2JqZmlsZSk7Ci0gICAgICAgICAgICAgfQotICAg ICAgICAgfQotQEAgLTE1NTksOCArMTU5OCw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21f b2JqZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwKLSAgICBzdGF0aWMg c3ltYm9scy4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotLWxvb2t1cF9zeW1ib2xf YXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKLS0JCQkgICBjb25zdCBjaGFyICpuYW1lLCBj b25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0rbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50 IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotIAkJCSAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci1AQCAtMTU3Myw3ICsxNjExLDcg QEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LAotICAgewotICAg ICBidiA9IEJMT0NLVkVDVE9SIChzKTsKLSAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAo YnYsIGJsb2NrX2luZGV4KTsKLS0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ss IG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5 bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Ci0gICAgIGlmIChzeW0pCi0gICAgICAgewotIAli bG9ja19mb3VuZCA9IGJsb2NrOwotQEAgLTE1OTEsNyArMTYyOSw2IEBAIGxvb2t1cF9zeW1ib2xf YXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKLSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAq Ci0gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRleCwgY29uc3QgY2hh ciAqbmFtZSwKLS0JCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCSAgICBjb25z dCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3ltOwotQEAgLTE2 MDIsMTYgKzE2MzksMTUgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19p bmRleCwgY29uc3QgY2hhciAqbmFtZSwKLSAgIHN0cnVjdCBzeW10YWIgKnM7Ci0gICBjb25zdCBp bnQgcHN5bXRhYl9pbmRleCA9IChibG9ja19pbmRleCA9PSBHTE9CQUxfQkxPQ0sgPyAxIDogMCk7 Ci0gCi0tICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBzKQotKyAgQUxMX1BTWU1UQUJTX1JFUVVJ UkVEIChvYmpmaWxlLCBwcykKLSAgIHsKLSAgICAgaWYgKCFwcy0+cmVhZGluCi0tCSYmIGxvb2t1 cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIGxpbmthZ2VfbmFtZSwKLS0JCQkJICBwc3ltdGFi X2luZGV4LCBkb21haW4pKQotKwkmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCBw c3ltdGFiX2luZGV4LCBkb21haW4pKQotICAgICAgIHsKLSAJcyA9IFBTWU1UQUJfVE9fU1lNVEFC IChwcyk7Ci0gCWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotIAlibG9jayA9IEJMT0NLVkVDVE9SX0JM T0NLIChidiwgYmxvY2tfaW5kZXgpOwotLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9j aywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKwlzeW0gPSBsb29rdXBfYmxvY2tfc3lt Ym9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLSAJaWYgKCFzeW0pCi0gCSAgewotIAkgICAgLyog VGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydCB0cnkKLUBA IC0xNjI4LDcgKzE2NjQsNyBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2Nr X2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotIAkgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9D SyAoYnYsCi0gCQkJCSAgICAgICBibG9ja19pbmRleCA9PSBHTE9CQUxfQkxPQ0sgPwotIAkJCQkg ICAgICAgU1RBVElDX0JMT0NLIDogR0xPQkFMX0JMT0NLKTsKLS0JICAgIHN5bSA9IGxvb2t1cF9i bG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Ci0rCSAgICBz eW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLSAJICAgIGlm ICghc3ltKQotIAkgICAgICBlcnJvciAoXygiSW50ZXJuYWw6ICVzIHN5bWJvbCBgJXMnIGZvdW5k IGluICVzIHBzeW10YWIgYnV0IG5vdCBpbiBzeW10YWIuXG4lcyBtYXkgYmUgYW4gaW5saW5lZCBm dW5jdGlvbiwgb3IgbWF5IGJlIGEgdGVtcGxhdGUgZnVuY3Rpb25cbihpZiBhIHRlbXBsYXRlLCB0 cnkgc3BlY2lmeWluZyBhbiBpbnN0YW50aWF0aW9uOiAlczx0eXBlPikuIiksCi0gCQkgICAgIGJs b2NrX2luZGV4ID09IEdMT0JBTF9CTE9DSyA/ICJnbG9iYWwiIDogInN0YXRpYyIsCi1AQCAtMTY0 Nyw3ICsxNjgzLDYgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRl eCwgY29uc3QgY2hhciAqbmFtZSwKLSAKLSBzdHJ1Y3Qgc3ltYm9sICoKLSBiYXNpY19sb29rdXBf c3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAotLQkJCSAgICAgIGNvbnN0IGNoYXIg KmxpbmthZ2VfbmFtZSwKLSAJCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJ CSAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci1AQCAtMTY4MSwxMSArMTcxNiwx MSBAQCBiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAotICAg ICAgdGhhbiB0aGF0IG9uZSwgc28gSSBkb24ndCB0aGluayB3ZSBzaG91bGQgd29ycnkgYWJvdXQg dGhhdCBmb3IKLSAgICAgIG5vdy4gICovCi0gCi0tICBzeW0gPSBsb29rdXBfc3ltYm9sX3N0YXRp YyAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1cF9z eW1ib2xfc3RhdGljIChuYW1lLCBibG9jaywgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkK LSAgICAgcmV0dXJuIHN5bTsKLSAKLS0gIHJldHVybiBsb29rdXBfc3ltYm9sX2dsb2JhbCAobmFt ZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHJldHVybiBsb29rdXBfc3ltYm9s X2dsb2JhbCAobmFtZSwgYmxvY2ssIGRvbWFpbik7Ci0gfQotIAotIC8qIExvb2t1cCBhIHN5bWJv bCBpbiB0aGUgc3RhdGljIGJsb2NrIGFzc29jaWF0ZWQgdG8gQkxPQ0ssIGlmIHRoZXJlCi1AQCAt MTY5MywxNCArMTcyOCwxMyBAQCBiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBj aGFyICpuYW1lLAotIAotIHN0cnVjdCBzeW1ib2wgKgotIGxvb2t1cF9zeW1ib2xfc3RhdGljIChj b25zdCBjaGFyICpuYW1lLAotLQkJICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJ ICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCSAgICAgIGNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbikKLSB7Ci0gICBjb25zdCBzdHJ1Y3QgYmxvY2sgKnN0YXRpY19ibG9jayA9IGJs b2NrX3N0YXRpY19ibG9jayAoYmxvY2spOwotIAotICAgaWYgKHN0YXRpY19ibG9jayAhPSBOVUxM KQotLSAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKG5hbWUsIGxpbmthZ2VfbmFt ZSwgc3RhdGljX2Jsb2NrLCBkb21haW4pOwotKyAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9hdXhf YmxvY2sgKG5hbWUsIHN0YXRpY19ibG9jaywgZG9tYWluKTsKLSAgIGVsc2UKLSAgICAgcmV0dXJu IE5VTEw7Ci0gfQotQEAgLTE3MTAsNyArMTc0NCw2IEBAIGxvb2t1cF9zeW1ib2xfc3RhdGljIChj b25zdCBjaGFyICpuYW1lLAotIAotIHN0cnVjdCBzeW1ib2wgKgotIGxvb2t1cF9zeW1ib2xfZ2xv YmFsIChjb25zdCBjaGFyICpuYW1lLAotLQkJICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAotIAkJICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCSAgICAgIGNvbnN0IGRv bWFpbl9lbnVtIGRvbWFpbikKLSB7Ci1AQCAtMTcyMCwxNSArMTc1MywxNSBAQCBsb29rdXBfc3lt Ym9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKLSAgIC8qIENhbGwgbGlicmFyeS1zcGVjaWZp YyBsb29rdXAgcHJvY2VkdXJlLiAgKi8KLSAgIG9iamZpbGUgPSBsb29rdXBfb2JqZmlsZV9mcm9t X2Jsb2NrIChibG9jayk7Ci0gICBpZiAob2JqZmlsZSAhPSBOVUxMKQotLSAgICBzeW0gPSBzb2xp Yl9nbG9iYWxfbG9va3VwIChvYmpmaWxlLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Ci0r ICAgIHN5bSA9IHNvbGliX2dsb2JhbF9sb29rdXAgKG9iamZpbGUsIG5hbWUsIGRvbWFpbik7Ci0g ICBpZiAoc3ltICE9IE5VTEwpCi0gICAgIHJldHVybiBzeW07Ci0gCi0tICBzeW0gPSBsb29rdXBf c3ltYm9sX2F1eF9zeW10YWJzIChHTE9CQUxfQkxPQ0ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9t YWluKTsKLSsgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKEdMT0JBTF9CTE9DSywg bmFtZSwgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLSAK LS0gIHJldHVybiBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoR0xPQkFMX0JMT0NLLCBuYW1l LCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Ci0rICByZXR1cm4gbG9va3VwX3N5bWJvbF9hdXhfcHN5 bXRhYnMgKEdMT0JBTF9CTE9DSywgbmFtZSwgZG9tYWluKTsKLSB9Ci0gCi0gaW50Ci1AQCAtMTc1 MiwxNCArMTc4NSwxMSBAQCBzeW1ib2xfbWF0Y2hlc19kb21haW4gKGVudW0gbGFuZ3VhZ2Ugc3lt Ym9sX2xhbmd1YWdlLAotIH0KLSAKLSAvKiBMb29rLCBpbiBwYXJ0aWFsX3N5bXRhYiBQU1QsIGZv ciBzeW1ib2wgd2hvc2UgbmF0dXJhbCBuYW1lIGlzIE5BTUUuCi0tICAgSWYgTElOS0FHRV9OQU1F IGlzIG5vbi1OVUxMLCBjaGVjayBpbiBhZGRpdGlvbiB0aGF0IHRoZSBzeW1ib2wncwotLSAgIGxp bmthZ2UgbmFtZSBtYXRjaGVzIGl0LiAgQ2hlY2sgdGhlIGdsb2JhbCBzeW1ib2xzIGlmIEdMT0JB TCwgdGhlCi0tICAgc3RhdGljIHN5bWJvbHMgaWYgbm90ICovCi0rICAgQ2hlY2sgdGhlIGdsb2Jh bCBzeW1ib2xzIGlmIEdMT0JBTCwgdGhlIHN0YXRpYyBzeW1ib2xzIGlmIG5vdC4gKi8KLSAKLSBz dHJ1Y3QgcGFydGlhbF9zeW1ib2wgKgotIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBh cnRpYWxfc3ltdGFiICpwc3QsIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgICAgY29uc3QgY2hh ciAqbGlua2FnZV9uYW1lLCBpbnQgZ2xvYmFsLAotLQkJICAgICAgIGRvbWFpbl9lbnVtIGRvbWFp bikKLSsJCSAgICAgICBpbnQgZ2xvYmFsLCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgc3Ry dWN0IHBhcnRpYWxfc3ltYm9sICp0ZW1wOwotICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoqc3Rh cnQsICoqcHN5bTsKLUBAIC0xODExLDkgKzE4NDEsNyBAQCBsb29rdXBfcGFydGlhbF9zeW1ib2wg KHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBjaGFyICpuYW1lLAotIAlpbnRlcm5h bF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJmYWlsZWQgaW50ZXJuYWwgY29uc2lzdGVu Y3kgY2hlY2siKSk7Ci0gCi0gICAgICAgd2hpbGUgKHRvcCA8PSByZWFsX3RvcAotLQkgICAgICYm IChsaW5rYWdlX25hbWUgIT0gTlVMTAotLQkJID8gc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1F ICgqdG9wKSwgbGlua2FnZV9uYW1lKSA9PSAwCi0tCQkgOiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hf TkFNRSAoKnRvcCxuYW1lKSkpCi0rCSAgICAgJiYgU1lNQk9MX01BVENIRVNfU0VBUkNIX05BTUUg KCp0b3AsIG5hbWUpKQotIAl7Ci0gCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9M X0xBTkdVQUdFICgqdG9wKSwKLSAJCQkJICAgICBTWU1CT0xfRE9NQUlOICgqdG9wKSwgZG9tYWlu KSkKLUBAIC0xODMwLDE1ICsxODU4LDkgQEAgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3Qg cGFydGlhbF9zeW10YWIgKnBzdCwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICBmb3IgKHBzeW0g PSBzdGFydDsgcHN5bSA8IHN0YXJ0ICsgbGVuZ3RoOyBwc3ltKyspCi0gCXsKLSAJICBpZiAoc3lt Ym9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKCpwc3ltKSwKLS0JCQkJICAgICBT WU1CT0xfRE9NQUlOICgqcHN5bSksIGRvbWFpbikpCi0tCSAgICB7Ci0tCSAgICAgIGlmIChsaW5r YWdlX25hbWUgIT0gTlVMTAotLQkJICA/IHN0cmNtcCAoU1lNQk9MX0xJTktBR0VfTkFNRSAoKnBz eW0pLCBsaW5rYWdlX25hbWUpID09IDAKLS0JCSAgOiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFN RSAoKnBzeW0sIG5hbWUpKQotLQkJewotLQkJICByZXR1cm4gKCpwc3ltKTsKLS0JCX0KLS0JICAg IH0KLSsJCQkJICAgICBTWU1CT0xfRE9NQUlOICgqcHN5bSksIGRvbWFpbikKLSsJICAgICAgJiYg U1lNQk9MX01BVENIRVNfU0VBUkNIX05BTUUgKCpwc3ltLCBuYW1lKSkKLSsJICAgIHJldHVybiAo KnBzeW0pOwotIAl9Ci0gICAgIH0KLSAKLUBAIC0xODgwLDIyICsxOTAyLDI1IEBAIGJhc2ljX2xv b2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQotICAgewotICAgICBidiA9 IEJMT0NLVkVDVE9SIChzKTsKLSAgICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdM T0JBTF9CTE9DSyk7Ci0tICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1l LCBOVUxMLCBTVFJVQ1RfRE9NQUlOKTsKLSsgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAo YmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOwotICAgICBpZiAoc3ltICYmICFUWVBFX0lTX09Q QVFVRSAoU1lNQk9MX1RZUEUgKHN5bSkpKQotICAgICAgIHsKLSAJcmV0dXJuIFNZTUJPTF9UWVBF IChzeW0pOwotICAgICAgIH0KLSAgIH0KLSAKLS0gIEFMTF9QU1lNVEFCUyAob2JqZmlsZSwgcHMp Ci0rICAvKiBGSVhNRTogLmRlYnVnX3B1Ym5hbWVzIHNob3VsZCBiZSByZWFkIGluLgotKyAgICAg Ci0rICAgICBPbmUgbWF5IGFsc28gdHJ5IHRvIHRoZSBmaXJzdCBwYXNzIHdpdGhvdXQgdGhlIHJl cXVpcmVfcGFydGlhbF9zeW1ib2xzCi0rICAgICBjYWxsIGJ1dCB0aGF0IHdvdWxkIGJlaGF2ZSBu b25kZXRlcm1pbmlzdGljYWxseS4gICovCi0rICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZp bGUsIHBzKQotICAgewotLSAgICBpZiAoIXBzLT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3lt Ym9sIChwcywgbmFtZSwgTlVMTCwKLS0JCQkJCSAgICAgIDEsIFNUUlVDVF9ET01BSU4pKQotKyAg ICBpZiAoIXBzLT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgMSwg U1RSVUNUX0RPTUFJTikpCi0gICAgICAgewotIAlzID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsK LSAJYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0gCWJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2 LCBHTE9CQUxfQkxPQ0spOwotLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFt ZSwgTlVMTCwgU1RSVUNUX0RPTUFJTik7Ci0rCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJs b2NrLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJaWYgKCFzeW0pCi0gCSAgewotIAkgICAgLyog VGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydAotQEAgLTE5 MDQsNyArMTkyOSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFy ICpuYW1lKQotIAkgICAgICogdGhlIHBzeW10YWIgZ2V0cyBpdCB3cm9uZyBpbiBzb21lIGNhc2Vz LgotIAkgICAgICovCi0gCSAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgU1RBVElD X0JMT0NLKTsKLS0JICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBO VUxMLCBTVFJVQ1RfRE9NQUlOKTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJs b2NrLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJICAgIGlmICghc3ltKQotIAkgICAgICBlcnJv ciAoXygiSW50ZXJuYWw6IGdsb2JhbCBzeW1ib2wgYCVzJyBmb3VuZCBpbiAlcyBwc3ltdGFiIGJ1 dCBub3QgaW4gc3ltdGFiLlxuXAotICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9uLCBvciBt YXkgYmUgYSB0ZW1wbGF0ZSBmdW5jdGlvblxuXAotQEAgLTE5MjgsMjEgKzE5NTMsMjYgQEAgYmFz aWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCi0gICB7Ci0gICAg IGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotICAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChi diwgU1RBVElDX0JMT0NLKTsKLS0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ss IG5hbWUsIE5VTEwsIFNUUlVDVF9ET01BSU4pOwotKyAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3lt Ym9sIChibG9jaywgbmFtZSwgU1RSVUNUX0RPTUFJTik7Ci0gICAgIGlmIChzeW0gJiYgIVRZUEVf SVNfT1BBUVVFIChTWU1CT0xfVFlQRSAoc3ltKSkpCi0gICAgICAgewotIAlyZXR1cm4gU1lNQk9M X1RZUEUgKHN5bSk7Ci0gICAgICAgfQotICAgfQotIAotLSAgQUxMX1BTWU1UQUJTIChvYmpmaWxl LCBwcykKLSsgIC8qIEZJWE1FOiBTb21ldGhpbmcgbGlrZSAuZGVidWdfcHVibmFtZXMgY29udGFp bmluZyBhbHNvIHN0YXRpYyBzeW1ib2xzCi0rICAgICBzaG91bGQgYmUgcmVhZCBpbi4gIENvbXBp bGVyIG5lZWRzIHRvIGJlIHRhdWdodCB0byBnZW5lcmF0ZSBpdCBmaXJzdC4KLSsgICAgIAotKyAg ICAgT25lIG1heSBhbHNvIHRyeSB0byB0aGUgZmlyc3QgcGFzcyB3aXRob3V0IHRoZSByZXF1aXJl X3BhcnRpYWxfc3ltYm9scwotKyAgICAgY2FsbCBidXQgdGhhdCB3b3VsZCBiZWhhdmUgbm9uZGV0 ZXJtaW5pc3RpY2FsbHkuICAqLwotKyAgQUxMX1BTWU1UQUJTX1JFUVVJUkVEIChvYmpmaWxlLCBw cykKLSAgIHsKLS0gICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAo cHMsIG5hbWUsIE5VTEwsIDAsIFNUUlVDVF9ET01BSU4pKQotKyAgICBpZiAoIXBzLT5yZWFkaW4g JiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgMCwgU1RSVUNUX0RPTUFJTikpCi0g ICAgICAgewotIAlzID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKLSAJYnYgPSBCTE9DS1ZFQ1RP UiAocyk7Ci0gCWJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBTVEFUSUNfQkxPQ0spOwot LQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgTlVMTCwgU1RSVUNUX0RP TUFJTik7Ci0rCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBTVFJVQ1Rf RE9NQUlOKTsKLSAJaWYgKCFzeW0pCi0gCSAgewotIAkgICAgLyogVGhpcyBzaG91bGRuJ3QgYmUg bmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydAotQEAgLTE5NTEsNyArMTk4MSw3IEBAIGJh c2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQotIAkgICAgICog dGhlIHBzeW10YWIgZ2V0cyBpdCB3cm9uZyBpbiBzb21lIGNhc2VzLgotIAkgICAgICovCi0gCSAg ICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKLS0JICAgIHN5 bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBOVUxMLCBTVFJVQ1RfRE9NQUlO KTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBTVFJVQ1Rf RE9NQUlOKTsKLSAJICAgIGlmICghc3ltKQotIAkgICAgICBlcnJvciAoXygiSW50ZXJuYWw6IHN0 YXRpYyBzeW1ib2wgYCVzJyBmb3VuZCBpbiAlcyBwc3ltdGFiIGJ1dCBub3QgaW4gc3ltdGFiLlxu XAotICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9uLCBvciBtYXkgYmUgYSB0ZW1wbGF0ZSBm dW5jdGlvblxuXAotQEAgLTE5NzYsOSArMjAwNiwyMyBAQCBmaW5kX21haW5fcHN5bXRhYiAodm9p ZCkKLSAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0OwotICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGU7Ci0gCi0tICBBTExfUFNZTVRBQlMgKG9iamZpbGUsIHBzdCkKLSsgIEFMTF9PQkpGSUxF UyAob2JqZmlsZSkKLSsgIHsKLSsgICAgaWYgKChvYmpmaWxlLT5mbGFncyAmIE9CSkZfTUFJTikg PT0gMCkKLSsgICAgICBjb250aW51ZTsKLSsgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKG9i amZpbGUpOwotKyAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmlsZSwgcHN0KQotKyAgICB7 Ci0rICAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBtYWluX25hbWUgKCksIDEs IFZBUl9ET01BSU4pKQotKwl7Ci0rCSAgcmV0dXJuIHBzdDsKLSsJfQotKyAgICB9Ci0rICB9Ci0r Ci0rICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzdCkKLSAgIHsKLS0gICAgaWYg KGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBtYWluX25hbWUgKCksIE5VTEwsIDEsIFZBUl9E T01BSU4pKQotKyAgICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwc3QsIG1haW5fbmFtZSAo KSwgMSwgVkFSX0RPTUFJTikpCi0gICAgICAgewotIAlyZXR1cm4gKHBzdCk7Ci0gICAgICAgfQot QEAgLTE5OTYsMTQgKzIwNDAsMTAgQEAgZmluZF9tYWluX3BzeW10YWIgKHZvaWQpCi0gICAgc2Vh cmNoIG9uIHRoZSBzeW1ib2xzLiAgRWFjaCBzeW1ib2wgd2hpY2ggaXMgbWFya2VkIGFzIGJlaW5n IGEgT2JqQy9DKysKLSAgICBzeW1ib2wgKGxhbmd1YWdlX2NwbHVzIG9yIGxhbmd1YWdlX29iamMg c2V0KSBoYXMgYm90aCB0aGUgZW5jb2RlZCBhbmQKLSAgICBub24tZW5jb2RlZCBuYW1lcyB0ZXN0 ZWQgZm9yIGEgbWF0Y2guCi0tCi0tICAgSWYgTElOS0FHRV9OQU1FIGlzIG5vbi1OVUxMLCB2ZXJp ZnkgdGhhdCBhbnkgc3ltYm9sIHdlIGZpbmQgaGFzIHRoaXMKLS0gICBwYXJ0aWN1bGFyIG1hbmds ZWQgbmFtZS4KLSAqLwotIAotIHN0cnVjdCBzeW1ib2wgKgotIGxvb2t1cF9ibG9ja19zeW1ib2wg KGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgIGNv bnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCSAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWlu KQotIHsKLSAgIHN0cnVjdCBkaWN0X2l0ZXJhdG9yIGl0ZXI7Ci1AQCAtMjAxNiw5ICsyMDU2LDcg QEAgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywgY29uc3Qg Y2hhciAqbmFtZSwKLSAJICAgc3ltID0gZGljdF9pdGVyX25hbWVfbmV4dCAobmFtZSwgJml0ZXIp KQotIAl7Ci0gCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9MX0xBTkdVQUdFIChz eW0pLAotLQkJCQkgICAgIFNZTUJPTF9ET01BSU4gKHN5bSksIGRvbWFpbikKLS0JICAgICAgJiYg KGxpbmthZ2VfbmFtZSAhPSBOVUxMCi0tCQkgID8gc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1F IChzeW0pLCBsaW5rYWdlX25hbWUpID09IDAgOiAxKSkKLSsJCQkJICAgICBTWU1CT0xfRE9NQUlO IChzeW0pLCBkb21haW4pKQotIAkgICAgcmV0dXJuIHN5bTsKLSAJfQotICAgICAgIHJldHVybiBO VUxMOwotQEAgLTIwMzgsOSArMjA3Niw3IEBAIGxvb2t1cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0 cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsCi0gCSAgIHN5bSA9IGRpY3RfaXRl cl9uYW1lX25leHQgKG5hbWUsICZpdGVyKSkKLSAJewotIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19k b21haW4gKFNZTUJPTF9MQU5HVUFHRSAoc3ltKSwKLS0JCQkJICAgICBTWU1CT0xfRE9NQUlOIChz eW0pLCBkb21haW4pCi0tCSAgICAgICYmIChsaW5rYWdlX25hbWUgIT0gTlVMTAotLQkJICA/IHN0 cmNtcCAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSwgbGlua2FnZV9uYW1lKSA9PSAwIDogMSkp Ci0rCQkJCSAgICAgU1lNQk9MX0RPTUFJTiAoc3ltKSwgZG9tYWluKSkKLSAJICAgIHsKLSAJICAg ICAgc3ltX2ZvdW5kID0gc3ltOwotIAkgICAgICBpZiAoIVNZTUJPTF9JU19BUkdVTUVOVCAoc3lt KSkKLUBAIC0zMjAxLDcgKzMyMzcsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBk b21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAotICAge21zdF9maWxl X2RhdGEsIG1zdF9zb2xpYl90cmFtcG9saW5lLCBtc3RfYWJzLCBtc3RfdW5rbm93bn07Ci0gICBz dGF0aWMgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIHR5cGVzNFtdCi0gICA9Ci0tICB7bXN0X2Zp bGVfYnNzLCBtc3RfdGV4dCwgbXN0X2FicywgbXN0X3Vua25vd259OwotKyAge21zdF9maWxlX2Jz cywgbXN0X3RleHRfZ251X2lmdW5jLCBtc3RfYWJzLCBtc3RfdW5rbm93bn07Ci0gICBlbnVtIG1p bmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTsKLSAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBv dXJ0eXBlMjsKLSAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlMzsKLUBAIC0zMjYy LDcgKzMyOTgsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBr aW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAotICAgICAgbWF0Y2hpbmcgdGhlIHJlZ2V4 cC4gIFRoYXQgd2F5IHdlIGRvbid0IGhhdmUgdG8gcmVwcm9kdWNlIGFsbCBvZgotICAgICAgdGhl IG1hY2hpbmVyeSBiZWxvdy4gKi8KLSAKLS0gIEFMTF9QU1lNVEFCUyAob2JqZmlsZSwgcHMpCi0r ICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzKQotICAgewotICAgICBzdHJ1Y3Qg cGFydGlhbF9zeW1ib2wgKipib3VuZCwgKipnYm91bmQsICoqc2JvdW5kOwotICAgICBpbnQga2Vl cF9nb2luZyA9IDE7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCi1p bmRleCAxNjdkZmU4Li4yZjg4ZTkzIDEwMDY0NAotLS0tIGEvZ2RiL3N5bXRhYi5oCi0rKysgYi9n ZGIvc3ltdGFiLmgKLUBAIC0yODAsNiArMjgwLDggQEAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBl Ci0gewotICAgbXN0X3Vua25vd24gPSAwLAkJLyogVW5rbm93biB0eXBlLCB0aGUgZGVmYXVsdCAq LwotICAgbXN0X3RleHQsCQkJLyogR2VuZXJhbGx5IGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zICov Ci0rICBtc3RfdGV4dF9nbnVfaWZ1bmMsCQkvKiBFeGVjdXRhYmxlIGNvZGUgcmV0dXJuaW5nIGFk ZHJlc3MKLSsJCQkJICAgb2YgZXhlY3V0YWJsZSBjb2RlICovCi0gICBtc3RfZGF0YSwJCQkvKiBH ZW5lcmFsbHkgaW5pdGlhbGl6ZWQgZGF0YSAqLwotICAgbXN0X2JzcywJCQkvKiBHZW5lcmFsbHkg dW5pbml0aWFsaXplZCBkYXRhICovCi0gICBtc3RfYWJzLAkJCS8qIEdlbmVyYWxseSBhYnNvbHV0 ZSAobm9ucmVsb2NhdGFibGUpICovCi1AQCAtMzk2LDcgKzM5OCwxMCBAQCB0eXBlZGVmIGVudW0g ZG9tYWluX2VudW1fdGFnCi0gICBGVU5DVElPTlNfRE9NQUlOLAotIAotICAgLyogQWxsIGRlZmlu ZWQgdHlwZXMgKi8KLS0gIFRZUEVTX0RPTUFJTgotKyAgVFlQRVNfRE9NQUlOLAotKwotKyAgLyog Rm9ydHJhbiBtb2R1bGUuICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0ZS4gICovCi0rICBN T0RVTEVfRE9NQUlOCi0gfQotIGRvbWFpbl9lbnVtOwotIAotQEAgLTk5NCw3ICs5OTksNiBAQCBl eHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAqLCBjb25zdCBz dHJ1Y3QgYmxvY2sgKiwKLSAgICB0aGF0IGNhbid0IHRoaW5rIG9mIGFueXRoaW5nIGJldHRlciB0 byBkby4gICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJhc2ljX2xvb2t1cF9zeW1ib2xf bm9ubG9jYWwgKGNvbnN0IGNoYXIgKiwKLS0JCQkJCQkgICAgY29uc3QgY2hhciAqLAotIAkJCQkJ CSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKLSAJCQkJCQkgICAgY29uc3QgZG9tYWluX2VudW0p OwotIAotQEAgLTEwMDUsNyArMTAwOSw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpiYXNpY19s b29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICosCi0gICAgaXMgb25lOyBkbyBub3Ro aW5nIGlmIEJMT0NLIGlzIE5VTEwgb3IgYSBnbG9iYWwgYmxvY2suICAqLwotIAotIGV4dGVybiBz dHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX3N0YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKLS0J CQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkgICAgY29uc3Qgc3RydWN0 IGJsb2NrICpibG9jaywKLSAJCQkJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwotIAot QEAgLTEwMTMsNyArMTAxNiw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9s X3N0YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKLSAgICBuZWNlc3NhcnkpLiAgKi8KLSAKLSBleHRl cm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUs Ci0tCQkJCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkJICAgIGNvbnN0IHN0 cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJCQkgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsK LSAKLUBAIC0xMDIyLDIxICsxMDI0LDE4IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBf c3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKLSAgICB3aWxsIGZpeCB1cCB0aGUgc3lt Ym9sIGlmIG5lY2Vzc2FyeS4gICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9z eW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJICAgICAgIGNvbnN0IGNo YXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2Nr LAotIAkJCQkJICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0gCi0gLyogTG9va3Vw IGEgcGFydGlhbCBzeW1ib2wuICAqLwotIAotIGV4dGVybiBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wg Kmxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICosCi0tCQkJCQkJ ICAgICBjb25zdCBjaGFyICosCi0gCQkJCQkJICAgICBjb25zdCBjaGFyICosIGludCwKLSAJCQkJ CQkgICAgIGRvbWFpbl9lbnVtKTsKLSAKLSAvKiBsb29rdXAgYSBzeW1ib2wgYnkgbmFtZSwgd2l0 aGluIGEgc3BlY2lmaWVkIGJsb2NrICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1 cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0cnVjdCBibG9jayAqLCBjb25zdCBjaGFyICosCi0tCQkJ CQkgICBjb25zdCBjaGFyICosCi0gCQkJCQkgICBjb25zdCBkb21haW5fZW51bSk7Ci0gCi0gLyog bG9va3VwIGEgW3N0cnVjdCwgdW5pb24sIGVudW1dIGJ5IG5hbWUsIHdpdGhpbiBhIHNwZWNpZmll ZCBibG9jayAqLwotQEAgLTEwNjYsNiArMTA2NSw4IEBAIGV4dGVybiB2b2lkIGNsZWFyX3BjX2Z1 bmN0aW9uX2NhY2hlICh2b2lkKTsKLSAKLSAvKiBmcm9tIHN5bXRhYi5jOiAqLwotIAotK3N0cnVj dCBvYmpmaWxlICpyZXF1aXJlX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IG9iamZpbGUgKik7Ci0r Ci0gLyogbG9va3VwIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGJ5IGZpbGVuYW1lICovCi0gCi0gZXh0 ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqbG9va3VwX3BhcnRpYWxfc3ltdGFiIChjb25zdCBj aGFyICopOwotQEAgLTExNTksNiArMTE2MCw4IEBAIGV4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1i b2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wY19uYW1lCi0gCi0gZXh0ZXJuIHN0cnVjdCBt aW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIpOwot IAotK2V4dGVybiBpbnQgaW5fZ251X2lmdW5jX3N0dWIgKENPUkVfQUREUiBwYyk7Ci0rCi0gZXh0 ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCi0gICAgIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9h bmRfb2JqZmlsZSAoY29uc3QgY2hhciAqLAotIAkJCQkgICAgICAgc3RydWN0IG9iamZpbGUgKiop OwotQEAgLTEzNzIsNyArMTM3NSw2IEBAIGV4dGVybiAvKmNvbnN0ICovIGNoYXIgKm1haW5fbmFt ZSAodm9pZCk7Ci0gLyogQ2hlY2sgZ2xvYmFsIHN5bWJvbHMgaW4gb2JqZmlsZS4gICovCi0gc3Ry dWN0IHN5bWJvbCAqbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCQkJ ICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkJICBjb25zdCBkb21haW5fZW51bSBk b21haW4pOwotIAotIGV4dGVybiBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMKLWRpZmYgLS1naXQg YS9nZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKLWluZGV4IGU2NjU5YzkuLmVhYmQ5ZmMgMTAw NjQ0Ci0tLS0gYS9nZGIvdGFyZ2V0LmMKLSsrKyBiL2dkYi90YXJnZXQuYwotQEAgLTEyMCw2ICsx MjAsOCBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIs IGludCwgaW50KTsKLSAKLSBzdGF0aWMgaW50IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50IChD T1JFX0FERFIsIGludCwgaW50KTsKLSAKLStzdGF0aWMgaW50IGRlYnVnX3RvX2RldGFjaF93YXRj aHBvaW50cyAodm9pZCk7Ci0rCi0gc3RhdGljIGludCBkZWJ1Z190b19zdG9wcGVkX2J5X3dhdGNo cG9pbnQgKHZvaWQpOwotIAotIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9kYXRhX2FkZHJl c3MgKHN0cnVjdCB0YXJnZXRfb3BzICosIENPUkVfQUREUiAqKTsKLUBAIC01ODMsNiArNTg1LDcg QEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotICAgICAgIElOSEVSSVQgKHRvX3JlbW92 ZV9od19icmVha3BvaW50LCB0KTsKLSAgICAgICBJTkhFUklUICh0b19pbnNlcnRfd2F0Y2hwb2lu dCwgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9fcmVtb3ZlX3dhdGNocG9pbnQsIHQpOwotKyAgICAg IElOSEVSSVQgKHRvX2RldGFjaF93YXRjaHBvaW50cywgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9f c3RvcHBlZF9kYXRhX2FkZHJlc3MsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX2hhdmVfc3RlcHBh YmxlX3dhdGNocG9pbnQsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX2hhdmVfY29udGludWFibGVf d2F0Y2hwb2ludCwgdCk7Ci1AQCAtNzEwLDYgKzcxMyw5IEBAIHVwZGF0ZV9jdXJyZW50X3Rhcmdl dCAodm9pZCkKLSAgIGRlX2ZhdWx0ICh0b19yZW1vdmVfd2F0Y2hwb2ludCwKLSAJICAgIChpbnQg KCopIChDT1JFX0FERFIsIGludCwgaW50KSkKLSAJICAgIHJldHVybl9taW51c19vbmUpOwotKyAg ZGVfZmF1bHQgKHRvX2RldGFjaF93YXRjaHBvaW50cywKLSsJICAgIChpbnQgKCopICh2b2lkKSkK LSsJICAgIHJldHVybl96ZXJvKTsKLSAgIGRlX2ZhdWx0ICh0b19zdG9wcGVkX2J5X3dhdGNocG9p bnQsCi0gCSAgICAoaW50ICgqKSAodm9pZCkpCi0gCSAgICByZXR1cm5femVybyk7Ci1AQCAtMzI3 Nyw2ICszMjgzLDE5IEBAIGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRk ciwgaW50IGxlbiwgaW50IHR5cGUpCi0gICByZXR1cm4gcmV0dmFsOwotIH0KLSAKLStzdGF0aWMg aW50Ci0rZGVidWdfdG9fZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQotK3sKLSsgIGludCByZXR2 YWw7Ci0rCi0rICByZXR2YWwgPSBkZWJ1Z190YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzICgp OwotKwotKyAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotKwkJICAgICAgInRhcmdl dF9kZXRhY2hfd2F0Y2hwb2ludHMgKCkgPSAlbGRcbiIsCi0rCQkgICAgICAodW5zaWduZWQgbG9u ZykgcmV0dmFsKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gZGVi dWdfdG9fdGVybWluYWxfaW5pdCAodm9pZCkKLSB7Ci1AQCAtMzUyNCw2ICszNTQzLDcgQEAgc2V0 dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQotICAgY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX2h3X2Jy ZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtwb2ludDsKLSAgIGN1cnJlbnRfdGFy Z2V0LnRvX2luc2VydF93YXRjaHBvaW50ID0gZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQ7Ci0g ICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfd2F0Y2hwb2ludCA9IGRlYnVnX3RvX3JlbW92ZV93 YXRjaHBvaW50OwotKyAgY3VycmVudF90YXJnZXQudG9fZGV0YWNoX3dhdGNocG9pbnRzID0gZGVi dWdfdG9fZGV0YWNoX3dhdGNocG9pbnRzOwotICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9i eV93YXRjaHBvaW50ID0gZGVidWdfdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50OwotICAgY3VycmVu dF90YXJnZXQudG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBkZWJ1Z190b19zdG9wcGVkX2RhdGFf YWRkcmVzczsKLSAgIGN1cnJlbnRfdGFyZ2V0LnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFu Z2UgPSBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlOwotZGlmZiAtLWdpdCBh L2dkYi90YXJnZXQuaCBiL2dkYi90YXJnZXQuaAotaW5kZXggNzEwM2FiMi4uNzQxYjJlNSAxMDA2 NDQKLS0tLSBhL2dkYi90YXJnZXQuaAotKysrIGIvZ2RiL3RhcmdldC5oCi1AQCAtNDIyLDYgKzQy Miw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCi0gICAgIGludCAoKnRvX3JlbW92ZV9od19icmVha3Bv aW50KSAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZvICopOwotICAgICBp bnQgKCp0b19yZW1vdmVfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQpOwotICAgICBp bnQgKCp0b19pbnNlcnRfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQpOwotKyAgICBp bnQgKCp0b19kZXRhY2hfd2F0Y2hwb2ludHMpICh2b2lkKTsKLSAgICAgaW50ICgqdG9fc3RvcHBl ZF9ieV93YXRjaHBvaW50KSAodm9pZCk7Ci0gICAgIGludCB0b19oYXZlX3N0ZXBwYWJsZV93YXRj aHBvaW50OwotICAgICBpbnQgdG9faGF2ZV9jb250aW51YWJsZV93YXRjaHBvaW50OwotQEAgLTEy NzQsNiArMTI3NSwxNSBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19zdHIgKHB0aWRfdCBw dGlkKTsKLSAjZGVmaW5lCXRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludChhZGRyLCBsZW4sIHR5cGUp CVwKLSAgICAgICgqY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX3dhdGNocG9pbnQpIChhZGRyLCBs ZW4sIHR5cGUpCi0gCi0rLyogQ2xlYXIgYWxsIGRlYnVnIHJlZ2lzdGVycyB3aXRob3V0IGFmZmVj dGluZyBhbnkgcmVnaXN0ZXIgY2FjaGVzLiAgRnVuY3Rpb24KLSsgICBhY3RzIG9uIElORkVSSU9S X1BUSUQgd2hpY2ggc2hvdWxkIGJlIHRoZSBmb3JrZWQtb2ZmIHByb2Nlc3MsIGVpdGhlciB0aGUK LSsgICBub24tdGhyZWFkZWQgY2hpbGQgb25lIG9yIHRoZSB0aHJlYWRlZCBwYXJlbnQgb25lLCBk ZXBlbmRpbmcgb24gYHNldAotKyAgIGZvbGxvdy1mb3JrLW1vZGUnLiAgQm90aCB3YXRjaHBvaW50 cyBhbmQgaGFyZHdhcmUgYnJlYWtwb2ludHMgZ2V0IHJlbW92ZWQuCi0rICAgUmV0dXJuIDAgb24g c3VjY2VzcywgLTEgb24gZmFpbHVyZS4gICovCi0rCi0rI2RlZmluZQl0YXJnZXRfZGV0YWNoX3dh dGNocG9pbnRzKCkJXAotKyAgICAgKCpjdXJyZW50X3RhcmdldC50b19kZXRhY2hfd2F0Y2hwb2lu dHMpICgpCi0rCi0gI2RlZmluZSB0YXJnZXRfaW5zZXJ0X2h3X2JyZWFrcG9pbnQoZ2RiYXJjaCwg YnBfdGd0KSBcCi0gICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF9od19icmVha3BvaW50 KSAoZ2RiYXJjaCwgYnBfdGd0KQotIAotQEAgLTEzMTQsNiArMTMyNCwyMCBAQCBleHRlcm4gaW50 IHRhcmdldF9zZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgc3RhcnRfYWRkciwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBVTE9OR0VTVCBwYXR0ZXJuX2xlbiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDT1JFX0FERFIgKmZvdW5kX2FkZHJwKTsKLSAKLSsvKiBV dGlsaXR5IGZ1bmN0aW9ucyB3aGljaCBjYW4gYmUgdXNlZCBieSBzZWFyY2hfbWVtb3J5IGltcGxl bWVudGF0aW9ucy4gICovCi0rCi0rdm9pZCBhbGxvY2F0ZV9wYXR0ZXJuX2J1ZmZlciAoY2hhciAq KnBhdHRlcm5fYnVmcCwgY2hhciAqKnBhdHRlcm5fYnVmX2VuZCwKLSsJCQkgICAgICBVTE9OR0VT VCAqcGF0dGVybl9idWZfc2l6ZSk7Ci0rCi0rdm9pZCBpbmNyZWFzZV9wYXR0ZXJuX2J1ZmZlciAo Y2hhciAqKnBhdHRlcm5fYnVmcCwgY2hhciAqKnBhdHRlcm5fYnVmX2VuZCwKLSsJCQkgICAgICBV TE9OR0VTVCAqcGF0dGVybl9idWZfc2l6ZSwgaW50IHZhbF9ieXRlcyk7Ci0rCi0raW50IHNlYXJj aF9tZW1vcnkgKENPUkVfQUREUiAqc3RhcnRfYWRkciwgVUxPTkdFU1QgKnNlYXJjaF9zcGFjZV9s ZW4sCi0rCQkgICBjb25zdCBjaGFyICpwYXR0ZXJuX2J1ZiwgVUxPTkdFU1QgcGF0dGVybl9sZW4s Ci0rCQkgICBDT1JFX0FERFIgKmZvdW5kX2FkZHIpOwotKwotK3ZvaWQgcHV0X2JpdHMgKGJmZF91 aW50NjRfdCBkYXRhLCBjaGFyICpidWYsIGludCBiaXRzLCBiZmRfYm9vbGVhbiBiaWdfcCk7Ci0r Ci0gLyogVHJhY2Vwb2ludC1yZWxhdGVkIG9wZXJhdGlvbnMuICAqLwotIAotICNkZWZpbmUgdGFy Z2V0X3RyYWNlX2luaXQoKSBcCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94 ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtcG9pbnRlci1mb28uUwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjgz ZmFhZjYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLWZvby5TCi1AQCAtMCwwICsxLDQ1NyBAQAotKwkuZmlsZQkieDg2XzY0LXZs YS1wb2ludGVyLmMiCi0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCi0rLkxk ZWJ1Z19hYmJyZXYwOgotKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKLSsuTGRl YnVnX2luZm8wOgotKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMKLSsuTGRlYnVn X2xpbmUwOgotKwkudGV4dAotKy5MdGV4dDA6Ci0rLmdsb2JsIGZvbwotKwkudHlwZQlmb28sIEBm dW5jdGlvbgotK2ZvbzoKLSsuTEZCMjoKLSsJLmZpbGUgMSAieDg2XzY0LXZsYS1wb2ludGVyLmMi Ci0rCS5sb2MgMSAyMiAwCi0rCXB1c2hxCSVyYnAKLSsuTENGSTA6Ci0rCW1vdnEJJXJzcCwgJXJi cAotKy5MQ0ZJMToKLSsJc3VicQkkNjQsICVyc3AKLSsuTENGSTI6Ci0rCW1vdmwJJWVkaSwgLTM2 KCVyYnApCi0rCS5sb2MgMSAyMiAwCi0rCW1vdnEJJXJzcCwgJXJheAotKwltb3ZxCSVyYXgsIC00 OCglcmJwKQotKwkubG9jIDEgMjMgMAotKwltb3ZsCS0zNiglcmJwKSwgJWVkeAotKwltb3ZzbHEJ JWVkeCwlcmF4Ci0rCXN1YnEJJDEsICVyYXgKLSsJbW92cQklcmF4LCAtMjQoJXJicCkKLSsJLmxv YyAxIDI0IDAKLSsJbW92c2xxCSVlZHgsJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlhZGRxCSQx NSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJc3VicQklcmF4LCAl cnNwCi0rCW1vdnEJJXJzcCwgLTU2KCVyYnApCi0rCW1vdnEJLTU2KCVyYnApLCAlcmF4Ci0rCWFk ZHEJJDE1LCAlcmF4Ci0rCXNocnEJJDQsICVyYXgKLSsJc2FscQkkNCwgJXJheAotKwltb3ZxCSVy YXgsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwltb3ZxCSVyYXgsIC0xNigl cmJwKQotKwkubG9jIDEgMjcgMAotKwltb3ZsCSQwLCAtNCglcmJwKQotKwlqbXAJLkwyCi0rLkwz OgotKwkubG9jIDEgMjggMAotKwltb3ZsCS00KCVyYnApLCAlZXNpCi0rCW1vdmwJLTQoJXJicCks ICVlYXgKLSsJbW92bAklZWF4LCAlZWN4Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmR4Ci0rCW1vdnNs cQklZXNpLCVyYXgKLSsJbW92YgklY2wsICglcmR4LCVyYXgpCi0rCS5sb2MgMSAyNyAwCi0rCWFk ZGwJJDEsIC00KCVyYnApCi0rLkwyOgotKwltb3ZsCS00KCVyYnApLCAlZWF4Ci0rCWNtcGwJLTM2 KCVyYnApLCAlZWF4Ci0rCWpsCS5MMwotKwkubG9jIDEgMzAgMAotKwkuZ2xvYmwJYnJlYWtfaGVy ZQotK2JyZWFrX2hlcmU6Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmF4Ci0rCW1vdmIJJDAsICglcmF4 KQotKwltb3ZxCS00OCglcmJwKSwgJXJzcAotKwkubG9jIDEgMzEgMAotKwlsZWF2ZQotKwlyZXQK LSsuTEZFMjoKLSsJLnNpemUJZm9vLCAuLWZvbwotKwkuc2VjdGlvbgkuZGVidWdfZnJhbWUsIiIs QHByb2diaXRzCi0rLkxmcmFtZTA6Ci0rCS5sb25nCS5MRUNJRTAtLkxTQ0lFMAotKy5MU0NJRTA6 Ci0rCS5sb25nCTB4ZmZmZmZmZmYKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJIiIKLSsJLnVsZWIx MjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLmJ5dGUJMHhjCi0rCS51bGVi MTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJ LmFsaWduIDgKLSsuTEVDSUUwOgotKy5MU0ZERTA6Ci0rCS5sb25nCS5MRUZERTAtLkxBU0ZERTAK LSsuTEFTRkRFMDoKLSsJLmxvbmcJLkxmcmFtZTAKLSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxG RTItLkxGQjIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUK LSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkw eDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0r CS5hbGlnbiA4Ci0rLkxFRkRFMDoKLSsJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMK LSsuTGZyYW1lMToKLSsJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCi0rLkxTQ0lFMToKLSsJLmxvbmcJ MHgwCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSJ6UiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGVi MTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLnVsZWIxMjggMHgxCi0rCS5ieXRlCTB4MwotKwkuYnl0 ZQkweGMKLSsJLnVsZWIxMjggMHg3Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDkwCi0rCS51 bGViMTI4IDB4MQotKwkuYWxpZ24gOAotKy5MRUNJRTE6Ci0rLkxTRkRFMToKLSsJLmxvbmcJLkxF RkRFMS0uTEFTRkRFMQotKy5MQVNGREUxOgotKwkubG9uZwkuTEFTRkRFMS0uTGZyYW1lMQotKwku bG9uZwkuTEZCMgotKwkubG9uZwkuTEZFMi0uTEZCMgotKwkudWxlYjEyOCAweDAKLSsJLmJ5dGUJ MHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAot KwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkx LS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRF MToKLSsJLnRleHQKLSsuTGV0ZXh0MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2Jp dHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgotKwkucXVhZAkuTEZCMi0uTHRleHQwCi0rCS5x dWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEy OCA4Ci0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCi0rCS52 YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkuTENGSTEtLkx0 ZXh0MAotKwkucXVhZAkuTEZFMi0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3Ngot Kwkuc2xlYjEyOCAxNgotKwkucXVhZAkweDAKLSsJLnF1YWQJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1 Z19pbmZvCi0rLkxkZWJ1Z19yZWxhdGl2ZToKLSsJLmxvbmcJLkxkZWJ1Z19lbmQgLSAuTGRlYnVn X3N0YXJ0Ci0rLkxkZWJ1Z19zdGFydDoKLSsJLnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2Fi YnJldjAKLSsJLmJ5dGUJMHg4Ci0rCS51bGViMTI4IDB4MQotKwkubG9uZwkuTEFTRjIKLSsJLmJ5 dGUJMHgxCi0rCS5sb25nCS5MQVNGMwotKwkubG9uZwkuTEFTRjQKLSsJLnF1YWQJLkx0ZXh0MAot KwkucXVhZAkuTGV0ZXh0MAotKwkubG9uZwkuTGRlYnVnX2xpbmUwCi0rCS51bGViMTI4IDB4Mgot KwkuYnl0ZQkweDEKLSsJLnN0cmluZwkiZm9vIgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxNgot KwkuYnl0ZQkweDEKLSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxGRTIKLSsJLmxvbmcJLkxMU1Qw Ci0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCi0rCS51bGViMTI4IDB4Mwot KwkubG9uZwkuTEFTRjUKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTUKLSsJLmxvbmcJLkx0eXBl X2ludCAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmJ5dGUJMHgyCi0rCS5ieXRlCTB4OTEKLSsJLnNs ZWIxMjggLTUyCi0rLkx0YWdfcG9pbnRlcjoKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OAkv KiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19p bmZvCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjggMHg1CS8qIEFiYnJldiBOdW1iZXI6IDUg KERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmxvbmcJLkxBU0YwCi0rCS5ieXRlCTB4MQotKwkuYnl0 ZQkweDE4Ci0rI2lmIDEKLSsJLmxvbmcJLkx0YWdfcG9pbnRlciAtIC5kZWJ1Z19pbmZvCi0rI2Vs c2UKLSsJLyogRGVidWdnaW5nIG9ubHk6IFNraXAgdGhlIHR5cGVkZWYgaW5kaXJlY3Rpb24uICAq LwotKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KLSsjZW5kaWYKLSsJLyog RFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLwotKwkuYnl0ZQkweDMKLSsJ LmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtMzIKLSsjaWYgMAotKwkuYnl0ZQkweDYJLyogRFdfT1Bf ZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAqLwotKyNlbmRpZgot KwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLwotKwkudWxlYjEyOCAw eDYKLSsJLnN0cmluZwkiaSIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTkKLSsJLmxvbmcJLkx0 eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmJ5dGUJMHgyCi0rCS5ieXRlCTB4OTEKLSsJ LnNsZWIxMjggLTIwCi0rCS5ieXRlCTB4MAotKy5MdHlwZV9pbnQ6Ci0rCS51bGViMTI4IDB4Nwot KwkuYnl0ZQkweDQKLSsJLmJ5dGUJMHg1Ci0rCS5zdHJpbmcJImludCIKLSsuTHRhZ19hcnJheV90 eXBlOgotKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5 cGUpICovCi0rCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2ZQotKwkubG9uZwku THR5cGVfdWxvbmcgLSAuTGRlYnVnX3JlbGF0aXZlCS8qIERXX0FUX3NpYmxpbmc6IERXX0ZPUk1f cmVmNCAqLwotKzE6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFy dCAqLwotKwkuYnl0ZQkyZiAtIDNmCS8qIGxlbmd0aCAqLwotKzM6Ci0rCS5ieXRlCTB4OTcJLyog RFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyAqLwotKyNpZiAxCi0rCS5ieXRlCTB4NgkvKiBEV19P UF9kZXJlZiAqLwotKyNlbHNlCi0rCS5ieXRlCTB4OTYJLyogRFdfT1Bfbm9wICovCi0rI2VuZGlm Ci0rMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLwotKwku dWxlYjEyOCAweDkKLSsJLmxvbmcJLkx0eXBlX2NoYXIgLSAuTGRlYnVnX3JlbGF0aXZlCS8qIERX X0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHg5MQotKwku c2xlYjEyOCAtNDAKLSsJLmJ5dGUJMHg2Ci0rCS5ieXRlCTB4MAotKy5MdHlwZV91bG9uZzoKLSsJ LnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4OAotKwkuYnl0ZQkweDcKLSsuTHR5cGVfY2hhcjoKLSsJ LnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDYKLSsJLmxvbmcJLkxBU0YxCi0r CS5ieXRlCTB4MAotKy5MZGVidWdfZW5kOgotKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2Ci0rCS51 bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDExCi0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDI1 Ci0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4YgotKwkudWxl YjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MWIKLSsJLnVsZWIxMjggMHhl Ci0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTIKLSsJLnVs ZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTAKLSsJLnVsZWIxMjggMHg2Ci0rCS5ieXRlCTB4MAot KwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4MmUKLSsJLmJ5dGUJMHgx Ci0rCS51bGViMTI4IDB4M2YKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDB4MwotKwkudWxl YjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgz YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNwotKwkudWxlYjEyOCAweGMKLSsJLnVs ZWIxMjggMHgxMQotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMgotKwkudWxlYjEyOCAw eDEKLSsJLnVsZWIxMjggMHg0MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIxMjggMHgxCi0rCS51 bGViMTI4IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJ LnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhl Ci0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVs ZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAw eDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHg0CS8qIC5MdGFnX3BvaW50ZXIgYWJicmV2ICovCi0rCS51bGViMTI4IDB4MGYJLyogRFdfVEFH X3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgwYgotKwkudWxlYjEy OCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS5ieXRlCTB4MAotKwku Ynl0ZQkweDAKLSsJLnVsZWIxMjggMHg1Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5dGUJMHgwCi0r CS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEy OCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQot KwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJ MHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIxMjggMHgzNAotKwkuYnl0 ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4OAotKwkudWxlYjEyOCAweDNhCi0r CS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEy OCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4YQot KwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDI0 Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4 IDB4M2UKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJ LmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjog OCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS51bGViMTI4IDB4MQotKwkuYnl0ZQkweDEKLSsJ LnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9S TV9yZWY0ICovCi0rCS51bGViMTI4IDB4MQkvKiBEV19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4 IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4NTAJLyogRFdfQVRfZGF0YV9s b2NhdGlvbiAqLwotKwkudWxlYjEyOCAweGEJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJ MHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDkKLSsJLnVsZWIxMjggMHgyMQotKwkuYnl0 ZQkweDAKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJ LyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MmYKLSsJLnVsZWIxMjggMHhhCi0rCS5i eXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhhCi0rCS51bGViMTI4IDB4MjQKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgz ZQotKwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAw eGIKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMK LSsJLnVsZWIxMjggMHhlCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0r CS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgxNgotKwku dmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAKLSsJLmxvbmcJMHhhOAotKwkubG9uZwkw eDJkCi0rCS5zdHJpbmcJImZvbyIKLSsJLmxvbmcJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19hcmFu Z2VzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDJjCi0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxk ZWJ1Z19pbmZvMAotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHgwCi0rCS52YWx1ZQkweDAKLSsJLnZh bHVlCTB4MAotKwkucXVhZAkuTHRleHQwCi0rCS5xdWFkCS5MZXRleHQwLS5MdGV4dDAKLSsJLnF1 YWQJMHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRz LDEKLSsuTEFTRjA6Ci0rCS5zdHJpbmcJImFycmF5IgotKy5MQVNGNToKLSsJLnN0cmluZwkic2l6 ZSIKLSsuTEFTRjM6Ci0rCS5zdHJpbmcJIng4Nl82NC12bGEtcG9pbnRlci5jIgotKy5MQVNGNjoK LSsJLnN0cmluZwkiYXJyYXlfdCIKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJImNoYXIiCi0rLkxBU0Y0 OgotKwkuc3RyaW5nCSJnZGIuYXJjaCIKLSsuTEFTRjI6Ci0rCS5zdHJpbmcJIkdOVSBDIDQuMy4y IDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIg MjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCi0rCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywi IixAcHJvZ2JpdHMKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtcG9pbnRlci5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIu YwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmZlMmM4ZjcKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMK LUBAIC0wLDAgKzEsNDMgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K LSsKLSsjaWYgMAotKwotK3ZvaWQKLStmb28gKGludCBzaXplKQotK3sKLSsgIHR5cGVkZWYgY2hh ciBhcnJheV90W3NpemVdOwotKyAgYXJyYXlfdCBhcnJheTsKLSsgIGludCBpOwotKwotKyAgZm9y IChpID0gMDsgaSA8IHNpemU7IGkrKykKLSsgICAgYXJyYXlbaV0gPSBpOwotKwotKyAgYXJyYXlb MF0gPSAwOwkvKiBicmVhay1oZXJlICovCi0rfQotKwotKyNlbHNlCi0rCi0raW50Ci0rbWFpbiAo dm9pZCkKLSt7Ci0rICBmb28gKDI2KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0dXJuIDA7Ci0rfQot KwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS1wb2ludGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmQyNDNjZjEKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LmV4cAotQEAgLTAsMCArMSw2NiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lm ICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0aGVuIHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcg b3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwIHRlc3QgbWFkZSBvbmx5IGZvciB4 ODZfNjQuIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtcG9p bnRlcgotK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCi0rc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K LStzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCi0r aWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIk e2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLStpZiAgeyBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Z2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHVu dGVzdGVkIHg4Nl82NC12bGEtcG9pbnRlcgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2Jy ZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJy ZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBjaGFyIFxcKFxc KlxcKVxcXFt2YXJpYWJsZVxcXF0iICJmaXJzdDogd2hhdGlzIGFycmF5IgotK2dkYl90ZXN0ICJw dHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFsyNlxcXF0iICJmaXJzdDogcHR5 cGUgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxb MjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyAqYXJyYXkiCi0rZ2RiX3Rlc3QgInB0eXBlICphcnJheSIg InR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUgKmFycmF5IgotKwotK2dkYl90 ZXN0ICJwICgqYXJyYXkpXFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rl c3QgInAgKCphcnJheSlcWzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVz dCAicCAoKmFycmF5KVxbM1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0 ICJwICgqYXJyYXkpXFs0XF0iICJcXCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCi0rCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBh cnJheSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdo YXRpcyBhcnJheSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpc XClcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLSsKLStnZGJfdGVzdCAid2hhdGlz ICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyAqYXJyYXki Ci0rZ2RiX3Rlc3QgInB0eXBlICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNv bmQ6IHB0eXBlICphcnJheSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtdHlwZWRlZi1mb28uUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS10eXBlZGVmLWZvby5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjZm N2EzOQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXR5cGVkZWYtZm9vLlMKLUBAIC0wLDAgKzEsNDU1IEBACi0rCS5maWxlCSJ4ODZfNjQtdmxh LXR5cGVkZWYuYyIKLSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldiwiIixAcHJvZ2JpdHMKLSsuTGRl YnVnX2FiYnJldjA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cwotKy5MZGVi dWdfaW5mbzA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19saW5lLCIiLEBwcm9nYml0cwotKy5MZGVidWdf bGluZTA6Ci0rCS50ZXh0Ci0rLkx0ZXh0MDoKLSsuZ2xvYmwgZm9vCi0rCS50eXBlCWZvbywgQGZ1 bmN0aW9uCi0rZm9vOgotKy5MRkIyOgotKwkuZmlsZSAxICJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIK LSsJLmxvYyAxIDIyIDAKLSsJcHVzaHEJJXJicAotKy5MQ0ZJMDoKLSsJbW92cQklcnNwLCAlcmJw Ci0rLkxDRkkxOgotKwlzdWJxCSQ2NCwgJXJzcAotKy5MQ0ZJMjoKLSsJbW92bAklZWRpLCAtMzYo JXJicCkKLSsJLmxvYyAxIDIyIDAKLSsJbW92cQklcnNwLCAlcmF4Ci0rCW1vdnEJJXJheCwgLTQ4 KCVyYnApCi0rCS5sb2MgMSAyMyAwCi0rCW1vdmwJLTM2KCVyYnApLCAlZWR4Ci0rCW1vdnNscQkl ZWR4LCVyYXgKLSsJc3VicQkkMSwgJXJheAotKwltb3ZxCSVyYXgsIC0yNCglcmJwKQotKwkubG9j IDEgMjQgMAotKwltb3ZzbHEJJWVkeCwlcmF4Ci0rCWFkZHEJJDE1LCAlcmF4Ci0rCWFkZHEJJDE1 LCAlcmF4Ci0rCXNocnEJJDQsICVyYXgKLSsJc2FscQkkNCwgJXJheAotKwlzdWJxCSVyYXgsICVy c3AKLSsJbW92cQklcnNwLCAtNTYoJXJicCkKLSsJbW92cQktNTYoJXJicCksICVyYXgKLSsJYWRk cQkkMTUsICVyYXgKLSsJc2hycQkkNCwgJXJheAotKwlzYWxxCSQ0LCAlcmF4Ci0rCW1vdnEJJXJh eCwgLTU2KCVyYnApCi0rCW1vdnEJLTU2KCVyYnApLCAlcmF4Ci0rCW1vdnEJJXJheCwgLTE2KCVy YnApCi0rCS5sb2MgMSAyNyAwCi0rCW1vdmwJJDAsIC00KCVyYnApCi0rCWptcAkuTDIKLSsuTDM6 Ci0rCS5sb2MgMSAyOCAwCi0rCW1vdmwJLTQoJXJicCksICVlc2kKLSsJbW92bAktNCglcmJwKSwg JWVheAotKwltb3ZsCSVlYXgsICVlY3gKLSsJbW92cQktMTYoJXJicCksICVyZHgKLSsJbW92c2xx CSVlc2ksJXJheAotKwltb3ZiCSVjbCwgKCVyZHgsJXJheCkKLSsJLmxvYyAxIDI3IDAKLSsJYWRk bAkkMSwgLTQoJXJicCkKLSsuTDI6Ci0rCW1vdmwJLTQoJXJicCksICVlYXgKLSsJY21wbAktMzYo JXJicCksICVlYXgKLSsJamwJLkwzCi0rCS5sb2MgMSAzMCAwCi0rCS5nbG9ibAlicmVha19oZXJl Ci0rYnJlYWtfaGVyZToKLSsJbW92cQktMTYoJXJicCksICVyYXgKLSsJbW92YgkkMCwgKCVyYXgp Ci0rCW1vdnEJLTQ4KCVyYnApLCAlcnNwCi0rCS5sb2MgMSAzMSAwCi0rCWxlYXZlCi0rCXJldAot Ky5MRkUyOgotKwkuc2l6ZQlmb28sIC4tZm9vCi0rCS5zZWN0aW9uCS5kZWJ1Z19mcmFtZSwiIixA cHJvZ2JpdHMKLSsuTGZyYW1lMDoKLSsJLmxvbmcJLkxFQ0lFMC0uTFNDSUUwCi0rLkxTQ0lFMDoK LSsJLmxvbmcJMHhmZmZmZmZmZgotKwkuYnl0ZQkweDEKLSsJLnN0cmluZwkiIgotKwkudWxlYjEy OCAweDEKLSsJLnNsZWIxMjggLTgKLSsJLmJ5dGUJMHgxMAotKwkuYnl0ZQkweGMKLSsJLnVsZWIx MjggMHg3Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDkwCi0rCS51bGViMTI4IDB4MQotKwku YWxpZ24gOAotKy5MRUNJRTA6Ci0rLkxTRkRFMDoKLSsJLmxvbmcJLkxFRkRFMC0uTEFTRkRFMAot Ky5MQVNGREUwOgotKwkubG9uZwkuTGZyYW1lMAotKwkucXVhZAkuTEZCMgotKwkucXVhZAkuTEZF Mi0uTEZCMgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkwLS5MRkIyCi0rCS5ieXRlCTB4ZQot KwkudWxlYjEyOCAweDEwCi0rCS5ieXRlCTB4ODYKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4 NAotKwkubG9uZwkuTENGSTEtLkxDRkkwCi0rCS5ieXRlCTB4ZAotKwkudWxlYjEyOCAweDYKLSsJ LmFsaWduIDgKLSsuTEVGREUwOgotKwkuc2VjdGlvbgkuZWhfZnJhbWUsImEiLEBwcm9nYml0cwot Ky5MZnJhbWUxOgotKwkubG9uZwkuTEVDSUUxLS5MU0NJRTEKLSsuTFNDSUUxOgotKwkubG9uZwkw eDAKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJInpSIgotKwkudWxlYjEyOCAweDEKLSsJLnNsZWIx MjggLTgKLSsJLmJ5dGUJMHgxMAotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHgzCi0rCS5ieXRl CTB4YwotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4OTAKLSsJLnVs ZWIxMjggMHgxCi0rCS5hbGlnbiA4Ci0rLkxFQ0lFMToKLSsuTFNGREUxOgotKwkubG9uZwkuTEVG REUxLS5MQVNGREUxCi0rLkxBU0ZERTE6Ci0rCS5sb25nCS5MQVNGREUxLS5MZnJhbWUxCi0rCS5s b25nCS5MRkIyCi0rCS5sb25nCS5MRkUyLS5MRkIyCi0rCS51bGViMTI4IDB4MAotKwkuYnl0ZQkw eDQKLSsJLmxvbmcJLkxDRkkwLS5MRkIyCi0rCS5ieXRlCTB4ZQotKwkudWxlYjEyOCAweDEwCi0r CS5ieXRlCTB4ODYKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENGSTEt LkxDRkkwCi0rCS5ieXRlCTB4ZAotKwkudWxlYjEyOCAweDYKLSsJLmFsaWduIDgKLSsuTEVGREUx OgotKwkudGV4dAotKy5MZXRleHQwOgotKwkuc2VjdGlvbgkuZGVidWdfbG9jLCIiLEBwcm9nYml0 cwotKy5MZGVidWdfbG9jMDoKLSsuTExTVDA6Ci0rCS5xdWFkCS5MRkIyLS5MdGV4dDAKLSsJLnF1 YWQJLkxDRkkwLS5MdGV4dDAKLSsJLnZhbHVlCTB4MgotKwkuYnl0ZQkweDc3Ci0rCS5zbGViMTI4 IDgKLSsJLnF1YWQJLkxDRkkwLS5MdGV4dDAKLSsJLnF1YWQJLkxDRkkxLS5MdGV4dDAKLSsJLnZh bHVlCTB4MgotKwkuYnl0ZQkweDc3Ci0rCS5zbGViMTI4IDE2Ci0rCS5xdWFkCS5MQ0ZJMS0uTHRl eHQwCi0rCS5xdWFkCS5MRkUyLS5MdGV4dDAKLSsJLnZhbHVlCTB4MgotKwkuYnl0ZQkweDc2Ci0r CS5zbGViMTI4IDE2Ci0rCS5xdWFkCTB4MAotKwkucXVhZAkweDAKLSsJLnNlY3Rpb24JLmRlYnVn X2luZm8KLSsJLmxvbmcJLkxkZWJ1Z19lbmQgLSAuTGRlYnVnX3N0YXJ0Ci0rLkxkZWJ1Z19zdGFy dDoKLSsJLnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2FiYnJldjAKLSsJLmJ5dGUJMHg4Ci0r CS51bGViMTI4IDB4MQotKwkubG9uZwkuTEFTRjIKLSsJLmJ5dGUJMHgxCi0rCS5sb25nCS5MQVNG MwotKwkubG9uZwkuTEFTRjQKLSsJLnF1YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MAotKwku bG9uZwkuTGRlYnVnX2xpbmUwCi0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDEKLSsJLnN0cmlu ZwkiZm9vIgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxNgotKwkuYnl0ZQkweDEKLSsJLnF1YWQJ LkxGQjIKLSsJLnF1YWQJLkxGRTIKLSsJLmxvbmcJLkxMU1QwCi0rCS5sb25nCTB4ODMKLSsJLnVs ZWIxMjggMHgzCi0rCS5sb25nCS5MQVNGNQotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxNQotKwku bG9uZwkweDgzCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC01MgotKy5M dGFnX3R5cGVkZWY6Ci0rCS51bGViMTI4IDB4NAotKwkubG9uZwkuTEFTRjYKLSsJLmJ5dGUJMHgx Ci0rCS5ieXRlCTB4MTcKLSsJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCi0r CS51bGViMTI4IDB4NQkvKiBBYmJyZXYgTnVtYmVyOiA1IChEV19UQUdfdmFyaWFibGUpICovCi0r CS5sb25nCS5MQVNGMAotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxOAotKyNpZiAxCi0rCS5sb25n CS5MdGFnX3R5cGVkZWYgLSAuZGVidWdfaW5mbwotKyNlbHNlCi0rCS8qIERlYnVnZ2luZyBvbmx5 OiBTa2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAgKi8KLSsJLmxvbmcJLkx0YWdfYXJyYXlf dHlwZSAtIC5kZWJ1Z19pbmZvCi0rI2VuZGlmCi0rCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JN X2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjgg LTMyCi0rI2lmIDAKLSsJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCi0rI2Vsc2UKLSsJLmJ5 dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8KLSsjZW5kaWYKLSsJLyogRFdfQVRfbG9jYXRpb246IERX X0ZPUk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjggMHg2Ci0rCS5zdHJpbmcJImkiCi0rCS5i eXRlCTB4MQotKwkuYnl0ZQkweDE5Ci0rCS5sb25nCTB4ODMKLSsJLmJ5dGUJMHgyCi0rCS5ieXRl CTB4OTEKLSsJLnNsZWIxMjggLTIwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDcKLSsJLmJ5 dGUJMHg0Ci0rCS5ieXRlCTB4NQotKwkuc3RyaW5nCSJpbnQiCi0rLkx0YWdfYXJyYXlfdHlwZToK LSsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAq LwotKwkubG9uZwkweGEwICsgKDJmIC0gMWYpCS8qIERXX0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAq LwotKwkubG9uZwkweDlkICsgKDJmIC0gMWYpCS8qIERXX0FUX3NpYmxpbmc6IERXX0ZPUk1fcmVm NCAqLwotKzE6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAq LwotKwkuYnl0ZQkyZiAtIDNmCS8qIGxlbmd0aCAqLwotKzM6Ci0rCS5ieXRlCTB4OTcJLyogRFdf T1BfcHVzaF9vYmplY3RfYWRkcmVzcyAqLwotKwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8K LSsyOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogZW5kICovCi0rCS51 bGViMTI4IDB4OQotKwkubG9uZwkweDlkICsgKDJiIC0gMWIpCS8qIERXX0FUX3R5cGU6IERXX0ZP Uk1fcmVmNCAqLwotKwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtNDAKLSsJ LmJ5dGUJMHg2Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHg4Ci0rCS5i eXRlCTB4NwotKwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4NgotKwkubG9u ZwkuTEFTRjEKLSsJLmJ5dGUJMHgwCi0rLkxkZWJ1Z19lbmQ6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19h YmJyZXYKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTEKLSsJLmJ5dGUJMHgxCi0rCS51 bGViMTI4IDB4MjUKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgxYgotKwku dWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgxMQotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjgg MHgxMgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMAotKwkudWxlYjEyOCAweDYKLSsJ LmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHgyZQot KwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHgzZgotKwkudWxlYjEyOCAweGMKLSsJLnVsZWIxMjgg MHgzCi0rCS51bGViMTI4IDB4OAotKwkudWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwku dWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDI3Ci0rCS51bGViMTI4 IDB4YwotKwkudWxlYjEyOCAweDExCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEyCi0r CS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDQwCi0rCS51bGViMTI4IDB4NgotKwkudWxlYjEy OCAweDEKLSsJLnVsZWIxMjggMHgxMwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGVi MTI4IDB4MwotKwkudWxlYjEyOCAweDUKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwku dWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjgg MHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0r CS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMHgxNgotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHgzCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwku dWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4 IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDUKLSsJLnVsZWIx MjggMHgzNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwku dWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4 IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0r CS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4Ngot KwkudWxlYjEyOCAweDM0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjgg MHg4Ci0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJ LnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEy OCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIx MjggMHg3Ci0rCS51bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwku dWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjgg MHgzCi0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4 IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkgKi8KLSsJLnVsZWIx MjggMHgxCi0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDQ5CS8qIERXX0FUX3R5cGUgKi8KLSsJ LnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjggMHgxCS8qIERXX0FU X3NpYmxpbmcgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIx MjggMHg1MAkvKiBEV19BVF9kYXRhX2xvY2F0aW9uICovCi0rCS51bGViMTI4IDB4YQkvKiBEV19G T1JNX2Jsb2NrMSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4OQot KwkudWxlYjEyOCAweDIxCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDQ5CS8qIERXX0FUX3R5 cGUgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjggMHgy ZgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAw eGEKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4YgotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIx MjggMHhiCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLmJ5dGUJMHgwCi0rCS5i eXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX3B1Ym5hbWVzLCIiLEBwcm9n Yml0cwotKwkubG9uZwkweDE2Ci0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19pbmZvMAot KwkubG9uZwkweGE4Ci0rCS5sb25nCTB4MmQKLSsJLnN0cmluZwkiZm9vIgotKwkubG9uZwkweDAK LSsJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCi0rCS5sb25nCTB4MmMKLSsJ LnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2luZm8wCi0rCS5ieXRlCTB4OAotKwkuYnl0ZQkw eDAKLSsJLnZhbHVlCTB4MAotKwkudmFsdWUJMHgwCi0rCS5xdWFkCS5MdGV4dDAKLSsJLnF1YWQJ LkxldGV4dDAtLkx0ZXh0MAotKwkucXVhZAkweDAKLSsJLnF1YWQJMHgwCi0rCS5zZWN0aW9uCS5k ZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQotKy5MQVNGMDoKLSsJLnN0cmluZwkiYXJyYXkiCi0r LkxBU0Y1OgotKwkuc3RyaW5nCSJzaXplIgotKy5MQVNGMzoKLSsJLnN0cmluZwkieDg2XzY0LXZs YS10eXBlZGVmLmMiCi0rLkxBU0Y2OgotKwkuc3RyaW5nCSJhcnJheV90IgotKy5MQVNGMToKLSsJ LnN0cmluZwkiY2hhciIKLSsuTEFTRjQ6Ci0rCS5zdHJpbmcJImdkYi5hcmNoIgotKy5MQVNGMjoK LSsJLnN0cmluZwkiR05VIEMgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCi0rCS5p ZGVudAkiR0NDOiAoR05VKSA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKLSsJLnNl Y3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uYjgwOWM0ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXR5cGVkZWYuYwotQEAgLTAsMCArMSw0MyBAQAotKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIw MDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpZiAwCi0rCi0rdm9pZAotK2ZvbyAoaW50IHNp emUpCi0rewotKyAgdHlwZWRlZiBjaGFyIGFycmF5X3Rbc2l6ZV07Ci0rICBhcnJheV90IGFycmF5 OwotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotKyAgICBhcnJh eVtpXSA9IGk7Ci0rCi0rICBhcnJheVswXSA9IDA7CS8qIGJyZWFrLWhlcmUgKi8KLSt9Ci0rCi0r I2Vsc2UKLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGZvbyAoMjYpOwotKyAgZm9vICg3 OCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uYjA1NDExZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCi1AQCAtMCwwICsxLDY0IEBACi0rIyBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUZXN0IERXX0FUX2RhdGFfbG9jYXRpb24gYWNjZXNzZWQg dGhyb3VnaCBEV19UQUdfdHlwZWRlZiBpbnRlcm1lZGlhdGUuCi0rCi0raWYgIVtpc3RhcmdldCAi eDg2XzY0LSotKiJdIHRoZW4gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdkYi5hcmNo L3g4Nl82NC12bGEtdHlwZWRlZi5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4iCi0rICAg IHJldHVybgotK30KLSsKLStzZXQgdGVzdGZpbGUgeDg2XzY0LXZsYS10eXBlZGVmCi0rc2V0IHNy Y2FzbWZpbGUgJHt0ZXN0ZmlsZX0tZm9vLlMKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0r c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK3NldCBiaW5vYmpm aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZm9vLm8KLStpZiAgeyBbZ2RiX2Nv bXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNhc21maWxlfSIgIiR7Ymlub2JqZmlsZX0i IG9iamVjdCB7fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRl c3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9ICR7Ymlub2JqZmlsZX0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhpdAotK2dk Yl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2Fk ICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHsKLSsgICAgdW50ZXN0ZWQgeDg2XzY0 LXZsYS10eXBlZGVmCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJlYWtwb2ludCAiYnJl YWtfaGVyZSIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWtfaGVyZSIKLSsK LStnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGFycmF5X3QiICJmaXJzdDogd2hhdGlz IGFycmF5IgotKwotK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcXFsyNlxc XF0iICJmaXJzdDogcHR5cGUgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgInAgYXJyYXlcWzFcXSIgIlxc JFxbMC05XF0gPSAxICdcXFxcMDAxJyIKLStnZGJfdGVzdCAicCBhcnJheVxbMlxdIiAiXFwkXFsw LTlcXSA9IDIgJ1xcXFwwMDInIgotK2dkYl90ZXN0ICJwIGFycmF5XFszXF0iICJcXCRcWzAtOVxd ID0gMyAnXFxcXDAwMyciCi0rZ2RiX3Rlc3QgInAgYXJyYXlcWzRcXSIgIlxcJFxbMC05XF0gPSA0 ICdcXFxcMDA0JyIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWtfaGVyZSIK LSsKLStnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGFycmF5X3QiICJzZWNvbmQ6IHdo YXRpcyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxb NzhcXFxdIiAic2Vjb25kOiBwdHlwZSBhcnJheSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2FycmF5aWR4LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMK LWluZGV4IGVjYzMyODkuLmY3OWFkNDAgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2FycmF5aWR4LmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwot QEAgLTE3LDYgKzE3LDEzIEBACi0gCi0gaW50IGFycmF5W10gPSB7MSwgMiwgMywgNH07Ci0gCi0r I2lmZGVmIF9fR05VQ19fCi0rc3RydWN0Ci0rICB7Ci0rICAgIGludCBhWzBdOwotKyAgfSB1bmJv dW5kOwotKyNlbmRpZgotKwotIGludAotIG1haW4gKHZvaWQpCi0gewotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9hcnJheWlkeC5leHAKLWluZGV4IDBlZjZjNGIuLjMzMGVkODcgMTAwNjQ0Ci0tLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9hcnJheWlkeC5leHAKLUBAIC01OSw0ICs1OSwxMiBAQCBnZGJfdGVzdCAicHJpbnQgYXJy YXkiIFwKLSAgICAgICAgICAiXFx7XFxcWzBcXFxdID0gMSwgXFxcWzFcXFxdID0gMiwgXFxcWzJc XFxdID0gMywgXFxcWzNcXFxdID0gNFxcfSIgXAotICAgICAgICAgICJQcmludCBhcnJheSB3aXRo IGFycmF5LWluZGV4ZXMgb24iCi0gCi0tCi0rc2V0IHRlc3QgInAgdW5ib3VuZC5hID09ICZ1bmJv dW5kLmFcWzBcXSIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAi ID0gMVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUg Ik5vIHN5bWJvbCBcInVuYm91bmRcIiBpbiBjdXJyZW50IGNvbnRleHQuXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJdW5zdXBwb3J0ZWQgIiR0ZXN0IChubyBHQ0MpIgotKyAgICB9Ci0rfQotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi4yMDRjZTk5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dudS1pZnVuYy1saWIuYwotQEAgLTAsMCArMSw1NCBAQAotKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLSt0eXBl ZGVmIGludCAoKmZpbmFsX3QpIChpbnQgYXJnKTsKLSsKLStzdGF0aWMgaW50Ci0raW5pdF9zdHVi IChpbnQgYXJnKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgaW50Ci0rZmluYWwg KGludCBhcmcpCi0rewotKyAgcmV0dXJuIGFyZyArIDE7Ci0rfQotKwotK3N0YXRpYyB2b2xhdGls ZSBpbnQgZ251X2lmdW5jX2luaXRpYWxpemVkOwotKwotK3ZvaWQKLStnbnVfaWZ1bmNfcHJlICh2 b2lkKQotK3sKLSsgIGFzc2VydCAoIWdudV9pZnVuY19pbml0aWFsaXplZCk7Ci0rCi0rICBnbnVf aWZ1bmNfaW5pdGlhbGl6ZWQgPSAxOwotK30KLSsKLStmaW5hbF90IGdudV9pZnVuY1ggKHZvaWQp IGFzbSAoImdudV9pZnVuYyIpOwotK2FzbSAoIi50eXBlIGdudV9pZnVuYywgQGdudV9pbmRpcmVj dF9mdW5jdGlvbiIpOwotKwotK2ZpbmFsX3QKLStnbnVfaWZ1bmNYICh2b2lkKQotK3sKLSsgIGlm ICghZ251X2lmdW5jX2luaXRpYWxpemVkKQotKyAgICByZXR1cm4gaW5pdF9zdHViOwotKyAgZWxz ZQotKyAgICByZXR1cm4gZmluYWw7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvZ251LWlmdW5jLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTRhODIzZAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuYwotQEAgLTAsMCArMSwz NiBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu Ci0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRl IDxhc3NlcnQuaD4KLSsKLStleHRlcm4gaW50IGdudV9pZnVuYyAoaW50IGFyZyk7Ci0rZXh0ZXJu IHZvaWQgZ251X2lmdW5jX3ByZSAodm9pZCk7Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0r ICBpbnQgaTsKLSsKLSsgIGdudV9pZnVuY19wcmUgKCk7Ci0rICAKLSsgIGkgPSBnbnVfaWZ1bmMg KDEpOwkvKiBicmVhay1hdC1jYWxsICovCi0rICBhc3NlcnQgKGkgPT0gMik7Ci0rCi0rICBnbnVf aWZ1bmMgKDIpOwkvKiBicmVhay1hdC1uZXh0Y2FsbCAqLwotKwotKyAgcmV0dXJuIDA7CS8qIGJy ZWFrLWF0LWV4aXQgKi8KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n bnUtaWZ1bmMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNGIzYWM0MQotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCi1AQCAtMCwwICsxLDEx NSBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiB7W3NraXBfc2hsaWJf dGVzdHNdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZ251LWlmdW5j IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0rc2V0IGxpYmZpbGUgIiR7dGVzdGZpbGV9LWxpYiIKLStz ZXQgbGlic3JjICR7bGliZmlsZX0uYwotK3NldCBsaWJfc28gJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e2xpYmZpbGV9LnNvCi0rCi0rc2V0IGxpYl9ub2RlYnVnX3NvX2Jhc2UgJHtsaWJmaWxlfS1ub2Rl YnVnLnNvCi0rc2V0IGxpYl9ub2RlYnVnX3NvICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJfbm9k ZWJ1Z19zb19iYXNlfQotKwotKyMge2RlYnVnfSBwcm92aWRlcyBEV0FSRiBzeW1ib2wgZ251X2lm dW5jWCBjb25mdXNpbmcgdGhlIEVMRiBzeW1ib2wKLSsjIGdudV9pZnVuYyBkdXJpbmcgYWRkcmVz cy0+c3ltYm9sIHJlc29sdXRpb24gZm9yIHByaW50aW5nIHRoZSBzeW1ib2wuCi0rIyBTdGlsbCB3 ZSBuZWVkIGl0IGhlcmUgZm9yICJzdGVwInBpbmcgaW50byB0aGUgZnVuY3Rpb24uCi0rc2V0IGxp Yl9vcHRzIFtsaXN0IGRlYnVnXQotK3NldCBsaWJfbm9kZWJ1Z19vcHRzIFtsaXN0XQotK3NldCBl eGVjX29wdHMgW2xpc3QgZGVidWcgc2hsaWI9JGxpYl9zb10KLSsKLStpZiBbZ2V0X2NvbXBpbGVy X2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2Nv bXBpbGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfc28gJGxpYl9vcHRz XSAhPSAiIgotKyAgICAgfHwgW2dkYl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHNyY2Zp bGUgJGJpbmZpbGUgZXhlY3V0YWJsZSAkZXhlY19vcHRzXSAhPSAiIn0gewotKyAgICB1bnRlc3Rl ZCAiQ291bGQgbm90IGNvbXBpbGUgZWl0aGVyICRsaWJzcmMgb3IgJHNyY2ZpbGUuIgotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgotKwotK2NsZWFuX3Jl c3RhcnQgJHRlc3RmaWxlCi0rZ2RiX2xvYWRfc2hsaWJzICR7bGliX3NvfQotKwotK2lmICFbcnVu dG9fbWFpbl0gdGhlbiB7Ci0rICAgIGZhaWwgIkNhbid0IHJ1biB0byBtYWluIgotKyAgICByZXR1 cm4gMTsKLSt9Ci0rCi0rIyBUaGUgImlmIiBjb25kaXRpb24gaXMgYXJ0aWZpY2FsIHRvIHRlc3Qg cmVncmVzc2lvbiBvZiBhIGZvcm1hdCBwYXRjaC4KLStnZGJfYnJlYWtwb2ludCAiW2dkYl9nZXRf bGluZV9udW1iZXIgImJyZWFrLWF0LW5leHRjYWxsIl0gaWYgaSAmJiBnbnVfaWZ1bmMgKGkpICE9 IDQyIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1hdC1j YWxsIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstYXQtY2FsbCIgIi4qYnJl YWstYXQtY2FsbC4qIgotKwotKyMgVGVzdCBHREIgd2lsbCBhdXRvbWF0aWNhbGx5IGluZGlyZWN0 IHRoZSBjYWxsLgotKwotK2dkYl90ZXN0ICJwIGdudV9pZnVuYyAoMykiICIgPSA0IgotKwotKyMg VGVzdCBHREIgd2lsbCBza2lwIHRoZSBnbnVfaWZ1bmMgcmVzb2x2ZXIgb24gZmlyc3QgY2FsbC4K LSsKLStnZGJfdGVzdCAic3RlcCIgIlxyXG5maW5hbCAuKiIKLSsKLSsjIFRlc3QgR0RCIHdpbGwg bm90IGJyZWFrIGJlZm9yZSB0aGUgZmluYWwgY2hvc2VuIGltcGxlbWVudGF0aW9uLgotKwotKyMg QWxzbyB0ZXN0IGEgZm9ybWF0IHBhdGNoIHJlZ3Jlc3Npb246Ci0rIyBDb250aW51aW5nLgotKyMg RXJyb3IgaW4gdGVzdGluZyBicmVha3BvaW50IGNvbmRpdGlvbjoKLSsjIEF0dGVtcHQgdG8gdGFr ZSBhZGRyZXNzIG9mIHZhbHVlIG5vdCBsb2NhdGVkIGluIG1lbW9yeS4KLSsjIAotKyMgQnJlYWtw b2ludCAyLCBtYWluICgpIGF0IC4vZ2RiLmJhc2UvZ251LWlmdW5jLmM6MzMKLSsKLStnZGJfdGVz dCAiY29udGludWUiICJDb250aW51aW5nLlxyXG5cclxuQnJlYWtwb2ludCAuKiAoYXR8aW4pIC4q YnJlYWstYXQtbmV4dGNhbGwuKiIgXAotKwkgImNvbnRpbnVlIHRvIGJyZWFrLWF0LW5leHRjYWxs IgotKwotK2dkYl9icmVha3BvaW50ICJnbnVfaWZ1bmMiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgIm5leHRjYWxsIGdudV9pZnVuYyIKLSsKLStnZGJfdGVzdCAiZnJhbWUiICIjMCAr KDB4XFswLTlhLWZcXSsgaW4gKyk/ZmluYWwgXFwoLioiICJuZXh0Y2FsbCBnbnVfaWZ1bmMgc2tp cHBlZCIKLSsKLSsKLSsjIENvbXBhcmUgdGhlIHR3byBkaWZmZXJlbnQgYWRkcmVzc2VzOgotKwot K2dkYl90ZXN0ICJwIGdudV9pZnVuYyIgIiA9IHs8dGV4dCB2YXJpYWJsZSwgbm8gZGVidWcgaW5m bz59IDB4XFswLTlhLWZcXSsgPGZpbmFsPiIgInAgZ251X2lmdW5jIGV4ZWN1dGluZyIKLStnZGJf dGVzdCAiaW5mbyBzeW0gZ251X2lmdW5jIiAiZmluYWwgaW4gc2VjdGlvbiAuKiIgImluZm8gc3lt IGdudV9pZnVuYyBleGVjdXRpbmciCi0rCi0rc2V0IHRlc3QgImluZm8gYWRkciBnbnVfaWZ1bmMi Ci0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIlN5bWJvbCBcImdu dV9pZnVuY1wiIGlzIGF0ICgweFxbMC05YS1mXF0rKSBpbiAuKiRnZGJfcHJvbXB0ICQiIHsKLSsJ cGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK2dkYl90ZXN0ICJpbmZvIHN5bSAkZXhwZWN0X291dCgx LHN0cmluZykiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIDxnbnVfaWZ1bmMt YWRkcmVzcz4iCi0rCi0rIyA8KmdudV9pZnVuYz4gd291bGQgYmUgYW4gaW5jb3JyZWN0IHJlc29s dXRpb24gZnJvbSBEV19BVF9NSVBTX2xpbmthZ2VfbmFtZS4KLSsjIFdlIGRvIG5vdCB1c2Uge2Rl YnVnfSBidWlsZCBvcHRpb24gZm9yIHRoaXMgcHVycG9zZS4KLSsKLStpZiB7IFtnZGJfY29tcGls ZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRsaWJzcmMgJGxpYl9ub2RlYnVnX3NvICRsaWJf bm9kZWJ1Z19vcHRzXSAhPSAiIn0gewotKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUg ZWl0aGVyICRsaWJzcmMuIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAk bGliX25vZGVidWdfc29fYmFzZQotKwotK2dkYl90ZXN0ICJwIGdudV9pZnVuYyIgIiA9IHs8dGV4 dCBnbnUtaWZ1bmMgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAweFxbMC05YS1mXF0rIDxnbnVf aWZ1bmM+IiAicCBnbnVfaWZ1bmMgbm90IGV4ZWN1dGluZyB3aXRob3V0IGRlYnVnIgotK2dkYl90 ZXN0ICJpbmZvIHN5bSBnbnVfaWZ1bmMiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8g c3ltIGdudV9pZnVuYyBub3QgZXhlY3V0aW5nIHdpdGhvdXQgZGVidWciCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWViN2I4NQotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi1A QCAtMCwwICsxLDIwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0r Ci0rc3RydWN0IHsKLSsgIGludCBmaWVsZDsKLSt9IHN0YXRpY3N0cnVjdCA9IHsgMSB9OwotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJl c3MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVz cy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42ZDgyZTczCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVs ZC1hZGRyZXNzLmV4cAotQEAgLTAsMCArMSwyNiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotK3NldCB0ZXN0IGludGVybmFsLXZhci1maWVsZC1hZGRyZXNzCi0rc2V0IGJpbmZpbGUg JHt0ZXN0fS54Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVz dH0uYyIgIiR7b2JqZGlyfS8ke3N1YmRpcn0vJHtiaW5maWxlfSIgb2JqZWN0IHtkZWJ1Z31dICE9 ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0r ICAgIHJldHVybiAtMQotK30KLSsKLStjbGVhbl9yZXN0YXJ0ICRiaW5maWxlCi0rCi0rZ2RiX3Rl c3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGljc3RydWN0fQotK2dkYl90ZXN0IHtwICR2YXJzdHJ1 Y3QuZmllbGR9ICIgPSAxIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LW92ZXJmbG93LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzVkNWVlMAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwotQEAgLTAsMCArMSwz MCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu Ci0rCi0rICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRl IDxzdGRsaWIuaD4KLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewot KyAgaW50IGFycmF5W2FyZ2NdOwotKwotKyAgYXJyYXlbMF0gPSBhcnJheVswXTsKLSsKLSsgIGFi b3J0ICgpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92 ZXJmbG93LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcyMDNhNDgK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93 LmV4cAotQEAgLTAsMCArMSwxMDggQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsj IFdlIGNvdWxkIGNyYXNoIGluOgotKyMgIzAgIGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGJsPTB4 MCkgYXQgLi4vLi4vZ2RiL2Jsb2NrLmM6NjkKLSsjICMxICBpbiBkd2FyZl9ibG9ja19nZXRfZnJh bWVfYmFzZSAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzo5NwotKyMgICA5NwkgIGZy YW1lZnVuYyA9IGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGdldF9mcmFtZV9ibG9jayAoZnJhbWUs IE5VTEwpKTsKLSsjICMyICBpbiBleGVjdXRlX3N0YWNrX29wICguLi4pIGF0IC4uLy4uL2dkYi9k d2FyZjJleHByLmM6NDk2Ci0rIyAjMyAgaW4gZHdhcmZfYmxvY2tfZXhlY19jb3JlICgpIGF0IC4u Ly4uL2dkYi9kd2FyZjJibG9jay5jOjE1NgotKyMgIzQgIGR3YXJmX2Jsb2NrX2V4ZWMgKC4uLikg YXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6MjA2Ci0rIyAjNSAgaW4gcmFuZ2VfdHlwZV9jb3Vu dF9ib3VuZF9pbnRlcm5hbCAoLi4uKSBhdCAuLi8uLi9nZGIvZ2RidHlwZXMuYzoxNDMwCi0rIyAj NiAgaW4gY3JlYXRlX2FycmF5X3R5cGUgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6ODQw Ci0rIyAuLi4KLSsjICMyMSBpbiBwc3ltdGFiX3RvX3N5bXRhYiAoLi4uKSBhdCAuLi8uLi9nZGIv c3ltZmlsZS5jOjI5MgotKyMgLi4uCi0rIyAjMjkgaW4gYmFja3RyYWNlX2NvbW1hbmRfMSAoKSBh dCAuLi8uLi9nZGIvc3RhY2suYzoxMjczCi0rCi0rc2V0IHRlc3RmaWxlIHZsYS1vdmVyZmxvdwot K3NldCBzaGZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIuc2gKLStzZXQg c3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEK LSt9Ci0rCi0rc2V0IGYgW29wZW4gInxnZXRjb25mIFBBR0VTSVpFIiAiciJdCi0rZ2V0cyAkZiBw YWdlc2l6ZQotK2Nsb3NlICRmCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rc2V0 IHBpZF9vZl9nZGIgW2V4cF9waWQgLWkgW2JvYXJkX2luZm8gaG9zdCBmaWxlaWRdXQotKwotK2lm IHsgW3J1bnRvX21haW5dIDwgMCB9IHsKLSsgICAgdW50ZXN0ZWQgdmxhLW92ZXJmbG93Ci0rICAg IHJldHVybiAtMQotK30KLSsKLSsjIEdldCB0aGUgR0RCIG1lbW9yeSBzaXplIHdoZW4gd2Ugc3Rh eSBhdCBtYWluLgotKwotK3Byb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsKLSsgICAgZ2xvYmFs IHBpZF9vZl9nZGIgcGFnZXNpemUKLSsgICAgc2V0IGZkIFtvcGVuICIvcHJvYy8kcGlkX29mX2dk Yi9zdGF0bSJdCi0rICAgIGdldHMgJGZkIGxpbmUKLSsgICAgY2xvc2UgJGZkCi0rICAgICMgbnVt YmVyIG9mIHBhZ2VzIG9mIHZpcnR1YWwgbWVtb3J5Ci0rICAgIHNjYW4gJGxpbmUgIiVkIiBkcnMK LSsgICAgcmV0dXJuICRkcnMKLSt9Ci0rCi0rc2V0IHBhZ2VzX2ZvdW5kIFttZW1vcnlfdl9wYWdl c19nZXRdCi0rCi0rc2V0IG1iX3Jlc2VydmUgMTAKLSt2ZXJib3NlIC1sb2cgInBhZ2VzX2ZvdW5k ID0gJHBhZ2VzX2ZvdW5kLCBtYl9yZXNlcnZlID0gJG1iX3Jlc2VydmUiCi0rc2V0IGtiX2ZvdW5k IFtleHByICRwYWdlc19mb3VuZCAqICRwYWdlc2l6ZSAvIDEwMjRdCi0rc2V0IGtiX3Blcm1pdCBb ZXhwciAka2JfZm91bmQgKyAxICogMTAyNCArICRtYl9yZXNlcnZlICogMTAyNF0KLSt2ZXJib3Nl IC1sb2cgImtiX2ZvdW5kID0gJGtiX2ZvdW5kLCBrYl9wZXJtaXQgPSAka2JfcGVybWl0IgotKwot KyMgQ3JlYXRlIHRoZSB1bGltaXQgd3JhcHBlci4KLStzZXQgZiBbb3BlbiAkc2hmaWxlICJ3Il0K LStwdXRzICRmICIjISAvYmluL3NoIgotK3B1dHMgJGYgInVsaW1pdCAtdiAka2JfcGVybWl0Igot K3B1dHMgJGYgImV4ZWMgJEdEQiBcIlwkQFwiIgotK2Nsb3NlICRmCi0rcmVtb3RlX2V4ZWMgaG9z dCAiY2htb2QgK3ggJHNoZmlsZSIKLSsKLStnZGJfZXhpdAotK3NldCBHREJvbGQgJEdEQgotK3Nl dCBHREIgIiRzaGZpbGUiCi0rZ2RiX3N0YXJ0Ci0rc2V0IEdEQiAkR0RCb2xkCi0rCi0rZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwot K3NldCBwaWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3QgZmlsZWlkXV0KLSsK LSsjIENoZWNrIHRoZSBzaXplIGFnYWluIGFmdGVyIHRoZSBzZWNvbmQgcnVuLgotKyMgV2UgbXVz dCBub3Qgc3RvcCBpbiBtYWluIGFzIGl0IHdvdWxkIGNhY2hlIGBhcnJheScgYW5kIG5ldmVyIGNy YXNoIGxhdGVyLgotKwotK2dkYl9ydW5fY21kCi0rCi0rdmVyYm9zZSAtbG9nICJrYl9mb3VuZCBi ZWZvcmUgYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8g MTAyNF0iCi0rCi0rZ2RiX3Rlc3QgIiIgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR0FCUlQs IEFib3J0ZWQuLioiICJFbnRlciBhYm9ydCgpIgotKwotK3ZlcmJvc2UgLWxvZyAia2JfZm91bmQg aW4gYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8gMTAy NF0iCi0rCi0rIyBgYWJvcnQnIGNhbiBnZXQgZXhwcmVzc2VkIGFzIGAqX19HSV9hYm9ydCcuCi0r Z2RiX3Rlc3QgImJ0IiAiaW4gXFteIFxdKmFib3J0IFxcKC4qIGluIG1haW4gXFwoLioiICJCYWNr dHJhY2UgYWZ0ZXIgYWJvcnQoKSIKLSsKLSt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGJ0IGFm dGVyIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEw MjRdIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uZTFmM2VkMQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEuYwotQEAgLTAsMCArMSw1NSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSt2b2lkCi0rbWFya2VyICh2b2lkKQot K3sKLSt9Ci0rCi0rdm9pZAotK2JhciAoY2hhciAqYSwgY2hhciAqYiwgY2hhciAqYywgaW50IHNp emUpCi0rewotKyAgbWVtc2V0IChhLCAnMScsIHNpemUpOwotKyAgbWVtc2V0IChiLCAnMicsIHNp emUpOwotKyAgbWVtc2V0IChjLCAnMycsIDQ4KTsKLSt9Ci0rCi0rdm9pZAotK2ZvbyAoaW50IHNp emUpCi0rewotKyAgY2hhciB0ZW1wMVtzaXplXTsKLSsgIGNoYXIgdGVtcDNbNDhdOwotKwotKyAg dGVtcDFbc2l6ZSAtIDFdID0gJ1wwJzsKLSsgIHsKLSsgICAgY2hhciB0ZW1wMltzaXplXTsKLSsK LSsgICAgYmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCBzaXplKTsKLSsKLSsgICAgbWFya2VyICgp OwkvKiBicmVhay1oZXJlICovCi0rICB9Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewot KyAgZm9vICgyNik7Ci0rICBmb28gKDc4KTsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3ZsYS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41ZGE3Mzc4Ci0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKLUBAIC0w LDAgKzEsNjIgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUg dmxhCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIg fSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6 ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVu dG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCB2bGEKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KLSsKLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlz IHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgdGVt cDEiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxc XF0iICJmaXJzdDogd2hhdGlzIHRlbXAyIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBl ID0gY2hhciBcXFxbNDhcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVzdCAi cHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAx IgotK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJz dDogcHR5cGUgdGVtcDIiCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxc WzQ4XFxcXSIgImZpcnN0OiBwdHlwZSB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIgIiA9 ICcxJyA8cmVwZWF0cyAyNiB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDEiCi0rZ2RiX3Rlc3Qg InAgdGVtcDIiICIgPSAnMicgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAy IgotK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgImZpcnN0 OiBwcmludCB0ZW1wMyIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVy ZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxl XFxcXSIgInNlY29uZDogd2hhdGlzIHRlbXAxIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0 eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgdGVtcDIiCi0rZ2Ri X3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJzZWNvbmQ6IHdo YXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxb NzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMSIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0 eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMiIKLStnZGJfdGVzdCAi cHR5cGUgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1w MyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJz ZWNvbmQ6IHByaW50IHRlbXAxIgotK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRz IDc4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDIiCi0rZ2RiX3Rlc3QgInAgdGVtcDMiICIg PSAnMycgPHJlcGVhdHMgNDggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMyIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9NYWtlZmlsZS5pbiBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL01ha2VmaWxlLmluCi1pbmRleCBkNzgyNThlLi4xNzc0MjQ0IDEwMDY0NAotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvTWFrZWZpbGUuaW4KLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L01ha2VmaWxlLmluCi1AQCAtNCw3ICs0LDcgQEAgc3JjZGlyID0gQHNyY2RpckAKLSBFWEVDVVRB QkxFUyA9IGFtYmlndW91cyBhbm5vdGEyIGFub24tdW5pb24gY3BsdXNmdW5jcyBjdHRpYWRkIFwK LSAJZGVyaXZhdGlvbiBpbmhlcml0IGxvY2FsIG1lbWJlci1wdHIgbWV0aG9kIG1pc2MgXAotICAg ICAgICAgb3ZlcmxvYWQgb3ZsZGJyZWFrIHJlZi10eXAgcmVmLXR5cDIgdGVtcGxhdGVzIHVzZXJk ZWYgdmlydGZ1bmMgbmFtZXNwYWNlIFwKLS0JcmVmLXR5cGVzIHJlZi1wYXJhbXMgbWV0aG9kMiBw cjk1OTQgZ2RiMjQ5NSB2aXJ0ZnVuYzIgcHI5MDY3IFwKLSsJcmVmLXR5cGVzIHJlZi1wYXJhbXMg bWV0aG9kMiBwcjk1OTQgZ2RiMjQ5NSBnZGI5NTkzIHZpcnRmdW5jMiBwcjkwNjcgXAotIAlwcjEw NzIKLSAKLSBhbGwgaW5mbyBpbnN0YWxsLWluZm8gZHZpIGluc3RhbGwgdW5pbnN0YWxsIGluc3Rh bGxjaGVjayBjaGVjazoKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxv Y2F0ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxvY2F0ZS5leHAKLWluZGV4IGY4 MWEyMTIuLjMwZDM2MmEgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcC1yZWxv Y2F0ZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRlLmV4cAotQEAg LTMwLDcgKzMwLDcgQEAgcHJvYyBnZXRfZnVuY19hZGRyZXNzIHsgZnVuYyB9IHsKLSAgICAgZ2xv YmFsIGdkYl9wcm9tcHQgaGV4Ci0gCi0gICAgIHNldCByZnVuYyBbc3RyaW5nX3RvX3JlZ2V4cCAk ZnVuY10KLS0gICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICcke2Z1bmN9JyIgImdldCBhZGRy ZXNzIG9mICR7ZnVuY30iIHsKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICR7ZnVuY30i ICJnZXQgYWRkcmVzcyBvZiAke2Z1bmN9IiB7Ci0gCS1yZSAiXFxcJFxbMC05XF0rID0gXFx7Lipc XH0gKDB8KCRoZXgpIDwke3JmdW5jfT4pXFtcclxuXF0rJHtnZGJfcHJvbXB0fSAkIiB7Ci0gCSAg ICAjICQxID0ge2ludCAoKX0gMHgyNCA8ZnVuY3Rpb25fYmFyPgotIAkgICAgIyBCdXQgaWYgdGhl IGZ1bmN0aW9uIGlzIGF0IHplcm8sIHRoZSBuYW1lIG1heSBiZSBvbWl0dGVkLgotQEAgLTEzMCw3 ICsxMzAsNyBAQCBnZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmlsZX0gMCAtcyAke2Z1 bmMxX3NlY30gMHgxMDAwMCAtcyAke2Z1bmMyX3NlY30gMAotIAkieSIKLSAKLSAjIE1ha2Ugc3Vy ZSB0aGUgZnVuY3Rpb24gYWRkcmVzc2VzIHdlcmUgdXBkYXRlZC4KLS1nZGJfdGVzdCAiYnJlYWsg KickZnVuYzFfbmFtZSciIFwKLStnZGJfdGVzdCAiYnJlYWsgKiRmdW5jMV9uYW1lIiBcCi0gICAg ICJCcmVha3BvaW50ICRkZWNpbWFsIGF0IDB4MS4uLi46IGZpbGUgLioiCi0tZ2RiX3Rlc3QgImJy ZWFrIConJGZ1bmMyX25hbWUnIiBcCi0rZ2RiX3Rlc3QgImJyZWFrICokZnVuYzJfbmFtZSIgXAot ICAgICAiQnJlYWtwb2ludCAkZGVjaW1hbCBhdCAweDIuLi4uOiBmaWxlIC4qIgotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwZXhwcnMuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9jcGV4cHJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmJjYTRj ZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BleHBycy5jYwot QEAgLTAsMCArMSw0MzEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIENvbnRyaWJ1dGVkIGJ5IFJlZCBIYXQsIG9y aWdpbmFsbHkgd3JpdHRlbiBieSBLZWl0aCBTZWl0ei4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgICBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRz LCBhbmQvb3IgYWRkaXRpb25zIHRvIHRoaXMgZmlsZSB0bzoKLSsgICBidWctZ2RiQGdudS5vcmcg ICovCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxpb3N0cmVhbT4KLSsKLSsv LyBGb3J3YXJkIGRlY2xzCi0rY2xhc3MgYmFzZTsKLStjbGFzcyBkZXJpdmVkOwotKwotKy8vIEEg c2ltcGxlIHRlbXBsYXRlIHdpdGggc3BlY2lhbGl6YXRpb25zCi0rdGVtcGxhdGUgPHR5cGVuYW1l IFQ+Ci0rY2xhc3MgdGNsYXNzCi0rewotK3B1YmxpYzoKLSsgIHZvaWQgZG9fc29tZXRoaW5nICgp IHsgfSAvLyB0Y2xhc3M8VD46OmRvX3NvbWV0aGluZwotK307Ci0rCi0rdGVtcGxhdGUgPD4KLSt2 b2lkIHRjbGFzczxjaGFyPjo6ZG9fc29tZXRoaW5nICgpIHsgfSAvLyB0Y2xhc3M8Y2hhcj46OmRv X3NvbWV0aGluZwotKwotK3RlbXBsYXRlIDw+Ci0rdm9pZCB0Y2xhc3M8aW50Pjo6ZG9fc29tZXRo aW5nICgpIHsgfSAvLyB0Y2xhc3M8aW50Pjo6ZG9fc29tZXRoaW5nCi0rCi0rdGVtcGxhdGU8Pgot K3ZvaWQgdGNsYXNzPGxvbmc+Ojpkb19zb21ldGhpbmcgKCkgeyB9IC8vIHRjbGFzczxsb25nPjo6 ZG9fc29tZXRoaW5nCi0rCi0rdGVtcGxhdGU8PgotK3ZvaWQgdGNsYXNzPHNob3J0Pjo6ZG9fc29t ZXRoaW5nICgpIHsgfSAvLyB0Y2xhc3M8c2hvcnQ+Ojpkb19zb21ldGhpbmcKLSsKLSsvLyBBIHNp bXBsZSB0ZW1wbGF0ZSB3aXRoIG11bHRpcGxlIHRlbXBsYXRlIHBhcmFtZXRlcnMKLSt0ZW1wbGF0 ZSA8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQywgY2xhc3MgRCwgY2xhc3MgRT4KLSt2b2lkIGZs dWJiZXIgKHZvaWQpIC8vIGZsdWJiZXIKLSt7Ci0rICBBIGE7Ci0rICBCIGI7Ci0rICBDIGM7Ci0r ICBEIGQ7Ci0rICBFIGU7Ci0rCi0rICArK2E7Ci0rICArK2I7Ci0rICArK2M7Ci0rICArK2Q7Ci0r ICArK2U7Ci0rfQotKwotKy8vIFNvbWUgY29udHJpdmVkIHBvbGljaWVzCi0rdGVtcGxhdGUgPGNs YXNzIFQ+Ci0rc3RydWN0IG9wZXJhdGlvbl8xCi0rewotKyAgc3RhdGljIHZvaWQgZnVuY3Rpb24g KHZvaWQpIHsgfSAvLyBvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb24KLSt9OwotKwotK3RlbXBsYXRl IDxjbGFzcyBUPgotK3N0cnVjdCBvcGVyYXRpb25fMgotK3sKLSsgIHN0YXRpYyB2b2lkIGZ1bmN0 aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0aW9uXzI8VD46OmZ1bmN0aW9uCi0rfTsKLSsKLSt0ZW1w bGF0ZSA8Y2xhc3MgVD4KLStzdHJ1Y3Qgb3BlcmF0aW9uXzMKLSt7Ci0rICBzdGF0aWMgdm9pZCBm dW5jdGlvbiAodm9pZCkgeyB9IC8vIG9wZXJhdGlvbl8zPFQ+OjpmdW5jdGlvbgotK307Ci0rCi0r dGVtcGxhdGUgPGNsYXNzIFQ+Ci0rc3RydWN0IG9wZXJhdGlvbl80Ci0rewotKyAgc3RhdGljIHZv aWQgZnVuY3Rpb24gKHZvaWQpIHsgfSAvLyBvcGVyYXRpb25fNDxUPjo6ZnVuY3Rpb24KLSt9Owot KwotKy8vIEEgcG9saWN5LWJhc2VkIGNsYXNzIHcvIGFuZCB3L28gZGVmYXVsdCBwb2xpY3kKLSt0 ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUG9saWN5PgotK2NsYXNzIHBvbGljeSA6IHB1YmxpYyBQ b2xpY3kKLSt7Ci0rcHVibGljOgotKyAgcG9saWN5IChUIG9iaikgOiBvYmpfIChvYmopIHsgfSAv LyBwb2xpY3k8VCwgUG9saWN5Pjo6cG9saWN5Ci0rCi0rcHJpdmF0ZToKLSsgIFQgb2JqXzsKLSt9 OwotKwotK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3kgPSBvcGVyYXRpb25fMTxUPiA+ Ci0rY2xhc3MgcG9saWN5ZCA6IHB1YmxpYyBQb2xpY3kKLSt7Ci0rcHVibGljOgotKyAgcG9saWN5 ZCAoVCBvYmopIDogb2JqXyAob2JqKSB7IH0gLy8gcG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lk Ci0rICB+cG9saWN5ZCAodm9pZCkgeyB9IC8vIHBvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWQK LSsKLStwcml2YXRlOgotKyAgVCBvYmpfOwotK307Ci0rCi0rdHlwZWRlZiBwb2xpY3k8aW50LCBv cGVyYXRpb25fMTx2b2lkKj4gPiBwb2xpY3kxOwotK3R5cGVkZWYgcG9saWN5PGludCwgb3BlcmF0 aW9uXzI8dm9pZCo+ID4gcG9saWN5MjsKLSt0eXBlZGVmIHBvbGljeTxpbnQsIG9wZXJhdGlvbl8z PHZvaWQqPiA+IHBvbGljeTM7Ci0rdHlwZWRlZiBwb2xpY3k8aW50LCBvcGVyYXRpb25fNDx2b2lk Kj4gPiBwb2xpY3k0OwotKwotK3R5cGVkZWYgcG9saWN5ZDxpbnQ+IHBvbGljeWQxOwotK3R5cGVk ZWYgcG9saWN5ZDxsb25nPiBwb2xpY3lkMjsKLSt0eXBlZGVmIHBvbGljeWQ8Y2hhcj4gcG9saWN5 ZDM7Ci0rdHlwZWRlZiBwb2xpY3lkPGJhc2U+IHBvbGljeWQ0OwotK3R5cGVkZWYgcG9saWN5ZDx0 Y2xhc3M8aW50PiA+IHBvbGljeWQ1OwotKwotK2NsYXNzIGZsdWZmIHsgfTsKLStzdGF0aWMgZmx1 ZmYgKmdfZmx1ZmYgPSBuZXcgZmx1ZmYgKCk7Ci0rCi0rY2xhc3MgYmFzZQotK3sKLStwcm90ZWN0 ZWQ6Ci0rICBpbnQgZm9vXzsKLSsKLStwdWJsaWM6Ci0rICBiYXNlICh2b2lkKSA6IGZvb18gKDQy KSB7IH0gLy8gYmFzZTo6YmFzZSh2b2lkKQotKyAgYmFzZSAoaW50IGZvbykgOiBmb29fIChmb28p IHsgfSAvLyBiYXNlOjpiYXNlKGludCkKLSsgIH5iYXNlICh2b2lkKSB7IH0gLy8gYmFzZTo6fmJh c2UKLSsKLSsgIC8vIFNvbWUgb3ZlcmxvYWRlZCBtZXRob2RzCi0rICBpbnQgb3ZlcmxvYWQgKHZv aWQpIGNvbnN0IHsgcmV0dXJuIDA7IH0gLy8gYmFzZTo6b3ZlcmxvYWQodm9pZCkgY29uc3QKLSsg IGludCBvdmVybG9hZCAoaW50IGkpIGNvbnN0IHsgcmV0dXJuIDE7IH0gLy8gYmFzZTo6b3Zlcmxv YWQoaW50KSBjb25zdAotKyAgaW50IG92ZXJsb2FkIChzaG9ydCBzKSBjb25zdCB7IHJldHVybiAy OyB9IC8vIGJhc2U6Om92ZXJsb2FkKHNob3J0KSBjb25zdAotKyAgaW50IG92ZXJsb2FkIChsb25n IGwpIGNvbnN0IHsgcmV0dXJuIDM7IH0gLy8gYmFzZTo6b3ZlcmxvYWQobG9uZykgY29uc3QKLSsg IGludCBvdmVybG9hZCAoY2hhciogYSkgY29uc3QgeyByZXR1cm4gNDsgfSAvLyBiYXNlOjpvdmVy bG9hZChjaGFyKikgY29uc3QKLSsgIGludCBvdmVybG9hZCAoYmFzZSYgYikgY29uc3QgeyByZXR1 cm4gNTsgfSAvLyBiYXNlOjpvdmVybG9hZChiYXNlJikgY29uc3QKLSsKLSsgIC8vIE9wZXJhdG9y cwotKyAgaW50IG9wZXJhdG9yKyAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0 b3IrCi0rICB7IHJldHVybiBmb29fICsgby5mb29fOyB9Ci0rCi0rICBiYXNlIG9wZXJhdG9yKysg KHZvaWQpIC8vIGJhc2U6Om9wZXJhdG9yKysKLSsgIHsgKytmb29fOyByZXR1cm4gKnRoaXM7IH0K LSsKLSsgIGJhc2Ugb3BlcmF0b3IrPShiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvcis9 Ci0rICB7IGZvb18gKz0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KLSsKLSsgIGludCBvcGVyYXRv ci0gKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yLQotKyAgeyByZXR1cm4g Zm9vXyAtIG8uZm9vXzsgfQotKwotKyAgYmFzZSBvcGVyYXRvci0tICh2b2lkKSAvLyBiYXNlOjpv cGVyYXRvci0tCi0rICB7IC0tZm9vXzsgcmV0dXJuICp0aGlzOyB9Ci0rCi0rICBiYXNlIG9wZXJh dG9yLT0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yLT0KLSsgIHsgZm9vXyAtPSBv LmZvb187IHJldHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJhdG9yKiAoYmFzZSBjb25zdCYg bykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3IqCi0rICB7IHJldHVybiBmb29fICogby5mb29fOyB9 Ci0rCi0rICBiYXNlIG9wZXJhdG9yKj0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9y Kj0KLSsgIHsgZm9vXyAqPSBvLmZvb187IHJldHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJh dG9yLyAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3IvCi0rICB7IHJldHVy biBmb29fIC8gby5mb29fOyB9Ci0rCi0rICBiYXNlIG9wZXJhdG9yLz0gKGJhc2UgY29uc3QmIG8p IC8vIGJhc2U6Om9wZXJhdG9yLz0KLSsgIHsgZm9vXyAvPSBvLmZvb187IHJldHVybiAqdGhpczsg fQotKwotKyAgaW50IG9wZXJhdG9yJSAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3Bl cmF0b3IlCi0rICB7IHJldHVybiBmb29fICUgby5mb29fOyB9Ci0rICAKLSsgIGJhc2Ugb3BlcmF0 b3IlPSAoYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3BlcmF0b3IlPQotKyAgeyBmb29fICU9IG8u Zm9vXzsgcmV0dXJuICp0aGlzOyB9Ci0rCi0rICBib29sIG9wZXJhdG9yPCAoYmFzZSBjb25zdCYg bykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3I8Ci0rICB7IHJldHVybiBmb29fIDwgby5mb29fOyB9 Ci0rCi0rICBib29sIG9wZXJhdG9yPD0gKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9w ZXJhdG9yPD0KLSsgIHsgcmV0dXJuIGZvb18gPD0gby5mb29fOyB9Ci0rCi0rICBib29sIG9wZXJh dG9yPiAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3I+Ci0rICB7IHJldHVy biBmb29fID4gby5mb29fOyB9Ci0rCi0rICBib29sIG9wZXJhdG9yPj0gKGJhc2UgY29uc3QmIG8p IGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPj0KLSsgIHsgcmV0dXJuIGZvb18gPj0gby5mb29fOyB9 Ci0rCi0rICBib29sIG9wZXJhdG9yIT0gKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9w ZXJhdG9yIT0KLSsgIHsgcmV0dXJuIGZvb18gIT0gby5mb29fOyB9Ci0rCi0rICBib29sIG9wZXJh dG9yPT0gKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPT0KLSsgIHsgcmV0 dXJuIGZvb18gPT0gby5mb29fOyB9Ci0rCi0rICBib29sIG9wZXJhdG9yISAodm9pZCkgY29uc3Qg Ly8gYmFzZTo6b3BlcmF0b3IhCi0rICB7IHJldHVybiAhZm9vXzsgfQotKwotKyAgYm9vbCBvcGVy YXRvciYmIChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvciYmCi0rICB7IHJl dHVybiBmb29fICYmIG8uZm9vXzsgfQotKwotKyAgYm9vbCBvcGVyYXRvcnx8IChiYXNlIGNvbnN0 JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcnx8Ci0rICB7IHJldHVybiBmb29fIHx8IG8uZm9v XzsgfQotKwotKyAgaW50IG9wZXJhdG9yPDwgKGludCB2YWx1ZSkgY29uc3QgLy8gYmFzZTo6b3Bl cmF0b3I8PAotKyAgeyByZXR1cm4gZm9vXyAgPDwgdmFsdWU7IH0KLSsKLSsgIGJhc2Ugb3BlcmF0 b3I8PD0gKGludCB2YWx1ZSkgLy8gYmFzZTo6b3BlcmF0b3I8PD0KLSsgIHsgZm9vXyA8PD0gdmFs dWU7IHJldHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJhdG9yPj4gKGludCB2YWx1ZSkgY29u c3QgLy8gYmFzZTo6b3BlcmF0b3I+PgotKyAgeyByZXR1cm4gZm9vXyAgPj4gdmFsdWU7IH0KLSsK LSsgIGJhc2Ugb3BlcmF0b3I+Pj0gKGludCB2YWx1ZSkgLy8gYmFzZTo6b3BlcmF0b3I+Pj0KLSsg IHsgZm9vXyA+Pj0gdmFsdWU7IHJldHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJhdG9yfiAo dm9pZCkgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3J+Ci0rICB7IHJldHVybiB+Zm9vXzsgfQotKwot KyAgaW50IG9wZXJhdG9yJiAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3Im Ci0rICB7IHJldHVybiBmb29fICYgby5mb29fOyB9Ci0rCi0rICBiYXNlIG9wZXJhdG9yJj0gKGJh c2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yJj0KLSsgIHsgZm9vXyAmPSBvLmZvb187IHJl dHVybiAqdGhpczsgfQotKwotKyAgaW50IG9wZXJhdG9yfCAoYmFzZSBjb25zdCYgbykgY29uc3Qg Ly8gYmFzZTo6b3BlcmF0b3J8Ci0rICB7IHJldHVybiBmb29fIHwgby5mb29fOyB9Ci0rCi0rICBi YXNlIG9wZXJhdG9yfD0gKGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yfD0KLSsgIHsg Zm9vXyB8PSBvLmZvb187IHJldHVybiAqdGhpczsgfQotKyAgCi0rICBpbnQgb3BlcmF0b3JeIChi YXNlIGNvbnN0JiBvKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcl4KLSsgIHsgcmV0dXJuIGZvb18g XiBvLmZvb187IH0KLSsKLSsgIGJhc2Ugb3BlcmF0b3JePSAoYmFzZSBjb25zdCYgbykgLy8gYmFz ZTo6b3BlcmF0b3JePQotKyAgeyBmb29fIF49IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9Ci0rCi0r ICBiYXNlIG9wZXJhdG9yPSAoYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3BlcmF0b3I9Ci0rICB7 IGZvb18gPSBvLmZvb187IHJldHVybiAqdGhpczsgfQotKwotKyAgdm9pZCBvcGVyYXRvcigpICh2 b2lkKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcigpCi0rICB7IHJldHVybjsgfQotKwotKyAgaW50 IG9wZXJhdG9yW10gKGludCBpZHgpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yW10KLSsgIHsgcmV0 dXJuIGlkeDsgfQotKwotKyAgdm9pZCogb3BlcmF0b3IgbmV3IChzaXplX3Qgc2l6ZSkgdGhyb3cg KCkgLy8gYmFzZTo6b3BlcmF0b3IgbmV3Ci0rICB7IHJldHVybiBtYWxsb2MgKHNpemUpOyB9Ci0r Ci0rICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCogcHRyKSAvLyBiYXNlOjpvcGVyYXRvciBk ZWxldGUKLSsgIHsgZnJlZSAocHRyKTsgfQotKwotKyAgdm9pZCogb3BlcmF0b3IgbmV3W10gKHNp emVfdCBzaXplKSB0aHJvdyAoKSAvLyBiYXNlOjpvcGVyYXRvciBuZXdbXQotKyAgeyByZXR1cm4g bWFsbG9jIChzaXplKTsgfQotKwotKyAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSAodm9pZCogcHRy KSAvLyBiYXNlOjpvcGVyYXRvciBkZWxldGVbXQotKyAgeyBmcmVlIChwdHIpOyB9Ci0rCi0rICBi YXNlIGNvbnN0KiBvcGVyYXRvci0+ICh2b2lkKSBjb25zdCAvLyBiYXNlOjpvcGVhcnRvci0+Ci0r ICB7IHJldHVybiB0aGlzOyB9Ci0rCi0rICBpbnQgb3BlcmF0b3ItPiogKGJhc2UgY29uc3QmIGIp IGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yLT4qCi0rICB7ICByZXR1cm4gZm9vXyAqIGIuZm9vXzsg fQotKwotKyAgb3BlcmF0b3IgY2hhciogKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxjaGFy Kj4gKCJoZWxsbyIpOyB9IC8vIGJhc2U6Om9wZXJhdG9yIGNoYXIqCi0rICBvcGVyYXRvciBpbnQg KCkgY29uc3QgeyByZXR1cm4gMjE7IH0gLy8gYmFzZTo6b3BlcmF0b3IgaW50Ci0rICBvcGVyYXRv ciBmbHVmZiogKCkgY29uc3QgeyByZXR1cm4gbmV3IGZsdWZmICgpOyB9IC8vIGJhc2U6Om9wZXJh dG9yIGZsdWZmKgotKyAgb3BlcmF0b3IgZmx1ZmYqKiAoKSBjb25zdCB7IHJldHVybiAmZ19mbHVm ZjsgfSAvLyBiYXNlOjpvcGVyYXRvciBmbHVmZioqCi0rfTsKLSsKLStjbGFzcyBiYXNlMSA6IHB1 YmxpYyB2aXJ0dWFsIGJhc2UKLSt7Ci0rcHVibGljOgotKyAgYmFzZTEgKHZvaWQpIDogZm9vXyAo MjEpIHsgfSAvLyBiYXNlMTo6YmFzZTEodm9pZCkKLSsgIGJhc2UxIChpbnQgYSkgOiBmb29fKGEp IHsgfSAvLyBiYXNlMTo6YmFzZTEoaW50KQotKyAgdm9pZCBhX2Z1bmN0aW9uICh2b2lkKSBjb25z dCB7IH0gLy8gYmFzZTE6OmFfZnVuY3Rpb24KLSsKLStwcm90ZWN0ZWQ6Ci0rICBpbnQgZm9vXzsK LSt9OwotKwotK2NsYXNzIGJhc2UyIDogcHVibGljIHZpcnR1YWwgYmFzZQotK3sKLStwdWJsaWM6 Ci0rICBiYXNlMiAoKSA6IGZvb18gKDMpIHsgfSAvLyBiYXNlMjo6YmFzZTIKLSsKLStwcm90ZWN0 ZWQ6Ci0rICB2b2lkIGFfZnVuY3Rpb24gKHZvaWQpIGNvbnN0IHsgfSAvLyBiYXNlMjo6YV9mdW5j dGlvbgotKyAgaW50IGZvb187Ci0rfTsKLSsKLStjbGFzcyBkZXJpdmVkIDogcHVibGljIGJhc2Ux LCBwdWJsaWMgYmFzZTIKLSt7Ci0rICBwdWJsaWM6Ci0rICBkZXJpdmVkKHZvaWQpIDogZm9vXyAo NCkgeyB9IC8vIGRlcml2ZWQ6OmRlcml2ZWQKLSsgIHZvaWQgYV9mdW5jdGlvbiAodm9pZCkgY29u c3QgLy8gZGVyaXZlZDo6YV9mdW5jdGlvbgotKyAgeyAKLSsgICAgdGhpcy0+YmFzZTE6OmFfZnVu Y3Rpb24gKCk7Ci0rICAgIHRoaXMtPmJhc2UyOjphX2Z1bmN0aW9uICgpOwotKyAgfQotKwotKyAg cHJvdGVjdGVkOgotKyAgaW50IGZvb187Ci0rfTsKLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywg Y2hhciogYXJndltdKSAvLyBtYWluCi0reyAvLyBtYWluCi0rICBkZXJpdmVkIGQ7Ci0rICB2b2lk IChkZXJpdmVkOjoqcGZ1bmMpICh2b2lkKSBjb25zdCA9ICZkZXJpdmVkOjphX2Z1bmN0aW9uOwot KyAgKGQuKnBmdW5jKSAoKTsKLSsKLSsgIGJhc2UgYSAoMSksIGIgKDMpLCBjICg4KTsKLSsgICh2 b2lkKSBhLm92ZXJsb2FkICgpOwotKyAgKHZvaWQpIGEub3ZlcmxvYWQgKHN0YXRpY19jYXN0PGlu dD4gKDApKTsKLSsgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNfY2FzdDxzaG9ydD4gKDApKTsK LSsgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNfY2FzdDxsb25nPiAoMCkpOwotKyAgKHZvaWQp IGEub3ZlcmxvYWQgKHN0YXRpY19jYXN0PGNoYXIqPiAoMCkpOwotKyAgKHZvaWQpIGEub3Zlcmxv YWQgKGEpOwotKwotKyAgaW50IHI7Ci0rICByID0gYiArIGM7Ci0rICArK2E7Ci0rICBhICs9IGI7 Ci0rICByID0gYiAtIGM7Ci0rICAtLWE7Ci0rICBhIC09IGI7Ci0rICByID0gYiAqIGM7Ci0rICBh ICo9IGI7Ci0rICByID0gYiAvIGM7Ci0rICBhIC89IGI7Ci0rICByID0gYiAlIGM7Ci0rICBhICU9 IGI7Ci0rICBib29sIHggPSAoYiA8IGMpOwotKyAgeCA9IChiIDw9IGMpOwotKyAgeCA9IChiID4g Yyk7Ci0rICB4ID0gKGIgPj0gYyk7Ci0rICB4ID0gKGIgIT0gYyk7Ci0rICB4ID0gKGIgPT0gYyk7 Ci0rICB4ID0gKCFiKTsKLSsgIHggPSAoYiAmJiBjKTsKLSsgIHggPSAoYiB8fCBjKTsKLSsgIHIg PSBiIDw8IDI7Ci0rICBhIDw8PSAxOwotKyAgciA9IGIgPj4gMjsKLSsgIGEgPj49IDE7Ci0rICBy ID0gfmI7Ci0rICByID0gYiAmIGM7Ci0rICBhICY9IGM7Ci0rICByID0gYiB8IGM7Ci0rICBhIHw9 IGM7Ci0rICByID0gYiBeIGM7Ci0rICBhIF49IGM7Ci0rICBhID0gYzsKLSsgIGEgKCk7Ci0rICBp bnQgaSA9IGFbM107Ci0rICBkZXJpdmVkKiBmID0gbmV3IGRlcml2ZWQgKCk7Ci0rICBkZXJpdmVk KiBnID0gbmV3IGRlcml2ZWRbM107Ci0rICBkZWxldGUgZjsKLSsgIGRlbGV0ZVtdIGc7Ci0rICBh LT5vdmVybG9hZCAoKTsKLSsgIHIgPSBhLT4qYjsKLSsKLSsgIHRjbGFzczxjaGFyPiBjaGFyX3Rj bGFzczsKLSsgIHRjbGFzczxpbnQ+IGludF90Y2xhc3M7Ci0rICB0Y2xhc3M8c2hvcnQ+IHNob3J0 X3RjbGFzczsKLSsgIHRjbGFzczxsb25nPiBsb25nX3RjbGFzczsKLSsgIHRjbGFzczxiYXNlPiBi YXNlX3RjbGFzczsKLSsgIGNoYXJfdGNsYXNzLmRvX3NvbWV0aGluZyAoKTsKLSsgIGludF90Y2xh c3MuZG9fc29tZXRoaW5nICgpOwotKyAgc2hvcnRfdGNsYXNzLmRvX3NvbWV0aGluZyAoKTsKLSsg IGxvbmdfdGNsYXNzLmRvX3NvbWV0aGluZyAoKTsKLSsgIGJhc2VfdGNsYXNzLmRvX3NvbWV0aGlu ZyAoKTsKLSsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBpbnQ+ICgpOwotKyAgZmx1 YmJlcjxpbnQsIGludCwgaW50LCBpbnQsIHNob3J0PiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQs IGludCwgaW50LCBsb25nPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBjaGFy PiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgc2hvcnQsIGludD4gKCk7Ci0rICBmbHVi YmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBzaG9ydD4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50 LCBpbnQsIHNob3J0LCBsb25nPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgc2hvcnQs IGNoYXI+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBpbnQ+ICgpOwotKyAg Zmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBzaG9ydD4gKCk7Ci0rICBmbHViYmVyPGludCwg aW50LCBpbnQsIGxvbmcsIGxvbmc+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25n LCBjaGFyPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwgaW50PiAoKTsKLSsg IGZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwgc2hvcnQ+ICgpOwotKyAgZmx1YmJlcjxpbnQs IGludCwgaW50LCBjaGFyLCBsb25nPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hh ciwgY2hhcj4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBzaG9ydCwgaW50LCBpbnQ+ICgpOwot KyAgZmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgc2hvcnQ+ICgpOwotKyAgZmx1YmJlcjxp bnQsIGludCwgc2hvcnQsIGludCwgbG9uZz4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBzaG9y dCwgaW50LCBjaGFyPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBzaG9ydCwgaW50 PiAoKTsKLSsgIGZsdWJiZXI8c2hvcnQsIGludCwgc2hvcnQsIGludCwgc2hvcnQ+ICgpOwotKyAg Zmx1YmJlcjxsb25nLCBzaG9ydCwgbG9uZywgc2hvcnQsIGxvbmc+ICgpOwotKwotKyAgcG9saWN5 MSBwMSAoMSk7Ci0rICBwMS5mdW5jdGlvbiAoKTsKLSsgIHBvbGljeTIgcDIgKDIpOwotKyAgcDIu ZnVuY3Rpb24gKCk7Ci0rICBwb2xpY3kzIHAzICgzKTsKLSsgIHAzLmZ1bmN0aW9uICgpOwotKyAg cG9saWN5NCBwNCAoNCk7Ci0rICBwNC5mdW5jdGlvbiAoKTsKLSsKLSsgIHBvbGljeWQxIHBkMSAo NSk7Ci0rICBwZDEuZnVuY3Rpb24gKCk7Ci0rICBwb2xpY3lkMiBwZDIgKDYpOwotKyAgcGQyLmZ1 bmN0aW9uICgpOwotKyAgcG9saWN5ZDMgcGQzICg3KTsKLSsgIHBkMy5mdW5jdGlvbiAoKTsKLSsg IHBvbGljeWQ0IHBkNCAoZCk7Ci0rICBwZDQuZnVuY3Rpb24gKCk7Ci0rICBwb2xpY3lkNSBwZDUg KGludF90Y2xhc3MpOwotKyAgcGQ1LmZ1bmN0aW9uICgpOwotKwotKyAgYmFzZTEgYjEgKDMpOwot KwotKyAgciA9IGE7Ci0rICBjaGFyKiBzdHIgPSBhOwotKyAgZmx1ZmYqIGZscCA9IGE7Ci0rICBm bHVmZioqIGZscHAgPSBhOwotK30KLSsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9jcGV4cHJzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwZXhwcnMuZXhwCi1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjA3NDc2MwotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BleHBycy5leHAKLUBAIC0wLDAgKzEsNzI0IEBACi0r IyBjcGV4cHJzLmV4cCAtIEMrKyBleHByZXNzaW9ucyB0ZXN0cwotKyMKLSsjIENvcHlyaWdodCAy MDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIENv bnRyaWJ1dGVkIGJ5IFJlZCBIYXQsIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBLZWl0aCBTZWl0ei4K LSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuCi0rCi0rIyBBIGhlbHBlciBwcm9jIHdoaWNoIHNldHMg YSBicmVha3BvaW50IGF0IEZVTkMgYW5kIGF0dGVtcHRzIHRvCi0rIyBydW4gdG8gdGhlIGJyZWFr cG9pbnQuCi0rcHJvYyB0ZXN0X2JyZWFrcG9pbnQge2Z1bmN9IHsKLSsgICAgZ2xvYmFsIERFQwot KwotKyAgICAjIFJlc3RhcnQgZXZlcnkgdGltZQotKyAgICBpZiB7IVtydW50b19tYWluXX0gewot KwlwZXJyb3IgImNvdWxkIG5vdCBydW4gdG8gbWFpbiB3aGVuIGF0dGVtcHRpbmcgdG8gYnJlYWsg YXQgJGZ1bmMiCi0rICAgIH0gZWxzZSB7Ci0rCWdkYl9icmVha3BvaW50ICIkZnVuYyIKLSsJc2V0 IGkgW2V4cHIge1tzdHJpbmcgbGFzdCA6ICRmdW5jXSArIDF9XQotKwlzZXQgZWZ1bmMgW3N0cmlu Z190b19yZWdleHAgW3N0cmluZyByYW5nZSAkZnVuYyAkaSBlbmRdXQotKwlnZGJfdGVzdCAiY29u dGludWUiIFwKLSsJICAgICJDb250aW51aW5nLlxyXG5cclxuQnJlYWtwb2ludCAkREVDKywuKiRl ZnVuYy4qIiBcCi0rCSAgICAiY29udGludWUgdG8gJGZ1bmMiCi0rICAgIH0KLSt9Ci0rCi0rIyBB ZGQgYSBmdW5jdGlvbiB0byB0aGUgbGlzdCBvZiB0ZXN0ZWQgZnVuY3Rpb25zCi0rIyBGVU5DIGlz IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiAod2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gZ2RiIGNv bW1hbmRzKQotKyMgVFlQRSBpcyB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24sIGFzIGV4cGVjdGVk IGZyb20gdGhlICJwcmludCIgY29tbWFuZAotKyMgUFJJTlQgaXMgdGhlIG5hbWUgb2YgdGhlIGZ1 bmN0aW9uLCBhcyBleHBlY3RlZCByZXN1bHQgb2YgdGhlIHByaW50IGNvbW1hbmQKLSsjICAqT1Iq ICItIiwgaW5kaWNhdGluZyB0aGF0IEZVTkMgc2hvdWxkIGJlIHVzZWQgKG5lZWRlZCBmb3Igdmly dHVhbC9pbmhlcml0ZWQKLSsjICAgZnVuY3MpCi0rIyBMU1QgaXMgZWl0aGVyIHRoZSBleHBlY3Rl ZCByZXN1bHQgb2YgdGhlIGxpc3QgY29tbWFuZCAodGhlIGNvbW1lbnQgZnJvbQotKyMgIHRoZSBz b3VyY2UgY29kZSkgKk9SKiAiLSIsIGluIHdoaWNoIGNhc2UgRlVOQyB3aWxsIGJlIHVzZWQKLSsj Ci0rIyBVc2FnZToKLSsjIGFkZCBOQU1FIFRZUEUgUFJJTlQgTFNUCi0rIyBhZGQgTkFNRSBUWVBF IFBSSU5UIC0KLStwcm9jIGFkZCB7ZnVuYyB0eXBlIHByaW50IGxzdH0gewotKyAgICBnbG9iYWwg YWxsX2Z1bmN0aW9ucyBDT05WQVIgQUREUgotKwotKyAgICBzZXQgYWxsX2Z1bmN0aW9ucygkZnVu Yyx0eXBlKSAkdHlwZQotKyAgICBpZiB7JHByaW50ID09ICItIn0gewotKwlzZXQgcHJpbnQgJGZ1 bmMKLSsgICAgfQotKwotKyAgICAjIEFuIGV4Y2VwdGlvbjogc2luY2UgZ2RiIGNhbm9uaWNhbGl6 ZXMgQysrIG91dHB1dCwKLSsgICAgIyAiKHZvaWQpIiBtdXN0IGJlIG11dGF0ZWQgdG8gIigpIi4K LSsgICAgcmVnc3ViIHtcKHZvaWRcKX0gJHByaW50IHsoKX0gcHJpbnQKLSsKLSsgICAgc2V0IGFs bF9mdW5jdGlvbnMoJGZ1bmMscHJpbnQpIFwKLSsJIiRDT05WQVIgPSB7W3N0cmluZ190b19yZWdl eHAgJHR5cGVdfSAkQUREUiA8W3N0cmluZ190b19yZWdleHAgJHByaW50XS4qPiIKLSsgICAgaWYg eyRsc3QgPT0gIi0ifSB7Ci0rCXNldCBsc3QgIiRmdW5jIgotKyAgICB9Ci0rICAgIHNldCBhbGxf ZnVuY3Rpb25zKCRmdW5jLGxpc3QpICIuKi8vIFtzdHJpbmdfdG9fcmVnZXhwICRsc3RdIgotK30K LSsKLStwcm9jIGdldCB7ZnVuYyBjbWR9IHsKLSsgICAgZ2xvYmFsIGFsbF9mdW5jdGlvbnMKLSsg ICAgcmV0dXJuICRhbGxfZnVuY3Rpb25zKCRmdW5jLCRjbWQpCi0rfQotKwotKyMgUmV0dXJucyBh IGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgZm9yIGEgZ2l2ZW4gY29tbWFuZAotK3Byb2MgZ2V0X2Z1 bmN0aW9ucyB7Y21kfSB7Ci0rICAgIGdsb2JhbCBhbGxfZnVuY3Rpb25zCi0rICAgIHNldCByZXN1 bHQge30KLSsgICAgZm9yZWFjaCBpIFthcnJheSBuYW1lcyBhbGxfZnVuY3Rpb25zICosJGNtZF0g ewotKwlpZiB7JGFsbF9mdW5jdGlvbnMoJGkpICE9ICIifSB7Ci0rCSAgICBzZXQgaWR4IFtzdHJp bmcgbGFzdCAsICRpXQotKwkgICAgaWYgeyRpZHggIT0gLTF9IHsKLSsJCWxhcHBlbmQgcmVzdWx0 IFtzdHJpbmcgcmFuZ2UgJGkgMCBbZXhwciB7JGlkeCAtIDF9XV0KLSsJICAgIH0KLSsJfQotKyAg ICB9Ci0rCi0rICAgIHJldHVybiBbbHNvcnQgJHJlc3VsdF0KLSt9Ci0rCi0rIyBTb21lIGNvbnZl bmllbmNlIHZhcmlhYmxlcyBmb3IgdGhpcyB0ZXN0Ci0rc2V0IERFQyB7WzAtOV19OyAjIGEgZGVj aW1hbCBudW1iZXIKLStzZXQgSEVYIHtbMC05YS1mQS1GXX07ICMgYSBoZXhpZGVjaW1hbCBudW1i ZXIKLStzZXQgQ09OVkFSICJcXFwkJERFQysiOyAjIGNvbnZlbmllbmNlIHZhcmlhYmxlIHJlZ2V4 cAotK3NldCBBRERSICIweCRIRVgrIjsgIyBhZGRyZXNzCi0rCi0rIyBBbiBhcnJheSBvZiBmdW5j dGlvbnMvbWV0aG9kcyB0aGF0IHdlIGFyZSB0ZXN0aW5nLi4uCi0rIyBFYWNoIGVsZW1lbnQgY29u c2lzdHMgaXMgaW5kZXhlZCBieSBOQU1FLENPTU1BTkQsIHdoZXJlCi0rIyBOQU1FIGlzIHRoZSBm dW5jdGlvbiBuYW1lIGFuZCBDT01NQU5EIGlzIHRoZSBnZGIgY29tbWFuZCB0aGF0Ci0rIyB3ZSBh cmUgdGVzdGluZy4gVGhlIHZhbHVlIG9mIHRoZSBhcnJheSBmb3IgYW55IGluZGV4IHBhaXIgaXMK LSsjIHRoZSBleHBlY3RlZCByZXN1bHQgb2YgcnVubmluZyBDT01NQU5EIHdpdGggdGhlIE5BTUUg YXMgYXJndW1lbnQuCi0rCi0rIyBUaGUgYXJyYXkgaG9sZGluZyBhbGwgZnVuY3Rpb25zL21ldGhv ZHMgdG8gdGVzdC4gVmFsaWQgc3ViaW5kZXhlcwotKyMgYXJlIChub25lIG5lZWQgY2hhcmFjdGVy IGVzY2FwaW5nIC0tICJhZGQiIHdpbGwgdGFrZSBjYXJlIG9mIHRoYXQpOgotKwotKyMgYWRkIG5h bWUgdHlwZSBwcmludF9uYW1lIGxpc3QKLSsjIE5BTUUsdHlwZTogdmFsdWUgaXMgdHlwZSBvZiBm dW5jdGlvbiAKLSsjIE5BTUUscHJpbnQ6IHZhbHVlIGlzIHByaW50IG5hbWUgb2YgZnVuY3Rpb24g KGNhcmVmdWwgdy9pbmhlcml0ZWQvdmlydHVhbCEpCi0rIyBOQU1FLGxpc3Q6IHZhbHVlIGlzIGNv bW1lbnQgaW4gc291cmNlIGNvZGUgb24gZmlyc3QgbGluZSBvZiBmdW5jdGlvbgotKyMgICAod2l0 aG91dCB0aGUgbGVhZGluZyAiLy8iKQotK2FycmF5IHNldCBhbGxfZnVuY3Rpb25zIHt9Ci0rCi0r IyAiTm9ybWFsIiBmdW5jdGlvbnMvbWV0aG9kcwotK2FkZCB7bWFpbn0gXAotKyAgICB7aW50IChp bnQsIGNoYXIgKiopfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtkZXJpdmVkOjphX2Z1bmN0 aW9ufSBcCi0rICAgIHt2b2lkIChjb25zdCBkZXJpdmVkICogY29uc3QpfSBcCi0rICAgIC0gXAot KyAgICAtCi0rYWRkIHtiYXNlMTo6YV9mdW5jdGlvbn0gXAotKyAgICB7dm9pZCAoY29uc3QgYmFz ZTEgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2UyOjphX2Z1bmN0aW9u fSBcCi0rICAgIHt2b2lkIChjb25zdCBiYXNlMiAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAg LQotKwotKyMgQ29uc3RydWN0b3JzCi0rCi0rIyBPbiB0YXJnZXRzIHVzaW5nIHRoZSBBUk0gRUFC SSwgdGhlIGNvbnN0cnVjdG9yIGlzIGV4cGVjdGVkIHRvIHJldHVybgotKyMgInRoaXMiLgotK3By b2MgY3RvciB7IHR5cGUgYXJnbGlzdCB9IHsKLSsgICAgaWYgeyBbaXN0YXJnZXQgYXJtKi0qZWFi aSpdIH0gewotKwlzZXQgcmV0ICIkdHlwZSAqIgotKyAgICB9IGVsc2UgewotKwlzZXQgcmV0ICJ2 b2lkICIKLSsgICAgfQotKyAgICBpZiB7ICRhcmdsaXN0ICE9ICIiIH0gewotKwlzZXQgYXJnbGlz dCAiLCAkYXJnbGlzdCIKLSsgICAgfQotKyAgICByZXR1cm4gIiR7cmV0fSgkdHlwZSAqIGNvbnN0 JGFyZ2xpc3QpIgotK30KLSsKLSthZGQge2Rlcml2ZWQ6OmRlcml2ZWR9IFwKLSsgICAgW2N0b3Ig ZGVyaXZlZCAiIl0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTE6OmJhc2UxKHZvaWQp fSBcCi0rICAgIFtjdG9yIGJhc2UxICJjb25zdCB2b2lkICoqIGNvbnN0Il0gXAotKyAgICAtIFwK LSsgICAgLQotK2FkZCB7YmFzZTE6OmJhc2UxKGludCl9IFwKLSsgICAgW2N0b3IgYmFzZTEgImlu dCJdIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2UyOjpiYXNlMn0gXAotKyAgICBbY3Rv ciBiYXNlMiAiY29uc3Qgdm9pZCAqKiBjb25zdCJdIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQg e2Jhc2U6OmJhc2Uodm9pZCl9IFwKLSsgICAgW2N0b3IgYmFzZSAiIl0gXAotKyAgICAtIFwKLSsg ICAgLQotK2FkZCB7YmFzZTo6YmFzZShpbnQpfSBcCi0rICAgIFtjdG9yIGJhc2UgImludCJdIFwK LSsgICAgLSBcCi0rICAgIC0KLSsKLSsjIERlc3RydWN0b3JzCi0rCi0rIyBPbiB0YXJnZXRzIHVz aW5nIHRoZSBBUk0gRUFCSSwgc29tZSBkZXN0cnVjdG9ycyBhcmUgZXhwZWN0ZWQKLSsjIHRvIHJl dHVybiAidGhpcyIuICBPdGhlcnMgYXJlIHZvaWQuICBGb3IgaW50ZXJuYWwgcmVhc29ucywKLSsj IEdDQyByZXR1cm5zIHZvaWQgKiBpbnN0ZWFkIG9mICR0eXBlICo7IFJlYWxWaWV3IGFwcGVhcnMg dG8gZG8KLSsjIHRoZSBzYW1lLgotK3Byb2MgZHRvciB7IHR5cGUgfSB7Ci0rICAgIGlmIHsgW2lz dGFyZ2V0IGFybSotKmVhYmkqXSB9IHsKLSsJc2V0IHJldCAidm9pZCAqIgotKyAgICB9IGVsc2Ug ewotKwlzZXQgcmV0ICJ2b2lkICIKLSsgICAgfQotKyAgICByZXR1cm4gIiR7cmV0fSgkdHlwZSAq IGNvbnN0KSIKLSt9Ci0rCi0rYWRkIHtiYXNlOjp+YmFzZX0gXAotKyAgICBbZHRvciBiYXNlXSBc Ci0rICAgIC0gXAotKyAgICAtCi0rCi0rIyBPdmVybG9hZGVkIG1ldGhvZHMgKGFsbCBhcmUgY29u c3QgLS0gd2UgdHJ5IHRvIHVzZSB0aGUgdm9pZAotKyMgbWV0aG9kIHdpdGggYW5kIHdpdGhvdXQg c3BlY2lmeWluZyAiY29uc3QiKQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQodm9pZCl9IFwKLSsgICAg e2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAge2Jhc2U6Om92ZXJs b2FkKHZvaWQpIGNvbnN0fQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQodm9pZCkgY29uc3R9IFwKLSsg ICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAge2Jhc2U6Om92 ZXJsb2FkKHZvaWQpIGNvbnN0fQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQoaW50KSBjb25zdH0gXAot KyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGludCl9IFwKLSsgICAgLSBcCi0rICAgIC0K LSthZGQge2Jhc2U6Om92ZXJsb2FkKHNob3J0KSBjb25zdH0gXAotKyAgICB7aW50IChjb25zdCBi YXNlICogY29uc3QsIHNob3J0KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3Zl cmxvYWQobG9uZykgY29uc3R9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBsb25n KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQoY2hhciopIGNvbnN0 fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgY2hhciAqKX0gXAotKyAgICAtIFwK LSsgICAgLQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQoYmFzZSYpIGNvbnN0fSBcCi0rICAgIHtpbnQg KGNvbnN0IGJhc2UgKiBjb25zdCwgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLQotKwotKyMg T3BlcmF0b3JzCi0rYWRkIHtiYXNlOjpvcGVyYXRvcit9IFwKLSsgICAge2ludCAoY29uc3QgYmFz ZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNl OjpvcGVyYXRvcisrfSBcCi0rICAgIHtiYXNlIChiYXNlICogY29uc3QpfSBcCi0rICAgIC0gXAot KyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcis9fSBcCi0rICAgIHtiYXNlIChiYXNlICogY29u c3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJh dG9yLX0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwK LSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yLS19IFwKLSsgICAge2Jhc2Ug KGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9y LT19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAt IFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IqfSBcCi0rICAgIHtpbnQgKGNvbnN0IGJh c2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFz ZTo6b3BlcmF0b3IqPX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYp fSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvci99IFwKLSsgICAge2lu dCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAt Ci0rYWRkIHtiYXNlOjpvcGVyYXRvci89fSBcCi0rICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNv bnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yJX0g XAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAg LSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yJT19IFwKLSsgICAge2Jhc2UgKGJhc2Ug KiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6 b3BlcmF0b3I8fSBcCi0rICAgIHtib29sIChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2Ug Jil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yPD19IFwKLSsgICAg e2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsg ICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I+fSBcCi0rICAgIHtib29sIChjb25zdCBiYXNlICog Y29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9w ZXJhdG9yPj19IFwKLSsgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAm KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IhPX0gXAotKyAgICB7 Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAg ICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcj09fSBcCi0rICAgIHtib29sIChjb25zdCBiYXNlICog Y29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9w ZXJhdG9yIX0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwK LSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3ImJn0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFz ZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNl OjpvcGVyYXRvcnx8fSBcCi0rICAgIHtib29sIChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJh c2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yPDx9IFwKLSsg ICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBpbnQpfSBcCi0rICAgIC0gXAotKyAgICAtCi0r YWRkIHtiYXNlOjpvcGVyYXRvcjw8PX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBpbnQp fSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcj4+fSBcCi0rICAgIHtp bnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7 YmFzZTo6b3BlcmF0b3I+Pj19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgaW50KX0gXAot KyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3J+fSBcCi0rICAgIHtpbnQgKGNv bnN0IGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJh dG9yJn0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwK LSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yJj19IFwKLSsgICAge2Jhc2Ug KGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7 YmFzZTo6b3BlcmF0b3J8fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3Qg YmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3J8PX0gXAot KyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAg ICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcl59IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNv bnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVy YXRvcl49fSBcCi0rICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsg ICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yPX0gXAotKyAgICB7YmFzZSAoYmFz ZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNl OjpvcGVyYXRvcigpfSBcCi0rICAgIHt2b2lkIChjb25zdCBiYXNlICogY29uc3QpfSBcCi0rICAg IC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcltdfSBcCi0rICAgIHtpbnQgKGNvbnN0 IGJhc2UgKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3Bl cmF0b3IgbmV3fSBcCi0rICAgIHt2b2lkICooc2l6ZV90KX0gXAotKyAgICAtIFwKLSsgICAgLQot K2FkZCB7YmFzZTo6b3BlcmF0b3IgZGVsZXRlfSBcCi0rICAgIHt2b2lkICh2b2lkICopfSBcCi0r ICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBuZXdbXX0gXAotKyAgICB7dm9p ZCAqKHNpemVfdCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yIGRl bGV0ZVtdfSBcCi0rICAgIHt2b2lkICh2b2lkICopfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRk IHtiYXNlOjpvcGVyYXRvciBjaGFyKn0gXAotKyAgICB7Y2hhciAqKGNvbnN0IGJhc2UgKiBjb25z dCl9IFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yIGZsdWZmKn0gXAot KyAgICB7Zmx1ZmYgKihjb25zdCBiYXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtCi0r YWRkIHtiYXNlOjpvcGVyYXRvciBmbHVmZioqfSBcCi0rICAgIHtmbHVmZiAqKihjb25zdCBiYXNl ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBpbnR9 IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLQot KwotKyMgVGVtcGxhdGVzCi0rYWRkIHt0Y2xhc3M8Y2hhcj46OmRvX3NvbWV0aGluZ30gXAotKyAg ICB7dm9pZCAodGNsYXNzPGNoYXI+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRk IHt0Y2xhc3M8aW50Pjo6ZG9fc29tZXRoaW5nfSBcCi0rICAgIHt2b2lkICh0Y2xhc3M8aW50PiAq IGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7dGNsYXNzPGxvbmc+Ojpkb19zb21l dGhpbmd9IFwKLSsgICAge3ZvaWQgKHRjbGFzczxsb25nPiAqIGNvbnN0KX0gXAotKyAgICAtIFwK LSsgICAgLQotK2FkZCB7dGNsYXNzPHNob3J0Pjo6ZG9fc29tZXRoaW5nfSBcCi0rICAgIHt2b2lk ICh0Y2xhc3M8c2hvcnQ+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHt0Y2xh c3M8YmFzZT46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNzPGJhc2U+ICogY29u c3QpfSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGlu dCwgaW50Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIK LSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBzaG9ydD59IFwKLSsgICAge3ZvaWQg KHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50 LCBpbnQsIGludCwgbG9uZz59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAg ICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgY2hhcj59IFwKLSsg ICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVy PGludCwgaW50LCBpbnQsIHNob3J0LCBpbnQ+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAg ICAtIFwKLSsgICAgZmx1YmJlcgotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwg c2hvcnQ+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlcgot K2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBzaG9ydCwgbG9uZz59IFwKLSsgICAge3ZvaWQg KHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50 LCBpbnQsIHNob3J0LCBjaGFyPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0r ICAgIGZsdWJiZXIKLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgaW50Pn0gXAot KyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge2ZsdWJi ZXI8aW50LCBpbnQsIGludCwgbG9uZywgc2hvcnQ+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAot KyAgICAtIFwKLSsgICAgZmx1YmJlcgotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25n LCBsb25nPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIK LSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgY2hhcj59IFwKLSsgICAge3ZvaWQg KHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50 LCBpbnQsIGNoYXIsIGludD59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAg ICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIHNob3J0Pn0gXAot KyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge2ZsdWJi ZXI8aW50LCBpbnQsIGludCwgY2hhciwgbG9uZz59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0r ICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIs IGNoYXI+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlcgot K2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgaW50Pn0gXAotKyAgICB7dm9pZCAo dm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge2ZsdWJiZXI8aW50LCBpbnQs IHNob3J0LCBpbnQsIHNob3J0Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0r ICAgIGZsdWJiZXIKLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIGxvbmc+fSBc Ci0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlcgotK2FkZCB7Zmx1 YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgY2hhcj59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBc Ci0rICAgIC0gXAotKyAgICBmbHViYmVyCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBzaG9ydCwg c2hvcnQsIGludD59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHVi YmVyCi0rYWRkIHtmbHViYmVyPHNob3J0LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0Pn0gXAotKyAg ICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge2ZsdWJiZXI8 bG9uZywgc2hvcnQsIGxvbmcsIHNob3J0LCBsb25nPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwK LSsgICAgLSBcCi0rICAgIGZsdWJiZXIKLSthZGQge3RjbGFzczxiYXNlPjo6ZG9fc29tZXRoaW5n fSBcCi0rICAgIHt2b2lkICh0Y2xhc3M8YmFzZT4gKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAg IHt0Y2xhc3M8VD46OmRvX3NvbWV0aGluZ30KLSthZGQge3BvbGljeTE6OnBvbGljeX0gXAotKyAg ICBbY3RvciAicG9saWN5PGludCwgb3BlcmF0aW9uXzE8dm9pZCo+ID4iICJpbnQiXSBcCi0rICAg IHtwb2xpY3k8aW50LCBvcGVyYXRpb25fMTx2b2lkKj4gPjo6cG9saWN5fSBcCi0rICAgIHtwb2xp Y3k8VCwgUG9saWN5Pjo6cG9saWN5fQotK2FkZCB7cG9saWN5Mjo6cG9saWN5fSBcCi0rICAgIFtj dG9yICJwb2xpY3k8aW50LCBvcGVyYXRpb25fMjx2b2lkKj4gPiIgaW50XSBcCi0rICAgIHtwb2xp Y3k8aW50LCBvcGVyYXRpb25fMjx2b2lkKj4gPjo6cG9saWN5fSBcCi0rICAgIHtwb2xpY3k8VCwg UG9saWN5Pjo6cG9saWN5fQotK2FkZCB7cG9saWN5Mzo6cG9saWN5fSBcCi0rICAgIFtjdG9yICJw b2xpY3k8aW50LCBvcGVyYXRpb25fMzx2b2lkKj4gPiIgImludCJdIFwKLSsgICAge3BvbGljeTxp bnQsIG9wZXJhdGlvbl8zPHZvaWQqPiA+Ojpwb2xpY3l9IFwKLSsgICAge3BvbGljeTxULCBQb2xp Y3k+Ojpwb2xpY3l9Ci0rYWRkIHtwb2xpY3k0Ojpwb2xpY3l9IFwKLSsgICAgW2N0b3IgInBvbGlj eTxpbnQsIG9wZXJhdGlvbl80PHZvaWQqPiA+IiAiaW50Il0gXAotKyAgICB7cG9saWN5PGludCwg b3BlcmF0aW9uXzQ8dm9pZCo+ID46OnBvbGljeX0gXAotKyAgICB7cG9saWN5PFQsIFBvbGljeT46 OnBvbGljeX0KLSthZGQge3BvbGljeTE6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0g XAotKyAgICB7b3BlcmF0aW9uXzE8dm9pZCo+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9u XzE8VD46OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5Mjo6ZnVuY3Rpb259IFwKLSsgICAge3ZvaWQg KHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25fMjx2b2lkKj46OmZ1bmN0aW9ufSBcCi0rICAgIHtv cGVyYXRpb25fMjxUPjo6ZnVuY3Rpb259Ci0rYWRkIHtwb2xpY3kzOjpmdW5jdGlvbn0gXAotKyAg ICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29wZXJhdGlvbl8zPHZvaWQqPjo6ZnVuY3Rpb259IFwK LSsgICAge29wZXJhdGlvbl8zPFQ+OjpmdW5jdGlvbn0KLSthZGQge3BvbGljeTQ6OmZ1bmN0aW9u fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzQ8dm9pZCo+OjpmdW5j dGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzQ8VD46OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5ZDxp bnQsIG9wZXJhdGlvbl8xPGludD4gPjo6cG9saWN5ZH0gXAotKyAgICBbY3RvciAicG9saWN5ZDxp bnQsIG9wZXJhdGlvbl8xPGludD4gPiIgImludCJdIFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lk PFQsIFBvbGljeT46OnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkMTo6cG9saWN5ZH0gXAotKyAgICBb Y3RvciAicG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPiIgImludCJdIFwKLSsgICAge3Bv bGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID46OnBvbGljeWR9IFwKLSsgICAge3BvbGljeWQ8 VCwgUG9saWN5Pjo6cG9saWN5ZH0KLSthZGQge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ ID46On5wb2xpY3lkfSBcCi0rICAgIFtkdG9yICJwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50 PiA+Il0gXAotKyAgICAtIFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9Ci0r YWRkIHtwb2xpY3lkMTo6fnBvbGljeWR9IFwKLSsgICAgW2R0b3IgInBvbGljeWQ8aW50LCBvcGVy YXRpb25fMTxpbnQ+ID4iXSBcCi0rICAgIHtwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+ Ojp+cG9saWN5ZH0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0KLSthZGQg e3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6cG9saWN5ZH0gXAotKyAgICBbY3Rv ciAicG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+IiAibG9uZyJdIFwKLSsgICAgLSBc Ci0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkMjo6cG9s aWN5ZH0gXAotKyAgICBbY3RvciAicG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+IiAi bG9uZyJdIFwKLSsgICAge3BvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6cG9saWN5 ZH0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfQotK2FkZCB7cG9saWN5ZDxs b25nLCBvcGVyYXRpb25fMTxsb25nPiA+Ojp+cG9saWN5ZH0gXAotKyAgICBbZHRvciAicG9saWN5 ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+Il0gXAotKyAgICAtIFwKLSsgICAge3BvbGljeWQ8 VCwgUG9saWN5Pjo6fnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkMjo6fnBvbGljeWR9IFwKLSsgICAg W2R0b3IgInBvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPiJdIFwKLSsgICAge3BvbGlj eWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPjo6fnBvbGljeWR9IFwKLSsgICAge3BvbGljeWQ8 VCwgUG9saWN5Pjo6fnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNo YXI+ID46OnBvbGljeWR9IFwKLSsgICAgW2N0b3IgInBvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8 Y2hhcj4gPiIgImNoYXIiXSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpw b2xpY3lkfQotK2FkZCB7cG9saWN5ZDM6OnBvbGljeWR9IFwKLSsgICAgW2N0b3IgInBvbGljeWQ8 Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPiIgImNoYXIiXSBcCi0rICAgIHtwb2xpY3lkPGNoYXIs IG9wZXJhdGlvbl8xPGNoYXI+ID46OnBvbGljeWR9IFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5 Pjo6cG9saWN5ZH0KLSthZGQge3BvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPjo6fnBv bGljeWR9IFwKLSsgICAgW2R0b3IgInBvbGljeWQ8Y2hhciwgb3BlcmF0aW9uXzE8Y2hhcj4gPiJd IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfQotK2FkZCB7 cG9saWN5ZDM6On5wb2xpY3lkfSBcCi0rICAgIFtkdG9yICJwb2xpY3lkPGNoYXIsIG9wZXJhdGlv bl8xPGNoYXI+ID4iXSBcCi0rICAgIHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNoYXI+ID46 On5wb2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfQotK2FkZCB7 cG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+Ojpwb2xpY3lkfSBcCi0rICAgIFtjdG9y ICJwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4iICJiYXNlIl0gXAotKyAgICAtIFwK LSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0KLSthZGQge3BvbGljeWQ0Ojpwb2xp Y3lkfSBcCi0rICAgIFtjdG9yICJwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4iICJi YXNlIl0gXAotKyAgICB7cG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+Ojpwb2xpY3lk fSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkPGJh c2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46On5wb2xpY3lkfSBcCi0rICAgIFtkdG9yICJwb2xpY3lk PGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4iXSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxU LCBQb2xpY3k+Ojp+cG9saWN5ZH0KLSthZGQge3BvbGljeWQ0Ojp+cG9saWN5ZH0gXAotKyAgICBb ZHRvciAicG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+Il0gXAotKyAgICB7cG9saWN5 ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+Ojp+cG9saWN5ZH0gXAotKyAgICB7cG9saWN5ZDxU LCBQb2xpY3k+Ojp+cG9saWN5ZH0KLSthZGQge3BvbGljeWQ8dGNsYXNzPGludD4sIG9wZXJhdGlv bl8xPHRjbGFzczxpbnQ+ID4gPjo6cG9saWN5ZH0gXAotKyAgICBbY3RvciAicG9saWN5ZDx0Y2xh c3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+IiAidGNsYXNzPGludD4iXSBcCi0r ICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfQotK2FkZCB7cG9saWN5 ZDU6OnBvbGljeWR9IFwKLSsgICAgW2N0b3IgInBvbGljeWQ8dGNsYXNzPGludD4sIG9wZXJhdGlv bl8xPHRjbGFzczxpbnQ+ID4gPiIgInRjbGFzczxpbnQ+Il0gXAotKyAgICB7cG9saWN5ZDx0Y2xh c3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Ojpwb2xpY3lkfSBcCi0rICAgIHtw b2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9Ci0rYWRkIHtwb2xpY3lkPHRjbGFzczxpbnQ+LCBv cGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID46On5wb2xpY3lkfSBcCi0rICAgIFtkdG9yICJwb2xp Y3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID4iXSBcCi0rICAgIC0g XAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0KLSthZGQge3BvbGljeWQ1Ojp+ cG9saWN5ZH0gXAotKyAgICBbZHRvciAicG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8 dGNsYXNzPGludD4gPiA+Il0gXAotKyAgICB7cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9u XzE8dGNsYXNzPGludD4gPiA+Ojp+cG9saWN5ZH0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+ Ojp+cG9saWN5ZH0KLSthZGQge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID46OmZ1bmN0 aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8aW50Pjo6ZnVu Y3Rpb259XAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5ZDE6 OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8aW50 Pjo6ZnVuY3Rpb259IFwKLSsgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0KLSthZGQge3Bv bGljeWQyOjpmdW5jdGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29wZXJhdGlv bl8xPGxvbmc+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufQot K2FkZCB7cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+OjpmdW5jdGlvbn0gXAotKyAg ICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29wZXJhdGlvbl8xPGNoYXI+OjpmdW5jdGlvbn0gXAot KyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5ZDM6OmZ1bmN0aW9u fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8Y2hhcj46OmZ1bmN0 aW9ufSBcCi0rICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb259Ci0rYWRkIHtwb2xpY3lkPGJh c2UsIG9wZXJhdGlvbl8xPGJhc2U+ID46OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0g XAotKyAgICB7b3BlcmF0aW9uXzE8YmFzZT46OmZ1bmN0aW9ufSBcCi0rICAgIHtvcGVyYXRpb25f MTxUPjo6ZnVuY3Rpb259Ci0rYWRkIHtwb2xpY3lkNDo6ZnVuY3Rpb259IFwKLSsgICAge3ZvaWQg KHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25fMTxiYXNlPjo6ZnVuY3Rpb259IFwKLSsgICAge29w ZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0KLSthZGQge3BvbGljeWQ8dGNsYXNzPGludD4sIG9wZXJh dGlvbl8xPHRjbGFzczxpbnQ+ID4gPjo6ZnVuY3Rpb259IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBc Ci0rICAgIHtvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+OjpmdW5jdGlvbn0gXAotKyAgICB7b3Bl cmF0aW9uXzE8VD46OmZ1bmN0aW9ufQotK2FkZCB7cG9saWN5ZDU6OmZ1bmN0aW9ufSBcCi0rICAg IHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPjo6ZnVuY3Rp b259IFwKLSsgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0KLSsKLSsjIFN0YXJ0IHRoZSB0 ZXN0Ci0raWYgeyR0cmFjZWxldmVsfSB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsK LStpZiB7W3NraXBfY3BsdXNfdGVzdHNdfSB7IGNvbnRpbnVlIH0KLSsKLSsjCi0rIyB0ZXN0IHJ1 bm5pbmcgcHJvZ3JhbXMKLSsjCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwotK3Nl dCB0ZXN0ZmlsZSAiY3BleHBycyIKLStzZXQgc3JjZmlsZSAiJHt0ZXN0ZmlsZX0uY2MiCi0rc2V0 IGJpbmZpbGUgW2ZpbGUgam9pbiAkb2JqZGlyICRzdWJkaXIgJHRlc3RmaWxlXQotKwotK2lmICB7 W2dkYl9jb21waWxlIFtmaWxlIGpvaW4gJHNyY2RpciAkc3ViZGlyICRzcmNmaWxlXSAkYmluZmls ZSBcCi0rCSAgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVk ICIkdGVzdGZpbGUuZXhwIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYge1tnZXRfY29tcGls ZXJfaW5mbyAkYmluZmlsZSAiYysrIl19IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9l eGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgW2ZpbGUgam9pbiAkc3JjZGly ICRzdWJkaXJdCi0rZ2RiX2xvYWQgJGJpbmZpbGUKLSsKLStpZiB7IVtydW50b19tYWluXX0gewot KyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IgotKyAgICBjb250aW51ZQot K30KLSsKLSsjIFNldCB0aGUgbGlzdHNpemUgdG8gb25lLiBUaGlzIHdpbGwgaGVscCB3aXRoIHRl c3RpbmcgImxpc3QiLgotK2dkYl90ZXN0ICJzZXQgbGlzdHNpemUgMSIKLSsKLSsjICJwcmludCBN RVRIT0QiCi0rZm9yZWFjaCBuYW1lIFtnZXRfZnVuY3Rpb25zIHByaW50XSB7Ci0rICAgIGdkYl90 ZXN0ICJwcmludCAkbmFtZSIgW2dldCAkbmFtZSBwcmludF0gInByaW50ICRuYW1lIgotK30KLSsK LSsjICJsaXN0IE1FVEhPRCIKLStmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlvbnMgbGlzdF0gewot KyAgICBnZGJfdGVzdCAibGlzdCAkbmFtZSIgW2dldCAkbmFtZSBsaXN0XSAibGlzdCAkbmFtZSIK LSt9Ci0rCi0rIyBSdW5uaW5nIHRvIGJyZWFrcG9pbnQgLS0gdXNlIGFueSBmdW5jdGlvbiB3ZSBj YW4gImxpc3QiCi0rZm9yZWFjaCBuYW1lIFtnZXRfZnVuY3Rpb25zIGxpc3RdIHsKLSsgICAgIyBT a2lwICJtYWluIiwgc2luY2UgdGVzdF9icmVha3BvaW50IHVzZXMgaXQKLSsgICAgaWYge1tzdHJp bmcgY29tcGFyZSAkbmFtZSAibWFpbiJdICE9IDB9IHsKLSsJdGVzdF9icmVha3BvaW50ICRuYW1l Ci0rICAgIH0KLSt9Ci0rCi0rZ2RiX2V4aXQKLStyZXR1cm4gMAotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1 c2Z1bmNzLmNjCi1pbmRleCBmNGY3OGE2Li4xMWRiYTA2IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5jYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3Bs dXNmdW5jcy5jYwotQEAgLTE5NSw2ICsxOTUsMTIgQEAgY2hhciAqCWRtX3R5cGVfY2hhcl9zdGFy IChjaGFyICogcCkJCXsgcmV0dXJuIHA7IH0KLSBpbnQJZG1fdHlwZV9mb29fcmVmIChmb28gJiBm b28pCQl7IHJldHVybiBmb28uaWZvbzsgfQotIGludCAqCWRtX3R5cGVfaW50X3N0YXIgKGludCAq IHApCQl7IHJldHVybiBwOyB9Ci0gbG9uZyAqCWRtX3R5cGVfbG9uZ19zdGFyIChsb25nICogcCkJ CXsgcmV0dXJuIHA7IH0KLStpbnQJZG1fdHlwZV9zaG9ydCAoc2hvcnQgaSkJCQl7IHJldHVybiBp OyB9Ci0raW50CWRtX3R5cGVfbG9uZyAobG9uZyBpKQkJCXsgcmV0dXJuIGk7IH0KLSBpbnQJZG1f dHlwZV91bnNpZ25lZF9pbnQgKHVuc2lnbmVkIGludCBpKQl7IHJldHVybiBpOyB9Ci0raW50CWRt X3R5cGVfdW5zaWduZWRfc2hvcnQgKHVuc2lnbmVkIHNob3J0IGkpCXsgcmV0dXJuIGk7IH0KLStp bnQJZG1fdHlwZV91bnNpZ25lZF9sb25nICh1bnNpZ25lZCBsb25nIGkpCXsgcmV0dXJuIGk7IH0K LSBpbnQJZG1fdHlwZV92b2lkICh2b2lkKQkJCXsgcmV0dXJuIDA7IH0KLSB2b2lkICoJZG1fdHlw ZV92b2lkX3N0YXIgKHZvaWQgKiBwKQkJeyByZXR1cm4gcDsgfQotK3R5cGVkZWYgaW50IG15aW50 OwotK2ludAlkbV90eXBlX3R5cGVkZWYgKG15aW50IGkpCQl7IHJldHVybiBpOyB9Ci1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9jcGx1c2Z1bmNzLmV4cAotaW5kZXggZjMyMjU4Ni4uNDQzYWY3YSAxMDA2NDQKLS0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuZXhwCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmV4cAotQEAgLTY2LDkgKzY2LDI1IEBAIHNldCBkbV90eXBl X3Vuc2lnbmVkX2ludAkidW5zaWduZWQiCi0gc2V0IGRtX3R5cGVfdm9pZAkJInZvaWQiCi0gc2V0 IGRtX3R5cGVfdm9pZF9zdGFyCQkidm9pZCoiCi0gCi0rIyBTb21lIG90aGVyIHZhZ2FyaWVzIG9m IEdEQidzIHR5cGUgcHJpbnRpbmcgbWFjaGluZXJ5LiAgVGhlIGludGVnZXIgdHlwZXMKLSsjIG1h eSBoYXZlIHVuc2lnbmVkIGJlZm9yZSBvciBhZnRlciB0aGVpciBsZW5ndGgsIGFuZCBtYXkgaGF2 ZSAiaW50IgotKyMgYXBwZW5kZWQuICBUaGUgY2hhciogY29udmVyc2lvbiBvcGVyYXRvciBtYXkg aGF2ZSBuYW1lICJjaGFyKiIgZXZlbiBpZgotKyMgdGhlIHR5cGUgaXMgImNoYXIgKiIsIGJlY2F1 c2UgdGhlIG5hbWUgY29tZXMgZnJvbSB0aGUgZGVidWcgaW5mb3JtYXRpb24KLSsjIGFuZCB0aGUg dHlwZSBmcm9tIEdEQi4gIEZ1bmN0aW9uIHR5cGVzIG1heSBub3Qgc2VlIHRocm91Z2ggdHlwZWRl ZnMuCi0rCi0rc2V0IGRtX3R5cGVfc2hvcnQJCSJzaG9ydCIKLStzZXQgZG1fdHlwZV9sb25nCQki bG9uZyIKLStzZXQgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAkidW5zaWduZWQgc2hvcnQiCi0rc2V0 IGRtX3R5cGVfdW5zaWduZWRfbG9uZwkidW5zaWduZWQgbG9uZyIKLStzZXQgZG1fb3BlcmF0b3Jf Y2hhcl9zdGFyCSJjaGFyKiIKLStzZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFyX3F1b3RlZAkiY2hh clxcKiIKLStzZXQgZG1fdHlwZV90eXBlZGVmCQkwCi0rCi0gcHJvYyBwcm9iZV9kZW1hbmdsZXIg eyB9IHsKLSAgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSAgICAgZ2xvYmFsIGRtX29wZXJhdG9yX2Nv bW1hCi0rICAgIGdsb2JhbCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIKLSsgICAgZ2xvYmFsIGRtX29w ZXJhdG9yX2NoYXJfc3Rhcl9xdW90ZWQKLSAgICAgZ2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyCi0g ICAgIGdsb2JhbCBkbV90eXBlX2NoYXJfc3Rhcl9xdW90ZWQKLSAgICAgZ2xvYmFsIGRtX3R5cGVf Zm9vX3JlZgotQEAgLTc3LDYgKzkzLDExIEBAIHByb2MgcHJvYmVfZGVtYW5nbGVyIHsgfSB7Ci0g ICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2ludAotICAgICBnbG9iYWwgZG1fdHlwZV92b2lk Ci0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWRfc3RhcgotKyAgICBnbG9iYWwgZG1fdHlwZV9zaG9y dAotKyAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAotKyAgICBnbG9iYWwgZG1fdHlw ZV9sb25nCi0rICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcKLSsgICAgZ2xvYmFsIGRt X3R5cGVfdHlwZWRlZgotIAotICAgICBzZW5kX2dkYiAicHJpbnQgJmZvbzo6b3BlcmF0b3IsKGZv byYpXG4iCi0gICAgIGdkYl9leHBlY3QgewotQEAgLTk3LDYgKzExOCwyNiBAQCBwcm9jIHByb2Jl X2RlbWFuZ2xlciB7IH0gewotIAl9Ci0gICAgIH0KLSAKLSsgICAgc2VuZF9nZGIgInByaW50ICZm b286Om9wZXJhdG9yIGNoYXIqKCRkbV90eXBlX3ZvaWQpXG4iCi0rICAgIGdkYl9leHBlY3Qgewot KwktcmUgIi4qZm9vOjpvcGVyYXRvciBjaGFyIFxcKlxcKHZvaWRcXCkuKlxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCSAgICAjIHYyIGRlbWFuZ2xlciBvciBHREIgdHlwZSBwcmludGVyCi0rCSAgICBz ZXQgZG1fb3BlcmF0b3JfY2hhcl9zdGFyICJjaGFyICoiCi0rCSAgICBzZXQgZG1fb3BlcmF0b3Jf Y2hhcl9zdGFyX3F1b3RlZCAiY2hhciBcXCoiCi0rCSAgICBwYXNzICJkZXRlY3QgZG1fb3BlcmF0 b3JfY2hhcl9zdGFyIgotKwl9Ci0rCS1yZSAiLipmb286Om9wZXJhdG9yIGNoYXJcXCpcXChcXCku KlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIHYzIGRlbWFuZ2xlcgotKwkgICAgcGFzcyAi ZGV0ZWN0IGRtX29wZXJhdG9yX2NoYXJfc3RhciIKLSsJfQotKwktcmUgIi4qJGdkYl9wcm9tcHQg JCIgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX29wZXJhdG9yX2NoYXJfc3RhciIKLSsJfQotKwl0 aW1lb3V0IHsKLSsJICAgIGZhaWwgImRldGVjdCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIiCi0rCX0K LSsgICAgfQotKwotICAgICBzZW5kX2dkYiAicHJpbnQgJmRtX3R5cGVfY2hhcl9zdGFyXG4iCi0g ICAgIGdkYl9leHBlY3QgewotIAktcmUgIi4qZG1fdHlwZV9jaGFyX3N0YXJcXChjaGFyIFxcKlxc KS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLUBAIC0xNjYsNiArMjA3LDExIEBAIHByb2MgcHJvYmVf ZGVtYW5nbGVyIHsgfSB7Ci0gCSAgICAjIHYzIGRlbWFuZ2xlcgotIAkgICAgcGFzcyAiZGV0ZWN0 IGRtX3R5cGVfbG9uZ19zdGFyIgotIAl9Ci0rCS1yZSAiLipkbV90eXBlX2xvbmdfc3RhclxcKGxv bmcgaW50IFxcKlxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgR0NDIHYzIGFuZCBH REIncyB0eXBlIHByaW50ZXIKLSsJICAgIHNldCBkbV90eXBlX2xvbmdfc3RhciAibG9uZyBpbnQg KiIKLSsJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX2xvbmdfc3RhciIKLSsJfQotIAktcmUgIi4q JGdkYl9wcm9tcHQgJCIgewotIAkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfbG9uZ19zdGFyIgot IAl9Ci1AQCAtMjMwLDYgKzI3NiwxMDEgQEAgcHJvYyBwcm9iZV9kZW1hbmdsZXIgeyB9IHsKLSAJ ICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3ZvaWRfc3RhciAodGltZW91dCkiCi0gCX0KLSAgICAg fQotKwotKyAgICBzZW5kX2dkYiAicHJpbnQgJmRtX3R5cGVfc2hvcnRcbiIKLSsgICAgZ2RiX2V4 cGVjdCB7Ci0rCS1yZSAiLipkbV90eXBlX3Nob3J0XFwoc2hvcnRcXCkuKlxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCSAgICAjIHYyIGFuZCB2MyBkZW1hbmdsZXJzCi0rCSAgICBwYXNzICJkZXRlY3Qg ZG1fdHlwZV9zaG9ydCIKLSsJfQotKwktcmUgIi4qZG1fdHlwZV9zaG9ydFxcKHNob3J0IGludFxc KS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgR0RCIHR5cGUgcHJpbnRlcgotKwkgICAg c2V0IGRtX3R5cGVfc2hvcnQgInNob3J0IGludCIKLSsJICAgIHBhc3MgImRldGVjdCBkbV90eXBl X3Nob3J0IgotKwl9Ci0rCS1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBmYWlsICJkZXRl Y3QgZG1fdHlwZV9zaG9ydCIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgImRldGVjdCBk bV90eXBlX3Nob3J0ICh0aW1lb3V0KSIKLSsJfQotKyAgICB9Ci0rCi0rICAgIHNlbmRfZ2RiICJw cmludCAmZG1fdHlwZV91bnNpZ25lZF9zaG9ydFxuIgotKyAgICBnZGJfZXhwZWN0IHsKLSsJLXJl ICIuKmRtX3R5cGVfdW5zaWduZWRfc2hvcnRcXCh1bnNpZ25lZCBzaG9ydFxcKS4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJICAgICMgdjIgYW5kIHYzIGRlbWFuZ2xlcnMKLSsJICAgIHBhc3MgImRl dGVjdCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0IgotKwl9Ci0rCS1yZSAiLipkbV90eXBlX3Vuc2ln bmVkX3Nob3J0XFwoc2hvcnQgdW5zaWduZWQgaW50XFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewot KwkgICAgIyBHREIgdHlwZSBwcmludGVyCi0rCSAgICBzZXQgZG1fdHlwZV91bnNpZ25lZF9zaG9y dCAic2hvcnQgdW5zaWduZWQgaW50IgotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWdu ZWRfc2hvcnQiCi0rCX0KLSsJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIGZhaWwgImRl dGVjdCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0IgotKwl9Ci0rCXRpbWVvdXQgewotKwkgICAgZmFp bCAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQgKHRpbWVvdXQpIgotKwl9Ci0rICAgIH0K LSsKLSsgICAgc2VuZF9nZGIgInByaW50ICZkbV90eXBlX2xvbmdcbiIKLSsgICAgZ2RiX2V4cGVj dCB7Ci0rCS1yZSAiLipkbV90eXBlX2xvbmdcXChsb25nXFwpLipcclxuJGdkYl9wcm9tcHQgJCIg ewotKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycwotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5 cGVfbG9uZyIKLSsJfQotKwktcmUgIi4qZG1fdHlwZV9sb25nXFwobG9uZyBpbnRcXCkuKlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIEdEQiB0eXBlIHByaW50ZXIKLSsJICAgIHNldCBkbV90 eXBlX2xvbmcgImxvbmcgaW50IgotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfbG9uZyIKLSsJ fQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVf bG9uZyIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX2xvbmcg KHRpbWVvdXQpIgotKwl9Ci0rICAgIH0KLSsKLSsgICAgc2VuZF9nZGIgInByaW50ICZkbV90eXBl X3Vuc2lnbmVkX2xvbmdcbiIKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiLipkbV90eXBlX3Vu c2lnbmVkX2xvbmdcXCh1bnNpZ25lZCBsb25nXFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkg ICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycwotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5z aWduZWRfbG9uZyIKLSsJfQotKwktcmUgIi4qZG1fdHlwZV91bnNpZ25lZF9sb25nXFwobG9uZyB1 bnNpZ25lZCBpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIEdEQiB0eXBlIHBy aW50ZXIKLSsJICAgIHNldCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcgImxvbmcgdW5zaWduZWQgaW50 IgotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIKLSsJfQotKwktcmUg Ii4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRf bG9uZyIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3Vuc2ln bmVkX2xvbmcgKHRpbWVvdXQpIgotKwl9Ci0rICAgIH0KLSsKLSsgICAgc2VuZF9nZGIgInByaW50 ICZkbV90eXBlX3R5cGVkZWZcbiIKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiLipkbV90eXBl X3R5cGVkZWZcXChpbnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIHYyIGFuZCB2 MyBkZW1hbmdsZXJzCi0rCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV90eXBlZGVmIgotKwl9Ci0r CS1yZSAiLipkbV90eXBlX3R5cGVkZWZcXChteWludFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsJICAgICMgR0RCIHR5cGUgcHJpbnRlcgotKwkgICAgc2V0IGRtX3R5cGVfdHlwZWRlZiAxCi0r CSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV90eXBlZGVmIgotKwl9Ci0rCS1yZSAiLiokZ2RiX3By b21wdCAkIiB7Ci0rCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV90eXBlZGVmIgotKwl9Ci0rCXRp bWVvdXQgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdHlwZWRlZiAodGltZW91dCkiCi0r CX0KLSsgICAgfQotIH0KLSAKLSAjCi1AQCAtMzUxLDggKzQ5Miw5IEBAIHByb2MgcHJpbnRfYWRk ciB7IG5hbWUgfSB7Ci0gCi0gcHJvYyB0ZXN0X2xvb2t1cF9vcGVyYXRvcl9mdW5jdGlvbnMge30g ewotICAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY29tbWEKLSsgICAgZ2xvYmFsIGRtX29wZXJhdG9y X2NoYXJfc3RhcgotICAgICBnbG9iYWwgZG1fdHlwZV9jaGFyX3N0YXIKLS0gICAgZ2xvYmFsIGRt X3R5cGVfY2hhcl9zdGFyX3F1b3RlZAotKyAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY2hhcl9zdGFy X3F1b3RlZAotICAgICBnbG9iYWwgZG1fdHlwZV9mb29fcmVmCi0gICAgIGdsb2JhbCBkbV90eXBl X3ZvaWQKLSAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFyCi1AQCAtNDEwLDggKzU1Miw4IEBA IHByb2MgdGVzdF9sb29rdXBfb3BlcmF0b3JfZnVuY3Rpb25zIHt9IHsKLSAKLSAgICAgaW5mb19m dW5jICJvcGVyYXRvciBpbnQoIgkiaW50IGZvbzo6b3BlcmF0b3IgaW50KCRkbV90eXBlX3ZvaWQp OyIKLSAgICAgaW5mb19mdW5jICJvcGVyYXRvcigpKCIJInZvaWQgZm9vOjpvcGVyYXRvcigpKCRk bV90eXBlX2Zvb19yZWYpOyIKLS0gICAgaW5mb19mdW5jICJvcGVyYXRvciAkZG1fdHlwZV9jaGFy X3N0YXJfcXVvdGVkXCgiIFwKLS0JCQkJImNoYXIgKmZvbzo6b3BlcmF0b3IgJGRtX3R5cGVfY2hh cl9zdGFyXCgkZG1fdHlwZV92b2lkKTsiCi0rICAgIGluZm9fZnVuYyAib3BlcmF0b3IgJGRtX29w ZXJhdG9yX2NoYXJfc3Rhcl9xdW90ZWRcKCIgXAotKwkJCQkiY2hhciAqZm9vOjpvcGVyYXRvciAk ZG1fb3BlcmF0b3JfY2hhcl9zdGFyXCgkZG1fdHlwZV92b2lkKTsiCi0gCi0gfQotIAotQEAgLTQy Niw2ICs1NjgsNyBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0b3JfZnVuY3Rpb25zIHt9IHsKLSAg ICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfaW50Ci0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWQK LSAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFyCi0rICAgIGdsb2JhbCBkbV9vcGVyYXRvcl9j aGFyX3N0YXIKLSAKLSAgICAgcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciooJGRtX3R5cGVfZm9v X3JlZikiCi0gICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IlKCRkbV90eXBlX2Zvb19yZWYp IgotQEAgLTQ3OSw3ICs2MjIsNyBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0b3JfZnVuY3Rpb25z IHt9IHsKLSAgICAgfQotIAotICAgICBwcmludF9hZGRyICJmb286Om9wZXJhdG9yIGludCgkZG1f dHlwZV92b2lkKSIKLS0gICAgcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciAkZG1fdHlwZV9jaGFy X3N0YXJcKCRkbV90eXBlX3ZvaWQpIgotKyAgICBwcmludF9hZGRyICJmb286Om9wZXJhdG9yICRk bV9vcGVyYXRvcl9jaGFyX3N0YXJcKCRkbV90eXBlX3ZvaWQpIgotIH0KLSAKLSAjCi1AQCAtNDg5 LDE3ICs2MzIsMjEgQEAgcHJvYyB0ZXN0X3BhZGRyX29wZXJhdG9yX2Z1bmN0aW9ucyB7fSB7Ci0g cHJvYyB0ZXN0X3BhZGRyX292ZXJsb2FkZWRfZnVuY3Rpb25zIHt9IHsKLSAgICAgZ2xvYmFsIGRt X3R5cGVfdW5zaWduZWRfaW50Ci0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWQKLSsgICAgZ2xvYmFs IGRtX3R5cGVfc2hvcnQKLSsgICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfc2hvcnQKLSsgICAg Z2xvYmFsIGRtX3R5cGVfbG9uZwotKyAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25lZF9sb25nCi0g Ci0gICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV92b2lkKSIKLSAgICAgcHJp bnRfYWRkciAib3ZlcmxvYWQxYXJnKGNoYXIpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFh cmcoc2lnbmVkIGNoYXIpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcodW5zaWduZWQg Y2hhcikiCi0tICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyhzaG9ydCkiCi0tICAgIHByaW50 X2FkZHIgIm92ZXJsb2FkMWFyZyh1bnNpZ25lZCBzaG9ydCkiCi0rICAgIHByaW50X2FkZHIgIm92 ZXJsb2FkMWFyZygkZG1fdHlwZV9zaG9ydCkiCi0rICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFy ZygkZG1fdHlwZV91bnNpZ25lZF9zaG9ydCkiCi0gICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFy ZyhpbnQpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoJGRtX3R5cGVfdW5zaWduZWRf aW50KSIKLS0gICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKGxvbmcpIgotLSAgICBwcmludF9h ZGRyICJvdmVybG9hZDFhcmcodW5zaWduZWQgbG9uZykiCi0rICAgIHByaW50X2FkZHIgIm92ZXJs b2FkMWFyZygkZG1fdHlwZV9sb25nKSIKLSsgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKCRk bV90eXBlX3Vuc2lnbmVkX2xvbmcpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoZmxv YXQpIgotICAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoZG91YmxlKSIKLSAKLUBAIC01MjIs MTcgKzY2OSwzMSBAQCBwcm9jIHRlc3RfcGFkZHJfaGFpcnlfZnVuY3Rpb25zIHt9IHsKLSAgICAg Z2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyCi0gICAgIGdsb2JhbCBkbV90eXBlX2ludF9zdGFyCi0g ICAgIGdsb2JhbCBkbV90eXBlX2xvbmdfc3RhcgotKyAgICBnbG9iYWwgZG1fdHlwZV90eXBlZGVm Ci0gCi0gICAgIHByaW50X2FkZHJfMiAiaGFpcnlmdW5jMSIgImhhaXJ5ZnVuYzEoaW50KSIKLS0g ICAgcHJpbnRfYWRkcl8yICJoYWlyeWZ1bmMyIiAiaGFpcnlmdW5jMihpbnQgKCopKCRkbV90eXBl X2NoYXJfc3RhcikpIgotLSAgICBwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzMiICJoYWlyeWZ1bmMz KGludCAoKikoc2hvcnQgKCopKCRkbV90eXBlX2xvbmdfc3RhcikpKSIKLS0gICAgcHJpbnRfYWRk cl8yICJoYWlyeWZ1bmM0IiAiaGFpcnlmdW5jNChpbnQgKCopKHNob3J0ICgqKSgkZG1fdHlwZV9j aGFyX3N0YXIpKSkiCi0tCi0tICAgICMgZ2RiLWduYXRzIGJ1ZyBnZGIvMTk6Ci0tICAgICMgImdk YiB2MyBkZW1hbmdsZXIgZmFpbHMgb24gaGFpcnlmdW5jNSBoYWlyeWZ1bmM2IGhhaXJ5ZnVuYzci Ci0tICAgIHByaW50X2FkZHJfMl9rZmFpbCAiaGFpcnlmdW5jNSIgImhhaXJ5ZnVuYzUoaW50ICgq KCopKCRkbV90eXBlX2NoYXJfc3RhcikpKGxvbmcpKSIgImhhaXJ5ZnVuYzUoaW50ICgqKShsb25n KSAoKikoY2hhciopKSIgImdkYi8xOSIKLS0gICAgcHJpbnRfYWRkcl8yX2tmYWlsICJoYWlyeWZ1 bmM2IiAiaGFpcnlmdW5jNihpbnQgKCooKikoJGRtX3R5cGVfaW50X3N0YXIpKShsb25nKSkiICJo YWlyeWZ1bmM2KGludCAoKikobG9uZykgKCopKGludCopKSIgImdkYi8xOSIKLS0gICAgcHJpbnRf YWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM3IiAiaGFpcnlmdW5jNyhpbnQgKCooKikoaW50ICgqKSgk ZG1fdHlwZV9jaGFyX3N0YXIpKSkobG9uZykpIiAiaGFpcnlmdW5jNyhpbnQgKCopKGxvbmcpICgq KShpbnQgKCopKGNoYXIqKSkpIiAiZ2RiLzE5IgotKwotKyAgICBpZiB7JGRtX3R5cGVfdHlwZWRl ZiA9PSAwfSB7Ci0rCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jMiIgImhhaXJ5ZnVuYzIoaW50ICgq KSgkZG1fdHlwZV9jaGFyX3N0YXIpKSIKLSsJcHJpbnRfYWRkcl8yICJoYWlyeWZ1bmMzIiAiaGFp cnlmdW5jMyhpbnQgKCopKHNob3J0ICgqKSgkZG1fdHlwZV9sb25nX3N0YXIpKSkiCi0rCXByaW50 X2FkZHJfMiAiaGFpcnlmdW5jNCIgImhhaXJ5ZnVuYzQoaW50ICgqKShzaG9ydCAoKikoJGRtX3R5 cGVfY2hhcl9zdGFyKSkpIgotKwotKwkjIGdkYi1nbmF0cyBidWcgZ2RiLzE5OgotKwkjICJnZGIg djMgZGVtYW5nbGVyIGZhaWxzIG9uIGhhaXJ5ZnVuYzUgaGFpcnlmdW5jNiBoYWlyeWZ1bmM3Igot KwlwcmludF9hZGRyXzJfa2ZhaWwgImhhaXJ5ZnVuYzUiICJoYWlyeWZ1bmM1KGludCAoKigqKSgk ZG1fdHlwZV9jaGFyX3N0YXIpKShsb25nKSkiICJoYWlyeWZ1bmM1KGludCAoKikobG9uZykgKCop KGNoYXIqKSkiICJnZGIvMTkiCi0rCXByaW50X2FkZHJfMl9rZmFpbCAiaGFpcnlmdW5jNiIgImhh aXJ5ZnVuYzYoaW50ICgqKCopKCRkbV90eXBlX2ludF9zdGFyKSkobG9uZykpIiAiaGFpcnlmdW5j NihpbnQgKCopKGxvbmcpICgqKShpbnQqKSkiICJnZGIvMTkiCi0rCXByaW50X2FkZHJfMl9rZmFp bCAiaGFpcnlmdW5jNyIgImhhaXJ5ZnVuYzcoaW50ICgqKCopKGludCAoKikoJGRtX3R5cGVfY2hh cl9zdGFyKSkpKGxvbmcpKSIgImhhaXJ5ZnVuYzcoaW50ICgqKShsb25nKSAoKikoaW50ICgqKShj aGFyKikpKSIgImdkYi8xOSIKLSsgICAgfSBlbHNlIHsKLSsJcHJpbnRfYWRkcl8yICJoYWlyeWZ1 bmMyIiAiaGFpcnlmdW5jMihQRlBjX2kpIgotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzMiICJo YWlyeWZ1bmMzKFBGUEZQbF9zX2kpIgotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzQiICJoYWly eWZ1bmM0KFBGUEZQY19zX2kpIgotKwotKwkjIGdkYi1nbmF0cyBidWcgZ2RiLzE5OgotKwkjICJn ZGIgdjMgZGVtYW5nbGVyIGZhaWxzIG9uIGhhaXJ5ZnVuYzUgaGFpcnlmdW5jNiBoYWlyeWZ1bmM3 IgotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzUiICJoYWlyeWZ1bmM1KFBGUGNfUEZsX2kpIgot KwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzYiICJoYWlyeWZ1bmM2KFBGUGlfUEZsX2kpIgotKwlw cmludF9hZGRyXzIgImhhaXJ5ZnVuYzciICJoYWlyeWZ1bmM3KFBGUEZQY19pX1BGbF9pKSIKLSsg ICAgfQotIH0KLSAKLSBwcm9jIGRvX3Rlc3RzIHt9IHsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9jdHRpLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N0dGkuZXhwCi1pbmRl eCA0NTRjNmY0Li44Zjg4YWQ3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3R0 aS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2N0dGkuZXhwCi1AQCAtODUsMTEgKzg1 LDYgQEAgZ2RiX3Rlc3QgInByaW50IGMiICJcXCRcWzAtOVxdKyA9IDE5NCAuKiIKLSBnZGJfdGVz dCAicHJpbnQgZiIgIlxcJFxbMC05XF0rID0gOSIKLSBnZGJfdGVzdCAicHJpbnQgaSIgIlxcJFxb MC05XF0rID0gNCIKLSAKLS0jIFRPRE86IHRoaXMgbmVlZHMgbW9yZSB3b3JrIGJlZm9yZSBhY3R1 YWxseSBkZXBsb3lpbmcgaXQuCi0tIyBTbyBiYWlsIG91dCBoZXJlLgotLQotLWlmIHsgWyB0ZXN0 X2NvbXBpbGVyX2luZm8gZ2NjLSpdIH0gdGhlbiB7IGNvbnRpbnVlIH0KLS0KLSBnZGJfdGVzdF9t dWx0aXBsZSAicHJpbnQgYWRkPGludD4oMiwyKSIgInByaW50IGFkZDxpbnQ+KDIsMikiIHsKLSAg ICAgLXJlICJcXCRcWzAtOVxdKyA9IDRcclxuJGdkYl9wcm9tcHQgJCIgewotIAlwYXNzICJwcmlu dCBhZGQ8aW50PigyLDIpIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2V4Y2Vw dGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leGNlcHRpb24uZXhwCi1pbmRleCA0Nzg5 MGYxLi4wM2M4ODQ3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhjZXB0aW9u LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZXhjZXB0aW9uLmV4cAotQEAgLTE0Niw3 ICsxNDYsOSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICRuYW1lIHsKLSAKLSBzZXQg bmFtZSAiYmFja3RyYWNlIGFmdGVyIGZpcnN0IHRocm93IgotIGdkYl90ZXN0X211bHRpcGxlICJi YWNrdHJhY2UiICRuYW1lIHsKLS0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClf X2N4YV90aHJvdy4qI1xbMC05XF0rJHt3c30kaGV4IGluIGZvbyBcXChpPTIwXFwpIGF0IC4qJHtz cmNmaWxlfTpcWzAtOVxdK1xyXG4jXFswLTlcXSske3dzfSRoZXggaW4gbWFpbiBcXCguKlxcKSBh dCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxuJGdkYl9wcm9tcHQgJCIgewotKyAgICAtcmUgIi4q I1xbMC05XF0rLipcW1xbOjw6XF1cXV9fY3hhX3Rocm93XFtcWzo+OlxdXF0uKiNcWzAtOVxdKyR7 d3N9JGhleCBpbiBmb28gXFwoaT0yMFxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxuI1xb MC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLioke3NyY2ZpbGV9OlxbMC05XF0r XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJIyBFaXRoZXIgX19jeHhhYml2MTo6X19jeGFfdGhyb3cg b3IgX19jeGFfdGhyb3cgY2FuIGJlIHByaW50ZWQKLSsJIyBkZXBlbmRpbmcgb24gZGVidWcgaW5m byBwcmVzZW5jZS4KLSAJcGFzcyAkbmFtZQotICAgICB9Ci0gfQotQEAgLTE2OCw3ICsxNzAsNyBA QCBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICRuYW1lIHsKLSAKLSBzZXQgbmFtZSAiYmFj a3RyYWNlIGFmdGVyIGZpcnN0IGNhdGNoIgotIGdkYl90ZXN0X211bHRpcGxlICJiYWNrdHJhY2Ui ICRuYW1lIHsKLS0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClfX2N4YV9iZWdp bl9jYXRjaC4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmls ZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIC1yZSAiLiojXFswLTlcXSsuKlxb XFs6PDpcXVxdX19jeGFfYmVnaW5fY2F0Y2hcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30kaGV4 IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAk IiB7Ci0gCXBhc3MgJG5hbWUKLSAgICAgfQotIH0KLUBAIC0xOTAsNyArMTkyLDcgQEAgZ2RiX3Rl c3RfbXVsdGlwbGUgImNvbnRpbnVlIiAkbmFtZSB7Ci0gCi0gc2V0IG5hbWUgImJhY2t0cmFjZSBh ZnRlciBzZWNvbmQgdGhyb3ciCi0gZ2RiX3Rlc3RfbXVsdGlwbGUgImJhY2t0cmFjZSIgJG5hbWUg ewotLSAgICAtcmUgIi4qI1xbMC05XF0rJHt3c30oJGhleCBpbiB8KV9fY3hhX3Rocm93LiojXFsw LTlcXSske3dzfSRoZXggaW4gZm9vIFxcKGk9MjBcXCkgYXQgLioke3NyY2ZpbGV9OlxbMC05XF0r XHJcbiNcWzAtOVxdKyR7d3N9JGhleCBpbiBtYWluIFxcKC4qXFwpIGF0IC4qJHtzcmNmaWxlfTpc WzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIC1yZSAiLiojXFswLTlcXSsuKlxbXFs6 PDpcXVxdX19jeGFfdGhyb3dcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30kaGV4IGluIGZvbyBc XChpPTIwXFwpIGF0IC4qJHtzcmNmaWxlfTpcWzAtOVxdK1xyXG4jXFswLTlcXSske3dzfSRoZXgg aW4gbWFpbiBcXCguKlxcKSBhdCAuKiR7c3JjZmlsZX06XFswLTlcXStcclxuJGdkYl9wcm9tcHQg JCIgewotIAlwYXNzICRuYW1lCi0gICAgIH0KLSB9Ci1AQCAtMjEyLDcgKzIxNCw3IEBAIGdkYl90 ZXN0X211bHRpcGxlICJjb250aW51ZSIgJG5hbWUgewotIAotIHNldCBuYW1lICJiYWNrdHJhY2Ug YWZ0ZXIgc2Vjb25kIGNhdGNoIgotIGdkYl90ZXN0X211bHRpcGxlICJiYWNrdHJhY2UiICRuYW1l IHsKLS0gICAgLXJlICIuKiNcWzAtOVxdKyR7d3N9KCRoZXggaW4gfClfX2N4YV9iZWdpbl9jYXRj aC4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1haW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAt OVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rICAgIC1yZSAiLiojXFswLTlcXSsuKlxbXFs6PDpc XVxdX19jeGFfYmVnaW5fY2F0Y2hcW1xbOj46XF1cXS4qI1xbMC05XF0rJHt3c30kaGV4IGluIG1h aW4gXFwoLipcXCkgYXQgLiokc3JjZmlsZTpcWzAtOVxdK1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0g CXBhc3MgJG5hbWUKLSAgICAgfQotIH0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9leHBhbmQtc2Fscy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAK LWluZGV4IDI1ZWM0YTkuLmU0ZmQ1OWIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9leHBhbmQtc2Fscy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2V4cGFuZC1zYWxz LmV4cAotQEAgLTQ2LDcgKzQ2LDcgQEAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNhbGxl ciIgIi4qY2FsbGVyLWxpbmUuKiIKLSAKLSAjIFRlc3QgR0RCIGNhdWdodCB0aGlzIHJldHVybiBj YWxsIGFuZCBub3QgdGhlIG5leHQgb25lIHRocm91Z2ggQjo6QigpCi0gZ2RiX3Rlc3QgImJ0IiBc Ci0tCSAiIzAgXFteXHJcblxdKiBBIFxbXlxyXG5cXSpcclxuIzEgXFteXHJcblxdKiBtYWluIFxb XlxyXG5cXSoiIFwKLSsJICIjMCBcW15cclxuXF0qIChBOjopP0EgXFteXHJcblxdKlxyXG4jMSBc W15cclxuXF0qIG1haW4gXFteXHJcblxdKiIgXAotIAkgImJ0IGZyb20gQSIKLSAKLSBnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAibmV4dCBjYWxsZXIgZnVuYyIgIi4qZnVuYy1saW5lLioiCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL2dkYjk1OTMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li43ODNjOTYyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5 NTkzLmNjCi1AQCAtMCwwICsxLDE4MCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rICAgKi8KLSsjaW5jbHVkZSA8aW9zdHJlYW0+Ci0rCi0rdXNpbmcgbmFtZXNw YWNlIHN0ZDsKLSsKLStjbGFzcyBOZXh0T3ZlclRocm93RGVyaXZhdGVzCi0rewotKwotK3B1Ymxp YzoKLSsKLSsKLSsgIC8vIFNpbmdsZSB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhpcyBmdW5jdGlv bi4KLSsgIHZvaWQgZnVuY3Rpb24xKCkgCi0rICB7Ci0rICAgIHRocm93IDIwOwotKyAgfQotKwot KyAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGluIGFub3RoZXIgZnVuY3Rpb24uCi0rICB2b2lkIGZ1 bmN0aW9uMigpIAotKyAgewotKyAgICBmdW5jdGlvbjEoKTsKLSsgIH0KLSsKLSsgIC8vIFRocm93 IGFuIGV4Y2VwdGlvbiBpbiBhbm90aGVyIGZ1bmN0aW9uLCBidXQgaGFuZGxlIGl0Ci0rICAvLyBs b2NhbGx5LgotKyAgdm9pZCBmdW5jdGlvbjMgKCkgCi0rICB7Ci0rICAgIHsKLSsgICAgICB0cnkK LSsJewotKwkgIGZ1bmN0aW9uMSAoKTsKLSsJfQotKyAgICAgIGNhdGNoICguLi4pIAotKwl7Ci0r CSAgY291dCA8PCAiQ2F1Z2h0IGFuZCBoYW5kbGVkIGZ1bmN0aW9uMSBleGNlcHRpb24iIDw8IGVu ZGw7Ci0rCX0KLSsgICAgfQotKyAgfQotKwotKyAgdm9pZCByZXRocm93ICgpCi0rICB7Ci0rICAg IHRyeQotKyAgICAgIHsKLSsJZnVuY3Rpb24xICgpOwotKyAgICAgIH0KLSsgICAgY2F0Y2ggKC4u LikKLSsgICAgICB7Ci0rCXRocm93OwotKyAgICAgIH0KLSsgIH0KLSsKLSsgIHZvaWQgZmluaXNo ICgpCi0rICB7Ci0rICAgIC8vIFdlIHVzZSB0aGlzIHRvIHRlc3QgdGhhdCBhICJmaW5pc2giIGhl cmUgZG9lcyBub3QgZW5kIHVwIGluCi0rICAgIC8vIHRoaXMgZnJhbWUsIGJ1dCBpbiB0aGUgb25l IGFib3ZlLgotKyAgICB0cnkKLSsgICAgICB7Ci0rCWZ1bmN0aW9uMSAoKTsKLSsgICAgICB9Ci0r ICAgIGNhdGNoIChpbnQgeCkKLSsgICAgICB7Ci0rICAgICAgfQotKyAgICBmdW5jdGlvbjEgKCk7 CQkvLyBtYXJrZXIgZm9yIHVudGlsCi0rICB9Ci0rCi0rICB2b2lkIHVudGlsICgpCi0rICB7Ci0r ICAgIGZ1bmN0aW9uMSAoKTsKLSsgICAgZnVuY3Rpb24xICgpOwkJLy8gdW50aWwgaGVyZQotKyAg fQotKwotK307Ci0rTmV4dE92ZXJUaHJvd0Rlcml2YXRlcyBuZXh0X2Nhc2VzOwotKwotKwotK2lu dCBtYWluICgpIAotK3sgCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rp b24xICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2Fy ZAotKyAgICB9Ci0rCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24y ICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAot KyAgICB9Ci0rCi0rICB0cnkKLSsgICAgewotKyAgICAgIC8vIFRoaXMgaXMgZHVwbGljYXRlZCBz byB3ZSBjYW4gbmV4dCBvdmVyIG9uZSBidXQgc3RlcCBpbnRvCi0rICAgICAgLy8gYW5vdGhlci4K LSsgICAgICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMiAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikK LSsgICAgewotKyAgICAgIC8vIERpc2NhcmQKLSsgICAgfQotKwotKyAgbmV4dF9jYXNlcy5mdW5j dGlvbjMgKCk7Ci0rCi0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMucmV0aHJvdyAo KTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICAgIC8vIERpc2NhcmQKLSsg ICAgfQotKwotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICAvLyBBbm90aGVyIGR1cGxpY2F0ZSBzbyB3 ZSBjYW4gdGVzdCAiZmluaXNoIi4KLSsgICAgICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMiAoKTsKLSsg ICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICAgIC8vIERpc2NhcmQKLSsgICAgfQot KwotKyAgLy8gQW5vdGhlciB0ZXN0IGZvciAiZmluaXNoIi4KLSsgIHRyeQotKyAgICB7Ci0rICAg ICAgbmV4dF9jYXNlcy5maW5pc2ggKCk7Ci0rICAgIH0KLSsgIGNhdGNoICguLi4pCi0rICAgIHsK LSsgICAgfQotKwotKyAgLy8gVGVzdCBvZiAidW50aWwiLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAg ICBuZXh0X2Nhc2VzLmZpbmlzaCAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewot KyAgICB9Ci0rCi0rICAvLyBUZXN0IG9mICJ1bnRpbCIgd2l0aCBhbiBhcmd1bWVudC4KLSsgIHRy eQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy51bnRpbCAoKTsKLSsgICAgfQotKyAgY2F0Y2gg KC4uLikKLSsgICAgewotKyAgICB9Ci0rCi0rICAvLyBUZXN0IG9mICJhZHZhbmNlIi4KLSsgIHRy eQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNlcy51bnRpbCAoKTsKLSsgICAgfQotKyAgY2F0Y2gg KC4uLikKLSsgICAgewotKyAgICB9Ci0rfQotKwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2dkYjk1OTMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lZTlhZWZmCi0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAotQEAgLTAsMCArMSwxODUg QEAKLSsjIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsKLStpZiAkdHJhY2VsZXZl bCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK2lmIHsgW3NraXBfY3Bs dXNfdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IHBybXNfaWQgOTU5MwotK3NldCBidWdf aWQgMAotKwotK3NldCB0ZXN0ZmlsZSAiZ2RiOTU5MyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5jYwotK3NldCBiaW5maWxlICRvYmpkaXIvJHN1YmRpci8kdGVzdGZpbGUKLSsKLSsjIENyZWF0 ZSBhbmQgc291cmNlIHRoZSBmaWxlIHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhl IGNvbXBpbGVyCi0rIyB1c2VkIHRvIGNvbXBpbGUgdGhlIHRlc3QgY2FzZS4KLStpZiBbZ2V0X2Nv bXBpbGVyX2luZm8gJHtiaW5maWxlfSAiYysrIl0gewotKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4 cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31d ICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rIyBTb21lIHRhcmdldHMgY2FuJ3QgZG8gZnVuY3Rpb24gY2FsbHMsIHNvIGRvbid0IGV2 ZW4gYm90aGVyIHdpdGggdGhpcwotKyMgdGVzdC4KLStpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdk YixjYW5ub3RfY2FsbF9mdW5jdGlvbnNdIHsKLSsgICAgc2V0dXBfeGZhaWwgIiotKi0qIiA5NTkz Ci0rICAgIGZhaWwgIlRoaXMgdGFyZ2V0IGNhbiBub3QgY2FsbCBmdW5jdGlvbnMiCi0rICAgIGNv bnRpbnVlCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9f bWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCi0rICAgIGNv bnRpbnVlCi0rfSAKLSsKLSsjIFNlZSB3aGV0aGVyIHdlIGhhdmUgdGhlIG5lZWRlZCB1bndpbmRl ciBob29rcy4KLStzZXQgb2sgMQotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBfVW53aW5kX0Rl YnVnSG9vayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIiB7Ci0rICAgIC1yZSAiPSAuKl9Vbndp bmRfRGVidWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICJjaGVjayBmb3IgdW53 aW5kZXIgaG9vayIKLSsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNv bnRleHQuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJIyBQYXNzIHRoZSB0ZXN0IHNvIHdlIGRvbid0 IGdldCBib2d1cyBmYWlscyBpbiB0aGUgcmVzdWx0cy4KLSsJcGFzcyAiY2hlY2sgZm9yIHVud2lu ZGVyIGhvb2siCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsKLSsgICAgdW50 ZXN0ZWQgZ2RiOTU5My5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgU2VlIGh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9OTU5MwotKwotK2dkYl90ZXN0 ICJuZXh0IiBcCi0rICAgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICAgIm5leHQgb3ZlciBhIHRo cm93IDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24y LioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggMSIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAg ICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAgICJuZXh0IG92ZXIgYSB0aHJvdyAyIgotKwotK2dk Yl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCi0rICAibmV4 dCBwYXN0IGNhdGNoIDIiCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSgp LioiIFwKLSsgICJzdGVwIGludG8gZnVuY3Rpb24yIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwK LSsgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgMyIKLSsK LStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy5mdW5jdGlvbjMuKiIgXAotKyAg Im5leHQgcGFzdCBjYXRjaCAzIgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nh c2VzLnJldGhyb3cuKiIgXAotKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgNCIKLSsKLStnZGJfdGVz dCAibmV4dCIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgIm5leHQgb3ZlciBhIHJldGhy b3ciCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioi IFwKLSsgICJuZXh0IGFmdGVyIGEgcmV0aHJvdyIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAg Ii4qZnVuY3Rpb24xKCkuKiIgXAotKyAgInN0ZXAgaW50byBmdW5jdGlvbjIgMiIKLSsKLStnZGJf dGVzdCAiZmluaXNoIiBcCi0rICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNoIDEiCi0r Ci0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioiIFwKLSsg ICJuZXh0IHBhc3QgY2F0Y2ggNCIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rp b24xICgpLioiIFwKLSsgICJzdGVwIGludG8gZmluaXNoIG1ldGhvZCIKLSsKLStnZGJfdGVzdCAi ZmluaXNoIiBcCi0rICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNoIDIiCi0rCi0rZ2Ri X3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioiIFwKLSsgICJuZXh0 IHBhc3QgY2F0Y2ggNSIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgp LioiIFwKLSsgICJzdGVwIGludG8gZmluaXNoLCBmb3IgdW50aWwiCi0rCi0rZ2RiX3Rlc3QgInVu dGlsIiBcCi0rICAiLipjYXRjaCAuaW50IHguKiIgXAotKyAgInVudGlsIHdpdGggbm8gYXJndW1l bnQgMSIKLSsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyIGZvciB1bnRp bCIgJHRlc3RmaWxlLmNjXQotKwotK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAotKyAgIi4qZnVu Y3Rpb24xICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNiIKLSsKLStnZGJfdGVzdCAidW50 aWwiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJ1bnRpbCB3aXRoIG5vIGFyZ3VtZW50 IDIiCi0rCi0rc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgInVudGlsIGhlcmUiICR0ZXN0 ZmlsZS5jY10KLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy51bnRpbCAo KS4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDYiCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsg ICIuKmZ1bmN0aW9uMSAoKS4qIiBcCi0rICAic3RlcCBpbnRvIHVudGlsIgotKwotK2dkYl90ZXN0 ICJ1bnRpbCAkbGluZSIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgInVudGlsLW92ZXIt dGhyb3ciCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRfY2FzZXMudW50aWwgKCku KiIgXAotKyAgIm5leHQgcGFzdCBjYXRjaCA3IgotKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAi LipmdW5jdGlvbjEgKCkuKiIgXAotKyAgInN0ZXAgaW50byB1bnRpbCwgZm9yIGFkdmFuY2UiCi0r Ci0rZ2RiX3Rlc3QgImFkdmFuY2UgJGxpbmUiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsg ICJhZHZhbmNlLW92ZXItdGhyb3ciCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bS1zdGF0aWMuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tLXN0YXRpYy5jYwotaW5kZXggMmEw YjYxYy4uN2Y5OTdlZiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20tc3RhdGlj LmNjCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tLXN0YXRpYy5jYwotQEAgLTE1LDYgKzE1 LDEyIEBAIHByb3RlY3RlZDoKLSAKLSBwdWJsaWM6Ci0gICBnbnVfb2JqXzEoYW50aXF1aXRpZXMg YSwgbG9uZyBsKSB7fQotKwotKyAgbG9uZyBtZXRob2QgKCkKLSsgIHsKLSsgICAgc3RhdGljIGJv b2wgc3ZhciA9IHRydWU7Ci0rICAgIHJldHVybiBrZXkyOwotKyAgfQotIH07Ci0gCi0gY29uc3Qg Ym9vbCBnbnVfb2JqXzE6OnRlc3Q7Ci1AQCAtNzAsNSArNzYsOCBAQCBpbnQgbWFpbigpCi0gCi0g ICB0ZXN0NC5kdW1teSA9IHRlc3Q0LmVsc2V3aGVyZTsKLSAgIHRlc3Q0LmR1bW15ID0gMDsKLS0g IHJldHVybiB0ZXN0NC5kdW1teTsJLy8gYnJlYWtwb2ludDogY29uc3RydWN0cy1kb25lCi0rCi0r ICB0ZXN0MS5tZXRob2QgKCk7IC8vIGJyZWFrcG9pbnQ6IGNvbnN0cnVjdHMtZG9uZQotKwotKyAg cmV0dXJuIHRlc3Q0LmR1bW15OwotIH0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9tLXN0YXRpYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tLXN0YXRpYy5leHAKLWluZGV4 IGYyMDc0NjIuLjdiNGUwY2EgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tLXN0 YXRpYy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL20tc3RhdGljLmV4cAotQEAgLTEz Miw1ICsxMzIsMTAgQEAgZ2RiX3Rlc3QgInByaW50IHRlc3Q0Lm5vd2hlcmUiICJmaWVsZCBub3do ZXJlIGlzIG5vbmV4aXN0ZW50IG9yIGhhcyBiZWVuIG9wdGltaXMKLSAjIHRoYXQgR0RCJ3MgY3Vy cmVudCBiZWhhdmlvciBpbiBzdWNoIHNpdHVhdGlvbnMgaXMgZWl0aGVyIGNvbnNpc3RlbnQKLSAj IGFjcm9zcyBwbGF0Zm9ybXMgb3Igb3B0aW1hbCwgc28gSSdtIG5vdCBpbmNsdWRpbmcgb25lIG5v dy4KLSAKLSsjIFN0ZXAgaW50byB0ZXN0MS5tZXRob2QgYW5kIGV4YW1pbmUgdGhlIG1ldGhvZC1z Y29wZWQgc3RhdGljLgotKyMgVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgUFIgOTcwOC4K LStnZGJfdGVzdCAic3RlcCIgImdudV9vYmpfMTo6bWV0aG9kLioiCi0rZ2RiX3Rlc3QgInByaW50 IHN2YXIiICIgPSB0cnVlIgotKwotIGdkYl9leGl0Ci0gcmV0dXJuIDAKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRyLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bWVtYmVyLXB0ci5jYwotaW5kZXggZmZmZmI0Yy4uYjQwNmE1OSAxMDA2NDQKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L21lbWJlci1wdHIuY2MKLUBAIC0xMzgsNiArMTM4LDcgQEAgY2xhc3MgRGlhbW9uZCA6IHB1Ymxp YyBQYWRkaW5nLCBwdWJsaWMgTGVmdCwgcHVibGljIFJpZ2h0Ci0gewotIHB1YmxpYzoKLSAgIHZp cnR1YWwgaW50IHZnZXRfYmFzZSAoKTsKLSsgIGludCAoKmZ1bmNfcHRyKSAoaW50KTsKLSB9Owot IAotIGludCBEaWFtb25kOjp2Z2V0X2Jhc2UgKCkKLUBAIC0xNDUsNiArMTQ2LDEyIEBAIGludCBE aWFtb25kOjp2Z2V0X2Jhc2UgKCkKLSAgIHJldHVybiB0aGlzLT5MZWZ0Ojp4ICsgMjAwMDsKLSB9 Ci0gCi0raW50Ci0rZnVuYyAoaW50IHgpCi0rewotKyAgcmV0dXJuIDE5ICsgeDsKLSt9Ci0rCi0g aW50IG1haW4gKCkKLSB7Ci0gICBBIGE7Ci1AQCAtMTYyLDYgKzE2OSw3IEBAIGludCBtYWluICgp Ci0gICBpbnQgKERpYW1vbmQ6OipyaWdodF92cG1mKSAoKTsKLSAgIGludCAoQmFzZTo6KmJhc2Vf dnBtZikgKCk7Ci0gICBpbnQgRGlhbW9uZDo6KmRpYW1vbmRfcG1pOwotKyAgaW50ICgqIERpYW1v bmQ6OipkaWFtb25kX3BmdW5jX3B0cikgKGludCk7Ci0gCi0gICBQTUkgbnVsbF9wbWk7Ci0gICBQ TUYgbnVsbF9wbWY7Ci1AQCAtMTc5LDYgKzE4Nyw3IEBAIGludCBtYWluICgpCi0gCi0gICBkaWFt b25kLkxlZnQ6OnggPSA3NzsKLSAgIGRpYW1vbmQuUmlnaHQ6OnggPSA4ODsKLSsgIGRpYW1vbmQu ZnVuY19wdHIgPSBmdW5jOwotIAotICAgLyogU29tZSB2YWxpZCBwb2ludGVyIHRvIG1lbWJlcnMg ZnJvbSBhIGJhc2UgY2xhc3MuICAqLwotICAgbGVmdF9wbWYgPSAoaW50IChEaWFtb25kOjoqKSAo KSkgKGludCAoTGVmdDo6KikgKCkpICgmQmFzZTo6Z2V0X3gpOwotQEAgLTE5MywxMSArMjAyLDE5 IEBAIGludCBtYWluICgpCi0gICAvKiBBIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIgZnJvbSBhIGJh c2UgY2xhc3MuICAqLwotICAgZGlhbW9uZF9wbWkgPSAoaW50IERpYW1vbmQ6OiopIChpbnQgTGVm dDo6KikgJkJhc2U6Ong7Ci0gCi0rICAvKiBBIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIsIHdoZXJl IHRoZSBtZW1iZXIgaXMgaXRzZWxmIGEgcG9pbnRlciB0bwotKyAgICAgYSBmdW5jdGlvbi4gICov Ci0rICBkaWFtb25kX3BmdW5jX3B0ciA9IChpbnQgKCogRGlhbW9uZDo6KikgKGludCkpICZEaWFt b25kOjpmdW5jX3B0cjsKLSsKLSAgIG51bGxfcG1pID0gTlVMTDsKLSAgIG51bGxfcG1mID0gTlVM TDsKLSAKLSAgIHBtaSA9IE5VTEw7IC8qIEJyZWFrcG9pbnQgMSBoZXJlLiAgKi8KLSAKLSsgIC8v IEludmFsaWQgKHVzZXMgZGlhbW9uZF9wZnVuY19wdHIgYXMgYSBmdW5jdGlvbik6Ci0rICAvLyBk aWFtb25kLipkaWFtb25kX3BmdW5jX3B0ciAoMjApOwotKyAgKGRpYW1vbmQuKmRpYW1vbmRfcGZ1 bmNfcHRyKSAoMjApOwotKwotICAgayA9IChhLipwbWYpKDMpOwotIAotICAgcG1pID0gJkE6Ompq OwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAKLWluZGV4IDY4MzJmM2IuLmJhZjA4ZDcg MTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRyLmV4cAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAKLUBAIC0zOTAsNiArMzkwLDMzIEBA IGdkYl90ZXN0X211bHRpcGxlICJwcmludCAoKGludCkgcG1pKSA9PSAoKGNoYXIgKikgJmEuaiAt IChjaGFyICopICYgYSkiICRuYW1lIHsKLSAgICAgfQotIH0KLSAKLSsjIENoZWNrIHBvaW50ZXJz IHRvIGRhdGEgbWVtYmVycywgd2hpY2ggYXJlIHRoZW1zZWx2ZXMgcG9pbnRlcnMgdG8KLSsjIGZ1 bmN0aW9ucy4gIFRoZXNlIGJlaGF2ZSBsaWtlIGRhdGEgbWVtYmVycywgbm90IGxpa2UgcG9pbnRl cnMgdG8KLSsjIG1lbWJlciBmdW5jdGlvbnMuCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGRpYW1vbmRf cGZ1bmNfcHRyIiBcCi0rICAgICJ0eXBlID0gaW50IFxcKFxcKkRpYW1vbmQ6OlxcKlxcKVxcKGlu dFxcKSIKLSsKLStnZGJfdGVzdCAicHR5cGUgZGlhbW9uZC4qZGlhbW9uZF9wZnVuY19wdHIiIFwK LSsgICAgInR5cGUgPSBpbnQgXFwoXFwqXFwpXFwoaW50XFwpIgotKwotKyMgVGhpcyBvbmUgaXMg aW52YWxpZDsgKCkgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gLiosIHNvIGl0IHRyaWVzIHRvCi0r IyBjYWxsIHRoZSBtZW1iZXIgcG9pbnRlciBhcyBhIG5vcm1hbCBwb2ludGVyLXRvLWZ1bmN0aW9u LgotKwotK2dkYl90ZXN0ICJwcmludCBkaWFtb25kLipkaWFtb25kX3BmdW5jX3B0ciAoMjApIiBc Ci0rICAgICJJbnZhbGlkIGRhdGEgdHlwZSBmb3IgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLiIKLSsK LSsjIFdpdGggcGFyZW50aGVzZXMsIGl0IGlzIHZhbGlkLgotKwotK2dkYl90ZXN0ICJwcmludCAo ZGlhbW9uZC4qZGlhbW9uZF9wZnVuY19wdHIpICgyMCkiIFwKLSsgICAgIiR2aG4gPSAzOSIKLSsK LSsjIE1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBpbnRlcnByZXQgdGhpcyBhcyBlaXRoZXIgYSBt ZW1iZXIgcG9pbnRlcgotKyMgY2FsbCBvciBhIG1lbWJlciBmdW5jdGlvbiBjYWxsLgotKwotK2dk Yl90ZXN0ICJwcmludCBkaWFtb25kLmZ1bmNfcHRyICgyMCkiIFwKLSsgICAgIiR2aG4gPSAzOSIK LSsKLSAjID09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gIyBwb2ludGVyIHRvIG1lbWJlciBm dW5jdGlvbgotICMgPT09PT09PT09PT09PT09PT09PT09PT09PT0KLUBAIC00MjAsNyArNDQ3LDcg QEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInB0eXBlIHBtZiIgJG5hbWUgewotIAotIHNldCBuYW1lICJw cmludCBwbWYiCi0gZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IHBtZiIgJG5hbWUgewotLSAgICAt cmUgIiR2aG4gPSAkaGV4IDxBOjpiYXJcXChpbnRcXCk+XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsg ICAgLXJlICIkdmhuID0gXFwoaW50IFxcKEE6OlxcKlxcKVxcKEEgXFwqLCBpbnRcXClcXCkgJGhl eCA8QTo6YmFyXFwoaW50XFwpPlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0gCXBhc3MgJG5hbWUKLSAg ICAgfQotICAgICAtcmUgIiR2aG4gPSAuKm5vdCBzdXBwb3J0ZWQgd2l0aCBIUCBhQ0MuKlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci1AQCAtNjA4LDYgKzYzNSw5IEBAIGdkYl90ZXN0X211bHRpcGxlICJw cmludCAoYS4qcG1mKSgzKSIgJG5hbWUgewotICAgICB9Ci0gfQotIAotK2dkYl90ZXN0ICJwdHlw ZSBhLipwbWYiICJ0eXBlID0gaW50IFxcKEEgXFwqLCBpbnRcXCkiCi0rZ2RiX3Rlc3QgInB0eXBl IChhLipwbWYpKDMpIiAidHlwZSA9IGludCIKLSsKLSAjIFByaW50IG91dCBhIHBvaW50ZXIgdG8g ZGF0YSBtZW1iZXIgd2hpY2ggcmVxdWlyZXMgbG9va2luZyBpbnRvCi0gIyBhIGJhc2UgY2xhc3Mu Ci0gZ2RiX3Rlc3QgInByaW50IGRpYW1vbmRfcG1pIiAiJHZobiA9ICZCYXNlOjp4IgotQEAgLTY1 OCw1ICs2ODgsNSBAQCBnZGJfdGVzdCAicHJpbnQgbnVsbF9wbWkgPSAmQTo6aiIgIiR2aG4gPSAm QTo6aiIKLSBnZGJfdGVzdCAicHJpbnQgbnVsbF9wbWkgPSAwIiAiJHZobiA9IE5VTEwiCi0gCi0g Z2RiX3Rlc3QgInByaW50IG51bGxfcG1mIiAiJHZobiA9IE5VTEwiCi0tZ2RiX3Rlc3QgInByaW50 IG51bGxfcG1mID0gJkE6OmZvbyIgIiR2aG4gPSAkaGV4IDxBOjpmb28gP1xcKGludFxcKT4iCi0r Z2RiX3Rlc3QgInByaW50IG51bGxfcG1mID0gJkE6OmZvbyIgIiR2aG4gPSBcXChpbnQgXFwoQTo6 XFwqXFwpXFwoQSBcXCosIGludFxcKVxcKSAkaGV4IDxBOjpmb28gP1xcKGludFxcKT4iCi0gZ2Ri X3Rlc3QgInByaW50IG51bGxfcG1mID0gMCIgIiR2aG4gPSBOVUxMIgotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1rb2VuaWcuY2MgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9uYW1lc3BhY2Uta29lbmlnLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uM2MzMGNiMgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmFtZXNwYWNlLWtvZW5pZy5jYwotQEAgLTAsMCArMSwyMzIgQEAKLStuYW1lc3BhY2UgQQotK3sK LSsgIGNsYXNzIEMKLSsgIHsKLSsgIHB1YmxpYzoKLSsgICAgc3RhdGljIGNvbnN0IGludCB4ID0g MTE7Ci0rICB9OwotKwotKyAgaW50Ci0rICBmaXJzdCAoQyBjKQotKyAgewotKyAgICByZXR1cm4g MTE7Ci0rICB9Ci0rCi0rICBpbnQKLSsgIGZpcnN0IChpbnQgYSwgQyBjKQotKyAgewotKyAgICBy ZXR1cm4gMjI7Ci0rICB9Ci0rCi0rICBpbnQKLSsgIHNlY29uZCAoaW50IGEsIGludCBiLCBDIGNj LCBpbnQgYywgaW50IGQpCi0rICB7Ci0rICAgIHJldHVybiAzMzsKLSsgIH0KLSsKLSt9Ci0rCi0r c3RydWN0IEIKLSt7Ci0rICBBOjpDIGM7Ci0rfTsKLSsKLSsvLy0tLS0tLS0tLS0tLQotKwotK25h bWVzcGFjZSBFCi0rewotKyAgY2xhc3MgT3t9OwotKyAgaW50IGZvbyAoTyBvKXtyZXR1cm4gMTsg fQotKyAgaW50IGZvbyAoTyBvLCBPIG8yKXtyZXR1cm4gMjsgfQotKyAgaW50IGZvbyAoTyBvLCBP IG8yLCBpbnQgaSl7cmV0dXJuIDM7IH0KLSt9Ci0rCi0rbmFtZXNwYWNlIEYKLSt7Ci0rICBjbGFz cyBPe307Ci0rICBpbnQgZm9vICggICAgICAgTyBmbywgOjpFOjpPIGVvKXsgcmV0dXJuIDQ7fQot KyAgaW50IGZvbyAoaW50IGksIE8gZm8sIDo6RTo6TyBlbyl7IHJldHVybiA1O30KLSt9Ci0rCi0r bmFtZXNwYWNlIEcKLSt7Ci0rICBjbGFzcyBPe307Ci0rICBpbnQgZm9vIChPIGdvLCA6OkY6Ok8g Zm8sIDo6RTo6TyBlbyl7IHJldHVybiA2OyB9Ci0rfQotKwotKy8vLS0tLS0tLS0tLS0tCi0rCi0r bmFtZXNwYWNlIEgKLSt7Ci0rICBjbGFzcyBPe307Ci0rICBpbnQgZm9vIChPKXsgcmV0dXJuIDc7 fQotK30KLSsKLStuYW1lc3BhY2UgSQotK3sKLSsgIGNsYXNzIE86IHB1YmxpYyBIOjpPIHt9Owot KyAgY2xhc3MgWDogSDo6T3t9OwotK30KLSsKLSsvLy0tLS0tLS0tLS0tLQotKwotK25hbWVzcGFj ZSBKCi0rewotKyAgdW5pb24gVXt9OwotKyAgc3RydWN0IFN7fTsKLSsgIGVudW0gRXt9OwotKwot KyAgY2xhc3MgQXsKLSsgIHB1YmxpYzoKLSsgICAgY2xhc3MgQnt9OwotKyAgfTsKLSsKLSsgIGNs YXNzIEN7fTsKLSsKLSsgIGludCBmb28gKFUpeyByZXR1cm4gODt9Ci0rICBpbnQgZm9vIChTKXsg cmV0dXJuIDk7fQotKyAgaW50IGZvbyAoRSl7IHJldHVybiAxMDt9Ci0rICBpbnQgZm9vIChBOjpC KXsgcmV0dXJuIDExO30KLSsgIGludCBmb28gKEEqKXsgcmV0dXJuIDEyO30KLSsgIGludCBmb28g KEEqKil7IHJldHVybiAxMzt9Ci0rICBpbnQgZm9vIChDW10peyByZXR1cm4gMTQ7fQotKwotK30K LSsvLy0tLS0tLS0tLS0tLQotKwotK25hbWVzcGFjZSBLewotKyAgY2xhc3MgT3t9OwotKwotKyAg aW50IGZvbyhPLCBpbnQpewotKyAgICByZXR1cm4gMTU7Ci0rICB9Ci0rCi0rICBpbnQgYmFyKE8s IGludCl7Ci0rICAgIHJldHVybiAxNTsKLSsgIH0KLSt9Ci0rCi0raW50IGZvbyhLOjpPLCBmbG9h dCl7Ci0rICByZXR1cm4gMTY7Ci0rfQotKwotK2ludCBiYXIoSzo6TywgaW50KXsKLSsgIHJldHVy biAxNjsKLSt9Ci0rLy8tLS0tLS0tLS0tLS0KLSsKLStuYW1lc3BhY2UgTCB7Ci0rICBuYW1lc3Bh Y2UgQXsKLSsgICAgbmFtZXNwYWNlIEJ7Ci0rICAgIGNsYXNzIE8ge307Ci0rCi0rICAgIGludCBm b28gKE8pewotKyAgICAgIHJldHVybiAxNzsKLSsgICAgfQotKwotKyAgICB9Ci0rICB9Ci0rfQot KwotKy8vLS0tLS0tLS0tLS0tCi0rCi0rbmFtZXNwYWNlIE0gewotKyAgY2xhc3MgT3sKLSsgIHB1 YmxpYzoKLSsgICAgaW50IG9wZXJhdG9yPT0gKGludCl7Ci0rICAgICAgcmV0dXJuIDE4OwotKyAg ICB9Ci0rCi0rICAgIGludCBvcGVyYXRvcj09IChmbG9hdCl7Ci0rICAgICAgcmV0dXJuIDE5Owot KyAgICB9Ci0rCi0rICAgIGludCBvcGVyYXRvcisgKGZsb2F0KXsKLSsgICAgICByZXR1cm4gMjI7 Ci0rICAgIH0KLSsKLSsgIH07Ci0rCi0rICBpbnQgb3BlcmF0b3IhPSAoTywgaW50KXsKLSsgICAg cmV0dXJuIDIwOwotKyAgfQotKwotKyAgaW50IG9wZXJhdG9yIT0gKE8sIGRvdWJsZSl7Ci0rICAg IHJldHVybiAyMTsKLSsgIH0KLSsKLSsgIGludCBvcGVyYXRvcisgKE8sIGludCl7Ci0rICAgIHJl dHVybiAyMzsKLSsgIH0KLSsKLSsgIGludCBvcGVyYXRvcisrIChPKXsKLSsgICAgcmV0dXJuIDI0 OwotKyAgfQotKwotK30KLSsvLy0tLS0tLS0tLS0tLQotK2ludAotK21haW4gKCkKLSt7Ci0rICBB OjpDIGM7Ci0rICBCIGI7Ci0rCi0rICBBOjpmaXJzdCAoYyk7Ci0rICBmaXJzdCAoMCwgYyk7Ci0r ICBzZWNvbmQgKDAsIDAsIGMsIDAsIDApOwotKyAgQTo6Zmlyc3QgKGIuYyk7Ci0rCi0rICBFOjpP IGVvOwotKyAgRjo6TyBmbzsKLSsgIEc6Ok8gZ287Ci0rCi0rICBmb28gKGVvKTsKLSsgIGZvbyAo ZW8sIGVvKTsKLSsgIGZvbyAoZW8sIGVvLCAxKTsKLSsgIGZvbyAoZm8sIGVvKTsKLSsgIGZvbyAo MSAgLGZvLCBlbyk7Ci0rICBmb28gKGdvLCBmbywgZW8pOwotKwotKyAgSTo6TyBpbzsKLSsgIEk6 OlggaXg7Ci0rCi0rICBmb28gKGlvKTsKLSsvL2ZvbyAoaXgpOwotKwotKyAgSjo6VSBqdTsKLSsg IEo6OlMganM7Ci0rICBKOjpFIGplOwotKyAgSjo6QTo6QiBqYWI7Ci0rICBKOjpBICpqYXA7Ci0r ICBKOjpBICoqamFwcDsKLSsgIEo6OkMgamNhWzNdOwotKwotKyAgZm9vIChqdSk7Ci0rICBmb28g KGpzKTsKLSsgIGZvbyAoamUpOwotKyAgZm9vIChqYWIpOwotKyAgZm9vIChqYXApOwotKyAgZm9v IChqYXBwKTsKLSsgIGZvbyAoamNhKTsKLSsKLSsgIEs6Ok8ga287Ci0rICBmb28gKGtvLCAxKTsK LSsgIGZvbyAoa28sIDEuMGYpOwotKyAgLy9iYXIoa28sMSk7Ci0rCi0rICBMOjpBOjpCOjpPIGxh Ym87Ci0rICBmb28gKGxhYm8pOwotKwotKyAgTTo6TyBvOwotKyAgbyA9PSA1OwotKyAgbyA9PSA1 LjBmOwotKyAgbyAhPSA1OwotKyAgbyAhPSA1LjBmOwotKyAgbyArIDU7Ci0rICBvICsgNS4wZjsK LSsKLSsgIHJldHVybiBmaXJzdCAoMCwgYykgKyBmb28gKGVvKSArCi0rICAgICAgICAgZm9vIChl bywgZW8pICsgZm9vIChlbywgZW8sIDEpICArCi0rICAgICAgICAgZm9vIChmbywgZW8pICsgZm9v ICgxICAsZm8sIGVvKSArCi0rICAgICAgICAgZm9vIChnbywgZm8sIGVvKTsKLSt9Ci1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLWtvZW5pZy5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Uta29lbmlnLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLmM3M2UyMzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25hbWVzcGFjZS1rb2VuaWcuZXhwCi1AQCAtMCwwICsxLDExMiBAQAotKyMgQ29w eXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJh Y2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwot K3NldCB0ZXN0ZmlsZSBuYW1lc3BhY2Uta29lbmlnCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u Y2MKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0raWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxk bid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBHZXQg dGhpbmdzIHN0YXJ0ZWQuCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsKLStpZiAhW3J1bnRvX21h aW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4i Ci0rICAgIGNvbnRpbnVlCi0rfQotKwotKyMgVGVzdCB0aGF0IGtvZW5pZyBsb29rdXAgZmluZHMg Y29ycmVjdCBmdW5jdGlvbgotK2dkYl90ZXN0ICJwIGZpcnN0KGMpIiAiPSAxMSIKLSsKLSsjIENo YW5nZSB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgYW5kIHBvc2l0aW9uIG9mCi0rIyB0aGUgcXVh bGlmeWluZyBwYXJhbWV0ZXIKLStnZGJfdGVzdCAicCBzZWNvbmQoMCwwLGMsMCwwKSIgIj0gMzMi Ci0rCi0rIyBUZXN0IHRoYXQga29lbmlnIGxvb2t1cCBmaW5kcyBjb3JyZWN0IGZ1bmN0aW9uCi0r IyBldmVuIGlmIGl0IGlzIG92ZXJsb2FkZWQKLStnZGJfdGVzdCAicCBmaXJzdCgwLGMpIiAiPSAy MiIKLSsKLSsjIFRlc3QgdGhhdCBrb2VuaWcgbG9va3VwIGZpbmRzIGNvcnJlY3QgZnVuY3Rpb24K LSsjIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIGV4cHJlc3Npb24KLStnZGJfdGVzdCAicCBmaXJz dChiLmMpIiAiPSAxMSIKLSsKLSsjIHRlc3QgdGhhdCByZXNvbHV0aW9ucyBjYW4gYmUgbWFkZSBh Y3Jvc3MgbmFtZXNwYWNlcwotK2dkYl90ZXN0ICJwIGZvbyhlbykiICAgICAgICAgIj0gMSIKLStn ZGJfdGVzdCAicCBmb28oZW8sIGVvKSIgICAgICI9IDIiCi0rZ2RiX3Rlc3QgInAgZm9vKGVvLCBl bywgMSkiICAiPSAzIgotK2dkYl90ZXN0ICJwIGZvbyhmbywgZW8pIiAgICAgIj0gNCIKLStnZGJf dGVzdCAicCBmb28oMSAsZm8sIGVvKSIgICI9IDUiCi0rZ2RiX3Rlc3QgInAgZm9vKGdvLCBmbywg ZW8pIiAiPSA2IgotKwotKyN0ZXN0IHRoYXQgZ2RiIGZhaWxzIGdyYWNlZnVsbHkKLStnZGJfdGVz dCAicCBmYWtlKGVvKSIgIk5vIHN5bWJvbCBcImZha2VcIiBpbiBjdXJyZW50IGNvbnRleHQuIgot KwotKyN0ZXN0IHRoYXQgbmFtZXNwYWNlcyBvZiBiYXNlIGNsYXNzZXMgYXJlIHNlYXJjaGVkCi0r Z2RiX3Rlc3QgInAgZm9vKGlvKSIgIj0gNyIKLStnZGJfdGVzdCAicCBmb28oaXgpIiAiQ2Fubm90 IHJlc29sdmUgZnVuY3Rpb24gZm9vIHRvIGFueSBvdmVybG9hZGVkIGluc3RhbmNlIgotKwotKyN0 ZXN0IGZvciBvdGhlciB0eXBlcwotK2dkYl90ZXN0ICJwIGZvbyhqdSkiICI9IDgiCi0rZ2RiX3Rl c3QgInAgZm9vKGpzKSIgIj0gOSIKLStnZGJfdGVzdCAicCBmb28oamUpIiAiPSAxMCIKLSsKLSsj dGVzdCBmb3IgY2xhc3MgbWVtYmVycwotK3NldHVwX3hmYWlsICIqLSotKiIKLStnZGJfdGVzdCAi cCBmb28oamFiKSIgIj0gMTEiCi0rCi0rZ2RiX3Rlc3QgInAgZm9vKGphcCkiICI9IDEyIgotK2dk Yl90ZXN0ICJwIGZvbyhqYXBwKSIgIj0gMTMiCi0rZ2RiX3Rlc3QgInAgZm9vKGpjYSkiICI9IDE0 IgotKwotKyN0ZXN0IG92ZXJsb2FkIHJlc29sdXRpb24KLStnZGJfdGVzdCAicCBmb28oa28sMSki ICI9IDE1IgotK2dkYl90ZXN0ICJwIGZvbyhrbywxLjBmKSIgIj0gMTYiCi0rc2V0dXBfeGZhaWwg IiotKi0qIgotK2dkYl90ZXN0ICJwIGJhcihrbywxKSIgIj0gLTEiCi0rCi0rI3Rlc3QgbG9va3Vw IG9mIG9iamVjdHMgYmVsb25naW5nIHRvIG5lc3RlZCBuYW1lc3BhY2VzCi0rZ2RiX3Rlc3QgInAg Zm9vKGxhYm8pIiAiPSAxNyIKLSsKLSsjIHRlc3QgbG9va3VwIG9mIG5hbWVzcGFjZSB1c2VyLWRl ZmluZWQgb3BlcmF0b3JzCi0rIyBhbmQgb3ZlcmxvYWQgcmVzb2x1dGlvbjoKLSsKLSsjIHdpdGhp biBjbGFzcwotK2dkYl90ZXN0ICJwIG8gPT0gNSIgIj0gMTgiCi0rZ2RiX3Rlc3QgInAgbyA9PSA1 LjBmIiAiPSAxOSIKLSsKLSsjIHdpdGhpbiBuYW1lc3BhY2UKLStnZGJfdGVzdCAicCBvICE9IDUi ICI9IDIwIgotK2dkYl90ZXN0ICJwIG8gIT0gNS4wZiIgIj0gMjEiCi0rCi0rIyBhY3Jvc3MgbmFt ZXNwYWNlIGFuZCBjbGFzcwotK2dkYl90ZXN0ICJwIG8gKyA1LjBmIiAiPSAyMiIKLStnZGJfdGVz dCAicCBvICsgNSIgIj0gMjMiCi0rCi0rZ2RiX3Rlc3QgInAgbysrIiAiPSAyNCIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cy5jYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmNjCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUwogbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjZiMTgwZDYKK2luZGV4IDAwMDAwMDAuLjgz ZmFhZjYKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFj ZS1tdWx0aXBsZS1pbXBvcnRzLmNjCi1AQCAtMCwwICsxLDIwIEBACi0rbmFtZXNwYWNlIEEgewot KyAgaW50IHggPSAxMTsKLSsgIG5hbWVzcGFjZXsKLSsgICAgaW50IHh4ID0gMjI7Ci0rICB9Ci0r fQotKwotK3VzaW5nIG5hbWVzcGFjZSBBOwotKwotK25hbWVzcGFjZXsKLSsgIGludCB4eHggPSAz MzsKLSt9OwotKwotK2ludCBtYWluKCkKLSt7Ci0rICB4OwotKyAgeHg7Ci0rICB4eHg7Ci0rICBy ZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNl LW11bHRpcGxlLWltcG9ydHMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW11 bHRpcGxlLWltcG9ydHMuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtcG9pbnRlci1mb28uUworQEAgLTAsMCArMSw0NTcgQEAKKysJLmZpbGUJIng4Nl82NC12bGEt cG9pbnRlci5jIgorKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cworKy5MZGVi dWdfYWJicmV2MDoKKysJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHByb2diaXRzCisrLkxkZWJ1 Z19pbmZvMDoKKysJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCisrLkxkZWJ1Z19s aW5lMDoKKysJLnRleHQKKysuTHRleHQwOgorKy5nbG9ibCBmb28KKysJLnR5cGUJZm9vLCBAZnVu Y3Rpb24KKytmb286CisrLkxGQjI6CisrCS5maWxlIDEgIng4Nl82NC12bGEtcG9pbnRlci5jIgor KwkubG9jIDEgMjIgMAorKwlwdXNocQklcmJwCisrLkxDRkkwOgorKwltb3ZxCSVyc3AsICVyYnAK KysuTENGSTE6CisrCXN1YnEJJDY0LCAlcnNwCisrLkxDRkkyOgorKwltb3ZsCSVlZGksIC0zNigl cmJwKQorKwkubG9jIDEgMjIgMAorKwltb3ZxCSVyc3AsICVyYXgKKysJbW92cQklcmF4LCAtNDgo JXJicCkKKysJLmxvYyAxIDIzIDAKKysJbW92bAktMzYoJXJicCksICVlZHgKKysJbW92c2xxCSVl ZHgsJXJheAorKwlzdWJxCSQxLCAlcmF4CisrCW1vdnEJJXJheCwgLTI0KCVyYnApCisrCS5sb2Mg MSAyNCAwCisrCW1vdnNscQklZWR4LCVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJYWRkcQkkMTUs ICVyYXgKKysJc2hycQkkNCwgJXJheAorKwlzYWxxCSQ0LCAlcmF4CisrCXN1YnEJJXJheCwgJXJz cAorKwltb3ZxCSVyc3AsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAorKwlhZGRx CSQxNSwgJXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJbW92cQklcmF4 LCAtNTYoJXJicCkKKysJbW92cQktNTYoJXJicCksICVyYXgKKysJbW92cQklcmF4LCAtMTYoJXJi cCkKKysJLmxvYyAxIDI3IDAKKysJbW92bAkkMCwgLTQoJXJicCkKKysJam1wCS5MMgorKy5MMzoK KysJLmxvYyAxIDI4IDAKKysJbW92bAktNCglcmJwKSwgJWVzaQorKwltb3ZsCS00KCVyYnApLCAl ZWF4CisrCW1vdmwJJWVheCwgJWVjeAorKwltb3ZxCS0xNiglcmJwKSwgJXJkeAorKwltb3ZzbHEJ JWVzaSwlcmF4CisrCW1vdmIJJWNsLCAoJXJkeCwlcmF4KQorKwkubG9jIDEgMjcgMAorKwlhZGRs CSQxLCAtNCglcmJwKQorKy5MMjoKKysJbW92bAktNCglcmJwKSwgJWVheAorKwljbXBsCS0zNigl cmJwKSwgJWVheAorKwlqbAkuTDMKKysJLmxvYyAxIDMwIDAKKysJLmdsb2JsCWJyZWFrX2hlcmUK KyticmVha19oZXJlOgorKwltb3ZxCS0xNiglcmJwKSwgJXJheAorKwltb3ZiCSQwLCAoJXJheCkK KysJbW92cQktNDgoJXJicCksICVyc3AKKysJLmxvYyAxIDMxIDAKKysJbGVhdmUKKysJcmV0Cisr LkxGRTI6CisrCS5zaXplCWZvbywgLi1mb28KKysJLnNlY3Rpb24JLmRlYnVnX2ZyYW1lLCIiLEBw cm9nYml0cworKy5MZnJhbWUwOgorKwkubG9uZwkuTEVDSUUwLS5MU0NJRTAKKysuTFNDSUUwOgor KwkubG9uZwkweGZmZmZmZmZmCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSIiCisrCS51bGViMTI4 IDB4MQorKwkuc2xlYjEyOCAtOAorKwkuYnl0ZQkweDEwCisrCS5ieXRlCTB4YworKwkudWxlYjEy OCAweDcKKysJLnVsZWIxMjggMHg4CisrCS5ieXRlCTB4OTAKKysJLnVsZWIxMjggMHgxCisrCS5h bGlnbiA4CisrLkxFQ0lFMDoKKysuTFNGREUwOgorKwkubG9uZwkuTEVGREUwLS5MQVNGREUwCisr LkxBU0ZERTA6CisrCS5sb25nCS5MZnJhbWUwCisrCS5xdWFkCS5MRkIyCisrCS5xdWFkCS5MRkUy LS5MRkIyCisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisr CS51bGViMTI4IDB4MTAKKysJLmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0 CisrCS5sb25nCS5MQ0ZJMS0uTENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwku YWxpZ24gOAorKy5MRUZERTA6CisrCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCisr LkxmcmFtZTE6CisrCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQorKy5MU0NJRTE6CisrCS5sb25nCTB4 MAorKwkuYnl0ZQkweDEKKysJLnN0cmluZwkielIiCisrCS51bGViMTI4IDB4MQorKwkuc2xlYjEy OCAtOAorKwkuYnl0ZQkweDEwCisrCS51bGViMTI4IDB4MQorKwkuYnl0ZQkweDMKKysJLmJ5dGUJ MHhjCisrCS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAorKwkudWxl YjEyOCAweDEKKysJLmFsaWduIDgKKysuTEVDSUUxOgorKy5MU0ZERTE6CisrCS5sb25nCS5MRUZE RTEtLkxBU0ZERTEKKysuTEFTRkRFMToKKysJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEKKysJLmxv bmcJLkxGQjIKKysJLmxvbmcJLkxGRTItLkxGQjIKKysJLnVsZWIxMjggMHgwCisrCS5ieXRlCTB4 NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisrCS51bGViMTI4IDB4MTAKKysJ LmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMS0u TENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwkuYWxpZ24gOAorKy5MRUZERTE6 CisrCS50ZXh0CisrLkxldGV4dDA6CisrCS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHByb2diaXRz CisrLkxkZWJ1Z19sb2MwOgorKy5MTFNUMDoKKysJLnF1YWQJLkxGQjItLkx0ZXh0MAorKwkucXVh ZAkuTENGSTAtLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjgg OAorKwkucXVhZAkuTENGSTAtLkx0ZXh0MAorKwkucXVhZAkuTENGSTEtLkx0ZXh0MAorKwkudmFs dWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjggMTYKKysJLnF1YWQJLkxDRkkxLS5MdGV4 dDAKKysJLnF1YWQJLkxGRTItLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzYKKysJ LnNsZWIxMjggMTYKKysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwkuc2VjdGlvbgkuZGVidWdf aW5mbworKy5MZGVidWdfcmVsYXRpdmU6CisrCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19z dGFydAorKy5MZGVidWdfc3RhcnQ6CisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1Z19hYmJy ZXYwCisrCS5ieXRlCTB4OAorKwkudWxlYjEyOCAweDEKKysJLmxvbmcJLkxBU0YyCisrCS5ieXRl CTB4MQorKwkubG9uZwkuTEFTRjMKKysJLmxvbmcJLkxBU0Y0CisrCS5xdWFkCS5MdGV4dDAKKysJ LnF1YWQJLkxldGV4dDAKKysJLmxvbmcJLkxkZWJ1Z19saW5lMAorKwkudWxlYjEyOCAweDIKKysJ LmJ5dGUJMHgxCisrCS5zdHJpbmcJImZvbyIKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTYKKysJ LmJ5dGUJMHgxCisrCS5xdWFkCS5MRkIyCisrCS5xdWFkCS5MRkUyCisrCS5sb25nCS5MTFNUMAor KwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2ZQorKwkudWxlYjEyOCAweDMKKysJ LmxvbmcJLkxBU0Y1CisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE1CisrCS5sb25nCS5MdHlwZV9p bnQgLSAuTGRlYnVnX3JlbGF0aXZlCisrCS5ieXRlCTB4MgorKwkuYnl0ZQkweDkxCisrCS5zbGVi MTI4IC01MgorKy5MdGFnX3BvaW50ZXI6CisrCS51bGViMTI4IDB4NAorKwkuYnl0ZQkweDgJLyog RFdfQVRfYnl0ZV9zaXplICovCisrCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5m bwkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4IDB4NQkvKiBBYmJyZXYgTnVtYmVyOiA1IChE V19UQUdfdmFyaWFibGUpICovCisrCS5sb25nCS5MQVNGMAorKwkuYnl0ZQkweDEKKysJLmJ5dGUJ MHgxOAorKyNpZiAxCisrCS5sb25nCS5MdGFnX3BvaW50ZXIgLSAuZGVidWdfaW5mbworKyNlbHNl CisrCS8qIERlYnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAgKi8K KysJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCisrI2VuZGlmCisrCS8qIERX X0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KKysJLmJ5dGUJMHgzCisrCS5i eXRlCTB4OTEKKysJLnNsZWIxMjggLTMyCisrI2lmIDAKKysJLmJ5dGUJMHg2CS8qIERXX09QX2Rl cmVmICovCisrI2Vsc2UKKysJLmJ5dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8KKysjZW5kaWYKKysJ LyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KKysJLnVsZWIxMjggMHg2 CisrCS5zdHJpbmcJImkiCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE5CisrCS5sb25nCS5MdHlw ZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCisrCS5ieXRlCTB4MgorKwkuYnl0ZQkweDkxCisrCS5z bGViMTI4IC0yMAorKwkuYnl0ZQkweDAKKysuTHR5cGVfaW50OgorKwkudWxlYjEyOCAweDcKKysJ LmJ5dGUJMHg0CisrCS5ieXRlCTB4NQorKwkuc3RyaW5nCSJpbnQiCisrLkx0YWdfYXJyYXlfdHlw ZToKKysJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBl KSAqLworKwkubG9uZwkuTHR5cGVfY2hhciAtIC5MZGVidWdfcmVsYXRpdmUKKysJLmxvbmcJLkx0 eXBlX3Vsb25nIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JNX3Jl ZjQgKi8KKysxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQg Ki8KKysJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KKyszOgorKwkuYnl0ZQkweDk3CS8qIERX X09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KKysjaWYgMQorKwkuYnl0ZQkweDYJLyogRFdfT1Bf ZGVyZWYgKi8KKysjZWxzZQorKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAqLworKyNlbmRpZgor KzI6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KKysJLnVs ZWIxMjggMHg5CisrCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19B VF90eXBlOiBEV19GT1JNX3JlZjQgKi8KKysJLmJ5dGUJMHgzCisrCS5ieXRlCTB4OTEKKysJLnNs ZWIxMjggLTQwCisrCS5ieXRlCTB4NgorKwkuYnl0ZQkweDAKKysuTHR5cGVfdWxvbmc6CisrCS51 bGViMTI4IDB4YQorKwkuYnl0ZQkweDgKKysJLmJ5dGUJMHg3CisrLkx0eXBlX2NoYXI6CisrCS51 bGViMTI4IDB4YgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHg2CisrCS5sb25nCS5MQVNGMQorKwku Ynl0ZQkweDAKKysuTGRlYnVnX2VuZDoKKysJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgorKwkudWxl YjEyOCAweDEKKysJLnVsZWIxMjggMHgxMQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHgyNQor KwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweGIKKysJLnVsZWIx MjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDFiCisrCS51bGViMTI4IDB4ZQor KwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEyCisrCS51bGVi MTI4IDB4MQorKwkudWxlYjEyOCAweDEwCisrCS51bGViMTI4IDB4NgorKwkuYnl0ZQkweDAKKysJ LmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweDJlCisrCS5ieXRlCTB4MQor KwkudWxlYjEyOCAweDNmCisrCS51bGViMTI4IDB4YworKwkudWxlYjEyOCAweDMKKysJLnVsZWIx MjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjcKKysJLnVsZWIxMjggMHhjCisrCS51bGVi MTI4IDB4MTEKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTIKKysJLnVsZWIxMjggMHgx CisrCS51bGViMTI4IDB4NDAKKysJLnVsZWIxMjggMHg2CisrCS51bGViMTI4IDB4MQorKwkudWxl YjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51 bGViMTI4IDB4NQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQor KwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGVi MTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJLnVsZWIxMjggMHgy CisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4 NAkvKiAuTHRhZ19wb2ludGVyIGFiYnJldiAqLworKwkudWxlYjEyOCAweDBmCS8qIERXX1RBR19w b2ludGVyX3R5cGUgKi8KKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MGIKKysJLnVsZWIxMjgg MHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkuYnl0ZQkweDAKKysJLmJ5 dGUJMHgwCisrCS51bGViMTI4IDB4NQorKwkudWxlYjEyOCAweDM0CisrCS5ieXRlCTB4MAorKwku dWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjgg MHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJ LnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4 MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg2CisrCS51bGViMTI4IDB4MzQKKysJLmJ5dGUJ MHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLnVsZWIxMjggMHgzYQorKwku dWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjgg MHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweGEKKysJ LmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDcKKysJLnVsZWIxMjggMHgyNAor KwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAw eDNlCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHg4CisrCS5i eXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDgg KERXX1RBR19hcnJheV90eXBlKSAqLworKwkudWxlYjEyOCAweDEKKysJLmJ5dGUJMHgxCisrCS51 bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1f cmVmNCAqLworKwkudWxlYjEyOCAweDEJLyogRFdfQVRfc2libGluZyAqLworKwkudWxlYjEyOCAw eDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDUwCS8qIERXX0FUX2RhdGFfbG9j YXRpb24gKi8KKysJLnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxvY2sxICovCisrCS5ieXRlCTB4 MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg5CisrCS51bGViMTI4IDB4MjEKKysJLmJ5dGUJ MHgwCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOCAweDEzCS8q IERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDJmCisrCS51bGViMTI4IDB4YQorKwkuYnl0 ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YQorKwkudWxlYjEyOCAweDI0CisrCS5i eXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2UK KysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhi CisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEy OCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzCisr CS51bGViMTI4IDB4ZQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwku c2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCisrCS5sb25nCTB4MTYKKysJLnZh bHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8wCisrCS5sb25nCTB4YTgKKysJLmxvbmcJMHgy ZAorKwkuc3RyaW5nCSJmb28iCisrCS5sb25nCTB4MAorKwkuc2VjdGlvbgkuZGVidWdfYXJhbmdl cywiIixAcHJvZ2JpdHMKKysJLmxvbmcJMHgyYworKwkudmFsdWUJMHgyCisrCS5sb25nCS5MZGVi dWdfaW5mbzAKKysJLmJ5dGUJMHg4CisrCS5ieXRlCTB4MAorKwkudmFsdWUJMHgwCisrCS52YWx1 ZQkweDAKKysJLnF1YWQJLkx0ZXh0MAorKwkucXVhZAkuTGV0ZXh0MC0uTHRleHQwCisrCS5xdWFk CTB4MAorKwkucXVhZAkweDAKKysJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMiLEBwcm9nYml0cywx CisrLkxBU0YwOgorKwkuc3RyaW5nCSJhcnJheSIKKysuTEFTRjU6CisrCS5zdHJpbmcJInNpemUi CisrLkxBU0YzOgorKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXBvaW50ZXIuYyIKKysuTEFTRjY6Cisr CS5zdHJpbmcJImFycmF5X3QiCisrLkxBU0YxOgorKwkuc3RyaW5nCSJjaGFyIgorKy5MQVNGNDoK KysJLnN0cmluZwkiZ2RiLmFyY2giCisrLkxBU0YyOgorKwkuc3RyaW5nCSJHTlUgQyA0LjMuMiAy MDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKKysJLmlkZW50CSJHQ0M6IChHTlUpIDQuMy4yIDIw MDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgorKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIs QHByb2diaXRzCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXBvaW50ZXIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMK IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNGJiOWY4CitpbmRleCAwMDAw MDAwLi5mZTJjOGY3CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9u YW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cy5leHAKLUBAIC0wLDAgKzEsNDkgQEAKLSsjIENvcHly aWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNl ICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKLStz ZXQgdGVzdGZpbGUgbmFtZXNwYWNlLW11bHRpcGxlLWltcG9ydHMKLStzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5jYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K LStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKK0BAIC0wLDAg KzEsNDMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgogKwotKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKyAgIENvcHlyaWdodCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQor KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIHRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGlt cG9ydGVkIHdpdGhpbgotKyMgdGhlIGZ1bmN0aW9uLgorKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CiArCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4g dG8gYnJlYWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KKysgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KICsKLStnZGJfdGVzdCAicHJpbnQgeCIgIlxcJFxbMC05XF0uKiA9 IDExIgotK2dkYl90ZXN0ICJwcmludCB4eCIgIlxcJFxbMC05XF0uKiA9IDIyIgotK2dkYl90ZXN0 ICJwcmludCB4eHgiICJcXCRcWzAtOVxdLiogPSAzMyIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi45NzIzZjg3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MKLUBAIC0wLDAgKzEsMzYgQEAKLStu YW1lc3BhY2UgQQotK3sKLSsgIG5hbWVzcGFjZSBCCi0rICB7Ci0rICAgIGludCBhYiA9IDExOwot KyAgfQotK30KKysjaWYgMAogKwotK25hbWVzcGFjZSBDCisrdm9pZAorK2ZvbyAoaW50IHNpemUp CiArewotKyAgbmFtZXNwYWNlIEQKLSsgIHsKLSsgICAgdXNpbmcgbmFtZXNwYWNlIEE6OkI7Cisr ICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXplXTsKKysgIGFycmF5X3QgYXJyYXk7CisrICBpbnQg aTsKICsKLSsgICAgaW50Ci0rICAgIHNlY29uZCgpCi0rICAgIHsKLSsgICAgICBhYjsKLSsgICAg ICByZXR1cm4gMDsKLSsgICAgfQotKyAgfQorKyAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykK KysgICAgYXJyYXlbaV0gPSBpOwogKwotKyAgaW50Ci0rICBmaXJzdCgpCi0rICB7Ci0rICAgIC8v YWI7Ci0rICAgIHJldHVybiBEOjpzZWNvbmQoKTsKLSsgIH0KKysgIGFycmF5WzBdID0gMDsJLyog YnJlYWstaGVyZSAqLwogK30KICsKKysjZWxzZQorKwogK2ludAotK21haW4oKQorK21haW4gKHZv aWQpCiArewotKyAgLy9hYjsKLSsgIHJldHVybiBDOjpmaXJzdCgpOworKyAgZm9vICgyNik7Cisr ICBmb28gKDc4KTsKKysgIHJldHVybiAwOwogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbmFtZXNwYWNlLW5lc3RlZC1pbXBvcnRzLmV4cAorKworKyNlbmRpZgorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLmQyNzlmYjUKK2luZGV4IDAwMDAwMDAuLmQyNDNjZjEKIC0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uZXN0ZWQtaW1w b3J0cy5leHAKLUBAIC0wLDAgKzEsNTcgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXIuZXhwCitAQCAtMCwwICsxLDY2IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQpAQCAtMjI2MzQsOTggKzY2NjksNTc0IEBAIGluZGV4IDAwMDAwMDAuLmQyNzlmYjUKICsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsg ICAgc3RyYWNlICR0cmFjZWxldmVsCisraWYgIVtpc3RhcmdldCAieDg2XzY0LSotKiJdIHRoZW4g eworKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRl ci5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4iCisrICAgIHJldHVybgogK30KICsKLStz ZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCi0rc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1u ZXN0ZWQtaW1wb3J0cwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCisrc2V0IHRlc3RmaWxl IHg4Nl82NC12bGEtcG9pbnRlcgorK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCisr c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwogK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0g eworK3NldCBiaW5vYmpmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZm9vLm8K KytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNhc21maWxlfSIg IiR7Ymlub2JqZmlsZX0iIG9iamVjdCB7fV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3Vs ZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCisrfQorK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9ICR7Ymlub2JqZmlsZX0i ICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewogKyAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCiArICAgIHJldHVybiAtMQogK30KLSsK LSsjIEdldCB0aGluZ3Mgc3RhcnRlZC4KICsKICtnZGJfZXhpdAogK2dkYl9zdGFydAogK2dkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgogK2dkYl9sb2FkICR7YmluZmlsZX0KICsK LSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotK2lmICFbcnVu dG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQg bWFpbiIKLSsgICAgY29udGludWUKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQg eDg2XzY0LXZsYS1wb2ludGVyCisrICAgIHJldHVybiAtMQogK30KICsKLStnZGJfdGVzdCAicHJp bnQgYWIiICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKKytnZGJfYnJlYWtwb2lu dCAiYnJlYWtfaGVyZSIKKysKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWtfaGVy ZSIKKysKKytnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGNoYXIgXFwoXFwqXFwpXFxc W3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgYXJyYXkiCisrZ2RiX3Rlc3QgInB0eXBlIGFy cmF5IiAidHlwZSA9IGNoYXIgXFwoXFwqXFwpXFxcWzI2XFxcXSIgImZpcnN0OiBwdHlwZSBhcnJh eSIKKysKKytnZGJfdGVzdCAid2hhdGlzICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0i ICJmaXJzdDogd2hhdGlzICphcnJheSIKKytnZGJfdGVzdCAicHR5cGUgKmFycmF5IiAidHlwZSA9 IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBwdHlwZSAqYXJyYXkiCiArCi0rIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLStnZGJfYnJlYWtwb2ludCBDOjpmaXJz dAotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJDOjpmaXJzdCIKKytnZGJfdGVzdCAicCAo KmFycmF5KVxbMVxdIiAiXFwkXFswLTlcXSA9IDEgJ1xcXFwwMDEnIgorK2dkYl90ZXN0ICJwICgq YXJyYXkpXFsyXF0iICJcXCRcWzAtOVxdID0gMiAnXFxcXDAwMiciCisrZ2RiX3Rlc3QgInAgKCph cnJheSlcWzNcXSIgIlxcJFxbMC05XF0gPSAzICdcXFxcMDAzJyIKKytnZGJfdGVzdCAicCAoKmFy cmF5KVxbNFxdIiAiXFwkXFswLTlcXSA9IDQgJ1xcXFwwMDQnIgogKwotK2dkYl90ZXN0ICJwcmlu dCBhYiIgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuIgotK2dkYl90ZXN0ICJwcmlu dCBDOjpEOjphYiIgIj0gMTEiCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hl cmUiCiArCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLStn ZGJfYnJlYWtwb2ludCBDOjpEOjpzZWNvbmQKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi Qzo6RDo6c2Vjb25kIgorK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChc XCpcXClcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCisrZ2RiX3Rlc3Qg InB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFwoXFwqXFwpXFxcWzc4XFxcXSIgInNlY29uZDog cHR5cGUgYXJyYXkiCiArCi0rZ2RiX3Rlc3QgInByaW50IGFiIiAiPSAxMSIKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5jYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uby1pbXBvcnRzLmNjCisrZ2RiX3Rlc3QgIndoYXRpcyAq YXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiB3aGF0aXMgKmFycmF5Igor K2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25k OiBwdHlwZSAqYXJyYXkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZf NjQtdmxhLXR5cGVkZWYtZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEt dHlwZWRlZi1mb28uUworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjY2Zjdh MzkKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS10eXBlZGVmLWZvby5TCitAQCAtMCwwICsxLDQ1NSBAQAorKwkuZmlsZQkieDg2XzY0LXZsYS10 eXBlZGVmLmMiCisrCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCisrLkxkZWJ1 Z19hYmJyZXYwOgorKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKKysuTGRlYnVn X2luZm8wOgorKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMKKysuTGRlYnVnX2xp bmUwOgorKwkudGV4dAorKy5MdGV4dDA6CisrLmdsb2JsIGZvbworKwkudHlwZQlmb28sIEBmdW5j dGlvbgorK2ZvbzoKKysuTEZCMjoKKysJLmZpbGUgMSAieDg2XzY0LXZsYS10eXBlZGVmLmMiCisr CS5sb2MgMSAyMiAwCisrCXB1c2hxCSVyYnAKKysuTENGSTA6CisrCW1vdnEJJXJzcCwgJXJicAor Ky5MQ0ZJMToKKysJc3VicQkkNjQsICVyc3AKKysuTENGSTI6CisrCW1vdmwJJWVkaSwgLTM2KCVy YnApCisrCS5sb2MgMSAyMiAwCisrCW1vdnEJJXJzcCwgJXJheAorKwltb3ZxCSVyYXgsIC00OCgl cmJwKQorKwkubG9jIDEgMjMgMAorKwltb3ZsCS0zNiglcmJwKSwgJWVkeAorKwltb3ZzbHEJJWVk eCwlcmF4CisrCXN1YnEJJDEsICVyYXgKKysJbW92cQklcmF4LCAtMjQoJXJicCkKKysJLmxvYyAx IDI0IDAKKysJbW92c2xxCSVlZHgsJXJheAorKwlhZGRxCSQxNSwgJXJheAorKwlhZGRxCSQxNSwg JXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJc3VicQklcmF4LCAlcnNw CisrCW1vdnEJJXJzcCwgLTU2KCVyYnApCisrCW1vdnEJLTU2KCVyYnApLCAlcmF4CisrCWFkZHEJ JDE1LCAlcmF4CisrCXNocnEJJDQsICVyYXgKKysJc2FscQkkNCwgJXJheAorKwltb3ZxCSVyYXgs IC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAorKwltb3ZxCSVyYXgsIC0xNiglcmJw KQorKwkubG9jIDEgMjcgMAorKwltb3ZsCSQwLCAtNCglcmJwKQorKwlqbXAJLkwyCisrLkwzOgor KwkubG9jIDEgMjggMAorKwltb3ZsCS00KCVyYnApLCAlZXNpCisrCW1vdmwJLTQoJXJicCksICVl YXgKKysJbW92bAklZWF4LCAlZWN4CisrCW1vdnEJLTE2KCVyYnApLCAlcmR4CisrCW1vdnNscQkl ZXNpLCVyYXgKKysJbW92YgklY2wsICglcmR4LCVyYXgpCisrCS5sb2MgMSAyNyAwCisrCWFkZGwJ JDEsIC00KCVyYnApCisrLkwyOgorKwltb3ZsCS00KCVyYnApLCAlZWF4CisrCWNtcGwJLTM2KCVy YnApLCAlZWF4CisrCWpsCS5MMworKwkubG9jIDEgMzAgMAorKwkuZ2xvYmwJYnJlYWtfaGVyZQor K2JyZWFrX2hlcmU6CisrCW1vdnEJLTE2KCVyYnApLCAlcmF4CisrCW1vdmIJJDAsICglcmF4KQor Kwltb3ZxCS00OCglcmJwKSwgJXJzcAorKwkubG9jIDEgMzEgMAorKwlsZWF2ZQorKwlyZXQKKysu TEZFMjoKKysJLnNpemUJZm9vLCAuLWZvbworKwkuc2VjdGlvbgkuZGVidWdfZnJhbWUsIiIsQHBy b2diaXRzCisrLkxmcmFtZTA6CisrCS5sb25nCS5MRUNJRTAtLkxTQ0lFMAorKy5MU0NJRTA6Cisr CS5sb25nCTB4ZmZmZmZmZmYKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJIiIKKysJLnVsZWIxMjgg MHgxCisrCS5zbGViMTI4IC04CisrCS5ieXRlCTB4MTAKKysJLmJ5dGUJMHhjCisrCS51bGViMTI4 IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAorKwkudWxlYjEyOCAweDEKKysJLmFs aWduIDgKKysuTEVDSUUwOgorKy5MU0ZERTA6CisrCS5sb25nCS5MRUZERTAtLkxBU0ZERTAKKysu TEFTRkRFMDoKKysJLmxvbmcJLkxmcmFtZTAKKysJLnF1YWQJLkxGQjIKKysJLnF1YWQJLkxGRTIt LkxGQjIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMC0uTEZCMgorKwkuYnl0ZQkweGUKKysJ LnVsZWIxMjggMHgxMAorKwkuYnl0ZQkweDg2CisrCS51bGViMTI4IDB4MgorKwkuYnl0ZQkweDQK KysJLmxvbmcJLkxDRkkxLS5MQ0ZJMAorKwkuYnl0ZQkweGQKKysJLnVsZWIxMjggMHg2CisrCS5h bGlnbiA4CisrLkxFRkRFMDoKKysJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMKKysu TGZyYW1lMToKKysJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCisrLkxTQ0lFMToKKysJLmxvbmcJMHgw CisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSJ6UiIKKysJLnVsZWIxMjggMHgxCisrCS5zbGViMTI4 IC04CisrCS5ieXRlCTB4MTAKKysJLnVsZWIxMjggMHgxCisrCS5ieXRlCTB4MworKwkuYnl0ZQkw eGMKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkweDkwCisrCS51bGVi MTI4IDB4MQorKwkuYWxpZ24gOAorKy5MRUNJRTE6CisrLkxTRkRFMToKKysJLmxvbmcJLkxFRkRF MS0uTEFTRkRFMQorKy5MQVNGREUxOgorKwkubG9uZwkuTEFTRkRFMS0uTGZyYW1lMQorKwkubG9u ZwkuTEZCMgorKwkubG9uZwkuTEZFMi0uTEZCMgorKwkudWxlYjEyOCAweDAKKysJLmJ5dGUJMHg0 CisrCS5sb25nCS5MQ0ZJMC0uTEZCMgorKwkuYnl0ZQkweGUKKysJLnVsZWIxMjggMHgxMAorKwku Ynl0ZQkweDg2CisrCS51bGViMTI4IDB4MgorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkxLS5M Q0ZJMAorKwkuYnl0ZQkweGQKKysJLnVsZWIxMjggMHg2CisrCS5hbGlnbiA4CisrLkxFRkRFMToK KysJLnRleHQKKysuTGV0ZXh0MDoKKysJLnNlY3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2JpdHMK KysuTGRlYnVnX2xvYzA6CisrLkxMU1QwOgorKwkucXVhZAkuTEZCMi0uTHRleHQwCisrCS5xdWFk CS5MQ0ZJMC0uTHRleHQwCisrCS52YWx1ZQkweDIKKysJLmJ5dGUJMHg3NworKwkuc2xlYjEyOCA4 CisrCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCisrCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCisrCS52YWx1 ZQkweDIKKysJLmJ5dGUJMHg3NworKwkuc2xlYjEyOCAxNgorKwkucXVhZAkuTENGSTEtLkx0ZXh0 MAorKwkucXVhZAkuTEZFMi0uTHRleHQwCisrCS52YWx1ZQkweDIKKysJLmJ5dGUJMHg3NgorKwku c2xlYjEyOCAxNgorKwkucXVhZAkweDAKKysJLnF1YWQJMHgwCisrCS5zZWN0aW9uCS5kZWJ1Z19p bmZvCisrCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19zdGFydAorKy5MZGVidWdfc3RhcnQ6 CisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCisrCS5ieXRlCTB4OAorKwku dWxlYjEyOCAweDEKKysJLmxvbmcJLkxBU0YyCisrCS5ieXRlCTB4MQorKwkubG9uZwkuTEFTRjMK KysJLmxvbmcJLkxBU0Y0CisrCS5xdWFkCS5MdGV4dDAKKysJLnF1YWQJLkxldGV4dDAKKysJLmxv bmcJLkxkZWJ1Z19saW5lMAorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJ ImZvbyIKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTYKKysJLmJ5dGUJMHgxCisrCS5xdWFkCS5M RkIyCisrCS5xdWFkCS5MRkUyCisrCS5sb25nCS5MTFNUMAorKwkubG9uZwkweDgzCisrCS51bGVi MTI4IDB4MworKwkubG9uZwkuTEFTRjUKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTUKKysJLmxv bmcJMHg4MworKwkuYnl0ZQkweDIKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtNTIKKysuTHRh Z190eXBlZGVmOgorKwkudWxlYjEyOCAweDQKKysJLmxvbmcJLkxBU0Y2CisrCS5ieXRlCTB4MQor KwkuYnl0ZQkweDE3CisrCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbworKwku dWxlYjEyOCAweDUJLyogQWJicmV2IE51bWJlcjogNSAoRFdfVEFHX3ZhcmlhYmxlKSAqLworKwku bG9uZwkuTEFTRjAKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTgKKysjaWYgMQorKwkubG9uZwku THRhZ190eXBlZGVmIC0gLmRlYnVnX2luZm8KKysjZWxzZQorKwkvKiBEZWJ1Z2dpbmcgb25seTog U2tpcCB0aGUgdHlwZWRlZiBpbmRpcmVjdGlvbi4gICovCisrCS5sb25nCS5MdGFnX2FycmF5X3R5 cGUgLSAuZGVidWdfaW5mbworKyNlbmRpZgorKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9i bG9jazE6IHN0YXJ0ICovCisrCS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC0z MgorKyNpZiAwCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKyNlbHNlCisrCS5ieXRl CTB4OTYJLyogRFdfT1Bfbm9wICovCisrI2VuZGlmCisrCS8qIERXX0FUX2xvY2F0aW9uOiBEV19G T1JNX2Jsb2NrMTogZW5kICovCisrCS51bGViMTI4IDB4NgorKwkuc3RyaW5nCSJpIgorKwkuYnl0 ZQkweDEKKysJLmJ5dGUJMHgxOQorKwkubG9uZwkweDgzCisrCS5ieXRlCTB4MgorKwkuYnl0ZQkw eDkxCisrCS5zbGViMTI4IC0yMAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg3CisrCS5ieXRl CTB4NAorKwkuYnl0ZQkweDUKKysJLnN0cmluZwkiaW50IgorKy5MdGFnX2FycmF5X3R5cGU6Cisr CS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkgKi8K KysJLmxvbmcJMHhhMCArICgyZiAtIDFmKQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8K KysJLmxvbmcJMHg5ZCArICgyZiAtIDFmKQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JNX3JlZjQg Ki8KKysxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8K KysJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KKyszOgorKwkuYnl0ZQkweDk3CS8qIERXX09Q X3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KKysJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCisr MjoJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLworKwkudWxl YjEyOCAweDkKKysJLmxvbmcJMHg5ZCArICgyYiAtIDFiKQkvKiBEV19BVF90eXBlOiBEV19GT1JN X3JlZjQgKi8KKysJLmJ5dGUJMHgzCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTQwCisrCS5i eXRlCTB4NgorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4OAorKwkuYnl0 ZQkweDcKKysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDYKKysJLmxvbmcJ LkxBU0YxCisrCS5ieXRlCTB4MAorKy5MZGVidWdfZW5kOgorKwkuc2VjdGlvbgkuZGVidWdfYWJi cmV2CisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDExCisrCS5ieXRlCTB4MQorKwkudWxl YjEyOCAweDI1CisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4 YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4MWIKKysJLnVs ZWIxMjggMHhlCisrCS51bGViMTI4IDB4MTEKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4 MTIKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTAKKysJLnVsZWIxMjggMHg2CisrCS5i eXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4MmUKKysJ LmJ5dGUJMHgxCisrCS51bGViMTI4IDB4M2YKKysJLnVsZWIxMjggMHhjCisrCS51bGViMTI4IDB4 MworKwkudWxlYjEyOCAweDgKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVs ZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgyNworKwkudWxlYjEyOCAw eGMKKysJLnVsZWIxMjggMHgxMQorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMgorKwku dWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHg0MAorKwkudWxlYjEyOCAweDYKKysJLnVsZWIxMjgg MHgxCisrCS51bGViMTI4IDB4MTMKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweDMKKysJLnVsZWIxMjggMHg1CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVs ZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4 M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwku dWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJ LnVsZWIxMjggMHg0CisrCS51bGViMTI4IDB4MTYKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4 MworKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVs ZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAw eDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg1CisrCS51bGViMTI4 IDB4MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLnVs ZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAw eGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4MgorKwku dWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDYKKysJ LnVsZWIxMjggMHgzNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4 OAorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51 bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJLnVsZWIxMjgg MHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4 IDB4NworKwkudWxlYjEyOCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVs ZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4 MworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAw eDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCisrCS51bGViMTI4 IDB4MQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCisrCS51 bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4IDB4MQkvKiBEV19BVF9z aWJsaW5nICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4 IDB4NTAJLyogRFdfQVRfZGF0YV9sb2NhdGlvbiAqLworKwkudWxlYjEyOCAweGEJLyogRFdfRk9S TV9ibG9jazEgKi8KKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDkKKysJ LnVsZWIxMjggMHgyMQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBl ICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4IDB4MmYK KysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhh CisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEy OCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIKKysJLmJ5dGUJMHgwCisrCS5i eXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJ LnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4 IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS5ieXRlCTB4MAorKwkuYnl0 ZQkweDAKKysJLmJ5dGUJMHgwCisrCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixAcHJvZ2Jp dHMKKysJLmxvbmcJMHgxNgorKwkudmFsdWUJMHgyCisrCS5sb25nCS5MZGVidWdfaW5mbzAKKysJ LmxvbmcJMHhhOAorKwkubG9uZwkweDJkCisrCS5zdHJpbmcJImZvbyIKKysJLmxvbmcJMHgwCisr CS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cworKwkubG9uZwkweDJjCisrCS52 YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1Z19pbmZvMAorKwkuYnl0ZQkweDgKKysJLmJ5dGUJMHgw CisrCS52YWx1ZQkweDAKKysJLnZhbHVlCTB4MAorKwkucXVhZAkuTHRleHQwCisrCS5xdWFkCS5M ZXRleHQwLS5MdGV4dDAKKysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwkuc2VjdGlvbgkuZGVi dWdfc3RyLCJNUyIsQHByb2diaXRzLDEKKysuTEFTRjA6CisrCS5zdHJpbmcJImFycmF5IgorKy5M QVNGNToKKysJLnN0cmluZwkic2l6ZSIKKysuTEFTRjM6CisrCS5zdHJpbmcJIng4Nl82NC12bGEt dHlwZWRlZi5jIgorKy5MQVNGNjoKKysJLnN0cmluZwkiYXJyYXlfdCIKKysuTEFTRjE6CisrCS5z dHJpbmcJImNoYXIiCisrLkxBU0Y0OgorKwkuc3RyaW5nCSJnZGIuYXJjaCIKKysuTEFTRjI6Cisr CS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgorKwkuaWRl bnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCisrCS5zZWN0 aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXR5cGVkZWYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLmQxYzY4YWIKK2luZGV4IDAwMDAwMDAuLmI4MDljNGUKIC0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1uby1pbXBvcnRzLmNjCi1AQCAtMCwwICsx LDM3IEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5j CitAQCAtMCwwICsxLDQzIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KICsKLStuYW1lc3BhY2UgQQotK3sKLSsgIGludCBfYSA9IDExOworKyAg IENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgbmFt ZXNwYWNlIEJ7CisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLSsgICAgaW50IGFi ID0gMjI7CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLSsgICAgbmFtZXNwYWNlIEN7Cisr ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0rICAgICAgaW50IGFiYyA9IDMz OworKyNpZiAwCiArCi0rICAgICAgaW50IHNlY29uZCgpewotKyAgICAgICAgcmV0dXJuIDA7Ci0r ICAgICAgfQorK3ZvaWQKKytmb28gKGludCBzaXplKQorK3sKKysgIHR5cGVkZWYgY2hhciBhcnJh eV90W3NpemVdOworKyAgYXJyYXlfdCBhcnJheTsKKysgIGludCBpOwogKwotKyAgICB9CisrICBm b3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorKyAgICBhcnJheVtpXSA9IGk7CiArCi0rICAgIGlu dCBmaXJzdCgpewotKyAgICAgIF9hOwotKyAgICAgIGFiOwotKyAgICAgIEM6OmFiYzsKLSsgICAg ICByZXR1cm4gQzo6c2Vjb25kKCk7Ci0rICAgIH0KLSsgIH0KKysgIGFycmF5WzBdID0gMDsJLyog YnJlYWstaGVyZSAqLwogK30KICsKKysjZWxzZQogKwogK2ludAotK21haW4oKQorK21haW4gKHZv aWQpCiArewotKyAgQTo6X2E7Ci0rICBBOjpCOjphYjsKLSsgIEE6OkI6OkM6OmFiYzsKLSsgIHJl dHVybiBBOjpCOjpmaXJzdCgpOworKyAgZm9vICgyNik7CisrICBmb28gKDc4KTsKKysgIHJldHVy biAwOwogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8t aW1wb3J0cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5l eHAKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82 NC12bGEtdHlwZWRlZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlw ZWRlZi5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lNTA4MTAzCitp bmRleCAwMDAwMDAwLi5iMDU0MTFlCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0cy5leHAKLUBAIC0wLDAgKzEsNzYgQEAKLSsjIENv cHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCitAQCAtMCwwICsxLDY0IEBA CisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjI3NDAsNDMxICs3MjUxLDIwNCBAQCBp bmRleCAwMDAwMDAwLi5lNTA4MTAzCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0r aWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KKysjIFRl c3QgRFdfQVRfZGF0YV9sb2NhdGlvbiBhY2Nlc3NlZCB0aHJvdWdoIERXX1RBR190eXBlZGVmIGlu dGVybWVkaWF0ZS4KICsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCisraWYgIVtpc3Rh cmdldCAieDg2XzY0LSotKiJdIHRoZW4geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdk Yi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4i CisrICAgIHJldHVybgorK30KICsKLStzZXQgdGVzdGZpbGUgbmFtZXNwYWNlLW5vLWltcG9ydHMK LStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYworK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXR5 cGVkZWYKKytzZXQgc3JjYXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUworK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmMKICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKKytzZXQgYmlub2Jq ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCisraWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9iamZpbGV9 IiBvYmplY3Qge31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0 ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgdGVzdCBwcm9ncmFtIgogKyAgICByZXR1cm4gLTEKICt9Ci0rCi0rIyBHZXQgdGhpbmdz IHN0YXJ0ZWQuCiArCiArZ2RiX2V4aXQKICtnZGJfc3RhcnQKICtnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKICtnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0rIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLStpZiAhW3J1bnRvX21haW5dIHRoZW4g ewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4iCi0rICAgIGNv bnRpbnVlCi0rfQotKwotK2dkYl90ZXN0ICJwcmludCBBOjpfYSIgIj0gMTEiCi0rZ2RiX3Rlc3Qg InByaW50IEE6OkI6OmFiIiAiPSAyMiIKLStnZGJfdGVzdCAicHJpbnQgQTo6Qjo6Qzo6YWJjIiAi PSAzMyIKLSsKLStnZGJfdGVzdCAicHJpbnQgX2EiICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBj b250ZXh0LiIKLStnZGJfdGVzdCAicHJpbnQgYWIiICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBj b250ZXh0LiIKLStnZGJfdGVzdCAicHJpbnQgYWJjIiAiTm8gc3ltYm9sIC4qIGluIGN1cnJlbnQg Y29udGV4dC4iCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLStnZGJfYnJlYWtwb2ludCBBOjpCOjpmaXJzdAotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJBOjpCOjpmaXJzdCIKLSsKLStnZGJfdGVzdCAicHJpbnQgQTo6X2EiICI9IDExIgotK2dk Yl90ZXN0ICJwcmludCBBOjpCOjphYiIgIj0gMjIiCi0rZ2RiX3Rlc3QgInByaW50IEE6OkI6OkM6 OmFiYyIgIj0gMzMiCi0rCi0rZ2RiX3Rlc3QgInByaW50IF9hIiAiPSAxMSIKLStnZGJfdGVzdCAi cHJpbnQgYWIiICI9IDIyIgotK2dkYl90ZXN0ICJwcmludCBDOjphYmMiICI9IDMzIgotKwotK2dk Yl90ZXN0ICJwcmludCBhYmMiICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LiIKLSsK LSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotK2dkYl9icmVh a3BvaW50IEE6OkI6OkM6OnNlY29uZAotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJBOjpC OjpDOjpzZWNvbmQiCi0rCi0rZ2RiX3Rlc3QgInByaW50IEE6Ol9hIiAiPSAxMSIKLStnZGJfdGVz dCAicHJpbnQgQTo6Qjo6YWIiICI9IDIyIgotK2dkYl90ZXN0ICJwcmludCBBOjpCOjpDOjphYmMi ICI9IDMzIgotKwotK2dkYl90ZXN0ICJwcmludCBfYSIgIj0gMTEiCi0rZ2RiX3Rlc3QgInByaW50 IGFiIiAiPSAyMiIKLStnZGJfdGVzdCAicHJpbnQgYWJjIiAiPSAzMyIKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVjdXJzaXZlLmNjIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjQ2ZDRjMTgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL25hbWVzcGFjZS1yZWN1cnNpdmUuY2MKLUBAIC0wLDAgKzEsNDcgQEAKLStuYW1lc3Bh Y2UgQXsKLSsgIGludCBheCA9IDk7CisraWYgIVtydW50b19tYWluXSB7CisrICAgIHVudGVzdGVk IHg4Nl82NC12bGEtdHlwZWRlZgorKyAgICByZXR1cm4gLTEKICt9CiArCi0rbmFtZXNwYWNlIEJ7 Ci0rICB1c2luZyBuYW1lc3BhY2UgQTsKLSt9CisrZ2RiX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUi CiArCi0rbmFtZXNwYWNlIEN7Ci0rICB1c2luZyBuYW1lc3BhY2UgQjsKLSt9CisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCiArCi0rdXNpbmcgbmFtZXNwYWNlIEM7Cisr Z2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAiZmlyc3Q6IHdoYXRpcyBh cnJheSIKICsKLSsvLy0tLS0tLS0tLS0tLS0tLQotK25hbWVzcGFjZSBEewotKyAgdXNpbmcgbmFt ZXNwYWNlIEQ7Ci0rICBpbnQgZHggPSA5OTsKLSt9Ci0rdXNpbmcgbmFtZXNwYWNlIEQ7CisrZ2Ri X3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBwdHlw ZSBhcnJheSIKICsKLSsvLy0tLS0tLS0tLS0tLS0tLQotK25hbWVzcGFjZXsKLSsgIG5hbWVzcGFj ZXsKLSsgICAgaW50IHh4ID0gOTk5OwotKyAgfQotK30KKytnZGJfdGVzdCAicCBhcnJheVxbMVxd IiAiXFwkXFswLTlcXSA9IDEgJ1xcXFwwMDEnIgorK2dkYl90ZXN0ICJwIGFycmF5XFsyXF0iICJc XCRcWzAtOVxdID0gMiAnXFxcXDAwMiciCisrZ2RiX3Rlc3QgInAgYXJyYXlcWzNcXSIgIlxcJFxb MC05XF0gPSAzICdcXFxcMDAzJyIKKytnZGJfdGVzdCAicCBhcnJheVxbNFxdIiAiXFwkXFswLTlc XSA9IDQgJ1xcXFwwMDQnIgogKwotKy8vLS0tLS0tLS0tLS0tLS0tCi0rbmFtZXNwYWNlIEV7Ci0r ICBpbnQgZXggPSA5OTk5OwotK30KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWtf aGVyZSIKICsKLStuYW1lc3BhY2UgRnsKLSsgIG5hbWVzcGFjZSBGRSA9IEU7Ci0rfQorK2dkYl90 ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gYXJyYXlfdCIgInNlY29uZDogd2hhdGlzIGFycmF5 IgogKwotK25hbWVzcGFjZSBHewotKyAgbmFtZXNwYWNlIEdGID0gRjsKLSt9CisrZ2RiX3Rlc3Qg InB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJy YXkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCitpbmRleCBlY2MzMjg5Li5mNzlhZDQwIDEw MDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKK0BAIC0xNyw2ICsxNywxMyBAQAorIAorIGlu dCBhcnJheVtdID0gezEsIDIsIDMsIDR9OworIAorKyNpZmRlZiBfX0dOVUNfXworK3N0cnVjdAor KyAgeworKyAgICBpbnQgYVswXTsKKysgIH0gdW5ib3VuZDsKKysjZW5kaWYKICsKLSsvLy0tLS0t LS0tLS0tLS0tLS0KLStpbnQgbWFpbigpewotKyAgdXNpbmcgbmFtZXNwYWNlIEQ7Ci0rICBuYW1l c3BhY2UgR1ggPSBHOwotKyAgcmV0dXJuIGF4ICsgZHggKyB4eCArIEc6OkdGOjpGRTo6ZXg7Cisg aW50CisgbWFpbiAodm9pZCkKKyB7CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9hcnJheWlkeC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAoraW5k ZXggM2EzMzYxOC4uZjJlMTFkZCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YXJyYXlpZHguZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAor QEAgLTU3LDQgKzU3LDEyIEBAIGdkYl90ZXN0ICJwcmludCBhcnJheSIgXAorICAgICAgICAgICJc XHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBcXFxbMlxcXF0gPSAzLCBcXFxbM1xcXF0g PSA0XFx9IiBcCisgICAgICAgICAgIlByaW50IGFycmF5IHdpdGggYXJyYXktaW5kZXhlcyBvbiIK KyAKKy0KKytzZXQgdGVzdCAicCB1bmJvdW5kLmEgPT0gJnVuYm91bmQuYVxbMFxdIgorK2dkYl90 ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICIgPSAxXHJcbiRnZGJfcHJvbXB0 ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiTm8gc3ltYm9sIFwidW5ib3Vu ZFwiIGluIGN1cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9tcHQgJCIgeworKwl1bnN1cHBvcnRl ZCAiJHRlc3QgKG5vIEdDQykiCisrICAgIH0KICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9u YW1lc3BhY2UtcmVjdXJzaXZlLmV4cAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ251LWlmdW5jLWxpYi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGli LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41NTQzNzU3CitpbmRleCAw MDAwMDAwLi42ODA1MzBhCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9uYW1lc3BhY2UtcmVjdXJzaXZlLmV4cAotQEAgLTAsMCArMSw3NSBAQAotKyMgQ29weXJpZ2h0 IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGli LmMKK0BAIC0wLDAgKzEsMzMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2Ug JHRyYWNlbGV2ZWwKLSt9CisrICAgQ29weXJpZ2h0IDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAorKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0rc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1yZWN1 cnNpdmUKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotK3NldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31d ICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0i Ci0rICAgIHJldHVybiAtMQotK30KKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKwotK2lmIFtn ZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7Ci0rICAgIHJldHVybiAtMTsKLSt9CisrICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCisrZXh0ZXJuIHZvbGF0aWxlIGludCBn bnVfaWZ1bmNfaW5pdGlhbGl6ZWQ7CisrZXh0ZXJuIGludCBpbml0X3N0dWIgKGludCBhcmcpOwor K2V4dGVybiBpbnQgZmluYWwgKGludCBhcmcpOwogKwotKyMgR2V0IHRoaW5ncyBzdGFydGVkLgor K3R5cGVkZWYgaW50ICgqZmluYWxfdCkgKGludCBhcmcpOwogKwotK2dkYl9leGl0Ci0rZ2RiX3N0 YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHti aW5maWxlfQorK2FzbSAoIi50eXBlIGdudV9pZnVuYywgQGdudV9pbmRpcmVjdF9mdW5jdGlvbiIp OwogKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVu IHRvIGJyZWFrcG9pbnQgbWFpbiIKLSsgICAgY29udGludWUKKytmaW5hbF90CisrZ251X2lmdW5j ICh2b2lkKQorK3sKKysgIGlmICghIGdudV9pZnVuY19pbml0aWFsaXplZCkKKysgICAgcmV0dXJu IGluaXRfc3R1YjsKKysgIGVsc2UKKysgICAgcmV0dXJuIGZpbmFsOwogK30KLSsKLSsjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgdGVzdCBwcmludGluZyBm cm9tIG5hbWVzcGFjZSBpbXBvcnRlZCBpbnRvCi0rIyBpbXBvcnRlZCBuYW1lc3BhY2UKLSsKLStn ZGJfdGVzdCAicHJpbnQgYXgiICI9IDkiCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLSsjIHRlc3QgdGhhdCBnZGIgY2FuIHByaW50IHdpdGhvdXQgZmFs bGluZyAKLSsjIGludG8gc2VhcmNoIGxvb3AKLSsKLStnZGJfdGVzdCAicHJpbnQgZHgiICI9IDk5 IgotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyB0 ZXN0IHByaW50aW5nIGZyb20gbmFtZXNwYWNlIGltcG9ydGVkIGludG8KLSsjIGltcG9ydGVkIG5h bWVzcGFjZSB3aGVyZSBpbXBvcnRzIGFyZSBpbXBsaWNpdAotKyMgYW5vbnltb3VzIG5hbWVzcGFj ZSBpbXBvcnRzLgotKwotK2dkYl90ZXN0ICJwcmludCB4eCIgIj0gOTk5IgotKwotKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0IHByaW50aW5nIHVz aW5nIHJlY3Vyc2l2ZSBuYW1lc3BhY2UKLSsjIGFsaWFzZXMuCi0rCi0rc2V0dXBfa2ZhaWwgImdk Yi8xMDU0MSIgIiotKi0qIgotK2dkYl90ZXN0ICJwdHlwZSBHOjpHRiIgIj0gbmFtZXNwYWNlIEYi Ci0rCi0rc2V0dXBfa2ZhaWwgImdkYi8xMDU0MSIgIiotKi0qIgotK2dkYl90ZXN0ICJwcmludCBH OjpHRjo6RkU6OmV4IiAiPSA5OTk5IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuY2MKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1 bmMuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE3M2U0OWIKK2luZGV4 IDAwMDAwMDAuLjEwNjI3MWYKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmNjCi1AQCAtMCwwICsxLDkzIEBACi0r aW50IGE7Ci0raW50IGI7Ci0raW50IGM7Ci0raW50IGQ7Ci0raW50IGU7Ci0raW50IGY7Ci0raW50 IGc7Ci0raW50IGg7Ci0raW50IGk7Ci0raW50IGo7Ci0raW50IGs7Ci0raW50IGw7Ci0raW50IG07 Ci0raW50IG47Ci0raW50IG87Ci0raW50IHA7Ci0raW50IHE7Ci0raW50IHI7Ci0raW50IHM7Ci0r aW50IHQ7Ci0raW50IHU7Ci0raW50IHY7Ci0raW50IHc7Ci0raW50IHg7Ci0raW50IHk7Ci0raW50 IHo7Ci0rCi0rbmFtZXNwYWNlIEEKLSt7Ci0rICBpbnQgeHl6OwotKwotKyAgdXNpbmcgOjphOwot KyAgdXNpbmcgOjpiOwotKyAgdXNpbmcgOjpjOwotKyAgdXNpbmcgOjpkOwotKyAgdXNpbmcgOjpl OwotKyAgdXNpbmcgOjpmOwotKyAgdXNpbmcgOjpnOwotKyAgdXNpbmcgOjpoOwotKyAgdXNpbmcg OjppOwotKyAgdXNpbmcgOjpqOwotKyAgdXNpbmcgOjprOwotKyAgdXNpbmcgOjpsOwotKyAgdXNp bmcgOjptOwotKyAgdXNpbmcgOjpuOwotKyAgdXNpbmcgOjpvOwotKyAgdXNpbmcgOjpwOwotKyAg dXNpbmcgOjpxOwotKyAgdXNpbmcgOjpyOwotKyAgdXNpbmcgOjpzOwotKyAgdXNpbmcgOjp0Owot KyAgdXNpbmcgOjp1OwotKyAgdXNpbmcgOjp2OwotKyAgdXNpbmcgOjp3OwotKyAgdXNpbmcgOjp4 OwotKyAgdXNpbmcgOjp5OwotKyAgdXNpbmcgOjp6OworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9nbnUtaWZ1bmMuYworQEAgLTAsMCArMSw2MSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMg cGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rfQorKyAgIENvcHlyaWdodCAyMDA5 LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotK3VzaW5nIEE6OmE7Ci0r dXNpbmcgQTo6YjsKLSt1c2luZyBBOjpjOwotK3VzaW5nIEE6OmQ7Ci0rdXNpbmcgQTo6ZTsKLSt1 c2luZyBBOjpmOwotK3VzaW5nIEE6Omc7Ci0rdXNpbmcgQTo6aDsKLSt1c2luZyBBOjppOwotK3Vz aW5nIEE6Omo7Ci0rdXNpbmcgQTo6azsKLSt1c2luZyBBOjpsOwotK3VzaW5nIEE6Om07Ci0rdXNp bmcgQTo6bjsKLSt1c2luZyBBOjpvOwotK3VzaW5nIEE6OnA7Ci0rdXNpbmcgQTo6cTsKLSt1c2lu ZyBBOjpyOwotK3VzaW5nIEE6OnM7Ci0rdXNpbmcgQTo6dDsKLSt1c2luZyBBOjp1OwotK3VzaW5n IEE6OnY7Ci0rdXNpbmcgQTo6dzsKLSt1c2luZyBBOjp4OwotK3VzaW5nIEE6Onk7Ci0rdXNpbmcg QTo6ejsKLSsKLSt1c2luZyBuYW1lc3BhY2UgQTsKLSsKLStpbnQgbWFpbiAoKQotK3sKLSsgIHJl dHVybiAwOwotK30KLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zLmV4cAotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmYyMmExNGUKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25z LmV4cAotQEAgLTAsMCArMSw1MCBAQAotKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLSsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLStp ZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQorKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVn X2lkIDAKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CiArCi0rc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1z dHJlc3MtZGVjbGFyYXRpb25zCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKLStzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0raWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxl IHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg dGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKKytpbnQKKytpbml0X3N0dWIgKGludCBhcmcp CisreworKyAgcmV0dXJuIDA7CiArfQogKwotK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZp bGV9XSB7Ci0rICAgIHJldHVybiAtMTsKKytpbnQKKytmaW5hbCAoaW50IGFyZykKKyt7CisrICBy ZXR1cm4gYXJnICsgMTsKICt9CiArCi0rIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrLyogTWFrZSBk aWZmZXJlbnRpYXRpb24gb2YgaG93IHRoZSBnbnVfaWZ1bmMgY2FsbCByZXNvbHZlcyBiZWZvcmUg YW5kIGFmdGVyCisrICAgY2FsbGluZyBnbnVfaWZ1bmNfcHJlLiAgVGhpcyBlbnN1cmVzIHRoZSBy ZXNvbHZlZCBmdW5jdGlvbiBhZGRyZXNzIGlzIG5vdAorKyAgIGJlaW5nIGNhY2hlZCBhbnl3aGVy ZSBmb3IgdGhlIGRlYnVnZ2luZyBwdXJwb3Nlcy4gICovCiArCi0rZ2RiX2V4aXQKLStnZGJfc3Rh cnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2Jp bmZpbGV9Cisrdm9sYXRpbGUgaW50IGdudV9pZnVuY19pbml0aWFsaXplZDsKICsKLStpZiAhW3J1 bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50 IG1haW4iCi0rICAgIGNvbnRpbnVlCisrc3RhdGljIHZvaWQKKytnbnVfaWZ1bmNfcHJlICh2b2lk KQorK3sKKysgIGFzc2VydCAoIWdudV9pZnVuY19pbml0aWFsaXplZCk7CisrCisrICBnbnVfaWZ1 bmNfaW5pdGlhbGl6ZWQgPSAxOwogK30KICsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCB0aGF0IHRoZSBzZWFyY2ggY2FuIGZhaWwgZWZmaWNp ZW50bHkgCisrZXh0ZXJuIGludCBnbnVfaWZ1bmMgKGludCBhcmcpOwogKwotK2dkYl90ZXN0ICJw cmludCBmYWtleCIgIk5vIHN5bWJvbCBcImZha2V4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utc3RyZXNzLmNjIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLmYzNDA4M2UKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuY2MKLUBAIC0wLDAgKzEsNjAgQEAKLSsKLStu YW1lc3BhY2UgQXsgaW50IHg7IH0KLStuYW1lc3BhY2UgQnsgaW50IHg7IH0KLStuYW1lc3BhY2Ug Q3sgaW50IHg7IH0KLStuYW1lc3BhY2UgRHsgaW50IHg7IH0KLStuYW1lc3BhY2UgRXsgaW50IHg7 IH0KLStuYW1lc3BhY2UgRnsgaW50IHg7IH0KLStuYW1lc3BhY2UgR3sgaW50IHg7IH0KLStuYW1l c3BhY2UgSHsgaW50IHg7IH0KLStuYW1lc3BhY2UgSXsgaW50IHg7IH0KLStuYW1lc3BhY2UgSnsg aW50IHg7IH0KLStuYW1lc3BhY2UgS3sgaW50IHg7IH0KLStuYW1lc3BhY2UgTHsgaW50IHg7IH0K LStuYW1lc3BhY2UgTXsgaW50IHg7IH0KLStuYW1lc3BhY2UgTnsgaW50IHg7IH0KLStuYW1lc3Bh Y2UgT3sgaW50IHg7IH0KLStuYW1lc3BhY2UgUHsgaW50IHg7IH0KLStuYW1lc3BhY2UgUXsgaW50 IHg7IH0KLStuYW1lc3BhY2UgUnsgaW50IHg7IH0KLStuYW1lc3BhY2UgU3sgaW50IHg7IH0KLStu YW1lc3BhY2UgVHsgaW50IHg7IH0KLStuYW1lc3BhY2UgVXsgaW50IHg7IH0KLStuYW1lc3BhY2Ug VnsgaW50IHg7IH0KLStuYW1lc3BhY2UgV3sgaW50IHg7IH0KLStuYW1lc3BhY2UgWHsgaW50IHg7 IH0KLStuYW1lc3BhY2UgWXsgaW50IHg7IH0KLStuYW1lc3BhY2UgWnsgaW50IHg7IH0KLSsKLSsK LStpbnQgbWFpbigpewotKwotKyAgdXNpbmcgbmFtZXNwYWNlIEE7Ci0rICB1c2luZyBuYW1lc3Bh Y2UgQjsKLSsgIHVzaW5nIG5hbWVzcGFjZSBDOwotKyAgdXNpbmcgbmFtZXNwYWNlIEQ7Ci0rICB1 c2luZyBuYW1lc3BhY2UgRTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBGOwotKyAgdXNpbmcgbmFtZXNw YWNlIEc7Ci0rICB1c2luZyBuYW1lc3BhY2UgSDsKLSsgIHVzaW5nIG5hbWVzcGFjZSBJOwotKyAg dXNpbmcgbmFtZXNwYWNlIEo7Ci0rICB1c2luZyBuYW1lc3BhY2UgSzsKLSsgIHVzaW5nIG5hbWVz cGFjZSBMOwotKyAgdXNpbmcgbmFtZXNwYWNlIE07Ci0rICB1c2luZyBuYW1lc3BhY2UgTjsKLSsg IHVzaW5nIG5hbWVzcGFjZSBPOwotKyAgdXNpbmcgbmFtZXNwYWNlIFA7Ci0rICB1c2luZyBuYW1l c3BhY2UgUTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBSOwotKyAgdXNpbmcgbmFtZXNwYWNlIFM7Ci0r ICB1c2luZyBuYW1lc3BhY2UgVDsKLSsgIHVzaW5nIG5hbWVzcGFjZSBVOwotKyAgdXNpbmcgbmFt ZXNwYWNlIFY7Ci0rICB1c2luZyBuYW1lc3BhY2UgVzsKLSsgIHVzaW5nIG5hbWVzcGFjZSBYOwot KyAgdXNpbmcgbmFtZXNwYWNlIFk7Ci0rICB1c2luZyBuYW1lc3BhY2UgWjsKKytpbnQKKyttYWlu ICh2b2lkKQorK3sKKysgIGludCBpOwogKwotKyAgcmV0dXJuIDA7CisrICBnbnVfaWZ1bmNfcHJl ICgpOworKyAgCisrICBpID0gZ251X2lmdW5jICgxKTsJLyogYnJlYWstYXQtY2FsbCAqLworKyAg YXNzZXJ0IChpID09IDIpOworKworKyAgZ251X2lmdW5jICgyKTsJLyogYnJlYWstYXQtbmV4dGNh bGwgKi8KKysKKysgIHJldHVybiAwOwkvKiBicmVhay1hdC1leGl0ICovCiArfQotXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLXN0cmVzcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utc3RyZXNz LmV4cAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLjE4MDY1MjMKK2luZGV4IDAwMDAwMDAuLjhlY2Y1NTgKIC0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuZXhw Ci1AQCAtMCwwICsxLDUwIEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAor QEAgLTAsMCArMSwxMTAgQEAKKysjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpA QCAtMjMxNzksNjM4ICs3NDYzLDM3NyBAQCBpbmRleCAwMDAwMDAwLi4xODA2NTIzCiArIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0 cmFjZSAkdHJhY2VsZXZlbAorK2lmIHtbc2tpcF9zaGxpYl90ZXN0c119IHsKKysgICAgcmV0dXJu IDAKICt9CiArCi0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAotKwotK3NldCB0ZXN0Zmls ZSBuYW1lc3BhY2Utc3RyZXNzCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKKytzZXQgdGVz dGZpbGUgImdudS1pZnVuYyIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiArc2V0IGJpbmZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgYysrfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRl c3QgcHJvZ3JhbSIKKysKKytzZXQgbGliZmlsZSAiJHt0ZXN0ZmlsZX0tbGliIgorK3NldCBsaWJz cmMgJHtsaWJmaWxlfS5jCisrc2V0IGxpYl9zbyAke29iamRpcn0vJHtzdWJkaXJ9LyR7bGliZmls ZX0uc28KKysKKysjIFdlIG5lZWQgRFdBUkYgZm9yIHRoZSAiZmluYWwiIGZ1bmN0aW9uIGFzIHdl ICJzdGVwIiBpbnRvIHRoZSBmdW5jdGlvbiBhbmQgR0RCCisrIyB3b3VsZCBzdGVwLW92ZXIgdGhl ICJmaW5hbCIgZnVuY3Rpb24gaWYgdGhlcmUgd291bGQgYmUgbm8gbGluZSBudW1iZXIgZGVidWcK KysjIGluZm9ybWF0aW9uIChEV0FSRikgYXZhaWxhYmxlLgorKyMKKysjIFdlIG11c3Qgbm90IGhh dmUgRFdBUkYgZm9yIHRoZSAiZ251X2lmdW5jIiBmdW5jdGlvbiBhcyBEV0FSRiBoYXMgbm8gd2F5 IHRvCisrIyBleHByZXNzIHRoZSBnbnUtaWZ1bmMgdHlwZSBhbmQgaXQgd291bGQgYmUgY29uc2lk ZXJlZCBhcyBhIHJlZ3VsYXIgZnVuY3Rpb24KKysjIGR1ZSB0byBEV0FSRiBieSBHREIuICBJbiBF TEYgZ251LWlmdW5jIGlzIGV4cHJlc3NlZCBieSB0aGUgU1RUX0dOVV9JRlVOQyB0eXBlLgorKyMK KysjIEJvdGggZnVuY3Rpb25zIG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUgc2hhcmVkIGxpYnJhcnkg ZmlsZSBidXQKKysjIGdkYl9jb21waWxlX3NobGliIGhhcyBubyB3YXkgdG8gc3BlY2lmeSBzb3Vy Y2Utc3BlY2lmaWMgY29tcGlsYXRpb24gb3B0aW9ucy4KKysjCisrIyBUaGVyZWZvcmUgJGxpYmZp bGUgY29udGFpbnMgb25seSB0aGUgZ251LWlmdW5jIGZ1bmN0aW9uIHdpdGggbm8gRFdBUkYKKysj IHJlZmVyZW5jaW5nIGFsbCB0aGUgb3RoZXIgcGFydHMgZnJvbSB0aGUgbWFpbiBleGVjdXRhYmxl IHdpdGggRFdBUkYuCisrCisrc2V0IGxpYl9vcHRzIHt9Cisrc2V0IGV4ZWNfb3B0cyBbbGlzdCBk ZWJ1ZyBzaGxpYj0kbGliX3NvXQorKworK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9 XSB7CiArICAgIHJldHVybiAtMQogK30KICsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5m aWxlfV0gewotKyAgICByZXR1cm4gLTE7CisraWYgeyBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNk aXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfc28gJGxpYl9vcHRzXSAhPSAiIgorKyAgICAgfHwg W2dkYl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHNyY2ZpbGUgJGJpbmZpbGUgZXhlY3V0 YWJsZSAkZXhlY19vcHRzXSAhPSAiIn0geworKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBp bGUgZWl0aGVyICRsaWJzcmMgb3IgJHNyY2ZpbGUuIgorKyAgICByZXR1cm4gLTEKICt9CiArCi0r IyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgogKwotK2dk Yl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly Ci0rZ2RiX2xvYWQgJHtiaW5maWxlfQorK2NsZWFuX3Jlc3RhcnQgJHRlc3RmaWxlCisrZ2RiX2xv YWRfc2hsaWJzICR7bGliX3NvfQogKwogK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBl cnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKLSsgICAgY29udGludWUKKysg ICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iCisrICAgIHJldHVybiAxOwogK30KICsKLSsjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCB0aGF0IHRo ZSBzZWFyY2ggY2FuIGZhaWwgZWZmaWNpZW50bHkgCi0rCi0rZ2RiX3Rlc3QgInByaW50IHkiICJO byBzeW1ib2wgXCJ5XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNw YWNlLmV4cAotaW5kZXggNDM2MmZkOC4uZjdjZmQ1NyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVz cGFjZS5leHAKLUBAIC0yNCw2ICsyNCw3IEBACi0gIyBmb3IgbmFtZXNwYWNlcy4KLSAjIE5vdGU6 IEFzIG9mIDIwMDAtMDYtMDMsIHRoZXkgcGFzc2VkIHVuZGVyIGcrKyAtIGRqYgotIAotK2xvYWRf bGliICJjcC1zdXBwb3J0LmV4cCIKLSAKLSBpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSAgICAgICAg IHN0cmFjZSAkdHJhY2VsZXZlbAotQEAgLTI0MSwxMSArMjQyLDE2IEBAIGdkYl90ZXN0ICJwdHlw ZSBFIiAidHlwZSA9IG5hbWVzcGFjZSBDOjpEOjpFIgotIGdkYl90ZXN0ICJwdHlwZSBDQ2xhc3Mi ICJ0eXBlID0gKGNsYXNzIEM6OkNDbGFzcyBce1xyXG4gIHB1YmxpYzp8c3RydWN0IEM6OkNDbGFz cyBceylcclxuICAgIGludCB4O1xyXG5cfSIKLSBnZGJfdGVzdCAicHR5cGUgQ0NsYXNzOjpOZXN0 ZWRDbGFzcyIgInR5cGUgPSAoY2xhc3MgQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyBce1xyXG4gIHB1 YmxpYzp8c3RydWN0IEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MgXHspXHJcbiAgICBpbnQgeTtcclxu XH0iCi0gZ2RiX3Rlc3QgInB0eXBlIE5lc3RlZENsYXNzIiAiTm8gc3ltYm9sIFwiTmVzdGVkQ2xh c3NcIiBpbiBjdXJyZW50IGNvbnRleHQuIgotLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0q IgotLWdkYl90ZXN0ICJwdHlwZSA6OkM6OkNDbGFzcyIgInR5cGUgPSBjbGFzcyBDOjpDQ2xhc3Mg XHtcclxuICBwdWJsaWM6XHJcbiAgICBpbnQgeDtcclxuXH0iCi0tc2V0dXBfa2ZhaWwgImdkYi8x NDQ4IiAiKi0qLSoiCi0tZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIg InR5cGUgPSBjbGFzcyBDOjpDQ2xhc3M6Ok5lc3RlZENsYXNzIFx7XHJcbiAgcHVibGljOlxyXG4g ICAgaW50IHk7XHJcblx9IgotLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgotK2NwX3Rl c3RfcHR5cGVfY2xhc3MgXAotKwkicHR5cGUgOjpDOjpDQ2xhc3MiICIiICJjbGFzcyIgIkM6OkND bGFzcyIgXAotKwl7Ci0rCSAgICB7IGZpZWxkIHB1YmxpYyAiaW50IHg7IiB9Ci0rCX0KLStjcF90 ZXN0X3B0eXBlX2NsYXNzIFwKLSsJInB0eXBlIDo6Qzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIgIiIg ImNsYXNzIiAiQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIgXAotKwl7Ci0rCSAgICB7IGZpZWxkIHB1 YmxpYyAiaW50IHk7IiB9Ci0rCX0KLSBnZGJfdGVzdCAicHR5cGUgOjpDOjpOZXN0ZWRDbGFzcyIg Ik5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQ1wiLiIKLSBnZGJfdGVz dCAicHR5cGUgQzo6Q0NsYXNzIiAiTm8gc3ltYm9sIFwiQ0NsYXNzXCIgaW4gbmFtZXNwYWNlIFwi Qzo6Q1wiLiIKLSBnZGJfdGVzdCAicHR5cGUgQzo6Q0NsYXNzOjpOZXN0ZWRDbGFzcyIgIk5vIHR5 cGUgXCJDQ2xhc3NcIiB3aXRoaW4gY2xhc3Mgb3IgbmFtZXNwYWNlIFwiQzo6Q1wiLiIKLUBAIC0y NTUsOCArMjYxLDExIEBAIGdkYl90ZXN0ICJwdHlwZSBDOjpOZXN0ZWRDbGFzcyIgIk5vIHN5bWJv bCBcIk5lc3RlZENsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQzo6Q1wiCi0gCi0gZ2RiX3Rlc3QgInBy aW50IGNPdGhlckZpbGUiICJcXCRcWzAtOVxdLiogPSAzMTYiCi0gZ2RiX3Rlc3QgInB0eXBlIE90 aGVyRmlsZUNsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpPdGhlckZpbGVDbGFzcyBce1xyXG4gIHB1 YmxpYzp8c3RydWN0IEM6Ok90aGVyRmlsZUNsYXNzIFx7KVxyXG4gICAgaW50IHo7XHJcblx9Igot LXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgotLWdkYl90ZXN0ICJwdHlwZSA6OkM6Ok90 aGVyRmlsZUNsYXNzIiAidHlwZSA9IGNsYXNzIEM6Ok90aGVyRmlsZUNsYXNzIFx7XHJcbiAgcHVi bGljOlxyXG4gICAgaW50IHo7XHJcblx9IgotK2NwX3Rlc3RfcHR5cGVfY2xhc3MgXAotKwkicHR5 cGUgOjpDOjpPdGhlckZpbGVDbGFzcyIgIiIgImNsYXNzIiAiQzo6T3RoZXJGaWxlQ2xhc3MiIFwK LSsJewotKwkgICAgeyBmaWVsZCBwdWJsaWMgImludCB6OyIgfQotKwl9Ci0gZ2RiX3Rlc3QgInB0 eXBlIEM6Ok90aGVyRmlsZUNsYXNzIiAiTm8gc3ltYm9sIFwiT3RoZXJGaWxlQ2xhc3NcIiBpbiBu YW1lc3BhY2UgXCJDOjpDXCIuIgotIAotICMgU29tZSBhbm9ueW1vdXMgbmFtZXNwYWNlIHRlc3Rz LgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25zdXNpbmcuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbnN1c2luZy5leHAKLWluZGV4IDcyYTYxNmUuLmZkOTlmODcgMTAwNjQ0 Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uc3VzaW5nLmV4cAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbnN1c2luZy5leHAKLUBAIC0zMCw3ICszMCw3IEBAIGlmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSBcCi0gfQotIAotIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7Ci0tICAg IHJldHVybiAtMQotKyAgICByZXR1cm4gLTE7Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL292ZXJsb2FkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292ZXJs b2FkLmV4cAotaW5kZXggYWU4ZmQyNi4uODI5MTAyMiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL292ZXJsb2FkLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3Zlcmxv YWQuZXhwCi1AQCAtNzQsMTIgKzc0LDEyIEBAIHNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9 JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKTsiCi0gc2V0IHJlX21ldGhvZHMJIiR7 cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChjaGFyXFwpOyIKLSBzZXQgcmVfbWV0 aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwp OyIKLSBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xc KHVuc2lnbmVkIGNoYXJcXCk7IgotLXNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31p bnQgb3ZlcmxvYWQxYXJnXFwoc2hvcnRcXCk7IgotLXNldCByZV9tZXRob2RzCSIke3JlX21ldGhv ZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgc2hvcnRcXCk7IgotK3NldCByZV9t ZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoc2hvcnQoIGludCk/ XFwpOyIKLStzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFy Z1xcKCh1bnNpZ25lZCBzaG9ydHxzaG9ydCB1bnNpZ25lZCkoIGludCk/XFwpOyIKLSBzZXQgcmVf bWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKGludFxcKTsiCi0g c2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCh1bnNp Z25lZCBpbnRcXCk7IgotLXNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3Zl cmxvYWQxYXJnXFwobG9uZ1xcKTsiCi0tc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dz fWludCBvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwpOyIKLStzZXQgcmVfbWV0aG9kcwki JHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKGxvbmcoIGludCk/XFwpOyIKLStz ZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKCh1bnNp Z25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKTsiCi0gc2V0IHJlX21ldGhvZHMJIiR7 cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChmbG9hdFxcKTsiCi0gc2V0IHJlX21l dGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChkb3VibGVcXCk7Igot IHNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWRmbmFyZ1xcKCh2 b2lkfClcXCk7IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292bGRicmVhay5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmxkYnJlYWsuZXhwCi1pbmRleCA1YjA2YjMxLi4z ZTQ3Yzc3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3ZsZGJyZWFrLmV4cAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3ZsZGJyZWFrLmV4cAotQEAgLTEyNywxMCArMTI3 LDI0IEBAIHByb2Mgc2V0X2JwX292ZXJsb2FkZWQge25hbWUgZXhwZWN0ZWRtZW51IG15Y2hvaWNl IGJwbnVtYmVyIGxpbmVudW1iZXJ9IHsKLSB9Ci0gCi0gIyBUaGlzIGlzIHRoZSBleHBlY3RlZCBt ZW51IGZvciBvdmVybG9hZDFhcmcuCi0tIyBOb3RlIHRoZSBhcmcgdHlwZSB2YXJpYXRpb25zIG9u IGxpbmVzIDYgYW5kIDEzLgotKyMgTm90ZSB0aGUgYXJnIHR5cGUgdmFyaWF0aW9ucyBmb3Igdm9p ZCBhbmQgaW50ZWdlciB0eXBlcy4KLSAjIFRoaXMgYWNjb21tb2RhdGVzIGRpZmZlcmVudCB2ZXJz aW9ucyBvZiBnKysuCi0gCi0tc2V0IG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbMFxcXF0gY2FuY2Vs XHJcblxcXFsxXFxcXSBhbGxcclxuXFxcWzJcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZG91Ymxl XFwpIGF0Liokc3JjZmlsZToxMjFcclxuXFxcWzNcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZmxv YXRcXCkgYXQuKiRzcmNmaWxlOjEyMFxyXG5cXFxbNFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCh1 bnNpZ25lZCBsb25nXFwpIGF0Liokc3JjZmlsZToxMTlcclxuXFxcWzVcXFxdIGZvbzo6b3Zlcmxv YWQxYXJnXFwobG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHJcblxcXFs2XFxcXSBmb286Om92ZXJs b2FkMWFyZ1xcKCh1bnNpZ25lZCBpbnR8dW5zaWduZWQpXFwpIGF0Liokc3JjZmlsZToxMTdcclxu XFxcWzdcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoaW50XFwpIGF0Liokc3JjZmlsZToxMTZcclxu XFxcWzhcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgc2hvcnRcXCkgYXQuKiRzcmNm aWxlOjExNVxyXG5cXFxbOVxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9ydFxcKSBhdC4qJHNy Y2ZpbGU6MTE0XHJcblxcXFsxMFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBjaGFy XFwpIGF0Liokc3JjZmlsZToxMTNcclxuXFxcWzExXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKHNp Z25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTJcclxuXFxcWzEyXFxcXSBmb286Om92ZXJsb2Fk MWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyXG5cXFxbMTNcXFxdIGZvbzo6b3Zlcmxv YWQxYXJnXFwoKHZvaWR8KVxcKSBhdC4qJHNyY2ZpbGU6MTEwXHJcbj4gJCIKLStzZXQgICAgbWVu dV9vdmVybG9hZDFhcmcgIlxcXFswXFxcXSBjYW5jZWxcclxuIgotK2FwcGVuZCBtZW51X292ZXJs b2FkMWFyZyAiXFxcWzFcXFxdIGFsbFxyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJc XFxbMlxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChkb3VibGVcXCkgYXQuKiRzcmNmaWxlOjEyMVxy XG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbM1xcXF0gZm9vOjpvdmVybG9hZDFh cmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9h ZDFhcmcgIlxcXFs0XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBsb25nfGxvbmcg dW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHJcbiIKLSthcHBlbmQgbWVudV9v dmVybG9hZDFhcmcgIlxcXFs1XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmcoIGludCk/XFwp IGF0Liokc3JjZmlsZToxMThcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzZc XFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIGludHx1bnNpZ25lZClcXCkgYXQuKiRz cmNmaWxlOjExN1xyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbN1xcXF0gZm9v OjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNmaWxlOjExNlxyXG4iCi0rYXBwZW5kIG1l bnVfb3ZlcmxvYWQxYXJnICJcXFxbOFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQg c2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE1XHJcbiIKLSth cHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFs5XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKHNo b3J0KCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE0XHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9h ZDFhcmcgIlxcXFsxMFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBjaGFyXFwpIGF0 Liokc3JjZmlsZToxMTNcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzExXFxc XSBmb286Om92ZXJsb2FkMWFyZ1xcKHNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTJcclxu IgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzEyXFxcXSBmb286Om92ZXJsb2FkMWFy Z1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQx YXJnICJcXFxbMTNcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHZvaWR8KVxcKSBhdC4qJHNyY2Zp bGU6MTEwXHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIj4gJCIKLSAKLSAjIFNldCBt dWx0aXBsZS1zeW1ib2xzIHRvICJhc2siLCB0byBhbGxvdyB1cyB0byB0ZXN0IHRoZSB1c2UKLSAj IG9mIHRoZSBtdWx0aXBsZS1jaG9pY2UgbWVudSB3aGVuIGJyZWFraW5nIG9uIGFuIG92ZXJsb2Fk ZWQgbWV0aG9kLgotQEAgLTE1NywxNyArMTcxLDE3IEBAIHNldF9icF9vdmVybG9hZGVkICJmb286 Om92ZXJsb2FkMWFyZyIgIiRtZW51X292ZXJsb2FkMWFyZyIgMTMgICAxMyAxMTAKLSAKLSBnZGJf dGVzdCAiaW5mbyBicmVhayIgXAotICAgICAiTnVtICAgICBUeXBlXFtcdCBcXStEaXNwIEVuYiBB ZGRyZXNzXFtcdCBcXStXaGF0LioKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2Vl cCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBtYWluIGF0Liokc3JjZmlsZTo0OVxyCi0rXFswLTlc XStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gbWFp bihcXCgofHZvaWQpXFwpKT8gYXQuKiRzcmNmaWxlOjQ5XHIKLSBcW1x0IFxdK2JyZWFrcG9pbnQg YWxyZWFkeSBoaXQgMSB0aW1lXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2Vl cCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGNoYXJcXCkgYXQu KiRzcmNmaWxlOjExMVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxb XHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaWduZWQgY2hhclxcKSBh dC4qJHNyY2ZpbGU6MTEyXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5 XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGNoYXJc XCkgYXQuKiRzcmNmaWxlOjExM1xyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtl ZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChzaG9ydFxcKSBh dC4qJHNyY2ZpbGU6MTE0XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5 XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0 XFwpIGF0Liokc3JjZmlsZToxMTVccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBr ZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hvcnQoIGlu dCk/XFwpIGF0Liokc3JjZmlsZToxMTRccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAg ICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2ln bmVkIHNob3J0fHNob3J0IHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNVxyCi0g XFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0r aW4gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNmaWxlOjExNlxyCi0gXFswLTlc XStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9v OjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWR8dW5zaWduZWQgaW50KVxcKSBhdC4qJHNyY2ZpbGU6 MTE3XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4 XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOFxy Ci0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQg XF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25nXFwpIGF0Liokc3JjZmlsZTox MTlccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhc W1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZyggaW50KT9cXCkgYXQuKiRzcmNmaWxl OjExOFxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhl eFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgbG9uZ3xsb25nIHVuc2ln bmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFr cG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdc XChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2lu dCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGRv dWJsZVxcKSBhdC4qJHNyY2ZpbGU6MTIxXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAg ICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh2b2lk fClcXCkgYXQuKiRzcmNmaWxlOjExMCIgXAotQEAgLTIxNSwxNyArMjI5LDE3IEBAIGdkYl9leHBl Y3QgewotIAotIGdkYl90ZXN0ICJpbmZvIGJyZWFrIiBcCi0gICAgICJOdW0gICAgIFR5cGVcW1x0 IFxdK0Rpc3AgRW5iIEFkZHJlc3NcW1x0IFxdK1doYXQuKgotLVxbMC05XF0rXFtcdCBcXSticmVh a3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIG1haW4gYXQuKiRzcmNmaWxl OjQ5XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4 XFtcdCBcXStpbiBtYWluKFxcKCh8dm9pZClcXCkpPyBhdC4qJHNyY2ZpbGU6NDlccgotIFxbXHQg XF0rYnJlYWtwb2ludCBhbHJlYWR5IGhpdCAxIHRpbWVccgotIFxbMC05XF0rXFtcdCBcXSticmVh a3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJn XFwoY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTExXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2lu dCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNp Z25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTJccgotIFxbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwo dW5zaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEzXHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJl YWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFy Z1xcKHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTRccgotLVxbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwo dW5zaWduZWQgc2hvcnRcXCkgYXQuKiRzcmNmaWxlOjExNVxyCi0rXFswLTlcXStcW1x0IFxdK2Jy ZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFh cmdcXChzaG9ydCggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNFxyCi0rXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNy Y2ZpbGU6MTE1XHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBc XSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGludFxcKSBhdC4qJHNyY2ZpbGU6 MTE2XHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4 XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZHx1bnNpZ25lZCBpbnQpXFwp IGF0Liokc3JjZmlsZToxMTdccgotLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVw IHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZ1xcKSBhdC4q JHNyY2ZpbGU6MTE4XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtc dCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIGxvbmdcXCkg YXQuKiRzcmNmaWxlOjExOVxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAg eVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChsb25nKCBpbnQpP1xc KSBhdC4qJHNyY2ZpbGU6MTE4XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2Vl cCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBs b25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHIKLSBcWzAtOVxd K1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286 Om92ZXJsb2FkMWFyZ1xcKGZsb2F0XFwpIGF0Liokc3JjZmlsZToxMjBccgotIFxbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zl cmxvYWQxYXJnXFwoZG91YmxlXFwpIGF0Liokc3JjZmlsZToxMjFccgotIFxbMC05XF0rXFtcdCBc XSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zlcmxv YWQxYXJnXFwoKHZvaWR8KVxcKSBhdC4qJHNyY2ZpbGU6MTEwIiBcCi1AQCAtMjk2LDEyICszMTAs MTIgQEAgZ2RiX3Rlc3QgImluZm8gYnJlYWsiIFwKLSAgICAgIk51bSAgICAgVHlwZVxbXHQgXF0r RGlzcCBFbmIgQWRkcmVzc1xbXHQgXF0rV2hhdC4qCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9p bnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChk b3VibGVcXCkgYXQuKiRzcmNmaWxlOjEyMVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChmbG9h dFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAg a2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVk IGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOVxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChsb25n XFwpIGF0Liokc3JjZmlsZToxMThccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBr ZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVk IGxvbmd8bG9uZyB1bnNpZ25lZCkoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMTlccgotK1xbMC05 XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZv bzo6b3ZlcmxvYWQxYXJnXFwobG9uZyggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOFxyCi0gXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4g Zm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWR8dW5zaWduZWQgaW50KVxcKSBhdC4qJHNyY2Zp bGU6MTE3XHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSsk aGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGludFxcKSBhdC4qJHNyY2ZpbGU6MTE2 XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtc dCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwpIGF0Liokc3JjZmls ZToxMTVccgotLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRo ZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hvcnRcXCkgYXQuKiRzcmNmaWxlOjEx NFxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxb XHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5zaWdu ZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE1XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtw b2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xc KHNob3J0KCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE0XHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJl YWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFy Z1xcKHVuc2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExM1xyCi0gXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEyXHIKLSBcWzAtOVxdK1xbXHQg XF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJs b2FkMWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvcmVhbGNwcC5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3JlYWxjcHAu Y2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44ZTRmNzJhCi0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9yZWFsY3BwLmNjCi1AQCAtMCwwICsx LDQwOSBAQAotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8aW9zdHJlYW0+Ci0rCi0r Ly8gRm9yd2FyZCBkZWNscwotK2NsYXNzIGJhc2U7Ci0rY2xhc3MgZGVyaXZlZDsKKysjIFRoZSAi aWYiIGNvbmRpdGlvbiBpcyBhcnRpZmljYWwgdG8gdGVzdCByZWdyZXNzaW9uIG9mIGEgZm9ybWVy IHBhdGNoLgorK2dkYl9icmVha3BvaW50ICJbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstYXQt bmV4dGNhbGwiXSBpZiBpICYmIGdudV9pZnVuYyAoaSkgIT0gNDIiCiArCi0rLy8gQSBzaW1wbGUg dGVtcGxhdGUgd2l0aCBzcGVjaWFsaXphdGlvbnMKLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLStj bGFzcyB0Y2xhc3MKLSt7Ci0rcHVibGljOgotKyAgdm9pZCBkb19zb21ldGhpbmcgKCkgeyB9IC8v IHRjbGFzczxUPjo6ZG9fc29tZXRoaW5nCi0rfTsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiYnJlYWstYXQtY2FsbCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrLWF0LWNhbGwiICIuKmJyZWFrLWF0LWNhbGwuKiIKICsKLSt0ZW1wbGF0ZSA8PgotK3Zv aWQgdGNsYXNzPGNoYXI+Ojpkb19zb21ldGhpbmcgKCkgeyB9IC8vIHRjbGFzczxjaGFyPjo6ZG9f c29tZXRoaW5nCisrIyBUZXN0IEdEQiB3aWxsIGF1dG9tYXRpY2FsbHkgaW5kaXJlY3QgdGhlIGNh bGwuCiArCi0rdGVtcGxhdGUgPD4KLSt2b2lkIHRjbGFzczxpbnQ+Ojpkb19zb21ldGhpbmcgKCkg eyB9IC8vIHRjbGFzczxpbnQ+Ojpkb19zb21ldGhpbmcKKytnZGJfdGVzdCAicCBnbnVfaWZ1bmMg KDMpIiAiID0gNCIKICsKLSt0ZW1wbGF0ZTw+Ci0rdm9pZCB0Y2xhc3M8bG9uZz46OmRvX3NvbWV0 aGluZyAoKSB7IH0gLy8gdGNsYXNzPGxvbmc+Ojpkb19zb21ldGhpbmcKKysjIFRlc3QgR0RCIHdp bGwgc2tpcCB0aGUgZ251X2lmdW5jIHJlc29sdmVyIG9uIGZpcnN0IGNhbGwuCiArCi0rdGVtcGxh dGU8PgotK3ZvaWQgdGNsYXNzPHNob3J0Pjo6ZG9fc29tZXRoaW5nICgpIHsgfSAvLyB0Y2xhc3M8 c2hvcnQ+Ojpkb19zb21ldGhpbmcKKytnZGJfdGVzdCAic3RlcCIgIlxyXG5maW5hbCAuKiIKICsK LSsvLyBBIHNpbXBsZSB0ZW1wbGF0ZSB3aXRoIG11bHRpcGxlIHRlbXBsYXRlIHBhcmFtZXRlcnMK LSt0ZW1wbGF0ZSA8Y2xhc3MgQSwgY2xhc3MgQiwgY2xhc3MgQywgY2xhc3MgRCwgY2xhc3MgRT4K LSt2b2lkIGZsdWJiZXIgKHZvaWQpIC8vIGZsdWJiZXIKLSt7Ci0rICBBIGE7Ci0rICBCIGI7Ci0r ICBDIGM7Ci0rICBEIGQ7Ci0rICBFIGU7Ci0rCi0rICArK2E7Ci0rICArK2I7Ci0rICArK2M7Ci0r ICArK2Q7Ci0rICArK2U7Ci0rfQorKyMgVGVzdCBHREIgd2lsbCBub3QgYnJlYWsgYmVmb3JlIHRo ZSBmaW5hbCBjaG9zZW4gaW1wbGVtZW50YXRpb24uCiArCi0rLy8gU29tZSBjb250cml2ZWQgcG9s aWNpZXMKLSt0ZW1wbGF0ZSA8Y2xhc3MgVD4KLStzdHJ1Y3Qgb3BlcmF0aW9uXzEKLSt7Ci0rICBz dGF0aWMgdm9pZCBmdW5jdGlvbiAodm9pZCkgeyB9IC8vIG9wZXJhdGlvbl8xPFQ+OjpmdW5jdGlv bgotK307CisrIyBBbHNvIHRlc3QgYSBmb3JtZXIgcGF0Y2ggcmVncmVzc2lvbjoKKysjIENvbnRp bnVpbmcuCisrIyBFcnJvciBpbiB0ZXN0aW5nIGJyZWFrcG9pbnQgY29uZGl0aW9uOgorKyMgQXR0 ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4gbWVtb3J5LgorKyMg CisrIyBCcmVha3BvaW50IDIsIG1haW4gKCkgYXQgLi9nZGIuYmFzZS9nbnUtaWZ1bmMuYzozMwog KwotK3RlbXBsYXRlIDxjbGFzcyBUPgotK3N0cnVjdCBvcGVyYXRpb25fMgotK3sKLSsgIHN0YXRp YyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0aW9uXzI8VD46OmZ1bmN0aW9uCi0r fTsKKytnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLlxyXG5cclxuQnJlYWtwb2ludCAu KiAoYXR8aW4pIC4qYnJlYWstYXQtbmV4dGNhbGwuKiIgXAorKwkgImNvbnRpbnVlIHRvIGJyZWFr LWF0LW5leHRjYWxsIgogKwotK3RlbXBsYXRlIDxjbGFzcyBUPgotK3N0cnVjdCBvcGVyYXRpb25f MwotK3sKLSsgIHN0YXRpYyB2b2lkIGZ1bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0aW9uXzM8 VD46OmZ1bmN0aW9uCi0rfTsKKytnZGJfYnJlYWtwb2ludCAiZ251X2lmdW5jIgogKwotK3RlbXBs YXRlIDxjbGFzcyBUPgotK3N0cnVjdCBvcGVyYXRpb25fNAotK3sKLSsgIHN0YXRpYyB2b2lkIGZ1 bmN0aW9uICh2b2lkKSB7IH0gLy8gb3BlcmF0aW9uXzQ8VD46OmZ1bmN0aW9uCi0rfTsKKytnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAibmV4dGNhbGwgZ251X2lmdW5jIgogKwotKy8vIEEgcG9s aWN5LWJhc2VkIGNsYXNzIHcvIGFuZCB3L28gZGVmYXVsdCBwb2xpY3kKLSt0ZW1wbGF0ZSA8Y2xh c3MgVCwgY2xhc3MgUG9saWN5PgotK2NsYXNzIHBvbGljeSA6IHB1YmxpYyBQb2xpY3kKLSt7Ci0r cHVibGljOgotKyAgcG9saWN5IChUIG9iaikgOiBvYmpfIChvYmopIHsgfSAvLyBwb2xpY3k8VCwg UG9saWN5Pjo6cG9saWN5CisrZ2RiX3Rlc3QgImZyYW1lIiAiIzAgKygweFxbMC05YS1mXF0rIGlu ICspP2ZpbmFsIFxcKC4qIiAibmV4dGNhbGwgZ251X2lmdW5jIHNraXBwZWQiCiArCi0rcHJpdmF0 ZToKLSsgIFQgb2JqXzsKLSt9OwogKwotK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQb2xpY3kg PSBvcGVyYXRpb25fMTxUPiA+Ci0rY2xhc3MgcG9saWN5ZCA6IHB1YmxpYyBQb2xpY3kKLSt7Ci0r cHVibGljOgotKyAgcG9saWN5ZCAoVCBvYmopIDogb2JqXyAob2JqKSB7IH0gLy8gcG9saWN5ZDxU LCBQb2xpY3k+Ojpwb2xpY3lkCi0rICB+cG9saWN5ZCAodm9pZCkgeyB9IC8vIHBvbGljeWQ8VCwg UG9saWN5Pjo6fnBvbGljeWQKKysjIENoZWNrIGFueSBjb21tYW5kcyBub3QgZG9pbmcgYW4gaW5m ZXJpb3IgY2FsbCBzdGlsbCBjb21wdXRlIHdpdGggYWRkcmVzcyBvZgorKyMgdGhlIGdudS1pZnVu YyByZXNvbHZlci4KICsKLStwcml2YXRlOgotKyAgVCBvYmpfOwotK307CisrZ2RiX3Rlc3QgInAg Z251X2lmdW5jIiAiID0gezx0ZXh0IGdudS1pbmRpcmVjdC1mdW5jdGlvbiB2YXJpYWJsZSwgbm8g ZGVidWcgaW5mbz59IDB4XFswLTlhLWZcXSsgPGdudV9pZnVuYz4iICJwIGdudV9pZnVuYyBleGVj dXRpbmciCisrZ2RiX3Rlc3QgImluZm8gc3ltIGdudV9pZnVuYyIgImdudV9pZnVuYyBpbiBzZWN0 aW9uIC4qIiAiaW5mbyBzeW0gZ251X2lmdW5jIGV4ZWN1dGluZyIKICsKLSt0eXBlZGVmIHBvbGlj eTxpbnQsIG9wZXJhdGlvbl8xPHZvaWQqPiA+IHBvbGljeTE7Ci0rdHlwZWRlZiBwb2xpY3k8aW50 LCBvcGVyYXRpb25fMjx2b2lkKj4gPiBwb2xpY3kyOwotK3R5cGVkZWYgcG9saWN5PGludCwgb3Bl cmF0aW9uXzM8dm9pZCo+ID4gcG9saWN5MzsKLSt0eXBlZGVmIHBvbGljeTxpbnQsIG9wZXJhdGlv bl80PHZvaWQqPiA+IHBvbGljeTQ7Cisrc2V0IHRlc3QgImluZm8gYWRkciBnbnVfaWZ1bmMiCisr Z2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIlN5bWJvbCBcImdudV9p ZnVuY1wiIGlzIGF0ICgweFxbMC05YS1mXF0rKSBpbiAuKiRnZGJfcHJvbXB0ICQiIHsKKysJcGFz cyAkdGVzdAorKyAgICB9CisrfQorK2dkYl90ZXN0ICJpbmZvIHN5bSAkZXhwZWN0X291dCgxLHN0 cmluZykiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIDxnbnVfaWZ1bmMtYWRk cmVzcz4iCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXIt ZmllbGQtYWRkcmVzcy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmll bGQtYWRkcmVzcy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZWViN2I4 NQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12 YXItZmllbGQtYWRkcmVzcy5jCitAQCAtMCwwICsxLDIwIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLSt0eXBlZGVmIHBvbGljeWQ8aW50 PiBwb2xpY3lkMTsKLSt0eXBlZGVmIHBvbGljeWQ8bG9uZz4gcG9saWN5ZDI7Ci0rdHlwZWRlZiBw b2xpY3lkPGNoYXI+IHBvbGljeWQzOwotK3R5cGVkZWYgcG9saWN5ZDxiYXNlPiBwb2xpY3lkNDsK LSt0eXBlZGVmIHBvbGljeWQ8dGNsYXNzPGludD4gPiBwb2xpY3lkNTsKKysgICBDb3B5cmlnaHQg MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLStjbGFzcyBmbHVmZiB7IH07 Ci0rc3RhdGljIGZsdWZmICpnX2ZsdWZmID0gbmV3IGZsdWZmICgpOworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCiArCi0rY2xhc3MgYmFzZQotK3sKLStwcm90ZWN0ZWQ6Ci0rICBpbnQg Zm9vXzsKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKwotK3B1YmxpYzoKLSsgIGJhc2UgKHZv aWQpIDogZm9vXyAoNDIpIHsgfSAvLyBiYXNlOjpiYXNlKHZvaWQpCi0rICBiYXNlIChpbnQgZm9v KSA6IGZvb18gKGZvbykgeyB9IC8vIGJhc2U6OmJhc2UoaW50KQotKyAgfmJhc2UgKHZvaWQpIHsg fSAvLyBiYXNlOjp+YmFzZQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwot KyAgLy8gU29tZSBvdmVybG9hZGVkIG1ldGhvZHMKLSsgIGludCBvdmVybG9hZCAodm9pZCkgY29u c3QgeyByZXR1cm4gMDsgfSAvLyBiYXNlOjpvdmVybG9hZCh2b2lkKSBjb25zdAotKyAgaW50IG92 ZXJsb2FkIChpbnQgaSkgY29uc3QgeyByZXR1cm4gMTsgfSAvLyBiYXNlOjpvdmVybG9hZChpbnQp IGNvbnN0Ci0rICBpbnQgb3ZlcmxvYWQgKHNob3J0IHMpIGNvbnN0IHsgcmV0dXJuIDI7IH0gLy8g YmFzZTo6b3ZlcmxvYWQoc2hvcnQpIGNvbnN0Ci0rICBpbnQgb3ZlcmxvYWQgKGxvbmcgbCkgY29u c3QgeyByZXR1cm4gMzsgfSAvLyBiYXNlOjpvdmVybG9hZChsb25nKSBjb25zdAotKyAgaW50IG92 ZXJsb2FkIChjaGFyKiBhKSBjb25zdCB7IHJldHVybiA0OyB9IC8vIGJhc2U6Om92ZXJsb2FkKGNo YXIqKSBjb25zdAotKyAgaW50IG92ZXJsb2FkIChiYXNlJiBiKSBjb25zdCB7IHJldHVybiA1OyB9 IC8vIGJhc2U6Om92ZXJsb2FkKGJhc2UmKSBjb25zdAorK3N0cnVjdCB7CisrICBpbnQgZmllbGQ7 CisrfSBzdGF0aWNzdHJ1Y3QgPSB7IDEgfTsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uNmQ4MmU3MworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAKK0BAIC0wLDAgKzEs MjYgQEAKKysjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwotKyAgLy8gT3BlcmF0b3JzCi0rICBpbnQgb3BlcmF0b3IrIChiYXNlIGNvbnN0JiBvKSBjb25z dCAvLyBiYXNlOjpvcGVyYXRvcisKLSsgIHsgcmV0dXJuIGZvb18gKyBvLmZvb187IH0KKysjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rICBiYXNlIG9wZXJhdG9yKysgKHZvaWQpIC8v IGJhc2U6Om9wZXJhdG9yKysKLSsgIHsgKytmb29fOyByZXR1cm4gKnRoaXM7IH0KKytzZXQgdGVz dCBpbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcworK3NldCBiaW5maWxlICR7dGVzdH0ueAorK2lm ICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9LmMiICIke29iamRp cn0vJHtzdWJkaXJ9LyR7YmluZmlsZX0iIG9iamVjdCB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4gLTEK Kyt9CiArCi0rICBiYXNlIG9wZXJhdG9yKz0oYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3BlcmF0 b3IrPQotKyAgeyBmb29fICs9IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrY2xlYW5fcmVzdGFy dCAkYmluZmlsZQogKwotKyAgaW50IG9wZXJhdG9yLSAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8g YmFzZTo6b3BlcmF0b3ItCi0rICB7IHJldHVybiBmb29fIC0gby5mb29fOyB9CisrZ2RiX3Rlc3Qg e3NldCAkdmFyc3RydWN0ID0gc3RhdGljc3RydWN0fQorK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3Qu ZmllbGR9ICIgPSAxIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92 ZXJmbG93LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYzVkNWVlMAorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYworQEAgLTAsMCArMSwzMCBA QAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiAr Ci0rICBiYXNlIG9wZXJhdG9yLS0gKHZvaWQpIC8vIGJhc2U6Om9wZXJhdG9yLS0KLSsgIHsgLS1m b29fOyByZXR1cm4gKnRoaXM7IH0KKysgICBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKLSsgIGJhc2Ugb3BlcmF0b3ItPSAoYmFzZSBjb25zdCYgbykgLy8g YmFzZTo6b3BlcmF0b3ItPQotKyAgeyBmb29fIC09IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9Cisr ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLSsgIGludCBvcGVyYXRvciogKGJhc2Ug Y29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yKgotKyAgeyByZXR1cm4gZm9vXyAqIG8u Zm9vXzsgfQorKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCi0rICBiYXNlIG9wZXJhdG9yKj0g KGJhc2UgY29uc3QmIG8pIC8vIGJhc2U6Om9wZXJhdG9yKj0KLSsgIHsgZm9vXyAqPSBvLmZvb187 IHJldHVybiAqdGhpczsgfQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwot KyAgaW50IG9wZXJhdG9yLyAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3Iv Ci0rICB7IHJldHVybiBmb29fIC8gby5mb29fOyB9CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgogKwot KyAgYmFzZSBvcGVyYXRvci89IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvci89Ci0r ICB7IGZvb18gLz0gby5mb29fOyByZXR1cm4gKnRoaXM7IH0KKytpbnQKKyttYWluIChpbnQgYXJn YywgY2hhciAqKmFyZ3YpCisreworKyAgaW50IGFycmF5W2FyZ2NdOwogKwotKyAgaW50IG9wZXJh dG9yJSAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3IlCi0rICB7IHJldHVy biBmb29fICUgby5mb29fOyB9Ci0rICAKLSsgIGJhc2Ugb3BlcmF0b3IlPSAoYmFzZSBjb25zdCYg bykgLy8gYmFzZTo6b3BlcmF0b3IlPQotKyAgeyBmb29fICU9IG8uZm9vXzsgcmV0dXJuICp0aGlz OyB9CisrICBhcnJheVswXSA9IGFycmF5WzBdOwogKwotKyAgYm9vbCBvcGVyYXRvcjwgKGJhc2Ug Y29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPAotKyAgeyByZXR1cm4gZm9vXyA8IG8u Zm9vXzsgfQorKyAgYWJvcnQgKCk7CiArCi0rICBib29sIG9wZXJhdG9yPD0gKGJhc2UgY29uc3Qm IG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yPD0KLSsgIHsgcmV0dXJuIGZvb18gPD0gby5mb29f OyB9CisrICByZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEtb3ZlcmZsb3cuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cu ZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjRhNjA4ZgorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwCitA QCAtMCwwICsxLDEwOSBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCi0rICBib29sIG9wZXJhdG9yPiAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8g YmFzZTo6b3BlcmF0b3I+Ci0rICB7IHJldHVybiBmb29fID4gby5mb29fOyB9CisrIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgogKwotKyAgYm9vbCBvcGVyYXRvcj49IChiYXNlIGNvbnN0JiBv KSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcj49Ci0rICB7IHJldHVybiBmb29fID49IG8uZm9vXzsg fQorKyMgV2UgY291bGQgY3Jhc2ggaW46CisrIyAjMCAgYmxvY2tfbGlua2FnZV9mdW5jdGlvbiAo Ymw9MHgwKSBhdCAuLi8uLi9nZGIvYmxvY2suYzo2OQorKyMgIzEgIGluIGR3YXJmX2Jsb2NrX2dl dF9mcmFtZV9iYXNlICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjk3CisrIyAgIDk3 CSAgZnJhbWVmdW5jID0gYmxvY2tfbGlua2FnZV9mdW5jdGlvbiAoZ2V0X2ZyYW1lX2Jsb2NrIChm cmFtZSwgTlVMTCkpOworKyMgIzIgIGluIGV4ZWN1dGVfc3RhY2tfb3AgKC4uLikgYXQgLi4vLi4v Z2RiL2R3YXJmMmV4cHIuYzo0OTYKKysjICMzICBpbiBkd2FyZl9ibG9ja19leGVjX2NvcmUgKCkg YXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6MTU2CisrIyAjNCAgZHdhcmZfYmxvY2tfZXhlYyAo Li4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoyMDYKKysjICM1ICBpbiByYW5nZV90eXBl X2NvdW50X2JvdW5kX2ludGVybmFsICguLi4pIGF0IC4uLy4uL2dkYi9nZGJ0eXBlcy5jOjE0MzAK KysjICM2ICBpbiBjcmVhdGVfYXJyYXlfdHlwZSAoLi4uKSBhdCAuLi8uLi9nZGIvZ2RidHlwZXMu Yzo4NDAKKysjIC4uLgorKyMgIzIxIGluIHBzeW10YWJfdG9fc3ltdGFiICguLi4pIGF0IC4uLy4u L2dkYi9zeW1maWxlLmM6MjkyCisrIyAuLi4KKysjICMyOSBpbiBiYWNrdHJhY2VfY29tbWFuZF8x ICgpIGF0IC4uLy4uL2dkYi9zdGFjay5jOjEyNzMKICsKLSsgIGJvb2wgb3BlcmF0b3IhPSAoYmFz ZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3IhPQotKyAgeyByZXR1cm4gZm9vXyAh PSBvLmZvb187IH0KKytzZXQgdGVzdGZpbGUgdmxhLW92ZXJmbG93Cisrc2V0IHNoZmlsZSAke29i amRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5zaAorK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LmMKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZp bGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KICsKLSsgIGJvb2wg b3BlcmF0b3I9PSAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3I9PQotKyAg eyByZXR1cm4gZm9vXyA9PSBvLmZvb187IH0KKytzZXQgZiBbb3BlbiAifGdldGNvbmYgUEFHRVNJ WkUiICJyIl0KKytnZXRzICRmIHBhZ2VzaXplCisrY2xvc2UgJGYKICsKLSsgIGJvb2wgb3BlcmF0 b3IhICh2b2lkKSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvciEKLSsgIHsgcmV0dXJuICFmb29fOyB9 CisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0rICBib29sIG9wZXJhdG9yJiYgKGJhc2Ug Y29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yJiYKLSsgIHsgcmV0dXJuIGZvb18gJiYg by5mb29fOyB9Cisrc2V0IHBpZF9vZl9nZGIgW2V4cF9waWQgLWkgW2JvYXJkX2luZm8gaG9zdCBm aWxlaWRdXQogKwotKyAgYm9vbCBvcGVyYXRvcnx8IChiYXNlIGNvbnN0JiBvKSBjb25zdCAvLyBi YXNlOjpvcGVyYXRvcnx8Ci0rICB7IHJldHVybiBmb29fIHx8IG8uZm9vXzsgfQorK2lmIHsgW3J1 bnRvX21haW5dIDwgMCB9IHsKKysgICAgdW50ZXN0ZWQgdmxhLW92ZXJmbG93CisrICAgIHJldHVy biAtMQorK30KICsKLSsgIGludCBvcGVyYXRvcjw8IChpbnQgdmFsdWUpIGNvbnN0IC8vIGJhc2U6 Om9wZXJhdG9yPDwKLSsgIHsgcmV0dXJuIGZvb18gIDw8IHZhbHVlOyB9CisrIyBHZXQgdGhlIEdE QiBtZW1vcnkgc2l6ZSB3aGVuIHdlIHN0YXkgYXQgbWFpbi4KICsKLSsgIGJhc2Ugb3BlcmF0b3I8 PD0gKGludCB2YWx1ZSkgLy8gYmFzZTo6b3BlcmF0b3I8PD0KLSsgIHsgZm9vXyA8PD0gdmFsdWU7 IHJldHVybiAqdGhpczsgfQorK3Byb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsKKysgICAgZ2xv YmFsIHBpZF9vZl9nZGIgcGFnZXNpemUKKysgICAgc2V0IGZkIFtvcGVuICIvcHJvYy8kcGlkX29m X2dkYi9zdGF0bSJdCisrICAgIGdldHMgJGZkIGxpbmUKKysgICAgY2xvc2UgJGZkCisrICAgICMg bnVtYmVyIG9mIHBhZ2VzIG9mIHZpcnR1YWwgbWVtb3J5CisrICAgIHNjYW4gJGxpbmUgIiVkIiBk cnMKKysgICAgcmV0dXJuICRkcnMKKyt9CiArCi0rICBpbnQgb3BlcmF0b3I+PiAoaW50IHZhbHVl KSBjb25zdCAvLyBiYXNlOjpvcGVyYXRvcj4+Ci0rICB7IHJldHVybiBmb29fICA+PiB2YWx1ZTsg fQorK3NldCBwYWdlc19mb3VuZCBbbWVtb3J5X3ZfcGFnZXNfZ2V0XQogKwotKyAgYmFzZSBvcGVy YXRvcj4+PSAoaW50IHZhbHVlKSAvLyBiYXNlOjpvcGVyYXRvcj4+PQotKyAgeyBmb29fID4+PSB2 YWx1ZTsgcmV0dXJuICp0aGlzOyB9CisrIyBzMzkweCB3aXRoIGdsaWJjLWRlYnVnaW5mby5zMzkw eCBpbnN0YWxsZWQgdXNlZCBhcHByb3guIDE2TUIuCisrc2V0IG1iX3Jlc2VydmUgNDAKKyt2ZXJi b3NlIC1sb2cgInBhZ2VzX2ZvdW5kID0gJHBhZ2VzX2ZvdW5kLCBtYl9yZXNlcnZlID0gJG1iX3Jl c2VydmUiCisrc2V0IGtiX2ZvdW5kIFtleHByICRwYWdlc19mb3VuZCAqICRwYWdlc2l6ZSAvIDEw MjRdCisrc2V0IGtiX3Blcm1pdCBbZXhwciAka2JfZm91bmQgKyAxICogMTAyNCArICRtYl9yZXNl cnZlICogMTAyNF0KKyt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kID0gJGtiX2ZvdW5kLCBrYl9wZXJt aXQgPSAka2JfcGVybWl0IgogKwotKyAgaW50IG9wZXJhdG9yfiAodm9pZCkgY29uc3QgLy8gYmFz ZTo6b3BlcmF0b3J+Ci0rICB7IHJldHVybiB+Zm9vXzsgfQorKyMgQ3JlYXRlIHRoZSB1bGltaXQg d3JhcHBlci4KKytzZXQgZiBbb3BlbiAkc2hmaWxlICJ3Il0KKytwdXRzICRmICIjISAvYmluL3No IgorK3B1dHMgJGYgInVsaW1pdCAtdiAka2JfcGVybWl0IgorK3B1dHMgJGYgImV4ZWMgJEdEQiBc IlwkQFwiIgorK2Nsb3NlICRmCisrcmVtb3RlX2V4ZWMgaG9zdCAiY2htb2QgK3ggJHNoZmlsZSIK ICsKLSsgIGludCBvcGVyYXRvciYgKGJhc2UgY29uc3QmIG8pIGNvbnN0IC8vIGJhc2U6Om9wZXJh dG9yJgotKyAgeyByZXR1cm4gZm9vXyAmIG8uZm9vXzsgfQorK2dkYl9leGl0Cisrc2V0IEdEQm9s ZCAkR0RCCisrc2V0IEdEQiAiJHNoZmlsZSIKKytnZGJfc3RhcnQKKytzZXQgR0RCICRHREJvbGQK ICsKLSsgIGJhc2Ugb3BlcmF0b3ImPSAoYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3BlcmF0b3Im PQotKyAgeyBmb29fICY9IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrZ2RiX3JlaW5pdGlhbGl6 ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQogKwotKyAgaW50IG9w ZXJhdG9yfCAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6b3BlcmF0b3J8Ci0rICB7IHJl dHVybiBmb29fIHwgby5mb29fOyB9Cisrc2V0IHBpZF9vZl9nZGIgW2V4cF9waWQgLWkgW2JvYXJk X2luZm8gaG9zdCBmaWxlaWRdXQogKwotKyAgYmFzZSBvcGVyYXRvcnw9IChiYXNlIGNvbnN0JiBv KSAvLyBiYXNlOjpvcGVyYXRvcnw9Ci0rICB7IGZvb18gfD0gby5mb29fOyByZXR1cm4gKnRoaXM7 IH0KLSsgIAotKyAgaW50IG9wZXJhdG9yXiAoYmFzZSBjb25zdCYgbykgY29uc3QgLy8gYmFzZTo6 b3BlcmF0b3JeCi0rICB7IHJldHVybiBmb29fIF4gby5mb29fOyB9CisrIyBDaGVjayB0aGUgc2l6 ZSBhZ2FpbiBhZnRlciB0aGUgc2Vjb25kIHJ1bi4KKysjIFdlIG11c3Qgbm90IHN0b3AgaW4gbWFp biBhcyBpdCB3b3VsZCBjYWNoZSBgYXJyYXknIGFuZCBuZXZlciBjcmFzaCBsYXRlci4KICsKLSsg IGJhc2Ugb3BlcmF0b3JePSAoYmFzZSBjb25zdCYgbykgLy8gYmFzZTo6b3BlcmF0b3JePQotKyAg eyBmb29fIF49IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrZ2RiX3J1bl9jbWQKICsKLSsgIGJh c2Ugb3BlcmF0b3I9IChiYXNlIGNvbnN0JiBvKSAvLyBiYXNlOjpvcGVyYXRvcj0KLSsgIHsgZm9v XyA9IG8uZm9vXzsgcmV0dXJuICp0aGlzOyB9CisrdmVyYm9zZSAtbG9nICJrYl9mb3VuZCBiZWZv cmUgYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8gMTAy NF0iCiArCi0rICB2b2lkIG9wZXJhdG9yKCkgKHZvaWQpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9y KCkKLSsgIHsgcmV0dXJuOyB9CisrZ2RiX3Rlc3QgIiIgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFs IFNJR0FCUlQsIEFib3J0ZWQuLioiICJFbnRlciBhYm9ydCgpIgogKwotKyAgaW50IG9wZXJhdG9y W10gKGludCBpZHgpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yW10KLSsgIHsgcmV0dXJuIGlkeDsg fQorK3ZlcmJvc2UgLWxvZyAia2JfZm91bmQgaW4gYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9w YWdlc19nZXRdICogJHBhZ2VzaXplIC8gMTAyNF0iCiArCi0rICB2b2lkKiBvcGVyYXRvciBuZXcg KHNpemVfdCBzaXplKSB0aHJvdyAoKSAvLyBiYXNlOjpvcGVyYXRvciBuZXcKLSsgIHsgcmV0dXJu IG1hbGxvYyAoc2l6ZSk7IH0KKysjIGBhYm9ydCcgY2FuIGdldCBleHByZXNzZWQgYXMgYCpfX0dJ X2Fib3J0Jy4KKytnZGJfdGVzdCAiYnQiICJpbiBcW14gXF0qYWJvcnQgXFwoLiogaW4gbWFpbiBc XCguKiIgIkJhY2t0cmFjZSBhZnRlciBhYm9ydCgpIgogKwotKyAgdm9pZCBvcGVyYXRvciBkZWxl dGUgKHZvaWQqIHB0cikgLy8gYmFzZTo6b3BlcmF0b3IgZGVsZXRlCi0rICB7IGZyZWUgKHB0cik7 IH0KKyt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGJ0IGFmdGVyIGFib3J0KCkgPSBbZXhwciBb bWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5j CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTFmM2VkMQorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYworQEAgLTAsMCArMSw1NSBA QAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiAr Ci0rICB2b2lkKiBvcGVyYXRvciBuZXdbXSAoc2l6ZV90IHNpemUpIHRocm93ICgpIC8vIGJhc2U6 Om9wZXJhdG9yIG5ld1tdCi0rICB7IHJldHVybiBtYWxsb2MgKHNpemUpOyB9CisrICAgQ29weXJp Z2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rICB2b2lkIG9wZXJh dG9yIGRlbGV0ZVtdICh2b2lkKiBwdHIpIC8vIGJhc2U6Om9wZXJhdG9yIGRlbGV0ZVtdCi0rICB7 IGZyZWUgKHB0cik7IH0KKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwotKyAgYmFz ZSBjb25zdCogb3BlcmF0b3ItPiAodm9pZCkgY29uc3QgLy8gYmFzZTo6b3BlYXJ0b3ItPgotKyAg eyByZXR1cm4gdGhpczsgfQorKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCi0rICBpbnQgb3Bl cmF0b3ItPiogKGJhc2UgY29uc3QmIGIpIGNvbnN0IC8vIGJhc2U6Om9wZXJhdG9yLT4qCi0rICB7 ICByZXR1cm4gZm9vXyAqIGIuZm9vXzsgfQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwogKwotKyAgb3BlcmF0b3IgY2hhciogKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxj aGFyKj4gKCJoZWxsbyIpOyB9IC8vIGJhc2U6Om9wZXJhdG9yIGNoYXIqCi0rICBvcGVyYXRvciBp bnQgKCkgY29uc3QgeyByZXR1cm4gMjE7IH0gLy8gYmFzZTo6b3BlcmF0b3IgaW50Ci0rICBvcGVy YXRvciBmbHVmZiogKCkgY29uc3QgeyByZXR1cm4gbmV3IGZsdWZmICgpOyB9IC8vIGJhc2U6Om9w ZXJhdG9yIGZsdWZmKgotKyAgb3BlcmF0b3IgZmx1ZmYqKiAoKSBjb25zdCB7IHJldHVybiAmZ19m bHVmZjsgfSAvLyBiYXNlOjpvcGVyYXRvciBmbHVmZioqCi0rfTsKKysjaW5jbHVkZSA8c3RyaW5n Lmg+CiArCi0rY2xhc3MgYmFzZTEgOiBwdWJsaWMgdmlydHVhbCBiYXNlCisrdm9pZAorK21hcmtl ciAodm9pZCkKICt7Ci0rcHVibGljOgotKyAgYmFzZTEgKHZvaWQpIDogZm9vXyAoMjEpIHsgfSAv LyBiYXNlMTo6YmFzZTEodm9pZCkKLSsgIGJhc2UxIChpbnQgYSkgOiBmb29fKGEpIHsgfSAvLyBi YXNlMTo6YmFzZTEoaW50KQotKyAgdm9pZCBhX2Z1bmN0aW9uICh2b2lkKSBjb25zdCB7IH0gLy8g YmFzZTE6OmFfZnVuY3Rpb24KKyt9CiArCi0rcHJvdGVjdGVkOgotKyAgaW50IGZvb187Ci0rfTsK Kyt2b2lkCisrYmFyIChjaGFyICphLCBjaGFyICpiLCBjaGFyICpjLCBpbnQgc2l6ZSkKKyt7Cisr ICBtZW1zZXQgKGEsICcxJywgc2l6ZSk7CisrICBtZW1zZXQgKGIsICcyJywgc2l6ZSk7CisrICBt ZW1zZXQgKGMsICczJywgNDgpOworK30KICsKLStjbGFzcyBiYXNlMiA6IHB1YmxpYyB2aXJ0dWFs IGJhc2UKKyt2b2lkCisrZm9vIChpbnQgc2l6ZSkKICt7Ci0rcHVibGljOgotKyAgYmFzZTIgKCkg OiBmb29fICgzKSB7IH0gLy8gYmFzZTI6OmJhc2UyCisrICBjaGFyIHRlbXAxW3NpemVdOworKyAg Y2hhciB0ZW1wM1s0OF07CiArCi0rcHJvdGVjdGVkOgotKyAgdm9pZCBhX2Z1bmN0aW9uICh2b2lk KSBjb25zdCB7IH0gLy8gYmFzZTI6OmFfZnVuY3Rpb24KLSsgIGludCBmb29fOwotK307CisrICB0 ZW1wMVtzaXplIC0gMV0gPSAnXDAnOworKyAgeworKyAgICBjaGFyIHRlbXAyW3NpemVdOwogKwot K2NsYXNzIGRlcml2ZWQgOiBwdWJsaWMgYmFzZTEsIHB1YmxpYyBiYXNlMgotK3sKLSsgIHB1Ymxp YzoKLSsgIGRlcml2ZWQodm9pZCkgOiBmb29fICg0KSB7IH0gLy8gZGVyaXZlZDo6ZGVyaXZlZAot KyAgdm9pZCBhX2Z1bmN0aW9uICh2b2lkKSBjb25zdCAvLyBkZXJpdmVkOjphX2Z1bmN0aW9uCi0r ICB7IAotKyAgICB0aGlzLT5iYXNlMTo6YV9mdW5jdGlvbiAoKTsKLSsgICAgdGhpcy0+YmFzZTI6 OmFfZnVuY3Rpb24gKCk7Ci0rICB9CisrICAgIGJhciAodGVtcDEsIHRlbXAyLCB0ZW1wMywgc2l6 ZSk7CiArCi0rICBwcm90ZWN0ZWQ6Ci0rICBpbnQgZm9vXzsKLSt9OworKyAgICBtYXJrZXIgKCk7 CS8qIGJyZWFrLWhlcmUgKi8KKysgIH0KKyt9CiArCiAraW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNo YXIqIGFyZ3ZbXSkgLy8gbWFpbgotK3sgLy8gbWFpbgotKyAgZGVyaXZlZCBkOwotKyAgdm9pZCAo ZGVyaXZlZDo6KnBmdW5jKSAodm9pZCkgY29uc3QgPSAmZGVyaXZlZDo6YV9mdW5jdGlvbjsKLSsg IChkLipwZnVuYykgKCk7Ci0rCi0rICBiYXNlIGEgKDEpLCBiICgzKSwgYyAoOCk7Ci0rICAodm9p ZCkgYS5vdmVybG9hZCAoKTsKLSsgICh2b2lkKSBhLm92ZXJsb2FkIChzdGF0aWNfY2FzdDxpbnQ+ ICgwKSk7Ci0rICAodm9pZCkgYS5vdmVybG9hZCAoc3RhdGljX2Nhc3Q8c2hvcnQ+ICgwKSk7Ci0r ICAodm9pZCkgYS5vdmVybG9hZCAoc3RhdGljX2Nhc3Q8bG9uZz4gKDApKTsKLSsgICh2b2lkKSBh Lm92ZXJsb2FkIChzdGF0aWNfY2FzdDxjaGFyKj4gKDApKTsKLSsgICh2b2lkKSBhLm92ZXJsb2Fk IChhKTsKLSsKLSsgIGludCByOwotKyAgciA9IGIgKyBjOwotKyAgKythOwotKyAgYSArPSBiOwot KyAgciA9IGIgLSBjOwotKyAgLS1hOwotKyAgYSAtPSBiOwotKyAgciA9IGIgKiBjOwotKyAgYSAq PSBiOwotKyAgciA9IGIgLyBjOwotKyAgYSAvPSBiOwotKyAgciA9IGIgJSBjOwotKyAgYSAlPSBi OwotKyAgYm9vbCB4ID0gKGIgPCBjKTsKLSsgIHggPSAoYiA8PSBjKTsKLSsgIHggPSAoYiA+IGMp OwotKyAgeCA9IChiID49IGMpOwotKyAgeCA9IChiICE9IGMpOwotKyAgeCA9IChiID09IGMpOwot KyAgeCA9ICghYik7Ci0rICB4ID0gKGIgJiYgYyk7Ci0rICB4ID0gKGIgfHwgYyk7Ci0rICByID0g YiA8PCAyOwotKyAgYSA8PD0gMTsKLSsgIHIgPSBiID4+IDI7Ci0rICBhID4+PSAxOwotKyAgciA9 IH5iOwotKyAgciA9IGIgJiBjOwotKyAgYSAmPSBjOwotKyAgciA9IGIgfCBjOwotKyAgYSB8PSBj OwotKyAgciA9IGIgXiBjOwotKyAgYSBePSBjOwotKyAgYSA9IGM7Ci0rICBhICgpOwotKyAgaW50 IGkgPSBhWzNdOwotKyAgZGVyaXZlZCogZiA9IG5ldyBkZXJpdmVkICgpOwotKyAgZGVyaXZlZCog ZyA9IG5ldyBkZXJpdmVkWzNdOwotKyAgZGVsZXRlIGY7Ci0rICBkZWxldGVbXSBnOwotKyAgYS0+ b3ZlcmxvYWQgKCk7Ci0rICByID0gYS0+KmI7Ci0rCi0rICB0Y2xhc3M8Y2hhcj4gY2hhcl90Y2xh c3M7Ci0rICB0Y2xhc3M8aW50PiBpbnRfdGNsYXNzOwotKyAgdGNsYXNzPHNob3J0PiBzaG9ydF90 Y2xhc3M7Ci0rICB0Y2xhc3M8bG9uZz4gbG9uZ190Y2xhc3M7Ci0rICB0Y2xhc3M8YmFzZT4gYmFz ZV90Y2xhc3M7Ci0rICBjaGFyX3RjbGFzcy5kb19zb21ldGhpbmcgKCk7Ci0rICBpbnRfdGNsYXNz LmRvX3NvbWV0aGluZyAoKTsKLSsgIHNob3J0X3RjbGFzcy5kb19zb21ldGhpbmcgKCk7Ci0rICBs b25nX3RjbGFzcy5kb19zb21ldGhpbmcgKCk7Ci0rICBiYXNlX3RjbGFzcy5kb19zb21ldGhpbmcg KCk7Ci0rCi0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgaW50PiAoKTsKLSsgIGZsdWJi ZXI8aW50LCBpbnQsIGludCwgaW50LCBzaG9ydD4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBp bnQsIGludCwgbG9uZz4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIGludCwgY2hhcj4g KCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBpbnQ+ICgpOwotKyAgZmx1YmJl cjxpbnQsIGludCwgaW50LCBzaG9ydCwgc2hvcnQ+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwg aW50LCBzaG9ydCwgbG9uZz4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBj aGFyPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgaW50PiAoKTsKLSsgIGZs dWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywgc2hvcnQ+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGlu dCwgaW50LCBsb25nLCBsb25nPiAoKTsKLSsgIGZsdWJiZXI8aW50LCBpbnQsIGludCwgbG9uZywg Y2hhcj4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIGludD4gKCk7Ci0rICBm bHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIHNob3J0PiAoKTsKLSsgIGZsdWJiZXI8aW50LCBp bnQsIGludCwgY2hhciwgbG9uZz4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIs IGNoYXI+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgaW50PiAoKTsKLSsg IGZsdWJiZXI8aW50LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0PiAoKTsKLSsgIGZsdWJiZXI8aW50 LCBpbnQsIHNob3J0LCBpbnQsIGxvbmc+ICgpOwotKyAgZmx1YmJlcjxpbnQsIGludCwgc2hvcnQs IGludCwgY2hhcj4gKCk7Ci0rICBmbHViYmVyPGludCwgaW50LCBzaG9ydCwgc2hvcnQsIGludD4g KCk7Ci0rICBmbHViYmVyPHNob3J0LCBpbnQsIHNob3J0LCBpbnQsIHNob3J0PiAoKTsKLSsgIGZs dWJiZXI8bG9uZywgc2hvcnQsIGxvbmcsIHNob3J0LCBsb25nPiAoKTsKLSsKLSsgIHBvbGljeTEg cDEgKDEpOwotKyAgcDEuZnVuY3Rpb24gKCk7Ci0rICBwb2xpY3kyIHAyICgyKTsKLSsgIHAyLmZ1 bmN0aW9uICgpOwotKyAgcG9saWN5MyBwMyAoMyk7Ci0rICBwMy5mdW5jdGlvbiAoKTsKLSsgIHBv bGljeTQgcDQgKDQpOwotKyAgcDQuZnVuY3Rpb24gKCk7Ci0rCi0rICBwb2xpY3lkMSBwZDEgKDUp OwotKyAgcGQxLmZ1bmN0aW9uICgpOwotKyAgcG9saWN5ZDIgcGQyICg2KTsKLSsgIHBkMi5mdW5j dGlvbiAoKTsKLSsgIHBvbGljeWQzIHBkMyAoNyk7Ci0rICBwZDMuZnVuY3Rpb24gKCk7Ci0rICBw b2xpY3lkNCBwZDQgKGQpOwotKyAgcGQ0LmZ1bmN0aW9uICgpOwotKyAgcG9saWN5ZDUgcGQ1IChp bnRfdGNsYXNzKTsKLSsgIHBkNS5mdW5jdGlvbiAoKTsKLSsKLSsgIGJhc2UxIGIxICgzKTsKLSsK LSsgIHIgPSBhOwotKyAgY2hhciogc3RyID0gYTsKLSsgIGZsdWZmKiBmbHAgPSBhOwotKyAgZmx1 ZmYqKiBmbHBwID0gYTsKKyttYWluICh2b2lkKQorK3sKKysgIGZvbyAoMjYpOworKyAgZm9vICg3 OCk7CisrICByZXR1cm4gMDsKICt9Ci0rCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvcmVhbGNwcC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9yZWFsY3BwLmV4cAorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRlOTJl NzUKK2luZGV4IDAwMDAwMDAuLjVkYTczNzgKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL3JlYWxjcHAuZXhwCi1AQCAtMCwwICsxLDg5MSBAQAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCitAQCAtMCwwICsxLDYyIEBACiArIyBDb3B5cmlnaHQg MjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBA IC0yMzgyNiw5NTMgKzc4NDksMjQ2IEBAIGluZGV4IDAwMDAwMDAuLjRlOTJlNzUKICsjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIg dGVzdHN1aXRlLgotKwotKyMjIwotKyMKLSsjIFNPTUUgSU1QT1JUQU5UIE5PVEVTCi0rIwotKyMj IwotKwotKyMgVGhlICJpbmZvIGZ1bmMiIHRlc3RzIGhlcmUgYXJlbid0IGNvbXBsZXRlLiBJJ3Zl IGNvbW1lbnRlZCB0aGVtCi0rIyBvdXQgZm9yIG5vdy4KLSsKLSsjIEEgaGVscGVyIHByb2Mgd2hp Y2ggc2V0cyBhIGJyZWFrcG9pbnQgYXQgRlVOQyBhbmQgYXR0ZW1wdHMgdG8KLSsjIHJ1biB0byB0 aGUgYnJlYWtwb2ludC4KLStwcm9jIHRlc3RfYnJlYWtwb2ludCB7ZnVuY30gewotKyAgICBnbG9i YWwgREVDCi0rCi0rICAgICMgUmVzdGFydCBldmVyeSB0aW1lCi0rICAgIGlmIHshW3J1bnRvX21h aW5dfSB7Ci0rCXBlcnJvciAiY291bGQgbm90IHJ1biB0byBtYWluIHdoZW4gYXR0ZW1wdGluZyB0 byBicmVhayBhdCAkZnVuYyIKLSsJY29udGludWUKLSsgICAgfSBlbHNlIHsKLSsJZ2RiX2JyZWFr cG9pbnQgIiRmdW5jIgotKwlzZXQgaSBbZXhwciB7W3N0cmluZyBsYXN0IDogJGZ1bmNdICsgMX1d Ci0rCXNldCBlZnVuYyBbZXNjYXBlIFtzdHJpbmcgcmFuZ2UgJGZ1bmMgJGkgZW5kXV0KLSsJZ2Ri X3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAiQ29udGludWluZy5cclxuXHJcbkJyZWFrcG9pbnQg JERFQyssLiokZWZ1bmMuKiIgXAotKwkgICAgImNvbnRpbnVlIHRvICRmdW5jIgotKyAgICB9Cisr c2V0IHRlc3RmaWxlIHZsYQorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmluZmls ZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYgIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtk ZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHBy b2dyYW0iCisrICAgIHJldHVybiAtMQogK30KICsKLSsjIEVzY2FwZSBleHBlY3QtcmVzZXJ2ZWQg Y2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nCi0rcHJvYyBlc2NhcGUge3N0cmluZ30gewotKyAgICBy ZWdzdWIgLWFsbCB7XCp9ICRzdHJpbmcge1wqfSBzdHJpbmcKLSsgICAgcmVnc3ViIC1hbGwge1wo fSAkc3RyaW5nIHtcKH0gc3RyaW5nCi0rICAgIHJlZ3N1YiAtYWxsIHtcKX0gJHN0cmluZyB7XCl9 IHN0cmluZwotKyAgICByZWdzdWIgLWFsbCB7XF19ICRzdHJpbmcge1xdfSBzdHJpbmcKLSsgICAg cmVnc3ViIC1hbGwge1xbfSAkc3RyaW5nIHtcW30gc3RyaW5nCi0rICAgIHJlZ3N1YiAtYWxsIHtc K30gJHN0cmluZyB7XCt9IHN0cmluZwotKyAgICByZWdzdWIgLWFsbCB7XF59ICRzdHJpbmcge1xe fSBzdHJpbmcKLSsgICAgcmVnc3ViIC1hbGwge1whfSAkc3RyaW5nIHtcIX0gc3RyaW5nCi0rICAg IHJldHVybiAkc3RyaW5nCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYgIVtydW50 b19tYWluXSB7CisrICAgIHVudGVzdGVkIHZsYQorKyAgICByZXR1cm4gLTEKICt9CiArCi0rIyBB ZGQgYSBmdW5jdGlvbiB0byB0aGUgbGlzdCBvZiB0ZXN0ZWQgZnVuY3Rpb25zCi0rIyBGVU5DIGlz IHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiAod2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gZ2RiIGNv bW1hbmRzKQotKyMgVFlQRSBpcyB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24sIGFzIGV4cGVjdGVk IGZyb20gdGhlICJwcmludCIgY29tbWFuZAotKyMgUFJJTlQgaXMgdGhlIG5hbWUgb2YgdGhlIGZ1 bmN0aW9uLCBhcyBleHBlY3RlZCByZXN1bHQgb2YgdGhlIHByaW50IGNvbW1hbmQKLSsjICAqT1Iq ICItIiwgaW5kaWNhdGluZyB0aGF0IEZVTkMgc2hvdWxkIGJlIHVzZWQgKG5lZWRlZCBmb3Igdmly dHVhbC9pbmhlcml0ZWQKLSsjICAgZnVuY3MpCi0rIyBMU1QgaXMgZWl0aGVyIHRoZSBleHBlY3Rl ZCByZXN1bHQgb2YgdGhlIGxpc3QgY29tbWFuZCAodGhlIGNvbW1lbnQgZnJvbQotKyMgIHRoZSBz b3VyY2UgY29kZSkgKk9SKiAiLSIsIGluIHdoaWNoIGNhc2UgRlVOQyB3aWxsIGJlIHVzZWQKLSsj IElORiBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IG9mICJpbmZvIGZ1bmMiCi0rIwotKyMgSWYgYW55 IG9mIFBSSU5ULCBMU1QsIG9yIElORiBpcyAiIiwgdGhlIHRlc3Qgd2lsbCBiZSBza2lwcGVkCi0r IwotKyMgVXNhZ2U6Ci0rIyBhZGQgTkFNRSBUWVBFIFBSSU5UIExTVCBJTkZPCi0rIyBhZGQgTkFN RSBUWVBFIFBSSU5UIC0gSU5GTwotK3Byb2MgYWRkIHtmdW5jIHR5cGUgcHJpbnQgbHN0IGluZn0g ewotKyAgICBnbG9iYWwgYWxsX2Z1bmN0aW9ucyBDT05WQVIgQUREUgotKwotKyAgICBzZXQgYWxs X2Z1bmN0aW9ucygkZnVuYyx0eXBlKSAkdHlwZQotKyAgICBpZiB7JHByaW50ID09ICItIn0gewot KwlzZXQgcHJpbnQgJGZ1bmMKLSsgICAgfQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJicmVhay1oZXJlIl0KICsKLSsgICAgIyBBbiBleGNlcHRpb246IHNpbmNlIGdkYiBj YW5vbmljYWxpemVzIEMrKyBvdXRwdXQsCi0rICAgICMgIih2b2lkKSIgbXVzdCBiZSBtdXRhdGVk IHRvICIoKSIuCi0rICAgIHNldCBwcmludCBbcmVnc3ViIHtcKHZvaWRcKX0gJHByaW50IHsoKX1d CisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCiArCi0rICAgIHNldCBh bGxfZnVuY3Rpb25zKCRmdW5jLHByaW50KSBcCi0rCSIkQ09OVkFSID0ge1tlc2NhcGUgJHR5cGVd fSAkQUREUiA8W2VzY2FwZSAkcHJpbnRdLio+IgotKyAgICBpZiB7JGxzdCA9PSAiLSJ9IHsKLSsJ c2V0IGxzdCAiJGZ1bmMiCi0rICAgIH0KLSsgICAgc2V0IGFsbF9mdW5jdGlvbnMoJGZ1bmMsbGlz dCkgIi4qLy8gW2VzY2FwZSAkbHN0XSIKLSsgICAgc2V0IGFsbF9mdW5jdGlvbnMoJGZ1bmMsaW5m b19mdW5jKSAkaW5mCi0rfQorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0gY2hhciBc XFxbdmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMSIKKytnZGJfdGVzdCAid2hhdGlz IHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgdGVt cDIiCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJm aXJzdDogd2hhdGlzIHRlbXAzIgogKwotK3Byb2MgZ2V0IHtmdW5jIGNtZH0gewotKyAgICBnbG9i YWwgYWxsX2Z1bmN0aW9ucwotKyAgICByZXR1cm4gJGFsbF9mdW5jdGlvbnMoJGZ1bmMsJGNtZCkK LSt9CisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZp cnN0OiBwdHlwZSB0ZW1wMSIKKytnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hhciBc XFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIg InR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDMiCiArCi0rIyBSZXR1 cm5zIGEgbGlzdCBvZiBmdW5jdGlvbiBuYW1lcyBmb3IgYSBnaXZlbiBjb21tYW5kCi0rcHJvYyBn ZXRfZnVuY3Rpb25zIHtjbWR9IHsKLSsgICAgZ2xvYmFsIGFsbF9mdW5jdGlvbnMKLSsgICAgc2V0 IHJlc3VsdCB7fQotKyAgICBmb3JlYWNoIGkgW2FycmF5IG5hbWVzIGFsbF9mdW5jdGlvbnMgKiwk Y21kXSB7Ci0rCWlmIHskYWxsX2Z1bmN0aW9ucygkaSkgIT0gIiJ9IHsKLSsJICAgIHNldCBpZHgg W3N0cmluZyBsYXN0ICwgJGldCi0rCSAgICBpZiB7JGlkeCAhPSAtMX0gewotKwkJbGFwcGVuZCBy ZXN1bHQgW3N0cmluZyByYW5nZSAkaSAwIFtleHByIHskaWR4IC0gMX1dXQotKwkgICAgfQotKwl9 Ci0rICAgIH0KKytnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyAyNiB0aW1lcz4i ICJmaXJzdDogcHJpbnQgdGVtcDEiCisrZ2RiX3Rlc3QgInAgdGVtcDIiICIgPSAnMicgPHJlcGVh dHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAyIgorK2dkYl90ZXN0ICJwIHRlbXAzIiAi ID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgImZpcnN0OiBwcmludCB0ZW1wMyIKICsKLSsgICAg cmV0dXJuIFtsc29ydCAkcmVzdWx0XQotK30KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi YnJlYWstaGVyZSIKICsKLSsjIFNvbWUgY29udmVuaWVuY2UgdmFyaWFibGVzIGZvciB0aGlzIHRl c3QKLStzZXQgREVDIHtbMC05XX07ICMgYSBkZWNpbWFsIG51bWJlcgotK3NldCBIRVgge1swLTlh LWZBLUZdfTsgIyBhIGhleGlkZWNpbWFsIG51bWJlcgotK3NldCBDT05WQVIgIlxcXCQkREVDKyI7 ICMgY29udmVuaWVuY2UgdmFyaWFibGUgcmVnZXhwCi0rc2V0IEFERFIgIjB4JEhFWCsiOyAjIGFk ZHJlc3MKLSsKLSsjIEFuIGFycmF5IG9mIGZ1bmN0aW9ucy9tZXRob2RzIHRoYXQgd2UgYXJlIHRl c3RpbmcuLi4KLSsjIEVhY2ggZWxlbWVudCBjb25zaXN0cyBpcyBpbmRleGVkIGJ5IE5BTUUsQ09N TUFORCwgd2hlcmUKLSsjIE5BTUUgaXMgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIENPTU1BTkQgaXMg dGhlIGdkYiBjb21tYW5kIHRoYXQKLSsjIHdlIGFyZSB0ZXN0aW5nLiBUaGUgdmFsdWUgb2YgdGhl IGFycmF5IGZvciBhbnkgaW5kZXggcGFpciBpcwotKyMgdGhlIGV4cGVjdGVkIHJlc3VsdCBvZiBy dW5uaW5nIENPTU1BTkQgd2l0aCB0aGUgTkFNRSBhcyBhcmd1bWVudC4KLSsjIElmIHRoZSB2YWx1 ZSBpcyBibGFuaywgdGhlIHRlc3Qgd2lsbCBiZSBza2lwcGVkIGZvciB0aGUgZ2l2ZW4gZnVuY3Rp b24uCi0rCi0rIyBUaGUgYXJyYXkgaG9sZGluZyBhbGwgZnVuY3Rpb25zL21ldGhvZHMgdG8gdGVz dC4gVmFsaWQgc3ViaW5kZXhlcwotKyMgYXJlIChub25lIG5lZWQgY2hhcmFjdGVyIGVzY2FwaW5n IC0tICJhZGQiIHdpbGwgdGFrZSBjYXJlIG9mIHRoYXQpOgotKwotKyMgYWRkIG5hbWUgdHlwZSBw cmludF9uYW1lIGxpc3QgaW5mb19mdW5jCi0rIyBOQU1FLHR5cGU6IHZhbHVlIGlzIHR5cGUgb2Yg ZnVuY3Rpb24gCi0rIyBOQU1FLHByaW50OiB2YWx1ZSBpcyBwcmludCBuYW1lIG9mIGZ1bmN0aW9u IChjYXJlZnVsIHcvaW5oZXJpdGVkL3ZpcnR1YWwhKQotKyMgTkFNRSxsaXN0OiB2YWx1ZSBpcyBj b21tZW50IGluIHNvdXJjZSBjb2RlIG9uIGZpcnN0IGxpbmUgb2YgZnVuY3Rpb24KLSsjICAgKHdp dGhvdXQgdGhlIGxlYWRpbmcgIi8vIikKLSsjIE5BTUUsaW5mb19mdW5jOiB2YWx1ZSBpcyB0aGUg ZXhwZWN0ZWQgcmVzdWx0IG9mICJpbmZvIGZ1bmMiCi0rYXJyYXkgc2V0IGFsbF9mdW5jdGlvbnMg e30KLSsKLSsjICJOb3JtYWwiIGZ1bmN0aW9ucy9tZXRob2RzCi0rYWRkIHttYWlufSBcCi0rICAg IHtpbnQgKGludCwgY2hhciAqKil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICB7aW50IG1h aW4oaW50LCBjaGFyICoqKTt9Ci0rYWRkIHtkZXJpdmVkOjphX2Z1bmN0aW9ufSBcCi0rICAgIHt2 b2lkIChjb25zdCBkZXJpdmVkICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAg e3ZvaWQgZGVyaXZlZDo6YV9mdW5jdGlvbigpO30KLSthZGQge2Jhc2UxOjphX2Z1bmN0aW9ufSBc Ci0rICAgIHt2b2lkIChjb25zdCBiYXNlMSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLSBc Ci0rICAgIHt2b2lkIGJhc2UxOjphX2Z1bmN0aW9uKCk7fQotK2FkZCB7YmFzZTI6OmFfZnVuY3Rp b259IFwKLSsgICAge3ZvaWQgKGNvbnN0IGJhc2UyICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAg ICAtIFwKLSsgICAge3ZvaWQgYmFzZTI6OmFfZnVuY3Rpb24oKTt9Ci0rCi0rIyBDb25zdHJ1Y3Rv cnMKLSthZGQge2Rlcml2ZWQ6OmRlcml2ZWR9IFwKLSsgICAge3ZvaWQgKGRlcml2ZWQgKiBjb25z dCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICB7dm9pZCBkZXJpdmVkOjpkZXJpdmVkKCk7 fQotK2FkZCB7YmFzZTE6OmJhc2UxKHZvaWQpfSBcCi0rICAgIHt2b2lkIChiYXNlMSAqIGNvbnN0 LCBjb25zdCB2b2lkICoqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIHt2b2lk IGJhc2UxOjpiYXNlMSgpO30KLSthZGQge2Jhc2UxOjpiYXNlMShpbnQpfSBcCi0rICAgIHt2b2lk IChiYXNlMSAqIGNvbnN0LCBpbnQpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAge3ZvaWQg YmFzZTE6OmJhc2UxKGludCk7fQotK2FkZCB7YmFzZTI6OmJhc2UyfSBcCi0rICAgIHt2b2lkIChi YXNlMiAqIGNvbnN0LCBjb25zdCB2b2lkICoqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLSBc Ci0rICAgIHt2b2lkIGJhc2UyOjpiYXNlMigpO30KLSthZGQge2Jhc2U6OmJhc2Uodm9pZCl9IFwK LSsgICAge3ZvaWQgKGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICB7 dm9pZCBiYXNlOjpiYXNlKCk7fQotK2FkZCB7YmFzZTo6YmFzZShpbnQpfSBcCi0rICAgIHt2b2lk IChiYXNlICogY29uc3QsIGludCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICB7dm9pZCBi YXNlOjpiYXNlKCk7fQotKwotKyMgRGVzdHJ1Y3RvcnMKLSthZGQge2Jhc2U6On5iYXNlfSBcCi0r ICAgIHt2b2lkIChiYXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAge3Zv aWQgYmFzZTo6fmJhc2UoKTt9Ci0rCi0rIyBPdmVybG9hZGVkIG1ldGhvZHMgKGFsbCBhcmUgY29u c3QgLS0gd2UgdHJ5IHRvIHVzZSB0aGUgdm9pZAotKyMgbWV0aG9kIHdpdGggYW5kIHdpdGhvdXQg c3BlY2lmeWluZyAiY29uc3QiKQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQodm9pZCl9IFwKLSsgICAg e2ludCAoY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAge2Jhc2U6Om92ZXJs b2FkKHZvaWQpIGNvbnN0fSBcCi0rICAgIHtpbnQgYmFzZTo6b3ZlcmxvYWQoKSBjb25zdDt9Ci0r YWRkIHtiYXNlOjpvdmVybG9hZCh2b2lkKSBjb25zdH0gXAotKyAgICB7aW50IChjb25zdCBiYXNl ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICB7YmFzZTo6b3ZlcmxvYWQodm9pZCkgY29uc3R9 IFwKLSsgICAge2ludCBiYXNlOjpvdmVybG9hZCgpIGNvbnN0O30KLSthZGQge2Jhc2U6Om92ZXJs b2FkKGludCkgY29uc3R9IFwKLSsgICAge2ludCAoY29uc3QgYmFzZSAqIGNvbnN0LCBpbnQpfSBc Ci0rICAgIC0gXAotKyAgICAtIFwKLSsgICAge2ludCBiYXNlOjpvdmVybG9hZChpbnQpIGNvbnN0 O30KLSthZGQge2Jhc2U6Om92ZXJsb2FkKHNob3J0KSBjb25zdH0gXAotKyAgICB7aW50IChjb25z dCBiYXNlICogY29uc3QsIHNob3J0KX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIHtpbnQg YmFzZTo6b3ZlcmxvYWQoc2hvcnQpIGNvbnN0O30KLSthZGQge2Jhc2U6Om92ZXJsb2FkKGxvbmcp IGNvbnN0fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgbG9uZyl9IFwKLSsgICAg LSBcCi0rICAgIC0gXAotKyAgICB7aW50IGJhc2U6Om92ZXJsb2FkKGxvbmcpIGNvbnN0O30KLSth ZGQge2Jhc2U6Om92ZXJsb2FkKGNoYXIqKSBjb25zdH0gXAotKyAgICB7aW50IChjb25zdCBiYXNl ICogY29uc3QsIGNoYXIgKil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICB7aW50IGJhc2U6 Om92ZXJsb2FkKGNoYXIgKikgY29uc3Q7fQotK2FkZCB7YmFzZTo6b3ZlcmxvYWQoYmFzZSYpIGNv bnN0fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgYmFzZSAmKX0gXAotKyAgICAt IFwKLSsgICAgLSBcCi0rICAgIHtpbnQgYmFzZTo6b3ZlcmxvYWQoYmFzZSAmKSBjb25zdDt9Ci0r Ci0rIyBPcGVyYXRvcnMKLSthZGQge2Jhc2U6Om9wZXJhdG9yK30gXAotKyAgICB7aW50IChjb25z dCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAg ICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcisrfSBcCi0rICAgIHtiYXNlIChiYXNlICogY29uc3Qp fSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IrPX0g XAotKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAot KyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3ItfSBcCi0rICAgIHtpbnQgKGNv bnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0r ICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yLS19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25z dCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvci09 fSBcCi0rICAgIHtiYXNlIChiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBc Ci0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcip9IFwKLSsgICAge2ludCAo Y29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwK LSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IqPX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNv bnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7 YmFzZTo6b3BlcmF0b3IvfSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3Qg YmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJh dG9yLz19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAg ICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yJX0gXAotKyAgICB7 aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAg IC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciU9fSBcCi0rICAgIHtiYXNlIChiYXNl ICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0r YWRkIHtiYXNlOjpvcGVyYXRvcjx9IFwKLSsgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwg Y29uc3QgYmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6 Om9wZXJhdG9yPD19IFwKLSsgICAge2Jvb2wgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3QgYmFz ZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9y Pn0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0r ICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I+PX0gXAotKyAg ICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAot KyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IhPX0gXAotKyAgICB7Ym9vbCAo Y29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwK LSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I9PX0gXAotKyAgICB7Ym9vbCAoY29uc3QgYmFz ZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQot K2FkZCB7YmFzZTo6b3BlcmF0b3IhfSBcCi0rICAgIHtib29sIChjb25zdCBiYXNlICogY29uc3Qp fSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3ImJn0g XAotKyAgICB7Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAg IC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3J8fH0gXAotKyAgICB7 Ym9vbCAoY29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAg ICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I8PH0gXAotKyAgICB7aW50IChjb25z dCBiYXNlICogY29uc3QsIGludCl9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRk IHtiYXNlOjpvcGVyYXRvcjw8PX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNvbnN0LCBpbnQpfSBc Ci0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3I+Pn0gXAot KyAgICB7aW50IChjb25zdCBiYXNlICogY29uc3QsIGludCl9IFwKLSsgICAgLSBcCi0rICAgIC0g XAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcj4+PX0gXAotKyAgICB7YmFzZSAoYmFzZSAq IGNvbnN0LCBpbnQpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6 b3BlcmF0b3J+fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBc Ci0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciZ9IFwKLSsgICAge2ludCAo Y29uc3QgYmFzZSAqIGNvbnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwK LSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3ImPX0gXAotKyAgICB7YmFzZSAoYmFzZSAqIGNv bnN0LCBjb25zdCBiYXNlICYpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7 YmFzZTo6b3BlcmF0b3J8fSBcCi0rICAgIHtpbnQgKGNvbnN0IGJhc2UgKiBjb25zdCwgY29uc3Qg YmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJh dG9yfD19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3QgYmFzZSAmKX0gXAotKyAg ICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yXn0gXAotKyAgICB7 aW50IChjb25zdCBiYXNlICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAg IC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcl49fSBcCi0rICAgIHtiYXNlIChiYXNl ICogY29uc3QsIGNvbnN0IGJhc2UgJil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0r YWRkIHtiYXNlOjpvcGVyYXRvcj19IFwKLSsgICAge2Jhc2UgKGJhc2UgKiBjb25zdCwgY29uc3Qg YmFzZSAmKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJh dG9yKCl9IFwKLSsgICAge3ZvaWQgKGNvbnN0IGJhc2UgKiBjb25zdCl9IFwKLSsgICAgLSBcCi0r ICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvcltdfSBcCi0rICAgIHtpbnQgKGNv bnN0IGJhc2UgKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSth ZGQge2Jhc2U6Om9wZXJhdG9yIG5ld30gXAotKyAgICB7dm9pZCAqKHNpemVfdCl9IFwKLSsgICAg LSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBkZWxldGV9IFwKLSsg ICAge3ZvaWQgKHZvaWQgKil9IFwKLSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHti YXNlOjpvcGVyYXRvciBuZXdbXX0gXAotKyAgICB7dm9pZCAqKHNpemVfdCl9IFwKLSsgICAgLSBc Ci0rICAgIC0gXAotKyAgICAtCi0rYWRkIHtiYXNlOjpvcGVyYXRvciBkZWxldGVbXX0gXAotKyAg ICB7dm9pZCAodm9pZCAqKX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jh c2U6Om9wZXJhdG9yIGNoYXIqfSBcCi0rICAgIHtjaGFyICooY29uc3QgYmFzZSAqIGNvbnN0KX0g XAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSthZGQge2Jhc2U6Om9wZXJhdG9yIGZsdWZm Kn0gXAotKyAgICB7Zmx1ZmYgKihjb25zdCBiYXNlICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAg ICAtIFwKLSsgICAgLQotK2FkZCB7YmFzZTo6b3BlcmF0b3IgZmx1ZmYqKn0gXAotKyAgICB7Zmx1 ZmYgKiooY29uc3QgYmFzZSAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0K LSthZGQge2Jhc2U6Om9wZXJhdG9yIGludH0gXAotKyAgICB7aW50IChjb25zdCBiYXNlICogY29u c3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotKwotKyMgVGVtcGxhdGVzCi0rYWRk IHt0Y2xhc3M8Y2hhcj46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNzPGNoYXI+ ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwKLSsgICAgLQotK2FkZCB7dGNsYXNzPGlu dD46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNzPGludD4gKiBjb25zdCl9IFwK LSsgICAgLSBcCi0rICAgIC0gXAotKyAgICAtCi0rYWRkIHt0Y2xhc3M8bG9uZz46OmRvX3NvbWV0 aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNzPGxvbmc+ICogY29uc3QpfSBcCi0rICAgIC0gXAot KyAgICAtIFwKLSsgICAgLQotK2FkZCB7dGNsYXNzPHNob3J0Pjo6ZG9fc29tZXRoaW5nfSBcCi0r ICAgIHt2b2lkICh0Y2xhc3M8c2hvcnQ+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICAtIFwK LSsgICAgLQotK2FkZCB7dGNsYXNzPGJhc2U+Ojpkb19zb21ldGhpbmd9IFwKLSsgICAge3ZvaWQg KHRjbGFzczxiYXNlPiAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAgLSBcCi0rICAgIC0KLSth ZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBpbnQ+fSBcCi0rICAgIHt2b2lkICh2b2lk KX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8aW50 LCBpbnQsIGludCwgaW50LCBzaG9ydD59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0g XAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgaW50LCBp bnQsIGxvbmc+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJl ciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgaW50LCBjaGFyPn0gXAot KyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0r YWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBpbnQ+fSBcCi0rICAgIHt2b2lkICh2 b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8 aW50LCBpbnQsIGludCwgc2hvcnQsIHNob3J0Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsg ICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBp bnQsIHNob3J0LCBsb25nPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAg IGZsdWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIHNob3J0LCBj aGFyPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAot KyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGxvbmcsIGludD59IFwKLSsgICAg e3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7 Zmx1YmJlcjxpbnQsIGludCwgaW50LCBsb25nLCBzaG9ydD59IFwKLSsgICAge3ZvaWQgKHZvaWQp fSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQs IGludCwgaW50LCBsb25nLCBsb25nPn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBc Ci0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGxv bmcsIGNoYXI+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJl ciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGludCwgY2hhciwgaW50Pn0gXAot KyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0r YWRkIHtmbHViYmVyPGludCwgaW50LCBpbnQsIGNoYXIsIHNob3J0Pn0gXAotKyAgICB7dm9pZCAo dm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0rYWRkIHtmbHViYmVy PGludCwgaW50LCBpbnQsIGNoYXIsIGxvbmc+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAg ICAtIFwKLSsgICAgZmx1YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8aW50LCBpbnQsIGlu dCwgY2hhciwgY2hhcj59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBm bHViYmVyIFwKLSsgICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgaW50 Pn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAg ICAtCi0rYWRkIHtmbHViYmVyPGludCwgaW50LCBzaG9ydCwgaW50LCBzaG9ydD59IFwKLSsgICAg e3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7 Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQsIGludCwgbG9uZz59IFwKLSsgICAge3ZvaWQgKHZvaWQp fSBcCi0rICAgIC0gXAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQs IGludCwgc2hvcnQsIGludCwgY2hhcj59IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIC0g XAotKyAgICBmbHViYmVyIFwKLSsgICAgLQotK2FkZCB7Zmx1YmJlcjxpbnQsIGludCwgc2hvcnQs IHNob3J0LCBpbnQ+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1 YmJlciBcCi0rICAgIC0KLSthZGQge2ZsdWJiZXI8c2hvcnQsIGludCwgc2hvcnQsIGludCwgc2hv cnQ+fSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICAtIFwKLSsgICAgZmx1YmJlciBcCi0r ICAgIC0KLSthZGQge2ZsdWJiZXI8bG9uZywgc2hvcnQsIGxvbmcsIHNob3J0LCBsb25nPn0gXAot KyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAgLSBcCi0rICAgIGZsdWJiZXIgXAotKyAgICAtCi0r YWRkIHt0Y2xhc3M8YmFzZT46OmRvX3NvbWV0aGluZ30gXAotKyAgICB7dm9pZCAodGNsYXNzPGJh c2U+ICogY29uc3QpfSBcCi0rICAgIC0gXAotKyAgICB7dGNsYXNzPFQ+Ojpkb19zb21ldGhpbmd9 IFwKLSsgICAgLQotK2FkZCB7cG9saWN5MTo6cG9saWN5fSBcCi0rICAgIHt2b2lkIChwb2xpY3k8 aW50LCBvcGVyYXRpb25fMTx2b2lkKj4gPiAqIGNvbnN0LCBpbnQpfSBcCi0rICAgIHtwb2xpY3k8 aW50LCBvcGVyYXRpb25fMTx2b2lkKj4gPjo6cG9saWN5fSBcCi0rICAgIHtwb2xpY3k8VCwgUG9s aWN5Pjo6cG9saWN5fSBcCi0rICAgIC0KLSthZGQge3BvbGljeTI6OnBvbGljeX0gXAotKyAgICB7 dm9pZCAocG9saWN5PGludCwgb3BlcmF0aW9uXzI8dm9pZCo+ID4gKiBjb25zdCwgaW50KX0gXAot KyAgICB7cG9saWN5PGludCwgb3BlcmF0aW9uXzI8dm9pZCo+ID46OnBvbGljeX0gXAotKyAgICB7 cG9saWN5PFQsIFBvbGljeT46OnBvbGljeX0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3kzOjpwb2xp Y3l9IFwKLSsgICAge3ZvaWQgKHBvbGljeTxpbnQsIG9wZXJhdGlvbl8zPHZvaWQqPiA+ICogY29u c3QsIGludCl9IFwKLSsgICAge3BvbGljeTxpbnQsIG9wZXJhdGlvbl8zPHZvaWQqPiA+Ojpwb2xp Y3l9IFwKLSsgICAge3BvbGljeTxULCBQb2xpY3k+Ojpwb2xpY3l9IFwKLSsgICAgLQotK2FkZCB7 cG9saWN5NDo6cG9saWN5fSBcCi0rICAgIHt2b2lkIChwb2xpY3k8aW50LCBvcGVyYXRpb25fNDx2 b2lkKj4gPiAqIGNvbnN0LCBpbnQpfSBcCi0rICAgIHtwb2xpY3k8aW50LCBvcGVyYXRpb25fNDx2 b2lkKj4gPjo6cG9saWN5fSBcCi0rICAgIHtwb2xpY3k8VCwgUG9saWN5Pjo6cG9saWN5fSBcCi0r ICAgIC0KLSthZGQge3BvbGljeTE6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAot KyAgICB7b3BlcmF0aW9uXzE8dm9pZCo+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8 VD46OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeTI6OmZ1bmN0aW9ufSBcCi0rICAg IHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzI8dm9pZCo+OjpmdW5jdGlvbn0gXAot KyAgICB7b3BlcmF0aW9uXzI8VD46OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeTM6 OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzM8dm9p ZCo+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzM8VD46OmZ1bmN0aW9ufSBcCi0rICAg IC0KLSthZGQge3BvbGljeTQ6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAg ICB7b3BlcmF0aW9uXzQ8dm9pZCo+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzQ8VD46 OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ ID46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ ID4gKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6 cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkMTo6cG9saWN5ZH0gXAotKyAgICB7dm9p ZCAocG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPiAqIGNvbnN0LCBpbnQpfSBcCi0rICAg IHtwb2xpY3lkPGludCwgb3BlcmF0aW9uXzE8aW50PiA+Ojpwb2xpY3lkfSBcCi0rICAgIHtwb2xp Y3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDxpbnQsIG9w ZXJhdGlvbl8xPGludD4gPjo6fnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8aW50LCBv cGVyYXRpb25fMTxpbnQ+ID4gKiBjb25zdCl9IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQs IFBvbGljeT46On5wb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQxOjp+cG9saWN5ZH0g XAotKyAgICB7dm9pZCAocG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPiAqIGNvbnN0KX0g XAotKyAgICB7cG9saWN5ZDxpbnQsIG9wZXJhdGlvbl8xPGludD4gPjo6fnBvbGljeWR9IFwKLSsg ICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9IFwKLSsgICAgLQotK2FkZCB7cG9saWN5 ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+Ojpwb2xpY3lkfSBcCi0rICAgIHt2b2lkIChwb2xp Y3lkPGxvbmcsIG9wZXJhdGlvbl8xPGxvbmc+ID4gKiBjb25zdCwgbG9uZyl9IFwKLSsgICAgLSBc Ci0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKLSsgICAgLQotK2FkZCB7cG9s aWN5ZDI6OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8bG9uZywgb3BlcmF0aW9uXzE8 bG9uZz4gPiAqIGNvbnN0LCBsb25nKX0gXAotKyAgICB7cG9saWN5ZDxsb25nLCBvcGVyYXRpb25f MTxsb25nPiA+Ojpwb2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9 IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+Ojp+cG9s aWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5ZDxsb25nLCBvcGVyYXRpb25fMTxsb25nPiA+ICog Y29uc3QpfSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojp+cG9saWN5ZH0g XAotKyAgICAtCi0rYWRkIHtwb2xpY3lkMjo6fnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGlj eWQ8bG9uZywgb3BlcmF0aW9uXzE8bG9uZz4gPiAqIGNvbnN0KX0gXAotKyAgICB7cG9saWN5ZDxs b25nLCBvcGVyYXRpb25fMTxsb25nPiA+Ojp+cG9saWN5ZH0gXAotKyAgICB7cG9saWN5ZDxULCBQ b2xpY3k+Ojp+cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlv bl8xPGNoYXI+ID46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8Y2hhciwgb3BlcmF0 aW9uXzE8Y2hhcj4gPiAqIGNvbnN0LCBjaGFyKX0gXAotKyAgICAtIFwKLSsgICAge3BvbGljeWQ8 VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkMzo6cG9saWN5ZH0g XAotKyAgICB7dm9pZCAocG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+ICogY29uc3Qs IGNoYXIpfSBcCi0rICAgIHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNoYXI+ID46OnBvbGlj eWR9IFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRk IHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNoYXI+ID46On5wb2xpY3lkfSBcCi0rICAgIHt2 b2lkIChwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8xPGNoYXI+ID4gKiBjb25zdCl9IFwKLSsgICAg LSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfSBcCi0rICAgIC0KLSthZGQg e3BvbGljeWQzOjp+cG9saWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5ZDxjaGFyLCBvcGVyYXRp b25fMTxjaGFyPiA+ICogY29uc3QpfSBcCi0rICAgIHtwb2xpY3lkPGNoYXIsIG9wZXJhdGlvbl8x PGNoYXI+ID46On5wb2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lk fSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPjo6cG9s aWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5ZDxiYXNlLCBvcGVyYXRpb25fMTxiYXNlPiA+ICog Y29uc3QsIGJhc2UpfSBcCi0rICAgIC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xp Y3lkfSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ0Ojpwb2xpY3lkfSBcCi0rICAgIHt2b2lkIChw b2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4gKiBjb25zdCwgYmFzZSl9IFwKLSsgICAg e3BvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPjo6cG9saWN5ZH0gXAotKyAgICB7cG9s aWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ8YmFzZSwg b3BlcmF0aW9uXzE8YmFzZT4gPjo6fnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8YmFz ZSwgb3BlcmF0aW9uXzE8YmFzZT4gPiAqIGNvbnN0KX0gXAotKyAgICAtIFwKLSsgICAge3BvbGlj eWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDQ6On5wb2xp Y3lkfSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPGJhc2UsIG9wZXJhdGlvbl8xPGJhc2U+ID4gKiBj b25zdCl9IFwKLSsgICAge3BvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFzZT4gPjo6fnBvbGlj eWR9IFwKLSsgICAge3BvbGljeWQ8VCwgUG9saWN5Pjo6fnBvbGljeWR9IFwKLSsgICAgLQotK2Fk ZCB7cG9saWN5ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+Ojpwb2xp Y3lkfSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xh c3M8aW50PiA+ID4gKiBjb25zdCwgdGNsYXNzPGludD4pfSBcCi0rICAgIC0gXAotKyAgICB7cG9s aWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ1Ojpwb2xp Y3lkfSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xh c3M8aW50PiA+ID4gKiBjb25zdCwgdGNsYXNzPGludD4pfSBcCi0rICAgIHtwb2xpY3lkPHRjbGFz czxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID46OnBvbGljeWR9IFwKLSsgICAge3Bv bGljeWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkPHRjbGFz czxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID46On5wb2xpY3lkfSBcCi0rICAgIHt2 b2lkIChwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID4gKiBj b25zdCl9IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfSBc Ci0rICAgIC0KLSthZGQge3BvbGljeWQ1Ojp+cG9saWN5ZH0gXAotKyAgICB7dm9pZCAocG9saWN5 ZDx0Y2xhc3M8aW50Piwgb3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPiA+ICogY29uc3QpfSBcCi0r ICAgIHtwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVyYXRpb25fMTx0Y2xhc3M8aW50PiA+ID46On5w b2xpY3lkfSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46On5wb2xpY3lkfSBcCi0rICAgIC0K LSthZGQge3BvbGljeWQ8aW50LCBvcGVyYXRpb25fMTxpbnQ+ID46OmZ1bmN0aW9ufSBcCi0rICAg IHt2b2lkICh2b2lkKX0gXAotKyAgICB7b3BlcmF0aW9uXzE8aW50Pjo6ZnVuY3Rpb259XAotKyAg ICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQxOjpm dW5jdGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29wZXJhdGlvbl8xPGludD46 OmZ1bmN0aW9ufSBcCi0rICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVuY3Rpb259IFwKLSsgICAgLQot K2FkZCB7cG9saWN5ZDI6OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0gXAotKyAgICB7 b3BlcmF0aW9uXzE8bG9uZz46OmZ1bmN0aW9ufSBcCi0rICAgIHtvcGVyYXRpb25fMTxUPjo6ZnVu Y3Rpb259IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+ OjpmdW5jdGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsgICAge29wZXJhdGlvbl8xPGNo YXI+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCi0rICAg IC0KLSthZGQge3BvbGljeWQzOjpmdW5jdGlvbn0gXAotKyAgICB7dm9pZCAodm9pZCl9IFwKLSsg ICAge29wZXJhdGlvbl8xPGNoYXI+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8VD46 OmZ1bmN0aW9ufSBcCi0rICAgIC0KLSthZGQge3BvbGljeWQ8YmFzZSwgb3BlcmF0aW9uXzE8YmFz ZT4gPjo6ZnVuY3Rpb259IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25f MTxiYXNlPjo6ZnVuY3Rpb259IFwKLSsgICAge29wZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAot KyAgICAtCi0rYWRkIHtwb2xpY3lkNDo6ZnVuY3Rpb259IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBc Ci0rICAgIHtvcGVyYXRpb25fMTxiYXNlPjo6ZnVuY3Rpb259IFwKLSsgICAge29wZXJhdGlvbl8x PFQ+OjpmdW5jdGlvbn0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkPHRjbGFzczxpbnQ+LCBvcGVy YXRpb25fMTx0Y2xhc3M8aW50PiA+ID46OmZ1bmN0aW9ufSBcCi0rICAgIHt2b2lkICh2b2lkKX0g XAotKyAgICB7b3BlcmF0aW9uXzE8dGNsYXNzPGludD4gPjo6ZnVuY3Rpb259IFwKLSsgICAge29w ZXJhdGlvbl8xPFQ+OjpmdW5jdGlvbn0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkNTo6ZnVuY3Rp b259IFwKLSsgICAge3ZvaWQgKHZvaWQpfSBcCi0rICAgIHtvcGVyYXRpb25fMTx0Y2xhc3M8aW50 PiA+OjpmdW5jdGlvbn0gXAotKyAgICB7b3BlcmF0aW9uXzE8VD46OmZ1bmN0aW9ufSBcCi0rICAg IC0KLSsjIFRoZSBiZWxvdyB0ZXN0IGRlZmF1bHQgdGVtcGxhdGUgYXJndW1lbnRzCi0rYWRkIHtw b2xpY3lkPGludD46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8aW50LCBvcGVyYXRp b25fMTxpbnQ+ID4gKiBjb25zdCwgaW50KX0gXAotKyAgICAtIFwKLSsgICAge3BvbGljeWQ8VCwg UG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkPGxvbmc+Ojpwb2xpY3lk fSBcCi0rICAgIHt2b2lkIChwb2xpY3lkPGxvbmcsIG9wZXJhdGlvbl8xPGxvbmc+ID4gKiBjb25z dCwgbG9uZyl9IFwKLSsgICAgLSBcCi0rICAgIHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9 IFwKLSsgICAgLQotK2FkZCB7cG9saWN5ZDxjaGFyPjo6cG9saWN5ZH0gXAotKyAgICB7dm9pZCAo cG9saWN5ZDxjaGFyLCBvcGVyYXRpb25fMTxjaGFyPiA+ICogY29uc3QsIGNoYXIpfSBcCi0rICAg IC0gXAotKyAgICB7cG9saWN5ZDxULCBQb2xpY3k+Ojpwb2xpY3lkfSBcCi0rICAgIC0KLSthZGQg e3BvbGljeWQ8YmFzZT46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8YmFzZSwgb3Bl cmF0aW9uXzE8YmFzZT4gPiAqIGNvbnN0LCBiYXNlKX0gXAotKyAgICAtIFwKLSsgICAge3BvbGlj eWQ8VCwgUG9saWN5Pjo6cG9saWN5ZH0gXAotKyAgICAtCi0rYWRkIHtwb2xpY3lkPHRjbGFzczxp bnQ+ID46OnBvbGljeWR9IFwKLSsgICAge3ZvaWQgKHBvbGljeWQ8dGNsYXNzPGludD4gPiwgb3Bl cmF0aW9uXzE8dGNsYXNzPGludD4gPiA+ICogY29uc3QsIGludCl9IFwKLSsgICAgLSBcCi0rICAg IHtwb2xpY3lkPFQsIFBvbGljeT46OnBvbGljeWR9IFwKLSsgICAgLQotKwotKyMgU3RhcnQgdGhl IHRlc3QKLStpZiB7JHRyYWNlbGV2ZWx9IHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQor K2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAi c2Vjb25kOiB3aGF0aXMgdGVtcDEiCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMiIgInR5cGUgPSBj aGFyIFxcXFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMiIKKytnZGJfdGVzdCAi d2hhdGlzIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgInNlY29uZDogd2hhdGlzIHRl bXAzIgogKwotK2lmIHtbc2tpcF9jcGx1c190ZXN0c119IHsgY29udGludWUgfQorK2dkYl90ZXN0 ICJwdHlwZSB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRl bXAxIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJz ZWNvbmQ6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFy IFxcXFs0OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAzIgogKwotKyMKLSsjIHRlc3QgcnVubmlu ZyBwcm9ncmFtcwotKyMKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCisrZ2RiX3Rlc3Qg InAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1w MSIKKytnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNv bmQ6IHByaW50IHRlbXAyIgorK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4 IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDMiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvZ2RiOTU5My5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43ODNjOTYyCistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmNjCitAQCAtMCwwICsxLDE4MCBA QAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiAr Ci0rc2V0IHRlc3RmaWxlICJyZWFsY3BwIgotK3NldCBzcmNmaWxlICIke3Rlc3RmaWxlfS5jYyIK LStzZXQgYmluZmlsZSBbZmlsZSBqb2luICRvYmpkaXIgJHN1YmRpciAkdGVzdGZpbGVdCisrICAg Q29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0r aWYgIHtbZ2RiX2NvbXBpbGUgW2ZpbGUgam9pbiAkc3JjZGlyICRzdWJkaXIgJHNyY2ZpbGVdICRi aW5maWxlIFwKLSsJICBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50 ZXN0ZWQgIiR0ZXN0ZmlsZS5leHAiCi0rICAgIHJldHVybiAtMQotK30KKysgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgogKwotK2lmIHtbZ2V0X2NvbXBpbGVyX2luZm8gJGJpbmZpbGUgImMr KyJdfSB7Ci0rICAgIHJldHVybiAtMQotK30KKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKwot K2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgW2ZpbGUgam9pbiAk c3JjZGlyICRzdWJkaXJdCi0rZ2RiX2xvYWQgJGJpbmZpbGUKKysgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorKyAgICovCisrI2luY2x1ZGUgPGlvc3RyZWFtPgorKworK3VzaW5nIG5hbWVz cGFjZSBzdGQ7CisrCisrY2xhc3MgTmV4dE92ZXJUaHJvd0Rlcml2YXRlcworK3sKKysKKytwdWJs aWM6CisrCisrCisrICAvLyBTaW5nbGUgdGhyb3cgYW4gZXhjZXB0aW9uIGluIHRoaXMgZnVuY3Rp b24uCisrICB2b2lkIGZ1bmN0aW9uMSgpIAorKyAgeworKyAgICB0aHJvdyAyMDsKKysgIH0KKysK KysgIC8vIFRocm93IGFuIGV4Y2VwdGlvbiBpbiBhbm90aGVyIGZ1bmN0aW9uLgorKyAgdm9pZCBm dW5jdGlvbjIoKSAKKysgIHsKKysgICAgZnVuY3Rpb24xKCk7CisrICB9CisrCisrICAvLyBUaHJv dyBhbiBleGNlcHRpb24gaW4gYW5vdGhlciBmdW5jdGlvbiwgYnV0IGhhbmRsZSBpdAorKyAgLy8g bG9jYWxseS4KKysgIHZvaWQgZnVuY3Rpb24zICgpIAorKyAgeworKyAgICB7CisrICAgICAgdHJ5 CisrCXsKKysJICBmdW5jdGlvbjEgKCk7CisrCX0KKysgICAgICBjYXRjaCAoLi4uKSAKKysJewor KwkgIGNvdXQgPDwgIkNhdWdodCBhbmQgaGFuZGxlZCBmdW5jdGlvbjEgZXhjZXB0aW9uIiA8PCBl bmRsOworKwl9CisrICAgIH0KKysgIH0KKysKKysgIHZvaWQgcmV0aHJvdyAoKQorKyAgeworKyAg ICB0cnkKKysgICAgICB7CisrCWZ1bmN0aW9uMSAoKTsKKysgICAgICB9CisrICAgIGNhdGNoICgu Li4pCisrICAgICAgeworKwl0aHJvdzsKKysgICAgICB9CisrICB9CisrCisrICB2b2lkIGZpbmlz aCAoKQorKyAgeworKyAgICAvLyBXZSB1c2UgdGhpcyB0byB0ZXN0IHRoYXQgYSAiZmluaXNoIiBo ZXJlIGRvZXMgbm90IGVuZCB1cCBpbgorKyAgICAvLyB0aGlzIGZyYW1lLCBidXQgaW4gdGhlIG9u ZSBhYm92ZS4KKysgICAgdHJ5CisrICAgICAgeworKwlmdW5jdGlvbjEgKCk7CisrICAgICAgfQor KyAgICBjYXRjaCAoaW50IHgpCisrICAgICAgeworKyAgICAgIH0KKysgICAgZnVuY3Rpb24xICgp OwkJLy8gbWFya2VyIGZvciB1bnRpbAorKyAgfQorKworKyAgdm9pZCB1bnRpbCAoKQorKyAgewor KyAgICBmdW5jdGlvbjEgKCk7CisrICAgIGZ1bmN0aW9uMSAoKTsJCS8vIHVudGlsIGhlcmUKKysg IH0KICsKLSsjIFNldCB0aGUgbGlzdHNpemUgdG8gb25lLiBUaGlzIHdpbGwgaGVscCB3aXRoIHRl c3RpbmcgImxpc3QiLgotK2dkYl90ZXN0ICJzZXQgbGlzdHNpemUgMSIKKyt9OworK05leHRPdmVy VGhyb3dEZXJpdmF0ZXMgbmV4dF9jYXNlczsKICsKLSsjICJwcmludCBNRVRIT0QiCi0rZm9yZWFj aCBuYW1lIFtnZXRfZnVuY3Rpb25zIHByaW50XSB7Ci0rICAgIGdkYl90ZXN0ICJwcmludCAkbmFt ZSIgW2dldCAkbmFtZSBwcmludF0gInByaW50ICRuYW1lIgotK30KICsKLSsjICJsaXN0IE1FVEhP RCIKLStmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlvbnMgbGlzdF0gewotKyAgICBnZGJfdGVzdCAi bGlzdCAkbmFtZSIgW2dldCAkbmFtZSBsaXN0XSAibGlzdCAkbmFtZSIKLSt9CisraW50IG1haW4g KCkgCisreyAKKysgIHRyeQorKyAgICB7CisrICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjEgKCk7 CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAvLyBEaXNjYXJkCisrICAg IH0KICsKLSsjIFJ1bm5pbmcgdG8gYnJlYWtwb2ludCAtLSB1c2UgYW55IGZ1bmN0aW9uIHdlIGNh biAibGlzdCIKLStmb3JlYWNoIG5hbWUgW2dldF9mdW5jdGlvbnMgbGlzdF0gewotKyAgICAjIFNr aXAgIm1haW4iLCBzaW5jZSB0ZXN0X2JyZWFrcG9pbnQgdXNlcyBpdAotKyAgICBpZiB7W3N0cmlu ZyBjb21wYXJlICRuYW1lICJtYWluIl0gIT0gMH0gewotKwl0ZXN0X2JyZWFrcG9pbnQgJG5hbWUK KysgIHRyeQorKyAgICB7CisrICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7CisrICAgIH0K KysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAvLyBEaXNjYXJkCiArICAgIH0KLSt9CiAr Ci0rIyAiaW5mbyBmdW5jIE1FVEhPRCIKLStpZiB7ZmFsc2V9IHsKLStmb3JlYWNoIG5hbWUgW2dl dF9mdW5jdGlvbnMgImluZm9fZnVuYyJdIHsKLSsgICAgcmVnc3ViIC1hbGwge1wqfSAkbmFtZSB7 XCp9IG4KLSsgICAgcmVnc3ViIC1hbGwge1xefSAkbiB7XF59IG4KLSsgICAgcmVnc3ViIC1hbGwg e1xdfSAkbiB7XF19IG4KLSsgICAgcmVnc3ViIC1hbGwge1xbfSAkbiB7XFt9IG4KLSsgICAgZ2Ri X3Rlc3QgImluZm8gZnVuYyAkbiIgW2dldCAkbmFtZSBpbmZvX2Z1bmNdICJpbmZvIGZ1bmMgJG5h bWUiCi0rfQotK30KKysgIHRyeQorKyAgICB7CisrICAgICAgLy8gVGhpcyBpcyBkdXBsaWNhdGVk IHNvIHdlIGNhbiBuZXh0IG92ZXIgb25lIGJ1dCBzdGVwIGludG8KKysgICAgICAvLyBhbm90aGVy LgorKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24yICgpOworKyAgICB9CisrICBjYXRjaCAoLi4u KQorKyAgICB7CisrICAgICAgLy8gRGlzY2FyZAorKyAgICB9CiArCi0rIyBXaGF0IG9mIHRoZXNl IGlzIG5vdCBjb3ZlcmVkIGJ5IGFib3ZlPwotKyMgb3BlcmF0b3Itc3BlY2lmaWMgdGVzdHMgKCdw IGEgKyBiJywgJ3ByaW50IGNvdXQgPDwgImhlbGxvIicsIGV0YykKLSsjIG92ZXJsb2FkZWQgb3Bl cmF0b3JzICYgY3RvcnMKLSsjIG9wZXJhdG9yIG5hbWVzIHdpdGggc3BhY2VzIGluIHRoZW0gKG90 aGVyIHRoYW4gZGVsZXRlIGFuZCBuZXcpCi0rIyBwdHlwZSBvZiBjbGFzc2VzL3RlbXBsYXRlcwot KyMgYmFja3RyYWNlcwotKyMgcHJpbnRpbmcgZGF0YSBtZW1iZXJzCi0rIyBjYXRjaGluZywgdGhy b3dpbmcgZXhjZXB0aW9ucwotKyMgU1RMIChlc3AgY29udGFpbmVycyBhbmQgaXRlcmF0b3JzKQot KyMgaW5oZXJpdGFuY2UgdGVzdHMKLSsjIGNvbXBsZXRpb24gc2NvcGluZworKyAgbmV4dF9jYXNl cy5mdW5jdGlvbjMgKCk7CiArCi0rZ2RiX2V4aXQKLStyZXR1cm4gMAotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvdy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zaGFk b3cuZXhwCi1pbmRleCAxZTVlODBiLi40MGMzNWE0IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3Avc2hhZG93LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc2hhZG93LmV4 cAotQEAgLTg1LDUgKzg1LDQgQEAgZ2RiX3Rlc3QgInByaW50IHgiICI9IDU1IiAiUHJpbnQgbG9j YWwgeCBub3QgbmFtZXNwYWNlIHgiCi0gZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgIm1hcmtlcjUiXQotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJtYXJrZXI1IgotIAot LXNldHVwX2tmYWlsICJnZGIvNzkzNiIgIiotKi0qIgotIGdkYl90ZXN0ICJwcmludCB4IiAiPSAx MSIgIlByaW50IGltcG9ydGVkIG5hbWVzcGFjZSB4IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL3NoYWRvd2luZy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5j YwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjZkOWMyZjEKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYwotQEAgLTAsMCAr MSw0OCBAQAotK25hbWVzcGFjZSBBCi0rewotKyAgaW50IHggPSAxMTsKLSt9CisrICB0cnkKKysg ICAgeworKyAgICAgIG5leHRfY2FzZXMucmV0aHJvdyAoKTsKKysgICAgfQorKyAgY2F0Y2ggKC4u LikKKysgICAgeworKyAgICAgIC8vIERpc2NhcmQKKysgICAgfQogKwotK2ludCB4ID0gMjI7Ci0r aW50IHkgPSAwOworKyAgdHJ5CisrICAgIHsKKysgICAgICAvLyBBbm90aGVyIGR1cGxpY2F0ZSBz byB3ZSBjYW4gdGVzdCAiZmluaXNoIi4KKysgICAgICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMiAoKTsK KysgICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgIC8vIERpc2NhcmQKKysgICAg fQogKwotK2NsYXNzIEIKLSt7Ci0rcHVibGljOgotKyAgaW50IHg7CisrICAvLyBBbm90aGVyIHRl c3QgZm9yICJmaW5pc2giLgorKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLmZpbmlz aCAoKTsKKysgICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICB9CiArCi0rICBpbnQK LSsgIGZ1bmMoKQotKyAgewotKyAgICB4ID0gMzM7Ci0rICAgIHkrPXg7IC8vIG1hcmtlcjEKKysg IC8vIFRlc3Qgb2YgInVudGlsIi4KKysgIHRyeQorKyAgICB7CisrICAgICAgbmV4dF9jYXNlcy5m aW5pc2ggKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgfQogKwotKyAg ICAgIHsKLSsgICAgICAgIGludCB4ID0gNDQ7Ci0rICAgICAgICB5Kz14OyAvLyBtYXJrZXIyCi0r Ci0rICAgICAgICAgIHsKLSsgICAgICAgICAgICBpbnQgeCA9IDU1OwotKyAgICAgICAgICAgIHkr PXg7IC8vIG1hcmtlcjMKLSsKLSsgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgaW50 IHogPSB4OyAvL3ByZXZlbnQgZ2NjIGZyb20gb3B0aW1pemluZyBhd2F5IHRoaXMgc2NvcGUKLSsg ICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEE7Ci0rICAgICAgICAgICAgICAgIHkrPXg7 IC8vIG1hcmtlcjQKLSsKLSsgICAgICAgICAgICAgICAgdXNpbmcgQTo6eDsKLSsgICAgICAgICAg ICAgICAgeSs9eDsgLy8gbWFya2VyNQotKyAgICAgICAgICAgICAgICAKLSsgICAgICAgICAgICAg ICAgcmV0dXJuIHRoaXMtPng7Ci0rICAgICAgICAgICAgICB9Ci0rICAgICAgICAgIH0KLSsgICAg ICB9Ci0rICB9Ci0rfTsKKysgIC8vIFRlc3Qgb2YgInVudGlsIiB3aXRoIGFuIGFyZ3VtZW50Lgor KyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLnVudGlsICgpOworKyAgICB9CisrICBj YXRjaCAoLi4uKQorKyAgICB7CisrICAgIH0KICsKLStpbnQKLSttYWluKCkKLSt7Ci0rICBCIHRo ZUI7Ci0rICByZXR1cm4gdGhlQi5mdW5jKCk7CisrICAvLyBUZXN0IG9mICJhZHZhbmNlIi4KKysg IHRyeQorKyAgICB7CisrICAgICAgbmV4dF9jYXNlcy51bnRpbCAoKTsKKysgICAgfQorKyAgY2F0 Y2ggKC4uLikKKysgICAgeworKyAgICB9CiArfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL3NoYWRvd2luZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9zaGFkb3dpbmcuZXhw CisrCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjY5MjJlZWQKK2luZGV4IDAwMDAwMDAuLjNkYWQ3Y2EKIC0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5leHAKLUBAIC0wLDAgKzEsOTEg QEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAKK0BAIC0wLDAgKzEsMTgyIEBACisr IyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsK ICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjQ3ODcsMjYgKzgxMDMsMzYgQEAg aW5kZXggMDAwMDAwMC4uNjkyMmVlZAogKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwor KwogK2lmICR0cmFjZWxldmVsIHRoZW4gewogKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKICt9CiAr Ci0rc2V0IHBybXNfaWQgMAotK3NldCBidWdfaWQgMAorK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNd IH0geyBjb250aW51ZSB9CiArCi0rc2V0IHRlc3RmaWxlIHNoYWRvd2luZworK3NldCB0ZXN0Zmls ZSAiZ2RiOTU5MyIKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotK3NldCBiaW5maWxlICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVn IGMrK31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHBy b2dyYW0iCisrc2V0IGJpbmZpbGUgJG9iamRpci8kc3ViZGlyLyR0ZXN0ZmlsZQorKworKyMgQ3Jl YXRlIGFuZCBzb3VyY2UgdGhlIGZpbGUgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgY29tcGlsZXIKKysjIHVzZWQgdG8gY29tcGlsZSB0aGUgdGVzdCBjYXNlLgorK2lmIFtnZXRf Y29tcGlsZXJfaW5mbyAke2JpbmZpbGV9ICJjKysiXSB7CisrICAgIHVudGVzdGVkIGdkYjk1OTMu ZXhwCiArICAgIHJldHVybiAtMQogK30KICsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5m aWxlfV0gewotKyAgICByZXR1cm4gLTE7CisraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31d ICE9ICIiIH0geworKyAgICB1bnRlc3RlZCBnZGI5NTkzLmV4cAorKyAgICByZXR1cm4gLTEKICt9 CiArCi0rIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrIyBTb21lIHRhcmdldHMgY2FuJ3QgZG8gZnVu Y3Rpb24gY2FsbHMsIHNvIGRvbid0IGV2ZW4gYm90aGVyIHdpdGggdGhpcworKyMgdGVzdC4KKytp ZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYixjYW5ub3RfY2FsbF9mdW5jdGlvbnNdIHsKKysgICAg c2V0dXBfeGZhaWwgIiotKi0qIiA5NTkzCisrICAgIGZhaWwgIlRoaXMgdGFyZ2V0IGNhbiBub3Qg Y2FsbCBmdW5jdGlvbnMiCisrICAgIGNvbnRpbnVlCisrfQogKwogK2dkYl9leGl0CiArZ2RiX3N0 YXJ0CkBAIC0yNDgxNCwzMDMgKzgxNDAsMTQyIEBAIGluZGV4IDAwMDAwMDAuLjY5MjJlZWQKICtn ZGJfbG9hZCAke2JpbmZpbGV9CiArCiAraWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVy cm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYWluIgorKyAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBtYWluIgogKyAgICBjb250aW51ZQotK30KLSsKLSsjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGluZyBvZiBjbGFzcyB2 YXJpYWJsZSBpcyBub3Qgc2hhZG93ZWQKLSsjIGJ5IGdsb2JhbCB2YXJpYWJsZQotKwotK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIxIl0KLStnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAibWFya2VyMSIKLSsKLStnZGJfdGVzdCAicHJpbnQgeCIgIj0gMzMiICJQ cmludCBjbGFzcyB4IHNoYWRvd2luZyBnbG9iYWwgeCIKLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGluZyBsb2NhbCB2YXJp YWJsZSBpcyBub3Qgc2hhZG93ZWQKLSsjIGJ5IGNsYXNzIHZhcmlhYmxlCi0rCi0rZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1hcmtlcjIiXQotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJtYXJrZXIyIgotKwotK2dkYl90ZXN0ICJwcmludCB4IiAiPSA0NCIgIlByaW50 IGxvY2FsIHggc2hhZG93aW5nIGNsYXNzIHgiCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgaW5uZXIgc2NvcGUgeCBpcyBwcmludGVkIG5v dCBvdXRlciBzY29wZQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJt YXJrZXIzIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyMyIKLSsKLStnZGJf dGVzdCAicHJpbnQgeCIgIj0gNTUiICJQcmludCBpbm5lciBzY29wZSB4IgotKwotKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0IHByaW50aW5nIGxv Y2FsIHZhcmlhYmxlIGlzIG5vdCBzaGFkb3dlZAotKyMgYnkgbmFtZXNwYWNlIHZhcmlhYmxlCi0r Ci0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1hcmtlcjQiXQotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJtYXJrZXI0IgotKwotK2dkYl90ZXN0ICJwcmludCB4IiAi PSA1NSIgIlByaW50IGxvY2FsIHggbm90IG5hbWVzcGFjZSB4IgotKwotKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0IGltcG9ydGVkIG5hbWVzcGFj ZSBlbGVtZW50IGlzIHByaW50ZWQKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAibWFya2VyNSJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjUiCi0r Ci0raWYgW3Rlc3RfY29tcGlsZXJfaW5mbyBnY2MtNC0zLSpdIHRoZW4geyBzZXR1cF94ZmFpbCAq LSotKiB9CisrfSAKICsKLStnZGJfdGVzdCAicHJpbnQgeCIgIj0gMTEiICJQcmludCBpbXBvcnRl ZCBuYW1lc3BhY2UgeCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC91c2VyZGVm LmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdXNlcmRlZi5jYwotaW5kZXggMzM4YzU4YS4uNTZh NzM1ZiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuY2MKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuY2MKLUBAIC0zMTEsNiArMzExLDExIEBAIHB1 YmxpYzoKLSAgIGludCB6OwotIH07Ci0gCi0rYm9vbCBvcGVyYXRvcj09IChjb25zdCBNZW1iZXIg Jm0xLCBjb25zdCBNZW1iZXIgJm0yKQotK3sKLSsgIHJldHVybiBtMS56ID09IG0yLno7CisrIyBT ZWUgd2hldGhlciB3ZSBoYXZlIHRoZSBuZWVkZWQgdW53aW5kZXIgaG9va3MuCisrc2V0IG9rIDEK KytnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgX1Vud2luZF9EZWJ1Z0hvb2siICJjaGVjayBmb3Ig dW53aW5kZXIgaG9vayIgeworKyAgICAtcmUgIj0gLipfVW53aW5kX0RlYnVnSG9vay4qXHJcbiRn ZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2siCisrICAgIH0K KysgICAgLXJlICJObyBzeW1ib2wgLiogaW4gY3VycmVudCBjb250ZXh0LlxyXG4kZ2RiX3Byb21w dCAkIiB7CisrCSMgUGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMgZmFpbHMgaW4g dGhlIHJlc3VsdHMuCisrCXBhc3MgImNoZWNrIGZvciB1bndpbmRlciBob29rIgorKwlzZXQgb2sg MAorKyAgICB9CisrfQorK2lmIHshJG9rfSB7CisrICAgIHVudGVzdGVkIGdkYjk1OTMuZXhwCisr ICAgIHJldHVybiAtMQogK30KICsKLSBjbGFzcyBDb250YWluZXIKLSB7Ci0gcHVibGljOgotQEAg LTMzMCw4ICszMzUsMTIgQEAgaW50IG1haW4gKHZvaWQpCi0gIEExIHR3byg0LDUpOwotICBBMSB0 aHJlZSgwLDApOwotICBDb250YWluZXIgYzsKLSsgTWVtYmVyIG1lbTEsIG1lbTI7Ci0gIGludCB2 YWw7Ci0gIAotKyBtZW0xLnogPSA1OwotKyBtZW0yLnogPSA3OwotKwotICBtYXJrZXIxKCk7IC8v IG1hcmtlcjEtcmV0dXJucy1oZXJlCi0gIGNvdXQgPDwgb25lOyAvLyBtYXJrZXIxLXJldHVybnMt aGVyZQotICBjb3V0IDw8IHR3bzsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC91 c2VyZGVmLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhwCi1pbmRleCAyYmJm OTVlLi4yNWNhZGU3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdXNlcmRlZi5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhwCi1AQCAtMTEzLDYgKzEx Myw3IEBAIGdkYl90ZXN0ICJwcmludCBvbmUgPiB0d28iICJcXFwkXFswLTlcXSogPSAwXFtcclxu XF0iCi0gZ2RiX3Rlc3QgInByaW50IG9uZSA+PSB0d28iICJcXFwkXFswLTlcXSogPSAwXFtcclxu XF0iCi0gCi0gZ2RiX3Rlc3QgInByaW50IG9uZSA9PSB0d28iICJcXFwkXFswLTlcXSogPSAwXFtc clxuXF0iCi0rZ2RiX3Rlc3QgInByaW50IG9uZS5vcGVyYXRvcj09ICh0d28pIiAiXFxcJFxbMC05 XF0qID0gMFxbXHJcblxdIgotIAotIGdkYl90ZXN0ICJwcmludCBvbmUgIT0gdHdvIiAiXFxcJFxb MC05XF0qID0gMVxbXHJcblxdIgotIAotQEAgLTE1NSw1ICsxNTYsOCBAQCBnZGJfdGVzdCAicHJp bnQgKmMiICJcXFwkXFswLTlcXSogPSBcXChNZW1iZXIgJlxcKSBAJGhleDoge3ogPSAuKn0iCi0g Z2RiX3Rlc3QgInByaW50ICYqYyIgIlxcXCRcWzAtOVxdKiA9IFxcKE1lbWJlciBcXCpcXCkgJGhl eCIKLSBnZGJfdGVzdCAicHR5cGUgJipjIiAidHlwZSA9IChzdHJ1Y3R8Y2xhc3MpIE1lbWJlciB7 KFxbXHJcbiBcXStwdWJsaWM6KT9cW1xyXG4gXF0raW50IHo7XFtcclxuXF0rfSAmXFwqIgotIAot K2dkYl90ZXN0ICJwcmludCBvcGVyYXRvcj09IChtZW0xLCBtZW0yKSIgIiA9IGZhbHNlIgotK2dk Yl90ZXN0ICJwcmludCBvcGVyYXRvcj09IChtZW0xLCBtZW0xKSIgIiA9IHRydWUiCi0rCi0gZ2Ri X2V4aXQKLSByZXR1cm4gMAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItYXJhbmdlcy5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kNWI5Y2E1Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWFyYW5nZXMuUwotQEAgLTAsMCAr MSwxNDAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA0LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKyMgU2VlIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxs YS9zaG93X2J1Zy5jZ2k/aWQ9OTU5MwogKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgICAibmV4 dCBvdmVyIGEgdGhyb3cgMSIKICsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorK2dkYl90ZXN0 ICJuZXh0IiBcCisrICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCisrICAibmV4dCBwYXN0 IGNhdGNoIDEiCiArCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrZ2RiX3Rl c3QgIm5leHQiIFwKKysgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgICAibmV4dCBvdmVyIGEg dGhyb3cgMiIKICsKLSsvKiBUZXN0IC5kZWJ1Z19hcmFuZ2VzIGNvbnRhaW5pbmcgemVybyBhZGRy ZXNzX3NpemUuICAqLworK2dkYl90ZXN0ICJuZXh0IiBcCisrICAiLipuZXh0X2Nhc2VzLmZ1bmN0 aW9uMi4qIiBcCisrICAibmV4dCBwYXN0IGNhdGNoIDIiCiArCi0rLyogRHVtbXkgZnVuY3Rpb24g dG8gcHJvdmlkZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IuICAqLworK2dkYl90ZXN0ICJzdGVwIiBc CisrICAiLipmdW5jdGlvbjEoKS4qIiBcCisrICAic3RlcCBpbnRvIGZ1bmN0aW9uMiAxIgogKwot KwkudGV4dAotKy5MYmVnaW5fdGV4dDE6Ci0rCS5nbG9ibCBtYWluCi0rCS50eXBlIG1haW4sICVm dW5jdGlvbgotK21haW46Ci0rLkxiZWdpbl9tYWluOgotKwkuaW50IDAKLSsuTGVuZF9tYWluOgot Kwkuc2l6ZSBtYWluLCAuLW1haW4KLSsuTGVuZF90ZXh0MToKKytnZGJfdGVzdCAibmV4dCIgXAor KyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAgICJuZXh0IG92ZXIgYSB0aHJvdyAzIgogKwot Ky8qIERlYnVnIGluZm9ybWF0aW9uICovCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRf Y2FzZXMuZnVuY3Rpb24zLioiIFwKKysgICJuZXh0IHBhc3QgY2F0Y2ggMyIKICsKLSsJLnNlY3Rp b24gLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40Ynl0 ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQg Ki8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwotKwku NGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8K LSsJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KKytnZGJfdGVzdCAibmV4dCIgXAorKyAg Ii4qbmV4dF9jYXNlcy5yZXRocm93LioiIFwKKysgICAgIm5leHQgb3ZlciBhIHRocm93IDQiCiAr Ci0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjogRFdfVEFHX2NvbXBp bGVfdW5pdCAqLwotKwkuNGJ5dGUJLkxlbmRfdGV4dDEJCQkvKiBEV19BVF9oaWdoX3BjICovCi0r CS40Ynl0ZQkuTGJlZ2luX3RleHQxCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS5hc2NpaQkiZmls ZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJ LyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMQkJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykg Ki8KKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgIm5leHQg b3ZlciBhIHJldGhyb3ciCiArCi0rCS8qIG1haW4gKi8KLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJl djogRFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9leHRlcm5hbCAq LwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2RlY2xfZmlsZSAqLwotKwkuYnl0ZQkJMgkJCS8qIERX X0FUX2RlY2xfbGluZSAqLwotKwkuYXNjaWkJCSJtYWluXDAiCQkvKiBEV19BVF9uYW1lICovCi0r CS40Ynl0ZQkJLkx0eXBlX2ludC0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCS40Ynl0 ZQkJLkxiZWdpbl9tYWluCS8qIERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJCS5MZW5kX21haW4J CS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9mcmFtZV9iYXNlOiBs ZW5ndGggKi8KLSsJLmJ5dGUJCTB4NTUJCQkvKiBEV19BVF9mcmFtZV9iYXNlOiBEV19PUF9yZWc1 ICovCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwK KysgICJuZXh0IGFmdGVyIGEgcmV0aHJvdyIKICsKLSsuTHR5cGVfaW50OgotKwkudWxlYjEyOAkz CQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5hc2NpaQkJImludFwwIgkJCS8q IERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTQJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5 dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAqLworK2dkYl90ZXN0ICJzdGVwIiBcCisrICAiLipm dW5jdGlvbjEoKS4qIiBcCisrICAic3RlcCBpbnRvIGZ1bmN0aW9uMiAyIgogKwotKwkuYnl0ZQkJ MAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLworK2dkYl90ZXN0ICJmaW5pc2giIFwKKysg ICIuKmNhdGNoICguLi4pLioiIFwKKysgICJmaW5pc2ggMSIKICsKLSsuTGN1MV9lbmQ6CisrZ2Ri X3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioiIFwKKysgICJuZXh0 IHBhc3QgY2F0Y2ggNCIKICsKLSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVn X2FiYnJldgotKy5MYWJicmV2MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2Rl ICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRl CQkxCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdo X3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOAkw eDExCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRk ciAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJ CS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNl ciAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkw eDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9k YXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLworK2dkYl90ZXN0ICJzdGVwIiBcCisrICAiLipmdW5jdGlvbjEgKCku KiIgXAorKyAgInN0ZXAgaW50byBmaW5pc2ggbWV0aG9kIgogKwotKwkudWxlYjEyOAkyCQkJLyog QWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyZQkJCS8qIERXX1RBR19zdWJwcm9ncmFtICov Ci0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4M2YJCQkvKiBE V19BVF9leHRlcm5hbCAqLwotKwkudWxlYjEyOAkweGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJ LnVsZWIxMjgJMHgzYQkJCS8qIERXX0FUX2RlY2xfZmlsZSAqLwotKwkudWxlYjEyOAkweGIJCQkv KiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4M2IJCQkvKiBEV19BVF9kZWNsX2xpbmUg Ki8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov Ci0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkv KiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwot KwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8q IERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0r CS51bGViMTI4CTB4NDAJCQkvKiBEV19BVF9mcmFtZV9iYXNlICovCi0rCS51bGViMTI4CTB4YQkJ CS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0r CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrZ2RiX3Rlc3QgImZpbmlzaCIgXAorKyAg Ii4qY2F0Y2ggKC4uLikuKiIgXAorKyAgImZpbmlzaCAyIgogKwotKwkudWxlYjEyOAkzCQkJLyog QWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8K LSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdf QVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxl YjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdf Rk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsJ LnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworK2dkYl90ZXN0ICJu ZXh0IiBcCisrICAiLipuZXh0X2Nhc2VzLmZpbmlzaCAoKS4qIiBcCisrICAibmV4dCBwYXN0IGNh dGNoIDUiCiArCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCisrZ2RiX3Rlc3QgInN0ZXAiIFwKKysgICIuKmZ1bmN0aW9uMSAo KS4qIiBcCisrICAic3RlcCBpbnRvIGZpbmlzaCwgZm9yIHVudGlsIgogKwotKy8qIGFyYW5nZXMg dGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2FyYW5nZXMKLSsJLmxvbmcJLkxhcmFuZ2VzX2Vu ZCAtIDFmCi0rMToKLSsJLjJieXRlCTIJCQkJLyogYXJhbmdlcyBWZXJzaW9uICovCi0rCS40Ynl0 ZQkuTGN1MV9iZWdpbiAtIC5kZWJ1Z19pbmZvCS8qIE9mZnNldCBpbnRvIC5kZWJ1Z19pbmZvIHNl Y3Rpb24gKi8KLSsJLyogVGhlIEdEQiBjcmFzaGVyIGlzIHRoaXMgemVybyB2YWx1ZS4gICovCi0r CS5ieXRlCQkwCQkJLyogYXJhbmdlcyBhZGRyZXNzX3NpemUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBh cmFuZ2VzIHNlZ21lbnRfc2l6ZSAqLwotKwotKy5MYXJhbmdlc19lbmQ6Ci1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItYXJhbmdlcy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi4zOTYzMmQ1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvZHcyLWFyYW5nZXMuZXhwCi1AQCAtMCwwICsxLDQwIEBACi0rIyBDb3B5cmlnaHQgMjAw NCwgMjAwNSwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KytnZGJfdGVzdCAidW50aWwiIFwKKysgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCisrICAidW50aWwg d2l0aCBubyBhcmd1bWVudCAxIgogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKytz ZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyIGZvciB1bnRpbCIgJHRlc3RmaWxl LmNjXQogKwotKyMgVGVzdCAuZGVidWdfYXJhbmdlcyBjb250YWluaW5nIHplcm8gYWRkcmVzc19z aXplLgorK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAorKyAgIi4qZnVuY3Rpb24xICgpLioiIFwK KysgICJuZXh0IHBhc3QgY2F0Y2ggNiIKICsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4g b24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93 IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSot bGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0 ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtp c3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpd fSB7Ci0rICAgIHJldHVybiAwICAKLSt9CisrZ2RiX3Rlc3QgInVudGlsIiBcCisrICAiLipjYXRj aCAoLi4uKS4qIiBcCisrICAidW50aWwgd2l0aCBubyBhcmd1bWVudCAyIgogKwotK3NldCB0ZXN0 ZmlsZSAiZHcyLWFyYW5nZXMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUwotK3NldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytzZXQgbGluZSBbZ2RiX2dldF9s aW5lX251bWJlciAidW50aWwgaGVyZSIgJHRlc3RmaWxlLmNjXQogKwotK2lmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSB7bm9kZWJ1Z31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9CisrZ2RiX3Rlc3Qg Im5leHQiIFwKKysgICIuKm5leHRfY2FzZXMudW50aWwgKCkuKiIgXAorKyAgIm5leHQgcGFzdCBj YXRjaCA2IgogKwotK2NsZWFuX3Jlc3RhcnQgJHRlc3RmaWxlCisrZ2RiX3Rlc3QgInN0ZXAiIFwK KysgICIuKmZ1bmN0aW9uMSAoKS4qIiBcCisrICAic3RlcCBpbnRvIHVudGlsIgorKworK2dkYl90 ZXN0ICJ1bnRpbCAkbGluZSIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgInVudGlsLW92 ZXItdGhyb3ciCisrCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMudW50aWwg KCkuKiIgXAorKyAgIm5leHQgcGFzdCBjYXRjaCA3IgorKworK2dkYl90ZXN0ICJzdGVwIiBcCisr ICAiLipmdW5jdGlvbjEgKCkuKiIgXAorKyAgInN0ZXAgaW50byB1bnRpbCwgZm9yIGFkdmFuY2Ui CiArCi0rIyBGYWlsZWQgZ2RiX2xvYWQgd291bGQgYWJvcnQgdGhlIHRlc3RjYXNlIGV4ZWN1dGlv biBlYXJsaWVyLgotK3Bhc3MgImZpbGUgbG9hZGVkIgorK2dkYl90ZXN0ICJhZHZhbmNlICRsaW5l IiBcCisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAiYWR2YW5jZS1vdmVyLXRocm93IgogZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKIG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45MzUzNjk4CitpbmRleCAwMDAwMDAwLi43ZmIwMGVh CiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5k LWxvY2xpc3QuUwotQEAgLTAsMCArMSwxNzYgQEAKK0BAIC0wLDAgKzEsMjEyIEBACiArLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKICsgICBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTI1MTY0LDYgKzgz MjksMTcgQEAgaW5kZXggMDAwMDAwMC4uOTM1MzY5OAogKwkuNGJ5dGUJCS5MbGVuX3Zhci0uTGN1 MV9iZWdpbgkvKiBEV19BVF91cHBlcl9ib3VuZCAqLwogKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBj aGlsZHJlbiBvZiBkaWUgKi8KICsKKysJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNp bmcgYW4gb3B0aW1pemVkLW91dCB2YXJpYWJsZS4gICovCisrLkxhcnJheWJfdHlwZToKKysJLnVs ZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2FycmF5X3R5cGUgKi8KKysJLjRieXRlCQkuTGNo YXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCisrCS51bGViMTI4CTMJCQkv KiBBYmJyZXY6IERXX1RBR19zdWJyYW5nZV90eXBlICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUt LkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2Vy X2JvdW5kICovCisrCS40Ynl0ZQkJLkxsZW5iX3Zhci0uTGN1MV9iZWdpbgkvKiBEV19BVF91cHBl cl9ib3VuZCAqLworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBkaWUgKi8KKysK ICsuTHVpbnRfdHlwZToKICsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlw ZSAqLwogKwkuNGJ5dGUJCS5MdWludF9zdHIJCS8qIERXX0FUX25hbWUgKi8KQEAgLTI1MTgyLDkg KzgzNTgsMjQgQEAgaW5kZXggMDAwMDAwMC4uOTM1MzY5OAogKwkuNGJ5dGUJCS5MdWludF90eXBl LS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KICsJLjRieXRlCQkuTGxlbl9sb2NsaXN0LS5M bG9jbGlzdAkvKiBEV19BVF9sb2NhdGlvbiAqLwogKworKwkvKiBvcHRpbWl6ZWQtb3V0IHZhcmlh YmxlIGZvciBiX3N0cmluZy4gICovCisrLkxsZW5iX3ZhcjoKKysJLnVsZWIxMjgJNwkJCS8qIEFi YnJldjogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgbm8gRFdfQVRfbG9jYXRpb24gKi8KKysJ LmJ5dGUJCTEJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUt LkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwogKwkudWxlYjEyOAk2CQkJLyogQWJicmV2 OiBEV19UQUdfdmFyaWFibGUgRFdfRk9STV9zdHJpbmcgKi8KICsJLnN0cmluZwkJImFfc3RyaW5n IgkJLyogRFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJCS5MYXJyYXlfdHlwZS0uTGN1MV9iZWdpbi8q IERXX0FUX3R5cGUgKi8KKysJLjRieXRlCQkuTGFycmF5X3R5cGUtLkxjdTFfYmVnaW4gLyogRFdf QVRfdHlwZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrMToJ LmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXJkYXRhCQkJLyogICA8 YWRkcj4gKi8KKysyOgorKworKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyBh biBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8KKysJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjog RFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5nICovCisrCS5zdHJpbmcJCSJiX3N0cmluZyIJ CS8qIERXX0FUX25hbWUgKi8KKysJLjRieXRlCQkuTGFycmF5Yl90eXBlLS5MY3UxX2JlZ2luIC8q IERXX0FUX3R5cGUgKi8KICsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwog KzE6CS5ieXRlCQkzCQkJLyogICBEV19PUF9hZGRyICovCiArCS40Ynl0ZQkJdmFyZGF0YQkJCS8q ICAgPGFkZHI+ICovCkBAIC0yNTI3Nyw2ICs4NDY4LDE2IEBAIGluZGV4IDAwMDAwMDAuLjkzNTM2 OTgKICsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KICsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KICsKKysJLnVsZWIxMjgJNwkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGVi MTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vX2No aWxkcmVuICovCisrCS51bGViMTI4CTB4MzQJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCisrCS51 bGViMTI4CTB4MGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERX X0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwogKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwogKy8qIFN0cmluZyB0YWJs ZSAqLwpAQCAtMjUyODksMTAgKzg0OTAsMTAgQEAgaW5kZXggMDAwMDAwMC4uOTM1MzY5OAogKwku c3RyaW5nCQkidW5zaWduZWQgaW50IgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LWJvdW5kLWxvY2xpc3QuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u MjhkYjAwNQoraW5kZXggMDAwMDAwMC4uNWRiZWQzZgogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAotQEAgLTAsMCArMSw0 OCBAQAorQEAgLTAsMCArMSw1MSBAQAogKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjUzNDEsMTY5ICs4NTQyLDkg QEAgaW5kZXggMDAwMDAwMC4uMjhkYjAwNQogKwogK2dkYl90ZXN0ICJwIGFfc3RyaW5nIiB7ID0g InNlZW4ifQogK2dkYl90ZXN0ICJwdHlwZSBhX3N0cmluZyIge3R5cGUgPSBjaGFyIFxbNFxdfQot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNl LlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVtcHR5LW5hbWVzcGFjZS5TCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2IwM2ZmMQotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1lc3BhY2UuUwotQEAg LTAsMCArMSwxMDggQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsK LSsvKiBUZXN0IEcrKyA0LjEgcHJvZHVjaW5nIERXX1RBR19uYW1lc3BhY2Ugd2l0aCBEV19BVF9u YW1lICI6OiIuICAqLwotKwotKwkuZGF0YQotK3ZhcjoJLjRieXRlCTEKLSsKLSsJLnNlY3Rpb24g LmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40Ynl0ZQku TGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8K LSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwotKwkuNGJ5 dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KLSsJ LmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51bGVi MTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5hc2NpaQkiZmls ZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJ LyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJNAkJCQkvKiBEV19MQU5HX0NfcGx1c19wbHVz IChDKyspICovCi0rCi0rLkx0eXBlX2ludDoKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdf VEFHX2Jhc2VfdHlwZSAqLwotKwkuYXNjaWkJCSJpbnRcMCIJCQkvKiBEV19BVF9uYW1lICovCi0r CS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCQk1CQkJLyogRFdfQVRf ZW5jb2RpbmcgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX25hbWVzcGFj ZSAqLwotKwkuYXNjaWkJCSI6OlwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsKLSsJLnVsZWIxMjgJ NwkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIChsb2NhdGlvbikgKi8KLSsJLmFzY2lpCQki dmFyXDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xv Y2F0aW9uICovCi0rMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KLSsJLjRieXRlCQl2 YXIJCQkvKiAgIDxhZGRyPiAqLwotKzI6CS40Ynl0ZQkJLkx0eXBlX2ludC0uTGN1MV9iZWdpbgkv KiBEV19BVF90eXBlICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIERX X1RBR19uYW1lc3BhY2UgKi8KLSsKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2Yg Q1UgKi8KLSsKLSsuTGN1MV9lbmQ6Ci0rCi0rLyogQWJicmV2IHRhYmxlICovCi0rCS5zZWN0aW9u IC5kZWJ1Z19hYmJyZXYKLSsuTGFiYnJldjFfYmVnaW46Ci0rCS51bGViMTI4CTEJCQkvKiBBYmJy ZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLwot KwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19B VF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGVi MTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19G T1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJ LnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEy OAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNl X3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgz CQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAq LwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjgJMHhi CQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2Rp bmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwot KwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgzOQkJCS8qIERX X1RBR19uYW1lc3BhY2UgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVs ZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JN X3N0cmluZyAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAk3CQkJLyogQWJicmV2IGNvZGUgKGxv Y2F0aW9uKSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCi0rCS5i eXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25h bWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJ MHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjgJMHhhCQkJLyogRFdfRk9STV9i bG9jazEgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjgJ MHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNlLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNlLmV4cAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjFhOGRhMTYKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1wdHktbmFtZXNwYWNlLmV4cAotQEAgLTAs MCArMSw0MyBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBHKysgNC4x IHByb2R1Y2luZyBEV19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRfbmFtZSAiOjoiLgotKwotKyMg VGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYt MiBhbmQgdXNlIGdhcy4KLSsjIEZvciBub3cgcGljayBhIHNhbXBsaW5nIG9mIGxpa2VseSB0YXJn ZXRzLgotK2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCi0rICAgICYmICFbaXN0YXJnZXQgKi0q LWdudSpdCi0rICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipdCi0rICAgICYmICFbaXN0YXJnZXQg Ki0qLW9wZW5ic2QqXQotKyAgICAmJiAhW2lzdGFyZ2V0IGFybS0qLWVhYmkqXQotKyAgICAmJiAh W2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19IHsKLSsgICAgcmV0dXJuIDAgIAotK30KLSsKLStz ZXQgdGVzdGZpbGUgImR3Mi1lbXB0eS1uYW1lc3BhY2UiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uUwotK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9LngKLSsKLStpZiAgeyBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7b2JqZGlyfS8ke3N1YmRpcn0v JHtleGVjdXRhYmxlfSIgb2JqZWN0IHtub2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHJldHVybiAt MQotK30KLSsKLStjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCi0rCi0rIyBgcCB2YXInIGJlbG93 IGNhbiB3b3JrIHdpdGhvdXQgaWRlbnRpZmllZCBEV0FSRiBESUUganVzdCBiYXNlZCBvbiBpdHMg RUxGIHN5bWJvbC4KLSsjIENhdGNoIGl0IGhlcmUgYXMgYHR5cGUgPSA8ZGF0YSB2YXJpYWJsZSwg bm8gZGVidWcgaW5mbz4nLgotK2dkYl90ZXN0ICJwdHlwZSB2YXIiICJ0eXBlID0gaW50IgogKwot K2dkYl90ZXN0ICJwIHZhciIgIiA9IDEiCisrZ2RiX3Rlc3QgInAgYl9zdHJpbmciIHsgPSAoMHhb MC05YS1mXSsgKT8ic2Vlbm5vdHNlZW4ifQorK2dkYl90ZXN0ICJwdHlwZSBiX3N0cmluZyIge3R5 cGUgPSBjaGFyIFxbXF19CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uMWYwMmQ5MApAQCAtMjYxMTgsMjMy ICs5MTU5LDYgQEAgaW5kZXggMDAwMDAwMC4uMGY0MzU2NAogKyAgaWYgKHggKDEsIDEpIC5uZS4g OCAub3IuIHggKDIsIDIpIC5uZS4gOSAub3IuIHggKDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAog KyAgaWYgKHggKDMsIDEpIC5uZS4gMTApIGNhbGwgYWJvcnQKICtlbmQKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLWxpYi5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLWxpYi5mOTAKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42MzY5ZDM0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLWxpYi5mOTAKLUBAIC0wLDAgKzEs MjggQEAKLSshIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KyEgCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEgCi0rISBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyEgCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rbW9kdWxlIGxpYgotKyAg ICAgICAgaW50ZWdlciA6OiB2YXJfaSA9IDEKLStjb250YWlucwotKyAgICAgICAgc3Vicm91dGlu ZSBsaWJfZnVuYwotKyAgICAgICAgaWYgKHZhcl9pIC5uZS4gMSkgY2FsbCBhYm9ydAotKyAgICAg ICAgdmFyX2kgPSAyCi0rICAgICAgICBlbmQgc3Vicm91dGluZSBsaWJfZnVuYwotK2VuZCBtb2R1 bGUgbGliCi0rCi0rbW9kdWxlIGxpYm1hbnkKLSsgICAgICAgIGludGVnZXIgOjogdmFyX2ogPSAz Ci0rICAgICAgICBpbnRlZ2VyIDo6IHZhcl9rID0gNAotK2VuZCBtb2R1bGUgbGlibWFueQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUtbWFpbi5m OTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLW1haW4uZjkwCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGU2M2E2NQotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS1tYWluLmY5 MAotQEAgLTAsMCArMSwyMyBAQAotKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rISAKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rISAKLSshIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rISAKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsg ICAgICAgIHVzZSBsaWIKLSsJdXNlIGxpYm1hbnksIG9ubHk6IHZhcl9qCi0rICAgICAgICBpZiAo dmFyX2kgLm5lLiAxKSBjYWxsIGFib3J0Ci0rCWNhbGwgbGliX2Z1bmMKLSsgICAgICAgIGlmICh2 YXJfaSAubmUuIDIpIGNhbGwgYWJvcnQKLSsgICAgICAgIGlmICh2YXJfaiAubmUuIDMpIGNhbGwg YWJvcnQKLSsgICAgICAgIHZhcl9pID0gdmFyX2kgICAgICAgICAgICAgICAgICEgaS1pcy0yCi0r ZW5kCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVs ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRiNGVhNGMKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCi1AQCAt MCwwICsxLDUzIEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxl ICJsaWJyYXJ5LW1vZHVsZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS1tYWluLmY5MAotK3Nl dCBzcmNsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5mOTAKLStzZXQgbGliZmlsZSAke3Rlc3RmaWxl fS1saWIuc28KLStzZXQgYmluZmlsZSAke3Rlc3RmaWxlfQotKwotKyMgUmVxdWlyZWQgZm9yIC1m UElDIGJ5IGdkYl9jb21waWxlX3NobGliLgotK2lmIFtnZXRfY29tcGlsZXJfaW5mbyBub3QtdXNl ZF0gewotKyAgIHdhcm5pbmcgIkNvdWxkIG5vdCBnZXQgY29tcGlsZXIgaW5mbyIKLSsgICByZXR1 cm4gLTEKLSt9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlX3NobGliICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c3JjbGliZmlsZX0iICRvYmpkaXIvJHN1YmRpci8kbGliZmlsZSB7ZGVidWcgZjc3fV0g IT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjbGliZmlsZX0i Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIHByZXBhcmVfZm9yX3Rlc3RpbmcgY2Fubm90IGJl IHVzZWQgYXMgbGlua2luZyB3aXRoICRsaWJmaWxlIGNhbm5vdCBiZSBwYXNzZWQKLSsjIGp1c3Qg Zm9yIHRoZSBsaW5raW5nIHBoYXNlIChhbmQgbm90IHRoZSBzb3VyY2UgY29tcGlsYXRpb24gcGhh c2UpLiAgQW5kIGFueQotKyMgd2FybmluZ3Mgb24gaWdub3JlZCAkbGliZmlsZSBhYm9ydCB0aGUg cHJvY2Vzcy4KLSsKLStpZiAgeyBbZ2RiX2NvbXBpbGUgW2xpc3QgJHNyY2Rpci8kc3ViZGlyLyRz cmNmaWxlICRvYmpkaXIvJHN1YmRpci8kbGliZmlsZV0gJG9iamRpci8kc3ViZGlyLyRiaW5maWxl IGV4ZWN1dGFibGUge2RlYnVnIGY3N31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSAke3NyY2ZpbGV9IgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVz dGFydCAkYmluZmlsZQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQot KwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpLWlzLTIiXQotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJpLWlzLTIiICIuKmktaXMtMi4qIgotK2dkYl90ZXN0ICJw cmludCB2YXJfaSIgIiA9IDIiCi0rZ2RiX3Rlc3QgInByaW50IHZhcl9qIiAiID0gMyIKLStnZGJf dGVzdCAicHJpbnQgdmFyX2siICJObyBzeW1ib2wgXCJ2YXJfa1wiIGluIGN1cnJlbnQgY29udGV4 dFxcLiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKLWluZGV4IDBhY2NlNGYuLjVl MTAzNGYgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAotQEAgLTE1LDIxICsx NSw0MSBAQAotIAotIHNldCB0ZXN0ZmlsZSAibW9kdWxlIgotIHNldCBzcmNmaWxlICR7dGVzdGZp bGV9LmY5MAotLXNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSAK LS1pZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1dICE9ICIiIH0gewotLSAgICB1 bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgotK2lmIHsgW3ByZXBhcmVfZm9y X3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGY3N31dIH0g ewotICAgICByZXR1cm4gLTEKLSB9Ci0gCi0tZ2RiX2V4aXQKLS1nZGJfc3RhcnQKLS1nZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLS1nZGJfbG9hZCAke2JpbmZpbGV9Ci0tCi0g aWYgIVtydW50byBNQUlOX19dIHRoZW4gewotICAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBi cmVha3BvaW50IE1BSU5fXyIKLSAgICAgY29udGludWUKLSB9Ci0gCi0tZ2RiX3Rlc3QgInByaW50 IGkiICIgPSA0MiIKLSsjIERvIG5vdCB1c2Ugc2ltcGxlIHNpbmdsZS1sZXR0ZXIgbmFtZXMgYXMg R0RCIHdvdWxkIHBpY2sgdXAgZm9yIGV4cGVjdGVkbHkKLSsjIG5vbmV4aXN0aW5nIHN5bWJvbHMg c29tZSBzdGF0aWMgdmFyaWFibGVzIGZyb20gc3lzdGVtIGxpYnJhcmllcyBkZWJ1Z2luZm9zLgot KwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpLWlzLTEiXQotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJpLWlzLTEiICIuKmktaXMtMS4qIgotK2dkYl90ZXN0ICJw cmludCB2YXJfaSIgIiA9IDEiICJwcmludCB2YXJfaSB2YWx1ZSAxIgotKwotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpLWlzLTIiXQotK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJpLWlzLTIiICIuKmktaXMtMi4qIgotK2dkYl90ZXN0ICJwcmludCB2YXJfaSIgIiA9 IDIiICJwcmludCB2YXJfaSB2YWx1ZSAyIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJhLWItYy1kIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYS1iLWMt ZCIgIi4qYS1iLWMtZC4qIgotK2dkYl90ZXN0ICJwcmludCB2YXJfYSIgIk5vIHN5bWJvbCBcInZh cl9hXCIgaW4gY3VycmVudCBjb250ZXh0XFwuIgotK2dkYl90ZXN0ICJwcmludCB2YXJfYiIgIiA9 IDExIgotK2dkYl90ZXN0ICJwcmludCB2YXJfYyIgIk5vIHN5bWJvbCBcInZhcl9jXCIgaW4gY3Vy cmVudCBjb250ZXh0XFwuIgotK2dkYl90ZXN0ICJwcmludCB2YXJfZCIgIiA9IDEyIgotK2dkYl90 ZXN0ICJwcmludCB2YXJfaSIgIiA9IDE0IiAicHJpbnQgdmFyX2kgdmFsdWUgMTQiCi0rCi0rIyBC cmVha3BvaW50IHdvdWxkIHdvcmsgaW4gbGFuZ3VhZ2UgImMiLgotK2dkYl90ZXN0ICJzaG93IGxh bmd1YWdlIiB7VGhlIGN1cnJlbnQgc291cmNlIGxhbmd1YWdlIGlzICIoYXV0bzsgY3VycmVudGx5 ICk/Zm9ydHJhbiIufQotKwotKyMgZ2NjLTQuNC4yOiBUaGUgbWFpbiBwcm9ncmFtIGlzIGFsd2F5 cyBNQUlOX18gaW4gLnN5bXRhYiBzbyAicnVudG8iIGFib3ZlCi0rIyB3b3Jrcy4gIEJ1dCBEV0FS RiBEV19UQUdfc3VicHJvZ3JhbSBjb250YWlucyB0aGUgbmFtZSBzcGVjaWZpZWQgYnkKLSsjIHRo ZSAicHJvZ3JhbSIgRm9ydHJhbiBzdGF0ZW1lbnQuCi0raWYgW2dkYl9icmVha3BvaW50ICJtb2R1 bGUiXSB7Ci0rICAgIHBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCBtb2R1bGUiCi0rfQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MAotaW5kZXggODFlZjM3Ni4uYTg0MjhjYiAxMDA2 NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZjkwCi1AQCAtMTMsMTAgKzEzLDM5IEBACi0g ISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotICEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0tbW9kdWxlIG1vZAotLSAgICAgICAgaW50 ZWdlciA6OiBpID0gNDIKLS1lbmQgbW9kdWxlIG1vZAotK21vZHVsZSBtb2QxCi0rICAgICAgICBp bnRlZ2VyIDo6IHZhcl9pID0gMQotK2VuZCBtb2R1bGUgbW9kMQotIAotLSAgICAgICAgdXNlIG1v ZAotLSAgICAgICAgcHJpbnQgKiwgaQotK21vZHVsZSBtb2QyCi0rICAgICAgICBpbnRlZ2VyIDo6 IHZhcl9pID0gMgotK2VuZCBtb2R1bGUgbW9kMgotKwotK21vZHVsZSBtb2RtYW55Ci0rICAgICAg ICBpbnRlZ2VyIDo6IHZhcl9hID0gMTAsIHZhcl9iID0gMTEsIHZhcl9jID0gMTIsIHZhcl9pID0g MTQKLStlbmQgbW9kdWxlIG1vZG1hbnkKLSsKLSsgICAgICAgIHN1YnJvdXRpbmUgc3ViMQotKyAg ICAgICAgdXNlIG1vZDEKLSsgICAgICAgIGlmICh2YXJfaSAubmUuIDEpIGNhbGwgYWJvcnQKLSsg ICAgICAgIHZhcl9pID0gdmFyX2kgICAgICAgICAgICAgICAgICAgICAgICAgISBpLWlzLTEKLSsg ICAgICAgIGVuZAotKwotKyAgICAgICAgc3Vicm91dGluZSBzdWIyCi0rICAgICAgICB1c2UgbW9k MgotKyAgICAgICAgaWYgKHZhcl9pIC5uZS4gMikgY2FsbCBhYm9ydAotKyAgICAgICAgdmFyX2kg PSB2YXJfaSAgICAgICAgICAgICAgICAgICAgICAgICAhIGktaXMtMgotKyAgICAgICAgZW5kCi0r Ci0rICAgICAgICBwcm9ncmFtIG1vZHVsZQotKwotKyAgICAgICAgdXNlIG1vZG1hbnksIG9ubHk6 IHZhcl9iLCB2YXJfZCA9PiB2YXJfYywgdmFyX2kKLSsKLSsgICAgICAgIGNhbGwgc3ViMQotKyAg ICAgICAgY2FsbCBzdWIyCi0rCi0rICAgICAgICBpZiAodmFyX2IgLm5lLiAxMSkgY2FsbCBhYm9y dAotKyAgICAgICAgaWYgKHZhcl9kIC5uZS4gMTIpIGNhbGwgYWJvcnQKLSsgICAgICAgIGlmICh2 YXJfaSAubmUuIDE0KSBjYWxsIGFib3J0Ci0rICAgICAgICB2YXJfYiA9IHZhcl9iICAgICAgICAg ICAgICAgICAgICAgICAgICEgYS1iLWMtZAotIGVuZAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmIxMTIwYzMKQEAg LTI2NDUyLDY0ICs5MjY3LDEyIEBAIGluZGV4IDAwMDAwMDAuLjIyNmRjNWQKICsgIGggPSAnaCcK ICsgIGNhbGwgZm9vIChnLCBoKQogK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmdkYi9zZWxmdGVzdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi1p bmRleCA5ZTc4N2YwLi41Y2ExNWQ1IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2Ri L3NlbGZ0ZXN0LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAot QEAgLTk1LDYgKzk1LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBk ZXNjcmlwdGlvbiAic3RlcCBvdmVyIHR0eWFyZyBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21t YW5kICJzdGVwIgotIAkgICAgfQotKwkgICAgLXJlICIuKnB5dGhvbl9zY3JpcHQgPSAwLiokZ2Ri X3Byb21wdCAkIiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2NyaXB0 IGluaXRpYWxpemF0aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAgICAt cmUgIi4qdGltZV9hdF9zdGFydHVwID0gZ2V0X3J1bl90aW1lLiokZ2RiX3Byb21wdCAkIiB7Ci0g CQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBnZXRfcnVuX3RpbWUgYW5kIGV2ZXJ5dGhpbmcg aXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5qYXZhL2ptYWluLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1haW4uZXhw Ci1pbmRleCBhYjk1MjQ3Li45ODE0OTIxIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu amF2YS9qbWFpbi5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1haW4uZXhwCi1A QCAtNjUsNyArNjUsNyBAQCBnZGJfdGVzdCAiYnJlYWsgam1haW4ubWFpbiIgIiR7YnBtYWlufSIK LSAKLSAjIENoZWNrIHRoYXQgYSBmdWxseSBxdWFsaWZpZWQgIm1haW4iIHdvcmtzLgotIGdkYl9s b2FkICIke2JpbmZpbGV9IgotLXNldCBjbWQgImJyZWFrIFwnJHt0ZXN0ZmlsZX0ubWFpbihqYXZh LmxhbmcuU3RyaW5nXFtcXSlcJyIKLStzZXQgY21kICJicmVhayAke3Rlc3RmaWxlfS5tYWluKGph dmEubGFuZy5TdHJpbmdcW1xdKSIKLSBzZXQgbXNnICRjbWQKLSBnZGJfdGVzdF9tdWx0aXBsZSAk Y21kICRtc2cgewotICAgICAtcmUgIiR7YnBtYWlufVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci1AQCAt NzksNyArNzksNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRtc2cgewotIAlnZGJfdGVzdCAi biIgIiIgIiIKLSAKLSAJIyBDaGVjayBhZ2FpbiB3aXRoIGEgbWV0aG9kIHNpZ25hdHVyZSBhdCB0 aGUgZW5kLgotLQlzZXQgY21kICJicmVhayBcJyR7dGVzdGZpbGV9Lm1haW4oamF2YS5sYW5nLlN0 cmluZ1xbXF0pdm9pZFwnIgotKwlzZXQgY21kICJicmVhayAke3Rlc3RmaWxlfS5tYWluKGphdmEu bGFuZy5TdHJpbmdcW1xdKXZvaWQiCi0gCXNldCBtc2cgJGNtZAotIAlnZGJfdGVzdF9tdWx0aXBs ZSAkY21kICRtc2cgewotIAkgICAgLXJlICIke2JwbWFpbn1cclxuJGdkYl9wcm9tcHQgJCIgewot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam1pc2MuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuamF2YS9qbWlzYy5leHAKLWluZGV4IDZmNzE4OGQuLmUzYWI2NTcgMTAwNjQ0Ci0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2ptaXNjLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuamF2YS9qbWlzYy5leHAKLUBAIC03MSw4ICs3MSw4IEBAIGlmICFbc2V0X2xhbmdfamF2 YV0gdGhlbiB7Ci0gICAgICMgc2lnbmF0dXJlLgotICAgICBydW50b19tYWluCi0gICAgIHNldCBm dW5jdGlvbiAiJHt0ZXN0ZmlsZX0ubWFpbihqYXZhLmxhbmcuU3RyaW5nXFtcXSkiCi0tICAgIGdk Yl9icmVha3BvaW50ICJcJyRmdW5jdGlvblwnIiB7IGFsbG93LXBlbmRpbmcgfQotLSAgICBnZGJf YnJlYWtwb2ludCAiXCcke2Z1bmN0aW9ufXZvaWRcJyIgeyBhbGxvdy1wZW5kaW5nIH0KLSsgICAg Z2RiX2JyZWFrcG9pbnQgIiRmdW5jdGlvbiIgeyBhbGxvdy1wZW5kaW5nIH0KLSsgICAgZ2RiX2Jy ZWFrcG9pbnQgIiR7ZnVuY3Rpb259dm9pZCIgeyBhbGxvdy1wZW5kaW5nIH0KLSAgICAgZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgJGZ1bmN0aW9uCi0gCi0gICAgIHNlbmRfZ2RiICJwdHlwZSBq bWlzY1xuIiAgIAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uZTcxMzkxZQoraW5kZXggMDAwMDAwMC4uNTVhYTgwZAogLS0tIC9kZXYv bnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cAotQEAgLTAsMCArMSw3 NyBAQAorQEAgLTAsMCArMSw3NCBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjY1MzksOSArOTMwMiw2IEBA IGluZGV4IDAwMDAwMDAuLmU3MTM5MWUKICsgICAgcmV0dXJuIC0xCiArfQogKwotK3NldCBwcm1z X2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKICsjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCiArCiAr Z2RiX2V4aXQKQEAgLTI2NjMxLDIxICs5MzkxLDYgQEAgaW5kZXggMDAwMDAwMC4uMzUyNDgzMAog KyAgICAgIH0KICsgIH0KICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9q cHJpbnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qcHJpbnQuZXhwCi1pbmRleCAyOWRi ZjRiLi40NDdjYTczIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qcHJpbnQu ZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pwcmludC5leHAKLUBAIC03MCw4ICs3 MCw4IEBAIGlmICFbc2V0X2xhbmdfamF2YV0gdGhlbiB7Ci0gICAgICMgc2lnbmF0dXJlLgotICAg ICBydW50b19tYWluCi0gICAgIHNldCBmdW5jdGlvbiAiJHt0ZXN0ZmlsZX0ubWFpbihqYXZhLmxh bmcuU3RyaW5nXFtcXSkiCi0tICAgIGdkYl9icmVha3BvaW50ICJcJyRmdW5jdGlvblwnIiB7IGFs bG93LXBlbmRpbmcgfQotLSAgICBnZGJfYnJlYWtwb2ludCAiXCcke2Z1bmN0aW9ufXZvaWRcJyIg eyBhbGxvdy1wZW5kaW5nIH0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgIiRmdW5jdGlvbiIgeyBhbGxv dy1wZW5kaW5nIH0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgIiR7ZnVuY3Rpb259dm9pZCIgeyBhbGxv dy1wZW5kaW5nIH0KLSAgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgJGZ1bmN0aW9uCi0g Ci0gICAgIGdkYl90ZXN0ICJwIGp2Y2xhc3MuYWRkcHJpbnQoNCw1LDYpIiAic3VtIGlzIDE1XHJc bi4qIiAidW5hbWJpZ3VvdXMgc3RhdGljIGNhbGwiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5k ZXggMDAwMDAwMC4uNzI5ZjQ1NwpAQCAtMjY4MjgsMjQ3ICs5NTczLDE0IEBAIGluZGV4IDAwMDAw MDAuLmU0OGQ1MjAKICsgIHByb2dyYW0gbWFpbgogKyAgY2FsbCBmICgnZm9vJykKICsgIGVuZAot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jbWQuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKLWluZGV4IDJhM2VkMGQuLmZmNWRlMzMgMTAw NjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY21kLmV4cAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKLUBAIC0yMCwzNiArMjAsMTUgQEAgaWYg JHRyYWNlbGV2ZWwgdGhlbiB7Ci0gICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotIH0KLSAKLS0jIFVz YWdlOiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxU fS4uLgotLSMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxp bmVzIG9mIGlucHV0LgotLSMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9y IHJlc3VsdCBsaW5lIFJFU1VMVC4KLS0jIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47 IGZhaWwgb3RoZXJ3aXNlLgotLXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30g ewotLSAgICBnbG9iYWwgZ2RiX3Byb21wdAotLSAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRh cmdzIHsKLS0JaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7 Ci0tCSAgICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+ KSQiIHsKLS0JCXBhc3MgIiRuYW1lIC0gJGlucHV0IgotLQkgICAgfQotLQl9XX0gewotLQkgICAg cmV0dXJuIDEKLS0JfQotLSAgICB9Ci0tICAgIHJldHVybiAwCi0tfQotLQotICMgU3RhcnQgd2l0 aCBhIGZyZXNoIGdkYi4KLSAKLSBnZGJfZXhpdAotIGdkYl9zdGFydAotIGdkYl9yZWluaXRpYWxp emVfZGlyICRzcmNkaXIvJHN1YmRpcgotIAotLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJp bnQgJ2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0tICAgIC1yZSAi bm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3VwcG9ydGVkICJweXRo b24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0gICAgfQotLSAgICAt cmUgIiRnZGJfcHJvbXB0ICQiCXt9Ci0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0aGVuIHsKLSsg IHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJldHVybiAtMQot IH0KLSAKLSAjIFRlc3QgYSBzaW1wbGUgY29tbWFuZC4KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWZyYW1lLmV4cAotaW5kZXggODZmZTY2MC4uNGM3Mjk1ZiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1mcmFtZS5leHAKLUBAIC0yMCw0MCArMjAsMjggQEAgaWYgJHRyYWNlbGV2ZWwgdGhl biB7Ci0gICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotIH0KLSAKLSsjIFN0YXJ0IHdpdGggYSBmcmVz aCBnZGIuCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKLSsKLStpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4gewotKyAgdW5z dXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgotKyAgcmV0dXJuIC0xCi0rfQot KwotIHNldCB0ZXN0ZmlsZSAicHktZnJhbWUiCi0gc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwot IHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLSBpZiB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgJHtzcmNmaWxlfSIKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotLSMgUnVuIGEgY29tbWFu ZCBpbiBHREIsIGFuZCByZXBvcnQgYSBmYWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0 aHJvd24uCi0tIyBJZiByZXBvcnRfcGFzcyBpcyB0cnVlLCByZXBvcnQgYSBwYXNzIGlmIG5vIGV4 Y2VwdGlvbiBpcyB0aHJvd24uCi0tcHJvYyBnZGJfcHlfdGVzdF9zaWxlbnRfY21kIHtjbWQgbmFt ZSByZXBvcnRfcGFzc30gewotLSAgZ2xvYmFsIGdkYl9wcm9tcHQKLS0KLS0gIGdkYl90ZXN0X211 bHRpcGxlICRjbWQgJG5hbWUgewotLSAgICAgIC1yZSAiVHJhY2ViYWNrLiokZ2RiX3Byb21wdCAk IiAgeyBmYWlsICRuYW1lIH0KLS0gICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCSAgICAgIHsgaWYg JHJlcG9ydF9wYXNzIHsgcGFzcyAkbmFtZSB9IH0KLS0gIH0KLS19Ci0tCi0tIyBTdGFydCB3aXRo IGEgZnJlc2ggZ2RiLgotLQotLWdkYl9leGl0Ci0tZ2RiX3N0YXJ0Ci0tZ2RiX3JlaW5pdGlhbGl6 ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gZ2RiX2xvYWQgJHtiaW5maWxlfQotIAotLWdkYl90ZXN0 X211bHRpcGxlICJweXRob24gcHJpbnQgJ2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBz dXBwb3J0IiB7Ci0tICAgIC1yZSAibm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotLSAg ICAgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLS0gICAgICByZXR1 cm4gLTEKLS0gICAgfQotLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXt9Ci0tfQotLQotICMgVGhl IGZvbGxvd2luZyB0ZXN0cyByZXF1aXJlIGV4ZWN1dGlvbi4KLSAKLSBpZiAhW3J1bnRvX21haW5d IHRoZW4gewotQEAgLTY1LDE5ICs1MywyMCBAQCBnZGJfYnJlYWtwb2ludCAiZjIiCi0gZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrcG9pbnQgYXQgZjIiCi0gZ2RiX3Rlc3QgInVwIiAi IiAiIgotIAotLWdkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmMSA9IGdkYi5zZWxlY3Rl ZF9mcmFtZSAoKSIgImdldCBzZWNvbmQgZnJhbWUiIDAKLS1nZGJfcHlfdGVzdF9zaWxlbnRfY21k ICJweXRob24gZjAgPSBmMS5uZXdlciAoKSIgImdldCBmaXJzdCBmcmFtZSIgMAotK2dkYl9weV90 ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmcmFtZXMgPSBnZGIuc2VsZWN0ZWRfdGhyZWFkICgpLmZy YW1lcyAoKSIgImdldCBmcmFtZXMgbGlzdCIgMQotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgZnJh bWVzIiAiXFwoPGdkYi5GcmFtZSBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4sIDxnZGIu RnJhbWUgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+LCA8Z2RiLkZyYW1lIG9iamVjdCBh dCAweFxbXFs6eGRpZ2l0OlxdXF0rPlxcKSIgInZlcmlmeSBmcmFtZXMgbGlzdCIKLStnZGJfcHlf dGVzdF9zaWxlbnRfY21kICJweXRob24gZjAgPSBmcmFtZXNcWzBcXSIgImdldCBmaXJzdCBmcmFt ZSIgMAotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmMSA9IGZyYW1lc1xbMVxdIiAi Z2V0IHNlY29uZCBmcmFtZSIgMAotIAotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZjAgPT0gZjEiICIgPSBGYWxzZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2Up IgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjAiICIgPSBUcnVl IiAidGVzdCBlcXVhbGl0eSBjb21wYXJpc29uICh0cnVlKSIKLS1nZGJfdGVzdCAicHl0aG9uIHBy aW50ICdyZXN1bHQgPScsIGYwICE9IGYxIiAiID0gVHJ1ZSIgInRlc3QgaW5lcXVhbGl0eSBjb21w YXJpc29uICh0cnVlKSIKLS1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9 IGYwIiAiID0gRmFsc2UiICJ0ZXN0IGluZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgotIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQgKCkiICIgPSBUcnVl IiAidGVzdCBGcmFtZS5pc192YWxpZCIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQg PScsIGYwLm5hbWUgKCkiICIgPSBmMiIgInRlc3QgRnJhbWUubmFtZSIKLSBnZGJfdGVzdCAicHl0 aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1BTF9GUkFNRSIgIiA9 IFRydWUiICJ0ZXN0IEZyYW1lLnR5cGUiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0 ID0nLCBmMC51bndpbmRfc3RvcF9yZWFzb24gKCkgPT0gZ2RiLkZSQU1FX1VOV0lORF9OT19SRUFT T04iICIgPSBUcnVlIiAidGVzdCBGcmFtZS50eXBlIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQg J3Jlc3VsdCA9JywgZ2RiLmZyYW1lX3N0b3BfcmVhc29uX3N0cmluZyAoZ2RiLkZSQU1FX1VOV0lO RF9JTk5FUl9JRCkiICIgPSBwcmV2aW91cyBmcmFtZSBpbm5lciB0byB0aGlzIGZyYW1lIFxcKGNv cnJ1cHQgc3RhY2tcXD9cXCkiICJ0ZXN0IGdkYi5mcmFtZV9zdG9wX3JlYXNvbl9zdHJpbmciCi0g Z2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5wYyAoKSIgIiA9IFxbMC05XF0r IiAidGVzdCBGcmFtZS5wYyIKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYw LmZ1bmN0aW9uICgpIiAiID0gc3ltYm9sIGZvciBmMiIgInRlc3QgRnJhbWUuZnVuY3Rpb24iCi0g Z2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5vbGRlciAoKSA9PSBmMSIgIiA9 IFRydWUiICJ0ZXN0IEZyYW1lLm9sZGVyIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3Vs dCA9JywgZjEubmV3ZXIgKCkgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBGcmFtZS5uZXdlciIKLSBn ZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVf d2hpY2hfc3VyZWx5X2RvZXNudF9leGlzdCcpIiBcCi1AQCAtODUsNCArNzQsNyBAQCBnZGJfdGVz dCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hf c3VyZWx5X2RvZXNudF9leAotICAgInRlc3QgRnJhbWUucmVhZF92YXIgLSBlcnJvciIKLSBnZGJf dGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgnYScpIiAiID0gMSIg InRlc3QgRnJhbWUucmVhZF92YXIgLSBzdWNjZXNzIgotIAotK2dkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX3RocmVhZCAoKS5uZXdlc3RfZnJhbWUgKCkgPT0g ZjAiICIgPSBUcnVlIiAidGVzdCBnZGIubmV3ZXN0X2ZyYW1lIgotIGdkYl90ZXN0ICJweXRob24g cHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09IGYxIiAiID0gVHJ1ZSIg InRlc3QgZ2RiLnNlbGVjdGVkX2ZyYW1lIgotKwotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jl c3VsdCA9JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0 OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1m dW5jdGlvbi5leHAKLWluZGV4IDQ2MTI5NWQuLmVhMzM1OTYgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24uZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktZnVuY3Rpb24uZXhwCi1AQCAtMjAsMzYgKzIwLDE1IEBAIGlmICR0cmFjZWxl dmVsIHRoZW4gewotICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSB9Ci0gCi0tIyBVc2FnZTogZ2Ri X3B5X3Rlc3RfbXVsdGlwbGUgTkFNRSBJTlBVVCBSRVNVTFQge0lOUFVUIFJFU1VMVH0uLi4KLS0j IFJ1biBhIHRlc3QgbmFtZWQgTkFNRSwgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBsaW5lcyBvZiBp bnB1dC4KLS0jIEFmdGVyIGVhY2ggaW5wdXQgbGluZSBJTlBVVCwgc2VhcmNoIGZvciByZXN1bHQg bGluZSBSRVNVTFQuCi0tIyBTdWNjZWVkIGlmIGFsbCByZXN1bHRzIGFyZSBzZWVuOyBmYWlsIG90 aGVyd2lzZS4KLS1wcm9jIGdkYl9weV90ZXN0X211bHRpcGxlIHtuYW1lIGFyZ3N9IHsKLS0gICAg Z2xvYmFsIGdkYl9wcm9tcHQKLS0gICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJncyB7Ci0t CWlmIHtbZ2RiX3Rlc3RfbXVsdGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1dCIgewotLQkgICAg LXJlICJcW1xyXG5cXSooJHJlc3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikkIiB7Ci0t CQlwYXNzICIkbmFtZSAtICRpbnB1dCIKLS0JICAgIH0KLS0JfV19IHsKLS0JICAgIHJldHVybiAx Ci0tCX0KLS0gICAgfQotLSAgICByZXR1cm4gMAotLX0KLS0KLSAjIFN0YXJ0IHdpdGggYSBmcmVz aCBnZGIuCi0gCi0gZ2RiX2V4aXQKLSBnZGJfc3RhcnQKLSBnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKLSAKLS1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxs bywgd29ybGQhJyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAtcmUgIm5vdCBzdXBw b3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBv cnQgaXMgZGlzYWJsZWQiCi0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0gICAgLXJlICIkZ2Ri X3Byb21wdCAkIgl7fQotK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7Ci0rICB1bnN1cHBv cnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0rICByZXR1cm4gLTEKLSB9Ci0gCi0g Z2RiX3B5X3Rlc3RfbXVsdGlwbGUgImlucHV0IGNvbnZlbmllbmNlIGZ1bmN0aW9uIiBcCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZmVyaW9yLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3IuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjBiNDgyOTkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1pbmZlcmlvci5jCi1AQCAtMCwwICsxLDQ5IEBACi0rI2luY2x1ZGUgPHN0 ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5j bHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2RlZmluZSBDSFVOS19TSVpFIDE2MDAwIC8qIHNhbWUgYXMg ZmluZGNtZC5jJ3MgKi8KLSsjZGVmaW5lIEJVRl9TSVpFICgyICogQ0hVTktfU0laRSkgLyogYXQg bGVhc3QgdHdvIGNodW5rcyAqLwotKwotK3N0YXRpYyBpbnQ4X3QgaW50OF9zZWFyY2hfYnVmWzEw MF07Ci0rc3RhdGljIGludDE2X3QgaW50MTZfc2VhcmNoX2J1ZlsxMDBdOwotK3N0YXRpYyBpbnQz Ml90IGludDMyX3NlYXJjaF9idWZbMTAwXTsKLStzdGF0aWMgaW50NjRfdCBpbnQ2NF9zZWFyY2hf YnVmWzEwMF07Ci0rCi0rc3RhdGljIGNoYXIgKnNlYXJjaF9idWY7Ci0rc3RhdGljIGludCBzZWFy Y2hfYnVmX3NpemU7Ci0rCi0rc3RhdGljIGludCB4OwotKwotKwotK2ludCBmMiAoaW50IGEpCi0r ewotKyAgY2hhciAqc3RyID0gImhlbGxvLCB0ZXN0c3VpdGUiOwotKwotKyAgcHV0cyAoc3RyKTsJ LyogQnJlYWsgaGVyZS4gICovCi0rCi0rICByZXR1cm4gKythOwotK30KLSsKLStpbnQgZjEgKGlu dCBhLCBpbnQgYikKLSt7Ci0rICByZXR1cm4gZjIoYSkgKyBiOwotK30KLSsKLStzdGF0aWMgdm9p ZAotK2luaXRfYnVmcyAoKQotK3sKLSsgIHNlYXJjaF9idWZfc2l6ZSA9IEJVRl9TSVpFOwotKyAg c2VhcmNoX2J1ZiA9IG1hbGxvYyAoc2VhcmNoX2J1Zl9zaXplKTsKLSsgIGlmIChzZWFyY2hfYnVm ID09IE5VTEwpCi0rICAgIGV4aXQgKDEpOwotKyAgbWVtc2V0IChzZWFyY2hfYnVmLCAneCcsIHNl YXJjaF9idWZfc2l6ZSk7Ci0rfQotKwotK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltd KQotK3sKLSsgIGluaXRfYnVmcyAoKTsKLSsKLSsgIHJldHVybiBmMSAoMSwgMik7Ci0rfQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3IuZXhwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwv YXJyYXlzLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjcxOWIxNzgK K2luZGV4IDAwMDAwMDAuLmNjYzZlMWUKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5leHAKLUBAIC0wLDAgKzEsMjAxIEBACi0rIyBDb3B5 cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4cAorQEAgLTAsMCArMSwxMDQgQEAKKysj IENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMK ICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKQEAgLTI3MDgyLDQx OCArOTU5NCwxODMgQEAgaW5kZXggMDAwMDAwMC4uNzE5YjE3OAogKyMgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICsjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgogKwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdEQiB0ZXN0c3VpdGUu ICBJdCB0ZXN0cyB0aGUgbWVjaGFuaXNtCi0rIyBleHBvc2luZyBpbmZlcmlvcnMgdG8gUHl0aG9u LgotKwogK2lmICR0cmFjZWxldmVsIHRoZW4gewogKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKICt9 CiArCi0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgorK2xvYWRfbGliICJwYXNjYWwuZXhwIgog KwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCisrc2V0IHRlc3RmaWxlICJhcnJheXMiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0u cGFzCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfSRFWEVFWFQK ICsKLStpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4gewotKyAgdW5zdXBwb3J0ZWQgInB5dGhv biBzdXBwb3J0IGlzIGRpc2FibGVkIgorKyMgVGhlc2UgdGVzdHMgb25seSB3b3JrIHdpdGggZnBj LCB1c2luZyB0aGUgLWd3MyBjb21waWxlLW9wdGlvbgorK3Bhc2NhbF9pbml0CisraWYgeyAkcGFz Y2FsX2NvbXBpbGVyX2lzX2ZwYyAhPSAxIH0gewogKyAgcmV0dXJuIC0xCiArfQogKwotK3NldCB0 ZXN0ZmlsZSAicHktaW5mZXJpb3IiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLStpZiB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg JHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9sb2FkICR7YmluZmlsZX0K LSsKLSsjIFRoZSBmb2xsb3dpbmcgdGVzdHMgcmVxdWlyZSBleGVjdXRpb24uCi0rCi0raWYgIVty dW50b19tYWluXSB0aGVuIHsKLSsgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iCi0rICAgIHJl dHVybiAwCi0rfQotKwotK3J1bnRvIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCcmVhayBoZXJlLiJd Ci0rCi0rIyBUZXN0IGJhc2ljIGdkYi5JbmZlcmlvciBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzLgot KwotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBpbmZlcmlvcnMgPSBnZGIuaW5mZXJp b3JzICgpIiAiZ2V0IGluZmVyaW9ycyBsaXN0IiAxCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBp bmZlcmlvcnMiICJcXCg8Z2RiLkluZmVyaW9yIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0r PixcXCkiICJ2ZXJpZnkgaW5mZXJpb3JzIGxpc3QiCi0rZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAi cHl0aG9uIGkwID0gaW5mZXJpb3JzXFswXF0iICJnZXQgZmlyc3QgaW5mZXJpb3IiIDAKLSsKLStn ZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGkwID09IGluZmVyaW9yc1xbMFxdIiAi ID0gVHJ1ZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAodHJ1ZSkiCi0rZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCAncmVzdWx0ID0nLCBpMC5udW0iICIgPSBcWzAtOVxdKyIgInRlc3QgSW5mZXJp b3IubnVtIgotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgaTAucGlkIiAiID0g XFswLTlcXSsiICJ0ZXN0IEluZmVyaW9yLnBpZCIKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGkwLndhc19hdHRhY2hlZCIgIiA9IEZhbHNlIiAidGVzdCBJbmZlcmlvci53YXNf YXR0YWNoZWQiCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBpMC50aHJlYWRzICgpIiAiXFwoPGdk Yi5JbmZlcmlvclRocmVhZCBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4sXFwpIiAidGVz dCBJbmZlcmlvci50aHJlYWRzIgotKwotKyMgVGVzdCBtZW1vcnkgcmVhZCBhbmQgd3JpdGUgb3Bl cmF0aW9ucy4KLSsKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gYWRkciA9IGdkYi5z ZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ3N0cicpIiBcCi0rICAicmVhZCBzdHIgYWRkcmVz cyIgMAotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBzdHIgPSBnZGIuaW5mZXJpb3Jz KClcWzBcXS5yZWFkX21lbW9yeSAoYWRkciwgNSkiIFwKLSsgICJyZWFkIHN0ciBjb250ZW50cyIg MQotK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBzdHJcWzFcXSA9ICdhJyIgImNoYW5n ZSBzdHIiIDAKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZ2RiLmluZmVyaW9ycygp XFswXF0ud3JpdGVfbWVtb3J5IChhZGRyLCBzdHIpIiBcCi0rICAid3JpdGUgc3RyIiAxCi0rZ2Ri X3Rlc3QgInByaW50IHN0ciIgIiA9IDB4XFtcWzp4ZGlnaXQ6XF1cXSsgXCJoYWxsbywgdGVzdHN1 aXRlXCIiIFwKLSsgICJlbnN1cmUgc3RyIHdhcyBjaGFuZ2VkIGluIHRoZSBpbmZlcmlvciIKLSsK LSsjIFRlc3QgbWVtb3J5IHNlYXJjaC4KLSsKLStzZXQgaGV4X251bWJlciB7MHhbMC05YS1mQS1G XVswLTlhLWZBLUZdKn0KLStzZXQgZGVjX251bWJlciB7WzAtOV0rfQotK3NldCBoaXN0b3J5X3By ZWZpeCB7WyRdWzAtOV0qID0gfQotK3NldCBuZXdsaW5lIHtbXHJcbl0rfQotK3NldCBwYXR0ZXJu X25vdF9mb3VuZCAiJHtuZXdsaW5lfS5dIgotK3NldCBvbmVfcGF0dGVybl9mb3VuZCAiJHtuZXds aW5lfS4ke2RlY19udW1iZXJ9TF0iCi0rc2V0IHR3b19wYXR0ZXJuc19mb3VuZCAiJHtuZXdsaW5l fS4ke2RlY19udW1iZXJ9TCwgJHtkZWNfbnVtYmVyfUxdIgotKwotKyMgVGVzdCBzdHJpbmcgcGF0 dGVybi4KLSsKLStnZGJfdGVzdCAic2V0ICooaW50MzJfdCopICZpbnQ4X3NlYXJjaF9idWZcWzEw XF0gPSAweDYxNjE2MTYxIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNl bGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnaW50OF9zZWFyY2hfYnVmJykiICIiICIiCi0rZ2Ri X3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBzZWFyY2hfYnVmLmFkZHJlc3MiICIiICIiCi0rZ2RiX3Rl c3QgInB5IGxlbmd0aCA9IHNlYXJjaF9idWYudHlwZS5zaXplb2YiICIiICIiCi0rCi0rZ2RiX3Rl c3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2Fk ZHIsIGxlbmd0aCwgJ2FhYScpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAiZmluZCBz dHJpbmcgcGF0dGVybiIKLSsKLSsjIFRlc3Qgbm90IGZpbmRpbmcgcGF0dGVybiBiZWNhdXNlIHNl YXJjaCByYW5nZSB0b28gc21hbGwsIHdpdGgKLSsjIHBvdGVudGlhbCBmaW5kIGF0IHRoZSBlZGdl IG9mIHRoZSByYW5nZS4KLSsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFsw XF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgMTArMywgJ2FhYWEnKSIgXAotKyAgIiR7cGF0 dGVybl9ub3RfZm91bmR9IiAicGF0dGVybiBub3QgZm91bmQgYXQgZW5kIG9mIHJhbmdlIgotKwot KyMgSW5jcmVhc2UgdGhlIHNlYXJjaCByYW5nZSBieSAxIGFuZCB3ZSBzaG91bGQgZmluZCB0aGUg cGF0dGVybi4KLSsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2Vh cmNoX21lbW9yeSAoc3RhcnRfYWRkciwgMTArMysxLCBcWydhJywgJ2EnLCAnYScsICdhJ1xdKSIg XAotKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAicGF0dGVybiBmb3VuZCBhdCBlbmQgb2YgcmFu Z2UiCi0rCi0rIyBUZXN0IG1heC1jb3VudCB3aXRoIHNpemUsIHdpdGggZGlmZmVyZW50IHBhcmFt ZXRlciBwb3NpdGlvbgotKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBc XS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIFxbMHg2MSwgMHg2MVxdLCAxLCAx KSIgXAotKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAic2l6ZSA9IDEsIG1heF9jb3VudCA9IDEi Ci0rCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1v cnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgXFsweDYxLCAweDYxXF0sIDEsIDIpIiBcCi0rICAiJHt0 d29fcGF0dGVybnNfZm91bmR9IiAic2l6ZSA9IDEsIG1heF9jb3VudCA9IDIsIG5vcm1hbCBvcmRl cmluZyIKLSsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNo X21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWzB4NjEsIDB4NjFcXSwgc2l6ZSA9IDEsIG1h eF9jb3VudCA9IDIpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAic2l6ZSA9IDEsIG1h eF9jb3VudCA9IDIsIG5vcm1hbCBvcmRlcmluZywgd2l0aCBrZXl3b3JkcyIKLSsKLStnZGJfdGVz dCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRk ciwgbGVuZ3RoLCBcWzB4NjEsIDB4NjFcXSwgbWF4X2NvdW50ID0gMiwgc2l6ZSA9IDEpIiBcCi0r ICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAic2l6ZSA9IDEsIG1heF9jb3VudCA9IDIsIGludmVy dGVkIG9yZGVyaW5nIgotKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBc XS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIFxbJ2EnLCAnYSdcXSwgbWF4X2Nv dW50ID0gMikiIFwKLSsgICIke3R3b19wYXR0ZXJuc19mb3VuZH0iICJtYXhfY291bnQgPSAyLCB3 aXRoIGtleXdvcmQiCi0rCi0rIyBUZXN0IDE2LWJpdCBwYXR0ZXJuLgotKwotK2dkYl90ZXN0ICJz ZXQgaW50MTZfc2VhcmNoX2J1ZlxbMTBcXSA9IDB4MTIzNCIgIiIgIiIKLStnZGJfdGVzdCAicHkg c2VhcmNoX2J1ZiA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ2ludDE2X3NlYXJj aF9idWYnKSIgIiIgIiIKLStnZGJfdGVzdCAicHkgc3RhcnRfYWRkciA9IHNlYXJjaF9idWYuYWRk cmVzcyIgIiIgIiIKLStnZGJfdGVzdCAicHkgbGVuZ3RoID0gc2VhcmNoX2J1Zi50eXBlLnNpemVv ZiIgIiIgIiIKLStnZGJfdGVzdCAicHkgcGF0dGVybiA9IGdkYi5wYXJzZV9hbmRfZXZhbCAoJyhp bnQxNl90KSAweDEyMzQnKSIgIiIgIiIKLSsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVy aW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCAweDEyMzQsIDIp IiBcCi0rICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDE2LWJpdCBwYXR0ZXJuLCB3aXRo IHB5dGhvbiBwYXR0ZXJuIgotKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClc WzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIHBhdHRlcm4pIiBcCi0rICAi JHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDE2LWJpdCBwYXR0ZXJuLCB3aXRoIHZhbHVlIHBh dHRlcm4iCi0rCi0rIyBUZXN0IDMyLWJpdCBwYXR0ZXJuLgotKwotK2dkYl90ZXN0ICJzZXQgaW50 MzJfc2VhcmNoX2J1ZlxbMTBcXSA9IDB4MTIzNDU2NzgiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHNl YXJjaF9idWYgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92YXIgKCdpbnQzMl9zZWFyY2hf YnVmJykiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBzZWFyY2hfYnVmLmFkZHJl c3MiICIiICIiCi0rZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IHNlYXJjaF9idWYudHlwZS5zaXplb2Yi ICIiICIiCi0rZ2RiX3Rlc3QgInB5IHBhdHRlcm4gPSBnZGIucGFyc2VfYW5kX2V2YWwgKCcoaW50 MzJfdCkgMHgxMjM0NTY3OCcpIiAiIiAiIgotKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5m ZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIDB4MTIzNDU2 NzgsIDQpIiBcCi0rICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDMyLWJpdCBwYXR0ZXJu LCB3aXRoIHB5dGhvbiBwYXR0ZXJuIgotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3Jz KClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIHBhdHRlcm4pIiBcCi0r ICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDMyLWJpdCBwYXR0ZXJuLCB3aXRoIHZhbHVl IHBhdHRlcm4iCi0rCi0rIyBUZXN0IDY0LWJpdCBwYXR0ZXJuLgotKwotK2dkYl90ZXN0ICJzZXQg aW50NjRfc2VhcmNoX2J1ZlxbMTBcXSA9IDB4ZmVkY2JhOTg3NjU0MzIxMExMIiAiIiAiIgotK2dk Yl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgn aW50NjRfc2VhcmNoX2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2Vh cmNoX2J1Zi5hZGRyZXNzIiAiIiAiIgotK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVm LnR5cGUuc2l6ZW9mIiAiIiAiIgotK2dkYl90ZXN0ICJweSBwYXR0ZXJuID0gZ2RiLnBhcnNlX2Fu ZF9ldmFsICgnKGludDY0X3QpIDB4ZmVkY2JhOTg3NjU0MzIxMExMJykiICIiICIiCi0rCi0rZ2Ri X3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0 X2FkZHIsIGxlbmd0aCwgMHhmZWRjYmE5ODc2NTQzMjEwLCA4KSIgXAotKyAgIiR7b25lX3BhdHRl cm5fZm91bmR9IiAiZmluZCA2NC1iaXQgcGF0dGVybiwgd2l0aCBweXRob24gcGF0dGVybiIKLStn ZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3Rh cnRfYWRkciwgbGVuZ3RoLCBwYXR0ZXJuKSIgXAotKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAi ZmluZCA2NC1iaXQgcGF0dGVybiwgd2l0aCB2YWx1ZSBwYXR0ZXJuIgotKwotKyMgVGVzdCBtaXhl ZC1zaXplZCBwYXR0ZXJucy4KLSsKLStnZGJfdGVzdCAic2V0ICooaW50OF90KikgJnNlYXJjaF9i dWZcWzEwXF0gPSAweDYyIiAiIiAiIgotK2dkYl90ZXN0ICJzZXQgKihpbnQxNl90KikgJnNlYXJj aF9idWZcWzExXF0gPSAweDYzNjMiICIiICIiCi0rZ2RiX3Rlc3QgInNldCAqKGludDMyX3QqKSAm c2VhcmNoX2J1ZlxbMTNcXSA9IDB4NjQ2NDY0NjQiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHNlYXJj aF9idWYgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92YXIgKCdzZWFyY2hfYnVmJykiICIi ICIiCi0rZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBzZWFyY2hfYnVmXFswXF0uYWRkcmVzcyIg IiIgIiIKLStnZGJfdGVzdCAicHkgcGF0dGVybjEgPSBnZGIucGFyc2VfYW5kX2V2YWwgKCcoaW50 OF90KSAweDYyJykiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHBhdHRlcm4yID0gZ2RiLnBhcnNlX2Fu ZF9ldmFsICgnKGludDE2X3QpIDB4NjM2MycpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBwYXR0ZXJu MyA9IGdkYi5wYXJzZV9hbmRfZXZhbCAoJyhpbnQzMl90KSAweDY0NjQ2NDY0JykiICIiICIiCi0r Ci0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkg KHN0YXJ0X2FkZHIsIDEwMCwgXFtwYXR0ZXJuMSwgcGF0dGVybjIsIHBhdHRlcm4zXF0pIiBcCi0r ICAgICIke29uZV9wYXR0ZXJuX2ZvdW5kfSIgImZpbmQgbWl4ZWQtc2l6ZWQgcGF0dGVybiIKLSsK LSsjIFRlc3Qgc2VhcmNoIHNwYW5uaW5nIGEgbGFyZ2UgcmFuZ2UsIGluIHRoZSBwYXJ0aWN1bGFy IGNhc2Ugb2YgbmF0aXZlCi0rIyB0YXJnZXRzLCB0ZXN0IHRoZSBzZWFyY2ggc3Bhbm5pbmcgbXVs dGlwbGUgY2h1bmtzLgotKyMgUmVtb3RlIHRhcmdldHMgbWF5IGltcGxlbWVudCB0aGUgc2VhcmNo IGRpZmZlcmVudGx5LgotKwotK3NldCBDSFVOS19TSVpFIDE2MDAwIDsKLSsKLStnZGJfdGVzdCAi c2V0ICooaW50MzJfdCopICZzZWFyY2hfYnVmXFswKiR7Q0hVTktfU0laRX0rMTAwXF0gPSAweDEy MzQ1Njc4IiAiIiAiIgotK2dkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWzEq JHtDSFVOS19TSVpFfSsxMDBcXSA9IDB4MTIzNDU2NzgiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHN0 YXJ0X2FkZHIgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92YXIgKCdzZWFyY2hfYnVmJyki ICIiICIiCi0rZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFk X3ZhciAoJ3NlYXJjaF9idWZfc2l6ZScpIiAiIiAiIgotKwotK2dkYl90ZXN0ICJweSBwcmludCBn ZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIDB4 MTIzNDU2NzgsIDQpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAic2VhcmNoIHNwYW5u aW5nIGxhcmdlIHJhbmdlIgotKwotKyMgRm9yIG5hdGl2ZSB0YXJnZXRzLCB0ZXN0IGEgcGF0dGVy biBzdHJhZGRsaW5nIGEgY2h1bmsgYm91bmRhcnkuCi0rCi0raWYgW2lzbmF0aXZlXSB7Ci0rICAg IGdkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWyR7Q0hVTktfU0laRX0tMVxd ID0gMHhmZGI5NzUzMSIgIiIgIiIKLSsKLSsgICAgZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZl cmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgMHhmZGI5NzUz MSwgNCkiIFwKLSsgICAgICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIHBhdHRlcm4gc3Ry YWRkbGluZyBjaHVuayBib3VuZGFyeSIKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LWluZnRocmVhZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWlu ZnRocmVhZC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjJlYjlmMgot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZnRocmVh ZC5jCi1AQCAtMCwwICsxLDE0IEBACi0raW50IGYyIChpbnQgYSkKLSt7Ci0rICByZXR1cm4gKyth OwotK30KLSsKLStpbnQgZjEgKGludCBhLCBpbnQgYikKLSt7Ci0rICByZXR1cm4gZjIoYSkgKyBi OwotK30KLSsKLStpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSt7Ci0rICByZXR1 cm4gZjEgKDEsIDIpOworKyMgRGV0ZWN0IGlmIHRoZSBmcGMgdmVyc2lvbiBpcyBiZWxvdyAyLjMu MAorK3NldCBmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyAxCisraWYgeyAo JGZwY3ZlcnNpb25fbWFqb3IgPCAyKSB8fCAoICgkZnBjdmVyc2lvbl9tYWpvciA9PSAyKSAmJiAo JGZwY3ZlcnNpb25fbWlub3IgPCAzKSl9ICB7CisrICBzZXQgZnBjX2dlbmVyYXRlc19kd2FyZl9m b3JfZHluYW1pY19hcnJheXMgMAogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktaW5mdGhyZWFkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZ0 aHJlYWQuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTlkMThiNwot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZnRocmVh ZC5leHAKLUBAIC0wLDAgKzEsNTggQEAKLSsjIENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwot KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAr Ci0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIHRo ZSBtZWNoYW5pc20KLSsjIGV4cG9zaW5nIGluZmVyaW9yIHRocmVhZHMgdG8gUHl0aG9uLgogKwot K2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKKytpZiB7W2dk Yl9jb21waWxlX3Bhc2NhbCAiLWd3MyAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIF1dICE9ICIiIH0geworKyAgcmV0dXJu IC0xCiArfQogKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KLSsKICtnZGJfZXhpdAogK2dk Yl9zdGFydAogK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2Fk ICR7YmluZmlsZX0KKytzZXQgYnBfbG9jYXRpb24xIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQg YnJlYWtwb2ludCAxIGhlcmUiXQorK3NldCBicF9sb2NhdGlvbjIgW2dkYl9nZXRfbGluZV9udW1i ZXIgInNldCBicmVha3BvaW50IDIgaGVyZSJdCiArCi0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0 aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJl dHVybiAtMQotK30KICsKLStzZXQgdGVzdGZpbGUgInB5LWluZnRocmVhZCIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3Rm aWxlfQorK2lmIHsgW2dkYl9icmVha3BvaW50ICR7c3JjZmlsZX06JHticF9sb2NhdGlvbjF9XSB9 IHsKKysgICAgcGFzcyAic2V0dGluZyBicmVha3BvaW50IDEiCisrfQorK2lmIHsgW2dkYl9icmVh a3BvaW50ICR7c3JjZmlsZX06JHticF9sb2NhdGlvbjJ9XSB9IHsKKysgICAgcGFzcyAic2V0dGlu ZyBicmVha3BvaW50IDIiCisrfQogKwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIi IH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgorKyMgVmVy aWZ5IHRoYXQgInN0YXJ0IiBsYW5kcyBpbnNpZGUgdGhlIHJpZ2h0IHByb2NlZHVyZS4KKytpZiB7 IFtnZGJfc3RhcnRfY21kXSA8IDAgfSB7CisrICAgIHVudGVzdGVkIHN0YXJ0CiArICAgIHJldHVy biAtMQogK30KICsKLStnZGJfbG9hZCAke2JpbmZpbGV9CisrZ2RiX3Rlc3QgIiIgIi4qIGF0IC4q JHtzcmNmaWxlfS4qIiAic3RhcnQiCiArCi0rIyBUaGUgZm9sbG93aW5nIHRlc3RzIHJlcXVpcmUg ZXhlY3V0aW9uLgorK2dkYl90ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9u MX0uKiIgIkdvaW5nIHRvIGZpcnN0IGJyZWFrcG9pbnQiCiArCi0raWYgIVtydW50b19tYWluXSB0 aGVuIHsKLSsgICAgZmFpbCAiQ2FuJ3QgcnVuIHRvIG1haW4iCi0rICAgIHJldHVybiAwCi0rfQor K2dkYl90ZXN0ICJwcmludCBTdGF0QXJySW50IiAiLiogPSBcXHs1MCwgNTEsIDUyLCA1MywgNTQs IDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxXFx9IiAiUHJpbnQgc3RhdGljIGFycmF5IG9mIGlu dGVnZXIgdHlwZSIKKytnZGJfdGVzdCAicHJpbnQgU3RhdEFyckludF8iICIuKiA9IFxcezUwLCA1 MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFcXH0iICJQcmludCBzdGF0 aWMgYXJyYXkgb2YgaW50ZWdlciIKICsKLStydW50byBbZ2RiX2dldF9saW5lX251bWJlciAiQnJl YWsgaGVyZS4iXQotKwotKyMgVGVzdCBiYXNpYyBnZGIuSW5mZXJpb3IgYXR0cmlidXRlcyBhbmQg bWV0aG9kcy4KLSsKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gdDAgPSBnZGIuc2Vs ZWN0ZWRfdGhyZWFkICgpIiAidGVzdCBnZGIuc2VsZWN0ZWRfdGhyZWFkIiAxCi0rZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCB0MCIgIlxcPGdkYi5JbmZlcmlvclRocmVhZCBvYmplY3QgYXQgMHhcW1xb OnhkaWdpdDpcXVxdKz4iICJ2ZXJpZnkgSW5mZXJpb3JUaHJlYWQgb2JqZWN0IgotK2dkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgdDAubnVtIiAiID0gXFswLTlcXSsiICJ0ZXN0IElu ZmVyaW9yLm51bSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJl dHR5cHJpbnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4 cAotaW5kZXggMjYyNjg5NS4uY2QwZDdlNyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1wcmV0dHlwcmludC5leHAKLUBAIC0yNywxMiArMjcsMjAgQEAgc2V0IGJpbmZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotICMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4K LSBnZGJfZXhpdAotIGdkYl9zdGFydAotLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQg J2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0tICAgIC1yZSAibm90 IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24g c3VwcG9ydCBpcyBkaXNhYmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0gICAgfQotLSAgICAtcmUg IiRnZGJfcHJvbXB0ICQiCXt9Ci0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVu c3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJldHVybiAtMQotK30K KytnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6JHticF9sb2NhdGlvbjJ9LioiICJHb2lu ZyB0byBzZWNvbmQgYnJlYWtwb2ludCIKICsKLSsjIFJ1biBhIGNvbW1hbmQgaW4gR0RCLCBhbmQg cmVwb3J0IGEgZmFpbHVyZSBpZiBhIFB5dGhvbiBleGNlcHRpb24gaXMgdGhyb3duLgotKyMgSWYg cmVwb3J0X3Bhc3MgaXMgdHJ1ZSwgcmVwb3J0IGEgcGFzcyBpZiBubyBleGNlcHRpb24gaXMgdGhy b3duLgotK3Byb2MgZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCB7Y21kIG5hbWUgcmVwb3J0X3Bhc3N9 IHsKLSsgIGdsb2JhbCBnZGJfcHJvbXB0CisrZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJDaGFyIiAi LiogPSAnYWJjZGVmZ2hpamtsJyIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBjaGFyIgorK2dkYl90 ZXN0ICJwcmludCBTdGF0MmRBcnJJbnQiICIuKiA9IFxce1xcezAsIDEsIDIsIDMsIDRcXH0sIFxc ezEsIDIsIDMsIDQsIDVcXH0sIFxcezIsIDMsIDQsIDUsIDZcXH0sIFxcezMsIDQsIDUsIDYsIDdc XH0sIFxcezQsIDUsIDYsIDcsIDhcXH0sIFxcezUsIDYsIDcsIDgsIDlcXH0sIFxcezYsIDcsIDgs IDksIDEwXFx9LCBcXHs3LCA4LCA5LCAxMCwgMTFcXH0sIFxcezgsIDksIDEwLCAxMSwgMTJcXH0s IFxcezksIDEwLCAxMSwgMTIsIDEzXFx9LCBcXHsxMCwgMTEsIDEyLCAxMywgMTRcXH0sIFxcezEx LCAxMiwgMTMsIDE0LCAxNVxcfVxcfSIgIlByaW50IHN0YXRpYyAyLWRpbWVuc2lvbmFsIGFycmF5 IG9mIGludGVnZXIiCiArCi0rICBnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRuYW1lIHsKLSsgICAg ICAtcmUgIlRyYWNlYmFjay4qJGdkYl9wcm9tcHQgJCIgIHsgZmFpbCAkbmFtZSB9Ci0rICAgICAg LXJlICIkZ2RiX3Byb21wdCAkIgkgICAgICB7IGlmICRyZXBvcnRfcGFzcyB7IHBhc3MgJG5hbWUg fSB9Ci0rICB9Ci0gfQotIAotICMgUnVuIGEgY29tbWFuZCBpbiBHREIsIGFuZCByZXBvcnQgYSBm YWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0aHJvd24uCi1AQCAtMTA1LDYgKzExMyw4 IEBAIHByb2MgcnVuX2xhbmdfdGVzdHMge2xhbmd9IHsKLSAgICAgZ2RiX3Rlc3QgInByaW50IGVz dHJpbmciICJcImVtYmVkZGVkIHhcXFxcMjAxXFxcXDIwMlxcXFwyMDNcXFxcMjA0XCIiCi0gICAg IGdkYl90ZXN0ICJwcmludCBjIiAiID0gY29udGFpbmVyIFwiY29udGFpbmVyXCIgd2l0aCAyIGVs ZW1lbnRzID0geyRubCAqLjAuID0gMjMsJG5sICouMS4gPSA3MiRubH0iCi0gCi0rICAgIGdkYl90 ZXN0ICJwcmludCBudWxsc3RyIiAiUnVudGltZUVycm9yOiBFcnJvciByZWFkaW5nIHN0cmluZyBm cm9tIGluZmVyaW9yLioiCisraWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19h cnJheXMgPT0gMH0geworKyAgc2V0dXBfeGZhaWwgIiotKi0qIgorK30KKytnZGJfdGVzdCAicHJp bnQgRHluQXJySW50IiAiLiogPSBcXHs1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4 LCA1OSwgNjAsIDYxLCA2MlxcfSIgIlByaW50IGR5bmFtaWMgYXJyYXkgb2YgaW50ZWdlciB0eXBl IgorK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsK KysgIHNldHVwX3hmYWlsICIqLSotKiIKKyt9CisrZ2RiX3Rlc3QgInByaW50IER5bkFyckludF8i ICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEs IDYyXFx9IiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBpbnRlZ2VyIgogKwotICAgICBnZGJfdGVz dCAiY29udGludWUiICJQcm9ncmFtIGV4aXRlZCBub3JtYWxseVwuIgotIAotICAgICByZW1vdGVf ZmlsZSBob3N0IGRlbGV0ZSAke3JlbW90ZV9weXRob25fZmlsZX0KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktdGVtcGxhdGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXRlbXBsYXRlLmV4cAotaW5kZXggNzEzYWQ1Zi4uNWQxN2IyNiAxMDA2NDQKLS0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10ZW1wbGF0ZS5leHAKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10ZW1wbGF0ZS5leHAKLUBAIC0yMCw2ICsyMCwxNyBAQCBp ZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSAgICAgc3RyYWNlICR0cmFjZWxldmVsCi0gfQotIAotKyMg U3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KKytpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9k eW5hbWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFpbCAiKi0qLSoiCisrfQorK2dkYl90 ZXN0ICJwcmludCBzIiAiLiogPSAndGVzdCcjMCdzdHJpbmcnIiAiUHJpbnQgc3RyaW5nIGNvbnRh aW5pbmcgbnVsbC1jaGFyIgogKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisraWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3Jf ZHluYW1pY19hcnJheXMgPT0gMH0geworKyAgc2V0dXBfeGZhaWwgIiotKi0qIgorK30KKytnZGJf dGVzdCAicHJpbnQgRHluQXJyU3RyIiAiLiogPSBcXHsnZHN0cjAnLCAnZHN0cjEnLCAnZHN0cjIn LCAnZHN0cjMnLCAnZHN0cjQnLCAnZHN0cjUnLCAnZHN0cjYnLCAnZHN0cjcnLCAnZHN0cjgnLCAn ZHN0cjknLCAnZHN0cjEwJywgJ2RzdHIxMScsICdkc3RyMTInXFx9IiAiUHJpbnQgZHluYW1pYyBh cnJheSBvZiBzdHJpbmciCiArCi0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVu c3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJldHVybiAtMQorK2lm IHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKKysgIHNl dHVwX3hmYWlsICIqLSotKiIKICt9CisrZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJTdHIiICIuKiA9 IFxceydzdHIwJywgJ3N0cjEnLCAnc3RyMicsICdzdHIzJywgJ3N0cjQnLCAnc3RyNScsICdzdHI2 JywgJ3N0cjcnLCAnc3RyOCcsICdzdHI5JywgJ3N0cjEwJywgJ3N0cjExJywgJ3N0cjEyJ1xcfSIg IlByaW50IHN0YXRpYyBhcnJheSBvZiBzdHJpbmciCiArCi0gc2V0IHRlc3RmaWxlICJweS10ZW1w bGF0ZSIKLSBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotIHNldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLUBAIC0yOSwyMCArNDAsNiBAQCBpZiB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSBcCi0gICAgIHJldHVybiAtMQotIH0KLSAKLS0jIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIu Ci0tCi0tZ2RiX2V4aXQKLS1nZGJfc3RhcnQKLS1nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKLS0KLS1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50IDIzIiAidmVyaWZ5 IHB5dGhvbiBzdXBwb3J0IiB7Ci0tICAgIC1yZSAibm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQg JCIJewotLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLS0g ICAgICByZXR1cm4gLTEKLS0gICAgfQotLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXt9Ci0tfQot LQotIHByb2MgdGVzdF90ZW1wbGF0ZV9hcmcge3R5cGV9IHsKLSAgICAgZ2xvYmFsIHRlc3RmaWxl IHNyY2RpciBzdWJkaXIgc3JjZmlsZSBiaW5maWxlCi0gICAgIGlmIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBcCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLWluZGV4IGQ5ODBhM2QuLjZhNzU1OTUgMTAwNjQ0Ci0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCi1AQCAtMzA3LDYgKzMwNywxNSBAQCBwcm9j IHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgge30gewotICAgICAicHJpbnQgdmFsdWUncyB0eXBlIgot IH0KLSAKLSsjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBjYXN0IGZhaWx1cmUuICBUaGUgYnVnIHdh cyB0aGF0IGlmIHdlIGNhc3QgYQotKyMgdmFsdWUgdG8gaXRzIG93biB0eXBlLCBnZGIgY291bGQg Y3Jhc2guICBUaGlzIGhhcHBlbmVkIGJlY2F1c2Ugd2UKLSsjIGNvdWxkIGVuZCB1cCBkb3VibGUt ZnJlZWluZyBhIHN0cnVjdCB2YWx1ZS4KLStwcm9jIHRlc3RfY2FzdF9yZWdyZXNzaW9uIHt9IHsK LSsgIGdkYl90ZXN0ICJweXRob24gdiA9IGdkYi5WYWx1ZSg1KSIgIiIgImNyZWF0ZSB2YWx1ZSBm b3IgY2FzdCB0ZXN0IgotKyAgZ2RiX3Rlc3QgInB5dGhvbiB2ID0gdi5jYXN0KHYudHlwZSkiICIi ICJjYXN0IHZhbHVlIGZvciBjYXN0IHRlc3QiCi0rICBnZGJfdGVzdCAicHl0aG9uIHByaW50IHYi ICI1IiAicHJpbnQgdmFsdWUgZm9yIGNhc3QgdGVzdCIKKytpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3 YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFpbCAiKi0qLSoiCiAr fQorK2dkYl90ZXN0ICJwcmludCBEeW5BcnJDaGFyIiAiLiogPSAnYWJjZGVmZ2hpamtsbSciICJQ cmludCBkeW5hbWljIGFycmF5IG9mIGNoYXIiCiArCi0gIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlu dmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0Ci0gIyB0aGUgdHlw ZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2luZyBhCi0g IyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtMzkyLDE2ICs0MDEsMjMgQEAg cHJvYyB0ZXN0X3BhcnNlX2FuZF9ldmFsIHt9IHsKLSBnZGJfZXhpdAotIGdkYl9zdGFydAotIGdk Yl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotLWdkYl9sb2FkICR7YmluZmlsZX0K LSAKLS1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxsbywgd29ybGQhJyIgInZl cmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAtcmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJv bXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQi Ci0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0gICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQot K2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7Ci0rICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1 cHBvcnQgaXMgZGlzYWJsZWQiCi0rICByZXR1cm4gLTEKLSB9Ci0gCi0rc2V0IHRlc3RmaWxlICJw eS12YWx1ZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LnBhc2NhbC9hcnJheXMucGFzIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yOTU2MDJkCistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcworQEAgLTAsMCAr MSw4MiBAQAorK3sKKysgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAg IHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQor KyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KICt9CiArCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQorK3Byb2dyYW0g YXJyYXlzOworKworK3skbW9kZSBvYmpmcGN9eyRoK30KKysKKyt1c2VzIHN5c3V0aWxzOworKwor K3R5cGUgVFN0YXRBcnJJbnQ9IGFycmF5WzAuLjExXSBvZiBpbnRlZ2VyOworKyAgICAgVER5bkFy ckludD0gYXJyYXkgb2YgaW50ZWdlcjsKKysgICAgIFRTdGF0QXJyU3RyPSBhcnJheVswLi4xMl0g b2Ygc3RyaW5nOworKyAgICAgVER5bkFyclN0cj0gYXJyYXkgb2Ygc3RyaW5nOworKyAgICAgVER5 bkFyckNoYXIgPSBhcnJheSBvZiBjaGFyOworKyAgICAgVFN0YXRBcnJDaGFyID0gYXJyYXkgWzAu LjExXSBvZiBjaGFyOworKworKyAgICAgVFN0YXQyZEFyckludCA9IGFycmF5WzAuLjExLDAuLjRd IG9mIGludGVnZXI7CiArCi0gdGVzdF92YWx1ZV9jcmVhdGlvbgotIHRlc3RfdmFsdWVfbnVtZXJp Y19vcHMKLSB0ZXN0X3ZhbHVlX2Jvb2xlYW4KLUBAIC00MTksNiArNDM1LDcgQEAgaWYgIVtydW50 b19tYWluXSB0aGVuIHsKLSB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCi0gdGVzdF9sYXp5X3N0cmlu Z3MKLSB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoCi0rdGVzdF9jYXN0X3JlZ3Jlc3Npb24KLSAKLSAj IFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5hcnkgdG8gdGVzdCBlaXRoZXIg QyBvciBDKysKLSAjIHZhbHVlcy4gCisrdmFyIFN0YXRBcnJJbnQ6IFRTdGF0QXJySW50OworKyAg ICBTdGF0QXJySW50XzogQXJyYXlbMC4uMTFdIG9mIGludGVnZXI7CisrICAgIER5bkFyckludDog IFREeW5BcnJJbnQ7CisrICAgIER5bkFyckludF86IEFycmF5IG9mIGludGVnZXI7CisrICAgIFN0 YXRBcnJTdHI6IFRTdGF0QXJyU3RyOworKyAgICBEeW5BcnJTdHI6IFREeW5BcnJTdHI7CisrICAg IFN0YXRBcnJDaGFyOiBUU3RhdEFyckNoYXI7CisrICAgIER5bkFyckNoYXI6IFREeW5BcnJDaGFy OworKworKyAgICBTdGF0MmRBcnJJbnQ6IFRTdGF0MmRBcnJJbnQ7CisrCisrICAgIHM6IHN0cmlu ZzsKKysJCisrICAgIGksaiA6IGludGVnZXI7CisrCisrYmVnaW4KKysgIGZvciBpIDo9IDAgdG8g MTEgZG8KKysgICAgYmVnaW4KKysgICAgU3RhdEFyckludFtpXTo9IGkrNTA7CisrICAgIFN0YXRB cnJJbnRfW2ldOj0gaSs1MDsKKysgICAgU3RhdEFyckNoYXJbaV06PSBjaHIob3JkKCdhJykraSk7 CisrICAgIGZvciBqIDo9IDAgdG8gNCBkbworKyAgICAgIFN0YXQyZEFyckludFtpLGpdOj1pK2o7 CisrICAgIGVuZDsKKysgIHdyaXRlbG4oU3RhdEFyckludF9bMF0pOworKyAgd3JpdGVsbihTdGF0 QXJySW50WzBdKTsgeyBzZXQgYnJlYWtwb2ludCAxIGhlcmUgfQorKyAgd3JpdGVsbihTdGF0QXJy Q2hhclswXSk7CisrICB3cml0ZWxuKFN0YXQyZEFyckludFswLDBdKTsKKysKKysgIHNldGxlbmd0 aChEeW5BcnJJbnQsMTMpOworKyAgc2V0bGVuZ3RoKER5bkFyckludF8sMTMpOworKyAgc2V0bGVu Z3RoKER5bkFyclN0ciwxMyk7CisrICBzZXRsZW5ndGgoRHluQXJyQ2hhciwxMyk7CisrICBmb3Ig aSA6PSAwIHRvIDEyIGRvCisrICAgIGJlZ2luCisrICAgIER5bkFyckludFtpXTo9IGkrNTA7Cisr ICAgIER5bkFyckludF9baV06PSBpKzUwOworKyAgICBEeW5BcnJDaGFyW2ldOj0gY2hyKG9yZCgn YScpK2kpOworKyAgICBTdGF0QXJyU3RyW2ldOj0nc3RyJytpbnR0b3N0cihpKTsKKysgICAgRHlu QXJyU3RyW2ldOj0nZHN0cicraW50dG9zdHIoaSk7CisrICAgIGVuZDsKKysgIHdyaXRlbG4oRHlu QXJySW50X1sxXSk7CisrICB3cml0ZWxuKER5bkFyckludFsxXSk7IAorKyAgd3JpdGVsbihEeW5B cnJTdHJbMV0pOyAKKysgIHdyaXRlbG4oU3RhdEFyclN0clsxXSk7CisrICB3cml0ZWxuKER5bkFy ckNoYXJbMV0pOworKworKyAgcyA6PSAndGVzdCcjMCdzdHJpbmcnOworKyAgd3JpdGVsbihzKTsg eyBzZXQgYnJlYWtwb2ludCAyIGhlcmUgfQorK2VuZC4KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMgYi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMKIG5ldyBmaWxlIG1vZGUgMTAw NjQ0CiBpbmRleCAwMDAwMDAwLi40ZGMzMDhiCkBAIC0yODAzNywxMjEgKzEwMzE0LDc3IEBAIGlu ZGV4IDAwMDAwMDAuLjFkYzkzYWIKICtpZiB7W2lzdGFyZ2V0ICIqLSotbGludXgqIl19IHsKICsg ICAgdGVzdCBjaGlsZCBGT0xMT1dfQ0hJTEQKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9saWIvY3Atc3VwcG9ydC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9jcC1zdXBwb3J0LmV4cAot aW5kZXggNmZiZWU4NC4uMTE4OWNmZCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2Nw LXN1cHBvcnQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9jcC1zdXBwb3J0LmV4cAotQEAg LTIyMiw3ICsyMjIsNyBAQCBwcm9jIGNwX3Rlc3RfcHR5cGVfY2xhc3MgeyBpbl9jb21tYW5kIGlu X3Rlc3RuYW1lIGluX2tleSBpbl90YWcgaW5fY2xhc3NfdGFibGUgewotIAotICAgICBzZXQgcGFy c2Vfb2theSAwCi0gICAgIGdkYl90ZXN0X211bHRpcGxlICIkaW5fY29tbWFuZCIgIiRpbl90ZXN0 bmFtZSAvLyBwYXJzZSBmYWlsZWQiIHsKLS0JLXJlICJ0eXBlID0gKHN0cnVjdHxjbGFzcykke3dz b3B0fShcW0EtWmEtejAtOV9cXSopJHt3c29wdH0oKDpcW15ce1xdKik/KSR7d3NvcHR9XHsoLiop XH0ke3dzb3B0fShcW15cclxuXF0qKVxbXHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKLSsJLXJlICJ0 eXBlID0gKHN0cnVjdHxjbGFzcykke3dzb3B0fShcW0EtWmEtejAtOV86XF0qKSR7d3NvcHR9KCg6 XFteXHtcXSopPykke3dzb3B0fVx7KC4qKVx9JHt3c29wdH0oXFteXHJcblxdKilcW1xyXG5cXSsk Z2RiX3Byb21wdCAkIiB7Ci0gCSAgICBzZXQgcGFyc2Vfb2theSAgICAgICAgICAxCi0gCSAgICBz ZXQgYWN0dWFsX2tleSAgICAgICAgICAkZXhwZWN0X291dCgxLHN0cmluZykKLSAJICAgIHNldCBh Y3R1YWxfdGFnICAgICAgICAgICRleHBlY3Rfb3V0KDIsc3RyaW5nKQotQEAgLTIzMSw2ICsyMzEs NyBAQCBwcm9jIGNwX3Rlc3RfcHR5cGVfY2xhc3MgeyBpbl9jb21tYW5kIGluX3Rlc3RuYW1lIGlu X2tleSBpbl90YWcgaW5fY2xhc3NfdGFibGUgewotIAkgICAgc2V0IGFjdHVhbF90YWlsICAgICAg ICAgJGV4cGVjdF9vdXQoNixzdHJpbmcpCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIv cGFzY2FsLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKK2luZGV4IDk2OTFiYzEu LjEzZWE4YjUgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCisrKysg Yi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCitAQCAtMzcsNiArMzcsOSBAQCBwcm9jIHBh c2NhbF9pbml0IHt9IHsKKyAgICAgZ2xvYmFsIHBhc2NhbF9jb21waWxlcl9pc19mcGMKKyAgICAg Z2xvYmFsIGdwY19jb21waWxlcgorICAgICBnbG9iYWwgZnBjX2NvbXBpbGVyCisrICAgIGdsb2Jh bCBmcGN2ZXJzaW9uX21ham9yCisrICAgIGdsb2JhbCBmcGN2ZXJzaW9uX21pbm9yCisrICAgIGds b2JhbCBmcGN2ZXJzaW9uX3JlbGVhc2UKKyAgICAgZ2xvYmFsIGVudgorICAKKyAgICAgaWYgeyAk cGFzY2FsX2luaXRfZG9uZSA9PSAxIH0geworQEAgLTY0LDYgKzY3LDIwIEBAIHByb2MgcGFzY2Fs X2luaXQge30geworIAkgICAgc2V0IHBhc2NhbF9jb21waWxlcl9pc19mcGMgMQorIAkgICAgdmVy Ym9zZSAtbG9nICJGcmVlIFBhc2NhbCBjb21waWxlciBmb3VuZCIKICAJfQotICAgICB9Ci0rICAg IAotICAgICBpZiB7ICEgJHBhcnNlX29rYXkgfSB0aGVuIHsgcmV0dXJuIH0KLSAKLSAgICAgIyBD aGVjayB0aGUgYWN0dWFsIGtleS4gIEl0IHdvdWxkIGJlIG5pY2UgdG8gcmVxdWlyZSB0aGF0IGl0 IG1hdGNoCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90ZXN0 c3VpdGUvbGliL2dkYi5leHAKLWluZGV4IDYyNzk0MWQuLjFmOWIyMjggMTAwNjQ0Ci0tLS0gYS9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw Ci1AQCAtMjcsNiArMjcsNyBAQCBpZiB7JHRvb2wgPT0gIiJ9IHsKLSB9Ci0gCi0gbG9hZF9saWIg bGliZ2xvc3MuZXhwCi0rbG9hZF9saWIgcHl0aG9uLXN1cHBvcnQuZXhwCi0gCi0gZ2xvYmFsIEdE QgotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cCBi L2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLmI4ZTk4MzYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cAotQEAgLTAsMCArMSw1MyBAQAotK2dsb2JhbCBw eXRob25fc3VwcG9ydGVkX3NhdmVkCi0rCi0rIyBSZXR1cm4gMSBpZiBQeXRob24gc2NyaXB0aW5n IGlzIHN1cHBvcnRlZCBpbiBHREIsIDAgaWYgbm90LgotK3Byb2MgcHl0aG9uX3N1cHBvcnRlZCB7 IH0gewotKyAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsgIGdsb2JhbCBweXRob25fc3VwcG9ydGVkX3Nh dmVkCi0rCi0rICBpZiBbaW5mbyBleGlzdHMgcHl0aG9uX3N1cHBvcnRlZF9zYXZlZF0gewotKyAg ICAgIHZlcmJvc2UgInB5dGhvbl9zdXBwb3J0ZWQ6ICByZXR1cm5pbmcgc2F2ZWQgJHB5dGhvbl9z dXBwb3J0ZWRfc2F2ZWQiIDIKLSsgICAgICByZXR1cm4gJHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQK LSsgIH0KLSsKLSsgIGdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgJ2hlbGxvLCB3b3Js ZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0rICAgIC1yZSAibm90IHN1cHBvcnRlZC4q JGdkYl9wcm9tcHQgJCIJewotKyAgICAgIHJldHVybiBbc2V0IHB5dGhvbl9zdXBwb3J0ZWRfc2F2 ZWQgMF0KLSsgICAgfQotKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXsKLSsgICAgICByZXR1cm4g W3NldCBweXRob25fc3VwcG9ydGVkX3NhdmVkIDFdCi0rICAgIH0KLSsgIH0KLSsKLSsgIHJldHVy biBbc2V0IHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQgMF0KLSt9Ci0rCi0rIyBSdW4gYSBjb21tYW5k IGluIEdEQiwgYW5kIHJlcG9ydCBhIGZhaWx1cmUgaWYgYSBQeXRob24gZXhjZXB0aW9uIGlzIHRo cm93bi4KLSsjIElmIHJlcG9ydF9wYXNzIGlzIHRydWUsIHJlcG9ydCBhIHBhc3MgaWYgbm8gZXhj ZXB0aW9uIGlzIHRocm93bi4KLStwcm9jIGdkYl9weV90ZXN0X3NpbGVudF9jbWQge2NtZCBuYW1l IHJlcG9ydF9wYXNzfSB7Ci0rICBnbG9iYWwgZ2RiX3Byb21wdAogKwotKyAgZ2RiX3Rlc3RfbXVs dGlwbGUgJGNtZCAkbmFtZSB7Ci0rICAgICAgLXJlICJUcmFjZWJhY2suKiRnZGJfcHJvbXB0ICQi ICB7IGZhaWwgJG5hbWUgfQotKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIJICAgICAgeyBpZiAk cmVwb3J0X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQotKyAgfQotK30KLSsKLSsjIFVzYWdlOiBnZGJf cHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgotKyMg UnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9mIGlu cHV0LgotKyMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3VsdCBs aW5lIFJFU1VMVC4KLSsjIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZhaWwgb3Ro ZXJ3aXNlLgotK3Byb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30gewotKyAgICBn bG9iYWwgZ2RiX3Byb21wdAotKwotKyAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRhcmdzIHsK LSsJaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7Ci0rCSAg ICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+KSQiIHsK LSsJCXBhc3MgIiRuYW1lIC0gJGlucHV0IgorKwkjIERldGVjdCB0aGUgZnBjLXZlcnNpb24KKysJ aWYgeyAkcGFzY2FsX2NvbXBpbGVyX2lzX2ZwYyA9PSAxIH0geworKwkgICAgc2V0IGZwY3ZlcnNp b25fbWFqb3IgMQorKwkgICAgc2V0IGZwY3ZlcnNpb25fbWlub3IgMAorKwkgICAgc2V0IGZwY3Zl cnNpb25fcmVsZWFzZSAwCisrCSAgICBzZXQgZnBjdmVyc2lvbiBbIHJlbW90ZV9leGVjIGhvc3Qg JGZwY19jb21waWxlciAiLWlWIiBdIAorKwkgICAgaWYgW3JlZ2V4cCB7LiooWzAtOV0rKVwuKFsw LTldKylcLihbMC05XSspLj99ICRmcGN2ZXJzaW9uXSB7CisrICAgICAgICAgICAgICByZWdzdWIg ey4qKFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKS4/XG4/Lj99ICRmcGN2ZXJzaW9uIHtcMX0g ZnBjdmVyc2lvbl9tYWpvcgorKyAgICAgICAgICAgICAgcmVnc3ViIHsuKihbMC05XSspXC4oWzAt OV0rKVwuKFswLTldKykuP1xuPy4/fSAkZnBjdmVyc2lvbiB7XDJ9IGZwY3ZlcnNpb25fbWlub3IK KysgICAgICAgICAgICAgIHJlZ3N1YiB7LiooWzAtOV0rKVwuKFswLTldKylcLihbMC05XSspLj9c bj8uP30gJGZwY3ZlcnNpb24ge1wzfSBmcGN2ZXJzaW9uX3JlbGVhc2UKICsJICAgIH0KLSsJfV19 IHsKLSsJICAgIHJldHVybiAxCisrICAgICAgICAgICAgdmVyYm9zZSAtbG9nICJGcmVlcGFzY2Fs IHZlcnNpb246ICRmcGN2ZXJzaW9uX21ham9yLiRmcGN2ZXJzaW9uX21pbm9yLiRmcGN2ZXJzaW9u X3JlbGVhc2UiCiArCX0KLSsgICAgfQotKyAgICByZXR1cm4gMAotK30KKyAgICAgfQorICAgICBz ZXQgcGFzY2FsX2luaXRfZG9uZSAxCisgfSAgIAogZGlmZiAtLWdpdCBhL2dkYi90aHJlYWQuYyBi L2dkYi90aHJlYWQuYwotaW5kZXggMTZhMjA3Yy4uYzNjZmYwNiAxMDA2NDQKK2luZGV4IDJmZGM3 ZjkuLjJhNWQwZjEgMTAwNjQ0CiAtLS0gYS9nZGIvdGhyZWFkLmMKICsrKyBiL2dkYi90aHJlYWQu YwotQEAgLTYxLDcgKzYxLDYgQEAgc3RhdGljIGludCB0aHJlYWRfYWxpdmUgKHN0cnVjdCB0aHJl YWRfaW5mbyAqKTsKLSBzdGF0aWMgdm9pZCBpbmZvX3RocmVhZHNfY29tbWFuZCAoY2hhciAqLCBp bnQpOwotIHN0YXRpYyB2b2lkIHRocmVhZF9hcHBseV9jb21tYW5kIChjaGFyICosIGludCk7Ci0g c3RhdGljIHZvaWQgcmVzdG9yZV9jdXJyZW50X3RocmVhZCAocHRpZF90KTsKLS1zdGF0aWMgdm9p ZCBwcnVuZV90aHJlYWRzICh2b2lkKTsKLSAKLSAvKiBGcm9udGVuZCB2aWV3IG9mIHRoZSB0aHJl YWQgc3RhdGUuICBQb3NzaWJsZSBleHRlbnNpb25zOiBzdGVwcGluZywKLSAgICBmaW5pc2hpbmcs IHVudGlsKGxpbmcpLC4uLiAgKi8KLUBAIC01MTcsNyArNTE2LDcgQEAgdGhyZWFkX2FsaXZlIChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQotICAgcmV0dXJuIDE7CitAQCAtOTAsNiArOTAsMTYgQEAg ZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCisg ICAgIH0KICB9CiAgCi0tc3RhdGljIHZvaWQKICt2b2lkCi0gcHJ1bmVfdGhyZWFkcyAodm9pZCkK KytkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwKQorK3sKKysgIGlmICh0cCAmJiB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KQor KyAgICB7CisrICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKHRwLT5leGNlcHRpb25fcmVzdW1lX2Jy ZWFrcG9pbnQpOworKyAgICAgIHRwLT5leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxM OworKyAgICB9CisrfQorKworIHN0YXRpYyB2b2lkCisgY2xlYXJfdGhyZWFkX2luZmVyaW9yX3Jl c291cmNlcyAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKICB7Ci0gICBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwLCAqbmV4dDsKK0BAIC0xMDMsNiArMTEzLDEyIEBAIGNsZWFyX3RocmVhZF9pbmZlcmlv cl9yZXNvdXJjZXMgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCisgICAgICAgdHAtPnN0ZXBfcmVz dW1lX2JyZWFrcG9pbnQgPSBOVUxMOworICAgICB9CisgCisrICBpZiAodHAtPmV4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCkKKysgICAgeworKyAgICAgIHRwLT5leGNlcHRpb25fcmVzdW1lX2Jy ZWFrcG9pbnQtPmRpc3Bvc2l0aW9uID0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wOworKyAgICAgIHRw LT5leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOworKyAgICB9CisrCisgICBicHN0 YXRfY2xlYXIgKCZ0cC0+c3RvcF9icHN0YXQpOworIAorICAgZGlzY2FyZF9hbGxfaW50ZXJtZWRp YXRlX2NvbnRpbnVhdGlvbnNfdGhyZWFkICh0cCk7CiBkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIv Z2RiL3RvcC5jCi1pbmRleCA5MGU4ZjFlLi40ODllMjRhIDEwMDY0NAoraW5kZXggOTM0NDdmZS4u ZDY4NzVhNyAxMDA2NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCiBAQCAtMzM3 LDYgKzMzNyw3IEBAIHZvaWQKQEAgLTI4MjE5LDExNiArMTA0NTIsMTMgQEAgaW5kZXggY2U5ZjU1 MS4uNWY5ZDczOSAxMDA2NDQKICB9CiAgCiAgc3RhdGljIHZvaWQKLWRpZmYgLS1naXQgYS9nZGIv dHlwZXByaW50LmggYi9nZGIvdHlwZXByaW50LmgKLWluZGV4IDdkN2U2YmMuLjZlZTY1Y2YgMTAw NjQ0Ci0tLS0gYS9nZGIvdHlwZXByaW50LmgKLSsrKyBiL2dkYi90eXBlcHJpbnQuaAotQEAgLTIw LDEwICsyMCwxMyBAQAotICNpZm5kZWYgVFlQRVBSSU5UX0gKLSAjZGVmaW5lIFRZUEVQUklOVF9I Ci0gCi0rZW51bSBsYW5ndWFnZTsKLSBzdHJ1Y3QgdWlfZmlsZTsKLSAKLSB2b2lkIHByaW50X3R5 cGVfc2NhbGFyIChzdHJ1Y3QgdHlwZSAqIHR5cGUsIExPTkdFU1QsIHN0cnVjdCB1aV9maWxlICop OwotIAotIHZvaWQgY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCi0gCQkJCSAgaW50LCBpbnQpOwotKwotK3ZvaWQgY190eXBl X3ByaW50X2FyZ3MgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwgZW51bSBs YW5ndWFnZSk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvZ2RiL3VpLWZpbGUuYyBiL2dkYi91aS1m aWxlLmMKLWluZGV4IGU2YWFmOTMuLjE3NjBiNGMgMTAwNjQ0Ci0tLS0gYS9nZGIvdWktZmlsZS5j Ci0rKysgYi9nZGIvdWktZmlsZS5jCi1AQCAtMjIsNiArMjIsNyBAQAotIAotICNpbmNsdWRlICJk ZWZzLmgiCi0gI2luY2x1ZGUgInVpLWZpbGUuaCIKLSsjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIK LSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotICNpbmNsdWRlICJnZGJfc2VsZWN0LmgiCi0gCi1A QCAtMjY0LDcgKzI2NSw3IEBAIHNldF91aV9maWxlX2RhdGEgKHN0cnVjdCB1aV9maWxlICpmaWxl LCB2b2lkICpkYXRhLAotIH0KLSAKLSAvKiB1aV9maWxlIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGNv bnZlcnRpbmcgYSBgYHN0cnVjdCB1aV9maWxlJycgaW50bwotLSAgIGEgbWVtb3J5IGJ1ZmZlcicn LiAqLwotKyAgIGEgbWVtb3J5IGJ1ZmZlci4gKi8KLSAKLSBzdHJ1Y3QgYWNjdW11bGF0ZWRfdWlf ZmlsZQotIHsKLUBAIC0yOTgsNiArMjk5LDIzIEBAIHVpX2ZpbGVfeHN0cmR1cCAoc3RydWN0IHVp X2ZpbGUgKmZpbGUsIGxvbmcgKmxlbmd0aCkKLSAgICAgKmxlbmd0aCA9IGFjYy5sZW5ndGg7Ci0g ICByZXR1cm4gYWNjLmJ1ZmZlcjsKLSB9Ci0rCi0rc3RhdGljIHZvaWQKLStkb191aV9maWxlX29i c2F2ZXN0cmluZyAodm9pZCAqY29udGV4dCwgY29uc3QgY2hhciAqYnVmZmVyLCBsb25nIGxlbmd0 aCkKLSt7Ci0rICBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayA9IChzdHJ1Y3Qgb2JzdGFjayAqKSBj b250ZXh0OwotKyAgb2JzdGFja19ncm93IChvYnN0YWNrLCBidWZmZXIsIGxlbmd0aCk7Ci0rfQot KwotK2NoYXIgKgotK3VpX2ZpbGVfb2JzYXZlc3RyaW5nIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwg c3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssCi0rCQkgICAgICBsb25nICpsZW5ndGgpCi0rewotKyAg dWlfZmlsZV9wdXQgKGZpbGUsIGRvX3VpX2ZpbGVfb2JzYXZlc3RyaW5nLCBvYnN0YWNrKTsKLSsg ICpsZW5ndGggPSBvYnN0YWNrX29iamVjdF9zaXplIChvYnN0YWNrKTsKLSsgIG9ic3RhY2tfMWdy b3cgKG9ic3RhY2ssICdcMCcpOwotKyAgcmV0dXJuIG9ic3RhY2tfZmluaXNoIChvYnN0YWNrKTsK LSt9Ci0gDAotIC8qIEEgcHVyZSBtZW1vcnkgYmFzZWQgYGBzdHJ1Y3QgdWlfZmlsZScnIHRoYXQg Y2FuIGJlIHVzZWQgYW4gb3V0cHV0Ci0gICAgYnVmZmVyLiBUaGUgYnVmZmVycyBhY2N1bXVsYXRl ZCBjb250ZW50cyBhcmUgYXZhaWxhYmxlIHZpYQotZGlmZiAtLWdpdCBhL2dkYi91aS1maWxlLmgg Yi9nZGIvdWktZmlsZS5oCi1pbmRleCA2MTU1Njk5Li5iYjk0ZjRiIDEwMDY0NAotLS0tIGEvZ2Ri L3VpLWZpbGUuaAotKysrIGIvZ2RiL3VpLWZpbGUuaAotQEAgLTIwLDYgKzIwLDcgQEAKLSAjaWZu ZGVmIFVJX0ZJTEVfSAotICNkZWZpbmUgVUlfRklMRV9ICi0gCi0rc3RydWN0IG9ic3RhY2s7Ci0g c3RydWN0IHVpX2ZpbGU7Ci0gCi0gLyogQ3JlYXRlIGEgZ2VuZXJpYyB1aV9maWxlIG9iamVjdCB3 aXRoIG51bGwgbWV0aG9kcy4gKi8KLUBAIC03OCw3ICs3OSwxMCBAQCBleHRlcm4gdm9pZCB1aV9m aWxlX3B1dCAoc3RydWN0IHVpX2ZpbGUgKnNyYywgdWlfZmlsZV9wdXRfbWV0aG9kX2Z0eXBlICp3 cml0ZSwgdgotICAgIG1pbnVzIHRoYXQgYXBwZW5kZWQgTlVMLiAqLwotIGV4dGVybiBjaGFyICp1 aV9maWxlX3hzdHJkdXAgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBsb25nICpsZW5ndGgpOwotIAot LQotKy8qIFNpbWlsYXIgdG8gdWlfZmlsZV94c3RyZHVwLCBidXQgcmV0dXJuIGEgbmV3IHN0cmlu ZyBhbGxvY2F0ZWQgb24KLSsgICBPQlNUQUNLLiAgKi8KLStleHRlcm4gY2hhciAqdWlfZmlsZV9v YnNhdmVzdHJpbmcgKHN0cnVjdCB1aV9maWxlICpmaWxlLAotKwkJCQkgICBzdHJ1Y3Qgb2JzdGFj ayAqb2JzdGFjaywgbG9uZyAqbGVuZ3RoKTsKLSAKLSBleHRlcm4gbG9uZyB1aV9maWxlX3JlYWQg KHN0cnVjdCB1aV9maWxlICpmaWxlLCBjaGFyICpidWYsIGxvbmcgbGVuZ3RoX2J1Zik7Ci0gCiBk aWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYwotaW5kZXggOWY5MWY0 ZS4uNzUzOTI3ZiAxMDA2NDQKK2luZGV4IDBjNDA5MDUuLmE3ODE2MzYgMTAwNjQ0CiAtLS0gYS9n ZGIvdmFsYXJpdGguYwogKysrIGIvZ2RiL3ZhbGFyaXRoLmMKLUBAIC0zMSw2ICszMSw3IEBACi0g I2luY2x1ZGUgImRmcC5oIgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1ZGUgImluZmNhbGwu aCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotIAotIC8qIERlZmluZSB3aGV0aGVyIG9yIG5v dCB0aGUgQyBvcGVyYXRvciAnLycgdHJ1bmNhdGVzIHRvd2FyZHMgemVybyBmb3IKLSAgICBkaWZm ZXJlbnRseSBzaWduZWQgb3BlcmFuZHMgKHRydW5jYXRpb24gZGlyZWN0aW9uIGlzIHVuZGVmaW5l ZCBpbiBDKS4gKi8KLUBAIC0xNDYsNyArMTQ3LDYgQEAgYW4gaW50ZWdlciBub3IgYSBwb2ludGVy IG9mIHRoZSBzYW1lIHR5cGUuIikpOwotIHN0cnVjdCB2YWx1ZSAqCi0gdmFsdWVfc3Vic2NyaXB0 IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4KQotIHsKLS0gIHN0cnVjdCB2YWx1 ZSAqYm91bmQ7Ci0gICBpbnQgY19zdHlsZSA9IGN1cnJlbnRfbGFuZ3VhZ2UtPmNfc3R5bGVfYXJy YXlzOwotICAgc3RydWN0IHR5cGUgKnRhcnJheTsKLSAKIEBAIC0xNjEsMTIgKzE2MSwyNiBAQCB2 YWx1ZV9zdWJzY3JpcHQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIExPTkdFU1QgaW5kZXgpCi0gICAg ICAgZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd2VyYm91bmQsICZ1cHBlcmJv dW5kKTsKICAKKyAgICAgICBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJi b3VuZCwgJnVwcGVyYm91bmQpOwogICAgICAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgIT0gbHZh bF9tZW1vcnkpCiAtCXJldHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRl eCwgbG93ZXJib3VuZCk7CiArCXsKQEAgLTI4MzU1LDcgKzEwNDg1LDcgQEAgaW5kZXggOWY5MWY0 ZS4uNzUzOTI3ZiAxMDA2NDQKICAJICAvKiBFbWl0IHdhcm5pbmcgdW5sZXNzIHdlIGhhdmUgYW4g YXJyYXkgb2YgdW5rbm93biBzaXplLgogIAkgICAgIEFuIGFycmF5IG9mIHVua25vd24gc2l6ZSBo YXMgbG93ZXJib3VuZCAwIGFuZCB1cHBlcmJvdW5kIC0xLiAgKi8KICAJICBpZiAodXBwZXJib3Vu ZCA+IC0xKQotQEAgLTE4NSwzMyArMTk5LDM3IEBAIHZhbHVlX3N1YnNjcmlwdCAoc3RydWN0IHZh bHVlICphcnJheSwgTE9OR0VTVCBpbmRleCkKK0BAIC0xODUsMzQgKzE5OSwzNyBAQCB2YWx1ZV9z dWJzY3JpcHQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIExPTkdFU1QgaW5kZXgpCiAgICAgIGVycm9y IChfKCJub3QgYW4gYXJyYXkgb3Igc3RyaW5nIikpOwogIH0KICAKQEAgLTI4Mzc4LDcgKzEwNTA4 LDggQEAgaW5kZXggOWY5MWY0ZS4uNzUzOTI3ZiAxMDA2NDQKIC0gIHVuc2lnbmVkIGludCBlbHRf b2ZmcyA9IGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJib3VuZCk7CiAg ICBzdHJ1Y3QgdmFsdWUgKnY7CiAgCi0tICBpZiAoaW5kZXggPCBsb3dlcmJvdW5kIHx8IGVsdF9v ZmZzID49IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSkKKy0gIGlmIChpbmRleCA8IGxvd2VyYm91 bmQgfHwgKCFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAoYXJyYXlfdHlwZSkK Ky0JCQkgICAgICYmIGVsdF9vZmZzID49IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSkpCiAtICAg IGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOwogKyAgLyogRG8gbm90IGNoZWNr IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSBhcyB3ZSBtYXkgaGF2ZSBiZWVuIGdpdmVuIHRoZQog KyAgICAgaW5uZXJtb3N0IGRpbWVuc2lvbiBvZiBhIG11bHRpLWRpbWVuc2lvbmFsIEZvcnRyYW4g YXJyYXkgd2hlcmUgaXRzIGxlbmd0aApAQCAtMjg0MDQsOTcgKzEwNTM1LDE5IEBAIGluZGV4IDlm OTFmNGUuLjc1MzkyN2YgMTAwNjQ0CiAgICByZXR1cm4gdjsKICB9CiAgCi1AQCAtMzE4LDYgKzMz Niw2OCBAQCB1bm9wX3VzZXJfZGVmaW5lZF9wIChlbnVtIGV4cF9vcGNvZGUgb3AsIHN0cnVjdCB2 YWx1ZSAqYXJnMSkKLSAgICAgfQotIH0KLSAKLSsvKiBUcnkgdG8gZmluZCBPUEVSQVRPUiBhcyB0 aHJvdWdoIGFyZ3VtZW50IGRlcGVuZGVudCBsb29rdXAuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3Qg dmFsdWUgKgotK3ZhbHVlX3VzZXJfZGVmaW5lZF9hZGxfb3AgKHN0cnVjdCB2YWx1ZSAqKmFyZ3Ms IGludCBuYXJncywgY2hhciAqb3BlcmF0b3IpCi0rewotKwotKyAgc3RydWN0IHN5bWJvbCAqc3lt cDsKLSsgIHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzOwotKyAgaW50IGk7Ci0rCi0rICAvKiBUaGlz IGZ1bmN0aW9uLCBpZiBmb3VuZCwgd2lsbCBub3QgYmUgYSBtZW1iZXIgZnVuY3Rpb24KLSsgICAg IGFuZCBkb2VzIG5vdCBleHBlY3QgYSBwb2ludGVyIGFzIGl0cyBmaXJzdCBhcmd1bWVudAotKyAg ICAgcmF0aGVyIHRoZSBleHBsaWNpdCBzdHJ1Y3R1cmUuICAqLwotKyAgYXJnc1swXSA9IHZhbHVl X2luZCAoYXJnc1swXSk7Ci0rCi0rICBhcmdfdHlwZXMgPSAoc3RydWN0IHR5cGUgKiopYWxsb2Nh IChuYXJncyAqIChzaXplb2YgKHN0cnVjdCB0eXBlICopKSk7Ci0rICAvKiBQcmVwYXJlIGxpc3Qg b2YgYXJndW1lbnQgdHlwZXMgZm9yIG92ZXJsb2FkIHJlc29sdXRpb24gKi8KLSsgIGZvciAoaSA9 IDA7IGkgPCBuYXJnczsgaSsrKQotKyAgICBhcmdfdHlwZXMgW2ldID0gdmFsdWVfdHlwZSAoYXJn cyBbaV0pOwotKwotKyAgZmluZF9vdmVybG9hZF9tYXRjaCAoYXJnX3R5cGVzLCBuYXJncywgb3Bl cmF0b3IsIDAgLyogbm90IG1ldGhvZCAqLywKLSsgICAgICAgICAgICAgICAgICAgICAgIDAgLyog c3RyaWN0IG1hdGNoICovLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCAvKiBw YXNzIE5VTEwgc3ltYm9sIHNpbmNlIHN5bWJvbCBpcyB1bmtub3duICovLAotKyAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCwgJnN5bXAsIE5VTEwpOwotKwotKyAgaWYgKHN5bXApCi0rICAgIHJl dHVybiB2YWx1ZV9vZl92YXJpYWJsZSAoc3ltcCwgMCk7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9 Ci0rCi0rLyogTG9va3VwIHVzZXIgZGVmaW5lZCBvcGVyYXRvciBOQU1FLiBGaXJzdCB0cnkgdG8g ZmluZCBpdCBhcyBhIG1lbWJlcgotKyAgIG9mIHRoZSBzdHJ1Y3QgQVJHUFswXS4gSWYgbm90IGZv dW5kIHRyeSB0byBmaW5kIHRoZSBvcGVyYXRvciB0aHJvdWdoCi0rICAgYXJndW1lbnQgZGVwZW5k ZW50IGxvb2t1cC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rdmFsdWVfdXNlcl9k ZWZpbmVkX29wIChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBzdHJ1Y3QgdmFsdWUgKiphcmdzLCBjaGFy ICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0aWNfbWVtZnVuY3AsIGlu dCBuYXJncykKLSt7Ci0rICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdCA9IE5VTEw7Ci0rICB2b2xhdGls ZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwg UkVUVVJOX01BU0tfRVJST1IpCi0rICAgIHsKLSsgICAgICByZXN1bHQgPSB2YWx1ZV9zdHJ1Y3Rf ZWx0IChhcmdwLCBhcmdzLCBuYW1lLCBzdGF0aWNfbWVtZnVuY3AsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSIpOwotKyAgICB9Ci0rCi0rICBpZiAoZXhjZXB0 LnJlYXNvbiA8IDApCi0rICAgIHsKLSsKLSsgICAgICBpZiAoY3VycmVudF9sYW5ndWFnZS0+bGFf bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0rICAgICAgICAvKiBUcnkgQURMLiAgKi8KLSsg ICAgICAgIHJlc3VsdCA9IHZhbHVlX3VzZXJfZGVmaW5lZF9hZGxfb3AgKGFyZ3MsIG5hcmdzLCBu YW1lKTsKLSsKLSsgICAgICBpZiAoIXJlc3VsdCkKLSsgICAgICAgIGVycm9yICgiJXMiLCBleGNl cHQubWVzc2FnZSk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQorQEAgLTI5Miw2 ICszMDksMTAgQEAgaW50CisgYmlub3BfdXNlcl9kZWZpbmVkX3AgKGVudW0gZXhwX29wY29kZSBv cCwKKyAJCSAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0IHZhbHVlICphcmcyKQorIHsK KysgIC8qIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCB1c2VyIGRlZmluZWQgb3BzIGZvciBkeW5h bWljIHR5cGVzLiAgKi8KKysgIGlmIChUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFyZzEpKSB8 fCBUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFyZzIpKSkKKysgICAgcmV0dXJuIDA7CiArCi0g LyogV2Uga25vdyBlaXRoZXIgYXJnMSBvciBhcmcyIGlzIGEgc3RydWN0dXJlLCBzbyB0cnkgdG8g ZmluZCB0aGUgcmlnaHQKLSAgICB1c2VyIGRlZmluZWQgZnVuY3Rpb24uICBDcmVhdGUgYW4gYXJn dW1lbnQgdmVjdG9yIHRoYXQgY2FsbHMgCi0gICAgYXJnMS5vcGVyYXRvciBAIChhcmcxLGFyZzIp IGFuZCByZXR1cm4gdGhhdCB2YWx1ZSAod2hlcmUgJ0AnIGlzIGFueQotQEAgLTQ1OCw3ICs1Mzgs OCBAQCB2YWx1ZV94X2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJn MiwgZW51bSBleHBfb3Bjb2RlIG9wLAotICAgICAgIGVycm9yIChfKCJJbnZhbGlkIGJpbmFyeSBv cGVyYXRpb24gc3BlY2lmaWVkLiIpKTsKLSAgICAgfQotIAotLSAgYXJndmVjWzBdID0gdmFsdWVf c3RydWN0X2VsdCAoJmFyZzEsIGFyZ3ZlYyArIDEsIHRzdHIsICZzdGF0aWNfbWVtZnVuY3AsICJz dHJ1Y3R1cmUiKTsKLSsgIGFyZ3ZlY1swXSA9IHZhbHVlX3VzZXJfZGVmaW5lZF9vcCAoJmFyZzEs IGFyZ3ZlYyArIDEsIHRzdHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzdGF0aWNfbWVtZnVuY3AsIDIpOwotIAotICAgaWYgKGFyZ3ZlY1swXSkKLSAgICAgewotQEAg LTU1NSw3ICs2MzYsOCBAQCB2YWx1ZV94X3Vub3AgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgZW51bSBl eHBfb3Bjb2RlIG9wLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0gICAgICAgZXJyb3IgKF8oIkludmFs aWQgdW5hcnkgb3BlcmF0aW9uIHNwZWNpZmllZC4iKSk7Ci0gICAgIH0KLSAKLS0gIGFyZ3ZlY1sw XSA9IHZhbHVlX3N0cnVjdF9lbHQgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3RyLCAmc3RhdGljX21l bWZ1bmNwLCAic3RydWN0dXJlIik7Ci0rICBhcmd2ZWNbMF0gPSB2YWx1ZV91c2VyX2RlZmluZWRf b3AgKCZhcmcxLCBhcmd2ZWMgKyAxLCB0c3RyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmc3RhdGljX21lbWZ1bmNwLCAxKTsKKyAgIHJldHVybiBiaW5vcF90eXBlc191 c2VyX2RlZmluZWRfcCAob3AsIHZhbHVlX3R5cGUgKGFyZzEpLCB2YWx1ZV90eXBlIChhcmcyKSk7 CisgfQogIAotICAgaWYgKGFyZ3ZlY1swXSkKLSAgICAgewogZGlmZiAtLWdpdCBhL2dkYi92YWxv cHMuYyBiL2dkYi92YWxvcHMuYwotaW5kZXggYjk0YzQxMS4uOTg3NWY5NiAxMDA2NDQKK2luZGV4 IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMKICsrKyBiL2dkYi92 YWxvcHMuYwogQEAgLTM4LDYgKzM4LDcgQEAKQEAgLTI4NTA1LDE2ICsxMDU1OCw3IEBAIGluZGV4 IGI5NGM0MTEuLjk4NzVmOTYgMTAwNjQ0CiAgCiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1 ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0zOTcsOCArMzk4LDYgQEAgdmFsdWVfY2FzdCAoc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCB2YWx1ZSAqYXJnMikKLSAJICBuZXdfbGVuZ3RoID0gdmFsX2xl bmd0aCAvIGVsZW1lbnRfbGVuZ3RoOwotIAkgIGlmICh2YWxfbGVuZ3RoICUgZWxlbWVudF9sZW5n dGggIT0gMCkKLSAJICAgIHdhcm5pbmcgKF8oImFycmF5IGVsZW1lbnQgdHlwZSBzaXplIGRvZXMg bm90IGRpdmlkZSBvYmplY3Qgc2l6ZSBpbiBjYXN0IikpOwotLQkgIC8qIEZJWE1FLXR5cGUtYWxs b2NhdGlvbjogbmVlZCBhIHdheSB0byBmcmVlIHRoaXMgdHlwZSB3aGVuCi0tCSAgICAgd2UgYXJl IGRvbmUgd2l0aCBpdC4gICovCi0gCSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlICgo c3RydWN0IHR5cGUgKikgTlVMTCwKLSAJCQkJCSAgVFlQRV9UQVJHRVRfVFlQRSAocmFuZ2VfdHlw ZSksCi0gCQkJCQkgIGxvd19ib3VuZCwKLUBAIC04NDUsNiArODQ0LDY0IEBAIHZhbHVlX29uZSAo c3RydWN0IHR5cGUgKnR5cGUsIGVudW0gbHZhbF90eXBlIGx2KQorQEAgLTg1OCw2ICs4NTksNjUg QEAgdmFsdWVfb25lIChzdHJ1Y3QgdHlwZSAqdHlwZSwgZW51bSBsdmFsX3R5cGUgbHYpCiAgICBy ZXR1cm4gdmFsOwogIH0KICAKQEAgLTI4NTQyLDE0ICsxMDU4NiwxNSBAQCBpbmRleCBiOTRjNDEx Li45ODc1Zjk2IDEwMDY0NAogKyAgcmV0dXJuIE5VTEw7CiArfQogKwotKy8qIFJldHVybiBub24t emVybyBpZiB0aGUgdmFyaWFibGUgaXMgdmFsaWQuICBJZiBpdCBpcyB2YWxpZCB0aGUgZnVuY3Rp b24KLSsgICBtYXkgc3RvcmUgdGhlIGRhdGEgYWRkcmVzcyAoRFdfQVRfREFUQV9MT0NBVElPTikg b2YgVFlQRSBhdCAqQUREUkVTU19SRVRVUk4uCi0rICAgWW91IG11c3Qgc2V0ICpBRERSRVNTX1JF VFVSTiBmcm9tIHZhbHVlX3Jhd19hZGRyZXNzIChWQUwpIGJlZm9yZSBjYWxsaW5nIHRoaXMKLSsg ICBmdW5jdGlvbi4gIElmIG5vIERXX0FUX0RBVEFfTE9DQVRJT04gaXMgcHJlc2VudCBmb3IgVFlQ RSB0aGUgYWRkcmVzcyBhdAotKyAgICpBRERSRVNTX1JFVFVSTiBpcyBsZWZ0IHVuY2hhbmdlZC4g IEFERFJFU1NfUkVUVVJOIG11c3Qgbm90IGJlIE5VTEwsIHVzZQorKy8qIFJldHVybiBub24tTlVM TCBjaGVja190eXBlZGVmIHJlc3VsdCBvbiBUWVBFIGlmIHRoZSB2YXJpYWJsZSBpcyB2YWxpZC4g IElmCisrICAgaXQgaXMgdmFsaWQgdGhlIGZ1bmN0aW9uIG1heSBzdG9yZSB0aGUgZGF0YSBhZGRy ZXNzIChEV19BVF9EQVRBX0xPQ0FUSU9OKSBvZgorKyAgIFRZUEUgYXQgKkFERFJFU1NfUkVUVVJO LiAgWW91IG11c3Qgc2V0ICpBRERSRVNTX1JFVFVSTiBmcm9tCisrICAgdmFsdWVfcmF3X2FkZHJl c3MgKFZBTCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIElmIG5vCisrICAgRFdfQVRf REFUQV9MT0NBVElPTiBpcyBwcmVzZW50IGZvciBUWVBFIHRoZSBhZGRyZXNzIGF0ICpBRERSRVNT X1JFVFVSTiBpcworKyAgIGxlZnQgdW5jaGFuZ2VkLiAgQUREUkVTU19SRVRVUk4gbXVzdCBub3Qg YmUgTlVMTCwgdXNlCiArICAgb2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKCkgZm9yIGp1 c3QgdGhlIGRhdGEgdmFsaWRpdHkgY2hlY2suICAqLwogKwotK2ludAorK3N0cnVjdCB0eXBlICoK ICtvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiAq YWRkcmVzc19yZXR1cm4pCiArewogKyAgZ2RiX2Fzc2VydCAoYWRkcmVzc19yZXR1cm4gIT0gTlVM TCk7CkBAIC0yODU2NCw3ICsxMDYwOSw3IEBAIGluZGV4IGI5NGM0MTEuLjk4NzVmOTYgMTAwNjQ0 CiArICAgIHsKICsgICAgICAvKiBEbyBub3QgdHJ5IHRvIGV2YWx1YXRlIERXX0FUX2RhdGFfbG9j YXRpb24gYXMgaXQgbWF5IGV2ZW4gY3Jhc2gKICsJIChpdCB3b3VsZCBqdXN0IHJldHVybiB0aGUg dmFsdWUgemVybyBpbiB0aGUgZ2ZvcnRyYW4gY2FzZSkuICAqLwotKyAgICAgIHJldHVybiAwOwor KyAgICAgIHJldHVybiBOVUxMOwogKyAgICB9CiArCiArICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9O X0lTX0FERFIgKHR5cGUpKQpAQCAtMjg1NzMsMTMgKzEwNjE4LDEzIEBAIGluZGV4IGI5NGM0MTEu Ljk4NzVmOTYgMTAwNjQ0CiArICAgICphZGRyZXNzX3JldHVybgogKyAgICAgID0gZHdhcmZfbG9j ZXhwcl9iYXRvbl9ldmFsIChUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpKTsK ICsKLSsgIHJldHVybiAxOworKyAgcmV0dXJuIHR5cGU7CiArfQogKwogIC8qIEhlbHBlciBmdW5j dGlvbiBmb3IgdmFsdWVfYXQsIHZhbHVlX2F0X2xhenksIGFuZCB2YWx1ZV9hdF9sYXp5X3N0YWNr LiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKLUBAIC05MzYsMTUgKzk5MywyMSBAQCB2 YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKK0BAIC05NTYsMTUgKzEwMTYsMjEg QEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAgIH0KICAgIGVsc2Ug aWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgICAgIHsKQEAgLTI4NjA4LDcg KzEwNjUzLDcgQEAgaW5kZXggYjk0YzQxMS4uOTg3NWY5NiAxMDA2NDQKICAJfQogICAgICB9CiAg ICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfcmVnaXN0ZXIpCi1AQCAtMTM1Miw3 ICsxNDE1LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3Ry dWN0IGJsb2NrICpiKQorQEAgLTEzNzQsNyArMTQ0MCwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxl IChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikKICAgIGlmICgoVkFMVUVfTFZB TCAodmFsKSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5ICh2YWwpKQogICAgICAgIHx8IFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCiAgICAgIHsKQEAgLTI4NjI1LDEwICsx MDY3MCwxMCBAQCBpbmRleCBiOTRjNDExLi45ODc1Zjk2IDEwMDY0NAogKwl9CiArCiArICAgICAg YWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7CisgCiAgICAgICAgcmV0dXJuIHZhbHVlX2Zyb21f cG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9Ci0gCi1A QCAtMTQ1OCw2ICsxNTMyLDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xNDgxLDYgKzE1NTgsNyBA QCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcx KQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo YXJnMSkpOwpAQCAtMjg2MzYsNyArMTA2ODEsNyBAQCBpbmRleCBiOTRjNDExLi45ODc1Zjk2IDEw MDY0NAogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29tZXRoaW5nIHJlcXVpcmlu ZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBoYXMgbm90IHlldCBiZWVuIHB1 c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0xNDY3LDggKzE1NDIsMTIg QEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCitAQCAtMTQ5MCw4ICsx NTY4LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogICAgaWYg KFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAgICBlcnJvciAoXygiQXR0ZW1w dCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4gbWVtb3J5LiIpKTsKICAK QEAgLTI4NjUwLDE4MyArMTA2OTUsMTkgQEAgaW5kZXggYjk0YzQxMS4uOTg3NWY5NiAxMDA2NDQK ICB9CiAgCiAgLyogR2l2ZW4gYSB2YWx1ZSB3aGljaCBpcyBhIGZ1bmN0aW9uLCByZXR1cm4gYSB2 YWx1ZSB3aGljaCBpcyBhIHBvaW50ZXIKLUBAIC0yMzM2LDcgKzI0MTUsNyBAQCBmaW5kX292ZXJs b2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50IG5hcmdzLAotICAgaW50IGJv ZmZzZXQ7Ci0gICBpbnQgaXg7Ci0gICBpbnQgc3RhdGljX29mZnNldDsKLS0gIHN0cnVjdCBjbGVh bnVwICpvbGRfY2xlYW51cHMgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jbGVhbnVw cyA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKLSAKLSAgIGNvbnN0IGNoYXIg Km9ial90eXBlX25hbWUgPSBOVUxMOwotICAgY2hhciAqZnVuY19uYW1lID0gTlVMTDsKLUBAIC0y MzQ2LDEyICsyNDI1LDI1IEBAIGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB0eXBlICoqYXJn X3R5cGVzLCBpbnQgbmFyZ3MsCi0gICBpZiAobWV0aG9kKQotICAgICB7Ci0gICAgICAgZ2RiX2Fz c2VydCAob2JqKTsKLSsKLSsgICAgICAvKiBPQkogbWF5IGJlIGEgcG9pbnRlciB2YWx1ZSByYXRo ZXIgdGhhbiB0aGUgb2JqZWN0IGl0c2VsZi4gICovCi0rICAgICAgb2JqID0gY29lcmNlX3JlZiAo b2JqKTsKLSsgICAgICB3aGlsZSAoVFlQRV9DT0RFIChjaGVja190eXBlZGVmICh2YWx1ZV90eXBl IChvYmopKSkgPT0gVFlQRV9DT0RFX1BUUikKLSsJb2JqID0gY29lcmNlX3JlZiAodmFsdWVfaW5k IChvYmopKTsKLSAgICAgICBvYmpfdHlwZV9uYW1lID0gVFlQRV9OQU1FICh2YWx1ZV90eXBlIChv YmopKTsKLS0gICAgICAvKiBIYWNrOiBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgb2Z0ZW4gcGFz c2VzIGluIGEgcG9pbnRlcgotLSAgICAgICAgIHZhbHVlIHJhdGhlciB0aGFuIHRoZSBvYmplY3Qg aXRzZWxmLCBzbyB0cnkgYWdhaW4uICAqLwotLSAgICAgIGlmICgoIW9ial90eXBlX25hbWUgfHwg ISpvYmpfdHlwZV9uYW1lKSAKLS0JICAmJiAoVFlQRV9DT0RFICh2YWx1ZV90eXBlIChvYmopKSA9 PSBUWVBFX0NPREVfUFRSKSkKLS0Jb2JqX3R5cGVfbmFtZSA9IFRZUEVfTkFNRSAoVFlQRV9UQVJH RVRfVFlQRSAodmFsdWVfdHlwZSAob2JqKSkpOwotKwotKyAgICAgIC8qIEZpcnN0IGNoZWNrIHdo ZXRoZXIgdGhpcyBpcyBhIGRhdGEgbWVtYmVyLCBlLmcuIGEgcG9pbnRlciB0bwotKwkgYSBmdW5j dGlvbi4gICovCi0rICAgICAgaWYgKFRZUEVfQ09ERSAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlw ZSAob2JqKSkpID09IFRZUEVfQ09ERV9TVFJVQ1QpCi0rCXsKLSsJICAqdmFscCA9IHNlYXJjaF9z dHJ1Y3RfZmllbGQgKG5hbWUsIG9iaiwgMCwKLSsJCQkJICAgICAgIGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKG9iaikpLCAwKTsKLSsJICBpZiAoKnZhbHApCi0rCSAgICB7Ci0rCSAgICAgICpz dGF0aWNwID0gMTsKLSsJICAgICAgcmV0dXJuIDA7Ci0rCSAgICB9Ci0rCX0KLSAKLSAgICAgICBm bnNfcHRyID0gdmFsdWVfZmluZF9vbG9hZF9tZXRob2RfbGlzdCAoJnRlbXAsIG5hbWUsIAotIAkJ CQkJICAgICAgMCwgJm51bV9mbnMsIAotQEAgLTIzNzEsMjMgKzI0NjMsNDUgQEAgZmluZF9vdmVy bG9hZF9tYXRjaCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMsIGludCBuYXJncywKLSAgICAgfQot ICAgZWxzZQotICAgICB7Ci0tICAgICAgY29uc3QgY2hhciAqcXVhbGlmaWVkX25hbWUgPSBTWU1C T0xfQ1BMVVNfREVNQU5HTEVEX05BTUUgKGZzeW0pOwotKyAgICAgIGNvbnN0IGNoYXIgKnF1YWxp ZmllZF9uYW1lID0gTlVMTDsKLSAKLS0gICAgICAvKiBJZiB3ZSBoYXZlIGEgQysrIG5hbWUsIHRy eSB0byBleHRyYWN0IGp1c3QgdGhlIGZ1bmN0aW9uCi0tCSBwYXJ0LiAgKi8KLS0gICAgICBpZiAo cXVhbGlmaWVkX25hbWUpCi0tCWZ1bmNfbmFtZSA9IGNwX2Z1bmNfbmFtZSAocXVhbGlmaWVkX25h bWUpOwotLQotLSAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBDKysgbmFtZSwgdGhpcyBtdXN0IGJl IGEgQy1zdHlsZSBmdW5jdGlvbi4KLS0JIEp1c3QgcmV0dXJuIHRoZSBzYW1lIHN5bWJvbC4gIERv IHRoZSBzYW1lIGlmIGNwX2Z1bmNfbmFtZQotLQkgZmFpbHMgZm9yIHNvbWUgcmVhc29uLiAgKi8K LSsgICAgICBpZiAoZnN5bSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgcXVhbGlmaWVkX25hbWUg PSBTWU1CT0xfTkFUVVJBTF9OQU1FIChmc3ltKTsKLSsKLSsgICAgICAgICAgLyogSWYgd2UgaGF2 ZSBhIGZ1bmN0aW9uIHdpdGggYSBDKysgbmFtZSwgdHJ5IHRvIGV4dHJhY3QganVzdAotKwkgICAg IHRoZSBmdW5jdGlvbiBwYXJ0LiAgRG8gbm90IHRyeSB0aGlzIGZvciBub24tZnVuY3Rpb25zIChl LmcuCi0rCSAgICAgZnVuY3Rpb24gcG9pbnRlcnMpLiAgKi8KLSsgICAgICAgICAgaWYgKHF1YWxp ZmllZF9uYW1lCi0rICAgICAgICAgICAgICAmJiBUWVBFX0NPREUgKGNoZWNrX3R5cGVkZWYgKFNZ TUJPTF9UWVBFIChmc3ltKSkpID09IFRZUEVfQ09ERV9GVU5DKQotKyAgICAgICAgICAgIHsKLSsg ICAgICAgICAgICAgIGZ1bmNfbmFtZSA9IGNwX2Z1bmNfbmFtZSAocXVhbGlmaWVkX25hbWUpOwot KwotKyAgICAgICAgICAgICAgLyogSWYgY3BfZnVuY19uYW1lIGRpZCBub3QgcmVtb3ZlIGFueXRo aW5nLCB0aGUgbmFtZSBvZiB0aGUKLSsJICAgICAgICAgc3ltYm9sIGRpZCBub3QgaW5jbHVkZSBz Y29wZSBvciBhcmd1bWVudCB0eXBlcyAtIGl0IHdhcwotKwkgICAgICAgICBwcm9iYWJseSBhIEMt c3R5bGUgZnVuY3Rpb24uICAqLwotKyAgICAgICAgICAgICAgaWYgKGZ1bmNfbmFtZSAmJiBzdHJj bXAgKGZ1bmNfbmFtZSwgcXVhbGlmaWVkX25hbWUpID09IDApCi0rICAgICAgICAgICAgICAgIHsK LSsgICAgICAgICAgICAgICAgICB4ZnJlZSAoZnVuY19uYW1lKTsKLSsgICAgICAgICAgICAgICAg ICBmdW5jX25hbWUgPSBOVUxMOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgfQot KyAgICAgICAgfQotKyAgICAgIGVsc2UKLSsgICAgICAgIHsKLSsgICAgICAgICAgZnVuY19uYW1l ID0gKGNoYXIgKikgbmFtZTsKLSsgICAgICAgICAgcXVhbGlmaWVkX25hbWUgPSBuYW1lOwotKyAg ICAgICAgfQotKyAgICAgIAotKyAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBDKysgbmFtZSwgdGhp cyBtdXN0IGJlIGEgQy1zdHlsZSBmdW5jdGlvbiBvcgotKwkgbm90IGEgZnVuY3Rpb24gYXQgYWxs LiAgSnVzdCByZXR1cm4gdGhlIHNhbWUgc3ltYm9sLiAgRG8gdGhlCi0rCSBzYW1lIGlmIGNwX2Z1 bmNfbmFtZSBmYWlscyBmb3Igc29tZSByZWFzb24uICAqLwotICAgICAgIGlmIChmdW5jX25hbWUg PT0gTlVMTCkKLSAgICAgICAgIHsKLSAJICAqc3ltcCA9IGZzeW07Ci0gICAgICAgICAgIHJldHVy biAwOwotICAgICAgICAgfQotIAotLSAgICAgIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIGZ1bmNfbmFtZSk7Ci0gICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgb2xvYWRfc3lt cyk7Ci0gICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgb2xvYWRfY2hhbXBfYnYpOwotIAotQEAg LTIzOTgsOCArMjUxMiwxMSBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFy Z190eXBlcywgaW50IG5hcmdzLAotIAkJCQkJCSZvbG9hZF9jaGFtcF9idik7Ci0gICAgIH0KLSAK LS0gIC8qIENoZWNrIGhvdyBiYWQgdGhlIGJlc3QgbWF0Y2ggaXMuICAqLwotKyAgLyogRGlkIHdl IGZpbmQgYSBtYXRjaCA/ICAqLwotKyAgaWYgKG9sb2FkX2NoYW1wID09IC0xKQotKyAgICBlcnJv ciAoIk5vIHN5bWJvbCBcIiVzXCIgaW4gY3VycmVudCBjb250ZXh0LiIsIG5hbWUpOwotIAotKyAg LyogQ2hlY2sgaG93IGJhZCB0aGUgYmVzdCBtYXRjaCBpcy4gICovCi0gICBtYXRjaF9xdWFsaXR5 ID0KLSAgICAgY2xhc3NpZnlfb2xvYWRfbWF0Y2ggKG9sb2FkX2NoYW1wX2J2LCBuYXJncywKLSAJ CQkgIG9sb2FkX21ldGhvZF9zdGF0aWMgKG1ldGhvZCwgZm5zX3B0ciwKLUBAIC0yNDU2LDggKzI1 NzMsOCBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50 IG5hcmdzLAotIAl9Ci0gICAgICAgKm9ianAgPSB0ZW1wOwotICAgICB9Ci0tICBpZiAob2xkX2Ns ZWFudXBzICE9IE5VTEwpCi0tICAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwotKwotKyAg ZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7Ci0gCi0gICBzd2l0Y2ggKG1hdGNoX3F1YWxpdHkp Ci0gICAgIHsKLUBAIC0yNTY1LDYgKzI2ODIsMTIgQEAgZmluZF9vbG9hZF9jaGFtcF9uYW1lc3Bh Y2VfbG9vcCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMsIGludCBuYXJncywKLSAgIG5ld19uYW1l c3BhY2VbbmFtZXNwYWNlX2xlbl0gPSAnXDAnOwotICAgbmV3X29sb2FkX3N5bXMgPSBtYWtlX3N5 bWJvbF9vdmVybG9hZF9saXN0IChmdW5jX25hbWUsCi0gCQkJCQkgICAgICBuZXdfbmFtZXNwYWNl KTsKLSsKLSsgIC8qIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZGVlcGVzc3QgbGV2ZWwgcGVyZm9y bSBhcmd1bWVudAotKyAgICAgZGV0ZXJtaW5lZCBsb29rdXAuICAqLwotKyAgaWYgKCFzZWFyY2hl ZF9kZWVwZXIpCi0rICAgIG1ha2Vfc3ltYm9sX292ZXJsb2FkX2xpc3RfYWRsIChhcmdfdHlwZXMs IG5hcmdzLCBmdW5jX25hbWUpOwotKwotICAgd2hpbGUgKG5ld19vbG9hZF9zeW1zW251bV9mbnNd KQotICAgICArK251bV9mbnM7Ci0gCi1AQCAtMjU5Nyw3ICsyNzIwLDYgQEAgZmluZF9vbG9hZF9j aGFtcF9uYW1lc3BhY2VfbG9vcCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMsIGludCBuYXJncywK LSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgZ2RiX2Fzc2VydCAobmV3X29sb2FkX2No YW1wICE9IC0xKTsKLSAgICAgICAqb2xvYWRfc3ltcyA9IG5ld19vbG9hZF9zeW1zOwotICAgICAg ICpvbG9hZF9jaGFtcCA9IG5ld19vbG9hZF9jaGFtcDsKLSAgICAgICAqb2xvYWRfY2hhbXBfYnYg PSBuZXdfb2xvYWRfY2hhbXBfYnY7Ci1AQCAtMzExNyw5ICszMjM5LDkgQEAgdmFsdWVfbWF5YmVf bmFtZXNwYWNlX2VsdCAoY29uc3Qgc3RydWN0IHR5cGUgKmN1cnR5cGUsCi0gICBzdHJ1Y3Qgc3lt Ym9sICpzeW07Ci0gICBzdHJ1Y3QgdmFsdWUgKnJlc3VsdDsKLSAKLS0gIHN5bSA9IGNwX2xvb2t1 cF9zeW1ib2xfbmFtZXNwYWNlIChuYW1lc3BhY2VfbmFtZSwgbmFtZSwgTlVMTCwKLS0JCQkJICAg IGdldF9zZWxlY3RlZF9ibG9jayAoMCksIAotLQkJCQkgICAgVkFSX0RPTUFJTiwgMSk7Ci0rICBz eW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZShuYW1lc3BhY2VfbmFtZSwgbmFtZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCks IAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSX0RPTUFJTik7Ci0gCi0g ICBpZiAoc3ltID09IE5VTEwpCi0gICAgIHJldHVybiBOVUxMOwotQEAgLTMyNjEsNyArMzM4Myw3 IEBAIHZhbHVlX29mX2xvY2FsIChjb25zdCBjaGFyICpuYW1lLCBpbnQgY29tcGxhaW4pCi0gCi0g ICAvKiBDYWxsaW5nIGxvb2t1cF9ibG9ja19zeW1ib2wgaXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUg TE9DX1JFR0lTVEVSCi0gICAgICBzeW1ib2wgaW5zdGVhZCBvZiB0aGUgTE9DX0FSRyBvbmUgKGlm IGJvdGggZXhpc3QpLiAgKi8KLS0gIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIG5hbWUs IE5VTEwsIFZBUl9ET01BSU4pOwotKyAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYiwgbmFt ZSwgVkFSX0RPTUFJTik7Ci0gICBpZiAoc3ltID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBpZiAo Y29tcGxhaW4pCi1AQCAtMzMxNSw4ICszNDM3LDYgQEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1 ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKLSAgICAgICB8fCBsb3dib3VuZCAr IGxlbmd0aCAtIDEgPiB1cHBlcmJvdW5kKQotICAgICBlcnJvciAoXygic2xpY2Ugb3V0IG9mIHJh bmdlIikpOwotIAotLSAgLyogRklYTUUtdHlwZS1hbGxvY2F0aW9uOiBuZWVkIGEgd2F5IHRvIGZy ZWUgdGhpcyB0eXBlIHdoZW4gd2UgYXJlCi0tICAgICBkb25lIHdpdGggaXQuICAqLwotICAgc2xp Y2VfcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlICgoc3RydWN0IHR5cGUgKikgTlVMTCwK LSAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAotIAkJCQkJbG93Ym91bmQsIAog ZGlmZiAtLWdpdCBhL2dkYi92YWxwcmludC5jIGIvZ2RiL3ZhbHByaW50LmMKLWluZGV4IDNmMjFh ZTQuLjliMTViMWEgMTAwNjQ0CitpbmRleCBhZDYyNjhlLi5mYjBlZjdhIDEwMDY0NAogLS0tIGEv Z2RiL3ZhbHByaW50LmMKICsrKyBiL2dkYi92YWxwcmludC5jCi1AQCAtMjM2LDcgKzIzNiw2IEBA IHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTM2LDYgKzM2LDcgQEAKKyAj aW5jbHVkZSAiZGZwLmgiCisgI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKKyAjaW5jbHVkZSAi YWRhLWxhbmcuaCIKKysjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgCisgI2luY2x1ZGUgPGVycm5v Lmg+CisgCitAQCAtMjM3LDcgKzIzOCw2IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0 eXBlKQogICAgICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6CiAgICAgIGNhc2UgVFlQRV9DT0RFX1VO SU9OOgogICAgICBjYXNlIFRZUEVfQ09ERV9TRVQ6CkBAIC0yODgzNCw5MiArMTA3MTUsOTggQEAg aW5kZXggM2YyMWFlNC4uOWIxNWIxYSAxMDA2NDQKICAgICAgY2FzZSBUWVBFX0NPREVfQklUU1RS SU5HOgogICAgICAgIHJldHVybiAwOwogICAgICBkZWZhdWx0OgotQEAgLTExNTQsNiArMTE1Myw3 IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLAorQEAgLTExNDIsNiArMTE0Miw3IEBAIHZhbF9wcmludF9hcnJheV9l bGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorIHsK KyAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CisgICB1bnNpZ25lZCBsZW47Cisr ICBzdHJ1Y3QgdHlwZSAqc2F2ZWRfdHlwZSA9IHR5cGU7CisgICBzdHJ1Y3QgdHlwZSAqZWx0dHlw ZSwgKmluZGV4X3R5cGU7CisgICB1bnNpZ25lZCBlbHRsZW47CisgICAvKiBQb3NpdGlvbiBvZiB0 aGUgYXJyYXkgZWxlbWVudCB3ZSBhcmUgZXhhbWluaW5nIHRvIHNlZQorQEAgLTExNTAsOSArMTE1 MSwzMyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKKyAgIC8qIE51bWJlciBvZiByZXBldGl0aW9ucyB3ZSBoYXZl IGRldGVjdGVkIHNvIGZhci4gICovCisgICB1bnNpZ25lZCBpbnQgcmVwczsKKyAgIExPTkdFU1Qg bG93X2JvdW5kX2luZGV4ID0gMDsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKyAgQ09S RV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRyZXNzOworKyAgCisrICBiYWNrX3RvID0gbWFrZV9j bGVhbnVwIChudWxsX2NsZWFudXAsIDApOworKyAgdHlwZSA9IG9iamVjdF9hZGRyZXNzX2dldF9k YXRhICh0eXBlLCAmYWRkcmVzcyk7CisrICBpZiAoIXR5cGUpCisrICAgIHsKKysgICAgICBmcHV0 c19maWx0ZXJlZCAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5cGUpLCBzdHJlYW0p OworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysgICAgICByZXR1cm47CisrICAgIH0K KysgIGlmIChhZGRyZXNzICE9IHNhdmVkX2FkZHJlc3MpCisrICAgIHsKKysgICAgICBzaXplX3Qg bGVuZ3RoID0gVFlQRV9MRU5HVEggKHR5cGUpOworIAorLSAgZWx0dHlwZSA9IFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpOworLSAgZWx0bGVuID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKGVs dHR5cGUpKTsKKysgICAgICB2YWxhZGRyID0geG1hbGxvYyAobGVuZ3RoKTsKKysgICAgICBtYWtl X2NsZWFudXAgKHhmcmVlLCAoZ2RiX2J5dGUgKikgdmFsYWRkcik7CisrICAgICAgcmVhZF9tZW1v cnkgKGFkZHJlc3MsIChnZGJfYnl0ZSAqKSB2YWxhZGRyLCBsZW5ndGgpOworKyAgICB9CisrCisr ICAvKiBTa2lwIHR5cGVkZWZzIGJ1dCBkbyBub3QgcmVzb2x2ZSBUWVBFX0RZTkFNSUMuICAqLwor KyAgZWx0dHlwZSA9IHNhdmVkX3R5cGU7CisrICB3aGlsZSAoVFlQRV9DT0RFIChlbHR0eXBlKSA9 PSBUWVBFX0NPREVfVFlQRURFRikKKysgICAgZWx0dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGVs dHR5cGUpOworKyAgZWx0dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGVsdHR5cGUpOworKworKyAg ZWx0bGVuID0gVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRSAodHlwZSk7CisgICBpbmRleF90 eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsKICAKLSAgIGZvciAoOyBpIDwgbGVuICYmIHRo aW5nc19wcmludGVkIDwgb3B0aW9ucy0+cHJpbnRfbWF4OyBpKyspCisgICAvKiBDb21wdXRlIHRo ZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5LiAgT24gbW9zdCBhcnJheXMsCitAQCAt MTE2MCw5ICsxMTg1LDYgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgICAgICBpcyBzaW1wbHkgdGhlIHNpemUg b2YgdGhlIGFycmF5IGRpdmlkZWQgYnkgdGhlIHNpemUgb2YgdGhlIGVsZW1lbnRzLgorICAgICAg QnV0IGZvciBhcnJheXMgb2YgZWxlbWVudHMgd2hvc2Ugc2l6ZSBpcyB6ZXJvLCB3ZSBuZWVkIHRv IGxvb2sgYXQKKyAgICAgIHRoZSBib3VuZHMuICAqLworLSAgaWYgKGVsdGxlbiAhPSAwKQorLSAg ICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSkgLyBlbHRsZW47CistICBlbHNlCiAgICAgIHsKLSsg ICAgICBzaXplX3QgZWx0X29mZnNldCA9IGkgKiBlbHRsZW47Ci0gICAgICAgaWYgKGkgIT0gMCkK LSAJewotIAkgIGlmIChvcHRpb25zLT5wcmV0dHlwcmludF9hcnJheXMpCi1AQCAtMTE3Myw3ICsx MTczLDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gICAgICAgcmVwMSA9IGkgKyAxOwotICAgICAgIHJlcHMg PSAxOwotICAgICAgIHdoaWxlICgocmVwMSA8IGxlbikgJiYKLS0JICAgICAhbWVtY21wICh2YWxh ZGRyICsgaSAqIGVsdGxlbiwgdmFsYWRkciArIHJlcDEgKiBlbHRsZW4sIGVsdGxlbikpCi0rCSAg ICAgIW1lbWNtcCAodmFsYWRkciArIGVsdF9vZmZzZXQsIHZhbGFkZHIgKyByZXAxICogZWx0bGVu LCBlbHRsZW4pKQotIAl7Ci0gCSAgKytyZXBzOwotIAkgICsrcmVwMTsKKyAgICAgICBMT05HRVNU IGxvdywgaGk7CisgCitAQCAtMTIzNiw2ICsxMjU4LDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1l bnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgICAgIHsK KyAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKyAgICAgfQorKworKyAg ZG9fY2xlYW51cHMgKGJhY2tfdG8pOworIH0KKyAKKyAvKiBSZWFkIExFTiBieXRlcyBvZiB0YXJn ZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxhY2luZyB0aGUKIGRpZmYgLS1naXQgYS9n ZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCBhNDYyZWU0Li45NjhjZGY0IDEwMDY0NAor aW5kZXggZDU1MjQwMi4uYjEwMjY5YyAxMDA2NDQKIC0tLSBhL2dkYi92YWx1ZS5jCiArKysgYi9n ZGIvdmFsdWUuYwotQEAgLTM3LDggKzM3LDEwIEBACi0gI2luY2x1ZGUgImJsb2NrLmgiCi0gI2lu Y2x1ZGUgImRmcC5oIgorQEAgLTM5LDYgKzM5LDcgQEAKICAjaW5jbHVkZSAib2JqZmlsZXMuaCIK LSsjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKICAjaW5jbHVkZSAidmFscHJpbnQuaCIKICAj aW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKICsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICAKICAj aW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgogIAotQEAgLTE3MCw2ICsxNzIsMTQgQEAgc3RydWN0 IHZhbHVlCi0gICAgICB0YWtlbiBvZmYgdGhpcyBsaXN0LiAgKi8KLSAgIHN0cnVjdCB2YWx1ZSAq bmV4dDsKLSAKLSsgIC8qIFRoZSByZWZlcmVuY2UgY291bnQuICBBIHZhbHVlIHRoYXQgaXMgc3Rp bGwgb24gdGhlIGBhbGxfdmFsdWVzJwotKyAgICAgbGlzdCB3aWxsIGhhdmUgYSByZWZlcmVuY2Ug Y291bnQgb2YgMC4gIEEgY2FsbCB0byBgcmVsZWFzZV92YWx1ZScKLSsgICAgIHdpbGwgaW5jcmVt ZW50IHRoZSByZWZlcmVuY2UgY291bnQgKGFuZCByZW1vdmUgdGhlIHZhbHVlIGZyb20gdGhlCi0r ICAgICBsaXN0LCB0aGUgZmlyc3QgdGltZSkuICBBIGNhbGwgdG8gYHZhbHVlX2ZyZWUnIHdpbGwg ZGVjcmVtZW50IHRoZQotKyAgICAgcmVmZXJlbmNlIGNvdW50LCBhbmQgd2lsbCBmcmVlIHRoZSB2 YWx1ZSB3aGVuIHRoZXJlIGFyZSBubyBtb3JlCi0rICAgICByZWZlcmVuY2VzLiAgKi8KLSsgIGlu dCByZWZjb3VudDsKLSsKLSAgIC8qIFJlZ2lzdGVyIG51bWJlciBpZiB0aGUgdmFsdWUgaXMgZnJv bSBhIHJlZ2lzdGVyLiAgKi8KLSAgIHNob3J0IHJlZ251bTsKLSAKLUBAIC02MzEsNiArNjQxLDEz IEBAIHZhbHVlX2ZyZWUgKHN0cnVjdCB2YWx1ZSAqdmFsKQotICAgICAgIGlmICh2YWwtPnBhcmVu dCAhPSBOVUxMKQotIAl2YWx1ZV9mcmVlICh2YWwtPnBhcmVudCk7Ci0gCi0rI2lmIDAKLSsgICAg ICAvKiBXZSBuZWVkIHR5cGUgR0MgaW5zdGVhZC4gIFRoaXMgY2FuIGZhaWwgd2hlbiBhbiBvYmpm aWxlIGlzCi0rCSByZWNsYWltZWQgYW5kIHRoZW4gYSB2YWx1ZSBpcyBsYXRlciBmcmVlZC4gICov Ci0rICAgICAgdHlwZV9kZWNyZWYgKHZhbC0+dHlwZSk7Ci0rICAgICAgdHlwZV9kZWNyZWYgKHZh bC0+ZW5jbG9zaW5nX3R5cGUpOwotKyNlbmRpZgotKwotICAgICAgIGlmIChWQUxVRV9MVkFMICh2 YWwpID09IGx2YWxfY29tcHV0ZWQpCi0gCXsKLSAJICBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3Mg PSB2YWwtPmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzOwotQEAgLTczNSw2ICs3NTIsNyBAQCB2YWx1 ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKLSAgICAgdmFsID0gYWxsb2NhdGVfdmFsdWVfbGF6 eSAoZW5jbF90eXBlKTsKLSAgIGVsc2UKLSAgICAgdmFsID0gYWxsb2NhdGVfdmFsdWUgKGVuY2xf dHlwZSk7Ci0rCi0gICB2YWwtPnR5cGUgPSBhcmctPnR5cGU7Ci0gICBWQUxVRV9MVkFMICh2YWwp ID0gVkFMVUVfTFZBTCAoYXJnKTsKLSAgIHZhbC0+bG9jYXRpb24gPSBhcmctPmxvY2F0aW9uOwot QEAgLTc3MCwxMiArNzg4LDE1IEBAIHZhbHVlX2NvcHkgKHN0cnVjdCB2YWx1ZSAqYXJnKQotIHZv aWQKLSBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVu dCwgc3RydWN0IHZhbHVlICp3aG9sZSkKK0BAIC04MjgsMTIgKzgyOSwxNSBAQCB2b2lkCisgc2V0 X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCisgCQkJ ICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp3aG9sZSkKICB7CiArICBDT1JFX0FERFIgYWRkcjsK ICsKLSAgIGlmIChWQUxVRV9MVkFMICh3aG9sZSkgPT0gbHZhbF9pbnRlcm5hbHZhcikKKyAgIGlm ICh3aG9sZS0+bHZhbCA9PSBsdmFsX2ludGVybmFsdmFyKQogICAgICBWQUxVRV9MVkFMIChjb21w b25lbnQpID0gbHZhbF9pbnRlcm5hbHZhcl9jb21wb25lbnQ7CiAgICBlbHNlCi0gICAgIFZBTFVF X0xWQUwgKGNvbXBvbmVudCkgPSBWQUxVRV9MVkFMICh3aG9sZSk7CisgICAgIFZBTFVFX0xWQUwg KGNvbXBvbmVudCkgPSB3aG9sZS0+bHZhbDsKICAKICAgIGNvbXBvbmVudC0+bG9jYXRpb24gPSB3 aG9sZS0+bG9jYXRpb247CiArCi0gICBpZiAoVkFMVUVfTFZBTCAod2hvbGUpID09IGx2YWxfY29t cHV0ZWQpCisgICBpZiAod2hvbGUtPmx2YWwgPT0gbHZhbF9jb21wdXRlZCkKICAgICAgewogICAg ICAgIHN0cnVjdCBsdmFsX2Z1bmNzICpmdW5jcyA9IHdob2xlLT5sb2NhdGlvbi5jb21wdXRlZC5m dW5jczsKLUBAIC03ODMsNiArODA0LDEyIEBAIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24g KHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LCBzdHJ1Y3QgdmFsdWUgKndob2xlKQorQEAgLTg0MSw2 ICs4NDUsMTIgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpj b21wb25lbnQsCiAgICAgICAgaWYgKGZ1bmNzLT5jb3B5X2Nsb3N1cmUpCiAgICAgICAgICBjb21w b25lbnQtPmxvY2F0aW9uLmNvbXB1dGVkLmNsb3N1cmUgPSBmdW5jcy0+Y29weV9jbG9zdXJlICh3 aG9sZSk7CiAgICAgIH0KQEAgLTI4OTMyLDcgKzEwODE5LDcgQEAgaW5kZXggYTQ2MmVlNC4uOTY4 Y2RmNCAxMDA2NDQKICB9CiAgCiAgDAotQEAgLTkxMyw2ICs5NDAsMjkgQEAgc2hvd192YWx1ZXMg KGNoYXIgKm51bV9leHAsIGludCBmcm9tX3R0eSkKK0BAIC05NzMsNiArOTgzLDI5IEBAIHNob3df dmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCiAgICAgICAgbnVtX2V4cFsxXSA9 ICdcMCc7CiAgICAgIH0KICB9CkBAIC0yODk2Miw3ICsxMDg0OSw3IEBAIGluZGV4IGE0NjJlZTQu Ljk2OGNkZjQgMTAwNjQ0CiAgDAogIC8qIEludGVybmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB2 YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgogICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNzaWdu ZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMTM4OCw2ICsxNDM4LDQwIEBAIGNhbGxfaW50 ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTE0NTEsNiArMTQ4 NCw0MCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK ICAgIHJldHVybiAoKmlmbi0+aGFuZGxlcikgKGdkYmFyY2gsIGxhbmd1YWdlLCBpZm4tPmNvb2tp ZSwgYXJnYywgYXJndik7CiAgfQogIApAQCAtMjkwMDMsNyArMTA4OTAsNyBAQCBpbmRleCBhNDYy ZWU0Li45NjhjZGY0IDEwMDY0NAogIC8qIFRoZSAnZnVuY3Rpb24nIGNvbW1hbmQuICBUaGlzIGRv ZXMgbm90aGluZyAtLSBpdCBpcyBqdXN0IGEKICAgICBwbGFjZWhvbGRlciB0byBsZXQgImhlbHAg ZnVuY3Rpb24gTkFNRSIgd29yay4gIFRoaXMgaXMgYWxzbyB1c2VkIGFzCiAgICAgdGhlIGltcGxl bWVudGF0aW9uIG9mIHRoZSBzdWItY29tbWFuZCB0aGF0IGlzIGNyZWF0ZWQgd2hlbgotQEAgLTE0 MzUsMTEgKzE1MTksMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVl LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0xNDk4LDExICsxNTY1LDEwIEBAIHByZXNl cnZlX29uZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCiAgCQkgICAgaHRhYl90IGNvcGllZF90eXBlcykKICB7CiAgICBpZiAoVFlQRV9PQkpGSUxF ICh2YWx1ZS0+dHlwZSkgPT0gb2JqZmlsZSkKQEAgLTI5MDE3LDcgKzEwOTA0LDcgQEAgaW5kZXgg YTQ2MmVlNC4uOTY4Y2RmNCAxMDA2NDQKICAJCQkJCQkgY29waWVkX3R5cGVzKTsKICB9CiAgCi1A QCAtMTQ1NCwxMyArMTUzNywxMyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBp bnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0xNTE3LDEzICsx NTgzLDEzIEBAIHByZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2 YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgICBjYXNlIElOVEVSTkFMVkFSX0lOVEVH RVI6CiAgICAgICAgaWYgKHZhci0+dS5pbnRlZ2VyLnR5cGUgJiYgVFlQRV9PQkpGSUxFICh2YXIt PnUuaW50ZWdlci50eXBlKSA9PSBvYmpmaWxlKQogIAl2YXItPnUuaW50ZWdlci50eXBlCkBAIC0y OTAzMyw3MCArMTA5MjAsMzMgQEAgaW5kZXggYTQ2MmVlNC4uOTY4Y2RmNCAxMDA2NDQKICAgICAg ICBicmVhazsKICAKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBAIC0yMTkyLDYgKzIy NzUsNDIgQEAgcGFja19sb25nIChnZGJfYnl0ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9O R0VTVCBudW0pCi0gfQotIAotIAotKy8qIFBhY2sgTlVNIGludG8gQlVGIHVzaW5nIGEgdGFyZ2V0 IGZvcm1hdCBvZiBUWVBFLiAgKi8KLSsKLSt2b2lkCi0rcGFja191bnNpZ25lZF9sb25nIChnZGJf Ynl0ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgVUxPTkdFU1QgbnVtKQotK3sKLSsgIGVudW0g YmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNo ICh0eXBlKSk7Ci0rICBpbnQgbGVuOwotKwotKyAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUp OwotKyAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOworQEAgLTIzODcsNyArMjQ1MywyNCBAQCB2 YWx1ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKmRl YykKKyBzdHJ1Y3QgdmFsdWUgKgorIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQorIHsK Ky0gIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlX2FyZ190bXAgPSBjaGVja190eXBlZGVmICh2YWx1 ZV90eXBlIChhcmcpKTsKKysgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlX2FyZ190bXA7CiArCi0r ICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCisrICBpZiAoVFlQRV9EWU5BTUlDICh2YWx1ZV90 eXBlIChhcmcpKSkKICsgICAgewotKyAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6Ci0rICAgIGNhc2Ug VFlQRV9DT0RFX0NIQVI6Ci0rICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06Ci0rICAgIGNhc2UgVFlQ RV9DT0RFX0ZMQUdTOgotKyAgICBjYXNlIFRZUEVfQ09ERV9CT09MOgotKyAgICBjYXNlIFRZUEVf Q09ERV9SQU5HRToKLSsgICAgY2FzZSBUWVBFX0NPREVfTUVNQkVSUFRSOgotKyAgICAgIHN0b3Jl X3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgbGVuLCBieXRlX29yZGVyLCBudW0pOwotKyAgICAgIGJy ZWFrOwotKwotKyAgICBjYXNlIFRZUEVfQ09ERV9SRUY6Ci0rICAgIGNhc2UgVFlQRV9DT0RFX1BU UjoKLSsgICAgICBzdG9yZV90eXBlZF9hZGRyZXNzIChidWYsIHR5cGUsIChDT1JFX0FERFIpIG51 bSk7Ci0rICAgICAgYnJlYWs7CisrICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFr ZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworKyAgICAgIENPUkVfQUREUiBhZGRyZXNz OwogKwotKyAgICBkZWZhdWx0OgotKyAgICAgIGVycm9yIChfKCJcCi0rVW5leHBlY3RlZCB0eXBl ICglZCkgZW5jb3VudGVyZWQgZm9yIHVuc2lnbmVkIGludGVnZXIgY29uc3RhbnQuIiksCi0rCSAg ICAgVFlQRV9DT0RFICh0eXBlKSk7CisrICAgICAgdmFsdWVfdHlwZV9hcmdfdG1wID0gdmFsdWVf dHlwZSAoYXJnKTsKKysgICAgICBhZGRyZXNzID0gdmFsdWVfcmF3X2FkZHJlc3MgKGFyZyk7Cisr ICAgICAgdmFsdWVfdHlwZV9hcmdfdG1wID0gb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHZhbHVl X3R5cGVfYXJnX3RtcCwKKysJCQkJCQkgICAgJmFkZHJlc3MpOworKyAgICAgIGlmICghIHZhbHVl X3R5cGVfYXJnX3RtcCkKKysJZXJyb3IgKF8oIkF0dGVtcHQgdG8gY29lcmNlIG5vbi12YWxpZCB2 YWx1ZS4iKSk7CisrICAgICAgYXJnID0gdmFsdWVfYXRfbGF6eSAodmFsdWVfdHlwZV9hcmdfdG1w LCBhZGRyZXNzKTsKKysgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwogKyAgICB9Ci0rfQot KwotKwotIC8qIENvbnZlcnQgQyBudW1iZXJzIGludG8gbmV3bHkgYWxsb2NhdGVkIHZhbHVlcy4g ICovCi0gCi0gc3RydWN0IHZhbHVlICoKLUBAIC0yMjA1LDYgKzIzMjQsMTkgQEAgdmFsdWVfZnJv bV9sb25nZXN0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pCi0gfQotIAorKyAgZWxz ZQorKyAgICB2YWx1ZV90eXBlX2FyZ190bXAgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChh cmcpKTsKICAKLSsvKiBDb252ZXJ0IEMgdW5zaWduZWQgbnVtYmVycyBpbnRvIG5ld2x5IGFsbG9j YXRlZCB2YWx1ZXMuICAqLwotKwotK3N0cnVjdCB2YWx1ZSAqCi0rdmFsdWVfZnJvbV91bG9uZ2Vz dCAoc3RydWN0IHR5cGUgKnR5cGUsIFVMT05HRVNUIG51bSkKLSt7Ci0rICBzdHJ1Y3QgdmFsdWUg KnZhbCA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsKLSsgIHBhY2tfdW5zaWduZWRfbG9uZyAo dmFsdWVfY29udGVudHNfcmF3ICh2YWwpLCB0eXBlLCBudW0pOwotKwotKyAgcmV0dXJuIHZhbDsK LSt9Ci0rCi0rCi0gLyogQ3JlYXRlIGEgdmFsdWUgcmVwcmVzZW50aW5nIGEgcG9pbnRlciBvZiB0 eXBlIFRZUEUgdG8gdGhlIGFkZHJlc3MKLSAgICBBRERSLiAgKi8KLSBzdHJ1Y3QgdmFsdWUgKgot QEAgLTIzNjMsNCArMjQ5NSw4IEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikp OworICAgaWYgKFRZUEVfQ09ERSAodmFsdWVfdHlwZV9hcmdfdG1wKSA9PSBUWVBFX0NPREVfUkVG KQorICAgICBhcmcgPSB2YWx1ZV9hdF9sYXp5IChUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBl X2FyZ190bXApLAorQEAgLTI0ODUsNCArMjU2OCw4IEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5p dGlhbGl6ZWQuIikpOwogICAgYWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBm dW5jdGlvbl9jb21tYW5kLCBfKCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBo ZWxwIG9uIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1 bmN0aW9uICIsIDAsICZjbWRsaXN0KTsKQEAgLTI5MTA2LDI3ICsxMDk1NiwyMSBAQCBpbmRleCBh NDYyZWU0Li45NjhjZGY0IDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAodmFs dWVfdHlwZXNfbWFya191c2VkKTsKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIv dmFsdWUuaAotaW5kZXggMWYyMDg2ZS4uZGQ1MDNhZCAxMDA2NDQKK2luZGV4IDEyY2JjMGEuLmE1 MDhiZjYgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsdWUuaAogKysrIGIvZ2RiL3ZhbHVlLmgKLUBAIC0z NDIsMTEgKzM0MiwxNiBAQCBleHRlcm4gTE9OR0VTVCB1bnBhY2tfZmllbGRfYXNfbG9uZyAoc3Ry dWN0IHR5cGUgKnR5cGUsCi0gZXh0ZXJuIHZvaWQgcGFja19sb25nIChnZGJfYnl0ZSAqYnVmLCBz dHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pOwotIAotIGV4dGVybiBzdHJ1Y3QgdmFsdWUg KnZhbHVlX2Zyb21fbG9uZ2VzdCAoc3RydWN0IHR5cGUgKnR5cGUsIExPTkdFU1QgbnVtKTsKLStl eHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX3Vsb25nZXN0IChzdHJ1Y3QgdHlwZSAqdHlw ZSwgVUxPTkdFU1QgbnVtKTsKLSBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX3BvaW50 ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7Ci0gZXh0ZXJuIHN0cnVjdCB2 YWx1ZSAqdmFsdWVfZnJvbV9kb3VibGUgKHN0cnVjdCB0eXBlICp0eXBlLCBET1VCTEVTVCBudW0p OworQEAgLTM3Miw2ICszNzIsMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9k b3VibGUgKHN0cnVjdCB0eXBlICp0eXBlLCBET1VCTEVTVCBudW0pOwogIGV4dGVybiBzdHJ1Y3Qg dmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCQkJICBj b25zdCBnZGJfYnl0ZSAqZGVjYnl0ZXMpOwogIAogK2V4dGVybiBjb25zdCBjaGFyICpvYmplY3Rf YWRkcmVzc19kYXRhX25vdF92YWxpZCAoc3RydWN0IHR5cGUgKnR5cGUpOwotK2V4dGVybiBpbnQg b2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCQkgICAgQ09S RV9BRERSICphZGRyZXNzX3JldHVybik7CisrZXh0ZXJuIHN0cnVjdCB0eXBlICpvYmplY3RfYWRk cmVzc19nZXRfZGF0YSAoc3RydWN0IHR5cGUgKnR5cGUsCisrCQkJCQkgICAgIENPUkVfQUREUiAq YWRkcmVzc19yZXR1cm4pOwogKwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZh bHVlX2F0X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgCi1AQCAt Njk0LDcgKzY5OSw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2FsbG9jYXRlX3NwYWNl X2luX2luZmVyaW9yIChpbnQpOworQEAgLTcyOSw3ICs3MzMsNyBAQCBleHRlcm4gc3RydWN0IHZh bHVlICp2YWx1ZV9hbGxvY2F0ZV9zcGFjZV9pbl9pbmZlcmlvciAoaW50KTsKICBleHRlcm4gc3Ry dWN0IHZhbHVlICp2YWx1ZV9vZl9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGNvbXBsYWlu KTsKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKHN0 cnVjdCB2YWx1ZSAqYXJyYXksCkBAIC0yOTEzNiw3ICsxMDk4MCw3IEBAIGluZGV4IDFmMjA4NmUu LmRkNTAzYWQgMTAwNjQ0CiAgLyogVXNlciBmdW5jdGlvbiBoYW5kbGVyLiAgKi8KICAKIGRpZmYg LS1naXQgYS9nZGIvdmFyb2JqLmMgYi9nZGIvdmFyb2JqLmMKLWluZGV4IGI0YjI0NjEuLjNhN2E4 ODQgMTAwNjQ0CitpbmRleCBiOWI4ZTkxLi5hODFkMjVjIDEwMDY0NAogLS0tIGEvZ2RiL3Zhcm9i ai5jCiArKysgYi9nZGIvdmFyb2JqLmMKIEBAIC0yNiw2ICsyNiw4IEBACkBAIC0yOTE0OCwzNyAr MTA5OTIsMyBAQCBpbmRleCBiNGIyNDYxLi4zYTdhODg0IDEwMDY0NAogIAogICNpbmNsdWRlICJn ZGJfYXNzZXJ0LmgiCiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLWRpZmYgLS1naXQgYS9nZGIv eGNvZmZyZWFkLmMgYi9nZGIveGNvZmZyZWFkLmMKLWluZGV4IGFjZDdiNTAuLjA5MjlhMzMgMTAw NjQ0Ci0tLS0gYS9nZGIveGNvZmZyZWFkLmMKLSsrKyBiL2dkYi94Y29mZnJlYWQuYwotQEAgLTMw MzAsNiArMzAzMCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyB4Y29mZl9zeW1fZm5zID0KLSAg IHhjb2ZmX25ld19pbml0LAkJLyogc3ltX25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBl bnRpcmUgc3ltdGFiICovCi0gICB4Y29mZl9zeW1maWxlX2luaXQsCQkvKiBzeW1faW5pdDogcmVh ZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCi0gICB4Y29mZl9pbml0aWFs X3NjYW4sCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCi0r ICBOVUxMLAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLwotICAgeGNvZmZfc3ltZmlsZV9maW5p c2gsCQkvKiBzeW1fZmluaXNoOiBmaW5pc2hlZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KLSAgIHhj b2ZmX3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6IHhsYXRlIG9mZnNldHMgZXh0LT5p bnQgZm9ybSAqLwotICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBzeW1fc2VnbWVudHM6 IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KLWRpZmYgLS1naXQgYS9nZGIveHRlbnNhLWxp bnV4LXRkZXAuYyBiL2dkYi94dGVuc2EtbGludXgtdGRlcC5jCi1pbmRleCA2NjdkOWIzLi4wZDg2 MjE5IDEwMDY0NAotLS0tIGEvZ2RiL3h0ZW5zYS1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi94dGVu c2EtbGludXgtdGRlcC5jCi1AQCAtMjIsNiArMjIsNyBAQAotIAotICNpbmNsdWRlICJzb2xpYi1z dnI0LmgiCi0gI2luY2x1ZGUgInN5bXRhYi5oIgotKyNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0g Ci0gLyogT1Mgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gb2YgZ2RiYXJjaC4gICovCi0gCi1AQCAt MzAsNiArMzEsOSBAQCB4dGVuc2FfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8g aW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gewotICAgc2V0X3NvbGliX3N2cjRfZmV0 Y2hfbGlua19tYXBfb2Zmc2V0cwotICAgICAoZ2RiYXJjaCwgc3ZyNF9pbHAzMl9mZXRjaF9saW5r X21hcF9vZmZzZXRzKTsKLSsKLSsgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyIChnZGJhcmNoLAotKwkJCQkJICBsaW51eF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7 Ci0gfQotIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJv dG90eXBlcy4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVu LnBhdGNoIGIvZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoCmluZGV4IDM3YmQw MDEuLmY0ODViMmYgMTAwNjQ0Ci0tLSBhL2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5w YXRjaAorKysgYi9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKQEAgLTEsMjYg KzEsMjAgQEAKLS0tLSBhL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCi0rKysgYi9nZGIvY29u ZmlnL2kzODYvbGludXg2NC5taAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZp Zy9pMzg2L2xpbnV4NjQubWgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgJMjAxMC0wNS0yOCAyMDo1MDozMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWcvaTM4Ni9saW51eDY0 Lm1oCTIwMTAtMDctMTMgMTk6MDI6NTQuMDAwMDAwMDAwICswMjAwCiBAQCAtMiw3ICsyLDcgQEAK ICBOQVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBcCiAgCWkzODYtbmF0Lm8g YW1kNjQtbmF0Lm8gYW1kNjQtbGludXgtbmF0Lm8gbGludXgtbmF0Lm8gXAogIAlwcm9jLXNlcnZp Y2UubyBsaW51eC10aHJlYWQtZGIubyBsaW51eC1mb3JrLm8KIC1OQVRfRklMRT0gY29uZmlnL25t LWxpbnV4LmgKICtOQVRfRklMRT0gbm0tbGludXg2NC5oCisgTkFUX0NERVBTID0gJChzcmNkaXIp L3Byb2Mtc2VydmljZS5saXN0CiAgCiAgIyBUaGUgZHluYW1pY2FsbHkgbG9hZGVkIGxpYnRocmVh ZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUKLSAjIGdkYiBleGVjdXRhYmxlLgot LS0tIGEvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgKLSsrKyBiL2dkYi9jb25maWcvaTM4Ni9u bS1saW51eC5oCi1AQCAtMjksNCArMjksNyBAQAotICNkZWZpbmUgRklMTF9GUFhSRUdTRVQKLSAj ZW5kaWYKLSAKLSsvKiBSZWQgSGF0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBnZGItNi44 LiAgKi8KLSsjZGVmaW5lIHRhcmdldF9jYW5fdXNlX2hhcmR3YXJlX3dhdGNocG9pbnQodHlwZSwg Y250LCBvdCkgMQotKwotICNlbmRpZiAvKiBubS1saW51eC5oICovCi0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvY29uZmlnL2kzODYvbm0tbGludXg2NC5oCitJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvY29uZmlnL2kzODYvbm0tbGludXg2NC5oCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvY29uZmlnL2kzODYvbm0tbGludXg2NC5oCTIwMTAtMDctMTMgMTk6MDI6Mjgu MDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDI4IEBACiArLyogTmF0aXZlIHN1cHBvcnQgZm9y IEdOVS9MaW51eCBhbWQ2NC4KICsKQEAgLTUwLDkgKzQ0LDExIEBACiArI2RlZmluZSB0YXJnZXRf Y2FuX3VzZV9oYXJkd2FyZV93YXRjaHBvaW50KHR5cGUsIGNudCwgb3QpIDEKICsKICsjZW5kaWYg LyogTk1fTElOVVg2NF9IICovCi0tLS0gYS9nZGIvdGFyZ2V0LmgKLSsrKyBiL2dkYi90YXJnZXQu aAotQEAgLTEyNTcsOCArMTI1NywxMCBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19zdHIg KHB0aWRfdCBwdGlkKTsKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuaAor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGFyZ2V0LmgJMjAx MC0wNy0xMiAyMzowNzozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi90YXJnZXQuaAkyMDEwLTA3LTEzIDE5OjAyOjI4LjAwMDAwMDAwMCArMDIwMAorQEAgLTEy OTgsOCArMTI5OCwxMCBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19zdHIgKHB0aWRfdCBw CiAgICAgYnBfaGFyZHdhcmVfYnJlYWtwb2ludC4gIENOVCBpcyB0aGUgbnVtYmVyIG9mIHN1Y2gg d2F0Y2hwb2ludHMgdXNlZCBzbyBmYXIKICAgICAoaW5jbHVkaW5nIHRoaXMgb25lPykuICBPVEhF UlRZUEUgaXMgd2hvIGtub3dzIHdoYXQuLi4gICovCiAgCkBAIC02Myw4ICs1OSwxMCBAQAogIAog ICNkZWZpbmUgdGFyZ2V0X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludChhZGRyLCBsZW4pIFwK ICAgICAgKCpjdXJyZW50X3RhcmdldC50b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQpIChh ZGRyLCBsZW4pCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dh dGNocG9pbnQtaHctYmVmb3JlLXJ1bi5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVuLmV4cAorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAor KysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50 LWh3LWJlZm9yZS1ydW4uZXhwCTIwMTAtMDctMTMgMTk6MDI6MjguMDAwMDAwMDAwICswMjAwCiBA QCAtMCwwICsxLDQwIEBACiArIyBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItYno1NjI3NjMtcHJldHR5LXByaW50 LTJkLXZlY3RvcnMtcHJlcmVxLnBhdGNoIGIvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12 ZWN0b3JzLXByZXJlcS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NjMWUx Ny4uMDAwMDAwMAotLS0gYS9nZGItYno1NjI3NjMtcHJldHR5LXByaW50LTJkLXZlY3RvcnMtcHJl cmVxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDI3ICswLDAgQEAKLWNvbW1pdCBlNWVhOGQw MjYwMTVjMmEwYzc3NzQ3ODhiNDI1OTE0ODU3ZGUxZmZiCi1BdXRob3I6IHBtdWxkb29uIDxwbXVs ZG9vbj4KLURhdGU6ICAgV2VkIEFwciAxNCAxMjowMjo0MiAyMDEwICswMDAwCi0KLSAgICAyMDEw LTA0LTE0ICBQaGlsIE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgotICAgIAotICAgIAlQ UiBweXRob24vMTEzODEKLSAgICAKLSAgICAJKiBweXRob24vcHktcHJldHR5cHJpbnQuYyAocHJl dHR5X3ByaW50X29uZV92YWx1ZSk6IFRlc3QgZm9yCi0gICAgCVB5X05vbmUuCi0gICAgCShwcmlu dF9zdHJpbmdfcmVwcik6IFRlc3QgZm9yIFB5X05vbmUuICBTZXQgZmxhZ3MgYWNjb3JkaW5nbHku Ci0gICAgCVJldHVybiB2YWx1ZSBkZXBlbmRpbmcgb24gcmV0dXJuIHR5cGUuCi0gICAgCShwcmlu dF9jaGlsZHJlbik6IFRha2UgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgZGF0YSB3YXMgcHJp bnRlZAotICAgIAliZWZvcmUgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkLiAgQWx0ZXIgb3V0cHV0 IGFjY29yZGluZ2x5LgotICAgIAkoYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyKTogQ2FwdHVyZSBy ZXR1cm4gdmFsdWUgZnJvbQotICAgIAlwcmludF9zdHJpbmdfcmVwciBhbmQgcGFzcyB0byBwcmlu dF9jaGlsZHJlbi4KLSAgICAKLSAgICAyMDEwLTA0LTE0ICBQaGlsIE11bGRvb24gIDxwbXVsZG9v bkByZWRoYXQuY29tPgotICAgIAotICAgIAkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQucHkg KE5vU3RyaW5nQ29udGFpbmVyUHJpbnRlcik6IE5ldyBwcmludGVyLgotICAgIAkqIGdkYi5weXRo b24vcHktcHJldHR5cHJpbnQuYzogQWRkIGp1c3RjaGlsZHJlbiBzdHJ1Y3QsIHR5cGVkZWZzLgot ICAgIAkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwOiBOZXcgdGVzdCBmb3IgdG9fc3Ry aW5nIHJldHVybmluZyBOb25lLgotICAgIAkqIGdkYi5weXRob24vcHktbWkuZXhwOiBOZXcgdGVz dCBmb3IgdG9fc3RyaW5nIHJldHVybmluZyBOb25lLgotICAgIAotICAgIDIwMTAtMDQtMTQgIFBo aWwgTXVsZG9vbiAgPHBtdWxkb29uQHJlZGhhdC5jb20+Ci0gICAgCi0gICAgCSogZ2RiLnRleGlu Zm8gKFByZXR0eSBQcmludGluZyk6IERvY3VtZW50IGJlaGF2aW91ciB3aGVuIHRvX3N0cmluZwot ICAgIAlyZXR1cm5zIE5vbmUuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFu Z2VMb2cKLSMjIC0xLDMgKzEsMTYgQEAKLSsyMDEwLTA0LTE0ICBQaGlsIE11bGRvb24gIDxwbXVs ZG9vbkByZWRoYXQuY29tPgotKwotKwlQUiBweXRob24vMTEzODEKLSsKLSsJKiBweXRob24vcHkt cHJldHR5cHJpbnQuYyAocHJldHR5X3ByaW50X29uZV92YWx1ZSk6IFRlc3QgZm9yCi0rCVB5X05v bmUuCi0rCShwcmludF9zdHJpbmdfcmVwcik6IFRlc3QgZm9yIFB5X05vbmUuICBTZXQgZmxhZ3Mg YWNjb3JkaW5nbHkuCi0rCVJldHVybiB2YWx1ZSBkZXBlbmRpbmcgb24gcmV0dXJuIHR5cGUuCi0r CShwcmludF9jaGlsZHJlbik6IFRha2UgYSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgZGF0YSB3 YXMgcHJpbnRlZAotKwliZWZvcmUgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkLiAgQWx0ZXIgb3V0 cHV0IGFjY29yZGluZ2x5LgotKwkoYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyKTogQ2FwdHVyZSBy ZXR1cm4gdmFsdWUgZnJvbQotKwlwcmludF9zdHJpbmdfcmVwciBhbmQgcGFzcyB0byBwcmludF9j aGlsZHJlbi4KLSsKLSAyMDEwLTA0LTEzICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9y Zz4KLSAKLSAJUFIgY29yZWZpbGVzLzExNDgxCi0jIyMgYS9nZGIvZG9jL0NoYW5nZUxvZwotIyMj IGIvZ2RiL2RvYy9DaGFuZ2VMb2cKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTAtMDQtMTQgIFBoaWwg TXVsZG9vbiAgPHBtdWxkb29uQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKFByZXR0 eSBQcmludGluZyk6IERvY3VtZW50IGJlaGF2aW91ciB3aGVuIHRvX3N0cmluZwotKwlyZXR1cm5z IE5vbmUuCi0rCi0gMjAxMC0wNC0wOSAgU3RhbiBTaGVicyAgPHN0YW5AY29kZXNvdXJjZXJ5LmNv bT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoZ2RiL21pIFRyYWNlcG9pbnQgQ29tbWFuZHMpIDwtdHJh Y2Utc3RhdHVzPjoKLUluZGV4OiBnZGItNy4xL2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA2LTMwIDAzOjIy OjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEw LTA2LTMwIDAzOjIyOjIwLjAwMDAwMDAwMCArMDIwMAotQEAgLTIwMzQ0LDYgKzIwMzQ0LDkgQEAg dGhlIHJlc3VsdGluZyB2YWx1ZS4gIEFnYWluLCB0aGlzIG1heSByZQotIHByZXR0eS1wcmludGVy LiAgUHl0aG9uIHNjYWxhcnMgKGludGVnZXJzLCBmbG9hdHMsIGFuZCBib29sZWFucykgYW5kCi0g c3RyaW5ncyBhcmUgY29udmVydGlibGUgdG8gQGNvZGV7Z2RiLlZhbHVlfTsgb3RoZXIgdHlwZXMg YXJlIG5vdC4KLSAKLStGaW5hbGx5LCBpZiB0aGlzIG1ldGhvZCByZXR1cm5zIEBjb2Rle05vbmV9 IHRoZW4gbm8gZnVydGhlciBvcGVyYXRpb25zCi0rYXJlIHBlZm9ybWVkIGluIHRoaXMgbWV0aG9k IGFuZCBub3RoaW5nIGlzIHByaW50ZWQuCi0rCi0gSWYgdGhlIHJlc3VsdCBpcyBub3Qgb25lIG9m IHRoZXNlIHR5cGVzLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgotIEBlbmQgZGVmb3AKLSAKLUlu ZGV4OiBnZGItNy4xL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjEub3JpZy9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMC0wNi0zMCAwMzoy MjowMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9weXRob24vcHktcHJldHR5cHJp bnQuYwkyMDEwLTA2LTMwIDAzOjIzOjM4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNSw5ICsxMjUs MTIgQEAgZmluZF9wcmV0dHlfcHJpbnRlciAoUHlPYmplY3QgKnZhbHVlKQotIAotIC8qIFByZXR0 eS1wcmludCBhIHNpbmdsZSB2YWx1ZSwgdmlhIHRoZSBwcmludGVyIG9iamVjdCBQUklOVEVSLgot ICAgIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nLCBhIFB5T2JqZWN0IGNvbnRhaW5p bmcgdGhlIHN0cmluZwotLSAgIGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlLCBpZiB0aGUgZnVuY3Rp b24gcmV0dXJucyBhIHZhbHVlLAotLSAgICpPVVRfVkFMVUUgaXMgc2V0IHRvIHRoZSB2YWx1ZSwg YW5kIE5VTEwgaXMgcmV0dXJuZWQuICBPbiBlcnJvciwKLS0gICAqT1VUX1ZBTFVFIGlzIHNldCB0 byBOVUxMLCBhbmQgTlVMTCBpcyByZXR1cm5lZC4gICovCi0rICAgaXMgcmV0dXJuZWQuICBJZiB0 aGUgZnVuY3Rpb24gcmV0dXJucyBQeV9OT05FIHRoYXQgbWVhbnMgdGhlIHByZXR0eQotKyAgIHBy aW50ZXIgcmV0dXJuZWQgdGhlIFB5dGhvbiBOb25lIGFzIGEgdmFsdWUuICBPdGhlcndpc2UsIGlm IHRoZQotKyAgIGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZSwgICpPVVRfVkFMVUUgaXMgc2V0IHRv IHRoZSB2YWx1ZSwgYW5kIE5VTEwKLSsgICBpcyByZXR1cm5lZC4gIE9uIGVycm9yLCAqT1VUX1ZB TFVFIGlzIHNldCB0byBOVUxMLCBhbmQgTlVMTCBpcwotKyAgIHJldHVybmVkLiAgKi8KLSsKLSBz dGF0aWMgUHlPYmplY3QgKgotIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5T2JqZWN0ICpwcmlu dGVyLCBzdHJ1Y3QgdmFsdWUgKipvdXRfdmFsdWUpCi0gewotQEAgLTE0MCw3ICsxNDMsOCBAQCBw cmV0dHlfcHJpbnRfb25lX3ZhbHVlIChQeU9iamVjdCAqcHJpbnRlCi0gICAgICAgcmVzdWx0ID0g UHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MgKHByaW50ZXIsIGdkYnB5X3RvX3N0cmluZ19jc3Qs IE5VTEwpOwotICAgICAgIGlmIChyZXN1bHQpCi0gCXsKLS0JICBpZiAoISBnZGJweV9pc19zdHJp bmcgKHJlc3VsdCkgJiYgISBnZGJweV9pc19sYXp5X3N0cmluZyAocmVzdWx0KSkKLSsJICBpZiAo ISBnZGJweV9pc19zdHJpbmcgKHJlc3VsdCkgJiYgISBnZGJweV9pc19sYXp5X3N0cmluZyAocmVz dWx0KSAgCi0rCSAgICAgICYmIHJlc3VsdCAhPSBQeV9Ob25lKQotIAkgICAgewotIAkgICAgICAq b3V0X3ZhbHVlID0gY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAocmVzdWx0KTsKLSAgCSAgICAg IGlmIChQeUVycl9PY2N1cnJlZCAoKSkKLUBAIC0xODQsOCArMTg4LDExIEBAIGdkYnB5X2dldF9k aXNwbGF5X2hpbnQgKFB5T2JqZWN0ICpwcmludGUKLSB9Ci0gCi0gLyogSGVscGVyIGZvciBhcHBs eV92YWxfcHJldHR5X3ByaW50ZXIgd2hpY2ggY2FsbHMgdG9fc3RyaW5nIGFuZAotLSAgIGZvcm1h dHMgdGhlIHJlc3VsdC4gICovCi0tc3RhdGljIHZvaWQKLSsgICBmb3JtYXRzIHRoZSByZXN1bHQu ICBJZiB0aGUgdmFsdWUgcmV0dXJuZCBpcyBQeV9Ob25lLCBub3RoaW5nIGlzCi0rICAgcHJpbnRl ZCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSAxOyBpbiBhbGwgb3RoZXIgY2FzZXMgZGF0YSBp cwotKyAgIHByaW50ZWQgYXMgZ2l2ZW4gYnkgdGhlIHByZXR0eSBwcmludGVyIGFuZCB0aGUgZnVu Y3Rpb24gcmV0dXJucyAwLgotKyovCi0rc3RhdGljIGludAotIHByaW50X3N0cmluZ19yZXByIChQ eU9iamVjdCAqcHJpbnRlciwgY29uc3QgY2hhciAqaGludCwKLSAJCSAgIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCByZWN1cnNlLAotIAkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMsCi1AQCAtMTk0LDUyICsyMDEsNTggQEAgcHJpbnRfc3RyaW5nX3JlcHIg KFB5T2JqZWN0ICpwcmludGVyLCBjbwotIHsKLSAgIHN0cnVjdCB2YWx1ZSAqcmVwbGFjZW1lbnQg PSBOVUxMOwotICAgUHlPYmplY3QgKnB5X3N0ciA9IE5VTEw7Ci0rICBpbnQgaXNfcHlfbm9uZSA9 IDA7Ci0gCi0gICBweV9zdHIgPSBwcmV0dHlfcHJpbnRfb25lX3ZhbHVlIChwcmludGVyLCAmcmVw bGFjZW1lbnQpOwotICAgaWYgKHB5X3N0cikKLSAgICAgewotLSAgICAgIGdkYl9ieXRlICpvdXRw dXQgPSBOVUxMOwotLSAgICAgIGxvbmcgbGVuZ3RoOwotLSAgICAgIHN0cnVjdCB0eXBlICp0eXBl OwotLSAgICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLS0gICAgICBQeU9iamVjdCAqc3RyaW5n ID0gTlVMTDsKLS0gICAgICBpbnQgaXNfbGF6eTsKLS0gICAgICAKLS0gICAgICBpc19sYXp5ID0g Z2RicHlfaXNfbGF6eV9zdHJpbmcgKHB5X3N0cik7Ci0tICAgICAgaWYgKGlzX2xhenkpCi0tCW91 dHB1dCA9IGdkYnB5X2V4dHJhY3RfbGF6eV9zdHJpbmcgKHB5X3N0ciwgJnR5cGUsICZsZW5ndGgs ICZlbmNvZGluZyk7Ci0rICAgICAgaWYgKHB5X3N0ciA9PSBQeV9Ob25lKQotKwlpc19weV9ub25l ID0gMTsKLSAgICAgICBlbHNlCi0gCXsKLS0JICBzdHJpbmcgPSBweXRob25fc3RyaW5nX3RvX3Rh cmdldF9weXRob25fc3RyaW5nIChweV9zdHIpOwotLQkgIGlmIChzdHJpbmcpCi0rCSAgZ2RiX2J5 dGUgKm91dHB1dCA9IE5VTEw7Ci0rCSAgbG9uZyBsZW5ndGg7Ci0rCSAgc3RydWN0IHR5cGUgKnR5 cGU7Ci0rCSAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotKwkgIFB5T2JqZWN0ICpzdHJpbmcgPSBO VUxMOwotKwkgIGludCBpc19sYXp5OwotKwotKwkgIGlzX2xhenkgPSBnZGJweV9pc19sYXp5X3N0 cmluZyAocHlfc3RyKTsKLSsJICBpZiAoaXNfbGF6eSkKLSsJICAgIG91dHB1dCA9IGdkYnB5X2V4 dHJhY3RfbGF6eV9zdHJpbmcgKHB5X3N0ciwgJnR5cGUsICZsZW5ndGgsICZlbmNvZGluZyk7Ci0r CSAgZWxzZQotIAkgICAgewotLQkgICAgICBvdXRwdXQgPSBQeVN0cmluZ19Bc1N0cmluZyAoc3Ry aW5nKTsKLS0JICAgICAgbGVuZ3RoID0gUHlTdHJpbmdfU2l6ZSAoc3RyaW5nKTsKLS0JICAgICAg dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fY2hhcjsKLSsJICAgICAgc3Ry aW5nID0gcHl0aG9uX3N0cmluZ190b190YXJnZXRfcHl0aG9uX3N0cmluZyAocHlfc3RyKTsKLSsJ ICAgICAgaWYgKHN0cmluZykKLSsJCXsKLSsJCSAgb3V0cHV0ID0gUHlTdHJpbmdfQXNTdHJpbmcg KHN0cmluZyk7Ci0rCQkgIGxlbmd0aCA9IFB5U3RyaW5nX1NpemUgKHN0cmluZyk7Ci0rCQkgIHR5 cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2NoYXI7Ci0rCQl9Ci0rCSAgICAg IGVsc2UKLSsJCWdkYnB5X3ByaW50X3N0YWNrICgpOwotKwkgICAgICAKLSsJICAgIH0KLSsJCi0r CSAgaWYgKG91dHB1dCkKLSsJICAgIHsKLSsJICAgICAgaWYgKGlzX2xhenkgfHwgKGhpbnQgJiYg IXN0cmNtcCAoaGludCwgInN0cmluZyIpKSkKLSsJCUxBX1BSSU5UX1NUUklORyAoc3RyZWFtLCB0 eXBlLCBvdXRwdXQsIGxlbmd0aCwgZW5jb2RpbmcsCi0rCQkJCSAwLCBvcHRpb25zKTsKLSsJICAg ICAgZWxzZQotKwkJZnB1dHNfZmlsdGVyZWQgKG91dHB1dCwgc3RyZWFtKTsKLSAJICAgIH0KLSAJ ICBlbHNlCi0gCSAgICBnZGJweV9wcmludF9zdGFjayAoKTsKLSAJICAKLS0JfQotLSAgICAgIAot LSAgICAgIGlmIChvdXRwdXQpCi0tCXsKLS0JICBpZiAoaXNfbGF6eSB8fCAoaGludCAmJiAhc3Ry Y21wIChoaW50LCAic3RyaW5nIikpKQotLQkgICAgTEFfUFJJTlRfU1RSSU5HIChzdHJlYW0sIHR5 cGUsIG91dHB1dCwgbGVuZ3RoLCBlbmNvZGluZywKLS0JCQkgICAgIDAsIG9wdGlvbnMpOwotKwkg IGlmIChzdHJpbmcpCi0rCSAgICBQeV9ERUNSRUYgKHN0cmluZyk7Ci0gCSAgZWxzZQotLQkgICAg ZnB1dHNfZmlsdGVyZWQgKG91dHB1dCwgc3RyZWFtKTsKLS0JfQotLSAgICAgIGVsc2UKLS0JZ2Ri cHlfcHJpbnRfc3RhY2sgKCk7Ci0tICAgICAgCi0tICAgICAgaWYgKHN0cmluZykKLS0JUHlfREVD UkVGIChzdHJpbmcpOwotLSAgICAgIGVsc2UKLS0JeGZyZWUgKG91dHB1dCk7Ci0rCSAgICB4ZnJl ZSAob3V0cHV0KTsKLSAgICAgICAKLS0gICAgICB4ZnJlZSAoZW5jb2RpbmcpOwotLSAgICAgIFB5 X0RFQ1JFRiAocHlfc3RyKTsKLSsJICB4ZnJlZSAoZW5jb2RpbmcpOwotKwkgIFB5X0RFQ1JFRiAo cHlfc3RyKTsKLSsJfQotICAgICB9Ci0gICBlbHNlIGlmIChyZXBsYWNlbWVudCkKLSAgICAgewot QEAgLTI1MCw2ICsyNjMsOCBAQCBwcmludF9zdHJpbmdfcmVwciAoUHlPYmplY3QgKnByaW50ZXIs IGNvCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7Ci0rCi0rICBy ZXR1cm4gaXNfcHlfbm9uZTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC0zMjgsMTIgKzM0Mywx NCBAQCBwdXNoX2R1bW15X3B5dGhvbl9mcmFtZSAoKQotIH0KLSAKLSAvKiBIZWxwZXIgZm9yIGFw cGx5X3ZhbF9wcmV0dHlfcHJpbnRlciB0aGF0IGZvcm1hdHMgY2hpbGRyZW4gb2YgdGhlCi0tICAg cHJpbnRlciwgaWYgYW55IGV4aXN0LiAgKi8KLSsgICBwcmludGVyLCBpZiBhbnkgZXhpc3QuICBJ ZiBpc19weV9ub25lIGlzIHRydWUsIHRoZW4gbm90aGluZyBoYXMKLSsgICBiZWVuIHByaW50ZWQg YnkgdG9fc3RyaW5nLCBhbmQgZm9ybWF0IG91dHB1dCBhY2NvcmRpbmdseS4gKi8KLSBzdGF0aWMg dm9pZAotIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QgY2hhciAqaGlu dCwKLSAJCXN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAotIAkJY29uc3Qgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi0tCQljb25zdCBzdHJ1Y3QgbGFuZ3Vh Z2VfZGVmbiAqbGFuZ3VhZ2UpCi0rCQljb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFuZ3Vh Z2UsCi0rCQlpbnQgaXNfcHlfbm9uZSkKLSB7Ci0gICBpbnQgaXNfbWFwLCBpc19hcnJheSwgZG9u ZV9mbGFnLCBwcmV0dHk7Ci0gICB1bnNpZ25lZCBpbnQgaTsKLUBAIC00MTMsNyArNDMwLDEzIEBA IHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKLSAJIDIuIEFycmF5cy4g IEFsd2F5cyBwcmludCBhICIsIi4KLSAJIDMuIE90aGVyLiAgQWx3YXlzIHByaW50IGEgIiwiLiAg Ki8KLSAgICAgICBpZiAoaSA9PSAwKQotLQlmcHV0c19maWx0ZXJlZCAoIiA9IHsiLCBzdHJlYW0p OwotKwl7Ci0rICAgICAgICAgaWYgKGlzX3B5X25vbmUpCi0rICAgICAgICAgICBmcHV0c19maWx0 ZXJlZCAoInsiLCBzdHJlYW0pOwotKyAgICAgICAgIGVsc2UKLSsgICAgICAgICAgIGZwdXRzX2Zp bHRlcmVkICgiID0geyIsIHN0cmVhbSk7Ci0rICAgICAgIH0KLSsKLSAgICAgICBlbHNlIGlmICgh IGlzX21hcCB8fCBpICUgMiA9PSAwKQotIAlmcHV0c19maWx0ZXJlZCAocHJldHR5ID8gIiwiIDog IiwgIiwgc3RyZWFtKTsKLSAKLUBAIC01MzcsNyArNTYwLDcgQEAgYXBwbHlfdmFsX3ByZXR0eV9w cmludGVyIChzdHJ1Y3QgdHlwZSAqdAotICAgY2hhciAqaGludCA9IE5VTEw7Ci0gICBzdHJ1Y3Qg Y2xlYW51cCAqY2xlYW51cHM7Ci0gICBpbnQgcmVzdWx0ID0gMDsKLS0KLSsgIGludCBpc19weV9u b25lID0gMDsKLSAgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdkYmFyY2gsIGxhbmd1 YWdlKTsKLSAKLSAgIC8qIEluc3RhbnRpYXRlIHRoZSBwcmludGVyLiAgKi8KLUBAIC01NjIsOSAr NTg1LDExIEBAIGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnQKLSAgIG1h a2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmaGludCk7Ci0gCi0gICAvKiBQcmlu dCB0aGUgc2VjdGlvbiAqLwotLSAgcHJpbnRfc3RyaW5nX3JlcHIgKHByaW50ZXIsIGhpbnQsIHN0 cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywgbGFuZ3VhZ2UsCi0tCQkgICAgIGdkYmFyY2gpOwotLSAg cHJpbnRfY2hpbGRyZW4gKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywg bGFuZ3VhZ2UpOwotKyAgaXNfcHlfbm9uZSA9IHByaW50X3N0cmluZ19yZXByIChwcmludGVyLCBo aW50LCBzdHJlYW0sIHJlY3Vyc2UsCi0rCQkJCSAgb3B0aW9ucywgbGFuZ3VhZ2UsIGdkYmFyY2gp OwotKyAgcHJpbnRfY2hpbGRyZW4gKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwgcmVjdXJzZSwgb3B0 aW9ucywgbGFuZ3VhZ2UsCi0rCQkgIGlzX3B5X25vbmUpOwotKwotICAgcmVzdWx0ID0gMTsKLSAK LSAKLUluZGV4OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1taS5leHAKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1p LmV4cAkyMDEwLTAxLTE0IDA5OjAzOjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pLmV4cAkyMDEwLTA2LTMwIDAzOjIyOjIwLjAwMDAw MDAwMCArMDIwMAotQEAgLTYxLDYgKzYxLDE2IEBAIG1pX2xpc3RfdmFyb2JqX2NoaWxkcmVuIGNv bnRhaW5lciB7Ci0gCi0gbWlfZGVsZXRlX3Zhcm9iaiBjb250YWluZXIgImRlbGV0ZSB2YXJvYmoi Ci0gCi0rbWlfY3JlYXRlX2R5bmFtaWNfdmFyb2JqIG5zY29udCBuc3R5cGUgXAotKyAgImNyZWF0 ZSBuc2NvbnQgdmFyb2JqLCBubyBwcmV0dHktcHJpbnRpbmciCi0rCi0rbWlfbGlzdF92YXJvYmpf Y2hpbGRyZW4gbnNjb250IHsKLSsgIHsgbnNjb250LmxlbiBsZW4gMCBpbnQgfQotKyAgeyBuc2Nv bnQuZWxlbWVudHMgZWxlbWVudHMgMSAiaW50IC4iIH0KLSt9ICJleGFtaW5lIG5zY29udCBjaGls ZHJlbj0wLCBubyBwcmV0dHktcHJpbnRpbmciCi0rCi0rbWlfZGVsZXRlX3Zhcm9iaiBuc2NvbnQg ImRlbGV0ZSB2YXJvYmoiCi0rCi0gbWlfZ2RiX3Rlc3QgIi1lbmFibGUtcHJldHR5LXByaW50aW5n IiAiIgotIAotIG1pX2NyZWF0ZV92YXJvYmpfY2hlY2tlZCBzdHJpbmcgc3RyaW5nXzEgXAotQEAg LTIzOSw0ICsyNDksMjkgQEAgbWlfY29udGludWVfdG9fbGluZSBcCi0gCi0gbWlfdmFyb2JqX3Vw ZGF0ZV93aXRoX3R5cGVfY2hhbmdlIGNvbnRhaW5lciBpbnQgMCAidXBkYXRlIGFmdGVyIHR5cGUg Y2hhbmdlIgotIAotKwotK21pX2NvbnRpbnVlX3RvX2xpbmUgXAotKyAgICBbZ2RiX2dldF9saW5l X251bWJlciB7YnJlYWsgdG8gaW5zcGVjdCBzdHJ1Y3QgYW5kIHVuaW9ufSAke3Rlc3RmaWxlfS5j XSBcCi0rICAgICJzdGVwIHRvIG91dGVyIGJyZWFrcG9pbnQiCi0rCi0rbWlfY3JlYXRlX2R5bmFt aWNfdmFyb2JqIG5zY29udCBuc3R5cGUgXAotKyAgImNyZWF0ZSBuc3R5cGUgdmFyb2JqIgotKwot K21pX2xpc3RfdmFyb2JqX2NoaWxkcmVuIG5zY29udCB7Ci0rICAgIHsge25zY29udC5cWzBcXX0g e1xbMFxdfSAwIGludCB9Ci0rICAgIHsge25zY29udC5cWzFcXX0ge1xbMVxdfSAwIGludCB9Ci0r fSAibGlzdCBjaGlsZHJlbiBhZnRlciBzZXR0aW5nIHVwZGF0ZSByYW5nZSIKLSsKLSttaV9nZGJf dGVzdCAiLXZhci1zZXQtdmlzdWFsaXplciBuc2NvbnQgTm9uZSIgXAotKyAgIlxcXmRvbmUiIFwK LSsgICJjbGVhciB2aXN1YWxpemVyIgotKwotK21pX2dkYl90ZXN0ICItdmFyLXVwZGF0ZSBuc2Nv bnQiIFwKLSsgICJcXF5kb25lLGNoYW5nZWxpc3Q9XFxcW1xcXF0iIFwKLSsgICJ2YXJvYmogdXBk YXRlIGFmdGVyIGNsZWFyaW5nIgotKwotK21pX2dkYl90ZXN0ICItdmFyLXNldC12aXN1YWxpemVy IG5zY29udCBnZGIuZGVmYXVsdF92aXN1YWxpemVyIiBcCi0rICAiXFxeZG9uZSIgXAotKyAgImNo b29zZSBkZWZhdWx0IHZpc3VhbGl6ZXIiCi0rCi0gcmVtb3RlX2ZpbGUgaG9zdCBkZWxldGUgJHty ZW1vdGVfcHl0aG9uX2ZpbGV9Ci1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktcHJldHR5cHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDEwLTAxLTE0IDA5OjAzOjM3LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXBy ZXR0eXByaW50LmMJMjAxMC0wNi0zMCAwMzoyMjoyMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTks NiArMTE5LDE1IEBAIHR5cGVkZWYgc3RydWN0IHN0cmluZ19yZXByCi0gCi0gLyogVGhpcyBsZXRz IHVzIGF2b2lkIG1hbGxvYy4gICovCi0gaW50IGFycmF5WzEwMF07Ci0raW50IG5hcnJheVsxMF07 Ci0rCi0rc3RydWN0IGp1c3RjaGlsZHJlbgotK3sKLSsgIGludCBsZW47Ci0rICBpbnQgKmVsZW1l bnRzOwotK307Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QganVzdGNoaWxkcmVuIG5vc3RyaW5nX3R5cGU7 Ci0gCi0gc3RydWN0IGNvbnRhaW5lcgotIHsKLUBAIC0xOTYsNyArMjA1LDkgQEAgbWFpbiAoKQot ICAgY29uc3Qgc3RydWN0IHN0cmluZ19yZXByIGNzdHJpbmcgPSB7IHsgImNvbnN0IHN0cmluZyIg fSB9OwotICAgLyogQ2xlYXJpbmcgYnkgYmVpbmcgYHN0YXRpYycgY291bGQgaW52b2tlIGFuIG90 aGVyIEdEQiBDKysgYnVnLiAgKi8KLSAgIHN0cnVjdCBudWxsc3RyIG51bGxzdHI7Ci0tCi0rICBu b3N0cmluZ190eXBlIG5zdHlwZTsKLSsgIG5zdHlwZS5lbGVtZW50cyA9IG5hcnJheTsKLSsgIG5z dHlwZS5sZW4gPSAwOwotIAotICAgaW5pdF9zcygmc3MsIDEsIDIpOwotICAgaW5pdF9zcyhzc2Er MCwgMywgNCk7Ci1AQCAtMjQ5LDUgKzI2MCw5IEBAIG1haW4gKCkKLSAgIGRvX25vdGhpbmcgKCk7 Ci0gI2VuZGlmCi0gCi0rICBuc3R5cGUuZWxlbWVudHNbMF0gPSA3OwotKyAgbnN0eXBlLmVsZW1l bnRzWzFdID0gNDI7Ci0rICBuc3R5cGUubGVuID0gMjsKLSsgIAotICAgcmV0dXJuIDA7ICAgICAg LyogYnJlYWsgdG8gaW5zcGVjdCBzdHJ1Y3QgYW5kIHVuaW9uICovCi0gfQotSW5kZXg6IGdkYi03 LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjEub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJp bnQuZXhwCTIwMTAtMDYtMzAgMDM6MjI6MDIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCTIwMTAtMDYtMzAgMDM6 MjQ6MTQuMDAwMDAwMDAwICswMjAwCi1AQCAtMTE1LDYgKzExNSw3IEBAIHByb2MgcnVuX2xhbmdf dGVzdHMge2xhbmd9IHsKLSAKLSAgICAgZ2RiX3Rlc3QgInByaW50IG51bGxzdHIiICJSdW50aW1l RXJyb3I6IEVycm9yIHJlYWRpbmcgc3RyaW5nIGZyb20gaW5mZXJpb3IuKiIKLSAKLSsgICAgZ2Ri X3Rlc3QgInByaW50IG5zdHlwZSIgIiA9IHskbmwgKi4wLiA9IDcsJG5sICouMS4gPSA0MiRubH0i Ci0gICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5XC4iCi0g Ci0gICAgIHJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICR7cmVtb3RlX3B5dGhvbl9maWxlfQotSW5k ZXg6IGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LnB5Ci09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1w cmV0dHlwcmludC5weQkyMDEwLTAxLTE0IDA5OjAzOjM3LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LnB5CTIwMTAtMDYt MzAgMDM6MjI6MjAuMDAwMDAwMDAwICswMjAwCi1AQCAtNTMsNiArNTMsMzMgQEAgY2xhc3MgQ29u dGFpbmVyUHJpbnRlcjoKLSAgICAgZGVmIGNoaWxkcmVuKHNlbGYpOgotICAgICAgICAgcmV0dXJu IHNlbGYuX2l0ZXJhdG9yKHNlbGYudmFsWydlbGVtZW50cyddLCBzZWxmLnZhbFsnbGVuJ10pCi0g Ci0rIyBUZXN0IGEgcHJpbnRlciB3aGVyZSB0b19zdHJpbmcgaXMgTm9uZQotK2NsYXNzIE5vU3Ry aW5nQ29udGFpbmVyUHJpbnRlcjoKLSsgICAgY2xhc3MgX2l0ZXJhdG9yOgotKyAgICAgICAgZGVm IF9faW5pdF9fIChzZWxmLCBwb2ludGVyLCBsZW4pOgotKyAgICAgICAgICAgIHNlbGYuc3RhcnQg PSBwb2ludGVyCi0rICAgICAgICAgICAgc2VsZi5wb2ludGVyID0gcG9pbnRlcgotKyAgICAgICAg ICAgIHNlbGYuZW5kID0gcG9pbnRlciArIGxlbgotKwotKyAgICAgICAgZGVmIF9faXRlcl9fKHNl bGYpOgotKyAgICAgICAgICAgIHJldHVybiBzZWxmCi0rCi0rICAgICAgICBkZWYgbmV4dChzZWxm KToKLSsgICAgICAgICAgICBpZiBzZWxmLnBvaW50ZXIgPT0gc2VsZi5lbmQ6Ci0rICAgICAgICAg ICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSsgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnBv aW50ZXIKLSsgICAgICAgICAgICBzZWxmLnBvaW50ZXIgPSBzZWxmLnBvaW50ZXIgKyAxCi0rICAg ICAgICAgICAgcmV0dXJuICgnWyVkXScgJSBpbnQgKHJlc3VsdCAtIHNlbGYuc3RhcnQpLCByZXN1 bHQuZGVyZWZlcmVuY2UoKSkKLSsKLSsgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6Ci0rICAg ICAgICBzZWxmLnZhbCA9IHZhbAotKwotKyAgICBkZWYgdG9fc3RyaW5nKHNlbGYpOgotKyAgICAg ICAgcmV0dXJuIE5vbmUKLSsKLSsgICAgZGVmIGNoaWxkcmVuKHNlbGYpOgotKyAgICAgICAgcmV0 dXJuIHNlbGYuX2l0ZXJhdG9yKHNlbGYudmFsWydlbGVtZW50cyddLCBzZWxmLnZhbFsnbGVuJ10p Ci0rCi0gY2xhc3MgcHBfczoKLSAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbCk6Ci0gICAgICAg ICBzZWxmLnZhbCA9IHZhbAotQEAgLTE5MCw4ICsyMTcsMTAgQEAgZGVmIHJlZ2lzdGVyX3ByZXR0 eV9wcmludGVycyAoKToKLSAgICAgIyBib3RoIHRoZSBDIGFuZCBDKysgY2FzZXMuCi0gICAgIHBy ZXR0eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUgKCdec3RydWN0IHN0cmluZ19yZXByJCcpXSA9 IHN0cmluZ19wcmludAotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxlICgnXnN0 cnVjdCBjb250YWluZXIkJyldID0gQ29udGFpbmVyUHJpbnRlcgotKyAgICBwcmV0dHlfcHJpbnRl cnNfZGljdFtyZS5jb21waWxlICgnXnN0cnVjdCBqdXN0Y2hpbGRyZW4kJyldID0gTm9TdHJpbmdD b250YWluZXJQcmludGVyCi0gICAgIHByZXR0eV9wcmludGVyc19kaWN0W3JlLmNvbXBpbGUgKCde c3RyaW5nX3JlcHIkJyldID0gc3RyaW5nX3ByaW50Ci0gICAgIHByZXR0eV9wcmludGVyc19kaWN0 W3JlLmNvbXBpbGUgKCdeY29udGFpbmVyJCcpXSA9IENvbnRhaW5lclByaW50ZXIKLSsgICAgcHJl dHR5X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSAoJ15qdXN0Y2hpbGRyZW4kJyldID0gTm9TdHJp bmdDb250YWluZXJQcmludGVyCi0gICAgIAotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5j b21waWxlICgnXnN0cnVjdCBucyQnKV0gID0gcHBfbnMKLSAgICAgcHJldHR5X3ByaW50ZXJzX2Rp Y3RbcmUuY29tcGlsZSAoJ15ucyQnKV0gID0gcHBfbnMKCmRpZmYgLS1naXQgYS9nZGItYno1NjI5 NzUtc3RkLXRlcm1pbmF0ZS1kb3VibGUtZnJlZS5wYXRjaCBiL2dkYi1iejU2Mjk3NS1zdGQtdGVy bWluYXRlLWRvdWJsZS1mcmVlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh NTRjNTUwLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU2Mjk3NS1zdGQtdGVybWluYXRlLWRvdWJsZS1m cmVlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAyL21zZzAwNjI1Lmh0bWwKLVN1YmplY3Q6IFJG QzogZml4IGJ1ZyB3aXRoIHN0ZDo6dGVybWluYXRlIGhhbmRsZXIKLQotSSB3b3VsZCBhcHByZWNp YXRlIGNvbW1lbnRzIG9uIHRoaXMgcGF0Y2guCi0KLVRoaXMgY29tZXMgZnJvbSBhbiBhdXRvbWF0 aWNhbGx5LXJlcG9ydGVkIGJ1ZyBpbiB0aGUgUmVkIEhhdCBidWd6aWxsYToKLQotICAgIGh0dHBz Oi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTYyOTc1Ci0KLWNhbGxfZnVu Y3Rpb25fYnlfaGFuZCBpbnN0YWxscyBhIG1vbWVudGFyeSBicmVha3BvaW50IG9uIHN0ZDo6dGVy bWluYXRlLAotYW5kIHRoZW4gZGVsZXRlcyBpdCBsYXRlci4gIEhvd2V2ZXIsIHRoaXMgY2FuIGNh dXNlIGEgZG91YmxlIGRlbGV0aW9uIG9mCi10aGUgYnJlYWtwb2ludC4gIEluIHRoZSBidWcsIHRo ZSBjYWxsZWQgZnVuY3Rpb24gaXMgZGxvcGVuLCB3aGljaCBjYXVzZXMKLWdkYiB0byBlbnRlciBz b2xpYl9hZGQsIHdoaWNoIGNhbGxzIGJyZWFrcG9pbnRfcmVfc2V0LCBkZWxldGluZyB0aGUKLW1v bWVudGFyeSBicmVha3BvaW50LgotCi1UaGlzIGZpeCB3b3JrcyBieSBjcmVhdGluZyB0aGUgbW9t ZW50YXJ5IGJyZWFrcG9pbnQgd2l0aCBhbiBpbnRlcm5hbAotYnJlYWtwb2ludCBudW1iZXIsIGFu ZCB0aGVuIHRyeWluZyB0byBkZWxldGUgdGhlIGJyZWFrcG9pbnQgYnkgbnVtYmVyLgotCi1UaGlz IGJ1ZyBkb2VzIG5vdCBhbHdheXMgbWFuaWZlc3QgaW4gYSBjcmFzaC4gIEluIGZhY3QsIEkgY291 bGRuJ3QgbWFrZQotaXQgY3Jhc2ggaGVyZSwgYnV0IEkgY291bGQgb2JzZXJ2ZSB0aGUgcHJvYmxl bSB1bmRlciB2YWxncmluZC4KLQotQnVpbHQgYW5kIHJlZ3Rlc3RlZCBvbiB4ODYtNjQgKGNvbXBp bGUgZmFybSkuICBJIGFsc28gbWFudWFsbHkgdmVyaWZpZWQKLWl0IHVzaW5nIHZhbGdyaW5kLgot Ci1JIHRoaW5rIHRoaXMgcGF0Y2ggaXMgbWlsZGx5IHVnbHksIGR1ZSB0byB0aGUgaW50cm9kdWN0 aW9uIG9mCi1zZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGNfd2l0aF9udW1iZXIuICBIb3dl dmVyLCBpbiB0aGUgYWJzZW5jZSBvZgotY29tbWVudHMsIEkgcGxhbiB0byBjaGVjayBpdCBpbiBh ZnRlciBhIHJlYXNvbmFibGUgd2FpdGluZyBwZXJpb2QuCi0KLVRvbQotCi0yMDEwLTAyLTI1ICBU b20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0KLQkqIGluZmNhbGwuYyAoZG9fZGVsZXRl X2JyZWFrcG9pbnRfYnlfbnVtYmVyKTogTmV3IGZ1bmN0aW9uLgotCShjYWxsX2Z1bmN0aW9uX2J5 X2hhbmQpOiBSZWZlciB0byBtb21lbnRhcnkgYnJlYWtwb2ludCBieSBudW1iZXIuCi0JKiBicmVh a3BvaW50LmggKHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wY193aXRoX251bWJlcik6Ci0J RGVjbGFyZS4KLQkqIGJyZWFrcG9pbnQuYyAoc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3Bj X3dpdGhfbnVtYmVyKTogTmV3Ci0JZnVuY3Rpb24uCi0KLUluZGV4OiBnZGItNy4wLjkwLjIwMTAw MzEyL2dkYi9icmVha3BvaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjkwLjIwMTAwMzEy Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAzLTEyIDE0OjU0OjI2LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjAuOTAuMjAxMDAzMTIvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLTAzLTEyIDE0 OjU0OjUzLjAwMDAwMDAwMCArMDEwMAotQEAgLTYxMTUsNiArNjExNSwyMCBAQCBzZXRfbW9tZW50 YXJ5X2JyZWFrcG9pbnRfYXRfcGMgKHN0cnVjdCBnCi0gCi0gICByZXR1cm4gc2V0X21vbWVudGFy eV9icmVha3BvaW50IChnZGJhcmNoLCBzYWwsIG51bGxfZnJhbWVfaWQsIHR5cGUpOwotIH0KLSsK LSsvKiBMaWtlIHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYywgYnV0IGVuc3VyZSB0aGF0 IHRoZSBuZXcKLSsgICBicmVha3BvaW50IGhhcyBhIG51bWJlci4gICovCi0rCi0rc3RydWN0IGJy ZWFrcG9pbnQgKgotK3NldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wY193aXRoX251bWJlciAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCQkgICAgQ09SRV9BRERSIHBjLAotKwkJCQkJ ICAgIGVudW0gYnB0eXBlIHR5cGUpCi0rewotKyAgc3RydWN0IGJyZWFrcG9pbnQgKnJlc3VsdCA9 IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2RiYXJjaCwgcGMsCi0rCQkJCQkJCSAg ICAgIHR5cGUpOwotKyAgcmVzdWx0LT5udW1iZXIgPSBpbnRlcm5hbF9icmVha3BvaW50X251bWJl ci0tOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0gDAotIAotIC8qIFRlbGwgdGhlIHVzZXIgd2Ug aGF2ZSBqdXN0IHNldCBhIGJyZWFrcG9pbnQgQi4gICovCi1JbmRleDogZ2RiLTcuMC45MC4yMDEw MDMxMi9nZGIvYnJlYWtwb2ludC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC45MC4yMDEwMDMx Mi5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMC0wMy0xMiAxNDo1NDoyNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzEyL2dkYi9icmVha3BvaW50LmgJMjAxMC0wMy0xMiAx NDo1NDo1My4wMDAwMDAwMDAgKzAxMDAKLUBAIC03NzQsNiArNzc0LDkgQEAgZXh0ZXJuIHN0cnVj dCBicmVha3BvaW50ICpzZXRfbW9tZW50YXJ5XwotIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2ludCAq c2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjCi0gICAoc3RydWN0IGdkYmFyY2ggKiwgQ09S RV9BRERSIHBjLCBlbnVtIGJwdHlwZSB0eXBlKTsKLSAKLStleHRlcm4gc3RydWN0IGJyZWFrcG9p bnQgKnNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wY193aXRoX251bWJlcgotKyAgKHN0cnVj dCBnZGJhcmNoICosIENPUkVfQUREUiBwYywgZW51bSBicHR5cGUgdHlwZSk7Ci0rCi0gZXh0ZXJu IHN0cnVjdCBicmVha3BvaW50ICpjbG9uZV9tb21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJy ZWFrcG9pbnQgKmJwa3QpOwotIAotIGV4dGVybiB2b2lkIHNldF9pZ25vcmVfY291bnQgKGludCwg aW50LCBpbnQpOwotSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMTIvZ2RiL2luZmNhbGwuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMTIub3JpZy9nZGIvaW5mY2FsbC5jCTIwMTAt MDMtMTIgMTQ6NTQ6MjYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC45MC4yMDEwMDMxMi9n ZGIvaW5mY2FsbC5jCTIwMTAtMDMtMTIgMTQ6NTU6MTkuMDAwMDAwMDAwICswMTAwCi1AQCAtNDEw LDYgKzQxMCwxOCBAQCBydW5faW5mZXJpb3JfY2FsbCAoc3RydWN0IHRocmVhZF9pbmZvICpjCi0g ICByZXR1cm4gZTsKLSB9Ci0gCi0rLyogQSBjbGVhbnVwIGZ1bmN0aW9uIHRoYXQgZGVsZXRlcyBh IGJyZWFrcG9pbnQsIGlmIGl0IHN0aWxsIGV4aXN0cywKLSsgICBnaXZlbiB0aGUgYnJlYWtwb2lu dCdzIG51bWJlci4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkb19kZWxldGVfYnJlYWtwb2ludF9i eV9udW1iZXIgKHZvaWQgKmFyZykKLSt7Ci0rICBpbnQgKm51bSA9IGFyZzsKLSsgIHN0cnVjdCBi cmVha3BvaW50ICpicCA9IGdldF9icmVha3BvaW50ICgqbnVtKTsKLSsgIGlmIChicCkKLSsgICAg ZGVsZXRlX2JyZWFrcG9pbnQgKGJwKTsKLSt9Ci0rCi0gLyogQWxsIHRoaXMgc3R1ZmYgd2l0aCBh IGR1bW15IGZyYW1lIG1heSBzZWVtIHVubmVjZXNzYXJpbHkgY29tcGxpY2F0ZWQKLSAgICAod2h5 IG5vdCBqdXN0IHNhdmUgcmVnaXN0ZXJzIGluIEdEQj8pLiAgVGhlIHB1cnBvc2Ugb2YgcHVzaGlu ZyBhIGR1bW15Ci0gICAgZnJhbWUgd2hpY2ggbG9va3MganVzdCBsaWtlIGEgcmVhbCBmcmFtZSBp cyBzbyB0aGF0IGlmIHlvdSBjYWxsIGEKLUBAIC00NDcsNyArNDU5LDggQEAgY2FsbF9mdW5jdGlv bl9ieV9oYW5kIChzdHJ1Y3QgdmFsdWUgKmZ1bgotICAgc3RydWN0IGNsZWFudXAgKmFyZ3NfY2xl YW51cDsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKLSAgIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoOwotLSAgc3RydWN0IGJyZWFrcG9pbnQgKnRlcm1pbmF0ZV9icCA9IE5VTEw7Ci0rICBp bnQgdGVybWluYXRlX2JwX251bSA9IDA7Ci0rICBDT1JFX0FERFIgdGVybWluYXRlX2JwX2FkZHIg PSAwOwotICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICp0bTsKLSAgIHN0cnVjdCBjbGVhbnVwICp0 ZXJtaW5hdGVfYnBfY2xlYW51cCA9IE5VTEw7Ci0gICBwdGlkX3QgY2FsbF90aHJlYWRfcHRpZDsK LUBAIC03NjUsOCArNzc4LDEzIEBAIGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoc3RydWN0IHZhbHVl ICpmdW4KLSAgICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICp0bSA9IGxvb2t1cF9taW5pbWFs X3N5bWJvbCAgKCJzdGQ6OnRlcm1pbmF0ZSgpIiwKLSAJCQkJCQkJICAgTlVMTCwgTlVMTCk7Ci0g ICAgICAgIGlmICh0bSAhPSBOVUxMKQotLQkgICB0ZXJtaW5hdGVfYnAgPSBzZXRfbW9tZW50YXJ5 X2JyZWFrcG9pbnRfYXRfcGMKLSsJIHsKLSsJICAgc3RydWN0IGJyZWFrcG9pbnQgKmJwOwotKwkg ICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wY193aXRoX251bWJlcgotIAkgICAg IChnZGJhcmNoLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAodG0pLCAgYnBfYnJlYWtwb2ludCk7Ci0r CSAgIHRlcm1pbmF0ZV9icF9udW0gPSBicC0+bnVtYmVyOwotKwkgICB0ZXJtaW5hdGVfYnBfYWRk ciA9IGJwLT5sb2MtPmFkZHJlc3M7Ci0rCSB9Ci0gICAgICB9Ci0gCi0gICAvKiBFdmVyeXRoaW5n J3MgcmVhZHksIHB1c2ggYWxsIHRoZSBpbmZvIG5lZWRlZCB0byByZXN0b3JlIHRoZQotQEAgLTc4 MCw4ICs3OTgsOSBAQCBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1ZSAqZnVuCi0g ICBkaXNjYXJkX2NsZWFudXBzIChpbmZfc3RhdHVzX2NsZWFudXApOwotIAotICAgLyogUmVnaXN0 ZXIgYSBjbGVhbi11cCBmb3IgdW53aW5kX29uX3Rlcm1pbmF0aW5nX2V4Y2VwdGlvbl9icmVha3Bv aW50LiAgKi8KLS0gIGlmICh0ZXJtaW5hdGVfYnApCi0tICAgIHRlcm1pbmF0ZV9icF9jbGVhbnVw ID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50ICh0ZXJtaW5hdGVfYnApOwotKyAgaWYg KHRlcm1pbmF0ZV9icF9udW0gIT0gMCkKLSsgICAgdGVybWluYXRlX2JwX2NsZWFudXAgPSBtYWtl X2NsZWFudXAgKGRvX2RlbGV0ZV9icmVha3BvaW50X2J5X251bWJlciwKLSsJCQkJCSAmdGVybWlu YXRlX2JwX251bSk7Ci0gCi0gICAvKiAtIFNOSVAgLSBTTklQIC0gU05JUCAtIFNOSVAgLSBTTklQ IC0gU05JUCAtIFNOSVAgLSBTTklQIC0gU05JUCAtCi0gICAgICBJZiB5b3UncmUgbG9va2luZyB0 byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIGR1bW15LWZyYW1lcywgdGhlbgotQEAgLTk0Nyw5ICs5 NjYsOSBAQCBXaGVuIHRoZSBmdW5jdGlvbiBpcyBkb25lIGV4ZWN1dGluZywgR0RCCi0gCQkgaW4g YW4gaW5mZXJpb3IgZnVuY3Rpb24gY2FsbC4gUmV3aW5kLCBhbmQgd2FybiB0aGUKLSAJCSB1c2Vy LiAgKi8KLSAKLS0JICAgICAgaWYgKHRlcm1pbmF0ZV9icCAhPSBOVUxMCi0rCSAgICAgIGlmICh0 ZXJtaW5hdGVfYnBfbnVtICE9IDAKLSAJCSAgJiYgKGluZmVyaW9yX3RocmVhZCAoKS0+c3RvcF9i cHN0YXQtPmJyZWFrcG9pbnRfYXQtPmFkZHJlc3MKLS0JCSAgICAgID09IHRlcm1pbmF0ZV9icC0+ bG9jLT5hZGRyZXNzKSkKLSsJCSAgICAgID09IHRlcm1pbmF0ZV9icF9hZGRyKSkKLSAJCXsKLSAJ CSAgLyogV2UgbXVzdCBnZXQgYmFjayB0byB0aGUgZnJhbWUgd2Ugd2VyZSBiZWZvcmUgdGhlCi0g CQkgICAgIGR1bW15IGNhbGwuICAqLwotQEAgLTk5OCw3ICsxMDE3LDcgQEAgV2hlbiB0aGUgZnVu Y3Rpb24gaXMgZG9uZSBleGVjdXRpbmcsIEdEQgotIAotICAgLyogSWYgd2UgZ2V0IGhlcmUgYW5k IHRoZSBzdGQ6OnRlcm1pbmF0ZSgpIGJyZWFrcG9pbnQgaGFzIGJlZW4gc2V0LAotICAgICAgaXQg aGFzIHRvIGJlIGNsZWFuZWQgbWFudWFsbHkuICAqLwotLSAgaWYgKHRlcm1pbmF0ZV9icCkKLSsg IGlmICh0ZXJtaW5hdGVfYnBfbnVtICE9IDApCi0gICAgIGRvX2NsZWFudXBzICh0ZXJtaW5hdGVf YnBfY2xlYW51cCk7Ci0gCi0gICAvKiBJZiB3ZSBnZXQgaGVyZSB0aGUgY2FsbGVkIEZVTkNUSU9O IHJhbiB0byBjb21wbGV0aW9uLAoKZGlmZiAtLWdpdCBhL2dkYi1iejU3MDYzNS1wcmV0dHlwcmlu dC1kb2MxLnBhdGNoIGIvZ2RiLWJ6NTcwNjM1LXByZXR0eXByaW50LWRvYzEucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOTEwZjQuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTcw NjM1LXByZXR0eXByaW50LWRvYzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBA Ci1SRkE6IHVwZGF0ZSBgcHJpbnQnIGRvY3MKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDEwLTAzL21zZzAwMjM2Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTAtMDMvbXNnMDAwNDguaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9n CTIwMTAvMDMvMDEgMTc6MTk6MjIJMS4xMDE3Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIw MTAvMDMvMDUgMjA6MDE6MjEJMS4xMDE4Ci0jIyAtMSwzICsxLDggQEAKLSsyMDEwLTAzLTA1ICBU b20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKERhdGEp OiBMaW5rIHRvIHByZXR0eS1wcmludGluZy4KLSsJKE91dHB1dCBGb3JtYXRzKTogTGlrZXdpc2Uu ICBDb3JyZWN0IHRleHQuCi0rCi0gMjAxMC0wMy0wMSAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5A Y29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoVHlwZXMpOiBEZXNjcmliZSA8 c3RydWN0PiBhbmQgPGZsYWdzPi4KLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLzAz LzAxIDE3OjE5OjIyCTEuNjc2Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC8wMy8w NSAyMDowMToyMQkxLjY3NwotQEAgLTY2NjEsNyArNjY2MSw4IEBACi0gY29tbWFuZCAoYWJicmV2 aWF0ZWQgQGNvZGV7cH0pLCBvciBpdHMgc3lub255bSBAY29kZXtpbnNwZWN0fS4gIEl0Ci0gZXZh bHVhdGVzIGFuZCBwcmludHMgdGhlIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24gb2YgdGhlIGxhbmd1 YWdlIHlvdXIKLSBwcm9ncmFtIGlzIHdyaXR0ZW4gaW4gKEBweHJlZntMYW5ndWFnZXMsICxVc2lu ZyBAdmFsdWV7R0RCTn0gd2l0aAotLURpZmZlcmVudCBMYW5ndWFnZXN9KS4KLStEaWZmZXJlbnQg TGFuZ3VhZ2VzfSkuICBJdCBtYXkgYWxzbyBwcmludCB0aGUgZXhwcmVzc2lvbiB1c2luZyBhCi0r UHl0aG9uLWJhc2VkIHByZXR0eS1wcmludGVyIChAcHhyZWZ7UHJldHR5IFByaW50aW5nfSkuCi0g Ci0gQHRhYmxlIEBjb2RlCi0gQGl0ZW0gcHJpbnQgQHZhcntleHByfQotQEAgLTcxNTksOCArNzE2 MCwxMCBAQAotIEBpdGVtIHIKLSBAY2luZGV4IHJhdyBwcmludGluZwotIFByaW50IHVzaW5nIHRo ZSBAc2FtcHtyYXd9IGZvcm1hdHRpbmcuICBCeSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0gd2lsbAot LXVzZSBhIHR5cGUtc3BlY2lmaWMgcHJldHR5LXByaW50ZXIuICBUaGUgQHNhbXB7cn0gZm9ybWF0 IGJ5cGFzc2VzIGFueQotLXByZXR0eS1wcmludGVyIHdoaWNoIG1pZ2h0IGV4aXN0IGZvciB0aGUg dmFsdWUncyB0eXBlLgotK3VzZSBhIFB5dGhvbi1iYXNlZCBwcmV0dHktcHJpbnRlciwgaWYgb25l IGlzIGF2YWlsYWJsZSAoQHB4cmVme1ByZXR0eQotK1ByaW50aW5nfSkuICBUaGlzIHR5cGljYWxs eSByZXN1bHRzIGluIGEgaGlnaGVyLWxldmVsIGRpc3BsYXkgb2YgdGhlCi0rdmFsdWUncyBjb250 ZW50cy4gIFRoZSBAc2FtcHtyfSBmb3JtYXQgYnlwYXNzZXMgYW55IFB5dGhvbgotK3ByZXR0eS1w cmludGVyIHdoaWNoIG1pZ2h0IGV4aXN0LgotIEBlbmQgdGFibGUKLSAKLSBGb3IgZXhhbXBsZSwg dG8gcHJpbnQgdGhlIHByb2dyYW0gY291bnRlciBpbiBoZXggKEBweHJlZntSZWdpc3RlcnN9KSwg dHlwZQoKZGlmZiAtLWdpdCBhL2dkYi1iejU3MDYzNS1wcmV0dHlwcmludC1kb2MyLnBhdGNoIGIv Z2RiLWJ6NTcwNjM1LXByZXR0eXByaW50LWRvYzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGFhNzZmZTEuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTcwNjM1LXByZXR0eXByaW50 LWRvYzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotUmU6IFtwYXRjaF0g ZG9jLXB5dGhvbjogUHJldHR5IFByaW50aW5nIHNwbGl0IHVzZXIgLyBkZXZlbG9wZXIKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA0L21zZzAwNzU3Lmh0bWwKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDQvbXNnMDAyMjEuaHRtbAotCi1b IEJhY2twb3J0ZWQgZm9yIEZlZG9yYS4gIF0KLQotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwky MDEwLzA0LzIyIDA0OjA5OjI1CTEuMTA1MwotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEw LzA0LzIyIDE2OjMyOjQzCTEuMTA1NAotIyMgLTEsMyArMSwxNCBAQAotKzIwMTAtMDQtMjIgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIudGV4 aW5mbyAoRGF0YSk6IE5ldyBAbWVudSByZWZlcmVuY2UgdG8gUHJldHR5IFByaW50aW5nLgotKwko UHl0aG9uIEFQSSk6IENoYW5nZSB0aGUgcmVmZXJlbmNlIHRvIFByZXR0eSBQcmludGluZyBBUEku Ci0rCShQcmV0dHkgUHJpbnRpbmcpOiBNb3ZlIHRoZSB1c2VyIHBhcnQgdW5kZXIgdGhlIERhdGEg bm9kZS4gIFJlZm9ybWF0Ci0rCXRoZSBzYW1wbGUgb3V0cHV0IHRvIDcyIGNvbHVtbnMuICBDcmVh dGUgYSBuZXcgcmVmZXJlbmNlIHRvIFByZXR0eQotKwlQcmludGluZyBBUEkuICBSZW5hbWUgdGhl IEFQSSBwYXJ0IC4uLgotKwkoUHJldHR5IFByaW50aW5nIEFQSSk6IFRvIGEgbmV3IG5vZGUgbmFt ZS4KLSsJKFNlbGVjdGluZyBQcmV0dHktUHJpbnRlcnMsIFByb2dzcGFjZXMgSW4gUHl0aG9uLCBP YmpmaWxlcyBJbiBQeXRob24pCi0rCShHREIvTUkgVmFyaWFibGUgT2JqZWN0cyk6IENoYW5nZSBy ZWZlcmVuY2VzIHRvIFByZXR0eSBQcmludGluZyBBUEkuCi0rCi0gMjAxMC0wNC0yMSAgU3RhbiBT aGVicyAgPHN0YW5AY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoVHJhY2Vw b2ludCBBY3Rpb25zKTogTWVudGlvbiBzeW5vbnlteSBvZiBhY3Rpb25zCi0tLS0gZ2RiLTcuMS9n ZGIvZG9jL2dkYi50ZXhpbmZvLm9yaWcJMjAxMC0wNC0yMiAxOTowODozMC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4xL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNC0yMiAxOToxMDo0MS4w MDAwMDAwMDAgKzAyMDAKLUBAIC02NzI3LDYgKzY3MjcsNyBAQCBUYWJsZX0uCi0gKiBNZW1vcnk6 OiAgICAgICAgICAgICAgICAgICAgICBFeGFtaW5pbmcgbWVtb3J5Ci0gKiBBdXRvIERpc3BsYXk6 OiAgICAgICAgICAgICAgICBBdXRvbWF0aWMgZGlzcGxheQotICogUHJpbnQgU2V0dGluZ3M6OiAg ICAgICAgICAgICAgUHJpbnQgc2V0dGluZ3MKLSsqIFByZXR0eSBQcmludGluZzo6ICAgICAgICAg ICAgIFB5dGhvbiBwcmV0dHkgcHJpbnRpbmcKLSAqIFZhbHVlIEhpc3Rvcnk6OiAgICAgICAgICAg ICAgIFZhbHVlIGhpc3RvcnkKLSAqIENvbnZlbmllbmNlIFZhcnM6OiAgICAgICAgICAgIENvbnZl bmllbmNlIHZhcmlhYmxlcwotICogUmVnaXN0ZXJzOjogICAgICAgICAgICAgICAgICAgUmVnaXN0 ZXJzCi1AQCAtNzg5Nyw2ICs3ODk4LDQyIEBAIERvIG5vdCBwcmV0dHkgcHJpbnQgQ0B0eysrfSB2 aXJ0dWFsIGZ1bmMKLSBTaG93IHdoZXRoZXIgQ0B0eysrfSB2aXJ0dWFsIGZ1bmN0aW9uIHRhYmxl cyBhcmUgcHJldHR5IHByaW50ZWQsIG9yIG5vdC4KLSBAZW5kIHRhYmxlCi0gCi0rQG5vZGUgUHJl dHR5IFByaW50aW5nCi0rQHNlY3Rpb24gUHJldHR5IFByaW50aW5nCi0rCi0rQHZhbHVle0dEQk59 IHByb3ZpZGVzIGEgbWVjaGFuaXNtIHRvIGFsbG93IHByZXR0eS1wcmludGluZyBvZiB2YWx1ZXMg dXNpbmcKLStQeXRob24gY29kZS4gIEl0IGdyZWF0bHkgc2ltcGxpZmllcyB0aGUgZGlzcGxheSBv ZiBjb21wbGV4IG9iamVjdHMuICBUaGlzCi0rbWVjaGFuaXNtIHdvcmtzIGZvciBib3RoIE1JIGFu ZCB0aGUgQ0xJLgotKwotK0ZvciBleGFtcGxlLCBoZXJlIGlzIGhvdyBhIENAdHsrK30gQGNvZGV7 c3RkOjpzdHJpbmd9IGxvb2tzIHdpdGhvdXQgYQotK3ByZXR0eS1wcmludGVyOgotKwotK0BzbWFs bGV4YW1wbGUKLSsoQHZhbHVle0dEQlB9KSBwcmludCBzCi0rJDEgPSBAewotKyAgc3RhdGljIG5w b3MgPSA0Mjk0OTY3Mjk1LCAKLSsgIF9NX2RhdGFwbHVzID0gQHsKLSsgICAgPHN0ZDo6YWxsb2Nh dG9yPGNoYXI+PiA9IEB7Ci0rICAgICAgPF9fZ251X2N4eDo6bmV3X2FsbG9jYXRvcjxjaGFyPj4g PSBAewotKyAgICAgICAgPE5vIGRhdGEgZmllbGRzPkB9LCA8Tm8gZGF0YSBmaWVsZHM+Ci0rICAg ICAgQH0sCi0rICAgIG1lbWJlcnMgb2Ygc3RkOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFy X3RyYWl0czxjaGFyPiwKLSsgICAgICBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+OjpfQWxsb2NfaGlk ZXI6Ci0rICAgIF9NX3AgPSAweDgwNGEwMTQgImFiY2QiCi0rICBAfQotK0B9Ci0rQGVuZCBzbWFs bGV4YW1wbGUKLSsKLStXaXRoIGEgcHJldHR5LXByaW50ZXIgZm9yIEBjb2Rle3N0ZDo6c3RyaW5n fSBvbmx5IHRoZSBjb250ZW50cyBhcmUgcHJpbnRlZDoKLSsKLStAc21hbGxleGFtcGxlCi0rKEB2 YWx1ZXtHREJQfSkgcHJpbnQgcwotKyQyID0gImFiY2QiCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsK LStGb3IgaW1wbGVtZW50aW5nIHByZXR0eSBwcmludGVycyBmb3IgbmV3IHR5cGVzIHlvdSBzaG91 bGQgcmVhZCB0aGUgUHl0aG9uIEFQSQotK2RldGFpbHMgKEBweHJlZntQcmV0dHkgUHJpbnRpbmcg QVBJfSkuCi0rCi0gQG5vZGUgVmFsdWUgSGlzdG9yeQotIEBzZWN0aW9uIFZhbHVlIEhpc3RvcnkK LSAKLUBAIC0xOTYwOCw4ICsxOTY0NSw4IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5 Ym9hcmRJbnRlcnIKLSAqIEV4Y2VwdGlvbiBIYW5kbGluZzo6Ci0gKiBBdXRvLWxvYWRpbmc6OiAg ICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgUHl0aG9uIGNvZGUuCi0gKiBWYWx1 ZXMgRnJvbSBJbmZlcmlvcjo6CVB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuCi0tKiBU eXBlcyBJbiBQeXRob246OgkJUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHR5cGVzLgotLSogUHJl dHR5IFByaW50aW5nOjoJCVByZXR0eS1wcmludGluZyB2YWx1ZXMuCi0rKiBUeXBlcyBJbiBQeXRo b246OiAgICAgICAgICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgdHlwZXMuCi0rKiBQcmV0 dHkgUHJpbnRpbmcgQVBJOjogICAgICAgICBQcmV0dHktcHJpbnRpbmcgdmFsdWVzLgotICogU2Vs ZWN0aW5nIFByZXR0eS1QcmludGVyczo6ICAgSG93IEdEQiBjaG9vc2VzIGEgcHJldHR5LXByaW50 ZXIuCi0gKiBJbmZlcmlvcnMgSW4gUHl0aG9uOjoJCVB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiBp bmZlcmlvcnMgKHByb2Nlc3NlcykKLSAqIFRocmVhZHMgSW4gUHl0aG9uOjogICAgICAgICAgIEFj Y2Vzc2luZyBpbmZlcmlvciB0aHJlYWRzIGZyb20gUHl0aG9uLgotQEAgLTIwMjQxLDM3ICsyMDI3 OCwxMCBAQCBBIGZ1bmN0aW9uIGludGVybmFsIHRvIEB2YWx1ZXtHREJOfS4gIFRoCi0gY29udmVu aWVuY2UgZnVuY3Rpb25zLgotIEBlbmQgdGFibGUKLSAKLS1Abm9kZSBQcmV0dHkgUHJpbnRpbmcK LS1Ac3Vic3Vic2VjdGlvbiBQcmV0dHkgUHJpbnRpbmcKLS0KLS1AdmFsdWV7R0RCTn0gcHJvdmlk ZXMgYSBtZWNoYW5pc20gdG8gYWxsb3cgcHJldHR5LXByaW50aW5nIG9mIHZhbHVlcwotLXVzaW5n IFB5dGhvbiBjb2RlLiAgVGhlIHByZXR0eS1wcmludGVyIEFQSSBhbGxvd3MgYXBwbGljYXRpb24t c3BlY2lmaWMKLS1jb2RlIHRvIGdyZWF0bHkgc2ltcGxpZnkgdGhlIGRpc3BsYXkgb2YgY29tcGxl eCBvYmplY3RzLiAgVGhpcwotLW1lY2hhbmlzbSB3b3JrcyBmb3IgYm90aCBNSSBhbmQgdGhlIENM SS4KLS0KLS1Gb3IgZXhhbXBsZSwgaGVyZSBpcyBob3cgYSBDQHR7Kyt9IEBjb2Rle3N0ZDo6c3Ry aW5nfSBsb29rcyB3aXRob3V0IGEKLS1wcmV0dHktcHJpbnRlcjoKLStAbm9kZSBQcmV0dHkgUHJp bnRpbmcgQVBJCi0rQHN1YnN1YnNlY3Rpb24gUHJldHR5IFByaW50aW5nIEFQSQotIAotLUBzbWFs bGV4YW1wbGUKLS0oQHZhbHVle0dEQlB9KSBwcmludCBzCi0tJDEgPSBAewotLSAgc3RhdGljIG5w b3MgPSA0Mjk0OTY3Mjk1LCAKLS0gIF9NX2RhdGFwbHVzID0gQHsKLS0gICAgPHN0ZDo6YWxsb2Nh dG9yPGNoYXI+PiA9IEB7Ci0tICAgICAgPF9fZ251X2N4eDo6bmV3X2FsbG9jYXRvcjxjaGFyPj4g PSBAezxObyBkYXRhIGZpZWxkcz5AfSwgPE5vIGRhdGEgZmllbGRzPkB9LCAKLS0gICAgbWVtYmVy cyBvZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6 OmFsbG9jYXRvcjxjaGFyPiA+OjpfQWxsb2NfaGlkZXI6IAotLSAgICBfTV9wID0gMHg4MDRhMDE0 ICJhYmNkIgotLSAgQH0KLS1AfQotLUBlbmQgc21hbGxleGFtcGxlCi0tCi0tQWZ0ZXIgYSBwcmV0 dHktcHJpbnRlciBmb3IgQGNvZGV7c3RkOjpzdHJpbmd9IGhhcyBiZWVuIGluc3RhbGxlZCwgb25s eQotLXRoZSBjb250ZW50cyBhcmUgcHJpbnRlZDoKLS0KLS1Ac21hbGxleGFtcGxlCi0tKEB2YWx1 ZXtHREJQfSkgcHJpbnQgcwotLSQyID0gImFiY2QiCi0tQGVuZCBzbWFsbGV4YW1wbGUKLStBbiBl eGFtcGxlIG91dHB1dCBpcyBwcm92aWRlZCAoQHB4cmVme1ByZXR0eSBQcmludGluZ30pLgotIAot IEEgcHJldHR5LXByaW50ZXIgaXMganVzdCBhbiBvYmplY3QgdGhhdCBob2xkcyBhIHZhbHVlIGFu ZCBpbXBsZW1lbnRzIGEKLSBzcGVjaWZpYyBpbnRlcmZhY2UsIGRlZmluZWQgaGVyZS4KLUBAIC0y MDM1OSw3ICsyMDM2OSw3IEBAIGF0dHJpYnV0ZS4KLSAKLSBBIGZ1bmN0aW9uIG9uIG9uZSBvZiB0 aGVzZSBsaXN0cyBpcyBwYXNzZWQgYSBzaW5nbGUgQGNvZGV7Z2RiLlZhbHVlfQotIGFyZ3VtZW50 IGFuZCBzaG91bGQgcmV0dXJuIGEgcHJldHR5LXByaW50ZXIgb2JqZWN0IGNvbmZvcm1pbmcgdG8g dGhlCi0taW50ZXJmYWNlIGRlZmluaXRpb24gYWJvdmUgKEBweHJlZntQcmV0dHkgUHJpbnRpbmd9 KS4gIElmIGEgZnVuY3Rpb24KLStpbnRlcmZhY2UgZGVmaW5pdGlvbiBhYm92ZSAoQHB4cmVme1By ZXR0eSBQcmludGluZyBBUEl9KS4gIElmIGEgZnVuY3Rpb24KLSBjYW5ub3QgY3JlYXRlIGEgcHJl dHR5LXByaW50ZXIgZm9yIHRoZSB2YWx1ZSwgaXQgc2hvdWxkIHJldHVybgotIEBjb2Rle05vbmV9 LgotIAotQEAgLTIwNDM2LDcgKzIwNDQ2LDcgQEAgcHJpbnRlcnMgd2l0aCBhIHNwZWNpZmljIG9i amZpbGUsIEB2YWx1ZQotIHByaW50ZXJzIGZvciB0aGUgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUg bGlicmFyeSB1c2VkIGJ5IGVhY2gKLSBpbmZlcmlvci4KLSAKLS1UbyBjb250aW51ZSB0aGUgQGNv ZGV7c3RkOjpzdHJpbmd9IGV4YW1wbGUgKEBweHJlZntQcmV0dHkgUHJpbnRpbmd9KSwKLStUbyBj b250aW51ZSB0aGUgQGNvZGV7c3RkOjpzdHJpbmd9IGV4YW1wbGUgKEBweHJlZntQcmV0dHkgUHJp bnRpbmcgQVBJfSksCi0gdGhpcyBjb2RlIG1pZ2h0IGFwcGVhciBpbiBAY29kZXtnZGIubGlic3Rk Y3h4LnY2fToKLSAKLSBAc21hbGxleGFtcGxlCi1AQCAtMjEwNDgsNyArMjEwNTgsNyBAQCBUaGUg QGNvZGV7cHJldHR5X3ByaW50ZXJzfSBhdHRyaWJ1dGUgaXMgCi0gdXNlZCB0byBsb29rIHVwIHBy ZXR0eS1wcmludGVycy4gIEEgQGNvZGV7VmFsdWV9IGlzIHBhc3NlZCB0byBlYWNoCi0gZnVuY3Rp b24gaW4gb3JkZXI7IGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LCB0aGVuIHRo ZQotIHNlYXJjaCBjb250aW51ZXMuICBPdGhlcndpc2UsIHRoZSByZXR1cm4gdmFsdWUgc2hvdWxk IGJlIGFuIG9iamVjdAotLXdoaWNoIGlzIHVzZWQgdG8gZm9ybWF0IHRoZSB2YWx1ZS4gIEB4cmVm e1ByZXR0eSBQcmludGluZ30sIGZvciBtb3JlCi0rd2hpY2ggaXMgdXNlZCB0byBmb3JtYXQgdGhl IHZhbHVlLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nIEFQSX0sIGZvciBtb3JlCi0gaW5mb3JtYXRp b24uCi0gQGVuZCBkZWZpdmFyCi0gCi1AQCAtMjQ4NzUsNyArMjQ4ODUsNyBAQCB0aGVuIHRoaXMg YXR0cmlidXRlIHdpbGwgbm90IGJlIHByZXNlbnQuCi0gQGl0ZW0gZGlzcGxheWhpbnQKLSBBIGR5 bmFtaWMgdmFyb2JqIGNhbiBzdXBwbHkgYSBkaXNwbGF5IGhpbnQgdG8gdGhlIGZyb250IGVuZC4g IFRoZQotIHZhbHVlIGNvbWVzIGRpcmVjdGx5IGZyb20gdGhlIFB5dGhvbiBwcmV0dHktcHJpbnRl ciBvYmplY3QncwotLUBjb2Rle2Rpc3BsYXlfaGludH0gbWV0aG9kLiAgQHhyZWZ7UHJldHR5IFBy aW50aW5nfS4KLStAY29kZXtkaXNwbGF5X2hpbnR9IG1ldGhvZC4gIEB4cmVme1ByZXR0eSBQcmlu dGluZyBBUEl9LgotIEBlbmQgdGFibGUKLSAKLSBUeXBpY2FsIG91dHB1dCB3aWxsIGxvb2sgbGlr ZSB0aGlzOgotQEAgLTI1MDQ3LDcgKzI1MDU3LDcgQEAgVGhlIHJlc3VsdCBtYXkgaGF2ZSBpdHMg b3duIGF0dHJpYnV0ZXM6Ci0gQGl0ZW0gZGlzcGxheWhpbnQKLSBBIGR5bmFtaWMgdmFyb2JqIGNh biBzdXBwbHkgYSBkaXNwbGF5IGhpbnQgdG8gdGhlIGZyb250IGVuZC4gIFRoZQotIHZhbHVlIGNv bWVzIGRpcmVjdGx5IGZyb20gdGhlIFB5dGhvbiBwcmV0dHktcHJpbnRlciBvYmplY3QncwotLUBj b2Rle2Rpc3BsYXlfaGludH0gbWV0aG9kLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nfS4KLStAY29k ZXtkaXNwbGF5X2hpbnR9IG1ldGhvZC4gIEB4cmVme1ByZXR0eSBQcmludGluZyBBUEl9LgotIAot IEBpdGVtIGhhc19tb3JlCi0gVGhpcyBpcyBhbiBpbnRlZ2VyIGF0dHJpYnV0ZSB3aGljaCBpcyBu b256ZXJvIGlmIHRoZXJlIGFyZSBjaGlsZHJlbgotQEAgLTI1NDExLDcgKzI1NDIxLDcgQEAgc2lu Z2xlIGFyZ3VtZW50LiAgQHZhbHVle0dEQk59IHdpbGwgY2FsbAotIHRoZSB2YXJvYmogQHZhcntu YW1lfSBhcyBhbiBhcmd1bWVudCAodGhpcyBpcyBkb25lIHNvIHRoYXQgdGhlIHNhbWUKLSBQeXRo b24gcHJldHR5LXByaW50aW5nIGNvZGUgY2FuIGJlIHVzZWQgZm9yIGJvdGggdGhlIENMSSBhbmQg TUkpLgotIFdoZW4gY2FsbGVkLCB0aGlzIG9iamVjdCBtdXN0IHJldHVybiBhbiBvYmplY3Qgd2hp Y2ggY29uZm9ybXMgdG8gdGhlCi0tcHJldHR5LXByaW50aW5nIGludGVyZmFjZSAoQHB4cmVme1By ZXR0eSBQcmludGluZ30pLgotK3ByZXR0eS1wcmludGluZyBpbnRlcmZhY2UgKEBweHJlZntQcmV0 dHkgUHJpbnRpbmcgQVBJfSkuCi0gCi0gVGhlIHByZS1kZWZpbmVkIGZ1bmN0aW9uIEBjb2Rle2dk Yi5kZWZhdWx0X3Zpc3VhbGl6ZXJ9IG1heSBiZSB1c2VkIHRvCi0gc2VsZWN0IGEgdmlzdWFsaXpl ciBieSBmb2xsb3dpbmcgdGhlIGJ1aWx0LWluIHByb2Nlc3MKCmRpZmYgLS1naXQgYS9nZGItYno1 NzQ0ODMtZGlzcGxheS1zZXBkZWJ1Zy5wYXRjaCBiL2dkYi1iejU3NDQ4My1kaXNwbGF5LXNlcGRl YnVnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGRkZmE3Li4wMDAwMDAw Ci0tLSBhL2dkYi1iejU3NDQ4My1kaXNwbGF5LXNlcGRlYnVnLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsNzMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTAtMDQvbXNnMDAwNTUuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggZGFuZ2xpbmcgZGlzcGxh eXMgaW4gc2VwYXJhdGUgZGVidWcKLQotWyBCYWNrcG9ydGVkLiAgXQotCi1IaSwKLQotZ2RiLmJh c2Uvc29saWItZGlzcGxheS5leHAgdXNpbmcgX3NlcGFyYXRlXyBkZWJ1ZyBpbmZvOgotMzogY19n bG9iYWwgPSBnZGJ0eXBlcy5jOjEzNjk6IGludGVybmFsLWVycm9yOiBjaGVja190eXBlZGVmOiBB c3NlcnRpb24gYHR5cGUnIGZhaWxlZC4KLUEgcHJvYmxlbSBpbnRlcm5hbCB0byBHREIgaGFzIGJl ZW4gZGV0ZWN0ZWQsCi0KLVRoaXMgcHJvYmxlbSB3YXMgZml4ZWQgYmVmb3JlIGJ5OgotCVtwYXRj aCAxLzhdIFR5cGVzIEdDIFt1bmxvYWRpbmcgb2JzZXJ2ZXJdCi0JaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMDUvbXNnMDA1NDQuaHRtbAotCVJlOiBbcGF0Y2ggMy84 XSBUeXBlcyBHQyBbZGlzcGxheV91c2VzX3NvbGliX3AgdG8gZXhwX2l0ZXJhdGVdCi0JaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMDcvbXNnMDAwNTQuaHRtbAotCi1i dXQgYXMgdGhhdCBwYXRjaHNldCBpcyBzdGlsbCBub3QgaW4gcHJvdmlkaW5nIHRoaXMgdGVtcG9y YXJ5IGZpeHVwIGluc3RlYWQuCi0KLU9uZSBtYXkgb25seSBhZGRyZXNzIHRoYXQgZ2RiLmJhc2Uv c29saWItZGlzcGxheS5leHAgd2FzIHRlc3Rpbmcgc3ltYm9sCi1pbi1vYmpmaWxlIHdoaWxlIG5v dyBpdCB0ZXN0cyBvbmx5IHN5bWJvbCBpbi1zZXBkZWJ1Zy1vYmpmaWxlIGFuZCBubyBsb25nZXIK LXRoZSBpbi1vYmpmaWxlIGNhc2UuICBJIGZpbmQgdGhlIGluLXNlcGRlYnVnLW9iamZpbGUgYXMg YSBzdXBlcnNldCBvZgotaW4tb2JqZmlsZSB0ZXN0IGJ1dCBJIGNhbiByZXdvcmsgaXQgaWYgYW55 b25lcyBhZGRyZXNzZXMgdGhpcyB0ZXN0IGNoYW5nZS4KLQotTm8gcmVncmVzc2lvbnMgb24ge3g4 Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4KLQotCi1UaGFua3MsCi1K YW4KLQotCi1nZGIvCi0yMDEwLTA0LTAzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0KLQkqIHByaW50Y21kLmMgKGRpc3BsYXlfdXNlc19zb2xpYl9wKTogQ2hl Y2sgYWxzbwotCVNFUEFSQVRFX0RFQlVHX09CSkZJTEUuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEw LTA0LTAzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkq IGdkYi5iYXNlL3NvbGliLWRpc3BsYXkuZXhwIChzcGxpdCBzb2xpYik6IE5ldy4KLQotLS0tIGEv Z2RiL3ByaW50Y21kLmMKLSsrKyBiL2dkYi9wcmludGNtZC5jCi1AQCAtMTg0NSw3ICsxODQ1LDEw IEBAIGNsZWFyX2RhbmdsaW5nX2Rpc3BsYXlfZXhwcmVzc2lvbnMgKHN0cnUKLSAKLSAgIGZvciAo ZCA9IGRpc3BsYXlfY2hhaW47IGQgIT0gTlVMTDsgZCA9IGQtPm5leHQpCi0gICAgIGlmIChibG9j a19vYmpmaWxlIChkLT5ibG9jaykgPT0gb2JqZmlsZQotLQl8fCAoZC0+ZXhwICYmIGV4cF91c2Vz X29iamZpbGUgKGQtPmV4cCwgb2JqZmlsZSkpKQotKwl8fCAoZC0+ZXhwICYmIGV4cF91c2VzX29i amZpbGUgKGQtPmV4cCwgb2JqZmlsZSkpCi0rCXx8IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlCi0rCSAgICAmJiAoYmxvY2tfb2JqZmlsZSAoZC0+YmxvY2spID09IG9iamZpbGUtPnNl cGFyYXRlX2RlYnVnX29iamZpbGUKLSsJCXx8IChkLT5leHAgJiYgZXhwX3VzZXNfb2JqZmlsZSAo ZC0+ZXhwLCBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlKSkpKSkKLSAgICAgICB7Ci0g CXhmcmVlIChkLT5leHApOwotIAlkLT5leHAgPSBOVUxMOwotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9zb2xpYi1kaXNwbGF5LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9z b2xpYi1kaXNwbGF5LmV4cAotQEAgLTUzLDYgKzUzLDEzIEBAIGlmIHsgW2dkYl9jb21waWxlX3No bGliICR7c3JjZmlsZV9saWJ9ICR7YmluZmlsZV9saWJ9ICRsaWJfZmxhZ3NdICE9ICIiCi0gICBy ZXR1cm4gLTEKLSB9Ci0gCi0rc2V0IHRlc3QgInNwbGl0IHNvbGliIgotK2lmIHtbZ2RiX2dudV9z dHJpcF9kZWJ1ZyAkYmluZmlsZV9saWJdICE9IDB9IHsKLSsgICAgZmFpbCAkdGVzdAotK30gZWxz ZSB7Ci0rICAgIHBhc3MgJHRlc3QKLSt9Ci0rCi0gZ2RiX2V4aXQKLSBnZGJfc3RhcnQKLSBnZGJf cmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLQoKZGlmZiAtLWdpdCBhL2dkYi1iejU3 NTI5Mi1kZWxheWVkLXBoeXNuYW1lLnBhdGNoIGIvZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25h bWUucGF0Y2gKaW5kZXggNzcwZDUyZC4uNWU2NTk3NCAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTc1Mjky LWRlbGF5ZWQtcGh5c25hbWUucGF0Y2gKKysrIGIvZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25h bWUucGF0Y2gKQEAgLTksOSArOSwxMSBAQCBOZWl0aGVyIGl0cyBvYnN0YWNrLWxlYWsucGF0Y2gg bm9yCiAJaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDUvbXNnMDAy NzEuaHRtbAogaXMgbmVlZGVkIGFzIHRoZSBsaW5rZWQgbGlzdCBpcyB1c2VkIGluc3RlYWQuCiAK LS0tLSAuL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNS0xMyAxODoyNjoyMi4wMDAwMDAwMDAgKzAy MDAKLSsrKyAuL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNS0xMyAxODo0NTowNC4wMDAwMDAwMDAg KzAyMDAKLUBAIC0yNTEsNiArMjUxLDI4IEBAIHN0cnVjdCBjb21wX3VuaXRfaGVhZAorSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMTMgMDA6MzQ6 MDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVh ZC5jCTIwMTAtMDctMTMgMjI6MjU6MTguMDAwMDAwMDAwICswMjAwCitAQCAtMjE2LDYgKzIxNiwy OCBAQCBzdHJ1Y3QgY29tcF91bml0X2hlYWQKICAgIHVuc2lnbmVkIGludCBmaXJzdF9kaWVfb2Zm c2V0OwogIH07CiAgCkBAIC00MCw3ICs0Miw3IEBAIGlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxp c3QgaXMgdXNlZCBpbnN0ZWFkLgogIC8qIEludGVybmFsIHN0YXRlIHdoZW4gZGVjb2RpbmcgYSBw YXJ0aWN1bGFyIGNvbXBpbGF0aW9uIHVuaXQuICAqLwogIHN0cnVjdCBkd2FyZjJfY3UKICB7Ci1A QCAtMzI5LDYgKzM1MSwxMCBAQCBzdHJ1Y3QgZHdhcmYyX2N1CitAQCAtMjk0LDYgKzMxNiwxMCBA QCBzdHJ1Y3QgZHdhcmYyX2N1CiAgICAvKiBIZWFkZXIgZGF0YSBmcm9tIHRoZSBsaW5lIHRhYmxl LCBkdXJpbmcgZnVsbCBzeW1ib2wgcHJvY2Vzc2luZy4gICovCiAgICBzdHJ1Y3QgbGluZV9oZWFk ZXIgKmxpbmVfaGVhZGVyOwogIApAQCAtNTEsNyArNTMsNyBAQCBpcyBuZWVkZWQgYXMgdGhlIGxp bmtlZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4KICAgIC8qIE1hcmsgdXNlZCB3aGVuIHJlbGVhc2lu ZyBjYWNoZWQgZGllcy4gICovCiAgICB1bnNpZ25lZCBpbnQgbWFyayA6IDE7CiAgCi1AQCAtMTIw OCw2ICsxMjM0LDkgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9zZWN0aW9uIChzdHJ1Y3QgZHdhcgor QEAgLTExNDIsNiArMTE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChz dHJ1Y3QKICBzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZjJfYXR0cl90 b19sb2NleHByX2JhdG9uCiAgICAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpOwogIApAQCAtNjEsNyArNjMsNyBAQCBpcyBuZWVkZWQgYXMgdGhlIGxpbmtlZCBs aXN0IGlzIHVzZWQgaW5zdGVhZC4KICAvKiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3ZSBu ZWVkIGZvciBEV0FSRiAyIGRlYnVnZ2luZwogICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdHJ1 ZSBpZiB3ZSBoYXZlIGVub3VnaCB0byBkbyBzb21ldGhpbmcuICAqLwogIAotQEAgLTM0MzUsNiAr MzQ2NCw1OCBAQCBsb2FkX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jCitAQCAt MzEzNyw2ICszMTY2LDU4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVy X2MKICAgIGRpc2NhcmRfY2xlYW51cHMgKGZyZWVfY3VfY2xlYW51cCk7CiAgfQogIApAQCAtMTIw LDggKzEyMiw4IEBAIGlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFk LgogIC8qIEdlbmVyYXRlIGZ1bGwgc3ltYm9sIGluZm9ybWF0aW9uIGZvciBQU1QgYW5kIENVLCB3 aG9zZSBESUVzIGhhdmUKICAgICBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8gbWVtb3J5LiAgKi8K ICAKLUBAIC0zNDQ3LDcgKzM1MjgsNyBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3Qg ZHdhcmYyX3BlCi0gICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOworQEAgLTMxNDgsNyArMzIy OSw3IEBAIHByb2Nlc3NfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGUKKyAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlID0gcHN0LT5vYmpmaWxlOwogICAgQ09SRV9BRERSIGxvd3BjLCBo aWdocGM7CiAgICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7CiAtICBzdHJ1Y3QgY2xlYW51cCAqYmFj a190bzsKQEAgLTEyOSw3ICsxMzEsNyBAQCBpcyBuZWVkZWQgYXMgdGhlIGxpbmtlZCBsaXN0IGlz IHVzZWQgaW5zdGVhZC4KICAgIENPUkVfQUREUiBiYXNlYWRkcjsKICAKICAgIGJhc2VhZGRyID0g QU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmls ZSkpOwotQEAgLTM0NTcsMTEgKzM1MzgsMjIgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3Ry dWN0IGR3YXJmMl9wZQorQEAgLTMxNTgsMTEgKzMyMzksMjIgQEAgcHJvY2Vzc19mdWxsX2NvbXBf dW5pdCAoc3RydWN0IGR3YXJmMl9wZQogIAogICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmZmlsZV9z eW1ib2xzOwogIApAQCAtMTUyLDcgKzE1NCw3IEBAIGlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxp c3QgaXMgdXNlZCBpbnN0ZWFkLgogICAgLyogU29tZSBjb21waWxlcnMgZG9uJ3QgZGVmaW5lIGEg RFdfQVRfaGlnaF9wYyBhdHRyaWJ1dGUgZm9yIHRoZQogICAgICAgY29tcGlsYXRpb24gdW5pdC4g IElmIHRoZSBEV19BVF9oaWdoX3BjIGlzIG1pc3NpbmcsIHN5bnRoZXNpemUKICAgICAgIGl0LCBi eSBzY2FubmluZyB0aGUgRElFJ3MgYmVsb3cgdGhlIGNvbXBpbGF0aW9uIHVuaXQuICAqLwotQEAg LTUwOTMsNyArNTE4NSw2IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5m byAKK0BAIC00ODU0LDcgKzQ5NDYsNiBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZp ZWxkX2luZm8gCiAgICBpbnQgaTsKICAgIHN0cnVjdCBmbl9maWVsZCAqZm5wOwogICAgY2hhciAq ZmllbGRuYW1lOwpAQCAtMTYwLDcgKzE2Miw3IEBAIGlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxp c3QgaXMgdXNlZCBpbnN0ZWFkLgogICAgc3RydWN0IG5leHRmbmZpZWxkICpuZXdfZm5maWVsZDsK ICAgIHN0cnVjdCB0eXBlICp0aGlzX3R5cGU7CiAgCi1AQCAtNTEwNSw5ICs1MTk2LDYgQEAgZHdh cmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvIAorQEAgLTQ4NjYsOSArNDk1Nyw2 IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKICAgIGlmIChmaWVs ZG5hbWUgPT0gTlVMTCkKICAgICAgcmV0dXJuOwogIApAQCAtMTcwLDcgKzE3Miw3IEBAIGlzIG5l ZWRlZCBhcyB0aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogICAgLyogTG9vayB1cCBt ZW1iZXIgZnVuY3Rpb24gbmFtZSBpbiBmaWVsZGxpc3QuICAqLwogICAgZm9yIChpID0gMDsgaSA8 IGZpcC0+bmZuZmllbGRzOyBpKyspCiAgICAgIHsKLUBAIC01MTMzLDcgKzUyMjEsNyBAQCBkd2Fy ZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCitAQCAtNDg5NCw3ICs0OTgyLDcg QEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvIAogICAgICAgIGZscC0+ bmFtZSA9IGZpZWxkbmFtZTsKICAgICAgICBmbHAtPmxlbmd0aCA9IDA7CiAgICAgICAgZmxwLT5o ZWFkID0gTlVMTDsKQEAgLTE3OSw3ICsxODEsNyBAQCBpcyBuZWVkZWQgYXMgdGhlIGxpbmtlZCBs aXN0IGlzIHVzZWQgaW5zdGVhZC4KICAgICAgfQogIAogICAgLyogQ3JlYXRlIGEgbmV3IG1lbWJl ciBmdW5jdGlvbiBmaWVsZCBhbmQgY2hhaW4gaXQgdG8gdGhlIGZpZWxkIGxpc3QKLUBAIC01MTQ3 LDkgKzUyMzUsMTkgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvIAor QEAgLTQ5MDgsOSArNDk5NiwxOSBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxk X2luZm8gCiAgCiAgICAvKiBGaWxsIGluIHRoZSBtZW1iZXIgZnVuY3Rpb24gZmllbGQgaW5mby4g ICovCiAgICBmbnAgPSAmbmV3X2ZuZmllbGQtPmZuZmllbGQ7CkBAIC0yMDIsNyArMjA0LDcgQEAg aXMgbmVlZGVkIGFzIHRoZSBsaW5rZWQgbGlzdCBpcyB1c2VkIGluc3RlYWQuCiAgICBmbnAtPnR5 cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKICAgIHRoaXNfdHlwZSA9IHJlYWRfdHlwZV9kaWUg KGRpZSwgY3UpOwogICAgaWYgKHRoaXNfdHlwZSAmJiBUWVBFX0NPREUgKHRoaXNfdHlwZSkgPT0g VFlQRV9DT0RFX0ZVTkMpCi1AQCAtNTE3NSw3ICs1MjczLDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJf Zm4gKHN0cnVjdCBmaWVsZF9pbmZvIAorQEAgLTQ5MzYsNyArNTAzNCw3IEBAIGR3YXJmMl9hZGRf bWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKICAgICAgfQogICAgZWxzZQogICAgICBjb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oIm1lbWJlciBmdW5jdGlvbiB0eXBlIG1pc3Np bmcgZm9yICclcyciKSwKQEAgLTIxMSw3ICsyMTMsNyBAQCBpcyBuZWVkZWQgYXMgdGhlIGxpbmtl ZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4KICAKICAgIC8qIEdldCBmY29udGV4dCBmcm9tIERXX0FU X2NvbnRhaW5pbmdfdHlwZSBpZiBwcmVzZW50LiAgKi8KICAgIGlmIChkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9jb250YWluaW5nX3R5cGUsIGN1KSAhPSBOVUxMKQotQEAgLTc1MDAsNyArNzU5OCw5 IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKK0BAIC03MzE1LDcg Kzc0MTMsOSBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqCiAgCQkg ICAgICB8fCBsYXN0X2RpZS0+dGFnID09IERXX1RBR19pbnRlcmZhY2VfdHlwZQogIAkJICAgICAg fHwgbGFzdF9kaWUtPnRhZyA9PSBEV19UQUdfc3RydWN0dXJlX3R5cGUKICAJCSAgICAgIHx8IGxh c3RfZGllLT50YWcgPT0gRFdfVEFHX3VuaW9uX3R5cGUpKQpAQCAtMjIyLDggKzIyNCwxMCBAQCBp cyBuZWVkZWQgYXMgdGhlIGxpbmtlZCBsaXN0IGlzIHVzZWQgaW5zdGVhZC4KICAJCSAgJiYgKGxh c3RfZGllLT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0KICAJCSAgICAgIHx8IGxhc3RfZGllLT50 YWcgPT0gRFdfVEFHX2xleGljYWxfYmxvY2spKSkpCiAgCXsKLS0tLSAuL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9wcjExNDY1LlMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAK LSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LlMJMjAxMC0wNS0xMyAxODoz OTowMC4wMDAwMDAwMDAgKzAyMDAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LlMJMjAxMC0wNy0xMyAyMjoyNDo0OC4w MDAwMDAwMDAgKzAyMDAKIEBAIC0wLDAgKzEsMzU1IEBACiArLyogQ29weXJpZ2h0IDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC01ODAsOCArNTg0LDEwIEBAIGlzIG5l ZWRlZCBhcyB0aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogKy5MQVNGNDoKICsJLnN0 cmluZwkiR05VIEMrKyA0LjQuMiIKICsJLmlkZW50CSJHQ0M6IChHTlUpIDQuNC4yIgotLS0tIC4v Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3ByMTE0NjUuZXhwCTE5NzAtMDEtMDEgMDE6MDA6MDAu MDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5l eHAJMjAxMC0wNS0xMyAxODozOTowMC4wMDAwMDAwMDAgKzAyMDAKK0luZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LmV4cAorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysr IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3ByMTE0NjUuZXhw CTIwMTAtMDctMTMgMjI6MjQ6NDguMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDM5IEBACiAr IyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYg LS1naXQgYS9nZGItYno1NzUyOTItdm9pZC13b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLWJ6NTc1Mjky LXZvaWQtd29ya2Fyb3VuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ1 YTkzNC4uMDAwMDAwMAotLS0gYS9nZGItYno1NzUyOTItdm9pZC13b3JrYXJvdW5kLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTg3ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAxMDM5Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0gRml4IGNy YXNoIG9uIE5VTEwgZnVuY3Rpb24ncyBUWVBFX0ZJRUxEX1RZUEUKLQotSGksCi0KLXNlZW4gb25l IHBvc3NpYmlsaXR5IG9mIGEgY3Jhc2guCi0KLSMwICBjX3ByaW50X3R5cGUgKHR5cGU9MHgwLCAu Li4pCi0jMSAgaW4gY190eXBlX3ByaW50X2FyZ3MgKHR5cGU9MHhmY2ViODkwLAotCi0oVGhlIHJl YWwgcmVhc29uIG9mIGEgcmVwb3J0ZWQgR0RCIGNyYXNoIHdhcyBkaWZmZXJlbnQsIHRob3VnaC4p Ci0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0wMy0zMCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IGNyYXNoIG9uIHJlYWRpbmcgd3Jv bmcgZnVuY3Rpb24gZGVjbGFyYXRpb24gRFdBUkYuCi0JKiBkd2FyZjJyZWFkLmMgKHJlYWRfc3Vi cm91dGluZV90eXBlKTogTmV3IHZhcmlhYmxlIHZvaWRfdHlwZS4KLQlQcmUtZmlsbCBhbGwgVFlQ RV9GSUVMRF9UWVBFcy4gIE1vdmUgbnBhcmFtcyBhbmQgaXBhcmFtcyBpbml0aWFsaXphdGlvbgot CW1vcmUgY2xvc2UgdG8gdGhlaXIgdXNlLgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMC0wMy0zMCAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuZHdh cmYyL2R3Mi1iYWQtcGFyYW1ldGVyLXR5cGUuZXhwLAotCWdkYi5kd2FyZjIvZHcyLWJhZC1wYXJh bWV0ZXItdHlwZS5TOiBOZXcuCi0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9k d2FyZjJyZWFkLmMKLUBAIC01OTM4LDEzICs1OTM4LDE0IEBAIHJlYWRfc3Vicm91dGluZV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAKLSAgIGlm IChkaWUtPmNoaWxkICE9IE5VTEwpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdm9pZF90 eXBlID0gb2JqZmlsZV90eXBlIChjdS0+b2JqZmlsZSktPmJ1aWx0aW5fdm9pZDsKLSAgICAgICBz dHJ1Y3QgZGllX2luZm8gKmNoaWxkX2RpZTsKLS0gICAgICBpbnQgbnBhcmFtcyA9IDA7Ci0tICAg ICAgaW50IGlwYXJhbXMgPSAwOwotKyAgICAgIGludCBucGFyYW1zLCBpcGFyYW1zOwotIAotICAg ICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycy4KLSAgICAgICAgICBGSVhNRTog R0RCIGN1cnJlbnRseSBpZ25vcmVzIHZhcmFyZyBmdW5jdGlvbnMsIGJ1dCBrbm93cyBhYm91dAot ICAgICAgICAgIHZhcmFyZyBtZW1iZXIgZnVuY3Rpb25zLiAgKi8KLSsgICAgICBucGFyYW1zID0g MDsKLSAgICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwotICAgICAgIHdoaWxlIChjaGlsZF9k aWUgJiYgY2hpbGRfZGllLT50YWcpCi0gCXsKLUBAIC01OTYwLDYgKzU5NjEsMTIgQEAgcmVhZF9z dWJyb3V0aW5lX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKLSAgICAgICBUWVBFX0ZJRUxEUyAoZnR5cGUpID0gKHN0cnVjdCBmaWVsZCAqKQotIAlUWVBF X1pBTExPQyAoZnR5cGUsIG5wYXJhbXMgKiBzaXplb2YgKHN0cnVjdCBmaWVsZCkpOwotIAotKyAg ICAgIC8qIFRZUEVfRklFTERfVFlQRSBtdXN0IG5ldmVyIGJlIE5VTEwuICBQcmUtZmlsbCB0aGUg YXJyYXkgdG8gZW5zdXJlIGl0Ci0rCSBldmVuIGlmIHdlIGVycm9yIG91dCBkdXJpbmcgdGhlIHBh cmFtZXRlcnMgcmVhZGluZyBiZWxvdy4gICovCi0rICAgICAgZm9yIChpcGFyYW1zID0gMDsgaXBh cmFtcyA8IG5wYXJhbXM7IGlwYXJhbXMrKykKLSsJVFlQRV9GSUVMRF9UWVBFIChmdHlwZSwgaXBh cmFtcykgPSB2b2lkX3R5cGU7Ci0rCi0rICAgICAgaXBhcmFtcyA9IDA7Ci0gICAgICAgY2hpbGRf ZGllID0gZGllLT5jaGlsZDsKLSAgICAgICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+ dGFnKQotIAl7Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLWJhZC1wYXJhbWV0ZXItdHlwZS5TCi1AQCAtMCwwICsxLDczIEBACi0rLyogQ29weXJpZ2h0 IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotK2Rl YnVnX3N0YXJ0OgotKwkubG9uZwlkZWJ1Z19lbmQgLSAxZgkvKiBMZW5ndGggb2YgQ29tcGlsYXRp b24gVW5pdCBJbmZvICovCi0rMToKLSsJLjJieXRlCTB4MwkvKiBEV0FSRiB2ZXJzaW9uIG51bWJl ciAqLwotKwkubG9uZwkuTGRlYnVnX2FiYnJldjAJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0 aW9uICovCi0rCS5ieXRlCTB4NAkvKiBQb2ludGVyIFNpemUgKGluIGJ5dGVzKSAqLwotKwkudWxl YjEyOCAweDEJLyogKERJRSAoMHhiKSBEV19UQUdfY29tcGlsZV91bml0KSAqLwotKwkuYXNjaWkg IkdOVSBDIDQuNC4zXDAiCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCTB4MQkvKiBEV19B VF9sYW5ndWFnZSAqLwotKwkuYXNjaWkgIjEuY1wwIgkvKiBEV19BVF9uYW1lICovCi0rCS51bGVi MTI4IDB4NAkvKiAoRElFICgweDNjKSBEV19UQUdfc3VicHJvZ3JhbSkgKi8KLSsJLmFzY2lpICJm XDAiCS8qIERXX0FUX25hbWUgKi8KLSsvKiBWYWx1ZSAwIHdvdWxkIHJlcXVpcmUgaGFzX3NlY3Rp b25fYXRfemVybyAhPSAwICh3aGljaCBpcyB0cnVlLCB0aG91Z2gpLiAgKi8KLSsJLmxvbmcJMQkv KiBEV19BVF9sb3dfcGMgKi8KLSsJLmxvbmcJMgkvKiBEV19BVF9oaWdoX3BjICovCi0rCS5ieXRl CTB4MQkvKiBEV19BVF9wcm90b3R5cGVkICovCi0rCS51bGViMTI4IDB4NQkvKiAoRElFICgweDQy KSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikgKi8KLSsvKiBJbnZhbGlkIHZhbHVlLiAgKi8KLSsJ LmxvbmcJMHgwCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJMHgwCS8qIGVuZCBvZiBjaGlsZHJl biBvZiBESUUgMHgzYyAqLwotKwkuYnl0ZQkweDAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAw eGIgKi8KLStkZWJ1Z19lbmQ6Ci0rCi0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYKLSsuTGRlYnVn X2FiYnJldjA6Ci0rCS51bGViMTI4IDB4MQkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4 IDB4MTEJLyogKFRBRzogRFdfVEFHX2NvbXBpbGVfdW5pdCkgKi8KLSsJLmJ5dGUJMHgxCS8qIERX X2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDI1CS8qIChEV19BVF9wcm9kdWNlcikgKi8K LSsJLnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0cmluZykgKi8KLSsJLnVsZWIxMjggMHgxMwkv KiAoRFdfQVRfbGFuZ3VhZ2UpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkg Ki8KLSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyog KERXX0ZPUk1fc3RyaW5nKSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4 IDB4NAkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4MmUJLyogKFRBRzogRFdfVEFH X3N1YnByb2dyYW0pICovCi0rCS5ieXRlCTB4MQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVs ZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1f c3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDExCS8qIChEV19BVF9sb3dfcGMpICovCi0rCS51bGVi MTI4IDB4MQkvKiAoRFdfRk9STV9hZGRyKSAqLwotKwkudWxlYjEyOCAweDEyCS8qIChEV19BVF9o aWdoX3BjKSAqLwotKwkudWxlYjEyOCAweDEJLyogKERXX0ZPUk1fYWRkcikgKi8KLSsJLnVsZWIx MjggMHgyNwkvKiAoRFdfQVRfcHJvdG90eXBlZCkgKi8KLSsJLnVsZWIxMjggMHhjCS8qIChEV19G T1JNX2ZsYWcpICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg1CS8q IChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHg1CS8qIChUQUc6IERXX1RBR19mb3JtYWxf cGFyYW1ldGVyKSAqLwotKwkuYnl0ZQkweDAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIx MjggMHg0OQkvKiAoRFdfQVRfdHlwZSkgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9y ZWY0KSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1iYWQtcGFyYW1ldGVyLXR5 cGUuZXhwCi1AQCAtMCwwICsxLDQ0IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0r IyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FS Ri0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRh cmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAq LSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAgJiYgIVtpc3Rhcmdl dCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpdCi0rICAgICYm ICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4gMCAgCi0rfQotKwot K3NldCB0ZXN0ZmlsZSAiZHcyLWJhZC1wYXJhbWV0ZXItdHlwZSIKLStzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3NldCBiaW5maWxlICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQotKwotKyMgRmlyc3QgdHJ5IHJlZmVyZW5j aW5nIERXX0FUX2ZyYW1lX2Jhc2Ugd2hpY2ggaXMgbm90IGRlZmluZWQuCi0raWYgIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBvYmpl Y3Qge31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAk ZXhlY3V0YWJsZQotKwotKyMgVGhlIGZpcnN0IGFjY2VzcyAoYXMgd2UgZG8gbm90IHVzZSAtcmVh ZG5vdykgcHJpbnRzIHNvbWU6Ci0rIyBEd2FyZiBFcnJvcjogQ2Fubm90IGZpbmQgRElFIGF0IDB4 MCByZWZlcmVuY2VkIGZyb20gRElFIGF0IDB4MjkgW2luIG1vZHVsZSAuLi5dCi0rZ2RiX3Rlc3Qg InB0eXBlIGYiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGYiCi0rZ2RiX3Rlc3QgInAgNSIgIiA9IDUi ICJpcyBhbGl2ZSIKLQoKZGlmZiAtLWdpdCBhL2dkYi1iejU3ODI1MC1hdngtMDFvZjEwLnBhdGNo IGIvZ2RiLWJ6NTc4MjUwLWF2eC0wMW9mMTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDkwZmRjMGQuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTc4MjUwLWF2eC0wMW9mMTAucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMzICswLDAgQEAKLVsgQmFja3BvcnRlZC4gIF0KLQot Y29tbWl0IGQ0NTRiNzUyOWE1ZTYxMzRhY2U4NTQxYjM0MWQwNzk1MzRmMjA2MmEKLUF1dGhvcjog SC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLURhdGU6ICAgTW9uIE1hciAxIDE1OjMzOjI5 IDIwMTAgKzAwMDAKLQotICAgIEVuYWJsZSBYTUwgdGFyZ2V0IGRlc2NyaXB0aW9ucyBmb3IgeDg2 LgotICAgIAotICAgIGdkYi8KLSAgICAKLSAgICAyMDEwLTAzLTAxICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0gICAgCi0gICAgCSogYW1kNjQtbGludXgtbmF0LmMgKEFNRDY0X0xJ TlVYX1VTRVI2NF9DUyk6IE5ldy4KLSAgICAJKGFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24p OiBMaWtld2lzZS4KLSAgICAJKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25hdCk6IFNldCB0b19y ZWFkX2Rlc2NyaXB0aW9uIHRvCi0gICAgCWFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24uCi0g ICAgCi0gICAgCSogYW1kNjQtbGludXgtdGRlcC5jOiBJbmNsdWRlICJmZWF0dXJlcy9pMzg2L2Ft ZDY0LWxpbnV4LmMiLgotICAgIAkoYW1kNjRfbGludXhfcmVnaXN0ZXJfbmFtZSk6IFJlbW92ZWQu Ci0gICAgCShhbWQ2NF9saW51eF9yZWdpc3Rlcl90eXBlKTogTGlrZXdpc2UuCi0gICAgCShhbWQ2 NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0gICAgCShhbWQ2NF9saW51eF9p bml0X2FiaSk6IFNldCB0YXJnZXQgZGVzY3JpcHRpb24gdG8KLSAgICAJdGRlc2NfYW1kNjRfbGlu dXggaWYgbmVlZGVkLiAgU3VwcG9ydCBvcmlnX3JheCBpbiB0YXJnZXQKLSAgICAJZGVzY3JpcHRp b24uICBEb24ndCBjYWxsIHNldF9nZGJhcmNoX3JlZ2lzdGVyX25hbWUgbm9yCi0gICAgCXNldF9n ZGJhcmNoX3JlZ2lzdGVyX3R5cGUuICBDYWxsCi0gICAgCXNldF9nZGJhcmNoX2NvcmVfcmVhZF9k ZXNjcmlwdGlvbi4KLSAgICAJKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X3RkZXApOiBDYWxsCi0g ICAgCWluaXRpYWxpemVfdGRlc2NfYW1kNjRfbGludXguCi0gICAgCi0gICAgCSogYW1kNjQtbGlu dXgtdGRlcC5oICh0ZGVzY19hbWQ2NF9saW51eCk6IE5ldy4KLSAgICAKLSAgICAJKiBhbWQ2NC10 ZGVwLmM6ICBJbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LmMiLgotICAgIAkoYW1kNjRfcmVn aXN0ZXJfbmFtZXMpOiBSZW1vdmVkLgotICAgIAkoYW1kNjRfcmVnaXN0ZXJfbmFtZSk6IExpa2V3 aXNlLgotICAgIAkoYW1kNjRfcmVnaXN0ZXJfdHlwZSk6IExpa2V3aXNlLgotICAgIAkoYW1kNjRf aW5pdF9hYmkpOiAgU2V0IG51bV9jb3JlX3JlZ3MgYW5kIHJlZ2lzdGVyX25hbWVzLiAgU2V0Ci0g ICAgCXRhcmdldCBkZXNjcmlwdGlvbiB0byB0ZGVzY19hbWQ2NCBpZiBuZWVkZWQuICBEb24ndCBj YWxsCi0gICAgCXNldF9nZGJhcmNoX3JlZ2lzdGVyX25hbWUgbm9yIHNldF9nZGJhcmNoX3JlZ2lz dGVyX3R5cGUuCi0gICAgCShfaW5pdGlhbGl6ZV9hbWQ2NF90ZGVwKTogTmV3LgotICAgIAotICAg IAkqIGkzODYtbGludXgtbmF0LmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IE5ldy4K LSAgICAJKF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0KTogU2V0IHRvX3JlYWRfZGVzY3JpcHRp b24gdG8KLSAgICAJaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uLgotICAgIAotICAgIAkqIGkz ODYtbGludXgtdGRlcC5jOiBJbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYtbGludXguYyIuCi0g ICAgCShpMzg2X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBSZW1vdmVkLgotICAgIAkoaTM4Nl9saW51 eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0gICAgCShpMzg2X2xpbnV4X3JlYWRfZGVz Y3JpcHRpb24pOiBMaWtld2lzZS4KLSAgICAJKGkzODZfbGludXhfaW5pdF9hYmkpOiBEb24ndCBj YWxsIHNldF9nZGJhcmNoX3JlZ2lzdGVyX25hbWUuCi0gICAgCVNldCB0YXJnZXQgZGVzY3JpcHRp b24gdG8gdGRlc2NfaTM4Nl9saW51eCBpZiBuZWVkZWQuICBTdXBwb3J0Ci0gICAgCW9yaWdfZWF4 LiAgU2V0IHJlZ2lzdGVyX3JlZ2dyb3VwX3AuICBDYWxsCi0gICAgCXNldF9nZGJhcmNoX2NvcmVf cmVhZF9kZXNjcmlwdGlvbi4KLSAgICAJKF9pbml0aWFsaXplX2kzODZfbGludXhfdGRlcCk6IENh bGwgaW5pdGlhbGl6ZV90ZGVzY19pMzg2X2xpbnV4LgotICAgIAotICAgIAkqIGkzODYtbGludXgt dGRlcC5oICh0ZGVzY19pMzg2X2xpbnV4KTogTmV3LgotICAgIAotICAgIAkqIGkzODYtbnRvLXRk ZXAuYyAoaTM4Nm50b19yZWdzZXRfaWQpOiBSZXBsYWNlIEkzODZfTlVNX0ZSRUdTCi0gICAgCXdp dGggSTM4N19OVU1fUkVHUy4KLSAgICAKLSAgICAJKiBpMzg2LXRkZXAuYzogSW5jbHVkZSAiZmVh dHVyZXMvaTM4Ni9pMzg2LmMiLgotICAgIAkoaTM4Nl9yZWdpc3Rlcl9uYW1lcyk6IE1ha2UgaXQg Y29uc3QuCi0gICAgCShpMzg2X21teF9uYW1lcyk6IExpa2V3aXNlLgotICAgIAkoaTM4Nl9udW1f cmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmVkLgotICAgIAkoaTM4Nl9yZWdpc3Rlcl9uYW1lKTogTGlr ZXdpc2UuCi0gICAgCShpMzg2X2VmbGFnc190eXBlKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X214 Y3NyX3R5cGUpOiBMaWtld2lzZS4KLSAgICAJKGkzODZfc3NlX3R5cGUpOiBMaWtld2lzZS4KLSAg ICAJKGkzODZfcmVnaXN0ZXJfdHlwZSk6IExpa2V3aXNlLgotICAgIAkoaTM4N19leHRfdHlwZSk6 IENhbGwgdGRlc2NfZmluZF90eXBlIGluc3RlYWQgb2YgYXJjaF9mbG9hdF90eXBlLgotICAgIAko aTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk6IE5ldy4KLSAgICAJKGkzODZfcHNldWRvX3JlZ2lz dGVyX3R5cGUpOiBMaWtld2lzZS4KLSAgICAJKGkzODZfbW14X3R5cGUpOiBNYWtlIGl0IHN0YXRp Yy4KLSAgICAJKGkzODZfZ2RiYXJjaF9pbml0KTogQ2hlY2sgYXJjaC4gIFJlcGxhY2UgSTM4Nl9O VU1fRlJFR1Mgd2l0aAotICAgIAlJMzg3X05VTV9SRUdTLiAgU2V0IG51bV9jb3JlX3JlZ3MgYW5k IHJlZ2lzdGVyX25hbWVzLiAgRG9uJ3QKLSAgICAJY2FsbCBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9u YW1lIG5vciBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl90eXBlLgotICAgIAlTZXQgcmVnaXN0ZXJfcmVn Z3JvdXBfcC4gIFNldCB0YXJnZXQgZGVzY3JpcHRpb24gdG8gdGRlc2NfaTM4NgotICAgIAlpZiBu ZWVkZWQuICBDYWxsIHNldF90ZGVzY19wc2V1ZG9fcmVnaXN0ZXJfdHlwZSwKLSAgICAJc2V0X3Rk ZXNjX3BzZXVkb19yZWdpc3Rlcl9uYW1lIGFuZCB0ZGVzY191c2VfcmVnaXN0ZXJzLgotICAgIAko X2luaXRpYWxpemVfaTM4Nl90ZGVwKTogQ2FsbCBpbml0aWFsaXplX3RkZXNjX2kzODYuCi0gICAg CWluaXRpYWxpemVfdGRlc2NfeDg2XzY0LgotICAgIAotICAgIAkqIGkzODYtdGRlcC5oIChnZGJh cmNoX3RkZXApOiBSZW1vdmUgaTM4Nl9lZmxhZ3NfdHlwZSwKLSAgICAJaTM4Nl9teGNzcl90eXBl IGFuZCBpMzg2X3NzZV90eXBlLiAgQWRkIG51bV9jb3JlX3JlZ3MsCi0gICAgCXJlZ2lzdGVyX25h bWVzLCB0ZGVzYyBhbmQgcmVnaXN0ZXJfcmVnZ3JvdXBfcC4KLSAgICAJKEkzODZfTlVNX0ZSRUdT KTogUmVtb3ZlZC4KLSAgICAJKGkzODZfZWZsYWdzX3R5cGUpOiBMaWtld2lzZS4KLSAgICAJKGkz ODZfbXhjc3JfdHlwZSk6IExpa2V3aXNlLgotICAgIAkoaTM4Nl9tbXhfdHlwZSk6IExpa2V3aXNl LgotICAgIAkoaTM4Nl9zc2VfdHlwZSk6IExpa2V3aXNlLgotICAgIAkoaTM4Nl9yZWdpc3Rlcl9u YW1lKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X3JlZ251bSk6IEFkZCBJMzg2X01YQ1NSX1JFR05V TS4KLSAgICAJKEkzODZfU1NFX05VTV9SRUdTKTogRGVmaW5lZCB3aXRoIEkzODZfTVhDU1JfUkVH TlVNLgotICAgIAotICAgIAkqIGkzODctdGRlcC5oIChJMzg3X05VTV9SRUdTKTogTmV3LgotICAg IAotICAgIAkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWxpbnV4LmRhdDogR2VuZXJhdGVkLgotICAg IAkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2LmRhdDogTGlrZXdpc2UuCi0gICAgCSogcmVnZm9ybWF0 cy9pMzg2L2FtZDY0LWxpbnV4LmRhdDogTGlrZXdpc2UuCi0gICAgCSogcmVnZm9ybWF0cy9pMzg2 L2FtZDY0LmRhdDogTGlrZXdpc2UuCi0gICAgCi0gICAgCSogcmVnZm9ybWF0cy9yZWctaTM4Ni1s aW51eC5kYXQ6IFJlbW92ZWQuCi0gICAgCSogcmVnZm9ybWF0cy9yZWctaTM4Ni5kYXQ6IExpa2V3 aXNlLgotICAgIAkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1saW51eC5kYXQ6IExpa2V3aXNlLgot ICAgIAkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC5kYXQ6IExpa2V3aXNlLgotICAgIAotICAgIGdk Yi9nZGJzZXJ2ZXIvCi0gICAgCi0gICAgMjAxMC0wMy0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotICAgIAotICAgIAkqIE1ha2VmaWxlLmluIChjbGVhbik6IFJlcGxhY2UgcmVn LWkzODYuYywgcmVnLXg4Ni02NC5jLAotICAgIAlyZWctaTM4Ni1saW51eC5jIGFuZCByZWcteDg2 LTY0LWxpbnV4LmMgd2l0aCBpMzg2LmMsIGFtZDY0LmMsCi0gICAgCWkzODYtbGludXguYyBhbmQg YW1kNjQtbGludXguYy4KLSAgICAJKHJlZy1pMzg2Lm8pOiBSZW1vdmVkLgotICAgIAkocmVnLWkz ODYuYyk6IExpa2V3aXNlLgotICAgIAkocmVnLWkzODYtbGludXgubyk6IExpa2V3aXNlLgotICAg IAkocmVnLWkzODYtbGludXguYyk6IExpa2V3aXNlLgotICAgIAkocmVnLXg4Ni02NC5vKTogTGlr ZXdpc2UuCi0gICAgCShyZWcteDg2LTY0LmMpOiBMaWtld2lzZS4KLSAgICAJKHJlZy14ODYtNjQt bGludXgubyk6IExpa2V3aXNlLgotICAgIAkocmVnLXg4Ni02NC1saW51eC5jKTogTGlrZXdpc2Uu Ci0gICAgCShpMzg2Lm8pOiBOZXcuCi0gICAgCShpMzg2LmMpOiBMaWtld2lzZS4KLSAgICAJKGkz ODYtbGludXgubyk6IExpa2V3aXNlLgotICAgIAkoaTM4Ni1saW51eC5jKTogTGlrZXdpc2UuCi0g ICAgCShhbWQ2NC5vKTogTGlrZXdpc2UuCi0gICAgCShhbWQ2NC5jKTogTGlrZXdpc2UuCi0gICAg CShhbWQ2NC1saW51eC5vKTogTGlrZXdpc2UuCi0gICAgCShhbWQ2NC1saW51eC5jKTogTGlrZXdp c2UuCi0gICAgCi0gICAgCSogY29uZmlndXJlLnNydiAoc3J2X2kzODZfcmVnb2JqKTogTmV3Lgot ICAgIAkoc3J2X2kzODZfbGludXhfcmVnb2JqKTogTGlrZXdpc2UuCi0gICAgCShzcnZfYW1kNjRf cmVnb2JqKTogTGlrZXdpc2UuCi0gICAgCShzcnZfYW1kNjRfbGludXhfcmVnb2JqKTogTGlrZXdp c2UuCi0gICAgCShzcnZfaTM4Nl8zMmJpdF94bWxmaWxlcyk6IExpa2V3aXNlLgotICAgIAkoc3J2 X2kzODZfNjRiaXRfeG1sZmlsZXMpOiBMaWtld2lzZS4KLSAgICAJKHNydl9pMzg2X3htbGZpbGVz KTogTGlrZXdpc2UuCi0gICAgCShzcnZfYW1kNjRfeG1sZmlsZXMpOiBMaWtld2lzZS4KLSAgICAJ KHNydl9pMzg2X2xpbnV4X3htbGZpbGVzKTogTGlrZXdpc2UuCi0gICAgCShzcnZfYW1kNjRfbGlu dXhfeG1sZmlsZXMpOiBMaWtld2lzZS4KLSAgICAJKGlbMzQ1NjddODYtKi1jeWd3aW4qKTogU2V0 IHNydl9yZWdvYmogdG8gJHNydl9pMzg2X3JlZ29iai4gIFNldAotICAgIAlzcnZfeG1sZmlsZXMg dG8gJHNydl9pMzg2X3htbGZpbGVzLgotICAgIAkoaVszNDU2N104Ni0qLW1pbmd3MzJjZSopOiBM aWtld2lzZS4KLSAgICAJKGlbMzQ1NjddODYtKi1taW5ndyopOiBMaWtld2lzZS4KLSAgICAJKGlb MzQ1NjddODYtKi1udG8qKTogTGlrZXdpc2UuCi0gICAgCShpWzM0NTY3XTg2LSotbGludXgqKTog U2V0IHNydl9yZWdvYmogdG8gJHNydl9pMzg2X2xpbnV4X3JlZ29iagotICAgIAlhbmQgJHNydl9h bWQ2NF9saW51eF9yZWdvYmouICBTZXQgc3J2X3htbGZpbGVzIHRvCi0gICAgCSRzcnZfaTM4Nl9s aW51eF94bWxmaWxlcyBhbmQgJHNydl9hbWQ2NF9saW51eF94bWxmaWxlcy4KLSAgICAJKHg4Nl82 NC0qLWxpbnV4Kik6IExpa2V3aXNlLgotICAgIAotICAgIAkqIGxpbnV4LXg4Ni1sb3cuYyAoaW5p dF9yZWdpc3RlcnNfeDg2XzY0X2xpbnV4KTogUmVtb3ZlZC4KLSAgICAJKGluaXRfcmVnaXN0ZXJz X2FtZDY0X2xpbnV4KTogTmV3LgotICAgIAkoeDg2X2FyY2hfc2V0dXApOiBSZXBsYWNlIGluaXRf cmVnaXN0ZXJzX3g4Nl82NF9saW51eCB3aXRoCi0gICAgCWluaXRfcmVnaXN0ZXJzX2FtZDY0X2xp bnV4LgotICAgIAotICAgIGdkYi90ZXN0c3VpdGUvCi0gICAgCi0gICAgMjAxMC0wMy0wMSAgSC5K LiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotICAgIAotICAgIAkqIGdkYi54bWwvdGRlc2Mt cmVncy5leHAgKGFyY2hpdGVjdHVyZSk6IE5ldy4gIFNldCBpdCBmb3IgeDg2LgotICAgIAkobG9h ZF9kZXNjcmlwdGlvbik6IFNldCBhcmNoaXRlY3R1cmUgaWYgZGVmaW5lZC4KLQotLS0tIC4vZ2Ri L2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAtMDQtMDMgMjA6MjQ6NTEuMDAwMDAwMDAwICswMjAwCi0r KysgLi9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAxMC0wNC0wMyAyMDo1OTo1Mi4wMDAwMDAwMDAg KzAyMDAKLUBAIC04MTcsNiArODE3LDM5IEBAIGFtZDY0X2xpbnV4X3NpZ2luZm9fZml4dXAgKHN0 cnVjdCBzaWdpbmYKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIEdldCBMaW51eC94ODYgdGFy Z2V0IGRlc2NyaXB0aW9uIGZyb20gcnVubmluZyB0YXJnZXQuCi0rCi0rICAgVmFsdWUgb2YgQ1Mg c2VnbWVudCByZWdpc3RlcjoKLSsgICAgIDEuIDY0Yml0IHByb2Nlc3M6IDB4MzMuCi0rICAgICAy LiAzMmJpdCBwcm9jZXNzOiAweDIzLgotKyAqLwotKwotKyNkZWZpbmUgQU1ENjRfTElOVVhfVVNF UjY0X0NTCTB4MzMKLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICoKLSthbWQ2 NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzKQotK3sKLSsg IHVuc2lnbmVkIGxvbmcgY3M7Ci0rICBpbnQgdGlkOwotKwotKyAgLyogR05VL0xpbnV4IExXUCBJ RCdzIGFyZSBwcm9jZXNzIElEJ3MuICAqLwotKyAgdGlkID0gVElER0VUIChpbmZlcmlvcl9wdGlk KTsKLSsgIGlmICh0aWQgPT0gMCkKLSsgICAgdGlkID0gUElER0VUIChpbmZlcmlvcl9wdGlkKTsg LyogTm90IGEgdGhyZWFkZWQgcHJvZ3JhbS4gICovCi0rCi0rICAvKiBHZXQgQ1MgcmVnaXN0ZXIu ICAqLwotKyAgZXJybm8gPSAwOwotKyAgY3MgPSBwdHJhY2UgKFBUUkFDRV9QRUVLVVNFUiwgdGlk LAotKwkgICAgICAgb2Zmc2V0b2YgKHN0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0LCBjcyksIDApOwot KyAgaWYgKGVycm5vICE9IDApCi0rICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIkNvdWxkbid0IGdl dCBDUyByZWdpc3RlciIpKTsKLSsKLSsgIGlmIChjcyA9PSBBTUQ2NF9MSU5VWF9VU0VSNjRfQ1Mp Ci0rICAgIHJldHVybiB0ZGVzY19hbWQ2NF9saW51eDsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIHRk ZXNjX2kzODZfbGludXg7Ci0rfQotKwotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5j ZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi0gdm9pZCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51 eF9uYXQgKHZvaWQpOwotIAotQEAgLTg2MSw2ICs4OTQsOCBAQCBfaW5pdGlhbGl6ZV9hbWQ2NF9s aW51eF9uYXQgKHZvaWQpCi0gICBsaW51eF9lbGZjb3JlX3dyaXRlX3Byc3RhdHVzID0gYW1kNjRf bGludXhfZWxmY29yZV93cml0ZV9wcnN0YXR1czsKLSAgIGxpbnV4X2VsZmNvcmVfd3JpdGVfcHJm cHJlZyA9IGFtZDY0X2xpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZzsKLSAKLSsgIHQtPnRvX3Jl YWRfZGVzY3JpcHRpb24gPSBhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uOwotKwotICAgLyog UmVnaXN0ZXIgdGhlIHRhcmdldC4gICovCi0gICBsaW51eF9uYXRfYWRkX3RhcmdldCAodCk7Ci0g ICBsaW51eF9uYXRfc2V0X25ld190aHJlYWQgKHQsIGFtZDY0X2xpbnV4X25ld190aHJlYWQpOwot LS0tIC4vZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEwLTA0LTAzIDIwOjI0OjUxLjAwMDAwMDAw MCArMDIwMAotKysrIC4vZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEwLTA0LTAzIDIwOjU5OjUy LjAwMDAwMDAwMCArMDIwMAotQEAgLTM3LDYgKzM3LDggQEAKLSAjaW5jbHVkZSAic29saWItc3Zy NC5oIgotICNpbmNsdWRlICJ4bWwtc3lzY2FsbC5oIgotIAotKyNpbmNsdWRlICJmZWF0dXJlcy9p Mzg2L2FtZDY0LWxpbnV4LmMiCi0rCi0gLyogVGhlIHN5c2NhbGwncyBYTUwgZmlsZW5hbWUgZm9y IGkzODYuICAqLwotICNkZWZpbmUgWE1MX1NZU0NBTExfRklMRU5BTUVfQU1ENjQgInN5c2NhbGxz L2FtZDY0LWxpbnV4LnhtbCIKLSAKLUBAIC0yMzQsMjYgKzIzNiw2IEBAIHN0YXRpYyBpbnQgYW1k NjRfbGludXhfc2NfcmVnX29mZnNldFtdID0KLSAgIC0xCQkJCS8qICVncyAqLwotIH07Ci0gCi0t LyogUmVwbGFjZW1lbnQgcmVnaXN0ZXIgZnVuY3Rpb25zIHdoaWNoIGtub3cgYWJvdXQgJW9yaWdf cmF4LiAgKi8KLS0KLS1zdGF0aWMgY29uc3QgY2hhciAqCi0tYW1kNjRfbGludXhfcmVnaXN0ZXJf bmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWcpCi0tewotLSAgaWYgKHJlZyA9 PSBBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0pCi0tICAgIHJldHVybiAib3JpZ19yYXgiOwot LQotLSAgcmV0dXJuIGFtZDY0X3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJlZyk7Ci0tfQotLQot LXN0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0tYW1kNjRfbGludXhfcmVnaXN0ZXJfdHlwZSAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWcpCi0tewotLSAgaWYgKHJlZyA9PSBBTUQ2NF9MSU5V WF9PUklHX1JBWF9SRUdOVU0pCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5i dWlsdGluX2ludDY0OwotLQotLSAgcmV0dXJuIGFtZDY0X3JlZ2lzdGVyX3R5cGUgKGdkYmFyY2gs IHJlZyk7Ci0tfQotLQotIHN0YXRpYyBpbnQKLSBhbWQ2NF9saW51eF9yZWdpc3Rlcl9yZWdncm91 cF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKLSAJCQkJIHN0cnVjdCBy ZWdncm91cCAqZ3JvdXApCi1AQCAtMTMzNCwxMCArMTMxNiwzMiBAQCBhbWQ2NF9saW51eF9yZWNv cmRfc2lnbmFsIChzdHJ1Y3QgZ2RiYXJjCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0rLyogR2V0IExp bnV4L3g4NiB0YXJnZXQgZGVzY3JpcHRpb24gZnJvbSBjb3JlIGR1bXAuICAqLwotKwotK3N0YXRp YyBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKgotK2FtZDY0X2xpbnV4X2NvcmVfcmVhZF9kZXNj cmlwdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJCSAgc3RydWN0IHRhcmdldF9v cHMgKnRhcmdldCwKLSsJCQkJICBiZmQgKmFiZmQpCi0rewotKyAgYXNlY3Rpb24gKnNlY3Rpb24g PSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi5yZWcyIik7Ci0rCi0rICBpZiAoc2Vj dGlvbiA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8qIExpbnV4L3g4Ni02NC4g ICovCi0rICByZXR1cm4gdGRlc2NfYW1kNjRfbGludXg7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0g YW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gpCi0gewotICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFy Y2hfdGRlcCAoZ2RiYXJjaCk7Ci0rICBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjID0g aW5mby50YXJnZXRfZGVzYzsKLSsgIHN0cnVjdCB0ZGVzY19hcmNoX2RhdGEgKnRkZXNjX2RhdGEg PSAodm9pZCAqKSBpbmZvLnRkZXBfaW5mbzsKLSsgIGNvbnN0IHN0cnVjdCB0ZGVzY19mZWF0dXJl ICpmZWF0dXJlOwotKyAgaW50IHZhbGlkX3A7Ci0rCi0rICBnZGJfYXNzZXJ0ICh0ZGVzY19kYXRh KTsKLSAKLSAgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IGFtZDY0X2xpbnV4X2dyZWdzZXRf cmVnX29mZnNldDsKLSAgIHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3MgPSBBUlJBWV9TSVpFIChhbWQ2 NF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXQpOwotQEAgLTEzNDUsNiArMTM0OSwyMyBAQCBhbWQ2 NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mCi0gCi0gICBhbWQ2NF9pbml0X2Fi aSAoaW5mbywgZ2RiYXJjaCk7Ci0gCi0rICAvKiBSZXNlcnZlIGEgbnVtYmVyIGZvciBvcmlnX3Jh eC4gICovCi0rICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgQU1ENjRfTElOVVhfTlVN X1JFR1MpOwotKwotKyAgaWYgKCEgdGRlc2NfaGFzX3JlZ2lzdGVycyAodGRlc2MpKQotKyAgICB0 ZGVzYyA9IHRkZXNjX2FtZDY0X2xpbnV4OwotKyAgdGRlcC0+dGRlc2MgPSB0ZGVzYzsKLSsKLSsg IGZlYXR1cmUgPSB0ZGVzY19maW5kX2ZlYXR1cmUgKHRkZXNjLCAib3JnLmdudS5nZGIuaTM4Ni5s aW51eCIpOwotKyAgaWYgKGZlYXR1cmUgPT0gTlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgdmFs aWRfcCA9IHRkZXNjX251bWJlcmVkX3JlZ2lzdGVyIChmZWF0dXJlLCB0ZGVzY19kYXRhLAotKwkJ CQkgICAgIEFNRDY0X0xJTlVYX09SSUdfUkFYX1JFR05VTSwKLSsJCQkJICAgICAib3JpZ19yYXgi KTsKLSsgIGlmICghdmFsaWRfcCkKLSsgICAgcmV0dXJuOwotKwotICAgdGRlcC0+c2lndHJhbXBf cCA9IGFtZDY0X2xpbnV4X3NpZ3RyYW1wX3A7Ci0gICB0ZGVwLT5zaWdjb250ZXh0X2FkZHIgPSBh bWQ2NF9saW51eF9zaWdjb250ZXh0X2FkZHI7Ci0gICB0ZGVwLT5zY19yZWdfb2Zmc2V0ID0gYW1k NjRfbGludXhfc2NfcmVnX29mZnNldDsKLUBAIC0xMzU4LDEwICsxMzc5LDggQEAgYW1kNjRfbGlu dXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgotIAotICAgLyogQWRkIHRoZSAlb3JpZ19y YXggcmVnaXN0ZXIgdXNlZCBmb3Igc3lzY2FsbCByZXN0YXJ0aW5nLiAgKi8KLSAgIHNldF9nZGJh cmNoX3dyaXRlX3BjIChnZGJhcmNoLCBhbWQ2NF9saW51eF93cml0ZV9wYyk7Ci0tICBzZXRfZ2Ri YXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgQU1ENjRfTElOVVhfTlVNX1JFR1MpOwotLSAgc2V0X2dk YmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgYW1kNjRfbGludXhfcmVnaXN0ZXJfbmFtZSk7 Ci0tICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBhbWQ2NF9saW51eF9yZWdp c3Rlcl90eXBlKTsKLS0gIHNldF9nZGJhcmNoX3JlZ2lzdGVyX3JlZ2dyb3VwX3AgKGdkYmFyY2gs IGFtZDY0X2xpbnV4X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOwotKwotKyAgdGRlcC0+cmVnaXN0ZXJf cmVnZ3JvdXBfcCA9IGFtZDY0X2xpbnV4X3JlZ2lzdGVyX3JlZ2dyb3VwX3A7Ci0gCi0gICAvKiBG dW5jdGlvbnMgZm9yICdjYXRjaCBzeXNjYWxsJy4gICovCi0gICBzZXRfeG1sX3N5c2NhbGxfZmls ZV9uYW1lIChYTUxfU1lTQ0FMTF9GSUxFTkFNRV9BTUQ2NCk7Ci1AQCAtMTM3NSw2ICsxMzk0LDkg QEAgYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgotICAgLyogR05VL0xp bnV4IHVzZXMgU1ZSNC1zdHlsZSBzaGFyZWQgbGlicmFyaWVzLiAgKi8KLSAgIHNldF9nZGJhcmNo X3NraXBfdHJhbXBvbGluZV9jb2RlIChnZGJhcmNoLCBmaW5kX3NvbGliX3RyYW1wb2xpbmVfdGFy Z2V0KTsKLSAKLSsgIHNldF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlvbiAoZ2RiYXJjaCwK LSsJCQkJICAgICBhbWQ2NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOwotKwotICAgLyog RGlzcGxhY2VkIHN0ZXBwaW5nLiAgKi8KLSAgIHNldF9nZGJhcmNoX2Rpc3BsYWNlZF9zdGVwX2Nv cHlfaW5zbiAoZ2RiYXJjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYW1kNjRfZGlzcGxhY2VkX3N0ZXBfY29weV9pbnNuKTsKLUBAIC0xNTcxLDQgKzE1OTMsNyBA QCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF90ZGVwICh2b2lkKQotIHsKLSAgIGdkYmFyY2hfcmVn aXN0ZXJfb3NhYmkgKGJmZF9hcmNoX2kzODYsIGJmZF9tYWNoX3g4Nl82NCwKLSAJCQkgIEdEQl9P U0FCSV9MSU5VWCwgYW1kNjRfbGludXhfaW5pdF9hYmkpOwotKwotKyAgLyogSW5pdGlhbGl6ZSB0 aGUgTGludXggdGFyZ2V0IGRlc2NyaXB0aW9uICAqLwotKyAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2 NF9saW51eCAoKTsKLSB9Ci0tLS0gLi9nZGIvYW1kNjQtbGludXgtdGRlcC5oCTIwMTAtMDEtMDEg MDg6MzE6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvYW1kNjQtbGludXgtdGRlcC5oCTIw MTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzEsNiArMzEsOSBAQAotIC8q IFRvdGFsIG51bWJlciBvZiByZWdpc3RlcnMgZm9yIEdOVS9MaW51eC4gICovCi0gI2RlZmluZSBB TUQ2NF9MSU5VWF9OVU1fUkVHUyAoQU1ENjRfTElOVVhfT1JJR19SQVhfUkVHTlVNICsgMSkKLSAK LSsvKiBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24uICAqLwotK2V4dGVybiBzdHJ1Y3QgdGFyZ2V0 X2Rlc2MgKnRkZXNjX2FtZDY0X2xpbnV4OwotKwotIC8qIEVudW0gdGhhdCBkZWZpbmVzIHRoZSBz eXNjYWxsIGlkZW50aWZpZXJzIGZvciBhbWQ2NCBsaW51eC4KLSAgICBVc2VkIGZvciBwcm9jZXNz IHJlY29yZC9yZXBsYXksIHRoZXNlIHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRvCi0gICAgYSBnZGIt Y2Fub25pY2FsIHNldCBvZiBzeXNjYWxsIGlkcyBpbiBsaW51eC1yZWNvcmQuYy4gICovCi0tLS0g Li9nZGIvYW1kNjQtdGRlcC5jCTIwMTAtMDQtMDMgMjA6MjQ6NTEuMDAwMDAwMDAwICswMjAwCi0r KysgLi9nZGIvYW1kNjQtdGRlcC5jCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAw Ci1AQCAtNDIsNiArNDIsOCBAQAotICNpbmNsdWRlICJhbWQ2NC10ZGVwLmgiCi0gI2luY2x1ZGUg ImkzODctdGRlcC5oIgotIAotKyNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LmMiCi0rCi0g LyogTm90ZSB0aGF0IHRoZSBBTUQ2NCBhcmNoaXRlY3R1cmUgd2FzIHByZXZpb3VzbHkga25vd24g YXMgeDg2LTY0LgotICAgIFRoZSBsYXR0ZXIgaXMgKGZvcmV2ZXIpIGVuZ3JhdmVkIGludG8gdGhl IGNhbm9uaWNhbCBzeXN0ZW0gbmFtZSBhcwotICAgIHJldHVybmVkIGJ5IGNvbmZpZy5ndWVzcywg YW5kIHVzZWQgYXMgdGhlIG5hbWUgZm9yIHRoZSBBTUQ2NCBwb3J0Ci1AQCAtODMsNDcgKzg1LDYg QEAgc3RhdGljIGludCBhbWQ2NF9kdW1teV9jYWxsX2ludGVnZXJfcmVncwotICAgOQkJCQkvKiAl cjkgKi8KLSB9OwotIAotLS8qIFJldHVybiB0aGUgbmFtZSBvZiByZWdpc3RlciBSRUdOVU0uICAq LwotLQotLWNvbnN0IGNoYXIgKgotLWFtZDY0X3JlZ2lzdGVyX25hbWUgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBpbnQgcmVnbnVtKQotLXsKLS0gIGlmIChyZWdudW0gPj0gMCAmJiByZWdudW0g PCBBTUQ2NF9OVU1fUkVHUykKLS0gICAgcmV0dXJuIGFtZDY0X3JlZ2lzdGVyX25hbWVzW3JlZ251 bV07Ci0tCi0tICByZXR1cm4gTlVMTDsKLS19Ci0tCi0tLyogUmV0dXJuIHRoZSBHREIgdHlwZSBv YmplY3QgZm9yIHRoZSAic3RhbmRhcmQiIGRhdGEgdHlwZSBvZiBkYXRhIGluCi0tICAgcmVnaXN0 ZXIgUkVHTlVNLiAqLwotLQotLXN0cnVjdCB0eXBlICoKLS1hbWQ2NF9yZWdpc3Rlcl90eXBlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkKLS17Ci0tICBpZiAocmVnbnVtID49 IEFNRDY0X1JBWF9SRUdOVU0gJiYgcmVnbnVtIDw9IEFNRDY0X1JESV9SRUdOVU0pCi0tICAgIHJl dHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDY0OwotLSAgaWYgKHJlZ251 bSA9PSBBTUQ2NF9SQlBfUkVHTlVNIHx8IHJlZ251bSA9PSBBTUQ2NF9SU1BfUkVHTlVNKQotLSAg ICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLS0gIGlm IChyZWdudW0gPj0gQU1ENjRfUjhfUkVHTlVNICYmIHJlZ251bSA8PSBBTUQ2NF9SMTVfUkVHTlVN KQotLSAgICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQ2NDsKLS0g IGlmIChyZWdudW0gPT0gQU1ENjRfUklQX1JFR05VTSkKLS0gICAgcmV0dXJuIGJ1aWx0aW5fdHlw ZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19wdHI7Ci0tICBpZiAocmVnbnVtID09IEFNRDY0X0VG TEFHU19SRUdOVU0pCi0tICAgIHJldHVybiBpMzg2X2VmbGFnc190eXBlIChnZGJhcmNoKTsKLS0g IGlmIChyZWdudW0gPj0gQU1ENjRfQ1NfUkVHTlVNICYmIHJlZ251bSA8PSBBTUQ2NF9HU19SRUdO VU0pCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDMyOwot LSAgaWYgKHJlZ251bSA+PSBBTUQ2NF9TVDBfUkVHTlVNICYmIHJlZ251bSA8PSBBTUQ2NF9TVDBf UkVHTlVNICsgNykKLS0gICAgcmV0dXJuIGkzODdfZXh0X3R5cGUgKGdkYmFyY2gpOwotLSAgaWYg KHJlZ251bSA+PSBBTUQ2NF9GQ1RSTF9SRUdOVU0gJiYgcmVnbnVtIDw9IEFNRDY0X0ZDVFJMX1JF R05VTSArIDcpCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2lu dDMyOwotLSAgaWYgKHJlZ251bSA+PSBBTUQ2NF9YTU0wX1JFR05VTSAmJiByZWdudW0gPD0gQU1E NjRfWE1NMF9SRUdOVU0gKyAxNSkKLS0gICAgcmV0dXJuIGkzODZfc3NlX3R5cGUgKGdkYmFyY2gp OwotLSAgaWYgKHJlZ251bSA9PSBBTUQ2NF9NWENTUl9SRUdOVU0pCi0tICAgIHJldHVybiBpMzg2 X214Y3NyX3R5cGUgKGdkYmFyY2gpOwotLQotLSAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBf X0xJTkVfXywgXygiaW52YWxpZCByZWdudW0iKSk7Ci0tfQotLQotIC8qIERXQVJGIFJlZ2lzdGVy IE51bWJlciBNYXBwaW5nIGFzIGRlZmluZWQgaW4gdGhlIFN5c3RlbSBWIHBzQUJJLAotICAgIHNl Y3Rpb24gMy42LiAgKi8KLSAKLUBAIC0yMTU4LDExICsyMTE5LDE5IEBAIHZvaWQKLSBhbWQ2NF9p bml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJh cmNoKTsKLSsgIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2MgPSBpbmZvLnRhcmdldF9k ZXNjOwotIAotICAgLyogQU1ENjQgZ2VuZXJhbGx5IHVzZXMgYGZ4c2F2ZScgaW5zdGVhZCBvZiBg ZnNhdmUnIGZvciBzYXZpbmcgaXRzCi0gICAgICBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAq LwotICAgdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0ID0gSTM4N19TSVpFT0ZfRlhTQVZFOwotIAotKyAg aWYgKCEgdGRlc2NfaGFzX3JlZ2lzdGVycyAodGRlc2MpKQotKyAgICB0ZGVzYyA9IHRkZXNjX2Ft ZDY0OwotKyAgdGRlcC0+dGRlc2MgPSB0ZGVzYzsKLSsKLSsgIHRkZXAtPm51bV9jb3JlX3JlZ3Mg PSBBTUQ2NF9OVU1fR1JFR1MgKyBJMzg3X05VTV9SRUdTOwotKyAgdGRlcC0+cmVnaXN0ZXJfbmFt ZXMgPSBhbWQ2NF9yZWdpc3Rlcl9uYW1lczsKLSsKLSAgIC8qIEFNRDY0IGhhcyBhbiBGUFUgYW5k IDE2IFNTRSByZWdpc3RlcnMuICAqLwotICAgdGRlcC0+c3QwX3JlZ251bSA9IEFNRDY0X1NUMF9S RUdOVU07Ci0gICB0ZGVwLT5udW1feG1tX3JlZ3MgPSAxNjsKLUBAIC0yMTc4LDggKzIxNDcsNiBA QCBhbWQ2NF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvCi0gICBzZXRfZ2RiYXJj aF9sb25nX2RvdWJsZV9iaXQgKGdkYmFyY2gsIDEyOCk7Ci0gCi0gICBzZXRfZ2RiYXJjaF9udW1f cmVncyAoZ2RiYXJjaCwgQU1ENjRfTlVNX1JFR1MpOwotLSAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJf bmFtZSAoZ2RiYXJjaCwgYW1kNjRfcmVnaXN0ZXJfbmFtZSk7Ci0tICBzZXRfZ2RiYXJjaF9yZWdp c3Rlcl90eXBlIChnZGJhcmNoLCBhbWQ2NF9yZWdpc3Rlcl90eXBlKTsKLSAKLSAgIC8qIFJlZ2lz dGVyIG51bWJlcnMgb2YgdmFyaW91cyBpbXBvcnRhbnQgcmVnaXN0ZXJzLiAgKi8KLSAgIHNldF9n ZGJhcmNoX3NwX3JlZ251bSAoZ2RiYXJjaCwgQU1ENjRfUlNQX1JFR05VTSk7IC8qICVyc3AgKi8K LUBAIC0yMjQxLDYgKzIyMDgsMTUgQEAgYW1kNjRfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2lu Zm8gaW5mbwotIAotICAgc2V0X2dkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLCBh bWQ2NF9nZXRfbG9uZ2ptcF90YXJnZXQpOwotIH0KLSsKLSsvKiBQcm92aWRlIGEgcHJvdG90eXBl IHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotK3ZvaWQgX2luaXRpYWxpemVf YW1kNjRfdGRlcCAodm9pZCk7Ci0rCi0rdm9pZAotK19pbml0aWFsaXplX2FtZDY0X3RkZXAgKHZv aWQpCi0rewotKyAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NCAoKTsKLSt9Ci0gDAotIAotIC8qIFRo ZSA2NC1iaXQgRlhTQVZFIGZvcm1hdCBkaWZmZXJzIGZyb20gdGhlIDMyLWJpdCBmb3JtYXQgaW4g dGhlCi0tLS0gLi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCTIwMTAtMDEtMDQgMTY6MDM6MDAu MDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCTIwMTAtMDQt MDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjAzLDkgKzIwMyw5IEBAIGNsZWFuOgot IAlybSAtZiAqLm8gJHtBRERfRklMRVN9ICp+Ci0gCXJtIC1mIHZlcnNpb24uYwotIAlybSAtZiBn ZGJzZXJ2ZXIkKEVYRUVYVCkgZ2RicmVwbGF5JChFWEVFWFQpIGNvcmUgbWFrZS5sb2cKLS0Jcm0g LWYgcmVnLWFybS5jIHJlZy1pMzg2LmMgcmVnLWlhNjQuYyByZWctbTMyci5jIHJlZy1tNjhrLmMK LS0Jcm0gLWYgcmVnLXNoLmMgcmVnLXNwYXJjLmMgcmVnLXNwdS5jIHJlZy14ODYtNjQuYyByZWct aTM4Ni1saW51eC5jCi0tCXJtIC1mIHJlZy1jcmlzLmMgcmVnLWNyaXN2MzIuYyByZWcteDg2LTY0 LWxpbnV4LmMgcmVnLXh0ZW5zYS5jCi0rCXJtIC1mIHJlZy1hcm0uYyBpMzg2LmMgcmVnLWlhNjQu YyByZWctbTMyci5jIHJlZy1tNjhrLmMKLSsJcm0gLWYgcmVnLXNoLmMgcmVnLXNwYXJjLmMgcmVn LXNwdS5jIGFtZDY0LmMgaTM4Ni1saW51eC5jCi0rCXJtIC1mIHJlZy1jcmlzLmMgcmVnLWNyaXN2 MzIuYyBhbWQ2NC1saW51eC5jIHJlZy14dGVuc2EuYwotIAlybSAtZiBhcm0td2l0aC1pd21teHQu YwotIAlybSAtZiBhcm0td2l0aC12ZnB2Mi5jIGFybS13aXRoLXZmcHYzLmMgYXJtLXdpdGgtbmVv bi5jCi0gCXJtIC1mIG1pcHMtbGludXguYyBtaXBzNjQtbGludXguYwotQEAgLTM0NSwxMiArMzQ1 LDEyIEBAIHJlZy1jcmlzLmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWcKLSByZWctY3Jp c3YzMi5vIDogcmVnLWNyaXN2MzIuYyAkKHJlZ2RlZl9oKQotIHJlZy1jcmlzdjMyLmMgOiAkKHNy Y2RpcikvLi4vcmVnZm9ybWF0cy9yZWctY3Jpc3YzMi5kYXQgJChyZWdkYXRfc2gpCi0gCSQoU0hF TEwpICQocmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWctY3Jpc3YzMi5kYXQg cmVnLWNyaXN2MzIuYwotLXJlZy1pMzg2Lm8gOiByZWctaTM4Ni5jICQocmVnZGVmX2gpCi0tcmVn LWkzODYuYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL3JlZy1pMzg2LmRhdCAkKHJlZ2RhdF9z aCkKLS0JJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL3JlZy1p Mzg2LmRhdCByZWctaTM4Ni5jCi0tcmVnLWkzODYtbGludXgubyA6IHJlZy1pMzg2LWxpbnV4LmMg JChyZWdkZWZfaCkKLS1yZWctaTM4Ni1saW51eC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMv cmVnLWkzODYtbGludXguZGF0ICQocmVnZGF0X3NoKQotLQkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkg JChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvcmVnLWkzODYtbGludXguZGF0IHJlZy1pMzg2LWxpbnV4 LmMKLStpMzg2Lm8gOiBpMzg2LmMgJChyZWdkZWZfaCkKLStpMzg2LmMgOiAkKHNyY2RpcikvLi4v cmVnZm9ybWF0cy9pMzg2L2kzODYuZGF0ICQocmVnZGF0X3NoKQotKwkkKFNIRUxMKSAkKHJlZ2Rh dF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LmRhdCBpMzg2LmMKLStpMzg2 LWxpbnV4Lm8gOiBpMzg2LWxpbnV4LmMgJChyZWdkZWZfaCkKLStpMzg2LWxpbnV4LmMgOiAkKHNy Y2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2kzODYtbGludXguZGF0ICQocmVnZGF0X3NoKQotKwkk KFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWxp bnV4LmRhdCBpMzg2LWxpbnV4LmMKLSByZWctaWE2NC5vIDogcmVnLWlhNjQuYyAkKHJlZ2RlZl9o KQotIHJlZy1pYTY0LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWctaWE2NC5kYXQgJChy ZWdkYXRfc2gpCi0gCSQoU0hFTEwpICQocmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0 cy9yZWctaWE2NC5kYXQgcmVnLWlhNjQuYwotQEAgLTQzMiwxMiArNDMyLDEyIEBAIHJlZy1zcGFy YzY0LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy8KLSByZWctc3B1Lm8gOiByZWctc3B1LmMg JChyZWdkZWZfaCkKLSByZWctc3B1LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWctc3B1 LmRhdCAkKHJlZ2RhdF9zaCkKLSAJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9y ZWdmb3JtYXRzL3JlZy1zcHUuZGF0IHJlZy1zcHUuYwotLXJlZy14ODYtNjQubyA6IHJlZy14ODYt NjQuYyAkKHJlZ2RlZl9oKQotLXJlZy14ODYtNjQuYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRz L3JlZy14ODYtNjQuZGF0ICQocmVnZGF0X3NoKQotLQkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChz cmNkaXIpLy4uL3JlZ2Zvcm1hdHMvcmVnLXg4Ni02NC5kYXQgcmVnLXg4Ni02NC5jCi0tcmVnLXg4 Ni02NC1saW51eC5vIDogcmVnLXg4Ni02NC1saW51eC5jICQocmVnZGVmX2gpCi0tcmVnLXg4Ni02 NC1saW51eC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1saW51eC5kYXQg JChyZWdkYXRfc2gpCi0tCSQoU0hFTEwpICQocmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9y bWF0cy9yZWcteDg2LTY0LWxpbnV4LmRhdCByZWcteDg2LTY0LWxpbnV4LmMKLSthbWQ2NC5vIDog YW1kNjQuYyAkKHJlZ2RlZl9oKQotK2FtZDY0LmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9p Mzg2L2FtZDY0LmRhdCAkKHJlZ2RhdF9zaCkKLSsJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3Jj ZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvYW1kNjQuZGF0IGFtZDY0LmMKLSthbWQ2NC1saW51eC5v IDogYW1kNjQtbGludXguYyAkKHJlZ2RlZl9oKQotK2FtZDY0LWxpbnV4LmMgOiAkKHNyY2Rpcikv Li4vcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWxpbnV4LmRhdCAkKHJlZ2RhdF9zaCkKLSsJJChTSEVM TCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvYW1kNjQtbGludXgu ZGF0IGFtZDY0LWxpbnV4LmMKLSByZWcteHRlbnNhLm8gOiByZWcteHRlbnNhLmMgJChyZWdkZWZf aCkKLSByZWcteHRlbnNhLmMgOiAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWcteHRlbnNhLmRh dCAkKHJlZ2RhdF9zaCkKLSAJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdm b3JtYXRzL3JlZy14dGVuc2EuZGF0IHJlZy14dGVuc2EuYwotLS0tIC4vZ2RiL2dkYnNlcnZlci9j b25maWd1cmUuc3J2CTIwMTAtMDEtMDQgMTY6MDM6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9n ZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYJMjAxMC0wNC0wMyAyMDo1OTo1Mi4wMDAwMDAwMDAg KzAyMDAKLUBAIC0yMiw2ICsyMiwxOCBAQAotICMgRGVmYXVsdCBob3N0aW9fbGFzdF9lcnJvciBp bXBsZW1lbnRhdGlvbgotIHNydl9ob3N0aW9fZXJyX29ianM9Imhvc3Rpby1lcnJuby5vIgotIAot K3Nydl9pMzg2X3JlZ29iaj1pMzg2Lm8KLStzcnZfaTM4Nl9saW51eF9yZWdvYmo9aTM4Ni1saW51 eC5vCi0rc3J2X2FtZDY0X3JlZ29iaj1hbWQ2NC5vCi0rc3J2X2FtZDY0X2xpbnV4X3JlZ29iaj1h bWQ2NC1saW51eC5vCi0rCi0rc3J2X2kzODZfMzJiaXRfeG1sZmlsZXM9ImkzODYvMzJiaXQtY29y ZS54bWwgaTM4Ni8zMmJpdC1zc2UueG1sIgotK3Nydl9pMzg2XzY0Yml0X3htbGZpbGVzPSJpMzg2 LzY0Yml0LWNvcmUueG1sIGkzODYvNjRiaXQtc3NlLnhtbCIKLStzcnZfaTM4Nl94bWxmaWxlcz0i aTM4Ni9pMzg2LnhtbCAkc3J2X2kzODZfMzJiaXRfeG1sZmlsZXMiCi0rc3J2X2FtZDY0X3htbGZp bGVzPSJpMzg2L2FtZDY0LnhtbCAkc3J2X2kzODZfNjRiaXRfeG1sZmlsZXMiCi0rc3J2X2kzODZf bGludXhfeG1sZmlsZXM9ImkzODYvaTM4Ni1saW51eC54bWwgaTM4Ni8zMmJpdC1saW51eC54bWwg JHNydl9pMzg2XzMyYml0X3htbGZpbGVzIgotK3Nydl9hbWQ2NF9saW51eF94bWxmaWxlcz0iaTM4 Ni9hbWQ2NC1saW51eC54bWwgaTM4Ni82NGJpdC1saW51eC54bWwgJHNydl9pMzg2XzY0Yml0X3ht bGZpbGVzIgotKwotICMgSW5wdXQgaXMgdGFrZW4gZnJvbSB0aGUgIiR7dGFyZ2V0fSIgdmFyaWFi bGUuCi0gCi0gY2FzZSAiJHt0YXJnZXR9IiBpbgotQEAgLTYwLDEyICs3MiwxNSBAQCBjYXNlICIk e3RhcmdldH0iIGluCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVzCi0gCQkJc3J2X2xpbnV4X3Ro cmVhZF9kYj15ZXMKLSAJCQk7OwotLSAgaVszNDU2N104Ni0qLWN5Z3dpbiopCXNydl9yZWdvYmo9 cmVnLWkzODYubwotKyAgaVszNDU2N104Ni0qLWN5Z3dpbiopCXNydl9yZWdvYmo9IiRzcnZfaTM4 Nl9yZWdvYmoiCi0gCQkJc3J2X3RndG9iaj0iaTM4Ni1sb3cubyB3aW4zMi1sb3cubyB3aW4zMi1p Mzg2LWxvdy5vIgotKwkJCXNydl94bWxmaWxlcz0iJHNydl9pMzg2X3htbGZpbGVzIgotIAkJCTs7 Ci0tICBpWzM0NTY3XTg2LSotbGludXgqKQlzcnZfcmVnb2JqPXJlZy1pMzg2LWxpbnV4Lm8KLSsg IGlbMzQ1NjddODYtKi1saW51eCopCXNydl9yZWdvYmo9IiRzcnZfaTM4Nl9saW51eF9yZWdvYmoi Ci0rCQkJc3J2X3htbGZpbGVzPSIkc3J2X2kzODZfbGludXhfeG1sZmlsZXMiCi0gCQkJaWYgdGVz dCAiJGdkYl9jdl9pMzg2X2lzX3g4Nl82NCIgPSB5ZXMgOyB0aGVuCi0tCQkJICAgIHNydl9yZWdv Ymo9InJlZy14ODYtNjQtbGludXgubyAkc3J2X3JlZ29iaiIKLSsJCQkgICAgc3J2X3JlZ29iaj0i JHNydl9yZWdvYmogJHNydl9hbWQ2NF9saW51eF9yZWdvYmoiCi0rCQkJICAgIHNydl94bWxmaWxl cz0iJHtzcnZfeG1sZmlsZXN9ICRzcnZfYW1kNjRfbGludXhfeG1sZmlsZXMiCi0gCQkJZmkKLSAJ CQlzcnZfdGd0b2JqPSJsaW51eC1sb3cubyBsaW51eC14ODYtbG93Lm8gaTM4Ni1sb3cubyBpMzg3 LWZwLm8iCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVzCi1AQCAtNzMsMjAgKzg4LDIzIEBAIGNh c2UgIiR7dGFyZ2V0fSIgaW4KLSAJCQlzcnZfbGludXhfdGhyZWFkX2RiPXllcwotIAkJCTs7Ci0g ICBpWzM0NTY3XTg2LSotbWluZ3czMmNlKikKLS0JCQlzcnZfcmVnb2JqPXJlZy1pMzg2Lm8KLSsJ CQlzcnZfcmVnb2JqPSIkc3J2X2kzODZfcmVnb2JqIgotIAkJCXNydl90Z3RvYmo9ImkzODYtbG93 Lm8gd2luMzItbG93Lm8gd2luMzItaTM4Ni1sb3cubyIKLSAJCQlzcnZfdGd0b2JqPSIke3Nydl90 Z3RvYmp9IHdpbmNlY29tcGF0Lm8iCi0rCQkJc3J2X3htbGZpbGVzPSIkc3J2X2kzODZfeG1sZmls ZXMiCi0gCQkJIyBob3N0aW9fbGFzdF9lcnJvciBpbXBsZW1lbnRhdGlvbiBpcyBpbiB3aW4zMi1s b3cuYwotIAkJCXNydl9ob3N0aW9fZXJyX29ianM9IiIKLSAJCQlzcnZfbWluZ3c9eWVzCi0gCQkJ c3J2X21pbmd3Y2U9eWVzCi0gCQkJOzsKLS0gIGlbMzQ1NjddODYtKi1taW5ndyopCXNydl9yZWdv Ymo9cmVnLWkzODYubwotKyAgaVszNDU2N104Ni0qLW1pbmd3KikJc3J2X3JlZ29iaj0iJHNydl9p Mzg2X3JlZ29iaiIKLSAJCQlzcnZfdGd0b2JqPSJpMzg2LWxvdy5vIHdpbjMyLWxvdy5vIHdpbjMy LWkzODYtbG93Lm8iCi0rCQkJc3J2X3htbGZpbGVzPSIkc3J2X2kzODZfeG1sZmlsZXMiCi0gCQkJ c3J2X21pbmd3PXllcwotIAkJCTs7Ci0tICBpWzM0NTY3XTg2LSotbnRvKikJc3J2X3JlZ29iaj1y ZWctaTM4Ni5vCi0rICBpWzM0NTY3XTg2LSotbnRvKikJc3J2X3JlZ29iaj0iJHNydl9pMzg2X3Jl Z29iaiIKLSAJCQlzcnZfdGd0b2JqPSJudG8tbG93Lm8gbnRvLXg4Ni1sb3cubyIKLSsJCQlzcnZf eG1sZmlsZXM9IiRzcnZfaTM4Nl94bWxmaWxlcyIKLSAJCQlzcnZfcW54PSJ5ZXMiCi0gCQkJOzsK LSAgIGlhNjQtKi1saW51eCopCXNydl9yZWdvYmo9cmVnLWlhNjQubwotQEAgLTIwNiw4ICsyMjQs OSBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICBzcHUqLSotKikJCXNydl9yZWdvYmo9cmVnLXNw dS5vCi0gCQkJc3J2X3RndG9iaj0ic3B1LWxvdy5vIgotIAkJCTs7Ci0tICB4ODZfNjQtKi1saW51 eCopCXNydl9yZWdvYmo9InJlZy14ODYtNjQtbGludXgubyByZWctaTM4Ni1saW51eC5vIgotKyAg eDg2XzY0LSotbGludXgqKQlzcnZfcmVnb2JqPSIkc3J2X2FtZDY0X2xpbnV4X3JlZ29iaiAkc3J2 X2kzODZfbGludXhfcmVnb2JqIgotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4LXg4 Ni1sb3cubyBpMzg2LWxvdy5vIGkzODctZnAubyIKLSsJCQlzcnZfeG1sZmlsZXM9IiRzcnZfaTM4 Nl9saW51eF94bWxmaWxlcyAkc3J2X2FtZDY0X2xpbnV4X3htbGZpbGVzIgotIAkJCXNydl9saW51 eF91c3JyZWdzPXllcyAjIFRoaXMgaXMgZm9yIGkzODYgcHJvZ3MuCi0gCQkJc3J2X2xpbnV4X3Jl Z3NldHM9eWVzCi0gCQkJc3J2X2xpbnV4X3RocmVhZF9kYj15ZXMKLS0tLSAuL2dkYi9nZGJzZXJ2 ZXIvbGludXgteDg2LWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0r KysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuYwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAw MDAwMDAwMCArMDIwMAotQEAgLTI3LDEwICsyNywxMCBAQAotIAotICNpbmNsdWRlICJnZGJfcHJv Y19zZXJ2aWNlLmgiCi0gCi0tLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIHJlZy1p Mzg2LWxpbnV4LmMuICAqLwotKy8qIERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBpMzg2 LWxpbnV4LmMuICAqLwotIHZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eCAodm9pZCk7Ci0t LyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIHJlZy14ODYtNjQtbGludXguYy4gICov Ci0tdm9pZCBpbml0X3JlZ2lzdGVyc194ODZfNjRfbGludXggKHZvaWQpOwotKy8qIERlZmluZWQg aW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBhbWQ2NC1saW51eC5jLiAgKi8KLSt2b2lkIGluaXRfcmVn aXN0ZXJzX2FtZDY0X2xpbnV4ICh2b2lkKTsKLSAKLSAjaW5jbHVkZSA8c3lzL3JlZy5oPgotICNp bmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci1AQCAtNzkyLDcgKzc5Miw3IEBAIHg4Nl9hcmNoX3NldHVw ICh2b2lkKQotICAgICB9Ci0gICBlbHNlIGlmICh1c2VfNjRiaXQpCi0gICAgIHsKLS0gICAgICBp bml0X3JlZ2lzdGVyc194ODZfNjRfbGludXggKCk7Ci0rICAgICAgaW5pdF9yZWdpc3RlcnNfYW1k NjRfbGludXggKCk7Ci0gCi0gICAgICAgLyogQW1kNjQgZG9lc24ndCBoYXZlIEhBVkVfTElOVVhf VVNSUkVHUy4gICovCi0gICAgICAgdGhlX2xvd190YXJnZXQubnVtX3JlZ3MgPSAtMTsKLS0tLSAu L2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIwMTAtMDQtMDMgMjA6MjQ6NTEuMDAwMDAwMDAwICswMjAw Ci0rKysgLi9nZGIvaTM4Ni1saW51eC1uYXQuYwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAw MCArMDIwMAotQEAgLTg2OCw2ICs4NjgsMTQgQEAgaTM4Nl9saW51eF9jaGlsZF9wb3N0X3N0YXJ0 dXBfaW5mZXJpb3IgKAotICAgc3VwZXJfcG9zdF9zdGFydHVwX2luZmVyaW9yIChwdGlkKTsKLSB9 Ci0gCi0rLyogR2V0IExpbnV4L3g4NiB0YXJnZXQgZGVzY3JpcHRpb24gZnJvbSBydW5uaW5nIHRh cmdldC4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqCi0raTM4Nl9s aW51eF9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzKQotK3sKLSsgIHJl dHVybiB0ZGVzY19pMzg2X2xpbnV4OwotK30KLSsKLSB2b2lkCi0gX2luaXRpYWxpemVfaTM4Nl9s aW51eF9uYXQgKHZvaWQpCi0gewotQEAgLTg5Nyw2ICs5MDUsOCBAQCBfaW5pdGlhbGl6ZV9pMzg2 X2xpbnV4X25hdCAodm9pZCkKLSAgIHQtPnRvX2ZldGNoX3JlZ2lzdGVycyA9IGkzODZfbGludXhf ZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzOwotICAgdC0+dG9fc3RvcmVfcmVnaXN0ZXJzID0gaTM4 Nl9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnM7Ci0gCi0rICB0LT50b19yZWFkX2Rlc2Ny aXB0aW9uID0gaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uOwotKwotICAgLyogUmVnaXN0ZXIg dGhlIHRhcmdldC4gICovCi0gICBsaW51eF9uYXRfYWRkX3RhcmdldCAodCk7Ci0gICBsaW51eF9u YXRfc2V0X25ld190aHJlYWQgKHQsIGkzODZfbGludXhfbmV3X3RocmVhZCk7Ci0tLS0gLi9nZGIv aTM4Ni1saW51eC10ZGVwLmMJMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAwMDAgKzAyMDAKLSsr KyAuL2dkYi9pMzg2LWxpbnV4LXRkZXAuYwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTQ2LDYgKzQ2LDggQEAKLSAjaW5jbHVkZSAibGludXgtcmVjb3JkLmgiCi0gI2lu Y2x1ZGUgPHN0ZGludC5oPgotIAotKyNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYtbGludXgu YyIKLSsKLSAvKiBTdXBwb3J0ZWQgcmVnaXN0ZXIgbm90ZSBzZWN0aW9ucy4gICovCi0gc3RhdGlj IHN0cnVjdCBjb3JlX3JlZ3NldF9zZWN0aW9uIGkzODZfbGludXhfcmVnc2V0X3NlY3Rpb25zW10g PQotIHsKLUBAIC01NSwxOCArNTcsNiBAQCBzdGF0aWMgc3RydWN0IGNvcmVfcmVnc2V0X3NlY3Rp b24gaTM4Nl9sCi0gICB7IE5VTEwsIDAgfQotIH07Ci0gCi0tLyogUmV0dXJuIHRoZSBuYW1lIG9m IHJlZ2lzdGVyIFJFRy4gICovCi0tCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotLWkzODZfbGludXhf cmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWcpCi0tewotLSAg LyogRGVhbCB3aXRoIHRoZSBleHRyYSAib3JpZ19lYXgiIHBzZXVkbyByZWdpc3Rlci4gICovCi0t ICBpZiAocmVnID09IEkzODZfTElOVVhfT1JJR19FQVhfUkVHTlVNKQotLSAgICByZXR1cm4gIm9y aWdfZWF4IjsKLS0KLS0gIHJldHVybiBpMzg2X3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJlZyk7 Ci0tfQotLQotIC8qIFJldHVybiBub24temVybywgd2hlbiB0aGUgcmVnaXN0ZXIgaXMgaW4gdGhl IGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIKLSAgICBncm91cC4gIFB1dCB0aGUgTElOVVhfT1JJR19F QVggcmVnaXN0ZXIgaW4gdGhlIHN5c3RlbSBncm91cC4gICovCi0gc3RhdGljIGludAotQEAgLTU3 MCwyMSArNTYwLDU3IEBAIHN0YXRpYyBpbnQgaTM4Nl9saW51eF9zY19yZWdfb2Zmc2V0W10gPQot ICAgMCAqIDQJCQkJLyogJWdzICovCi0gfTsKLSAKLSsvKiBHZXQgTGludXgveDg2IHRhcmdldCBk ZXNjcmlwdGlvbiBmcm9tIGNvcmUgZHVtcC4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCB0 YXJnZXRfZGVzYyAqCi0raTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24gKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAotKwkJCQkgIHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCi0rCQkJ CSAgYmZkICphYmZkKQotK3sKLSsgIGFzZWN0aW9uICpzZWN0aW9uID0gYmZkX2dldF9zZWN0aW9u X2J5X25hbWUgKGFiZmQsICIucmVnMiIpOwotKwotKyAgaWYgKHNlY3Rpb24gPT0gTlVMTCkKLSsg ICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAvKiBMaW51eC9pMzg2LiAgKi8KLSsgIHJldHVybiB0ZGVz Y19pMzg2X2xpbnV4OwotK30KLSsKLSBzdGF0aWMgdm9pZAotIGkzODZfbGludXhfaW5pdF9hYmkg KHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gewot ICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0r ICBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjID0gaW5mby50YXJnZXRfZGVzYzsKLSsg IHN0cnVjdCB0ZGVzY19hcmNoX2RhdGEgKnRkZXNjX2RhdGEgPSAodm9pZCAqKSBpbmZvLnRkZXBf aW5mbzsKLSsgIGNvbnN0IHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlOwotKyAgaW50IHZh bGlkX3A7Ci0rCi0rICBnZGJfYXNzZXJ0ICh0ZGVzY19kYXRhKTsKLSAKLSAgIC8qIEdOVS9MaW51 eCB1c2VzIEVMRi4gICovCi0gICBpMzg2X2VsZl9pbml0X2FiaSAoaW5mbywgZ2RiYXJjaCk7Ci0g Ci0tICAvKiBTaW5jZSB3ZSBoYXZlIHRoZSBleHRyYSAib3JpZ19lYXgiIHJlZ2lzdGVyIG9uIEdO VS9MaW51eCwgd2UgaGF2ZQotLSAgICAgdG8gYWRqdXN0IGEgZmV3IHRoaW5ncy4gICovCi0rICAv KiBSZXNlcnZlIGEgbnVtYmVyIGZvciBvcmlnX2VheC4gICovCi0rICBzZXRfZ2RiYXJjaF9udW1f cmVncyAoZ2RiYXJjaCwgSTM4Nl9MSU5VWF9OVU1fUkVHUyk7Ci0rCi0rICBpZiAoISB0ZGVzY19o YXNfcmVnaXN0ZXJzICh0ZGVzYykpCi0rICAgIHRkZXNjID0gdGRlc2NfaTM4Nl9saW51eDsKLSsg IHRkZXAtPnRkZXNjID0gdGRlc2M7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfZmluZF9mZWF0dXJl ICh0ZGVzYywgIm9yZy5nbnUuZ2RiLmkzODYubGludXgiKTsKLSsgIGlmIChmZWF0dXJlID09IE5V TEwpCi0rICAgIHJldHVybjsKLSsKLSsgIHZhbGlkX3AgPSB0ZGVzY19udW1iZXJlZF9yZWdpc3Rl ciAoZmVhdHVyZSwgdGRlc2NfZGF0YSwKLSsJCQkJICAgICBJMzg2X0xJTlVYX09SSUdfRUFYX1JF R05VTSwKLSsJCQkJICAgICAib3JpZ19lYXgiKTsKLSsgIGlmICghdmFsaWRfcCkKLSsgICAgcmV0 dXJuOwotIAotKyAgLyogQWRkIHRoZSAlb3JpZ19lYXggcmVnaXN0ZXIgdXNlZCBmb3Igc3lzY2Fs bCByZXN0YXJ0aW5nLiAgKi8KLSAgIHNldF9nZGJhcmNoX3dyaXRlX3BjIChnZGJhcmNoLCBpMzg2 X2xpbnV4X3dyaXRlX3BjKTsKLS0gIHNldF9nZGJhcmNoX251bV9yZWdzIChnZGJhcmNoLCBJMzg2 X0xJTlVYX05VTV9SRUdTKTsKLS0gIHNldF9nZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gs IGkzODZfbGludXhfcmVnaXN0ZXJfbmFtZSk7Ci0tICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9yZWdn cm91cF9wIChnZGJhcmNoLCBpMzg2X2xpbnV4X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOwotKwotKyAg dGRlcC0+cmVnaXN0ZXJfcmVnZ3JvdXBfcCA9IGkzODZfbGludXhfcmVnaXN0ZXJfcmVnZ3JvdXBf cDsKLSAKLSAgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IGkzODZfbGludXhfZ3JlZ3NldF9y ZWdfb2Zmc2V0OwotICAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IEFSUkFZX1NJWkUgKGkzODZf bGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0KTsKLUBAIC03ODMsNiArODA5LDkgQEAgaTM4Nl9saW51 eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbwotICAgLyogSW5zdGFsbCBzdXBwb3J0ZWQg cmVnaXN0ZXIgbm90ZSBzZWN0aW9ucy4gICovCi0gICBzZXRfZ2RiYXJjaF9jb3JlX3JlZ3NldF9z ZWN0aW9ucyAoZ2RiYXJjaCwgaTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMpOwotIAotKyAgc2V0 X2dkYmFyY2hfY29yZV9yZWFkX2Rlc2NyaXB0aW9uIChnZGJhcmNoLAotKwkJCQkgICAgIGkzODZf bGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTsKLSsKLSAgIC8qIERpc3BsYWNlZCBzdGVwcGlu Zy4gICovCi0gICBzZXRfZ2RiYXJjaF9kaXNwbGFjZWRfc3RlcF9jb3B5X2luc24gKGdkYmFyY2gs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZV9kaXNwbGFj ZWRfc3RlcF9jb3B5X2luc24pOwotQEAgLTgxMSw0ICs4NDAsNyBAQCBfaW5pdGlhbGl6ZV9pMzg2 X2xpbnV4X3RkZXAgKHZvaWQpCi0gewotICAgZ2RiYXJjaF9yZWdpc3Rlcl9vc2FiaSAoYmZkX2Fy Y2hfaTM4NiwgMCwgR0RCX09TQUJJX0xJTlVYLAotIAkJCSAgaTM4Nl9saW51eF9pbml0X2FiaSk7 Ci0rCi0rICAvKiBJbml0aWFsaXplIHRoZSBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24gICovCi0r ICBpbml0aWFsaXplX3RkZXNjX2kzODZfbGludXggKCk7Ci0gfQotLS0tIC4vZ2RiL2kzODYtbGlu dXgtdGRlcC5oCTIwMTAtMDEtMDEgMDg6MzE6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIv aTM4Ni1saW51eC10ZGVwLmgJMjAxMC0wNC0wMyAyMDo1OTo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBA IC0zNSw0ICszNSw3IEBACi0gLyogVG90YWwgbnVtYmVyIG9mIHJlZ2lzdGVycyBmb3IgR05VL0xp bnV4LiAgKi8KLSAjZGVmaW5lIEkzODZfTElOVVhfTlVNX1JFR1MgKEkzODZfTElOVVhfT1JJR19F QVhfUkVHTlVNICsgMSkKLSAKLSsvKiBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24uICAqLwotK2V4 dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfbGludXg7Ci0rCi0gI2VuZGlmIC8q IGkzODYtbGludXgtdGRlcC5oICovCi0tLS0gLi9nZGIvaTM4Ni1udG8tdGRlcC5jCTIwMTAtMDEt MDEgMDg6MzE6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvaTM4Ni1udG8tdGRlcC5jCTIw MTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTIyLDcgKzEyMiw3IEBAIGkz ODZudG9fcmVnc2V0X2lkIChpbnQgcmVnbm8pCi0gICAgIHJldHVybiBOVE9fUkVHX0VORDsKLSAg IGVsc2UgaWYgKHJlZ25vIDwgSTM4Nl9OVU1fR1JFR1MpCi0gICAgIHJldHVybiBOVE9fUkVHX0dF TkVSQUw7Ci0tICBlbHNlIGlmIChyZWdubyA8IEkzODZfTlVNX0dSRUdTICsgSTM4Nl9OVU1fRlJF R1MpCi0rICBlbHNlIGlmIChyZWdubyA8IEkzODZfTlVNX0dSRUdTICsgSTM4N19OVU1fUkVHUykK LSAgICAgcmV0dXJuIE5UT19SRUdfRkxPQVQ7Ci0gICBlbHNlIGlmIChyZWdubyA8IEkzODZfU1NF X05VTV9SRUdTKQotICAgICByZXR1cm4gTlRPX1JFR19GTE9BVDsgLyogV2Ugc3RvcmUgeG1tIHJl Z2lzdGVycyBpbiBmeHNhdmVfYXJlYS4gICovCi0tLS0gLi9nZGIvaTM4Ni10ZGVwLmMJMjAxMC0w NC0wMyAyMDoyNDo1MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dkYi9pMzg2LXRkZXAuYwkyMDEw LTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTU0LDkgKzU0LDExIEBACi0gI2lu Y2x1ZGUgInJlY29yZC5oIgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSsjaW5jbHVkZSAiZmVh dHVyZXMvaTM4Ni9pMzg2LmMiCi0rCi0gLyogUmVnaXN0ZXIgbmFtZXMuICAqLwotIAotLXN0YXRp YyBjaGFyICppMzg2X3JlZ2lzdGVyX25hbWVzW10gPQotK3N0YXRpYyBjb25zdCBjaGFyICppMzg2 X3JlZ2lzdGVyX25hbWVzW10gPQotIHsKLSAgICJlYXgiLCAgICJlY3giLCAgICAiZWR4IiwgICAi ZWJ4IiwKLSAgICJlc3AiLCAgICJlYnAiLCAgICAiZXNpIiwgICAiZWRpIiwKLUBAIC03MSwxMSAr NzMsOSBAQCBzdGF0aWMgY2hhciAqaTM4Nl9yZWdpc3Rlcl9uYW1lc1tdID0KLSAgICJteGNzciIK LSB9OwotIAotLXN0YXRpYyBjb25zdCBpbnQgaTM4Nl9udW1fcmVnaXN0ZXJfbmFtZXMgPSBBUlJB WV9TSVpFIChpMzg2X3JlZ2lzdGVyX25hbWVzKTsKLS0KLSAvKiBSZWdpc3RlciBuYW1lcyBmb3Ig TU1YIHBzZXVkby1yZWdpc3RlcnMuICAqLwotIAotLXN0YXRpYyBjaGFyICppMzg2X21teF9uYW1l c1tdID0KLStzdGF0aWMgY29uc3QgY2hhciAqaTM4Nl9tbXhfbmFtZXNbXSA9Ci0gewotICAgIm1t MCIsICJtbTEiLCAibW0yIiwgIm1tMyIsCi0gICAibW00IiwgIm1tNSIsICJtbTYiLCAibW03Igot QEAgLTE0NywxNiArMTQ3LDExIEBAIGkzODZfZnBjX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXIKLSAKLSAvKiBSZXR1cm4gdGhlIG5hbWUgb2YgcmVnaXN0ZXIgUkVHTlVNLiAgKi8KLSAK LS1jb25zdCBjaGFyICoKLS1pMzg2X3JlZ2lzdGVyX25hbWUgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBpbnQgcmVnbnVtKQotK3N0YXRpYyBjb25zdCBjaGFyICoKLStpMzg2X3BzZXVkb19yZWdp c3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkKLSB7Ci0tICBp ZiAoaTM4Nl9tbXhfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0tICAgIHJldHVybiBpMzg2 X21teF9uYW1lc1tyZWdudW0gLSBJMzg3X01NMF9SRUdOVU0gKGdkYmFyY2hfdGRlcCAoZ2RiYXJj aCkpXTsKLS0KLS0gIGlmIChyZWdudW0gPj0gMCAmJiByZWdudW0gPCBpMzg2X251bV9yZWdpc3Rl cl9uYW1lcykKLS0gICAgcmV0dXJuIGkzODZfcmVnaXN0ZXJfbmFtZXNbcmVnbnVtXTsKLS0KLS0g IHJldHVybiBOVUxMOwotKyAgZ2RiX2Fzc2VydCAoaTM4Nl9tbXhfcmVnbnVtX3AgKGdkYmFyY2gs IHJlZ251bSkpOwotKyAgcmV0dXJuIGkzODZfbW14X25hbWVzW3JlZ251bSAtIEkzODdfTU0wX1JF R05VTSAoZ2RiYXJjaF90ZGVwIChnZGJhcmNoKSldOwotIH0KLSAKLSAvKiBDb252ZXJ0IGEgZGJ4 IHJlZ2lzdGVyIG51bWJlciBSRUcgdG8gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyCi1AQCAtMjEx Miw4NyArMjEwNywyMiBAQCBpMzg2X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Ci0gfQotIAwKLSAKLS0vKiBDb25zdHJ1Y3QgdHlwZXMgZm9yIElTQS1zcGVjaWZpYyByZWdpc3Rl cnMuICAqLwotLXN0cnVjdCB0eXBlICoKLS1pMzg2X2VmbGFnc190eXBlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCkKLS17Ci0tICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90 ZGVwIChnZGJhcmNoKTsKLS0KLS0gIGlmICghdGRlcC0+aTM4Nl9lZmxhZ3NfdHlwZSkKLS0gICAg ewotLSAgICAgIHN0cnVjdCB0eXBlICp0eXBlOwotLQotLSAgICAgIHR5cGUgPSBhcmNoX2ZsYWdz X3R5cGUgKGdkYmFyY2gsICJidWlsdGluX3R5cGVfaTM4Nl9lZmxhZ3MiLCA0KTsKLS0gICAgICBh cHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAwLCAiQ0YiKTsKLS0gICAgICBhcHBlbmRfZmxh Z3NfdHlwZV9mbGFnICh0eXBlLCAxLCBOVUxMKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9m bGFnICh0eXBlLCAyLCAiUEYiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBl LCA0LCAiQUYiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA2LCAiWkYi KTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA3LCAiU0YiKTsKLS0gICAg ICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA4LCAiVEYiKTsKLS0gICAgICBhcHBlbmRf ZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA5LCAiSUYiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlw ZV9mbGFnICh0eXBlLCAxMCwgIkRGIik7Ci0tICAgICAgYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAo dHlwZSwgMTEsICJPRiIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDE0 LCAiTlQiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxNiwgIlJGIik7 Ci0tICAgICAgYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTcsICJWTSIpOwotLSAgICAg IGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDE4LCAiQUMiKTsKLS0gICAgICBhcHBlbmRf ZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxOSwgIlZJRiIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190 eXBlX2ZsYWcgKHR5cGUsIDIwLCAiVklQIik7Ci0tICAgICAgYXBwZW5kX2ZsYWdzX3R5cGVfZmxh ZyAodHlwZSwgMjEsICJJRCIpOwotLQotLSAgICAgIHRkZXAtPmkzODZfZWZsYWdzX3R5cGUgPSB0 eXBlOwotLSAgICB9Ci0tCi0tICByZXR1cm4gdGRlcC0+aTM4Nl9lZmxhZ3NfdHlwZTsKLS19Ci0t Ci0tc3RydWN0IHR5cGUgKgotLWkzODZfbXhjc3JfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gpCi0tewotLSAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2Ri YXJjaCk7Ci0tCi0tICBpZiAoIXRkZXAtPmkzODZfbXhjc3JfdHlwZSkKLS0gICAgewotLSAgICAg IHN0cnVjdCB0eXBlICp0eXBlOwotLQotLSAgICAgIHR5cGUgPSBhcmNoX2ZsYWdzX3R5cGUgKGdk YmFyY2gsICJidWlsdGluX3R5cGVfaTM4Nl9teGNzciIsIDQpOwotLSAgICAgIGFwcGVuZF9mbGFn c190eXBlX2ZsYWcgKHR5cGUsIDAsICJJRSIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2Zs YWcgKHR5cGUsIDEsICJERSIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUs IDIsICJaRSIpOwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDMsICJPRSIp OwotLSAgICAgIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDQsICJVRSIpOwotLSAgICAg IGFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDUsICJQRSIpOwotLSAgICAgIGFwcGVuZF9m bGFnc190eXBlX2ZsYWcgKHR5cGUsIDYsICJEQVoiKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlw ZV9mbGFnICh0eXBlLCA3LCAiSU0iKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0 eXBlLCA4LCAiRE0iKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA5LCAi Wk0iKTsKLS0gICAgICBhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxMCwgIk9NIik7Ci0t ICAgICAgYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTEsICJVTSIpOwotLSAgICAgIGFw cGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDEyLCAiUE0iKTsKLS0gICAgICBhcHBlbmRfZmxh Z3NfdHlwZV9mbGFnICh0eXBlLCAxNSwgIkZaIik7Ci0tCi0tICAgICAgdGRlcC0+aTM4Nl9teGNz cl90eXBlID0gdHlwZTsKLS0gICAgfQotLQotLSAgcmV0dXJuIHRkZXAtPmkzODZfbXhjc3JfdHlw ZTsKLS19Ci0tCi0gc3RydWN0IHR5cGUgKgotIGkzODdfZXh0X3R5cGUgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3Rk ZXAgKGdkYmFyY2gpOwotIAotICAgaWYgKCF0ZGVwLT5pMzg3X2V4dF90eXBlKQotLSAgICB0ZGVw LT5pMzg3X2V4dF90eXBlCi0tICAgICAgPSBhcmNoX2Zsb2F0X3R5cGUgKGdkYmFyY2gsIC0xLCAi YnVpbHRpbl90eXBlX2kzODdfZXh0IiwKLS0JCQkgZmxvYXRmb3JtYXRzX2kzODdfZXh0KTsKLSsg ICAgewotKyAgICAgIHRkZXAtPmkzODdfZXh0X3R5cGUgPSB0ZGVzY19maW5kX3R5cGUgKGdkYmFy Y2gsICJpMzg3X2V4dCIpOwotKyAgICAgIGdkYl9hc3NlcnQgKHRkZXAtPmkzODdfZXh0X3R5cGUg IT0gTlVMTCk7Ci0rICAgIH0KLSAKLSAgIHJldHVybiB0ZGVwLT5pMzg3X2V4dF90eXBlOwotIH0K LSAKLSAvKiBDb25zdHJ1Y3QgdmVjdG9yIHR5cGUgZm9yIE1NWCByZWdpc3RlcnMuICAqLwotLXN0 cnVjdCB0eXBlICoKLStzdGF0aWMgc3RydWN0IHR5cGUgKgotIGkzODZfbW14X3R5cGUgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBn ZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotQEAgLTIyMzMsODQgKzIxNjMsMTQgQEAgaTM4Nl9tbXhf dHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICByZXR1cm4gdGRlcC0+aTM4Nl9tbXhf dHlwZTsKLSB9Ci0gCi0tc3RydWN0IHR5cGUgKgotLWkzODZfc3NlX3R5cGUgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQotLXsKLS0gIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNo X3RkZXAgKGdkYmFyY2gpOwotLQotLSAgaWYgKCF0ZGVwLT5pMzg2X3NzZV90eXBlKQotLSAgICB7 Ci0tICAgICAgY29uc3Qgc3RydWN0IGJ1aWx0aW5fdHlwZSAqYnQgPSBidWlsdGluX3R5cGUgKGdk YmFyY2gpOwotLQotLSAgICAgIC8qIFRoZSB0eXBlIHdlJ3JlIGJ1aWxkaW5nIGlzIHRoaXM6ICov Ci0tI2lmIDAKLS0gICAgICB1bmlvbiBfX2dkYl9idWlsdGluX3R5cGVfdmVjMTI4aQotLSAgICAg IHsKLS0gICAgICAgIGludDEyOF90IHVpbnQxMjg7Ci0tICAgICAgICBpbnQ2NF90IHYyX2ludDY0 WzJdOwotLSAgICAgICAgaW50MzJfdCB2NF9pbnQzMls0XTsKLS0gICAgICAgIGludDE2X3Qgdjhf aW50MTZbOF07Ci0tICAgICAgICBpbnQ4X3QgdjE2X2ludDhbMTZdOwotLSAgICAgICAgZG91Ymxl IHYyX2RvdWJsZVsyXTsKLS0gICAgICAgIGZsb2F0IHY0X2Zsb2F0WzRdOwotLSAgICAgIH07Ci0t I2VuZGlmCi0tCi0tICAgICAgc3RydWN0IHR5cGUgKnQ7Ci0tCi0tICAgICAgdCA9IGFyY2hfY29t cG9zaXRlX3R5cGUgKGdkYmFyY2gsCi0tCQkJICAgICAgICJfX2dkYl9idWlsdGluX3R5cGVfdmVj MTI4aSIsIFRZUEVfQ09ERV9VTklPTik7Ci0tICAgICAgYXBwZW5kX2NvbXBvc2l0ZV90eXBlX2Zp ZWxkICh0LCAidjRfZmxvYXQiLAotLQkJCQkgICBpbml0X3ZlY3Rvcl90eXBlIChidC0+YnVpbHRp bl9mbG9hdCwgNCkpOwotLSAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodCwgInYy X2RvdWJsZSIsCi0tCQkJCSAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5idWlsdGluX2RvdWJsZSwg MikpOwotLSAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodCwgInYxNl9pbnQ4IiwK LS0JCQkJICAgaW5pdF92ZWN0b3JfdHlwZSAoYnQtPmJ1aWx0aW5faW50OCwgMTYpKTsKLS0gICAg ICBhcHBlbmRfY29tcG9zaXRlX3R5cGVfZmllbGQgKHQsICJ2OF9pbnQxNiIsCi0tCQkJCSAgIGlu aXRfdmVjdG9yX3R5cGUgKGJ0LT5idWlsdGluX2ludDE2LCA4KSk7Ci0tICAgICAgYXBwZW5kX2Nv bXBvc2l0ZV90eXBlX2ZpZWxkICh0LCAidjRfaW50MzIiLAotLQkJCQkgICBpbml0X3ZlY3Rvcl90 eXBlIChidC0+YnVpbHRpbl9pbnQzMiwgNCkpOwotLSAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlw ZV9maWVsZCAodCwgInYyX2ludDY0IiwKLS0JCQkJICAgaW5pdF92ZWN0b3JfdHlwZSAoYnQtPmJ1 aWx0aW5faW50NjQsIDIpKTsKLS0gICAgICBhcHBlbmRfY29tcG9zaXRlX3R5cGVfZmllbGQgKHQs ICJ1aW50MTI4IiwgYnQtPmJ1aWx0aW5faW50MTI4KTsKLS0KLS0gICAgICBUWVBFX1ZFQ1RPUiAo dCkgPSAxOwotLSAgICAgIFRZUEVfTkFNRSAodCkgPSAiYnVpbHRpbl90eXBlX3ZlYzEyOGkiOwot LSAgICAgIHRkZXAtPmkzODZfc3NlX3R5cGUgPSB0OwotLSAgICB9Ci0tCi0tICByZXR1cm4gdGRl cC0+aTM4Nl9zc2VfdHlwZTsKLS19Ci0tCi0gLyogUmV0dXJuIHRoZSBHREIgdHlwZSBvYmplY3Qg Zm9yIHRoZSAic3RhbmRhcmQiIGRhdGEgdHlwZSBvZiBkYXRhIGluCi0tICAgcmVnaXN0ZXIgUkVH TlVNLiAgUGVyaGFwcyAlZXNpIGFuZCAlZWRpIHNob3VsZCBnbyBoZXJlLCBidXQKLS0gICBwb3Rl bnRpYWxseSB0aGV5IGNvdWxkIGJlIHVzZWQgZm9yIHRoaW5ncyBvdGhlciB0aGFuIGFkZHJlc3Mu ICAqLwotKyAgIHJlZ2lzdGVyIFJFR05VTS4gKi8KLSAKLSBzdGF0aWMgc3RydWN0IHR5cGUgKgot LWkzODZfcmVnaXN0ZXJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0p Ci0raTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGlu dCByZWdudW0pCi0gewotLSAgaWYgKHJlZ251bSA9PSBJMzg2X0VJUF9SRUdOVU0pCi0tICAgIHJl dHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2Z1bmNfcHRyOwotLQotLSAgaWYg KHJlZ251bSA9PSBJMzg2X0VGTEFHU19SRUdOVU0pCi0tICAgIHJldHVybiBpMzg2X2VmbGFnc190 eXBlIChnZGJhcmNoKTsKLS0KLS0gIGlmIChyZWdudW0gPT0gSTM4Nl9FQlBfUkVHTlVNIHx8IHJl Z251bSA9PSBJMzg2X0VTUF9SRUdOVU0pCi0tICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFy Y2gpLT5idWlsdGluX2RhdGFfcHRyOwotLQotLSAgaWYgKGkzODZfZnBfcmVnbnVtX3AgKGdkYmFy Y2gsIHJlZ251bSkpCi0tICAgIHJldHVybiBpMzg3X2V4dF90eXBlIChnZGJhcmNoKTsKLS0KLS0g IGlmIChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLS0gICAgcmV0dXJuIGkz ODZfbW14X3R5cGUgKGdkYmFyY2gpOwotLQotLSAgaWYgKGkzODZfc3NlX3JlZ251bV9wIChnZGJh cmNoLCByZWdudW0pKQotLSAgICByZXR1cm4gaTM4Nl9zc2VfdHlwZSAoZ2RiYXJjaCk7Ci0tCi0t ICBpZiAocmVnbnVtID09IEkzODdfTVhDU1JfUkVHTlVNIChnZGJhcmNoX3RkZXAgKGdkYmFyY2gp KSkKLS0gICAgcmV0dXJuIGkzODZfbXhjc3JfdHlwZSAoZ2RiYXJjaCk7Ci0tCi0tICByZXR1cm4g YnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQ7Ci0rICBnZGJfYXNzZXJ0IChpMzg2 X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0rICByZXR1cm4gaTM4Nl9tbXhfdHlw ZSAoZ2RiYXJjaCk7Ci0gfQotIAotIC8qIE1hcCBhIGNvb2tlZCByZWdpc3RlciBvbnRvIGEgcmF3 IHJlZ2lzdGVyIG9yIG1lbW9yeS4gIEZvciB0aGUgaTM4NiwKLUBAIC0yNzYxLDcgKzI2MjEsNyBA QCBpMzg2X2dvMzJfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gCi0gCi0gICAvKiBESkdQ UCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBTU0UgcmVnaXN0ZXJzLiAgKi8KLSAgIHRkZXAtPm51bV94 bW1fcmVncyA9IDA7Ci0tICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgSTM4Nl9OVU1f R1JFR1MgKyBJMzg2X05VTV9GUkVHUyk7Ci0rICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJj aCwgSTM4Nl9OVU1fR1JFR1MgKyBJMzg3X05VTV9SRUdTKTsKLSAKLSAgIC8qIE5hdGl2ZSBjb21w aWxlciBpcyBHQ0MsIHdoaWNoIHVzZXMgdGhlIFNWUjQgcmVnaXN0ZXIgbnVtYmVyaW5nCi0gICAg ICBldmVuIGluIENPRkYgYW5kIFNUQUJTLiAgU2VlIHRoZSBjb21tZW50IGluIGkzODZfZ2RiYXJj aF9pbml0LAotQEAgLTU2MjMsMTIgKzU0ODMsNTAgQEAgaTM4Nl9mYXN0X3RyYWNlcG9pbnRfdmFs aWRfYXQgKHN0cnVjdCBnZAotICAgcmV0dXJuIDE7Ci0gfQotIAotK3N0YXRpYyBpbnQKLStpMzg2 X3ZhbGlkYXRlX3RkZXNjX3AgKHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAsCi0rCQkgICAgICAg c3RydWN0IHRkZXNjX2FyY2hfZGF0YSAqdGRlc2NfZGF0YSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qg dGFyZ2V0X2Rlc2MgKnRkZXNjID0gdGRlcC0+dGRlc2M7Ci0rICBjb25zdCBzdHJ1Y3QgdGRlc2Nf ZmVhdHVyZSAqZmVhdHVyZV9jb3JlLCAqZmVhdHVyZV92ZWN0b3I7Ci0rICBpbnQgaSwgbnVtX3Jl Z3MsIHZhbGlkX3A7Ci0rCi0rICBpZiAoISB0ZGVzY19oYXNfcmVnaXN0ZXJzICh0ZGVzYykpCi0r ICAgIHJldHVybiAwOwotKwotKyAgLyogR2V0IGNvcmUgcmVnaXN0ZXJzLiAgKi8KLSsgIGZlYXR1 cmVfY29yZSA9IHRkZXNjX2ZpbmRfZmVhdHVyZSAodGRlc2MsICJvcmcuZ251LmdkYi5pMzg2LmNv cmUiKTsKLSsKLSsgIC8qIEdldCBTU0UgcmVnaXN0ZXJzLiAgKi8KLSsgIGZlYXR1cmVfdmVjdG9y ID0gdGRlc2NfZmluZF9mZWF0dXJlICh0ZGVzYywgIm9yZy5nbnUuZ2RiLmkzODYuc3NlIik7Ci0r Ci0rICBpZiAoZmVhdHVyZV9jb3JlID09IE5VTEwgfHwgZmVhdHVyZV92ZWN0b3IgPT0gTlVMTCkK LSsgICAgcmV0dXJuIDA7Ci0rCi0rICB2YWxpZF9wID0gMTsKLSsKLSsgIG51bV9yZWdzID0gdGRl cC0+bnVtX2NvcmVfcmVnczsKLSsgIGZvciAoaSA9IDA7IGkgPCBudW1fcmVnczsgaSsrKQotKyAg ICB2YWxpZF9wICY9IHRkZXNjX251bWJlcmVkX3JlZ2lzdGVyIChmZWF0dXJlX2NvcmUsIHRkZXNj X2RhdGEsIGksCi0rCQkJCQl0ZGVwLT5yZWdpc3Rlcl9uYW1lc1tpXSk7Ci0rCi0rICAvKiBOZWVk IHRvIGluY2x1ZGUgJW14Y3NyLCBzbyBhZGQgb25lLiAgKi8KLSsgIG51bV9yZWdzICs9IHRkZXAt Pm51bV94bW1fcmVncyArIDE7Ci0rICBmb3IgKDsgaSA8IG51bV9yZWdzOyBpKyspCi0rICAgIHZh bGlkX3AgJj0gdGRlc2NfbnVtYmVyZWRfcmVnaXN0ZXIgKGZlYXR1cmVfdmVjdG9yLCB0ZGVzY19k YXRhLCBpLAotKwkJCQkJdGRlcC0+cmVnaXN0ZXJfbmFtZXNbaV0pOwotKwotKyAgcmV0dXJuIHZh bGlkX3A7Ci0rfQotKwotIAwKLSBzdGF0aWMgc3RydWN0IGdkYmFyY2ggKgotIGkzODZfZ2RiYXJj aF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFy Y2hlcykKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwOwotICAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2g7Ci0rICBzdHJ1Y3QgdGRlc2NfYXJjaF9kYXRhICp0ZGVzY19kYXRhOwotKyAg Y29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzYzsKLSAKLSAgIC8qIElmIHRoZXJlIGlzIGFs cmVhZHkgYSBjYW5kaWRhdGUsIHVzZSBpdC4gICovCi0gICBhcmNoZXMgPSBnZGJhcmNoX2xpc3Rf bG9va3VwX2J5X2luZm8gKGFyY2hlcywgJmluZm8pOwotQEAgLTU2OTksMTIgKzU1OTcsNiBAQCBp Mzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gICAgICBhbGlnbm1lbnQu ICAqLwotICAgc2V0X2dkYmFyY2hfbG9uZ19kb3VibGVfYml0IChnZGJhcmNoLCA5Nik7Ci0gCi0t ICAvKiBUaGUgZGVmYXVsdCBBQkkgaW5jbHVkZXMgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycywg Ci0tICAgICBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMsIGFuZCB0aGUgU1NFIHJlZ2lzdGVycy4g ICovCi0tICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgSTM4Nl9TU0VfTlVNX1JFR1Mp OwotLSAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgaTM4Nl9yZWdpc3Rlcl9u YW1lKTsKLS0gIHNldF9nZGJhcmNoX3JlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIGkzODZfcmVnaXN0 ZXJfdHlwZSk7Ci0tCi0gICAvKiBSZWdpc3RlciBudW1iZXJzIG9mIHZhcmlvdXMgaW1wb3J0YW50 IHJlZ2lzdGVycy4gICovCi0gICBzZXRfZ2RiYXJjaF9zcF9yZWdudW0gKGdkYmFyY2gsIEkzODZf RVNQX1JFR05VTSk7IC8qICVlc3AgKi8KLSAgIHNldF9nZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJj aCwgSTM4Nl9FSVBfUkVHTlVNKTsgLyogJWVpcCAqLwotQEAgLTU3NzUsMTEgKzU2NjcsNiBAQCBp Mzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gCi0gICBzZXRfZ2RiYXJj aF9mcmFtZV9hcmdzX3NraXAgKGdkYmFyY2gsIDgpOwotIAotLSAgLyogV2lyZSBpbiB0aGUgTU1Y IHJlZ2lzdGVycy4gICovCi0tICBzZXRfZ2RiYXJjaF9udW1fcHNldWRvX3JlZ3MgKGdkYmFyY2gs IGkzODZfbnVtX21teF9yZWdzKTsKLS0gIHNldF9nZGJhcmNoX3BzZXVkb19yZWdpc3Rlcl9yZWFk IChnZGJhcmNoLCBpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTsKLS0gIHNldF9nZGJhcmNoX3Bz ZXVkb19yZWdpc3Rlcl93cml0ZSAoZ2RiYXJjaCwgaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUp OwotLQotICAgc2V0X2dkYmFyY2hfcHJpbnRfaW5zbiAoZ2RiYXJjaCwgaTM4Nl9wcmludF9pbnNu KTsKLSAKLSAgIHNldF9nZGJhcmNoX2R1bW15X2lkIChnZGJhcmNoLCBpMzg2X2R1bW15X2lkKTsK LUBAIC01Nzg4LDcgKzU2NzUsNyBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hf aW5mbyBpCi0gCi0gICAvKiBBZGQgdGhlIGkzODYgcmVnaXN0ZXIgZ3JvdXBzLiAgKi8KLSAgIGkz ODZfYWRkX3JlZ2dyb3VwcyAoZ2RiYXJjaCk7Ci0tICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9yZWdn cm91cF9wIChnZGJhcmNoLCBpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOwotKyAgdGRlcC0+cmVn aXN0ZXJfcmVnZ3JvdXBfcCA9IGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBfcDsKLSAKLSAgIC8qIEhl bHBlciBmb3IgZnVuY3Rpb24gYXJndW1lbnQgaW5mb3JtYXRpb24uICAqLwotICAgc2V0X2dkYmFy Y2hfZmV0Y2hfcG9pbnRlcl9hcmd1bWVudCAoZ2RiYXJjaCwgaTM4Nl9mZXRjaF9wb2ludGVyX2Fy Z3VtZW50KTsKLUBAIC01ODA2LDkgKzU2OTMsNDkgQEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVj dCBnZGJhcmNoX2luZm8gaQotIAotICAgZnJhbWVfYmFzZV9zZXRfZGVmYXVsdCAoZ2RiYXJjaCwg JmkzODZfZnJhbWVfYmFzZSk7Ci0gCi0rICAvKiBXaXJlIGluIHRoZSBNTVggcmVnaXN0ZXJzLiAg Ki8KLSsgIHNldF9nZGJhcmNoX251bV9wc2V1ZG9fcmVncyAoZ2RiYXJjaCwgaTM4Nl9udW1fbW14 X3JlZ3MpOwotKyAgc2V0X2dkYmFyY2hfcHNldWRvX3JlZ2lzdGVyX3JlYWQgKGdkYmFyY2gsIGkz ODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOwotKyAgc2V0X2dkYmFyY2hfcHNldWRvX3JlZ2lzdGVy X3dyaXRlIChnZGJhcmNoLCBpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk7Ci0rCi0rICBzZXRf dGRlc2NfcHNldWRvX3JlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIGkzODZfcHNldWRvX3JlZ2lzdGVy X3R5cGUpOwotKyAgc2V0X3RkZXNjX3BzZXVkb19yZWdpc3Rlcl9uYW1lIChnZGJhcmNoLCBpMzg2 X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTsKLSsKLSsgIC8qIFRoZSBkZWZhdWx0IEFCSSBpbmNsdWRl cyBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzLCAKLSsgICAgIGZsb2F0aW5nLXBvaW50IHJlZ2lz dGVycywgYW5kIHRoZSBTU0UgcmVnaXN0ZXJzLiAgKi8KLSsgIHNldF9nZGJhcmNoX251bV9yZWdz IChnZGJhcmNoLCBJMzg2X1NTRV9OVU1fUkVHUyk7Ci0rCi0rICAvKiBHZXQgdGhlIHg4NiB0YXJn ZXQgZGVzY3JpcHRpb24gZnJvbSBJTkZPLiAgKi8KLSsgIHRkZXNjID0gaW5mby50YXJnZXRfZGVz YzsKLSsgIGlmICghIHRkZXNjX2hhc19yZWdpc3RlcnMgKHRkZXNjKSkKLSsgICAgdGRlc2MgPSB0 ZGVzY19pMzg2OwotKyAgdGRlcC0+dGRlc2MgPSB0ZGVzYzsKLSsKLSsgIHRkZXAtPm51bV9jb3Jl X3JlZ3MgPSBJMzg2X05VTV9HUkVHUyArIEkzODdfTlVNX1JFR1M7Ci0rICB0ZGVwLT5yZWdpc3Rl cl9uYW1lcyA9IGkzODZfcmVnaXN0ZXJfbmFtZXM7Ci0rCi0rICB0ZGVzY19kYXRhID0gdGRlc2Nf ZGF0YV9hbGxvYyAoKTsKLSsKLSAgIC8qIEhvb2sgaW4gQUJJLXNwZWNpZmljIG92ZXJyaWRlcywg aWYgdGhleSBoYXZlIGJlZW4gcmVnaXN0ZXJlZC4gICovCi0rICBpbmZvLnRkZXBfaW5mbyA9ICh2 b2lkICopIHRkZXNjX2RhdGE7Ci0gICBnZGJhcmNoX2luaXRfb3NhYmkgKGluZm8sIGdkYmFyY2gp OwotIAotKyAgLyogVGFyZ2V0IGRlc2NyaXB0aW9uIG1heSBiZSBjaGFuZ2VkLiAgKi8KLSsgIHRk ZXNjID0gdGRlcC0+dGRlc2M7Ci0rCi0rICBpZiAoIWkzODZfdmFsaWRhdGVfdGRlc2NfcCAodGRl cCwgdGRlc2NfZGF0YSkpCi0rICAgIHsKLSsgICAgICB0ZGVzY19kYXRhX2NsZWFudXAgKHRkZXNj X2RhdGEpOwotKyAgICAgIHhmcmVlICh0ZGVwKTsKLSsgICAgICBnZGJhcmNoX2ZyZWUgKGdkYmFy Y2gpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICB0ZGVzY191c2VfcmVnaXN0 ZXJzIChnZGJhcmNoLCB0ZGVzYywgdGRlc2NfZGF0YSk7Ci0rCi0rICAvKiBPdmVycmlkZSBnZGJh cmNoX3JlZ2lzdGVyX3JlZ2dyb3VwX3Agc2V0IGluIHRkZXNjX3VzZV9yZWdpc3RlcnMuICAqLwot KyAgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfcmVnZ3JvdXBfcCAoZ2RiYXJjaCwgdGRlcC0+cmVnaXN0 ZXJfcmVnZ3JvdXBfcCk7Ci0rCi0gICAvKiBIb29rIGluIHRoZSBsZWdhY3kgcHJvbG9ndWUtYmFz ZWQgdW53aW5kZXJzIGxhc3QgKGZhbGxiYWNrKS4gICovCi0gICBmcmFtZV91bndpbmRfYXBwZW5k X3Vud2luZGVyIChnZGJhcmNoLCAmaTM4Nl9zaWd0cmFtcF9mcmFtZV91bndpbmQpOwotICAgZnJh bWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJmkzODZfZnJhbWVfdW53aW5kKTsK LUBAIC01ODg1LDQgKzU4MTIsNyBAQCBpcyBcImRlZmF1bHRcIi4iKSwKLSAKLSAgIC8qIEluaXRp YWxpemUgdGhlIGkzODYtc3BlY2lmaWMgcmVnaXN0ZXIgZ3JvdXBzLiAgKi8KLSAgIGkzODZfaW5p dF9yZWdncm91cHMgKCk7Ci0rCi0rICAvKiBJbml0aWFsaXplIHRoZSBzdGFuZGFyZCB0YXJnZXQg ZGVzY3JpcHRpb25zLiAgKi8KLSsgIGluaXRpYWxpemVfdGRlc2NfaTM4NiAoKTsKLSB9Ci0tLS0g Li9nZGIvaTM4Ni10ZGVwLmgJMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAwMDAgKzAyMDAKLSsr KyAuL2dkYi9pMzg2LXRkZXAuaAkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAot QEAgLTExOCw5ICsxMTgsMjEgQEAgc3RydWN0IGdkYmFyY2hfdGRlcAotICAgICAgb2YgTU1YIHN1 cHBvcnQuICAqLwotICAgaW50IG1tMF9yZWdudW07Ci0gCi0rICAvKiBOdW1iZXIgb2YgY29yZSBy ZWdpc3RlcnMuICAqLwotKyAgaW50IG51bV9jb3JlX3JlZ3M7Ci0rCi0gICAvKiBOdW1iZXIgb2Yg U1NFIHJlZ2lzdGVycy4gICovCi0gICBpbnQgbnVtX3htbV9yZWdzOwotIAotKyAgLyogUmVnaXN0 ZXIgbmFtZXMuICAqLwotKyAgY29uc3QgY2hhciAqKnJlZ2lzdGVyX25hbWVzOwotKwotKyAgLyog VGFyZ2V0IGRlc2NyaXB0aW9uLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRl c2M7Ci0rCi0rICAvKiBSZWdpc3RlciBncm91cCBmdW5jdGlvbi4gICovCi0rICBjb25zdCB2b2lk ICpyZWdpc3Rlcl9yZWdncm91cF9wOwotKwotICAgLyogT2Zmc2V0IG9mIHNhdmVkIFBDIGluIGpt cF9idWYuICAqLwotICAgaW50IGpiX3BjX29mZnNldDsKLSAKLUBAIC0xNDcsMTAgKzE1OSw3IEBA IHN0cnVjdCBnZGJhcmNoX3RkZXAKLSAgIGludCBzY19zcF9vZmZzZXQ7Ci0gCi0gICAvKiBJU0Et c3BlY2lmaWMgZGF0YSB0eXBlcy4gICovCi0tICBzdHJ1Y3QgdHlwZSAqaTM4Nl9lZmxhZ3NfdHlw ZTsKLS0gIHN0cnVjdCB0eXBlICppMzg2X214Y3NyX3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqaTM4 Nl9tbXhfdHlwZTsKLS0gIHN0cnVjdCB0eXBlICppMzg2X3NzZV90eXBlOwotICAgc3RydWN0IHR5 cGUgKmkzODdfZXh0X3R5cGU7Ci0gCi0gICAvKiBQcm9jZXNzIHJlY29yZC9yZXBsYXkgdGFyZ2V0 LiAgKi8KLUBAIC0xOTksNyArMjA4LDggQEAgZW51bSBpMzg2X3JlZ251bQotICAgSTM4Nl9FU19S RUdOVU0sCQkvKiAlZXMgKi8KLSAgIEkzODZfRlNfUkVHTlVNLAkJLyogJWZzICovCi0gICBJMzg2 X0dTX1JFR05VTSwJCS8qICVncyAqLwotLSAgSTM4Nl9TVDBfUkVHTlVNCQkvKiAlc3QoMCkgKi8K LSsgIEkzODZfU1QwX1JFR05VTSwJCS8qICVzdCgwKSAqLwotKyAgSTM4Nl9NWENTUl9SRUdOVU0g PSA0MAkvKiAlbXhjc3IgKi8gCi0gfTsKLSAKLSAvKiBSZWdpc3RlciBudW1iZXJzIG9mIFJFQ09S RF9SRUdNQVAuICAqLwotQEAgLTIzMywyMCArMjQzLDE0IEBAIGVudW0gcmVjb3JkX2kzODZfcmVn bnVtCi0gfTsKLSAKLSAjZGVmaW5lIEkzODZfTlVNX0dSRUdTCTE2Ci0tI2RlZmluZSBJMzg2X05V TV9GUkVHUwkxNgotICNkZWZpbmUgSTM4Nl9OVU1fWFJFR1MgIDkKLSAKLS0jZGVmaW5lIEkzODZf U1NFX05VTV9SRUdTCShJMzg2X05VTV9HUkVHUyArIEkzODZfTlVNX0ZSRUdTIFwKLS0JCQkJICsg STM4Nl9OVU1fWFJFR1MpCi0rI2RlZmluZSBJMzg2X1NTRV9OVU1fUkVHUwkoSTM4Nl9NWENTUl9S RUdOVU0gKyAxKQotIAotIC8qIFNpemUgb2YgdGhlIGxhcmdlc3QgcmVnaXN0ZXIuICAqLwotICNk ZWZpbmUgSTM4Nl9NQVhfUkVHSVNURVJfU0laRQkxNgotIAotIC8qIFR5cGVzIGZvciBpMzg2LXNw ZWNpZmljIHJlZ2lzdGVycy4gICovCi0tZXh0ZXJuIHN0cnVjdCB0eXBlICppMzg2X2VmbGFnc190 eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7Ci0tZXh0ZXJuIHN0cnVjdCB0eXBlICppMzg2 X214Y3NyX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKLS1leHRlcm4gc3RydWN0IHR5 cGUgKmkzODZfbW14X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKLS1leHRlcm4gc3Ry dWN0IHR5cGUgKmkzODZfc3NlX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKLSBleHRl cm4gc3RydWN0IHR5cGUgKmkzODdfZXh0X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsK LSAKLSAvKiBTZWdtZW50IHNlbGVjdG9ycy4gICovCi1AQCAtMjY2LDkgKzI3MCw2IEBAIGV4dGVy biBDT1JFX0FERFIgaTM4Nl9za2lwX21haW5fcHJvbG9ndWUKLSAvKiBSZXR1cm4gd2hldGhlciB0 aGUgVEhJU19GUkFNRSBjb3JyZXNwb25kcyB0byBhIHNpZ3RyYW1wIHJvdXRpbmUuICAqLwotIGV4 dGVybiBpbnQgaTM4Nl9zaWd0cmFtcF9wIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSk7 Ci0gCi0tLyogUmV0dXJuIHRoZSBuYW1lIG9mIHJlZ2lzdGVyIFJFR05VTS4gICovCi0tZXh0ZXJu IGNoYXIgY29uc3QgKmkzODZfcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKiBnZGJhcmNo LCBpbnQgcmVnbnVtKTsKLS0KLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgUkVHTlVNIGlzIGEgbWVt YmVyIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXAuICAqLwotIGV4dGVybiBpbnQgaTM4Nl9yZWdpc3Rl cl9yZWdncm91cF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKLSAJCQkJ ICAgICBzdHJ1Y3QgcmVnZ3JvdXAgKmdyb3VwKTsKLS0tLSAuL2dkYi9pMzg3LXRkZXAuaAkyMDEw LTAxLTAxIDA4OjMxOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2kzODctdGRlcC5oCTIw MTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjcsNiArMjcsOSBAQCBzdHJ1 Y3QgcmVnY2FjaGU7Ci0gc3RydWN0IHR5cGU7Ci0gc3RydWN0IHVpX2ZpbGU7Ci0gCi0rLyogTnVt YmVyIG9mIGkzODcgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLSsjZGVmaW5lIEkzODdf TlVNX1JFR1MJMTYKLSsKLSAjZGVmaW5lIEkzODdfU1QwX1JFR05VTSh0ZGVwKSAoKHRkZXApLT5z dDBfcmVnbnVtKQotICNkZWZpbmUgSTM4N19OVU1fWE1NX1JFR1ModGRlcCkgKCh0ZGVwKS0+bnVt X3htbV9yZWdzKQotICNkZWZpbmUgSTM4N19NTTBfUkVHTlVNKHRkZXApICgodGRlcCktPm1tMF9y ZWdudW0pCi0tLS0gLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWxpbnV4LmRhdAkxOTcwLTAx LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9h bWQ2NC1saW51eC5kYXQJMjAxMC0wNC0wMyAyMDo1OTo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0w LDAgKzEsNjIgQEAKLSsjIERPIE5PVCBFRElUOiBnZW5lcmF0ZWQgZnJvbSBpMzg2L2FtZDY0LWxp bnV4LnhtbAotK25hbWU6YW1kNjRfbGludXgKLSt4bWx0YXJnZXQ6YW1kNjQtbGludXgueG1sCi0r ZXhwZWRpdGU6cmJwLHJzcCxyaXAKLSs2NDpyYXgKLSs2NDpyYngKLSs2NDpyY3gKLSs2NDpyZHgK LSs2NDpyc2kKLSs2NDpyZGkKLSs2NDpyYnAKLSs2NDpyc3AKLSs2NDpyOAotKzY0OnI5Ci0rNjQ6 cjEwCi0rNjQ6cjExCi0rNjQ6cjEyCi0rNjQ6cjEzCi0rNjQ6cjE0Ci0rNjQ6cjE1Ci0rNjQ6cmlw Ci0rMzI6ZWZsYWdzCi0rMzI6Y3MKLSszMjpzcwotKzMyOmRzCi0rMzI6ZXMKLSszMjpmcwotKzMy OmdzCi0rODA6c3QwCi0rODA6c3QxCi0rODA6c3QyCi0rODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1 Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0rMzI6ZmN0cmwKLSszMjpmc3RhdAotKzMyOmZ0YWcKLSszMjpm aXNlZwotKzMyOmZpb2ZmCi0rMzI6Zm9zZWcKLSszMjpmb29mZgotKzMyOmZvcAotKzEyODp4bW0w Ci0rMTI4OnhtbTEKLSsxMjg6eG1tMgotKzEyODp4bW0zCi0rMTI4OnhtbTQKLSsxMjg6eG1tNQot KzEyODp4bW02Ci0rMTI4OnhtbTcKLSsxMjg6eG1tOAotKzEyODp4bW05Ci0rMTI4OnhtbTEwCi0r MTI4OnhtbTExCi0rMTI4OnhtbTEyCi0rMTI4OnhtbTEzCi0rMTI4OnhtbTE0Ci0rMTI4OnhtbTE1 Ci0rMzI6bXhjc3IKLSs2NDpvcmlnX3JheAotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2 NC5kYXQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9yZWdm b3JtYXRzL2kzODYvYW1kNjQuZGF0CTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAw Ci1AQCAtMCwwICsxLDYxIEBACi0rIyBETyBOT1QgRURJVDogZ2VuZXJhdGVkIGZyb20gaTM4Ni9h bWQ2NC54bWwKLStuYW1lOmFtZDY0Ci0reG1sdGFyZ2V0OmFtZDY0LnhtbAotK2V4cGVkaXRlOnJi cCxyc3AscmlwCi0rNjQ6cmF4Ci0rNjQ6cmJ4Ci0rNjQ6cmN4Ci0rNjQ6cmR4Ci0rNjQ6cnNpCi0r NjQ6cmRpCi0rNjQ6cmJwCi0rNjQ6cnNwCi0rNjQ6cjgKLSs2NDpyOQotKzY0OnIxMAotKzY0OnIx MQotKzY0OnIxMgotKzY0OnIxMwotKzY0OnIxNAotKzY0OnIxNQotKzY0OnJpcAotKzMyOmVmbGFn cwotKzMyOmNzCi0rMzI6c3MKLSszMjpkcwotKzMyOmVzCi0rMzI6ZnMKLSszMjpncwotKzgwOnN0 MAotKzgwOnN0MQotKzgwOnN0MgotKzgwOnN0MwotKzgwOnN0NAotKzgwOnN0NQotKzgwOnN0Ngot KzgwOnN0NwotKzMyOmZjdHJsCi0rMzI6ZnN0YXQKLSszMjpmdGFnCi0rMzI6ZmlzZWcKLSszMjpm aW9mZgotKzMyOmZvc2VnCi0rMzI6Zm9vZmYKLSszMjpmb3AKLSsxMjg6eG1tMAotKzEyODp4bW0x Ci0rMTI4OnhtbTIKLSsxMjg6eG1tMwotKzEyODp4bW00Ci0rMTI4OnhtbTUKLSsxMjg6eG1tNgot KzEyODp4bW03Ci0rMTI4OnhtbTgKLSsxMjg6eG1tOQotKzEyODp4bW0xMAotKzEyODp4bW0xMQot KzEyODp4bW0xMgotKzEyODp4bW0xMwotKzEyODp4bW0xNAotKzEyODp4bW0xNQotKzMyOm14Y3Ny Ci0tLS0gLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYtbGludXguZGF0CTE5NzAtMDEtMDEgMDE6 MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYtbGlu dXguZGF0CTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDQ2 IEBACi0rIyBETyBOT1QgRURJVDogZ2VuZXJhdGVkIGZyb20gaTM4Ni9pMzg2LWxpbnV4LnhtbAot K25hbWU6aTM4Nl9saW51eAotK3htbHRhcmdldDppMzg2LWxpbnV4LnhtbAotK2V4cGVkaXRlOmVi cCxlc3AsZWlwCi0rMzI6ZWF4Ci0rMzI6ZWN4Ci0rMzI6ZWR4Ci0rMzI6ZWJ4Ci0rMzI6ZXNwCi0r MzI6ZWJwCi0rMzI6ZXNpCi0rMzI6ZWRpCi0rMzI6ZWlwCi0rMzI6ZWZsYWdzCi0rMzI6Y3MKLSsz MjpzcwotKzMyOmRzCi0rMzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3QwCi0rODA6c3QxCi0r ODA6c3QyCi0rODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0rMzI6 ZmN0cmwKLSszMjpmc3RhdAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZpb2ZmCi0rMzI6Zm9z ZWcKLSszMjpmb29mZgotKzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6eG1tMgot KzEyODp4bW0zCi0rMTI4OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0rMTI4OnhtbTcKLSsz MjpteGNzcgotKzMyOm9yaWdfZWF4Ci0tLS0gLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYuZGF0 CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVnZm9ybWF0 cy9pMzg2L2kzODYuZGF0CTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAt MCwwICsxLDQ1IEBACi0rIyBETyBOT1QgRURJVDogZ2VuZXJhdGVkIGZyb20gaTM4Ni9pMzg2Lnht bAotK25hbWU6aTM4NgotK3htbHRhcmdldDppMzg2LnhtbAotK2V4cGVkaXRlOmVicCxlc3AsZWlw Ci0rMzI6ZWF4Ci0rMzI6ZWN4Ci0rMzI6ZWR4Ci0rMzI6ZWJ4Ci0rMzI6ZXNwCi0rMzI6ZWJwCi0r MzI6ZXNpCi0rMzI6ZWRpCi0rMzI6ZWlwCi0rMzI6ZWZsYWdzCi0rMzI6Y3MKLSszMjpzcwotKzMy OmRzCi0rMzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3QwCi0rODA6c3QxCi0rODA6c3QyCi0r ODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0rMzI6ZmN0cmwKLSsz Mjpmc3RhdAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZpb2ZmCi0rMzI6Zm9zZWcKLSszMjpm b29mZgotKzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6eG1tMgotKzEyODp4bW0z Ci0rMTI4OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0rMTI4OnhtbTcKLSszMjpteGNzcgot LS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvcmVnLWkzODYtbGludXguZGF0CTIwMDktMDctMjAgMjA6NTE6 NDIuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9yZWctaTM4Ni1saW51eC5k YXQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xLDQ2ICswLDAgQEAK LS1uYW1lOmkzODZfbGludXgKLS14bWxhcmNoOmkzODYKLS1vc2FiaTpHTlUvTGludXgKLS1leHBl ZGl0ZTplYnAsZXNwLGVpcAotLTMyOmVheAotLTMyOmVjeAotLTMyOmVkeAotLTMyOmVieAotLTMy OmVzcAotLTMyOmVicAotLTMyOmVzaQotLTMyOmVkaQotLTMyOmVpcAotLTMyOmVmbGFncwotLTMy OmNzCi0tMzI6c3MKLS0zMjpkcwotLTMyOmVzCi0tMzI6ZnMKLS0zMjpncwotLTgwOnN0MAotLTgw OnN0MQotLTgwOnN0MgotLTgwOnN0MwotLTgwOnN0NAotLTgwOnN0NQotLTgwOnN0NgotLTgwOnN0 NwotLTMyOmZjdHJsCi0tMzI6ZnN0YXQKLS0zMjpmdGFnCi0tMzI6ZmlzZWcKLS0zMjpmaW9mZgot LTMyOmZvc2VnCi0tMzI6Zm9vZmYKLS0zMjpmb3AKLS0xMjg6eG1tMAotLTEyODp4bW0xCi0tMTI4 OnhtbTIKLS0xMjg6eG1tMwotLTEyODp4bW00Ci0tMTI4OnhtbTUKLS0xMjg6eG1tNgotLTEyODp4 bW03Ci0tMzI6bXhjc3IKLS0zMjpvcmlnX2VheAotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvcmVnLWkz ODYuZGF0CTIwMDgtMDItMjggMDY6NTQ6MTAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVn Zm9ybWF0cy9yZWctaTM4Ni5kYXQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAK LUBAIC0xLDQ0ICswLDAgQEAKLS1uYW1lOmkzODYKLS14bWxhcmNoOmkzODYKLS1leHBlZGl0ZTpl YnAsZXNwLGVpcAotLTMyOmVheAotLTMyOmVjeAotLTMyOmVkeAotLTMyOmVieAotLTMyOmVzcAot LTMyOmVicAotLTMyOmVzaQotLTMyOmVkaQotLTMyOmVpcAotLTMyOmVmbGFncwotLTMyOmNzCi0t MzI6c3MKLS0zMjpkcwotLTMyOmVzCi0tMzI6ZnMKLS0zMjpncwotLTgwOnN0MAotLTgwOnN0MQot LTgwOnN0MgotLTgwOnN0MwotLTgwOnN0NAotLTgwOnN0NQotLTgwOnN0NgotLTgwOnN0NwotLTMy OmZjdHJsCi0tMzI6ZnN0YXQKLS0zMjpmdGFnCi0tMzI6ZmlzZWcKLS0zMjpmaW9mZgotLTMyOmZv c2VnCi0tMzI6Zm9vZmYKLS0zMjpmb3AKLS0xMjg6eG1tMAotLTEyODp4bW0xCi0tMTI4OnhtbTIK LS0xMjg6eG1tMwotLTEyODp4bW00Ci0tMTI4OnhtbTUKLS0xMjg6eG1tNgotLTEyODp4bW03Ci0t MzI6bXhjc3IKLS0tLSAuL2dkYi9yZWdmb3JtYXRzL3JlZy14ODYtNjQtbGludXguZGF0CTIwMDkt MDctMjAgMjA6NTE6NDIuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9yZWct eDg2LTY0LWxpbnV4LmRhdAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotQEAg LTEsNjIgKzAsMCBAQAotLW5hbWU6eDg2XzY0X2xpbnV4Ci0teG1sYXJjaDppMzg2Ong4Ni02NAot LW9zYWJpOkdOVS9MaW51eAotLWV4cGVkaXRlOnJicCxyc3AscmlwCi0tNjQ6cmF4Ci0tNjQ6cmJ4 Ci0tNjQ6cmN4Ci0tNjQ6cmR4Ci0tNjQ6cnNpCi0tNjQ6cmRpCi0tNjQ6cmJwCi0tNjQ6cnNwCi0t NjQ6cjgKLS02NDpyOQotLTY0OnIxMAotLTY0OnIxMQotLTY0OnIxMgotLTY0OnIxMwotLTY0OnIx NAotLTY0OnIxNQotLTY0OnJpcAotLTMyOmVmbGFncwotLTMyOmNzCi0tMzI6c3MKLS0zMjpkcwot LTMyOmVzCi0tMzI6ZnMKLS0zMjpncwotLTgwOnN0MAotLTgwOnN0MQotLTgwOnN0MgotLTgwOnN0 MwotLTgwOnN0NAotLTgwOnN0NQotLTgwOnN0NgotLTgwOnN0NwotLTMyOmZjdHJsCi0tMzI6ZnN0 YXQKLS0zMjpmdGFnCi0tMzI6ZmlzZWcKLS0zMjpmaW9mZgotLTMyOmZvc2VnCi0tMzI6Zm9vZmYK LS0zMjpmb3AKLS0xMjg6eG1tMAotLTEyODp4bW0xCi0tMTI4OnhtbTIKLS0xMjg6eG1tMwotLTEy ODp4bW00Ci0tMTI4OnhtbTUKLS0xMjg6eG1tNgotLTEyODp4bW03Ci0tMTI4OnhtbTgKLS0xMjg6 eG1tOQotLTEyODp4bW0xMAotLTEyODp4bW0xMQotLTEyODp4bW0xMgotLTEyODp4bW0xMwotLTEy ODp4bW0xNAotLTEyODp4bW0xNQotLTMyOm14Y3NyCi0tNjQ6b3JpZ19yYXgKLS0tLSAuL2dkYi9y ZWdmb3JtYXRzL3JlZy14ODYtNjQuZGF0CTIwMDQtMDEtMTAgMTM6NTI6NDEuMDAwMDAwMDAwICsw MTAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9yZWcteDg2LTY0LmRhdAkxOTcwLTAxLTAxIDAxOjAw OjAwLjAwMDAwMDAwMCArMDEwMAotQEAgLTEsNTkgKzAsMCBAQAotLW5hbWU6eDg2XzY0Ci0tZXhw ZWRpdGU6cmJwLHJzcCxyaXAKLS02NDpyYXgKLS02NDpyYngKLS02NDpyY3gKLS02NDpyZHgKLS02 NDpyc2kKLS02NDpyZGkKLS02NDpyYnAKLS02NDpyc3AKLS02NDpyOAotLTY0OnI5Ci0tNjQ6cjEw Ci0tNjQ6cjExCi0tNjQ6cjEyCi0tNjQ6cjEzCi0tNjQ6cjE0Ci0tNjQ6cjE1Ci0tNjQ6cmlwCi0t MzI6ZWZsYWdzCi0tMzI6Y3MKLS0zMjpzcwotLTMyOmRzCi0tMzI6ZXMKLS0zMjpmcwotLTMyOmdz Ci0tODA6c3QwCi0tODA6c3QxCi0tODA6c3QyCi0tODA6c3QzCi0tODA6c3Q0Ci0tODA6c3Q1Ci0t ODA6c3Q2Ci0tODA6c3Q3Ci0tMzI6ZmN0cmwKLS0zMjpmc3RhdAotLTMyOmZ0YWcKLS0zMjpmaXNl ZwotLTMyOmZpb2ZmCi0tMzI6Zm9zZWcKLS0zMjpmb29mZgotLTMyOmZvcAotLTEyODp4bW0wCi0t MTI4OnhtbTEKLS0xMjg6eG1tMgotLTEyODp4bW0zCi0tMTI4OnhtbTQKLS0xMjg6eG1tNQotLTEy ODp4bW02Ci0tMTI4OnhtbTcKLS0xMjg6eG1tOAotLTEyODp4bW05Ci0tMTI4OnhtbTEwCi0tMTI4 OnhtbTExCi0tMTI4OnhtbTEyCi0tMTI4OnhtbTEzCi0tMTI4OnhtbTE0Ci0tMTI4OnhtbTE1Ci0t MzI6bXhjc3IKLS0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLnhtbC90ZGVzYy1yZWdzLmV4cAkyMDEw LTAyLTE2IDIyOjI2OjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIu eG1sL3RkZXNjLXJlZ3MuZXhwCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi1A QCAtMjUsNiArMjUsNyBAQCBnZGJfc3RhcnQKLSAKLSBzZXQgY29yZS1yZWdzICIiCi0gc2V0IHJl Z2RpciAiIgotK3NldCBhcmNoaXRlY3R1cmUgIiIKLSBzd2l0Y2ggLWdsb2IgLS0gW2lzdGFyZ2V0 XSB7Ci0gICAgICIqYXJtLSotKiIgewotICAgICAgICAgc2V0IGNvcmUtcmVncyB7YXJtLWNvcmUu eG1sfQotQEAgLTU1LDYgKzU2LDE2IEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKLSAJ dW5zdXBwb3J0ZWQgInJlZ2lzdGVyIHRlc3RzIgotIAlyZXR1cm4gMAotICAgICB9Ci0rICAgICJp Pzg2LSotKiIgewotKwlzZXQgYXJjaGl0ZWN0dXJlICJpMzg2IgotKwlzZXQgcmVnZGlyICJpMzg2 LyIKLSsgICAgICAgIHNldCBjb3JlLXJlZ3MgezMyYml0LWNvcmUueG1sIDMyYml0LXNzZS54bWx9 Ci0rICAgIH0KLSsgICAgIng4Nl82NC0qLSoiIHsKLSsJc2V0IGFyY2hpdGVjdHVyZSAiaTM4Njp4 ODYtNjQiCi0rCXNldCByZWdkaXIgImkzODYvIgotKyAgICAgICAgc2V0IGNvcmUtcmVncyB7NjRi aXQtY29yZS54bWwgNjRiaXQtc3NlLnhtbH0KLSsgICAgfQotIH0KLSAKLSAjIElmIG5vIGNvcmUg cmVnaXN0ZXJzIHdlcmUgc3BlY2lmaWVkLCBhc3N1bWUgdGhpcyB0YXJnZXQgZG9lcyBub3QKLUBA IC04OSwxMiArMTAwLDE2IEBAIHByb2MgbG9hZF9kZXNjcmlwdGlvbiB7IGZpbGUgZXJybXNnIH0g ewotICAgICBnbG9iYWwgc3ViZGlyCi0gICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0gICAgIGdsb2Jh bCBjb3JlLXJlZ3MKLSsgICAgZ2xvYmFsIGFyY2hpdGVjdHVyZQotIAotICAgICBmaWxlIGRlbGV0 ZSAiJHN1YmRpci9yZWdzLnhtbCIKLSAgICAgc2V0IGlmZCBbb3BlbiAiJHNyY2Rpci8kc3ViZGly LyRmaWxlIiByXQotICAgICBzZXQgb2ZkIFtvcGVuICIkc3ViZGlyL3JlZ3MueG1sIiB3XQotICAg ICB3aGlsZSB7W2dldHMgJGlmZCBsaW5lXSA+PSAwfSB7Ci0gCWlmIHtbcmVnZXhwIHs8eGk6aW5j bHVkZSBocmVmPSJjb3JlLXJlZ3MueG1sIi8+fSAkbGluZV19IHsKLSsJICAgIGlmIHshIFtzdHJp bmcgZXF1YWwgJHthcmNoaXRlY3R1cmV9ICIiXX0gewotKwkJcHV0cyAkb2ZkICIgIDxhcmNoaXRl Y3R1cmU+JHthcmNoaXRlY3R1cmV9PC9hcmNoaXRlY3R1cmU+IgotKwkgICAgfQotIAkgICAgZm9y ZWFjaCBzcmMgJHtjb3JlLXJlZ3N9IHsKLSAJCXB1dHMgJG9mZCAiICA8eGk6aW5jbHVkZSBocmVm PVwiJHNyY1wiLz4iCi0gCSAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTc4MjUwLWF2eC0wMm9m MTAucGF0Y2ggYi9nZGItYno1NzgyNTAtYXZ4LTAyb2YxMC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNTJhZjA1NS4uMDAwMDAwMAotLS0gYS9nZGItYno1NzgyNTAtYXZ4LTAy b2YxMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1MSArMCwwIEBACi1bIEJhY2twb3J0ZWQu ICBdCi0KLWNvbW1pdCBjYjkyOGM2N2M5MGNmYjViYmIwNjM2ZDkxODU1Yjk1ZTUxYWQyNzVkCi1B dXRob3I6IERhbmllbCBKYWNvYm93aXR6IDxkYW5AZGViaWFuLm9yZz4KLURhdGU6ICAgTW9uIE1h ciAxIDE3OjE5OjIxIDIwMTAgKzAwMDAKLQotICAgIAkqIGdkYnR5cGVzLmMgKGFwcGVuZF9jb21w b3NpdGVfdHlwZV9maWVsZF9yYXcpOiBOZXcuCi0gICAgCShhcHBlbmRfY29tcG9zaXRlX3R5cGVf ZmllbGRfYWxpZ25lZCk6IFVzZSB0aGUgbmV3IGZ1bmN0aW9uLgotICAgIAkqIGdkYnR5cGVzLmgg KGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZF9yYXcpOiBEZWNsYXJlLgotICAgIAkqIHRhcmdl dC1kZXNjcmlwdGlvbnMuYyAoc3RydWN0IHRkZXNjX3R5cGVfZmllbGQpOiBBZGQgc3RhcnQgYW5k IGVuZC4KLSAgICAJKHN0cnVjdCB0ZGVzY190eXBlX2ZsYWcpOiBOZXcgdHlwZS4KLSAgICAJKHN0 cnVjdCB0ZGVzY190eXBlKTogQWRkIFRERVNDX1RZUEVfU1RSVUNUIGFuZCBUREVTQ19UWVBFX0ZM QUdTIHRvCi0gICAgCWtpbmQuICBBZGQgc2l6ZSB0byB1LnUuICBBZGQgdS5mIGZvciBmbGFncy4K LSAgICAJKHRkZXNjX2dkYl90eXBlKTogSGFuZGxlIFRERVNDX1RZUEVfU1RSVUNUIGFuZCBUREVT Q19UWVBFX0ZMQUdTLgotICAgIAkodGRlc2NfZnJlZV90eXBlKTogTGlrZXdpc2UuCi0gICAgCSh0 ZGVzY19jcmVhdGVfc3RydWN0LCB0ZGVzY19zZXRfc3RydWN0X3NpemUsIHRkZXNjX2NyZWF0ZV9m bGFncyk6IE5ldy4KLSAgICAJKHRkZXNjX2FkZF9maWVsZCk6IEhhbmRsZSBUREVTQ19UWVBFX1NU UlVDVC4KLSAgICAJKHRkZXNjX2FkZF9iaXRmaWVsZCwgdGRlc2NfYWRkX2ZsYWcpOiBOZXcuCi0g ICAgCSogdGFyZ2V0LWRlc2NyaXB0aW9ucy5oICh0ZGVzY19jcmVhdGVfc3RydWN0LCB0ZGVzY19z ZXRfc3RydWN0X3NpemUpCi0gICAgCSh0ZGVzY19jcmVhdGVfZmxhZ3MsIHRkZXNjX2FkZF9iaXRm aWVsZCwgdGRlc2NfYWRkX2ZsYWcpOiBEZWNsYXJlLgotICAgIAkqIHhtbC10ZGVzYy5jIChzdHJ1 Y3QgdGRlc2NfcGFyc2luZ19kYXRhKTogUmVuYW1lIGN1cnJlbnRfdW5pb24gdG8KLSAgICAJY3Vy cmVudF90eXBlLiAgQWRkIGN1cnJlbnRfdHlwZV9zaXplIGFuZCBjdXJyZW50X3R5cGVfaXNfZmxh Z3MuCi0gICAgCSh0ZGVzY19zdGFydF91bmlvbik6IENsZWFyIHRoZSBuZXcgZmllbGRzLgotICAg IAkodGRlc2Nfc3RhcnRfc3RydWN0LCB0ZGVzY19zdGFydF9mbGFncyk6IE5ldy4KLSAgICAJKHRk ZXNjX3N0YXJ0X2ZpZWxkKTogSGFuZGxlIHN0cnVjdCBmaWVsZHMsIGluY2x1ZGluZyBiaXRmaWVs ZHMuCi0gICAgCShmaWVsZF9hdHRyaWJ1dGVzKTogTWFrZSB0eXBlIG9wdGlvbmFsLiAgQWRkIHN0 YXJ0IGFuZCBlbmQuCi0gICAgCSh1bmlvbl9jaGlsZHJlbik6IFJlbmFtZSB0byBzdHJ1Y3RfdW5p b25fY2hpbGRyZW4uCi0gICAgCSh1bmlvbl9hdHRyaWJ1dGVzKTogUmVuYW1lIHRvIHN0cnVjdF91 bmlvbl9hdHRyaWJ1dGVzLiAgQWRkIG9wdGlvbmFsCi0gICAgCXNpemUuCi0gICAgCShmbGFnc19h dHRyaWJ1dGVzKTogTmV3LgotICAgIAkoZmVhdHVyZV9jaGlsZHJlbik6IEFkZCBzdHJ1Y3QgYW5k IGZsYWdzLgotICAgIAkqIGZlYXR1cmVzL2dkYi10YXJnZXQuZHRkOiBBZGQgZmxhZ3MgYW5kIHN0 cnVjdCB0byBmZWF0dXJlcy4KLSAgICAJTWFrZSBmaWVsZCB0eXBlIG9wdGlvbmFsLiAgQWRkIGZp ZWxkIHN0YXJ0IGFuZCBlbmQuCi0gICAgCi0gICAgCWRvYy8KLSAgICAJKiBnZGIudGV4aW5mbyAo VHlwZXMpOiBEZXNjcmliZSA8c3RydWN0PiBhbmQgPGZsYWdzPi4KLSAgICAKLSAgICAJdGVzdHN1 aXRlLwotICAgIAkqIGdkYi54bWwvZXh0cmEtcmVncy54bWw6IEFkZCBzdHJ1Y3QxLCBzdHJ1Y3Qy LCBhbmQgZmxhZ3MKLSAgICAJdHlwZXMuICBBZGQgc3RydWN0cmVnLCBiaXRmaWVsZHMsIGFuZCBm bGFncyByZWdpc3RlcnMuCi0gICAgCSogZ2RiLnhtbC90ZGVzYy1yZWdzLmV4cDogVGVzdCBzdHJ1 Y3RyZWcgYW5kIGJpdGZpZWxkcwotICAgIAlyZWdpc3RlcnMuCi0KLS0tLSBnZGItNy4xLXAwL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4xL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNC0wMyAyMTowNDoxMy4wMDAwMDAw MDAgKzAyMDAKLUBAIC0zMzExNSw2ICszMzExNSw0NyBAQCBlYWNoIG9mIHdoaWNoIGhhcyBhIEB2 YXJ7bmFtZX0gYW5kIGEgQHZhCi0gPC91bmlvbj4KLSBAZW5kIHNtYWxsZXhhbXBsZQotIAotK0Bj aW5kZXggPHN0cnVjdD4KLStJZiBhIHJlZ2lzdGVyJ3MgdmFsdWUgaXMgY29tcG9zZWQgZnJvbSBz ZXZlcmFsIHNlcGFyYXRlIHZhbHVlcywgZGVmaW5lCi0raXQgd2l0aCBhIHN0cnVjdHVyZSB0eXBl LiAgVGhlcmUgYXJlIHR3byBmb3JtcyBvZiB0aGUgQHNhbXB7PHN0cnVjdD59Ci0rZWxlbWVudDsg YSBAc2FtcHs8c3RydWN0Pn0gZWxlbWVudCBtdXN0IGVpdGhlciBjb250YWluIG9ubHkgYml0Zmll bGRzCi0rb3IgY29udGFpbiBubyBiaXRmaWVsZHMuICBJZiB0aGUgc3RydWN0dXJlIGNvbnRhaW5z IG9ubHkgYml0ZmllbGRzLAotK2l0cyB0b3RhbCBzaXplIGluIGJ5dGVzIG11c3QgYmUgc3BlY2lm aWVkLCBlYWNoIGJpdGZpZWxkIG11c3QgaGF2ZSBhbgotK2V4cGxpY2l0IHN0YXJ0IGFuZCBlbmQs IGFuZCBiaXRmaWVsZHMgYXJlIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgYW4KLStpbnRlZ2VyIHR5 cGUuICBUaGUgZmllbGQncyBAdmFye3N0YXJ0fSBzaG91bGQgYmUgbGVzcyB0aGFuIG9yCi0rZXF1 YWwgdG8gaXRzIEB2YXJ7ZW5kfSwgYW5kIHplcm8gcmVwcmVzZW50cyB0aGUgbGVhc3Qgc2lnbmlm aWNhbnQgYml0LgotKwotK0BzbWFsbGV4YW1wbGUKLSs8c3RydWN0IGlkPSJAdmFye2lkfSIgc2l6 ZT0iQHZhcntzaXplfSI+Ci0rICA8ZmllbGQgbmFtZT0iQHZhcntuYW1lfSIgc3RhcnQ9IkB2YXJ7 c3RhcnR9IiBlbmQ9IkB2YXJ7ZW5kfSIvPgotKyAgQGRvdHN7fQotKzwvc3RydWN0PgotK0BlbmQg c21hbGxleGFtcGxlCi0rCi0rSWYgdGhlIHN0cnVjdHVyZSBjb250YWlucyBubyBiaXRmaWVsZHMs IHRoZW4gZWFjaCBmaWVsZCBoYXMgYW4KLStleHBsaWNpdCB0eXBlLCBhbmQgbm8gaW1wbGljaXQg cGFkZGluZyBpcyBhZGRlZC4KLSsKLStAc21hbGxleGFtcGxlCi0rPHN0cnVjdCBpZD0iQHZhcntp ZH0iPgotKyAgPGZpZWxkIG5hbWU9IkB2YXJ7bmFtZX0iIHR5cGU9IkB2YXJ7dHlwZX0iLz4KLSsg IEBkb3Rze30KLSs8L3N0cnVjdD4KLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0BjaW5kZXggPGZs YWdzPgotK0lmIGEgcmVnaXN0ZXIncyB2YWx1ZSBpcyBhIHNlcmllcyBvZiBzaW5nbGUtYml0IGZs YWdzLCBkZWZpbmUgaXQgd2l0aAotK2EgZmxhZ3MgdHlwZS4gIFRoZSBAc2FtcHs8ZmxhZ3M+fSBl bGVtZW50IGhhcyBhbiBleHBsaWNpdCBAdmFye3NpemV9Ci0rYW5kIGNvbnRhaW5zIG9uZSBvciBt b3JlIEBzYW1wezxmaWVsZD59IGVsZW1lbnRzLiAgRWFjaCBmaWVsZCBoYXMgYQotK0B2YXJ7bmFt ZX0sIGEgQHZhcntzdGFydH0sIGFuZCBhbiBAdmFye2VuZH0uICBPbmx5IHNpbmdsZS1iaXQgZmxh Z3MKLSthcmUgc3VwcG9ydGVkLgotKwotK0BzbWFsbGV4YW1wbGUKLSs8ZmxhZ3MgaWQ9IkB2YXJ7 aWR9IiBzaXplPSJAdmFye3NpemV9Ij4KLSsgIDxmaWVsZCBuYW1lPSJAdmFye25hbWV9IiBzdGFy dD0iQHZhcntzdGFydH0iIGVuZD0iQHZhcntlbmR9Ii8+Ci0rICBAZG90c3t9Ci0rPC9mbGFncz4K LStAZW5kIHNtYWxsZXhhbXBsZQotKwotIEBzdWJzZWN0aW9uIFJlZ2lzdGVycwotIEBjaW5kZXgg PHJlZz4KLSAKLS0tLSBnZGItNy4xLXAwL2dkYi9mZWF0dXJlcy9nZGItdGFyZ2V0LmR0ZAkyMDEw LTAxLTAxIDA4OjMxOjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2RiL2ZlYXR1cmVz L2dkYi10YXJnZXQuZHRkCTIwMTAtMDQtMDMgMjE6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAt MTksNyArMTksOCBAQAotIAotIDwhRUxFTUVOVCBjb21wYXRpYmxlCSgjUENEQVRBKT4KLSAKLS08 IUVMRU1FTlQgZmVhdHVyZQkoKHZlY3RvciB8IHVuaW9uKSosIHJlZyopPgotKzwhRUxFTUVOVCBm ZWF0dXJlCi0rCSgodmVjdG9yIHwgZmxhZ3MgfCBzdHJ1Y3QgfCB1bmlvbiApKiwgcmVnKik+Ci0g PCFBVFRMSVNUIGZlYXR1cmUKLSAJbmFtZQkJSUQJI1JFUVVJUkVEPgotIAotQEAgLTM5LDYgKzQw LDE2IEBACi0gCXR5cGUJCUNEQVRBCSNSRVFVSVJFRAotIAljb3VudAkJQ0RBVEEJI1JFUVVJUkVE PgotIAotKzwhRUxFTUVOVCBmbGFncwkJKGZpZWxkKyk+Ci0rPCFBVFRMSVNUIGZsYWdzCi0rCWlk CQlDREFUQQkjUkVRVUlSRUQKLSsJc2l6ZQkJQ0RBVEEJI1JFUVVJUkVEPgotKwotKzwhRUxFTUVO VCBzdHJ1Y3QJKGZpZWxkKyk+Ci0rPCFBVFRMSVNUIHN0cnVjdAotKwlpZAkJQ0RBVEEJI1JFUVVJ UkVECi0rCXNpemUJCUNEQVRBCSNJTVBMSUVEPgotKwotIDwhRUxFTUVOVCB1bmlvbgkJKGZpZWxk Kyk+Ci0gPCFBVFRMSVNUIHVuaW9uCi0gCWlkCQlDREFUQQkjUkVRVUlSRUQ+Ci1AQCAtNDYsNyAr NTcsOSBAQAotIDwhRUxFTUVOVCBmaWVsZAkJRU1QVFk+Ci0gPCFBVFRMSVNUIGZpZWxkCi0gCW5h bWUJCUNEQVRBCSNSRVFVSVJFRAotLQl0eXBlCQlDREFUQQkjUkVRVUlSRUQ+Ci0rCXR5cGUJCUNE QVRBCSNJTVBMSUVECi0rCXN0YXJ0CQlDREFUQQkjSU1QTElFRAotKwllbmQJCUNEQVRBCSNJTVBM SUVEPgotIAotIDwhRU5USVRZICUgeGluY2x1ZGUgU1lTVEVNICJ4aW5jbHVkZS5kdGQiPgotICV4 aW5jbHVkZTsKLS0tLSBnZGItNy4xLXAwL2dkYi9nZGJ0eXBlcy5jCTIwMTAtMDQtMDMgMjA6MjQ6 NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvZ2RidHlwZXMuYwkyMDEwLTA0LTAz IDIxOjA0OjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTM3OTgsMTAgKzM3OTgsMTEgQEAgYXJjaF9j b21wb3NpdGVfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYgotIH0KLSAKLSAvKiBBZGQgbmV3IGZp ZWxkIHdpdGggbmFtZSBOQU1FIGFuZCB0eXBlIEZJRUxEIHRvIGNvbXBvc2l0ZSB0eXBlIFQuCi0t ICAgQUxJR05NRU5UIChpZiBub24temVybykgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIGZpZWxkIGFs aWdubWVudC4gICovCi0tdm9pZAotLWFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZF9hbGlnbmVk IChzdHJ1Y3QgdHlwZSAqdCwgY2hhciAqbmFtZSwKLS0JCQkJICAgICBzdHJ1Y3QgdHlwZSAqZmll bGQsIGludCBhbGlnbm1lbnQpCi0rICAgRG8gbm90IHNldCB0aGUgZmllbGQncyBwb3NpdGlvbiBv ciBhZGp1c3QgdGhlIHR5cGUncyBsZW5ndGg7Ci0rICAgdGhlIGNhbGxlciBzaG91bGQgZG8gc28u ICBSZXR1cm4gdGhlIG5ldyBmaWVsZC4gICovCi0rc3RydWN0IGZpZWxkICoKLSthcHBlbmRfY29t cG9zaXRlX3R5cGVfZmllbGRfcmF3IChzdHJ1Y3QgdHlwZSAqdCwgY2hhciAqbmFtZSwKLSsJCQkJ IHN0cnVjdCB0eXBlICpmaWVsZCkKLSB7Ci0gICBzdHJ1Y3QgZmllbGQgKmY7Ci0gICBUWVBFX05G SUVMRFMgKHQpID0gVFlQRV9ORklFTERTICh0KSArIDE7Ci1AQCAtMzgxMSw2ICszODEyLDE2IEBA IGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZF9hbGlnbmVkIChzdHIKLSAgIG1lbXNldCAoZiwg MCwgc2l6ZW9mIGZbMF0pOwotICAgRklFTERfVFlQRSAoZlswXSkgPSBmaWVsZDsKLSAgIEZJRUxE X05BTUUgKGZbMF0pID0gbmFtZTsKLSsgIHJldHVybiBmOwotK30KLSsKLSsvKiBBZGQgbmV3IGZp ZWxkIHdpdGggbmFtZSBOQU1FIGFuZCB0eXBlIEZJRUxEIHRvIGNvbXBvc2l0ZSB0eXBlIFQuCi0r ICAgQUxJR05NRU5UIChpZiBub24temVybykgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIGZpZWxkIGFs aWdubWVudC4gICovCi0rdm9pZAotK2FwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZF9hbGlnbmVk IChzdHJ1Y3QgdHlwZSAqdCwgY2hhciAqbmFtZSwKLSsJCQkJICAgICBzdHJ1Y3QgdHlwZSAqZmll bGQsIGludCBhbGlnbm1lbnQpCi0rewotKyAgc3RydWN0IGZpZWxkICpmID0gYXBwZW5kX2NvbXBv c2l0ZV90eXBlX2ZpZWxkX3JhdyAodCwgbmFtZSwgZmllbGQpOwotICAgaWYgKFRZUEVfQ09ERSAo dCkgPT0gVFlQRV9DT0RFX1VOSU9OKQotICAgICB7Ci0gICAgICAgaWYgKFRZUEVfTEVOR1RIICh0 KSA8IFRZUEVfTEVOR1RIIChmaWVsZCkpCi0tLS0gZ2RiLTcuMS1wMC9nZGIvZ2RidHlwZXMuaAky MDEwLTA0LTAzIDIwOjI0OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL2dkYnR5 cGVzLmgJMjAxMC0wNC0wMyAyMTowNDoxMy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzk1LDYgKzEz OTUsOCBAQCBleHRlcm4gdm9pZCBhcHBlbmRfY29tcG9zaXRlX3R5cGVfZmllbGRfCi0gCQkJCQkJ IGNoYXIgKm5hbWUsCi0gCQkJCQkJIHN0cnVjdCB0eXBlICpmaWVsZCwKLSAJCQkJCQkgaW50IGFs aWdubWVudCk7Ci0rc3RydWN0IGZpZWxkICphcHBlbmRfY29tcG9zaXRlX3R5cGVfZmllbGRfcmF3 IChzdHJ1Y3QgdHlwZSAqdCwgY2hhciAqbmFtZSwKLSsJCQkJCSAgICAgICBzdHJ1Y3QgdHlwZSAq ZmllbGQpOwotIAotIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gY29uc3RydWN0IGEgYml0IGZsYWdz IHR5cGUuICBBbiBpbml0aWFsbHkgZW1wdHkKLSAgICB0eXBlIGlzIGNyZWF0ZWQgdXNpbmcgYXJj aF9mbGFnX3R5cGUoKS4gIEZsYWdzIGFyZSB0aGVuIGFkZGVkIHVzaW5nCi0tLS0gZ2RiLTcuMS1w MC9nZGIvdGFyZ2V0LWRlc2NyaXB0aW9ucy5jCTIwMTAtMDItMTAgMTk6NDU6MDIuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGFyZ2V0LWRlc2NyaXB0aW9ucy5jCTIwMTAtMDQtMDMg MjE6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtOTAsOSArOTAsMTcgQEAgdHlwZWRlZiBzdHJ1 Y3QgdGRlc2NfdHlwZV9maWVsZAotIHsKLSAgIGNoYXIgKm5hbWU7Ci0gICBzdHJ1Y3QgdGRlc2Nf dHlwZSAqdHlwZTsKLSsgIGludCBzdGFydCwgZW5kOwotIH0gdGRlc2NfdHlwZV9maWVsZDsKLSBE RUZfVkVDX08odGRlc2NfdHlwZV9maWVsZCk7Ci0gCi0rdHlwZWRlZiBzdHJ1Y3QgdGRlc2NfdHlw ZV9mbGFnCi0rewotKyAgY2hhciAqbmFtZTsKLSsgIGludCBzdGFydDsKLSt9IHRkZXNjX3R5cGVf ZmxhZzsKLStERUZfVkVDX08odGRlc2NfdHlwZV9mbGFnKTsKLSsKLSB0eXBlZGVmIHN0cnVjdCB0 ZGVzY190eXBlCi0gewotICAgLyogVGhlIG5hbWUgb2YgdGhpcyB0eXBlLiAgKi8KLUBAIC0xMjMs NyArMTMxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgdGRlc2NfdHlwZQotIAotICAgICAvKiBUeXBlcyBk ZWZpbmVkIGJ5IGEgdGFyZ2V0IGZlYXR1cmUuICAqLwotICAgICBUREVTQ19UWVBFX1ZFQ1RPUiwK LS0gICAgVERFU0NfVFlQRV9VTklPTgotKyAgICBUREVTQ19UWVBFX1NUUlVDVCwKLSsgICAgVERF U0NfVFlQRV9VTklPTiwKLSsgICAgVERFU0NfVFlQRV9GTEFHUwotICAgfSBraW5kOwotIAotICAg LyogS2luZC1zcGVjaWZpYyBkYXRhLiAgKi8KLUBAIC0xMzYsMTEgKzE0NiwxOSBAQCB0eXBlZGVm IHN0cnVjdCB0ZGVzY190eXBlCi0gICAgICAgaW50IGNvdW50OwotICAgICB9IHY7Ci0gCi0tICAg IC8qIFVuaW9uIHR5cGUuICAqLwotKyAgICAvKiBTdHJ1Y3Qgb3IgdW5pb24gdHlwZS4gICovCi0g ICAgIHN0cnVjdAotICAgICB7Ci0gICAgICAgVkVDKHRkZXNjX3R5cGVfZmllbGQpICpmaWVsZHM7 Ci0rICAgICAgTE9OR0VTVCBzaXplOwotICAgICB9IHU7Ci0rCi0rICAgIC8qIEZsYWdzIHR5cGUu ICAqLwotKyAgICBzdHJ1Y3QKLSsgICAgewotKyAgICAgIFZFQyh0ZGVzY190eXBlX2ZsYWcpICpm bGFnczsKLSsgICAgICBMT05HRVNUIHNpemU7Ci0rICAgIH0gZjsKLSAgIH0gdTsKLSB9ICp0ZGVz Y190eXBlX3A7Ci0gREVGX1ZFQ19QKHRkZXNjX3R5cGVfcCk7Ci1AQCAtNjUyLDYgKzY3MCw2NiBA QCB0ZGVzY19nZGJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCXJldHVybiB0eXBl OwotICAgICAgIH0KLSAKLSsgICAgY2FzZSBUREVTQ19UWVBFX1NUUlVDVDoKLSsgICAgICB7Ci0r CXN0cnVjdCB0eXBlICp0eXBlLCAqZmllbGRfdHlwZTsKLSsJc3RydWN0IHRkZXNjX3R5cGVfZmll bGQgKmY7Ci0rCWludCBpeDsKLSsKLSsJdHlwZSA9IGFyY2hfY29tcG9zaXRlX3R5cGUgKGdkYmFy Y2gsIE5VTEwsIFRZUEVfQ09ERV9TVFJVQ1QpOwotKwlUWVBFX05BTUUgKHR5cGUpID0geHN0cmR1 cCAodGRlc2NfdHlwZS0+bmFtZSk7Ci0rCVRZUEVfVEFHX05BTUUgKHR5cGUpID0gVFlQRV9OQU1F ICh0eXBlKTsKLSsKLSsJZm9yIChpeCA9IDA7Ci0rCSAgICAgVkVDX2l0ZXJhdGUgKHRkZXNjX3R5 cGVfZmllbGQsIHRkZXNjX3R5cGUtPnUudS5maWVsZHMsIGl4LCBmKTsKLSsJICAgICBpeCsrKQot KwkgIHsKLSsJICAgIGlmIChmLT50eXBlID09IE5VTEwpCi0rCSAgICAgIHsKLSsJCS8qIEJpdGZp ZWxkLiAgKi8KLSsJCXN0cnVjdCBmaWVsZCAqZmxkOwotKwkJc3RydWN0IHR5cGUgKmZpZWxkX3R5 cGU7Ci0rCQlpbnQgYml0c2l6ZSwgdG90YWxfc2l6ZTsKLSsKLSsJCS8qIFRoaXMgaW52YXJpYW50 IHNob3VsZCBiZSBwcmVzZXJ2ZWQgd2hpbGUgY3JlYXRpbmcKLSsJCSAgIHR5cGVzLiAgKi8KLSsJ CWdkYl9hc3NlcnQgKHRkZXNjX3R5cGUtPnUudS5zaXplICE9IDApOwotKwkJaWYgKHRkZXNjX3R5 cGUtPnUudS5zaXplID4gNCkKLSsJCSAgZmllbGRfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJj aCktPmJ1aWx0aW5fdWludDY0OwotKwkJZWxzZQotKwkJICBmaWVsZF90eXBlID0gYnVpbHRpbl90 eXBlIChnZGJhcmNoKS0+YnVpbHRpbl91aW50MzI7Ci0rCi0rCQlmbGQgPSBhcHBlbmRfY29tcG9z aXRlX3R5cGVfZmllbGRfcmF3ICh0eXBlLCB4c3RyZHVwIChmLT5uYW1lKSwKLSsJCQkJCQkgICAg ICAgZmllbGRfdHlwZSk7Ci0rCi0rCQkvKiBGb3IgbGl0dGxlLWVuZGlhbiwgQklUUE9TIGNvdW50 cyBmcm9tIHRoZSBMU0Igb2YKLSsJCSAgIHRoZSBzdHJ1Y3R1cmUgYW5kIG1hcmtzIHRoZSBMU0Ig b2YgdGhlIGZpZWxkLiAgRm9yCi0rCQkgICBiaWctZW5kaWFuLCBCSVRQT1MgY291bnRzIGZyb20g dGhlIE1TQiBvZiB0aGUKLSsJCSAgIHN0cnVjdHVyZSBhbmQgbWFya3MgdGhlIE1TQiBvZiB0aGUg ZmllbGQuICBFaXRoZXIKLSsJCSAgIHdheSwgaXQgaXMgdGhlIG51bWJlciBvZiBiaXRzIHRvIHRo ZSAibGVmdCIgb2YgdGhlCi0rCQkgICBmaWVsZC4gIFRvIGNhbGN1bGF0ZSB0aGlzIGluIGJpZy1l bmRpYW4sIHdlIG5lZWQKLSsJCSAgIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUuICAq LwotKwkJYml0c2l6ZSA9IGYtPmVuZCAtIGYtPnN0YXJ0ICsgMTsKLSsJCXRvdGFsX3NpemUgPSB0 ZGVzY190eXBlLT51LnUuc2l6ZSAqIFRBUkdFVF9DSEFSX0JJVDsKLSsJCWlmIChnZGJhcmNoX2Jp dHNfYmlnX2VuZGlhbiAoZ2RiYXJjaCkpCi0rCQkgIEZJRUxEX0JJVFBPUyAoZmxkWzBdKSA9IHRv dGFsX3NpemUgLSBmLT5zdGFydCAtIGJpdHNpemU7Ci0rCQllbHNlCi0rCQkgIEZJRUxEX0JJVFBP UyAoZmxkWzBdKSA9IGYtPnN0YXJ0OwotKwkJRklFTERfQklUU0laRSAoZmxkWzBdKSA9IGJpdHNp emU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJZmllbGRfdHlwZSA9IHRk ZXNjX2dkYl90eXBlIChnZGJhcmNoLCBmLT50eXBlKTsKLSsJCWFwcGVuZF9jb21wb3NpdGVfdHlw ZV9maWVsZCAodHlwZSwgeHN0cmR1cCAoZi0+bmFtZSksCi0rCQkJCQkgICAgIGZpZWxkX3R5cGUp OwotKwkgICAgICB9Ci0rCSAgfQotKwotKwlpZiAodGRlc2NfdHlwZS0+dS51LnNpemUgIT0gMCkK LSsJICBUWVBFX0xFTkdUSCAodHlwZSkgPSB0ZGVzY190eXBlLT51LnUuc2l6ZTsKLSsJcmV0dXJu IHR5cGU7Ci0rICAgICAgfQotKwotICAgICBjYXNlIFRERVNDX1RZUEVfVU5JT046Ci0gICAgICAg ewotIAlzdHJ1Y3QgdHlwZSAqdHlwZSwgKmZpZWxkX3R5cGU7Ci1AQCAtNjY4LDEyICs3NDYsMzAg QEAgdGRlc2NfZ2RiX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAkgICAgZmllbGRf dHlwZSA9IHRkZXNjX2dkYl90eXBlIChnZGJhcmNoLCBmLT50eXBlKTsKLSAJICAgIGFwcGVuZF9j b21wb3NpdGVfdHlwZV9maWVsZCAodHlwZSwgeHN0cmR1cCAoZi0+bmFtZSksIGZpZWxkX3R5cGUp OwotIAotLQkgICAgLyogSWYgYW55IG9mIHRoZSBjaGlsZHJlbiBvZiB0aGlzIHVuaW9uIGFyZSB2 ZWN0b3JzLCBmbGFnIHRoZQotKwkgICAgLyogSWYgYW55IG9mIHRoZSBjaGlsZHJlbiBvZiBhIHVu aW9uIGFyZSB2ZWN0b3JzLCBmbGFnIHRoZQotIAkgICAgICAgdW5pb24gYXMgYSB2ZWN0b3IgYWxz by4gIFRoaXMgYWxsb3dzIGUuZy4gYSB1bmlvbiBvZiB0d28KLSAJICAgICAgIHZlY3RvciB0eXBl cyB0byBzaG93IHVwIGF1dG9tYXRpY2FsbHkgaW4gImluZm8gdmVjdG9yIi4gICovCi0gCSAgICBp ZiAoVFlQRV9WRUNUT1IgKGZpZWxkX3R5cGUpKQotIAkgICAgICBUWVBFX1ZFQ1RPUiAodHlwZSkg PSAxOwotIAkgIH0KLSsJcmV0dXJuIHR5cGU7Ci0rICAgICAgfQotKwotKyAgICBjYXNlIFRERVND X1RZUEVfRkxBR1M6Ci0rICAgICAgewotKwlzdHJ1Y3QgdHlwZSAqdHlwZSwgKmZpZWxkX3R5cGU7 Ci0rCXN0cnVjdCB0ZGVzY190eXBlX2ZsYWcgKmY7Ci0rCWludCBpeDsKLSsKLSsJdHlwZSA9IGFy Y2hfZmxhZ3NfdHlwZSAoZ2RiYXJjaCwgeHN0cmR1cCAodGRlc2NfdHlwZS0+bmFtZSksCi0rCQkJ CXRkZXNjX3R5cGUtPnUuZi5zaXplKTsKLSsJZm9yIChpeCA9IDA7Ci0rCSAgICAgVkVDX2l0ZXJh dGUgKHRkZXNjX3R5cGVfZmxhZywgdGRlc2NfdHlwZS0+dS5mLmZsYWdzLCBpeCwgZik7Ci0rCSAg ICAgaXgrKykKLSsJICAvKiBOb3RlIHRoYXQgY29udHJhcnkgdG8gdGhlIGZ1bmN0aW9uIG5hbWUs IHRoaXMgY2FsbCB3aWxsCi0rCSAgICAganVzdCBzZXQgdGhlIHByb3BlcnRpZXMgb2YgYW4gYWxy ZWFkeS1hbGxvY2F0ZWQKLSsJICAgICBmaWVsZC4gICovCi0rCSAgYXBwZW5kX2ZsYWdzX3R5cGVf ZmxhZyAodHlwZSwgZi0+c3RhcnQsIGYtPm5hbWUpOwotIAotIAlyZXR1cm4gdHlwZTsKLSAgICAg ICB9Ci1AQCAtMTE2MSw2ICsxMjU3LDcgQEAgdGRlc2NfZnJlZV90eXBlIChzdHJ1Y3QgdGRlc2Nf dHlwZSAqdHlwZQotIAotICAgc3dpdGNoICh0eXBlLT5raW5kKQotICAgICB7Ci0rICAgIGNhc2Ug VERFU0NfVFlQRV9TVFJVQ1Q6Ci0gICAgIGNhc2UgVERFU0NfVFlQRV9VTklPTjoKLSAgICAgICB7 Ci0gCXN0cnVjdCB0ZGVzY190eXBlX2ZpZWxkICpmOwotQEAgLTExNzUsNiArMTI3MiwyMCBAQCB0 ZGVzY19mcmVlX3R5cGUgKHN0cnVjdCB0ZGVzY190eXBlICp0eXBlCi0gICAgICAgfQotICAgICAg IGJyZWFrOwotIAotKyAgICBjYXNlIFRERVNDX1RZUEVfRkxBR1M6Ci0rICAgICAgewotKwlzdHJ1 Y3QgdGRlc2NfdHlwZV9mbGFnICpmOwotKwlpbnQgaXg7Ci0rCi0rCWZvciAoaXggPSAwOwotKwkg ICAgIFZFQ19pdGVyYXRlICh0ZGVzY190eXBlX2ZsYWcsIHR5cGUtPnUuZi5mbGFncywgaXgsIGYp OwotKwkgICAgIGl4KyspCi0rCSAgeGZyZWUgKGYtPm5hbWUpOwotKwotKwlWRUNfZnJlZSAodGRl c2NfdHlwZV9mbGFnLCB0eXBlLT51LmYuZmxhZ3MpOwotKyAgICAgIH0KLSsgICAgICBicmVhazsK LSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBicmVhazsKLSAgICAgfQotQEAgLTExOTksNiArMTMx MCwyOSBAQCB0ZGVzY19jcmVhdGVfdmVjdG9yIChzdHJ1Y3QgdGRlc2NfZmVhdHVyCi0gfQotIAot IHN0cnVjdCB0ZGVzY190eXBlICoKLSt0ZGVzY19jcmVhdGVfc3RydWN0IChzdHJ1Y3QgdGRlc2Nf ZmVhdHVyZSAqZmVhdHVyZSwgY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICBzdHJ1Y3QgdGRlc2Nf dHlwZSAqdHlwZSA9IFhaQUxMT0MgKHN0cnVjdCB0ZGVzY190eXBlKTsKLSsKLSsgIHR5cGUtPm5h bWUgPSB4c3RyZHVwIChuYW1lKTsKLSsgIHR5cGUtPmtpbmQgPSBUREVTQ19UWVBFX1NUUlVDVDsK LSsKLSsgIFZFQ19zYWZlX3B1c2ggKHRkZXNjX3R5cGVfcCwgZmVhdHVyZS0+dHlwZXMsIHR5cGUp OwotKyAgcmV0dXJuIHR5cGU7Ci0rfQotKwotKy8qIFNldCB0aGUgdG90YWwgbGVuZ3RoIG9mIFRZ UEUuICBTdHJ1Y3RzIHdoaWNoIGNvbnRhaW4gYml0ZmllbGRzIG1heQotKyAgIG9taXQgdGhlIHJl c2VydmVkIGJpdHMsIHNvIHRoZSBlbmQgb2YgdGhlIGxhc3QgZmllbGQgbWF5IG5vdAotKyAgIHN1 ZmZpY2UuICAqLwotKwotK3ZvaWQKLSt0ZGVzY19zZXRfc3RydWN0X3NpemUgKHN0cnVjdCB0ZGVz Y190eXBlICp0eXBlLCBMT05HRVNUIHNpemUpCi0rewotKyAgZ2RiX2Fzc2VydCAodHlwZS0+a2lu ZCA9PSBUREVTQ19UWVBFX1NUUlVDVCk7Ci0rICB0eXBlLT51LnUuc2l6ZSA9IHNpemU7Ci0rfQot KwotK3N0cnVjdCB0ZGVzY190eXBlICoKLSB0ZGVzY19jcmVhdGVfdW5pb24gKHN0cnVjdCB0ZGVz Y19mZWF0dXJlICpmZWF0dXJlLCBjb25zdCBjaGFyICpuYW1lKQotIHsKLSAgIHN0cnVjdCB0ZGVz Y190eXBlICp0eXBlID0gWFpBTExPQyAoc3RydWN0IHRkZXNjX3R5cGUpOwotQEAgLTEyMTAsMTMg KzEzNDQsMzIgQEAgdGRlc2NfY3JlYXRlX3VuaW9uIChzdHJ1Y3QgdGRlc2NfZmVhdHVyZQotICAg cmV0dXJuIHR5cGU7Ci0gfQotIAotK3N0cnVjdCB0ZGVzY190eXBlICoKLSt0ZGVzY19jcmVhdGVf ZmxhZ3MgKHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlLCBjb25zdCBjaGFyICpuYW1lLAot KwkJICAgIExPTkdFU1Qgc2l6ZSkKLSt7Ci0rICBzdHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZSA9IFha QUxMT0MgKHN0cnVjdCB0ZGVzY190eXBlKTsKLSsKLSsgIHR5cGUtPm5hbWUgPSB4c3RyZHVwIChu YW1lKTsKLSsgIHR5cGUtPmtpbmQgPSBUREVTQ19UWVBFX0ZMQUdTOwotKyAgdHlwZS0+dS5mLnNp emUgPSBzaXplOwotKwotKyAgVkVDX3NhZmVfcHVzaCAodGRlc2NfdHlwZV9wLCBmZWF0dXJlLT50 eXBlcywgdHlwZSk7Ci0rICByZXR1cm4gdHlwZTsKLSt9Ci0rCi0rLyogQWRkIGEgbmV3IGZpZWxk LiAgUmV0dXJuIGEgdGVtcG9yYXJ5IHBvaW50ZXIgdG8gdGhlIGZpZWxkLCB3aGljaAotKyAgIGlz IG9ubHkgdmFsaWQgdW50aWwgdGhlIG5leHQgY2FsbCB0byB0ZGVzY19hZGRfZmllbGQgKHRoZSB2 ZWN0b3IKLSsgICBtaWdodCBiZSByZWFsbG9jYXRlZCkuICAqLwotKwotIHZvaWQKLSB0ZGVzY19h ZGRfZmllbGQgKHN0cnVjdCB0ZGVzY190eXBlICp0eXBlLCBjb25zdCBjaGFyICpmaWVsZF9uYW1l LAotIAkJIHN0cnVjdCB0ZGVzY190eXBlICpmaWVsZF90eXBlKQotIHsKLSAgIHN0cnVjdCB0ZGVz Y190eXBlX2ZpZWxkIGYgPSB7IDAgfTsKLSAKLS0gIGdkYl9hc3NlcnQgKHR5cGUtPmtpbmQgPT0g VERFU0NfVFlQRV9VTklPTik7Ci0rICBnZGJfYXNzZXJ0ICh0eXBlLT5raW5kID09IFRERVNDX1RZ UEVfVU5JT04KLSsJICAgICAgfHwgdHlwZS0+a2luZCA9PSBUREVTQ19UWVBFX1NUUlVDVCk7Ci0g Ci0gICBmLm5hbWUgPSB4c3RyZHVwIChmaWVsZF9uYW1lKTsKLSAgIGYudHlwZSA9IGZpZWxkX3R5 cGU7Ci1AQCAtMTIyNCw2ICsxMzc3LDM3IEBAIHRkZXNjX2FkZF9maWVsZCAoc3RydWN0IHRkZXNj X3R5cGUgKnR5cGUKLSAgIFZFQ19zYWZlX3B1c2ggKHRkZXNjX3R5cGVfZmllbGQsIHR5cGUtPnUu dS5maWVsZHMsICZmKTsKLSB9Ci0gCi0rLyogQWRkIGEgbmV3IGJpdGZpZWxkLiAgKi8KLSsKLSt2 b2lkCi0rdGRlc2NfYWRkX2JpdGZpZWxkIChzdHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZSwgY29uc3Qg Y2hhciAqZmllbGRfbmFtZSwKLSsJCSAgICBpbnQgc3RhcnQsIGludCBlbmQpCi0rewotKyAgc3Ry dWN0IHRkZXNjX3R5cGVfZmllbGQgZiA9IHsgMCB9OwotKwotKyAgZ2RiX2Fzc2VydCAodHlwZS0+ a2luZCA9PSBUREVTQ19UWVBFX1NUUlVDVCk7Ci0rCi0rICBmLm5hbWUgPSB4c3RyZHVwIChmaWVs ZF9uYW1lKTsKLSsgIGYuc3RhcnQgPSBzdGFydDsKLSsgIGYuZW5kID0gZW5kOwotKwotKyAgVkVD X3NhZmVfcHVzaCAodGRlc2NfdHlwZV9maWVsZCwgdHlwZS0+dS51LmZpZWxkcywgJmYpOwotK30K LSsKLSt2b2lkCi0rdGRlc2NfYWRkX2ZsYWcgKHN0cnVjdCB0ZGVzY190eXBlICp0eXBlLCBpbnQg c3RhcnQsCi0rCQljb25zdCBjaGFyICpmbGFnX25hbWUpCi0rewotKyAgc3RydWN0IHRkZXNjX3R5 cGVfZmxhZyBmID0geyAwIH07Ci0rCi0rICBnZGJfYXNzZXJ0ICh0eXBlLT5raW5kID09IFRERVND X1RZUEVfRkxBR1MpOwotKwotKyAgZi5uYW1lID0geHN0cmR1cCAoZmxhZ19uYW1lKTsKLSsgIGYu c3RhcnQgPSBzdGFydDsKLSsKLSsgIFZFQ19zYWZlX3B1c2ggKHRkZXNjX3R5cGVfZmxhZywgdHlw ZS0+dS5mLmZsYWdzLCAmZik7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gdGRlc2NfZnJlZV9mZWF0 dXJlIChzdHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZSkKLSB7Ci0tLS0gZ2RiLTcuMS1wMC9n ZGIvdGFyZ2V0LWRlc2NyaXB0aW9ucy5oCTIwMTAtMDItMTAgMTk6NDU6MDMuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMS9nZGIvdGFyZ2V0LWRlc2NyaXB0aW9ucy5oCTIwMTAtMDQtMDMgMjE6 MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMjA1LDEwICsyMDUsMjAgQEAgc3RydWN0IHRkZXNj X3R5cGUgKnRkZXNjX2NyZWF0ZV92ZWN0b3IgKAotIAkJCQkJY29uc3QgY2hhciAqbmFtZSwKLSAJ CQkJCXN0cnVjdCB0ZGVzY190eXBlICpmaWVsZF90eXBlLAotIAkJCQkJaW50IGNvdW50KTsKLStz dHJ1Y3QgdGRlc2NfdHlwZSAqdGRlc2NfY3JlYXRlX3N0cnVjdCAoc3RydWN0IHRkZXNjX2ZlYXR1 cmUgKmZlYXR1cmUsCi0rCQkJCQljb25zdCBjaGFyICpuYW1lKTsKLSt2b2lkIHRkZXNjX3NldF9z dHJ1Y3Rfc2l6ZSAoc3RydWN0IHRkZXNjX3R5cGUgKnR5cGUsIExPTkdFU1Qgc2l6ZSk7Ci0gc3Ry dWN0IHRkZXNjX3R5cGUgKnRkZXNjX2NyZWF0ZV91bmlvbiAoc3RydWN0IHRkZXNjX2ZlYXR1cmUg KmZlYXR1cmUsCi0gCQkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lKTsKLStzdHJ1Y3QgdGRlc2Nf dHlwZSAqdGRlc2NfY3JlYXRlX2ZsYWdzIChzdHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZSwK LSsJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJCSAgICAgICBMT05HRVNUIHNpemUp OwotIHZvaWQgdGRlc2NfYWRkX2ZpZWxkIChzdHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZSwgY29uc3Qg Y2hhciAqZmllbGRfbmFtZSwKLSAJCSAgICAgIHN0cnVjdCB0ZGVzY190eXBlICpmaWVsZF90eXBl KTsKLSt2b2lkIHRkZXNjX2FkZF9iaXRmaWVsZCAoc3RydWN0IHRkZXNjX3R5cGUgKnR5cGUsIGNv bnN0IGNoYXIgKmZpZWxkX25hbWUsCi0rCQkJIGludCBzdGFydCwgaW50IGVuZCk7Ci0rdm9pZCB0 ZGVzY19hZGRfZmxhZyAoc3RydWN0IHRkZXNjX3R5cGUgKnR5cGUsIGludCBzdGFydCwKLSsJCSAg ICAgY29uc3QgY2hhciAqZmxhZ19uYW1lKTsKLSB2b2lkIHRkZXNjX2NyZWF0ZV9yZWcgKHN0cnVj dCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlLCBjb25zdCBjaGFyICpuYW1lLAotIAkJICAgICAgIGlu dCByZWdudW0sIGludCBzYXZlX3Jlc3RvcmUsIGNvbnN0IGNoYXIgKmdyb3VwLAotIAkJICAgICAg IGludCBiaXRzaXplLCBjb25zdCBjaGFyICp0eXBlKTsKLS0tLSBnZGItNy4xLXAwL2dkYi90ZXN0 c3VpdGUvZ2RiLnhtbC9leHRyYS1yZWdzLnhtbAkyMDA3LTAyLTA4IDIyOjAwOjM2LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIueG1sL2V4dHJhLXJlZ3MueG1s CTIwMTAtMDQtMDMgMjE6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtOCw5ICs4LDI3IEBACi0g ICAgICAgPGZpZWxkIG5hbWU9InYyIiB0eXBlPSJ2MmludDE2Ii8+Ci0gICAgIDwvdW5pb24+Ci0g Ci0rICAgIDxzdHJ1Y3QgaWQ9InN0cnVjdDEiPgotKyAgICAgIDxmaWVsZCBuYW1lPSJ2NCIgdHlw ZT0idjRpbnQ4Ii8+Ci0rICAgICAgPGZpZWxkIG5hbWU9InYyIiB0eXBlPSJ2MmludDE2Ii8+Ci0r ICAgIDwvc3RydWN0PgotKwotKyAgICA8c3RydWN0IGlkPSJzdHJ1Y3QyIiBzaXplPSI4Ij4KLSsg ICAgICA8ZmllbGQgbmFtZT0iZjEiIHN0YXJ0PSIwIiBlbmQ9IjM0Ii8+Ci0rICAgICAgPGZpZWxk IG5hbWU9ImYyIiBzdGFydD0iNjMiIGVuZD0iNjMiLz4KLSsgICAgPC9zdHJ1Y3Q+Ci0rCi0rICAg IDxmbGFncyBpZD0iZmxhZ3MiIHNpemU9IjQiPgotKyAgICAgIDxmaWVsZCBuYW1lPSJYIiBzdGFy dD0iMCIgZW5kPSIwIi8+Ci0rICAgICAgPGZpZWxkIG5hbWU9IlkiIHN0YXJ0PSIyIiBlbmQ9IjIi Lz4KLSsgICAgPC9mbGFncz4KLSsKLSAgICAgPHJlZyBuYW1lPSJleHRyYXJlZyIgYml0c2l6ZT0i MzIiLz4KLSAgICAgPHJlZyBuYW1lPSJ1aW50cmVnIiBiaXRzaXplPSIzMiIgdHlwZT0idWludDMy Ii8+Ci0gICAgIDxyZWcgbmFtZT0idmVjcmVnIiBiaXRzaXplPSIzMiIgdHlwZT0idjRpbnQ4Ii8+ Ci0gICAgIDxyZWcgbmFtZT0idW5pb25yZWciIGJpdHNpemU9IjMyIiB0eXBlPSJ2ZWNpbnQiLz4K LSsgICAgPHJlZyBuYW1lPSJzdHJ1Y3RyZWciIGJpdHNpemU9IjY0IiB0eXBlPSJzdHJ1Y3QxIi8+ Ci0rICAgIDxyZWcgbmFtZT0iYml0ZmllbGRzIiBiaXRzaXplPSI2NCIgdHlwZT0ic3RydWN0MiIv PgotKyAgICA8cmVnIG5hbWU9ImZsYWdzIiBiaXRzaXplPSIzMiIgdHlwZT0iZmxhZ3MiLz4KLSAg IDwvZmVhdHVyZT4KLSA8L3RhcmdldD4KLS0tLSBnZGItNy4xLXAwL2dkYi90ZXN0c3VpdGUvZ2Ri LnhtbC90ZGVzYy1yZWdzLmV4cAkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIueG1sL3RkZXNjLXJlZ3MuZXhwCTIwMTAtMDQt MDMgMjE6MDQ6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQxLDYgKzE0MSwxMSBAQCBnZGJfdGVz dCAicHR5cGUgXCR2ZWNyZWciICJ0eXBlID0gaW50OF90Ci0gZ2RiX3Rlc3QgInB0eXBlIFwkdW5p b25yZWciIFwKLSAgICAgInR5cGUgPSB1bmlvbiB7XHJcbiAqdjRpbnQ4IHY0O1xyXG4gKnYyaW50 MTYgdjI7XHJcbn0iCi0gZ2RiX3Rlc3QgInB0eXBlIFwkdW5pb25yZWcudjQiICJ0eXBlID0gaW50 OF90IFxcXFs0XFxcXSIKLStnZGJfdGVzdCAicHR5cGUgXCRzdHJ1Y3RyZWciIFwKLSsgICAgInR5 cGUgPSBzdHJ1Y3Qgc3RydWN0MSB7XHJcbiAqdjRpbnQ4IHY0O1xyXG4gKnYyaW50MTYgdjI7XHJc bn0iCi0rZ2RiX3Rlc3QgInB0eXBlIFwkc3RydWN0cmVnLnY0IiAidHlwZSA9IGludDhfdCBcXFxb NFxcXF0iCi0rZ2RiX3Rlc3QgInB0eXBlIFwkYml0ZmllbGRzIiBcCi0rICAgICJ0eXBlID0gc3Ry dWN0IHN0cnVjdDIge1xyXG4gKnVpbnQ2NF90IGYxIDogMzU7XHJcbiAqdWludDY0X3QgZjIgOiAx O1xyXG59IgotIAotIGxvYWRfZGVzY3JpcHRpb24gImNvcmUtb25seS54bWwiICIiCi0gIyBUaGUg ZXh0cmEgcmVnaXN0ZXIgZnJvbSB0aGUgcHJldmlvdXMgZGVzY3JpcHRpb24gc2hvdWxkIGJlIGdv bmUuCi0tLS0gZ2RiLTcuMS1wMC9nZGIveG1sLXRkZXNjLmMJMjAxMC0wMS0wMSAwODozMTo0Ni4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi94bWwtdGRlc2MuYwkyMDEwLTA0LTAzIDIx OjA0OjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTg1LDggKzg1LDE1IEBAIHN0cnVjdCB0ZGVzY19w YXJzaW5nX2RhdGEKLSAgICAgIGl0IGRvZXMgbm90IGhhdmUgaXRzIG93bi4gIFRoaXMgc3RhcnRz IGF0IHplcm8uICAqLwotICAgaW50IG5leHRfcmVnbnVtOwotIAotLSAgLyogVGhlIHVuaW9uIHdl IGFyZSBjdXJyZW50bHkgcGFyc2luZywgb3IgbGFzdCBwYXJzZWQuICAqLwotLSAgc3RydWN0IHRk ZXNjX3R5cGUgKmN1cnJlbnRfdW5pb247Ci0rICAvKiBUaGUgc3RydWN0IG9yIHVuaW9uIHdlIGFy ZSBjdXJyZW50bHkgcGFyc2luZywgb3IgbGFzdCBwYXJzZWQuICAqLwotKyAgc3RydWN0IHRkZXNj X3R5cGUgKmN1cnJlbnRfdHlwZTsKLSsKLSsgIC8qIFRoZSBieXRlIHNpemUgb2YgdGhlIGN1cnJl bnQgc3RydWN0IHR5cGUsIGlmIHNwZWNpZmllZC4gIFplcm8KLSsgICAgIGlmIG5vdCBzcGVjaWZp ZWQuICAqLwotKyAgaW50IGN1cnJlbnRfdHlwZV9zaXplOwotKwotKyAgLyogV2hldGhlciB0aGUg Y3VycmVudCB0eXBlIGlzIGEgZmxhZ3MgdHlwZS4gICovCi0rICBpbnQgY3VycmVudF90eXBlX2lz X2ZsYWdzOwotIH07Ci0gCi0gLyogSGFuZGxlIHRoZSBlbmQgb2YgYW4gPGFyY2hpdGVjdHVyZT4g ZWxlbWVudCBhbmQgaXRzIHZhbHVlLiAgKi8KLUBAIC0yMjksMTEgKzIzNiw1NyBAQCB0ZGVzY19z dGFydF91bmlvbiAoc3RydWN0IGdkYl94bWxfcGFyc2VyCi0gICBzdHJ1Y3QgdGRlc2NfcGFyc2lu Z19kYXRhICpkYXRhID0gdXNlcl9kYXRhOwotICAgY2hhciAqaWQgPSBWRUNfaW5kZXggKGdkYl94 bWxfdmFsdWVfcywgYXR0cmlidXRlcywgMCktPnZhbHVlOwotIAotLSAgZGF0YS0+Y3VycmVudF91 bmlvbiA9IHRkZXNjX2NyZWF0ZV91bmlvbiAoZGF0YS0+Y3VycmVudF9mZWF0dXJlLCBpZCk7Ci0r ICBkYXRhLT5jdXJyZW50X3R5cGUgPSB0ZGVzY19jcmVhdGVfdW5pb24gKGRhdGEtPmN1cnJlbnRf ZmVhdHVyZSwgaWQpOwotKyAgZGF0YS0+Y3VycmVudF90eXBlX3NpemUgPSAwOwotKyAgZGF0YS0+ Y3VycmVudF90eXBlX2lzX2ZsYWdzID0gMDsKLSt9Ci0rCi0rLyogSGFuZGxlIHRoZSBzdGFydCBv ZiBhIDxzdHJ1Y3Q+IGVsZW1lbnQuICBJbml0aWFsaXplIHRoZSB0eXBlIGFuZAotKyAgIHJlY29y ZCBpdCB3aXRoIHRoZSBjdXJyZW50IGZlYXR1cmUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rdGRl c2Nfc3RhcnRfc3RydWN0IChzdHJ1Y3QgZ2RiX3htbF9wYXJzZXIgKnBhcnNlciwKLSsJCSAgIGNv bnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgKmVsZW1lbnQsCi0rCQkgICB2b2lkICp1c2VyX2Rh dGEsIFZFQyhnZGJfeG1sX3ZhbHVlX3MpICphdHRyaWJ1dGVzKQotK3sKLSsgIHN0cnVjdCB0ZGVz Y19wYXJzaW5nX2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rICBjaGFyICppZCA9IFZFQ19pbmRl eCAoZ2RiX3htbF92YWx1ZV9zLCBhdHRyaWJ1dGVzLCAwKS0+dmFsdWU7Ci0rICBzdHJ1Y3QgdGRl c2NfdHlwZSAqdHlwZTsKLSsKLSsgIHR5cGUgPSB0ZGVzY19jcmVhdGVfc3RydWN0IChkYXRhLT5j dXJyZW50X2ZlYXR1cmUsIGlkKTsKLSsgIGRhdGEtPmN1cnJlbnRfdHlwZSA9IHR5cGU7Ci0rICBk YXRhLT5jdXJyZW50X3R5cGVfc2l6ZSA9IDA7Ci0rICBkYXRhLT5jdXJyZW50X3R5cGVfaXNfZmxh Z3MgPSAwOwotKwotKyAgaWYgKFZFQ19sZW5ndGggKGdkYl94bWxfdmFsdWVfcywgYXR0cmlidXRl cykgPiAxKQotKyAgICB7Ci0rICAgICAgaW50IHNpemUgPSAoaW50KSAqIChVTE9OR0VTVCAqKQot KwlWRUNfaW5kZXggKGdkYl94bWxfdmFsdWVfcywgYXR0cmlidXRlcywgMSktPnZhbHVlOwotKyAg ICAgIHRkZXNjX3NldF9zdHJ1Y3Rfc2l6ZSAodHlwZSwgc2l6ZSk7Ci0rICAgICAgZGF0YS0+Y3Vy cmVudF90eXBlX3NpemUgPSBzaXplOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rdGRl c2Nfc3RhcnRfZmxhZ3MgKHN0cnVjdCBnZGJfeG1sX3BhcnNlciAqcGFyc2VyLAotKwkJICAgY29u c3Qgc3RydWN0IGdkYl94bWxfZWxlbWVudCAqZWxlbWVudCwKLSsJCSAgIHZvaWQgKnVzZXJfZGF0 YSwgVkVDKGdkYl94bWxfdmFsdWVfcykgKmF0dHJpYnV0ZXMpCi0rewotKyAgc3RydWN0IHRkZXNj X3BhcnNpbmdfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsgIGNoYXIgKmlkID0gVkVDX2luZGV4 IChnZGJfeG1sX3ZhbHVlX3MsIGF0dHJpYnV0ZXMsIDApLT52YWx1ZTsKLSsgIGludCBsZW5ndGgg PSAoaW50KSAqIChVTE9OR0VTVCAqKQotKyAgICBWRUNfaW5kZXggKGdkYl94bWxfdmFsdWVfcywg YXR0cmlidXRlcywgMSktPnZhbHVlOwotKyAgc3RydWN0IHRkZXNjX3R5cGUgKnR5cGU7Ci0rCi0r ICB0eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdzIChkYXRhLT5jdXJyZW50X2ZlYXR1cmUsIGlkLCBs ZW5ndGgpOwotKwotKyAgZGF0YS0+Y3VycmVudF90eXBlID0gdHlwZTsKLSsgIGRhdGEtPmN1cnJl bnRfdHlwZV9zaXplID0gMDsKLSsgIGRhdGEtPmN1cnJlbnRfdHlwZV9pc19mbGFncyA9IDE7Ci0g fQotIAotIC8qIEhhbmRsZSB0aGUgc3RhcnQgb2YgYSA8ZmllbGQ+IGVsZW1lbnQuICBBdHRhY2gg dGhlIGZpZWxkIHRvIHRoZQotLSAgIGN1cnJlbnQgdW5pb24uICAqLwotKyAgIGN1cnJlbnQgc3Ry dWN0IG9yIHVuaW9uLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIHRkZXNjX3N0YXJ0X2ZpZWxkIChz dHJ1Y3QgZ2RiX3htbF9wYXJzZXIgKnBhcnNlciwKLUBAIC0yNDEsMjAgKzI5NCw4NCBAQCB0ZGVz Y19zdGFydF9maWVsZCAoc3RydWN0IGdkYl94bWxfcGFyc2VyCi0gCQkgICB2b2lkICp1c2VyX2Rh dGEsIFZFQyhnZGJfeG1sX3ZhbHVlX3MpICphdHRyaWJ1dGVzKQotIHsKLSAgIHN0cnVjdCB0ZGVz Y19wYXJzaW5nX2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rICBpbnQgaXggPSAwLCBsZW5ndGg7 Ci0gICBzdHJ1Y3QgZ2RiX3htbF92YWx1ZSAqYXR0cnMgPSBWRUNfYWRkcmVzcyAoZ2RiX3htbF92 YWx1ZV9zLCBhdHRyaWJ1dGVzKTsKLSAgIHN0cnVjdCB0ZGVzY190eXBlICpmaWVsZF90eXBlOwot ICAgY2hhciAqZmllbGRfbmFtZSwgKmZpZWxkX3R5cGVfaWQ7Ci0rICBpbnQgc3RhcnQsIGVuZDsK LSAKLS0gIGZpZWxkX25hbWUgPSBhdHRyc1swXS52YWx1ZTsKLS0gIGZpZWxkX3R5cGVfaWQgPSBh dHRyc1sxXS52YWx1ZTsKLSsgIGxlbmd0aCA9IFZFQ19sZW5ndGggKGdkYl94bWxfdmFsdWVfcywg YXR0cmlidXRlcyk7Ci0gCi0tICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZGF0YS0+ Y3VycmVudF9mZWF0dXJlLCBmaWVsZF90eXBlX2lkKTsKLS0gIGlmIChmaWVsZF90eXBlID09IE5V TEwpCi0tICAgIGdkYl94bWxfZXJyb3IgKHBhcnNlciwgXygiVW5pb24gZmllbGQgXCIlc1wiIHJl ZmVyZW5jZXMgdW5kZWZpbmVkICIKLS0JCQkgICAgICJ0eXBlIFwiJXNcIiIpLAotLQkJICAgZmll bGRfbmFtZSwgZmllbGRfdHlwZV9pZCk7Ci0rICBmaWVsZF9uYW1lID0gYXR0cnNbaXgrK10udmFs dWU7Ci0rCi0rICBpZiAoaXggPCBsZW5ndGggJiYgc3RyY21wIChhdHRyc1tpeF0ubmFtZSwgInR5 cGUiKSA9PSAwKQotKyAgICBmaWVsZF90eXBlX2lkID0gYXR0cnNbaXgrK10udmFsdWU7Ci0rICBl bHNlCi0rICAgIGZpZWxkX3R5cGVfaWQgPSBOVUxMOwotKwotKyAgaWYgKGl4IDwgbGVuZ3RoICYm IHN0cmNtcCAoYXR0cnNbaXhdLm5hbWUsICJzdGFydCIpID09IDApCi0rICAgIHN0YXJ0ID0gKiAo VUxPTkdFU1QgKikgYXR0cnNbaXgrK10udmFsdWU7Ci0rICBlbHNlCi0rICAgIHN0YXJ0ID0gLTE7 Ci0rCi0rICBpZiAoaXggPCBsZW5ndGggJiYgc3RyY21wIChhdHRyc1tpeF0ubmFtZSwgImVuZCIp ID09IDApCi0rICAgIGVuZCA9ICogKFVMT05HRVNUICopIGF0dHJzW2l4KytdLnZhbHVlOwotKyAg ZWxzZQotKyAgICBlbmQgPSAtMTsKLSsKLSsgIGlmIChmaWVsZF90eXBlX2lkICE9IE5VTEwpCi0r ICAgIHsKLSsgICAgICBpZiAoZGF0YS0+Y3VycmVudF90eXBlX2lzX2ZsYWdzKQotKwlnZGJfeG1s X2Vycm9yIChwYXJzZXIsIF8oIkNhbm5vdCBhZGQgdHlwZWQgZmllbGQgXCIlc1wiIHRvIGZsYWdz IiksIAotKwkJICAgICAgIGZpZWxkX25hbWUpOwotKyAgICAgIGlmIChkYXRhLT5jdXJyZW50X3R5 cGVfc2l6ZSAhPSAwKQotKwlnZGJfeG1sX2Vycm9yIChwYXJzZXIsCi0rCQkgICAgICAgXygiRXhw bGljaXRseSBzaXplZCB0eXBlIGNhbiBub3QgY29udGFpbiBub24tYml0ZmllbGQgXCIlc1wiIiks IAotKwkJICAgICAgIGZpZWxkX25hbWUpOwotKwotKyAgICAgIGZpZWxkX3R5cGUgPSB0ZGVzY19u YW1lZF90eXBlIChkYXRhLT5jdXJyZW50X2ZlYXR1cmUsIGZpZWxkX3R5cGVfaWQpOwotKyAgICAg IGlmIChmaWVsZF90eXBlID09IE5VTEwpCi0rCWdkYl94bWxfZXJyb3IgKHBhcnNlciwgXygiRmll bGQgXCIlc1wiIHJlZmVyZW5jZXMgdW5kZWZpbmVkICIKLSsJCQkJICJ0eXBlIFwiJXNcIiIpLAot KwkJICAgICAgIGZpZWxkX25hbWUsIGZpZWxkX3R5cGVfaWQpOwotKwotKyAgICAgIHRkZXNjX2Fk ZF9maWVsZCAoZGF0YS0+Y3VycmVudF90eXBlLCBmaWVsZF9uYW1lLCBmaWVsZF90eXBlKTsKLSsg ICAgfQotKyAgZWxzZSBpZiAoc3RhcnQgIT0gLTEgJiYgZW5kICE9IC0xKQotKyAgICB7Ci0rICAg ICAgc3RydWN0IHRkZXNjX3R5cGUgKnQgPSBkYXRhLT5jdXJyZW50X3R5cGU7Ci0rCi0rICAgICAg aWYgKGRhdGEtPmN1cnJlbnRfdHlwZV9pc19mbGFncykKLSsJdGRlc2NfYWRkX2ZsYWcgKHQsIHN0 YXJ0LCBmaWVsZF9uYW1lKTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAoZGF0YS0+Y3VycmVu dF90eXBlX3NpemUgPT0gMCkKLSsJICAgIGdkYl94bWxfZXJyb3IgKHBhcnNlciwKLSsJCQkgICBf KCJJbXBsaWNpdGx5IHNpemVkIHR5cGUgY2FuIG5vdCBjb250YWluIGJpdGZpZWxkIFwiJXNcIiIp LCAKLSsJCQkgICBmaWVsZF9uYW1lKTsKLSsKLSsJICBpZiAoZW5kID49IDY0KQotKwkgICAgZ2Ri X3htbF9lcnJvciAocGFyc2VyLAotKwkJCSAgIF8oIkJpdGZpZWxkIFwiJXNcIiBnb2VzIHBhc3Qg NjQgYml0cyAodW5zdXBwb3J0ZWQpIiksCi0rCQkJICAgZmllbGRfbmFtZSk7Ci0rCi0rCSAgLyog QXNzdW1lIHRoYXQgdGhlIGJpdCBudW1iZXJpbmcgaW4gWE1MIGlzICJsc2ItemVybyIuICBNb3N0 Ci0rCSAgICAgYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIFBvd2VyUEMgdXNlIHRoaXMgb3JkZXJp bmcuICBJbgotKwkgICAgIHRoZSBmdXR1cmUsIHdlIGNhbiBhZGQgYW4gWE1MIHRhZyB0byBpbmRp Y2F0ZSAibXNiLXplcm8iCi0rCSAgICAgbnVtYmVyaW5nLiAgKi8KLSsJICBpZiAoc3RhcnQgPiBl bmQpCi0rCSAgICBnZGJfeG1sX2Vycm9yIChwYXJzZXIsIF8oIkJpdGZpZWxkIFwiJXNcIiBoYXMg c3RhcnQgYWZ0ZXIgZW5kIiksCi0rCQkJICAgZmllbGRfbmFtZSk7Ci0gCi0tICB0ZGVzY19hZGRf ZmllbGQgKGRhdGEtPmN1cnJlbnRfdW5pb24sIGZpZWxkX25hbWUsIGZpZWxkX3R5cGUpOwotKwkg IGlmIChlbmQgPj0gZGF0YS0+Y3VycmVudF90eXBlX3NpemUgKiBUQVJHRVRfQ0hBUl9CSVQpCi0r CSAgICBnZGJfeG1sX2Vycm9yIChwYXJzZXIsIF8oIkJpdGZpZWxkIFwiJXNcIiBkb2VzIG5vdCBm aXQgaW4gc3RydWN0IikpOwotKwotKwkgIHRkZXNjX2FkZF9iaXRmaWVsZCAodCwgZmllbGRfbmFt ZSwgc3RhcnQsIGVuZCk7Ci0rCX0KLSsgICAgfQotKyAgZWxzZQotKyAgICBnZGJfeG1sX2Vycm9y IChwYXJzZXIsIF8oIkZpZWxkIFwiJXNcIiBoYXMgbmVpdGhlciB0eXBlIG5vciBiaXQgcG9zaXRp b24iKSwKLSsJCSAgIGZpZWxkX25hbWUpOwotIH0KLSAKLSAvKiBIYW5kbGUgdGhlIHN0YXJ0IG9m IGEgPHZlY3Rvcj4gZWxlbWVudC4gIEluaXRpYWxpemUgdGhlIHR5cGUgYW5kCi1AQCAtMjg3LDEx ICs0MDQsMTMgQEAgdGRlc2Nfc3RhcnRfdmVjdG9yIChzdHJ1Y3QgZ2RiX3htbF9wYXJzZQotIAot IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgZmllbGRfYXR0cmlidXRlc1td ID0gewotICAgeyAibmFtZSIsIEdEQl9YTUxfQUZfTk9ORSwgTlVMTCwgTlVMTCB9LAotLSAgeyAi dHlwZSIsIEdEQl9YTUxfQUZfTk9ORSwgTlVMTCwgTlVMTCB9LAotKyAgeyAidHlwZSIsIEdEQl9Y TUxfQUZfT1BUSU9OQUwsIE5VTEwsIE5VTEwgfSwKLSsgIHsgInN0YXJ0IiwgR0RCX1hNTF9BRl9P UFRJT05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX3Vsb25nZXN0LCBOVUxMIH0sCi0rICB7ICJlbmQi LCBHREJfWE1MX0FGX09QVElPTkFMLCBnZGJfeG1sX3BhcnNlX2F0dHJfdWxvbmdlc3QsIE5VTEwg fSwKLSAgIHsgTlVMTCwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50IHVuaW9uX2NoaWxkcmVuW10gPSB7Ci0r c3RhdGljIGNvbnN0IHN0cnVjdCBnZGJfeG1sX2VsZW1lbnQgc3RydWN0X3VuaW9uX2NoaWxkcmVu W10gPSB7Ci0gICB7ICJmaWVsZCIsIGZpZWxkX2F0dHJpYnV0ZXMsIE5VTEwsIEdEQl9YTUxfRUZf UkVQRUFUQUJMRSwKLSAgICAgdGRlc2Nfc3RhcnRfZmllbGQsIE5VTEwgfSwKLSAgIHsgTlVMTCwg TlVMTCwgTlVMTCwgR0RCX1hNTF9FRl9OT05FLCBOVUxMLCBOVUxMIH0KLUBAIC0zMDgsOCArNDI3 LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgcmUKLSAgIHsgTlVM TCwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotLXN0YXRpYyBjb25zdCBz dHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgdW5pb25fYXR0cmlidXRlc1tdID0gewotK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgc3RydWN0X3VuaW9uX2F0dHJpYnV0ZXNbXSA9 IHsKLSAgIHsgImlkIiwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0sCi0rICB7ICJzaXpl IiwgR0RCX1hNTF9BRl9PUFRJT05BTCwgZ2RiX3htbF9wYXJzZV9hdHRyX3Vsb25nZXN0LCBOVUxM fSwKLSsgIHsgTlVMTCwgR0RCX1hNTF9BRl9OT05FLCBOVUxMLCBOVUxMIH0KLSt9OwotKwotK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9hdHRyaWJ1dGUgZmxhZ3NfYXR0cmlidXRlc1tdID0g ewotKyAgeyAiaWQiLCBHREJfWE1MX0FGX05PTkUsIE5VTEwsIE5VTEwgfSwKLSsgIHsgInNpemUi LCBHREJfWE1MX0FGX05PTkUsIGdkYl94bWxfcGFyc2VfYXR0cl91bG9uZ2VzdCwgTlVMTH0sCi0g ICB7IE5VTEwsIEdEQl9YTUxfQUZfTk9ORSwgTlVMTCwgTlVMTCB9Ci0gfTsKLSAKLUBAIC0zMjks OSArNDU1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2RiX3htbF9lbGVtZW50IGZlYXQKLSAg IHsgInJlZyIsIHJlZ19hdHRyaWJ1dGVzLCBOVUxMLAotICAgICBHREJfWE1MX0VGX09QVElPTkFM IHwgR0RCX1hNTF9FRl9SRVBFQVRBQkxFLAotICAgICB0ZGVzY19zdGFydF9yZWcsIE5VTEwgfSwK LS0gIHsgInVuaW9uIiwgdW5pb25fYXR0cmlidXRlcywgdW5pb25fY2hpbGRyZW4sCi0rICB7ICJz dHJ1Y3QiLCBzdHJ1Y3RfdW5pb25fYXR0cmlidXRlcywgc3RydWN0X3VuaW9uX2NoaWxkcmVuLAot KyAgICBHREJfWE1MX0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9SRVBFQVRBQkxFLAotKyAgICB0 ZGVzY19zdGFydF9zdHJ1Y3QsIE5VTEwgfSwKLSsgIHsgInVuaW9uIiwgc3RydWN0X3VuaW9uX2F0 dHJpYnV0ZXMsIHN0cnVjdF91bmlvbl9jaGlsZHJlbiwKLSAgICAgR0RCX1hNTF9FRl9PUFRJT05B TCB8IEdEQl9YTUxfRUZfUkVQRUFUQUJMRSwKLSAgICAgdGRlc2Nfc3RhcnRfdW5pb24sIE5VTEwg fSwKLSsgIHsgImZsYWdzIiwgZmxhZ3NfYXR0cmlidXRlcywgc3RydWN0X3VuaW9uX2NoaWxkcmVu LAotKyAgICBHREJfWE1MX0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9SRVBFQVRBQkxFLAotKyAg ICB0ZGVzY19zdGFydF9mbGFncywgTlVMTCB9LCAgICAKLSAgIHsgInZlY3RvciIsIHZlY3Rvcl9h dHRyaWJ1dGVzLCBOVUxMLAotICAgICBHREJfWE1MX0VGX09QVElPTkFMIHwgR0RCX1hNTF9FRl9S RVBFQVRBQkxFLAotICAgICB0ZGVzY19zdGFydF92ZWN0b3IsIE5VTEwgfSwKCmRpZmYgLS1naXQg YS9nZGItYno1NzgyNTAtYXZ4LTAzb2YxMC5wYXRjaCBiL2dkYi1iejU3ODI1MC1hdngtMDNvZjEw LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ZiNTUxLi4wMDAwMDAwCi0t LSBhL2dkYi1iejU3ODI1MC1hdngtMDNvZjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDU3 ICswLDAgQEAKLVsgQmFja3BvcnRlZC4gIF0KLQotY29tbWl0IDAyNTdkNjM5ZDQyZjg5NmEzNTk5 OTNhZThhZGI1NzkyZTI4MGY2NWYKLUF1dGhvcjogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNv bT4KLURhdGU6ICAgTW9uIE1hciAxIDE3OjI2OjAyIDIwMTAgKzAwMDAKLQotICAgIFJlbW92ZSBU REVTQ19UWVBFX0kzODZfRUZMQUdTIGFuZCBUREVTQ19UWVBFX0kzODZfTVhDU1IuCi0gICAgCi0g ICAgMjAxMC0wMy0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotICAgIAotICAg IAkqIHRhcmdldC1kZXNjcmlwdGlvbnMuYyAodGRlc2NfdHlwZSk6IFJlbW92ZQotICAgIAlUREVT Q19UWVBFX0kzODZfRUZMQUdTIGFuZCBUREVTQ19UWVBFX0kzODZfTVhDU1IuCi0gICAgCSh0ZGVz Y19wcmVkZWZpbmVkX3R5cGVzKTogTGlrZXdpc2UuCi0gICAgCSh0ZGVzY19nZGJfdHlwZSk6IExp a2V3aXNlLiAgUGFzcyBOVUxMIHRvIGFwcGVuZF9mbGFnc190eXBlX2ZsYWcKLSAgICAJaWYgZmxh ZyBuYW1lIGlzIGVtcHR5LgotICAgIAkobWFpbnRfcHJpbnRfY190ZGVzY19jbWQpOiBIYW5kbGUg VERFU0NfVFlQRV9GTEFHUy4KLSAgICAKLSAgICAJKiBmZWF0dXJlcy9pMzg2LzMyYml0LWNvcmUu eG1sOiBEZWZpbmUgaTM4Nl9lZmxhZ3MuCi0gICAgCSogZmVhdHVyZXMvaTM4Ni82NGJpdC1jb3Jl LnhtbDogTGlrZXdpc2UuCi0gICAgCi0gICAgCSogZmVhdHVyZXMvaTM4Ni8zMmJpdC1zc2UueG1s OiBEZWZpbmUgaTM4Nl9teGNzci4KLSAgICAJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LXNzZS54bWw6 IExpa2V3aXNlLgotICAgIAotICAgIAkqIGZlYXR1cmVzL2kzODYvYW1kNjQtbGludXguYzogUmVn ZW5lcmF0ZWQuCi0gICAgCSogZmVhdHVyZXMvaTM4Ni9hbWQ2NC5jOiBMaWtld2lzZS4KLSAgICAJ KiBmZWF0dXJlcy9pMzg2L2kzODYtbGludXguYzogTGlrZXdpc2UuCi0gICAgCSogZmVhdHVyZXMv aTM4Ni9pMzg2LmM6IExpa2V3aXNlLgotCi0tLS0gZ2RiLTcuMS1wMS9nZGIvZmVhdHVyZXMvaTM4 Ni8zMmJpdC1jb3JlLnhtbAkyMDEwLTAyLTA4IDA2OjA4OjQ2LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjEvZ2RiL2ZlYXR1cmVzL2kzODYvMzJiaXQtY29yZS54bWwJMjAxMC0wNC0wMyAyMTow NjoxMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03LDYgKzcsMjYgQEAKLSAKLSA8IURPQ1RZUEUgZmVh dHVyZSBTWVNURU0gImdkYi10YXJnZXQuZHRkIj4KLSA8ZmVhdHVyZSBuYW1lPSJvcmcuZ251Lmdk Yi5pMzg2LmNvcmUiPgotKyAgPGZsYWdzIGlkPSJpMzg2X2VmbGFncyIgc2l6ZT0iNCI+Ci0rICAg IDxmaWVsZCBuYW1lPSJDRiIgc3RhcnQ9IjAiIGVuZD0iMCIvPgotKyAgICA8ZmllbGQgbmFtZT0i IiBzdGFydD0iMSIgZW5kPSIxIi8+Ci0rICAgIDxmaWVsZCBuYW1lPSJQRiIgc3RhcnQ9IjIiIGVu ZD0iMiIvPgotKyAgICA8ZmllbGQgbmFtZT0iQUYiIHN0YXJ0PSI0IiBlbmQ9IjQiLz4KLSsgICAg PGZpZWxkIG5hbWU9IlpGIiBzdGFydD0iNiIgZW5kPSI2Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJT RiIgc3RhcnQ9IjciIGVuZD0iNyIvPgotKyAgICA8ZmllbGQgbmFtZT0iVEYiIHN0YXJ0PSI4IiBl bmQ9IjgiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklGIiBzdGFydD0iOSIgZW5kPSI5Ii8+Ci0rICAg IDxmaWVsZCBuYW1lPSJERiIgc3RhcnQ9IjEwIiBlbmQ9IjEwIi8+Ci0rICAgIDxmaWVsZCBuYW1l PSJPRiIgc3RhcnQ9IjExIiBlbmQ9IjExIi8+Ci0rICAgIDxmaWVsZCBuYW1lPSJOVCIgc3RhcnQ9 IjE0IiBlbmQ9IjE0Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJSRiIgc3RhcnQ9IjE2IiBlbmQ9IjE2 Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJWTSIgc3RhcnQ9IjE3IiBlbmQ9IjE3Ii8+Ci0rICAgIDxm aWVsZCBuYW1lPSJBQyIgc3RhcnQ9IjE4IiBlbmQ9IjE4Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJW SUYiIHN0YXJ0PSIxOSIgZW5kPSIxOSIvPgotKyAgICA8ZmllbGQgbmFtZT0iVklQIiBzdGFydD0i MjAiIGVuZD0iMjAiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklEIiBzdGFydD0iMjEiIGVuZD0iMjEi Lz4KLSsgIDwvZmxhZ3M+Ci0rCi0gICA8cmVnIG5hbWU9ImVheCIgYml0c2l6ZT0iMzIiIHR5cGU9 ImludDMyIi8+Ci0gICA8cmVnIG5hbWU9ImVjeCIgYml0c2l6ZT0iMzIiIHR5cGU9ImludDMyIi8+ Ci0gICA8cmVnIG5hbWU9ImVkeCIgYml0c2l6ZT0iMzIiIHR5cGU9ImludDMyIi8+Ci0tLS0gZ2Ri LTcuMS1wMS9nZGIvZmVhdHVyZXMvaTM4Ni8zMmJpdC1zc2UueG1sCTIwMTAtMDItMDggMDY6MDg6 NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVhdHVyZXMvaTM4Ni8zMmJpdC1z c2UueG1sCTIwMTAtMDQtMDMgMjE6MDY6MTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjIsNiArMjIs MjIgQEAKLSAgICAgPGZpZWxkIG5hbWU9InYyX2ludDY0IiB0eXBlPSJ2Mmk2NCIvPgotICAgICA8 ZmllbGQgbmFtZT0idWludDEyOCIgdHlwZT0idWludDEyOCIvPgotICAgPC91bmlvbj4KLSsgIDxm bGFncyBpZD0iaTM4Nl9teGNzciIgc2l6ZT0iNCI+Ci0rICAgIDxmaWVsZCBuYW1lPSJJRSIgc3Rh cnQ9IjAiIGVuZD0iMCIvPgotKyAgICA8ZmllbGQgbmFtZT0iREUiIHN0YXJ0PSIxIiBlbmQ9IjEi Lz4KLSsgICAgPGZpZWxkIG5hbWU9IlpFIiBzdGFydD0iMiIgZW5kPSIyIi8+Ci0rICAgIDxmaWVs ZCBuYW1lPSJPRSIgc3RhcnQ9IjMiIGVuZD0iMyIvPgotKyAgICA8ZmllbGQgbmFtZT0iVUUiIHN0 YXJ0PSI0IiBlbmQ9IjQiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlBFIiBzdGFydD0iNSIgZW5kPSI1 Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJEQVoiIHN0YXJ0PSI2IiBlbmQ9IjYiLz4KLSsgICAgPGZp ZWxkIG5hbWU9IklNIiBzdGFydD0iNyIgZW5kPSI3Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJETSIg c3RhcnQ9IjgiIGVuZD0iOCIvPgotKyAgICA8ZmllbGQgbmFtZT0iWk0iIHN0YXJ0PSI5IiBlbmQ9 IjkiLz4KLSsgICAgPGZpZWxkIG5hbWU9Ik9NIiBzdGFydD0iMTAiIGVuZD0iMTAiLz4KLSsgICAg PGZpZWxkIG5hbWU9IlVNIiBzdGFydD0iMTEiIGVuZD0iMTEiLz4KLSsgICAgPGZpZWxkIG5hbWU9 IlBNIiBzdGFydD0iMTIiIGVuZD0iMTIiLz4KLSsgICAgPGZpZWxkIG5hbWU9IkZaIiBzdGFydD0i MTUiIGVuZD0iMTUiLz4KLSsgIDwvZmxhZ3M+Ci0gCi0gICA8cmVnIG5hbWU9InhtbTAiIGJpdHNp emU9IjEyOCIgdHlwZT0idmVjMTI4IiByZWdudW09IjMyIi8+Ci0gICA8cmVnIG5hbWU9InhtbTEi IGJpdHNpemU9IjEyOCIgdHlwZT0idmVjMTI4Ii8+Ci0tLS0gZ2RiLTcuMS1wMS9nZGIvZmVhdHVy ZXMvaTM4Ni82NGJpdC1jb3JlLnhtbAkyMDEwLTAyLTA4IDA2OjA4OjQ2LjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjEvZ2RiL2ZlYXR1cmVzL2kzODYvNjRiaXQtY29yZS54bWwJMjAxMC0wNC0w MyAyMTowNjoxMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03LDYgKzcsMjYgQEAKLSAKLSA8IURPQ1RZ UEUgZmVhdHVyZSBTWVNURU0gImdkYi10YXJnZXQuZHRkIj4KLSA8ZmVhdHVyZSBuYW1lPSJvcmcu Z251LmdkYi5pMzg2LmNvcmUiPgotKyAgPGZsYWdzIGlkPSJpMzg2X2VmbGFncyIgc2l6ZT0iNCI+ Ci0rICAgIDxmaWVsZCBuYW1lPSJDRiIgc3RhcnQ9IjAiIGVuZD0iMCIvPgotKyAgICA8ZmllbGQg bmFtZT0iIiBzdGFydD0iMSIgZW5kPSIxIi8+Ci0rICAgIDxmaWVsZCBuYW1lPSJQRiIgc3RhcnQ9 IjIiIGVuZD0iMiIvPgotKyAgICA8ZmllbGQgbmFtZT0iQUYiIHN0YXJ0PSI0IiBlbmQ9IjQiLz4K LSsgICAgPGZpZWxkIG5hbWU9IlpGIiBzdGFydD0iNiIgZW5kPSI2Ii8+Ci0rICAgIDxmaWVsZCBu YW1lPSJTRiIgc3RhcnQ9IjciIGVuZD0iNyIvPgotKyAgICA8ZmllbGQgbmFtZT0iVEYiIHN0YXJ0 PSI4IiBlbmQ9IjgiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklGIiBzdGFydD0iOSIgZW5kPSI5Ii8+ Ci0rICAgIDxmaWVsZCBuYW1lPSJERiIgc3RhcnQ9IjEwIiBlbmQ9IjEwIi8+Ci0rICAgIDxmaWVs ZCBuYW1lPSJPRiIgc3RhcnQ9IjExIiBlbmQ9IjExIi8+Ci0rICAgIDxmaWVsZCBuYW1lPSJOVCIg c3RhcnQ9IjE0IiBlbmQ9IjE0Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJSRiIgc3RhcnQ9IjE2IiBl bmQ9IjE2Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJWTSIgc3RhcnQ9IjE3IiBlbmQ9IjE3Ii8+Ci0r ICAgIDxmaWVsZCBuYW1lPSJBQyIgc3RhcnQ9IjE4IiBlbmQ9IjE4Ii8+Ci0rICAgIDxmaWVsZCBu YW1lPSJWSUYiIHN0YXJ0PSIxOSIgZW5kPSIxOSIvPgotKyAgICA8ZmllbGQgbmFtZT0iVklQIiBz dGFydD0iMjAiIGVuZD0iMjAiLz4KLSsgICAgPGZpZWxkIG5hbWU9IklEIiBzdGFydD0iMjEiIGVu ZD0iMjEiLz4KLSsgIDwvZmxhZ3M+Ci0rCi0gICA8cmVnIG5hbWU9InJheCIgYml0c2l6ZT0iNjQi IHR5cGU9ImludDY0Ii8+Ci0gICA8cmVnIG5hbWU9InJieCIgYml0c2l6ZT0iNjQiIHR5cGU9Imlu dDY0Ii8+Ci0gICA8cmVnIG5hbWU9InJjeCIgYml0c2l6ZT0iNjQiIHR5cGU9ImludDY0Ii8+Ci0t LS0gZ2RiLTcuMS1wMS9nZGIvZmVhdHVyZXMvaTM4Ni82NGJpdC1zc2UueG1sCTIwMTAtMDItMDgg MDY6MDg6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVhdHVyZXMvaTM4Ni82 NGJpdC1zc2UueG1sCTIwMTAtMDQtMDMgMjE6MDY6MTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjIs NiArMjIsMjIgQEAKLSAgICAgPGZpZWxkIG5hbWU9InYyX2ludDY0IiB0eXBlPSJ2Mmk2NCIvPgot ICAgICA8ZmllbGQgbmFtZT0idWludDEyOCIgdHlwZT0idWludDEyOCIvPgotICAgPC91bmlvbj4K LSsgIDxmbGFncyBpZD0iaTM4Nl9teGNzciIgc2l6ZT0iNCI+Ci0rICAgIDxmaWVsZCBuYW1lPSJJ RSIgc3RhcnQ9IjAiIGVuZD0iMCIvPgotKyAgICA8ZmllbGQgbmFtZT0iREUiIHN0YXJ0PSIxIiBl bmQ9IjEiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlpFIiBzdGFydD0iMiIgZW5kPSIyIi8+Ci0rICAg IDxmaWVsZCBuYW1lPSJPRSIgc3RhcnQ9IjMiIGVuZD0iMyIvPgotKyAgICA8ZmllbGQgbmFtZT0i VUUiIHN0YXJ0PSI0IiBlbmQ9IjQiLz4KLSsgICAgPGZpZWxkIG5hbWU9IlBFIiBzdGFydD0iNSIg ZW5kPSI1Ii8+Ci0rICAgIDxmaWVsZCBuYW1lPSJEQVoiIHN0YXJ0PSI2IiBlbmQ9IjYiLz4KLSsg ICAgPGZpZWxkIG5hbWU9IklNIiBzdGFydD0iNyIgZW5kPSI3Ii8+Ci0rICAgIDxmaWVsZCBuYW1l PSJETSIgc3RhcnQ9IjgiIGVuZD0iOCIvPgotKyAgICA8ZmllbGQgbmFtZT0iWk0iIHN0YXJ0PSI5 IiBlbmQ9IjkiLz4KLSsgICAgPGZpZWxkIG5hbWU9Ik9NIiBzdGFydD0iMTAiIGVuZD0iMTAiLz4K LSsgICAgPGZpZWxkIG5hbWU9IlVNIiBzdGFydD0iMTEiIGVuZD0iMTEiLz4KLSsgICAgPGZpZWxk IG5hbWU9IlBNIiBzdGFydD0iMTIiIGVuZD0iMTIiLz4KLSsgICAgPGZpZWxkIG5hbWU9IkZaIiBz dGFydD0iMTUiIGVuZD0iMTUiLz4KLSsgIDwvZmxhZ3M+Ci0gCi0gICA8cmVnIG5hbWU9InhtbTAi IGJpdHNpemU9IjEyOCIgdHlwZT0idmVjMTI4IiByZWdudW09IjQwIi8+Ci0gICA8cmVnIG5hbWU9 InhtbTEiIGJpdHNpemU9IjEyOCIgdHlwZT0idmVjMTI4Ii8+Ci0tLS0gZ2RiLTcuMS1wMS9nZGIv ZmVhdHVyZXMvaTM4Ni9hbWQ2NC1saW51eC5jCTIwMTAtMDItMDggMDY6MDg6NDYuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1saW51eC5jCTIwMTAt MDQtMDMgMjE6MDY6MTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTcsNiArMTcsMjUgQEAgaW5pdGlh bGl6ZV90ZGVzY19hbWQ2NF9saW51eCAodm9pZCkKLSAgIHNldF90ZGVzY19vc2FiaSAocmVzdWx0 LCBvc2FiaV9mcm9tX3RkZXNjX3N0cmluZyAoIkdOVS9MaW51eCIpKTsKLSAKLSAgIGZlYXR1cmUg PSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5jb3JlIik7 Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdzIChmZWF0dXJlLCAiaTM4Nl9lZmxh Z3MiLCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiQ0YiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmll bGRfdHlwZSwgMiwgIlBGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNCwgIkFG Iik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNiwgIlpGIik7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIlNGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgOCwgIlRGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIklGIik7 Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJERiIpOwotKyAgdGRlc2NfYWRk X2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiT0YiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCAxNCwgIk5UIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTYsICJSRiIp OwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE3LCAiVk0iKTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCAxOCwgIkFDIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgMTksICJWSUYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMCwgIlZJ UCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIxLCAiSUQiKTsKLSsKLSAgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyYXgiLCAwLCAxLCBOVUxMLCA2NCwgImludDY0Iik7 Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJ4IiwgMSwgMSwgTlVMTCwgNjQsICJp bnQ2NCIpOwotICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJjeCIsIDIsIDEsIE5VTEws IDY0LCAiaW50NjQiKTsKLUBAIC05Myw2ICsxMTIsMjIgQEAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2 NF9saW51eCAodm9pZCkKLSAgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJl LCAidWludDEyOCIpOwotICAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidWludDEyOCIsIGZpZWxk X3R5cGUpOwotIAotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwg ImkzODZfbXhjc3IiLCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiSUUi KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiREUiKTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCAyLCAiWkUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCAzLCAiT0UiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAiVUUiKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA1LCAiUEUiKTsKLSsgIHRkZXNjX2FkZF9m bGFnIChmaWVsZF90eXBlLCA2LCAiREFaIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlw ZSwgNywgIklNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIkRNIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIlpNIik7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgMTAsICJPTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDExLCAiVU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMiwgIlBNIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTUsICJGWiIpOwotKwotICAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgInhtbTAiLCA0MCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0g ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMSIsIDQxLCAxLCBOVUxMLCAxMjgsICJ2 ZWMxMjgiKTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0yIiwgNDIsIDEsIE5V TEwsIDEyOCwgInZlYzEyOCIpOwotLS0tIGdkYi03LjEtcDEvZ2RiL2ZlYXR1cmVzL2kzODYvYW1k NjQuYwkyMDEwLTAyLTA4IDA2OjA4OjQ2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEvZ2Ri L2ZlYXR1cmVzL2kzODYvYW1kNjQuYwkyMDEwLTA0LTAzIDIxOjA2OjEyLjAwMDAwMDAwMCArMDIw MAotQEAgLTE1LDYgKzE1LDI1IEBAIGluaXRpYWxpemVfdGRlc2NfYW1kNjQgKHZvaWQpCi0gICBz ZXRfdGRlc2NfYXJjaGl0ZWN0dXJlIChyZXN1bHQsIGJmZF9zY2FuX2FyY2ggKCJpMzg2Ong4Ni02 NCIpKTsKLSAKLSAgIGZlYXR1cmUgPSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3Jn LmdudS5nZGIuaTM4Ni5jb3JlIik7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdz IChmZWF0dXJlLCAiaTM4Nl9lZmxhZ3MiLCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCAwLCAiQ0YiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMiwgIlBGIik7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgNCwgIkFGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg NiwgIlpGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIlNGIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIlRGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAo ZmllbGRfdHlwZSwgOSwgIklGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAs ICJERiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiT0YiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNCwgIk5UIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAo ZmllbGRfdHlwZSwgMTYsICJSRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE3 LCAiVk0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxOCwgIkFDIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTksICJWSUYiKTsKLSsgIHRkZXNjX2FkZF9mbGFn IChmaWVsZF90eXBlLCAyMCwgIlZJUCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDIxLCAiSUQiKTsKLSsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyYXgiLCAwLCAx LCBOVUxMLCA2NCwgImludDY0Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJ4 IiwgMSwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgInJjeCIsIDIsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLUBAIC05MSw2ICsxMTAsMjIgQEAg aW5pdGlhbGl6ZV90ZGVzY19hbWQ2NCAodm9pZCkKLSAgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1l ZF90eXBlIChmZWF0dXJlLCAidWludDEyOCIpOwotICAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAi dWludDEyOCIsIGZpZWxkX3R5cGUpOwotIAotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9m bGFncyAoZmVhdHVyZSwgImkzODZfbXhjc3IiLCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCAwLCAiSUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiREUi KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyLCAiWkUiKTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCAzLCAiT0UiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCA0LCAiVUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA1LCAiUEUiKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiREFaIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgNywgIklNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlw ZSwgOCwgIkRNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIlpNIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJPTSIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDExLCAiVU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBl LCAxMiwgIlBNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTUsICJGWiIpOwot KwotICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTAiLCA0MCwgMSwgTlVMTCwgMTI4 LCAidmVjMTI4Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMSIsIDQxLCAx LCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4 bW0yIiwgNDIsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotLS0tIGdkYi03LjEtcDEvZ2RiL2Zl YXR1cmVzL2kzODYvaTM4Ni1saW51eC5jCTIwMTAtMDItMDggMDY6MDg6NDYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWxpbnV4LmMJMjAxMC0wNC0w MyAyMTowNjoxMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNyw2ICsxNywyNSBAQCBpbml0aWFsaXpl X3RkZXNjX2kzODZfbGludXggKHZvaWQpCi0gICBzZXRfdGRlc2Nfb3NhYmkgKHJlc3VsdCwgb3Nh YmlfZnJvbV90ZGVzY19zdHJpbmcgKCJHTlUvTGludXgiKSk7Ci0gCi0gICBmZWF0dXJlID0gdGRl c2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuY29yZSIpOwotKyAg ZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfZWZsYWdzIiwg NCk7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIkNGIik7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5 cGUsIDIsICJQRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJBRiIpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJaRiIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDgsICJURiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJJRiIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiREYiKTsKLSsgIHRkZXNjX2FkZF9mbGFn IChmaWVsZF90eXBlLCAxMSwgIk9GIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg MTQsICJOVCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE2LCAiUkYiKTsKLSsg IHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNywgIlZNIik7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDE5LCAiVklGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjAsICJWSVAiKTsK LSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMSwgIklEIik7Ci0rCi0gICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAiZWF4IiwgMCwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotICAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVjeCIsIDEsIDEsIE5VTEwsIDMyLCAiaW50MzIi KTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlZHgiLCAyLCAxLCBOVUxMLCAzMiwg ImludDMyIik7Ci1AQCAtODgsNiArMTA3LDIyIEBAIGluaXRpYWxpemVfdGRlc2NfaTM4Nl9saW51 eCAodm9pZCkKLSAgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWlu dDEyOCIpOwotICAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidWludDEyOCIsIGZpZWxkX3R5cGUp OwotIAotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZf bXhjc3IiLCA0KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiSUUiKTsKLSsg IHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxLCAiREUiKTsKLSsgIHRkZXNjX2FkZF9mbGFn IChmaWVsZF90eXBlLCAyLCAiWkUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAz LCAiT0UiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAiVUUiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA1LCAiUEUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCA2LCAiREFaIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywg IklNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIkRNIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgOSwgIlpNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmll bGRfdHlwZSwgMTAsICJPTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAi VU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMiwgIlBNIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTUsICJGWiIpOwotKwotICAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgInhtbTAiLCAzMiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0gICB0ZGVz Y19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMSIsIDMzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgi KTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0yIiwgMzQsIDEsIE5VTEwsIDEy OCwgInZlYzEyOCIpOwotLS0tIGdkYi03LjEtcDEvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni5jCTIw MTAtMDItMDggMDY6MDg6NDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvZmVhdHVy ZXMvaTM4Ni9pMzg2LmMJMjAxMC0wNC0wMyAyMTowNjoxMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0x NSw2ICsxNSwyNSBAQCBpbml0aWFsaXplX3RkZXNjX2kzODYgKHZvaWQpCi0gICBzZXRfdGRlc2Nf YXJjaGl0ZWN0dXJlIChyZXN1bHQsIGJmZF9zY2FuX2FyY2ggKCJpMzg2IikpOwotIAotICAgZmVh dHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2LmNv cmUiKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19jcmVhdGVfZmxhZ3MgKGZlYXR1cmUsICJpMzg2 X2VmbGFncyIsIDQpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDAsICJDRiIpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEsICIiKTsKLSsgIHRkZXNjX2FkZF9mbGFn IChmaWVsZF90eXBlLCAyLCAiUEYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0 LCAiQUYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiWkYiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA3LCAiU0YiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCA4LCAiVEYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA5LCAi SUYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMCwgIkRGIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTEsICJPRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDE0LCAiTlQiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNiwg IlJGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTcsICJWTSIpOwotKyAgdGRl c2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE4LCAiQUMiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCAxOSwgIlZJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIw LCAiVklQIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjEsICJJRCIpOwotKwot ICAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVheCIsIDAsIDEsIE5VTEwsIDMyLCAiaW50 MzIiKTsKLSAgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlY3giLCAxLCAxLCBOVUxMLCAz MiwgImludDMyIik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWR4IiwgMiwgMSwg TlVMTCwgMzIsICJpbnQzMiIpOwotQEAgLTgzLDYgKzEwMiwyMiBAQCBpbml0aWFsaXplX3RkZXNj X2kzODYgKHZvaWQpCi0gICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwg InVpbnQxMjgiKTsKLSAgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInVpbnQxMjgiLCBmaWVsZF90 eXBlKTsKLSAKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19jcmVhdGVfZmxhZ3MgKGZlYXR1cmUsICJp Mzg2X214Y3NyIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIklFIik7 Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIkRFIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgMiwgIlpFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlw ZSwgMywgIk9FIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNCwgIlVFIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNSwgIlBFIik7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgNiwgIkRBWiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDcsICJJTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJETSIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJaTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcg KGZpZWxkX3R5cGUsIDEwLCAiT00iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAx MSwgIlVNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTIsICJQTSIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE1LCAiRloiKTsKLSsKLSAgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJ4bW0wIiwgMzIsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotICAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTEiLCAzMywgMSwgTlVMTCwgMTI4LCAidmVj MTI4Iik7Ci0gICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMiIsIDM0LCAxLCBOVUxM LCAxMjgsICJ2ZWMxMjgiKTsKLS0tLSBnZGItNy4xLXAxL2dkYi90YXJnZXQtZGVzY3JpcHRpb25z LmMJMjAxMC0wNC0wMyAyMTowNDoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi90 YXJnZXQtZGVzY3JpcHRpb25zLmMJMjAxMC0wNC0wMyAyMTowNjoxMi4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xMjYsOCArMTI2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgdGRlc2NfdHlwZQotICAgICBUREVT Q19UWVBFX0lFRUVfRE9VQkxFLAotICAgICBUREVTQ19UWVBFX0FSTV9GUEFfRVhULAotICAgICBU REVTQ19UWVBFX0kzODdfRVhULAotLSAgICBUREVTQ19UWVBFX0kzODZfRUZMQUdTLAotLSAgICBU REVTQ19UWVBFX0kzODZfTVhDU1IsCi0gCi0gICAgIC8qIFR5cGVzIGRlZmluZWQgYnkgYSB0YXJn ZXQgZmVhdHVyZS4gICovCi0gICAgIFRERVNDX1RZUEVfVkVDVE9SLAotQEAgLTQ4Myw5ICs0ODEs NyBAQCBzdGF0aWMgc3RydWN0IHRkZXNjX3R5cGUgdGRlc2NfcHJlZGVmaW5lCi0gICB7ICJpZWVl X3NpbmdsZSIsIFRERVNDX1RZUEVfSUVFRV9TSU5HTEUgfSwKLSAgIHsgImllZWVfZG91YmxlIiwg VERFU0NfVFlQRV9JRUVFX0RPVUJMRSB9LAotICAgeyAiYXJtX2ZwYV9leHQiLCBUREVTQ19UWVBF X0FSTV9GUEFfRVhUIH0sCi0tICB7ICJpMzg3X2V4dCIsIFRERVNDX1RZUEVfSTM4N19FWFQgfSwK LS0gIHsgImkzODZfZWZsYWdzIiwgVERFU0NfVFlQRV9JMzg2X0VGTEFHUyB9LAotLSAgeyAiaTM4 Nl9teGNzciIsIFRERVNDX1RZUEVfSTM4Nl9NWENTUiB9Ci0rICB7ICJpMzg3X2V4dCIsIFRERVND X1RZUEVfSTM4N19FWFQgfQotIH07Ci0gCi0gLyogUmV0dXJuIHRoZSB0eXBlIGFzc29jaWF0ZWQg d2l0aCBJRCBpbiB0aGUgY29udGV4dCBvZiBGRUFUVVJFLCBvcgotQEAgLTYwNyw1NyArNjAzLDYg QEAgdGRlc2NfZ2RiX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICAgIHJldHVy biBhcmNoX2Zsb2F0X3R5cGUgKGdkYmFyY2gsIC0xLCAiYnVpbHRpbl90eXBlX2kzODdfZXh0IiwK LSAJCQkgICAgICBmbG9hdGZvcm1hdHNfaTM4N19leHQpOwotIAotLSAgICBjYXNlIFRERVNDX1RZ UEVfSTM4Nl9FRkxBR1M6Ci0tICAgICAgewotLQlzdHJ1Y3QgdHlwZSAqdHlwZTsKLS0KLS0JdHlw ZSA9IGFyY2hfZmxhZ3NfdHlwZSAoZ2RiYXJjaCwgImJ1aWx0aW5fdHlwZV9pMzg2X2VmbGFncyIs IDQpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAwLCAiQ0YiKTsKLS0JYXBwZW5k X2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMSwgTlVMTCk7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2Zs YWcgKHR5cGUsIDIsICJQRiIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA0LCAi QUYiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgNiwgIlpGIik7Ci0tCWFwcGVu ZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDcsICJTRiIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9m bGFnICh0eXBlLCA4LCAiVEYiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgOSwg IklGIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDEwLCAiREYiKTsKLS0JYXBw ZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTEsICJPRiIpOwotLQlhcHBlbmRfZmxhZ3NfdHlw ZV9mbGFnICh0eXBlLCAxNCwgIk5UIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUs IDE2LCAiUkYiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTcsICJWTSIpOwot LQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxOCwgIkFDIik7Ci0tCWFwcGVuZF9mbGFn c190eXBlX2ZsYWcgKHR5cGUsIDE5LCAiVklGIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcg KHR5cGUsIDIwLCAiVklQIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDIxLCAi SUQiKTsKLS0KLS0JcmV0dXJuIHR5cGU7Ci0tICAgICAgfQotLSAgICBicmVhazsKLS0KLS0gICAg Y2FzZSBUREVTQ19UWVBFX0kzODZfTVhDU1I6Ci0tICAgICAgewotLQlzdHJ1Y3QgdHlwZSAqdHlw ZTsKLS0KLS0JdHlwZSA9IGFyY2hfZmxhZ3NfdHlwZSAoZ2RiYXJjaCwgImJ1aWx0aW5fdHlwZV9p Mzg2X214Y3NyIiwgNCk7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDAsICJJRSIp OwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCAxLCAiREUiKTsKLS0JYXBwZW5kX2Zs YWdzX3R5cGVfZmxhZyAodHlwZSwgMiwgIlpFIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcg KHR5cGUsIDMsICJPRSIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA0LCAiVUUi KTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgNSwgIlBFIik7Ci0tCWFwcGVuZF9m bGFnc190eXBlX2ZsYWcgKHR5cGUsIDYsICJEQVoiKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxh ZyAodHlwZSwgNywgIklNIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDgsICJE TSIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCA5LCAiWk0iKTsKLS0JYXBwZW5k X2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTAsICJPTSIpOwotLQlhcHBlbmRfZmxhZ3NfdHlwZV9m bGFnICh0eXBlLCAxMSwgIlVNIik7Ci0tCWFwcGVuZF9mbGFnc190eXBlX2ZsYWcgKHR5cGUsIDEy LCAiUE0iKTsKLS0JYXBwZW5kX2ZsYWdzX3R5cGVfZmxhZyAodHlwZSwgMTUsICJGWiIpOwotLQot LQlyZXR1cm4gdHlwZTsKLS0gICAgICB9Ci0tICAgIGJyZWFrOwotLQotICAgICAvKiBUeXBlcyBk ZWZpbmVkIGJ5IGEgdGFyZ2V0IGZlYXR1cmUuICAqLwotICAgICBjYXNlIFRERVNDX1RZUEVfVkVD VE9SOgotICAgICAgIHsKLUBAIC03NjksNyArNzE0LDggQEAgdGRlc2NfZ2RiX3R5cGUgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAotIAkgIC8qIE5vdGUgdGhhdCBjb250cmFyeSB0byB0aGUgZnVu Y3Rpb24gbmFtZSwgdGhpcyBjYWxsIHdpbGwKLSAJICAgICBqdXN0IHNldCB0aGUgcHJvcGVydGll cyBvZiBhbiBhbHJlYWR5LWFsbG9jYXRlZAotIAkgICAgIGZpZWxkLiAgKi8KLS0JICBhcHBlbmRf ZmxhZ3NfdHlwZV9mbGFnICh0eXBlLCBmLT5zdGFydCwgZi0+bmFtZSk7Ci0rCSAgYXBwZW5kX2Zs YWdzX3R5cGVfZmxhZyAodHlwZSwgZi0+c3RhcnQsCi0rCQkJCSAgKmYtPm5hbWUgPyBmLT5uYW1l IDogTlVMTCk7Ci0gCi0gCXJldHVybiB0eXBlOwotICAgICAgIH0KLUBAIC0xNjAyLDYgKzE1NDgs NyBAQCBtYWludF9wcmludF9jX3RkZXNjX2NtZCAoY2hhciAqYXJncywgaW50Ci0gICBzdHJ1Y3Qg dGRlc2NfcmVnICpyZWc7Ci0gICBzdHJ1Y3QgdGRlc2NfdHlwZSAqdHlwZTsKLSAgIHN0cnVjdCB0 ZGVzY190eXBlX2ZpZWxkICpmOwotKyAgc3RydWN0IHRkZXNjX3R5cGVfZmxhZyAqZmxhZzsKLSAg IGludCBpeCwgaXgyLCBpeDM7Ci0gCi0gICAvKiBVc2UgdGhlIGdsb2JhbCB0YXJnZXQtc3VwcGxp ZWQgZGVzY3JpcHRpb24sIG5vdCB0aGUgY3VycmVudAotQEAgLTE3MTUsNiArMTY2MiwxOCBAQCBt YWludF9wcmludF9jX3RkZXNjX2NtZCAoY2hhciAqYXJncywgaW50Ci0gCQkgICAgIGYtPm5hbWUp OwotIAkJfQotIAkgICAgICBicmVhazsKLSsJICAgIGNhc2UgVERFU0NfVFlQRV9GTEFHUzoKLSsJ ICAgICAgcHJpbnRmX3VuZmlsdGVyZWQKLSsJCSgiICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRl X2ZsYWdzIChmZWF0dXJlLCBcIiVzXCIsICVkKTtcbiIsCi0rCQkgdHlwZS0+bmFtZSwgKGludCkg dHlwZS0+dS5mLnNpemUpOwotKwkgICAgICBmb3IgKGl4MyA9IDA7Ci0rCQkgICBWRUNfaXRlcmF0 ZSAodGRlc2NfdHlwZV9mbGFnLCB0eXBlLT51LmYuZmxhZ3MsIGl4MywKLSsJCQkJZmxhZyk7Ci0r CQkgICBpeDMrKykKLSsJCXByaW50Zl91bmZpbHRlcmVkCi0rCQkgICgiICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgJWQsIFwiJXNcIik7XG4iLAotKwkJICAgZmxhZy0+c3RhcnQsIGZsYWct Pm5hbWUpOwotKwkgICAgICBicmVhazsKLSAJICAgIGRlZmF1bHQ6Ci0gCSAgICAgIGVycm9yIChf KCJDIG91dHB1dCBpcyBub3Qgc3VwcG9ydGVkIHR5cGUgXCIlc1wiLiIpLCB0eXBlLT5uYW1lKTsK LSAJICAgIH0KCmRpZmYgLS1naXQgYS9nZGItYno1NzgyNTAtYXZ4LTA0b2YxMC5wYXRjaCBiL2dk Yi1iejU3ODI1MC1hdngtMDRvZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBiMzYxOWRjLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMDRvZjEwLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTM2NiArMCwwIEBACi1bIEJhY2twb3J0ZWQuICBdCi0KLWNvbW1p dCA5ZDYyNTgxMmYyNDYwOGY5OWZkOTllODU5MWVmM2M4MGQ3MjlmOWI1Ci1BdXRob3I6IEguSi4g THUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiAgIFR1ZSBNYXIgMiAxMzoxNDoyOCAyMDEw ICswMDAwCi0KLSAgICBTdXBwb3J0IHg4NiBwc2V1ZG8gYnl0ZSwgd29yZCBhbmQgZHdvcmQgcmVn aXN0ZXJzLgotICAgIAotICAgIGdkYi8KLSAgICAKLSAgICAyMDEwLTAzLTAyICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0gICAgCi0gICAgCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9i eXRlX25hbWVzKTogTmV3LgotICAgIAkoYW1kNjRfd29yZF9uYW1lcyk6IExpa2V3aXNlLgotICAg IAkoYW1kNjRfZHdvcmRfbmFtZXMpOiBMaWtld2lzZS4KLSAgICAJKGFtZDY0X3BzZXVkb19yZWdp c3Rlcl9uYW1lKTogTGlrZXdpc2UuCi0gICAgCShhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCk6 IExpa2V3aXNlLgotICAgIAkoYW1kNjRfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2Uu Ci0gICAgCShhbWQ2NF9pbml0X2FiaSk6IFNldCBudW1fYnl0ZV9yZWdzLCBudW1fd29yZF9yZWdz LCBudW1fZHdvcmRfcmVncwotICAgIAlhbmQgbnVtX21teF9yZWdzLiAgQ2FsbCBzZXRfZ2RiYXJj aF9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCwKLSAgICAJc2V0X2dkYmFyY2hfcHNldWRvX3JlZ2lzdGVy X3dyaXRlIGFuZAotICAgIAlzZXRfdGRlc2NfcHNldWRvX3JlZ2lzdGVyX25hbWUuICBEb24ndCBj YWxsCi0gICAgCXNldF9nZGJhcmNoX251bV9wc2V1ZG9fcmVncy4gIERvbid0IHNldCBtbTBfcmVn bnVtLgotICAgIAotICAgIAkqIGkzODYtdGRlcC5jIChpMzg2X251bV9tbXhfcmVncyk6IFJlbW92 ZWQuCi0gICAgCShpMzg2X251bV9wc2V1ZG9fcmVncyk6IExpa2V3aXNlLgotICAgIAkoaTM4Nl9i eXRlX25hbWVzKTogTmV3LgotICAgIAkoaTM4Nl93b3JkX25hbWVzKTogTGlrZXdpc2UuCi0gICAg CShpMzg2X2J5dGVfcmVnbnVtX3ApOiBMaWtld2lzZS4KLSAgICAJKGkzODZfd29yZF9yZWdudW1f cCk6IExpa2V3aXNlLgotICAgIAkoaTM4Nl9tbXhfcmVnbnVtX3ApOiBVcGRhdGVkLgotICAgIAko aTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk6IE1ha2UgaXQgZ2xvYmFsLiAgSGFuZGxlIGJ5dGUg YW5kCi0gICAgCXdvcmQgcHNldWRvLXJlZ2lzdGVycy4KLSAgICAJKGkzODZfcHNldWRvX3JlZ2lz dGVyX3JlYWQpOiBMaWtld2lzZS4KLSAgICAJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTog TGlrZXdpc2UuCi0gICAgCShpMzg2X3BzZXVkb19yZWdpc3Rlcl90eXBlKTogSGFuZGxlIGJ5dGUs IHdvcmQgYW5kIGR3b3JkCi0gICAgCXBzZXVkby1yZWdpc3RlcnMKLSAgICAJKGkzODZfcmVnaXN0 ZXJfcmVnZ3JvdXBfcCk6IERvbid0IGluY2x1ZGUgcHNldWRvCi0gICAgCXJlZ2lzdGVycywgZXhj ZXB0IGZvciBNWFgsIGluIGFueSByZWdpc3RlciBncm91cHMuICBEb24ndAotICAgIAlpbmNsdWRl IHBzZXVkbyBieXRlLCB3b3JkLCBkd29yZCByZWdpc3RlcnMgaW4gZ2VuZXJhbF9yZWdncm91cC4K LSAgICAJKGkzODZfZ2RiYXJjaF9pbml0KTogU2V0IG51bV9ieXRlX3JlZ3MsIG51bV93b3JkX3Jl Z3MsCi0gICAgCW51bV9kd29yZF9yZWdzLCBhbF9yZWdudW0sIGF4X3JlZ251bSBhbmQgZWF4X3Jl Z251bS4gIFB1dCBNTVgKLSAgICAJcHNldWRvLXJlZ2lzdGVycyBhZnRlciB3b3JkIHBzZXVkby1y ZWdpc3RlcnMuICBDYWxsCi0gICAgCXNldF9nZGJhcmNoX251bV9wc2V1ZG9fcmVncyBhZnRlciBj YWxsaW5nIGdkYmFyY2hfaW5pdF9vc2FiaS4KLSAgICAKLSAgICAJKiBpMzg2LXRkZXAuaCAoZ2Ri YXJjaF90ZGVwKTogQWRkIG51bV9tbXhfcmVncywgbnVtX2J5dGVfcmVncywKLSAgICAJYWxfcmVn bnVtLCBudW1fd29yZF9yZWdzLCBheF9yZWdudW0sIG51bV9kd29yZF9yZWdzIGFuZAotICAgIAll YXhfcmVnbnVtLgotICAgIAkoaTM4Nl9ieXRlX3JlZ251bV9wKTogTmV3LgotICAgIAkoaTM4Nl93 b3JkX3JlZ251bV9wKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X2R3b3JkX3JlZ251bV9wKTogTGlr ZXdpc2UuCi0gICAgCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogTGlrZXdpc2UuCi0gICAg CShpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTGlrZXdpc2UuCi0gICAgCShpMzg2X3BzZXVk b19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgotICAgIAotICAgIGdkYi90ZXN0c3VpdGUvCi0g ICAgCi0gICAgMjAxMC0wMy0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotICAg IAotICAgIAkqIGdkYi5hcmNoL2FtZDY0LWJ5dGUuZXhwOiBOZXcuCi0gICAgCSogZ2RiLmFyY2gv YW1kNjQtZHdvcmQuZXhwOiBMaWtld2lzZS4KLSAgICAJKiBnZGIuYXJjaC9hbWQ2NC1wc2V1ZG8u YzogTGlrZXdpc2UuCi0gICAgCSogZ2RiLmFyY2gvYW1kNjQtd29yZC5leHA6IExpa2V3aXNlLgot ICAgIAkqIGdkYi5hcmNoL2kzODYtYnl0ZS5leHA6IExpa2V3aXNlLgotICAgIAkqIGdkYi5hcmNo L2kzODYtcHNldWRvLmM6IExpa2V3aXNlLgotICAgIAkqIGdkYi5hcmNoL2kzODYtd29yZC5leHA6 IExpa2V3aXNlLgotCi0tLS0gZ2RiLTcuMS1wMi9nZGIvYW1kNjQtdGRlcC5jCTIwMTAtMDQtMDMg MjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvYW1kNjQtdGRlcC5jCTIw MTAtMDQtMDMgMjE6MDY6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjEwLDYgKzIxMCwxMDcgQEAg YW1kNjRfYXJjaF9yZWdfdG9fcmVnbnVtIChpbnQgcmVnKQotICAgcmV0dXJuIGFtZDY0X2FyY2hf cmVnbWFwW3JlZ107Ci0gfQotIAotKy8qIFJlZ2lzdGVyIG5hbWVzIGZvciBieXRlIHBzZXVkby1y ZWdpc3RlcnMuICAqLwotKwotK3N0YXRpYyBjb25zdCBjaGFyICphbWQ2NF9ieXRlX25hbWVzW10g PQotK3sKLSsgICJhbCIsICJibCIsICJjbCIsICJkbCIsICJzaWwiLCAiZGlsIiwgImJwbCIsICJz cGwiLAotKyAgInI4bCIsICJyOWwiLCAicjEwbCIsICJyMTFsIiwgInIxMmwiLCAicjEzbCIsICJy MTRsIiwgInIxNWwiCi0rfTsKLSsKLSsvKiBSZWdpc3RlciBuYW1lcyBmb3Igd29yZCBwc2V1ZG8t cmVnaXN0ZXJzLiAgKi8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqYW1kNjRfd29yZF9uYW1lc1td ID0KLSt7Ci0rICAiYXgiLCAiYngiLCAiY3giLCAiZHgiLCAic2kiLCAiZGkiLCAiYnAiLCAic3Ai LCAKLSsgICJyOHciLCAicjl3IiwgInIxMHciLCAicjExdyIsICJyMTJ3IiwgInIxM3ciLCAicjE0 dyIsICJyMTV3IgotK307Ci0rCi0rLyogUmVnaXN0ZXIgbmFtZXMgZm9yIGR3b3JkIHBzZXVkby1y ZWdpc3RlcnMuICAqLwotKwotK3N0YXRpYyBjb25zdCBjaGFyICphbWQ2NF9kd29yZF9uYW1lc1td ID0KLSt7Ci0rICAiZWF4IiwgImVieCIsICJlY3giLCAiZWR4IiwgImVzaSIsICJlZGkiLCAiZWJw IiwgImVzcCIsIAotKyAgInI4ZCIsICJyOWQiLCAicjEwZCIsICJyMTFkIiwgInIxMmQiLCAicjEz ZCIsICJyMTRkIiwgInIxNWQiCi0rfTsKLSsKLSsvKiBSZXR1cm4gdGhlIG5hbWUgb2YgcmVnaXN0 ZXIgUkVHTlVNLiAgKi8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rYW1kNjRfcHNldWRvX3Jl Z2lzdGVyX25hbWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQotK3sKLSsg IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAg aWYgKGkzODZfYnl0ZV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0dXJuIGFt ZDY0X2J5dGVfbmFtZXNbcmVnbnVtIC0gdGRlcC0+YWxfcmVnbnVtXTsKLSsgIGVsc2UgaWYgKGkz ODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0dXJuIGFtZDY0X3dv cmRfbmFtZXNbcmVnbnVtIC0gdGRlcC0+YXhfcmVnbnVtXTsKLSsgIGVsc2UgaWYgKGkzODZfZHdv cmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rICAgIHJldHVybiBhbWQ2NF9kd29yZF9u YW1lc1tyZWdudW0gLSB0ZGVwLT5lYXhfcmVnbnVtXTsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIGkz ODZfcHNldWRvX3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJlZ251bSk7Ci0rfQotKwotK3N0YXRp YyB2b2lkCi0rYW1kNjRfcHNldWRvX3JlZ2lzdGVyX3JlYWQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAotKwkJCSAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKwkJCSAgICBpbnQgcmVn bnVtLCBnZGJfYnl0ZSAqYnVmKQotK3sKLSsgIGdkYl9ieXRlIHJhd19idWZbTUFYX1JFR0lTVEVS X1NJWkVdOwotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2Ri YXJjaCk7Ci0rCi0rICBpZiAoaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQot KyAgICB7Ci0rICAgICAgaW50IGdwbnVtID0gcmVnbnVtIC0gdGRlcC0+YWxfcmVnbnVtOwotKwot KyAgICAgIC8qIEV4dHJhY3QgKGFsd2F5cyBsaXR0bGUgZW5kaWFuKS4gICovCi0rICAgICAgcmVn Y2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCBncG51bSwgcmF3X2J1Zik7Ci0rICAgICAgbWVtY3B5 IChidWYsIHJhd19idWYsIDEpOwotKyAgICB9Ci0rICBlbHNlIGlmIChpMzg2X2R3b3JkX3JlZ251 bV9wIChnZGJhcmNoLCByZWdudW0pKQotKyAgICB7Ci0rICAgICAgaW50IGdwbnVtID0gcmVnbnVt IC0gdGRlcC0+ZWF4X3JlZ251bTsKLSsgICAgICAvKiBFeHRyYWN0IChhbHdheXMgbGl0dGxlIGVu ZGlhbikuICAqLwotKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgZ3BudW0sIHJh d19idWYpOwotKyAgICAgIG1lbWNweSAoYnVmLCByYXdfYnVmLCA0KTsKLSsgICAgfQotKyAgZWxz ZQotKyAgICBpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkIChnZGJhcmNoLCByZWdjYWNoZSwgcmVn bnVtLCBidWYpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2FtZDY0X3BzZXVkb19yZWdpc3Rlcl93 cml0ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJICAgICBzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLAotKwkJCSAgICAgaW50IHJlZ251bSwgY29uc3QgZ2RiX2J5dGUgKmJ1ZikKLSt7 Ci0rICBnZGJfYnl0ZSByYXdfYnVmW01BWF9SRUdJU1RFUl9TSVpFXTsKLSsgIHN0cnVjdCBnZGJh cmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKwotKyAgaWYgKGkzODZf Ynl0ZV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgewotKyAgICAgIGludCBncG51 bSA9IHJlZ251bSAtIHRkZXAtPmFsX3JlZ251bTsKLSsKLSsgICAgICAvKiBSZWFkIC4uLiAgKi8K LSsgICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVnY2FjaGUsIGdwbnVtLCByYXdfYnVmKTsKLSsg ICAgICAvKiAuLi4gTW9kaWZ5IC4uLiAoYWx3YXlzIGxpdHRsZSBlbmRpYW4pLiAgKi8KLSsgICAg ICBtZW1jcHkgKHJhd19idWYsIGJ1ZiwgMSk7Ci0rICAgICAgLyogLi4uIFdyaXRlLiAgKi8KLSsg ICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJlZ2NhY2hlLCBncG51bSwgcmF3X2J1Zik7Ci0rICAg IH0KLSsgIGVsc2UgaWYgKGkzODZfZHdvcmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0r ICAgIHsKLSsgICAgICBpbnQgZ3BudW0gPSByZWdudW0gLSB0ZGVwLT5lYXhfcmVnbnVtOwotKwot KyAgICAgIC8qIFJlYWQgLi4uICAqLwotKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNo ZSwgZ3BudW0sIHJhd19idWYpOwotKyAgICAgIC8qIC4uLiBNb2RpZnkgLi4uIChhbHdheXMgbGl0 dGxlIGVuZGlhbikuICAqLwotKyAgICAgIG1lbWNweSAocmF3X2J1ZiwgYnVmLCA0KTsKLSsgICAg ICAvKiAuLi4gV3JpdGUuICAqLwotKyAgICAgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2FjaGUs IGdwbnVtLCByYXdfYnVmKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBpMzg2X3BzZXVkb19yZWdp c3Rlcl93cml0ZSAoZ2RiYXJjaCwgcmVnY2FjaGUsIHJlZ251bSwgYnVmKTsKLSt9Ci0rCi0gDAot IAotIC8qIFJldHVybiB0aGUgdW5pb24gY2xhc3Mgb2YgQ0xBU1MxIGFuZCBDTEFTUzIuICBTZWUg dGhlIHBzQUJJIGZvcgotQEAgLTIxMzIsNiArMjIzMywxOSBAQCBhbWQ2NF9pbml0X2FiaSAoc3Ry dWN0IGdkYmFyY2hfaW5mbyBpbmZvCi0gICB0ZGVwLT5udW1fY29yZV9yZWdzID0gQU1ENjRfTlVN X0dSRUdTICsgSTM4N19OVU1fUkVHUzsKLSAgIHRkZXAtPnJlZ2lzdGVyX25hbWVzID0gYW1kNjRf cmVnaXN0ZXJfbmFtZXM7Ci0gCi0rICB0ZGVwLT5udW1fYnl0ZV9yZWdzID0gMTY7Ci0rICB0ZGVw LT5udW1fd29yZF9yZWdzID0gMTY7Ci0rICB0ZGVwLT5udW1fZHdvcmRfcmVncyA9IDE2OwotKyAg LyogQXZvaWQgd2lyaW5nIGluIHRoZSBNTVggcmVnaXN0ZXJzIGZvciBub3cuICAqLwotKyAgdGRl cC0+bnVtX21teF9yZWdzID0gMDsKLSsKLSsgIHNldF9nZGJhcmNoX3BzZXVkb19yZWdpc3Rlcl9y ZWFkIChnZGJhcmNoLAotKwkJCQkgICAgYW1kNjRfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOwotKyAg c2V0X2dkYmFyY2hfcHNldWRvX3JlZ2lzdGVyX3dyaXRlIChnZGJhcmNoLAotKwkJCQkgICAgIGFt ZDY0X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk7Ci0rCi0rICBzZXRfdGRlc2NfcHNldWRvX3JlZ2lz dGVyX25hbWUgKGdkYmFyY2gsIGFtZDY0X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTsKLSsKLSAgIC8q IEFNRDY0IGhhcyBhbiBGUFUgYW5kIDE2IFNTRSByZWdpc3RlcnMuICAqLwotICAgdGRlcC0+c3Qw X3JlZ251bSA9IEFNRDY0X1NUMF9SRUdOVU07Ci0gICB0ZGVwLT5udW1feG1tX3JlZ3MgPSAxNjsK LUBAIC0yMTgzLDEwICsyMjk3LDYgQEAgYW1kNjRfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2lu Zm8gaW5mbwotIAotICAgc2V0X2dkYmFyY2hfc2tpcF9wcm9sb2d1ZSAoZ2RiYXJjaCwgYW1kNjRf c2tpcF9wcm9sb2d1ZSk7Ci0gCi0tICAvKiBBdm9pZCB3aXJpbmcgaW4gdGhlIE1NWCByZWdpc3Rl cnMgZm9yIG5vdy4gICovCi0tICBzZXRfZ2RiYXJjaF9udW1fcHNldWRvX3JlZ3MgKGdkYmFyY2gs IDApOwotLSAgdGRlcC0+bW0wX3JlZ251bSA9IC0xOwotLQotICAgdGRlcC0+cmVjb3JkX3JlZ21h cCA9IGFtZDY0X3JlY29yZF9yZWdtYXA7Ci0gCi0gICBzZXRfZ2RiYXJjaF9kdW1teV9pZCAoZ2Ri YXJjaCwgYW1kNjRfZHVtbXlfaWQpOwotLS0tIGdkYi03LjEtcDIvZ2RiL2kzODYtdGRlcC5jCTIw MTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvaTM4Ni10 ZGVwLmMJMjAxMC0wNC0wMyAyMTowNjo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC04MSwxNyArODEs NzIgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmkzODZfbW14X25hbWVzW10gPQotICAgIm1tNCIsICJt bTUiLCAibW02IiwgIm1tNyIKLSB9OwotIAotLXN0YXRpYyBjb25zdCBpbnQgaTM4Nl9udW1fbW14 X3JlZ3MgPSBBUlJBWV9TSVpFIChpMzg2X21teF9uYW1lcyk7Ci0rLyogUmVnaXN0ZXIgbmFtZXMg Zm9yIGJ5dGUgcHNldWRvLXJlZ2lzdGVycy4gICovCi0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmkz ODZfYnl0ZV9uYW1lc1tdID0KLSt7Ci0rICAiYWwiLCAiY2wiLCAiZGwiLCAiYmwiLCAKLSsgICJh aCIsICJjaCIsICJkaCIsICJiaCIKLSt9OwotKwotKy8qIFJlZ2lzdGVyIG5hbWVzIGZvciB3b3Jk IHBzZXVkby1yZWdpc3RlcnMuICAqLwotKwotK3N0YXRpYyBjb25zdCBjaGFyICppMzg2X3dvcmRf bmFtZXNbXSA9Ci0rewotKyAgImF4IiwgImN4IiwgImR4IiwgImJ4IiwKLSsgICJzcCIsICJicCIs ICJzaSIsICJkaSIKLSt9OwotKwotKy8qIE1NWCByZWdpc3Rlcj8gICovCi0gCi0gc3RhdGljIGlu dAotIGkzODZfbW14X3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251 bSkKLSB7Ci0tICBpbnQgbW0wX3JlZ251bSA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPm1tMF9y ZWdudW07Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJh cmNoKTsKLSsgIGludCBtbTBfcmVnbnVtID0gdGRlcC0+bW0wX3JlZ251bTsKLSAKLSAgIGlmICht bTBfcmVnbnVtIDwgMCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICByZXR1cm4gKHJlZ251bSA+PSBt bTBfcmVnbnVtICYmIHJlZ251bSA8IG1tMF9yZWdudW0gKyBpMzg2X251bV9tbXhfcmVncyk7Ci0r ICByZWdudW0gLT0gbW0wX3JlZ251bTsKLSsgIHJldHVybiByZWdudW0gPj0gMCAmJiByZWdudW0g PCB0ZGVwLT5udW1fbW14X3JlZ3M7Ci0rfQotKwotKy8qIEJ5dGUgcmVnaXN0ZXI/ICAqLwotKwot K2ludAotK2kzODZfYnl0ZV9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCBy ZWdudW0pCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAo Z2RiYXJjaCk7Ci0rCi0rICByZWdudW0gLT0gdGRlcC0+YWxfcmVnbnVtOwotKyAgcmV0dXJuIHJl Z251bSA+PSAwICYmIHJlZ251bSA8IHRkZXAtPm51bV9ieXRlX3JlZ3M7Ci0rfQotKwotKy8qIFdv cmQgcmVnaXN0ZXI/ICAqLwotKwotK2ludAotK2kzODZfd29yZF9yZWdudW1fcCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAq dGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICByZWdudW0gLT0gdGRlcC0+YXhf cmVnbnVtOwotKyAgcmV0dXJuIHJlZ251bSA+PSAwICYmIHJlZ251bSA8IHRkZXAtPm51bV93b3Jk X3JlZ3M7Ci0rfQotKwotKy8qIER3b3JkIHJlZ2lzdGVyPyAgKi8KLSsKLStpbnQKLStpMzg2X2R3 b3JkX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkKLSt7Ci0r ICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKLSsg IGludCBlYXhfcmVnbnVtID0gdGRlcC0+ZWF4X3JlZ251bTsKLSsKLSsgIGlmIChlYXhfcmVnbnVt IDwgMCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICByZWdudW0gLT0gZWF4X3JlZ251bTsKLSsgIHJl dHVybiByZWdudW0gPj0gMCAmJiByZWdudW0gPCB0ZGVwLT5udW1fZHdvcmRfcmVnczsKLSB9Ci0g Ci0gLyogU1NFIHJlZ2lzdGVyPyAgKi8KLUBAIC0xNDcsMTEgKzIwMiwxOCBAQCBpMzg2X2ZwY19y ZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCi0gCi0gLyogUmV0dXJuIHRoZSBuYW1lIG9m IHJlZ2lzdGVyIFJFR05VTS4gICovCi0gCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotK2NvbnN0IGNo YXIgKgotIGkzODZfcHNldWRvX3JlZ2lzdGVyX25hbWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBpbnQgcmVnbnVtKQotIHsKLS0gIGdkYl9hc3NlcnQgKGkzODZfbW14X3JlZ251bV9wIChnZGJh cmNoLCByZWdudW0pKTsKLS0gIHJldHVybiBpMzg2X21teF9uYW1lc1tyZWdudW0gLSBJMzg3X01N MF9SRUdOVU0gKGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCkpXTsKLSsgIHN0cnVjdCBnZGJhcmNoX3Rk ZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgaWYgKGkzODZfbW14X3JlZ251 bV9wIChnZGJhcmNoLCByZWdudW0pKQotKyAgICByZXR1cm4gaTM4Nl9tbXhfbmFtZXNbcmVnbnVt IC0gSTM4N19NTTBfUkVHTlVNICh0ZGVwKV07Ci0rICBlbHNlIGlmIChpMzg2X2J5dGVfcmVnbnVt X3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rICAgIHJldHVybiBpMzg2X2J5dGVfbmFtZXNbcmVnbnVt IC0gdGRlcC0+YWxfcmVnbnVtXTsKLSsgIGVsc2UgaWYgKGkzODZfd29yZF9yZWdudW1fcCAoZ2Ri YXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0dXJuIGkzODZfd29yZF9uYW1lc1tyZWdudW0gLSB0ZGVw LT5heF9yZWdudW1dOwotKwotKyAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywg XygiaW52YWxpZCByZWdudW0iKSk7Ci0gfQotIAotIC8qIENvbnZlcnQgYSBkYnggcmVnaXN0ZXIg bnVtYmVyIFJFRyB0byB0aGUgYXBwcm9wcmlhdGUgcmVnaXN0ZXIKLUBAIC0yMTY5LDggKzIyMzEs MjAgQEAgaTM4Nl9tbXhfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gc3RhdGljIHN0 cnVjdCB0eXBlICoKLSBpMzg2X3BzZXVkb19yZWdpc3Rlcl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgaW50IHJlZ251bSkKLSB7Ci0tICBnZGJfYXNzZXJ0IChpMzg2X21teF9yZWdudW1f cCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0tICByZXR1cm4gaTM4Nl9tbXhfdHlwZSAoZ2RiYXJjaCk7 Ci0rICBpZiAoaTM4Nl9tbXhfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rICAgIHJldHVy biBpMzg2X21teF90eXBlIChnZGJhcmNoKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGNvbnN0 IHN0cnVjdCBidWlsdGluX3R5cGUgKmJ0ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKTsKLSsgICAg ICBpZiAoaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotKwlyZXR1cm4gYnQt PmJ1aWx0aW5faW50ODsKLSsgICAgICBlbHNlIGlmIChpMzg2X3dvcmRfcmVnbnVtX3AgKGdkYmFy Y2gsIHJlZ251bSkpCi0rCXJldHVybiBidC0+YnVpbHRpbl9pbnQxNjsKLSsgICAgICBlbHNlIGlm IChpMzg2X2R3b3JkX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotKwlyZXR1cm4gYnQtPmJ1 aWx0aW5faW50MzI7Ci0rICAgIH0KLSsKLSsgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19M SU5FX18sIF8oImludmFsaWQgcmVnbnVtIikpOwotIH0KLSAKLSAvKiBNYXAgYSBjb29rZWQgcmVn aXN0ZXIgb250byBhIHJhdyByZWdpc3RlciBvciBtZW1vcnkuICBGb3IgdGhlIGkzODYsCi1AQCAt MjE5Miw0MSArMjI2NiwxMDQgQEAgaTM4Nl9tbXhfcmVnbnVtX3RvX2ZwX3JlZ251bSAoc3RydWN0 IHJlZwotICAgcmV0dXJuIChJMzg3X1NUMF9SRUdOVU0gKHRkZXApICsgZnByZWcpOwotIH0KLSAK LS1zdGF0aWMgdm9pZAotK3ZvaWQKLSBpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSAJCQkgICBpbnQg cmVnbnVtLCBnZGJfYnl0ZSAqYnVmKQotIHsKLSsgIGdkYl9ieXRlIHJhd19idWZbTUFYX1JFR0lT VEVSX1NJWkVdOwotKwotICAgaWYgKGkzODZfbW14X3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0p KQotICAgICB7Ci0tICAgICAgZ2RiX2J5dGUgbW14X2J1ZltNQVhfUkVHSVNURVJfU0laRV07Ci0g ICAgICAgaW50IGZwbnVtID0gaTM4Nl9tbXhfcmVnbnVtX3RvX2ZwX3JlZ251bSAocmVnY2FjaGUs IHJlZ251bSk7Ci0gCi0gICAgICAgLyogRXh0cmFjdCAoYWx3YXlzIGxpdHRsZSBlbmRpYW4pLiAg Ki8KLS0gICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVnY2FjaGUsIGZwbnVtLCBtbXhfYnVmKTsK LS0gICAgICBtZW1jcHkgKGJ1ZiwgbW14X2J1ZiwgcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVn bnVtKSk7Ci0rICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCBmcG51bSwgcmF3X2J1 Zik7Ci0rICAgICAgbWVtY3B5IChidWYsIHJhd19idWYsIHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gs IHJlZ251bSkpOwotICAgICB9Ci0gICBlbHNlCi0tICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdj YWNoZSwgcmVnbnVtLCBidWYpOwotKyAgICB7Ci0rICAgICAgc3RydWN0IGdkYmFyY2hfdGRlcCAq dGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rCi0rICAgICAgaWYgKGkzODZfd29yZF9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsJewotKwkgIGludCBncG51bSA9IHJlZ251bSAt IHRkZXAtPmF4X3JlZ251bTsKLSsKLSsJICAvKiBFeHRyYWN0IChhbHdheXMgbGl0dGxlIGVuZGlh bikuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgZ3BudW0sIHJhd19idWYp OwotKwkgIG1lbWNweSAoYnVmLCByYXdfYnVmLCAyKTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKGkz ODZfYnl0ZV9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsJewotKwkgIC8qIENoZWNrIGJ5 dGUgcHNldWRvIHJlZ2lzdGVycyBsYXN0IHNpbmNlIHRoaXMgZnVuY3Rpb24gd2lsbAotKwkgICAg IGJlIGNhbGxlZCBmcm9tIGFtZDY0X3BzZXVkb19yZWdpc3Rlcl9yZWFkLCB3aGljaCBoYW5kbGVz Ci0rCSAgICAgYnl0ZSBwc2V1ZG8gcmVnaXN0ZXJzIGRpZmZlcmVudGx5LiAgKi8KLSsJICBpbnQg Z3BudW0gPSByZWdudW0gLSB0ZGVwLT5hbF9yZWdudW07Ci0rCi0rCSAgLyogRXh0cmFjdCAoYWx3 YXlzIGxpdHRsZSBlbmRpYW4pLiAgV2UgcmVhZCBib3RoIGxvd2VyIGFuZAotKwkgICAgIHVwcGVy IHJlZ2lzdGVycy4gICovCi0rCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCBncG51bSAl IDQsIHJhd19idWYpOwotKwkgIGlmIChncG51bSA+PSA0KQotKwkgICAgbWVtY3B5IChidWYsIHJh d19idWYgKyAxLCAxKTsKLSsJICBlbHNlCi0rCSAgICBtZW1jcHkgKGJ1ZiwgcmF3X2J1ZiwgMSk7 Ci0rCX0KLSsgICAgICBlbHNlCi0rCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18s IF8oImludmFsaWQgcmVnbnVtIikpOwotKyAgICB9Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0rdm9p ZAotIGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSAJCQkgICAgaW50IHJlZ251bSwgY29uc3QgZ2Ri X2J5dGUgKmJ1ZikKLSB7Ci0rICBnZGJfYnl0ZSByYXdfYnVmW01BWF9SRUdJU1RFUl9TSVpFXTsK LSsKLSAgIGlmIChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSAgICAgewot LSAgICAgIGdkYl9ieXRlIG1teF9idWZbTUFYX1JFR0lTVEVSX1NJWkVdOwotICAgICAgIGludCBm cG51bSA9IGkzODZfbW14X3JlZ251bV90b19mcF9yZWdudW0gKHJlZ2NhY2hlLCByZWdudW0pOwot IAotICAgICAgIC8qIFJlYWQgLi4uICAqLwotLSAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdj YWNoZSwgZnBudW0sIG1teF9idWYpOwotKyAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNo ZSwgZnBudW0sIHJhd19idWYpOwotICAgICAgIC8qIC4uLiBNb2RpZnkgLi4uIChhbHdheXMgbGl0 dGxlIGVuZGlhbikuICAqLwotLSAgICAgIG1lbWNweSAobW14X2J1ZiwgYnVmLCByZWdpc3Rlcl9z aXplIChnZGJhcmNoLCByZWdudW0pKTsKLSsgICAgICBtZW1jcHkgKHJhd19idWYsIGJ1ZiwgcmVn aXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0gICAgICAgLyogLi4uIFdyaXRlLiAgKi8K LS0gICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJlZ2NhY2hlLCBmcG51bSwgbW14X2J1Zik7Ci0r ICAgICAgcmVnY2FjaGVfcmF3X3dyaXRlIChyZWdjYWNoZSwgZnBudW0sIHJhd19idWYpOwotICAg ICB9Ci0gICBlbHNlCi0tICAgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2FjaGUsIHJlZ251bSwg YnVmKTsKLSsgICAgewotKyAgICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNo X3RkZXAgKGdkYmFyY2gpOwotKwotKyAgICAgIGlmIChpMzg2X3dvcmRfcmVnbnVtX3AgKGdkYmFy Y2gsIHJlZ251bSkpCi0rCXsKLSsJICBpbnQgZ3BudW0gPSByZWdudW0gLSB0ZGVwLT5heF9yZWdu dW07Ci0rCi0rCSAgLyogUmVhZCAuLi4gICovCi0rCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2Nh Y2hlLCBncG51bSwgcmF3X2J1Zik7Ci0rCSAgLyogLi4uIE1vZGlmeSAuLi4gKGFsd2F5cyBsaXR0 bGUgZW5kaWFuKS4gICovCi0rCSAgbWVtY3B5IChyYXdfYnVmLCBidWYsIDIpOwotKwkgIC8qIC4u LiBXcml0ZS4gICovCi0rCSAgcmVnY2FjaGVfcmF3X3dyaXRlIChyZWdjYWNoZSwgZ3BudW0sIHJh d19idWYpOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNo LCByZWdudW0pKQotKwl7Ci0rCSAgLyogQ2hlY2sgYnl0ZSBwc2V1ZG8gcmVnaXN0ZXJzIGxhc3Qg c2luY2UgdGhpcyBmdW5jdGlvbiB3aWxsCi0rCSAgICAgYmUgY2FsbGVkIGZyb20gYW1kNjRfcHNl dWRvX3JlZ2lzdGVyX3JlYWQsIHdoaWNoIGhhbmRsZXMKLSsJICAgICBieXRlIHBzZXVkbyByZWdp c3RlcnMgZGlmZmVyZW50bHkuICAqLwotKwkgIGludCBncG51bSA9IHJlZ251bSAtIHRkZXAtPmFs X3JlZ251bTsKLSsKLSsJICAvKiBSZWFkIC4uLiAgV2UgcmVhZCBib3RoIGxvd2VyIGFuZCB1cHBl ciByZWdpc3RlcnMuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgZ3BudW0g JSA0LCByYXdfYnVmKTsKLSsJICAvKiAuLi4gTW9kaWZ5IC4uLiAoYWx3YXlzIGxpdHRsZSBlbmRp YW4pLiAgKi8KLSsJICBpZiAoZ3BudW0gPj0gNCkKLSsJICAgIG1lbWNweSAocmF3X2J1ZiArIDEs IGJ1ZiwgMSk7Ci0rCSAgZWxzZQotKwkgICAgbWVtY3B5IChyYXdfYnVmLCBidWYsIDEpOwotKwkg IC8qIC4uLiBXcml0ZS4gICovCi0rCSAgcmVnY2FjaGVfcmF3X3dyaXRlIChyZWdjYWNoZSwgZ3Bu dW0gJSA0LCByYXdfYnVmKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJaW50ZXJuYWxfZXJyb3IgKF9f RklMRV9fLCBfX0xJTkVfXywgXygiaW52YWxpZCByZWdudW0iKSk7Ci0rICAgIH0KLSB9Ci0gDAot IAotQEAgLTI2NjMsMjIgKzI4MDAsNDYgQEAgaW50Ci0gaTM4Nl9yZWdpc3Rlcl9yZWdncm91cF9w IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKLSAJCQkgIHN0cnVjdCByZWdn cm91cCAqZ3JvdXApCi0gewotLSAgaW50IHNzZV9yZWdudW1fcCA9IChpMzg2X3NzZV9yZWdudW1f cCAoZ2RiYXJjaCwgcmVnbnVtKQotLQkJICAgICAgfHwgaTM4Nl9teGNzcl9yZWdudW1fcCAoZ2Ri YXJjaCwgcmVnbnVtKSk7Ci0tICBpbnQgZnBfcmVnbnVtX3AgPSAoaTM4Nl9mcF9yZWdudW1fcCAo Z2RiYXJjaCwgcmVnbnVtKQotLQkJICAgICB8fCBpMzg2X2ZwY19yZWdudW1fcCAoZ2RiYXJjaCwg cmVnbnVtKSk7Ci0tICBpbnQgbW14X3JlZ251bV9wID0gKGkzODZfbW14X3JlZ251bV9wIChnZGJh cmNoLCByZWdudW0pKTsKLSsgIGludCBzc2VfcmVnbnVtX3AsIGZwX3JlZ251bV9wLCBtbXhfcmVn bnVtX3AsIGJ5dGVfcmVnbnVtX3AsCi0rICAgICAgd29yZF9yZWdudW1fcCwgZHdvcmRfcmVnbnVt X3A7Ci0rCi0rICAvKiBEb24ndCBpbmNsdWRlIHBzZXVkbyByZWdpc3RlcnMsIGV4Y2VwdCBmb3Ig TU1YLCBpbiBhbnkgcmVnaXN0ZXIKLSsgICAgIGdyb3Vwcy4gICovCi0rICBieXRlX3JlZ251bV9w ID0gaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pOwotKyAgaWYgKGJ5dGVfcmVn bnVtX3ApCi0rICAgIHJldHVybiAwOwotIAotKyAgd29yZF9yZWdudW1fcCA9IGkzODZfd29yZF9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsKLSsgIGlmICh3b3JkX3JlZ251bV9wKQotKyAgICBy ZXR1cm4gMDsKLSsKLSsgIGR3b3JkX3JlZ251bV9wID0gaTM4Nl9kd29yZF9yZWdudW1fcCAoZ2Ri YXJjaCwgcmVnbnVtKTsKLSsgIGlmIChkd29yZF9yZWdudW1fcCkKLSsgICAgcmV0dXJuIDA7Ci0r Ci0rICBtbXhfcmVnbnVtX3AgPSBpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsK LSAgIGlmIChncm91cCA9PSBpMzg2X21teF9yZWdncm91cCkKLSAgICAgcmV0dXJuIG1teF9yZWdu dW1fcDsKLSsKLSsgIHNzZV9yZWdudW1fcCA9IChpMzg2X3NzZV9yZWdudW1fcCAoZ2RiYXJjaCwg cmVnbnVtKQotKwkJICB8fCBpMzg2X214Y3NyX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKTsK LSAgIGlmIChncm91cCA9PSBpMzg2X3NzZV9yZWdncm91cCkKLSAgICAgcmV0dXJuIHNzZV9yZWdu dW1fcDsKLSAgIGlmIChncm91cCA9PSB2ZWN0b3JfcmVnZ3JvdXApCi0tICAgIHJldHVybiAobW14 X3JlZ251bV9wIHx8IHNzZV9yZWdudW1fcCk7Ci0rICAgIHJldHVybiBtbXhfcmVnbnVtX3AgfHwg c3NlX3JlZ251bV9wOwotKwotKyAgZnBfcmVnbnVtX3AgPSAoaTM4Nl9mcF9yZWdudW1fcCAoZ2Ri YXJjaCwgcmVnbnVtKQotKwkJIHx8IGkzODZfZnBjX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0p KTsKLSAgIGlmIChncm91cCA9PSBmbG9hdF9yZWdncm91cCkKLSAgICAgcmV0dXJuIGZwX3JlZ251 bV9wOwotKwotICAgaWYgKGdyb3VwID09IGdlbmVyYWxfcmVnZ3JvdXApCi0tICAgIHJldHVybiAo IWZwX3JlZ251bV9wICYmICFtbXhfcmVnbnVtX3AgJiYgIXNzZV9yZWdudW1fcCk7Ci0rICAgIHJl dHVybiAoIWZwX3JlZ251bV9wCi0rCSAgICAmJiAhbW14X3JlZ251bV9wCi0rCSAgICAmJiAhc3Nl X3JlZ251bV9wCi0rCSAgICAmJiAhYnl0ZV9yZWdudW1fcAotKwkgICAgJiYgIXdvcmRfcmVnbnVt X3AKLSsJICAgICYmICFkd29yZF9yZWdudW1fcCk7Ci0gCi0gICByZXR1cm4gZGVmYXVsdF9yZWdp c3Rlcl9yZWdncm91cF9wIChnZGJhcmNoLCByZWdudW0sIGdyb3VwKTsKLSB9Ci1AQCAtNTUyNyw2 ICs1Njg4LDcgQEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAg c3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gICBzdHJ1Y3QgdGRlc2NfYXJjaF9kYXRhICp0ZGVz Y19kYXRhOwotICAgY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzYzsKLSsgIGludCBtbTBf cmVnbnVtOwotIAotICAgLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZSwgdXNlIGl0 LiAgKi8KLSAgIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJjaGVzLCAm aW5mbyk7Ci1AQCAtNTU2MywxMSArNTcyNSw2IEBAIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1Y3Qg Z2RiYXJjaF9pbmZvIGkKLSAKLSAgIHRkZXAtPnN0MF9yZWdudW0gPSBJMzg2X1NUMF9SRUdOVU07 Ci0gCi0tICAvKiBUaGUgTU1YIHJlZ2lzdGVycyBhcmUgaW1wbGVtZW50ZWQgYXMgcHNldWRvLXJl Z2lzdGVycy4gIFB1dCBvZmYKLS0gICAgIGNhbGN1bGF0aW5nIHRoZSByZWdpc3RlciBudW1iZXIg Zm9yICVtbTAgdW50aWwgd2Uga25vdyB0aGUgbnVtYmVyCi0tICAgICBvZiByYXcgcmVnaXN0ZXJz LiAgKi8KLS0gIHRkZXAtPm1tMF9yZWdudW0gPSAwOwotLQotICAgLyogSTM4Nl9OVU1fWFJFR1Mg aW5jbHVkZXMgJW14Y3NyLCBzbyBzdWJzdHJhY3Qgb25lLiAgKi8KLSAgIHRkZXAtPm51bV94bW1f cmVncyA9IEkzODZfTlVNX1hSRUdTIC0gMTsKLSAKLUBAIC01NjkzLDggKzU4NTAsNyBAQCBpMzg2 X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gCi0gICBmcmFtZV9iYXNlX3Nl dF9kZWZhdWx0IChnZGJhcmNoLCAmaTM4Nl9mcmFtZV9iYXNlKTsKLSAKLS0gIC8qIFdpcmUgaW4g dGhlIE1NWCByZWdpc3RlcnMuICAqLwotLSAgc2V0X2dkYmFyY2hfbnVtX3BzZXVkb19yZWdzIChn ZGJhcmNoLCBpMzg2X251bV9tbXhfcmVncyk7Ci0rICAvKiBQc2V1ZG8gcmVnaXN0ZXJzIG1heSBi ZSBjaGFuZ2VkIGJ5IGFtZDY0X2luaXRfYWJpLiAgKi8KLSAgIHNldF9nZGJhcmNoX3BzZXVkb19y ZWdpc3Rlcl9yZWFkIChnZGJhcmNoLCBpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTsKLSAgIHNl dF9nZGJhcmNoX3BzZXVkb19yZWdpc3Rlcl93cml0ZSAoZ2RiYXJjaCwgaTM4Nl9wc2V1ZG9fcmVn aXN0ZXJfd3JpdGUpOwotIAotQEAgLTU3MTQsMTIgKzU4NzAsMjQgQEAgaTM4Nl9nZGJhcmNoX2lu aXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAgdGRlcC0+bnVtX2NvcmVfcmVncyA9IEkzODZf TlVNX0dSRUdTICsgSTM4N19OVU1fUkVHUzsKLSAgIHRkZXAtPnJlZ2lzdGVyX25hbWVzID0gaTM4 Nl9yZWdpc3Rlcl9uYW1lczsKLSAKLSsgIHRkZXAtPm51bV9ieXRlX3JlZ3MgPSA4OwotKyAgdGRl cC0+bnVtX3dvcmRfcmVncyA9IDg7Ci0rICB0ZGVwLT5udW1fZHdvcmRfcmVncyA9IDA7Ci0rICB0 ZGVwLT5udW1fbW14X3JlZ3MgPSA4OwotKwotICAgdGRlc2NfZGF0YSA9IHRkZXNjX2RhdGFfYWxs b2MgKCk7Ci0gCi0gICAvKiBIb29rIGluIEFCSS1zcGVjaWZpYyBvdmVycmlkZXMsIGlmIHRoZXkg aGF2ZSBiZWVuIHJlZ2lzdGVyZWQuICAqLwotICAgaW5mby50ZGVwX2luZm8gPSAodm9pZCAqKSB0 ZGVzY19kYXRhOwotICAgZ2RiYXJjaF9pbml0X29zYWJpIChpbmZvLCBnZGJhcmNoKTsKLSAKLSsg IC8qIFdpcmUgaW4gcHNldWRvIHJlZ2lzdGVycy4gIE51bWJlciBvZiBwc2V1ZG8gcmVnaXN0ZXJz IG1heSBiZQotKyAgICAgY2hhbmdlZC4gICovCi0rICBzZXRfZ2RiYXJjaF9udW1fcHNldWRvX3Jl Z3MgKGdkYmFyY2gsICh0ZGVwLT5udW1fYnl0ZV9yZWdzCi0rCQkJCQkgKyB0ZGVwLT5udW1fd29y ZF9yZWdzCi0rCQkJCQkgKyB0ZGVwLT5udW1fZHdvcmRfcmVncwotKwkJCQkJICsgdGRlcC0+bnVt X21teF9yZWdzKSk7Ci0rCi0gICAvKiBUYXJnZXQgZGVzY3JpcHRpb24gbWF5IGJlIGNoYW5nZWQu ICAqLwotICAgdGRlc2MgPSB0ZGVwLT50ZGVzYzsKLSAKLUBAIC01NzM2LDYgKzU5MDQsMjggQEAg aTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAgLyogT3ZlcnJpZGUg Z2RiYXJjaF9yZWdpc3Rlcl9yZWdncm91cF9wIHNldCBpbiB0ZGVzY191c2VfcmVnaXN0ZXJzLiAg Ki8KLSAgIHNldF9nZGJhcmNoX3JlZ2lzdGVyX3JlZ2dyb3VwX3AgKGdkYmFyY2gsIHRkZXAtPnJl Z2lzdGVyX3JlZ2dyb3VwX3ApOwotIAotKyAgLyogTWFrZSAlYWwgdGhlIGZpcnN0IHBzZXVkby1y ZWdpc3Rlci4gICovCi0rICB0ZGVwLT5hbF9yZWdudW0gPSBnZGJhcmNoX251bV9yZWdzIChnZGJh cmNoKTsKLSsgIHRkZXAtPmF4X3JlZ251bSA9IHRkZXAtPmFsX3JlZ251bSArIHRkZXAtPm51bV9i eXRlX3JlZ3M7Ci0rCi0rICBtbTBfcmVnbnVtID0gdGRlcC0+YXhfcmVnbnVtICsgdGRlcC0+bnVt X3dvcmRfcmVnczsKLSsgIGlmICh0ZGVwLT5udW1fZHdvcmRfcmVncykKLSsgICAgewotKyAgICAg IC8qIFN1cHBvcnQgZHdvcmQgcHNldWRvLXJlZ2lzdGVzciBpZiBpdCBoYXNuJ3QgYmVlbiBkaXNh YmxlZCwgICovCi0rICAgICAgdGRlcC0+ZWF4X3JlZ251bSA9IG1tMF9yZWdudW07Ci0rICAgICAg bW0wX3JlZ251bSA9IHRkZXAtPmVheF9yZWdudW0gKyB0ZGVwLT5udW1fZHdvcmRfcmVnczsKLSsg ICAgfQotKyAgZWxzZQotKyAgICB0ZGVwLT5lYXhfcmVnbnVtID0gLTE7Ci0rCi0rICBpZiAodGRl cC0+bnVtX21teF9yZWdzICE9IDApCi0rICAgIHsKLSsgICAgICAvKiBTdXBwb3J0IE1NWCBwc2V1 ZG8tcmVnaXN0ZXNyIGlmIE1NWCBoYXNuJ3QgYmVlbiBkaXNhYmxlZCwgICovCi0rICAgICAgdGRl cC0+bW0wX3JlZ251bSA9IG1tMF9yZWdudW07Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgdGRlcC0+ bW0wX3JlZ251bSA9IC0xOwotKwotICAgLyogSG9vayBpbiB0aGUgbGVnYWN5IHByb2xvZ3VlLWJh c2VkIHVud2luZGVycyBsYXN0IChmYWxsYmFjaykuICAqLwotICAgZnJhbWVfdW53aW5kX2FwcGVu ZF91bndpbmRlciAoZ2RiYXJjaCwgJmkzODZfc2lndHJhbXBfZnJhbWVfdW53aW5kKTsKLSAgIGZy YW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZpMzg2X2ZyYW1lX3Vud2luZCk7 Ci1AQCAtNTc0NywxMSArNTkzNyw2IEBAIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJj aF9pbmZvIGkKLSAgICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChnZGJh cmNoLAotIAkJCQkJICBpMzg2X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbik7Ci0gCi0tICAvKiBV bmxlc3Mgc3VwcG9ydCBmb3IgTU1YIGhhcyBiZWVuIGRpc2FibGVkLCBtYWtlICVtbTAgdGhlIGZp cnN0Ci0tICAgICBwc2V1ZG8tcmVnaXN0ZXIuICAqLwotLSAgaWYgKHRkZXAtPm1tMF9yZWdudW0g PT0gMCkKLS0gICAgdGRlcC0+bW0wX3JlZ251bSA9IGdkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gp OwotLQotICAgc2V0X2dkYmFyY2hfc2tpcF9wZXJtYW5lbnRfYnJlYWtwb2ludCAoZ2RiYXJjaCwK LSAJCQkJCSBpMzg2X3NraXBfcGVybWFuZW50X2JyZWFrcG9pbnQpOwotIAotLS0tIGdkYi03LjEt cDIvZ2RiL2kzODYtdGRlcC5oCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMS9nZGIvaTM4Ni10ZGVwLmgJMjAxMC0wNC0wMyAyMTowNjo1Mi4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xMTQsMTAgKzExNCwzMiBAQCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwCi0gICAgICBh YnNlbmNlIG9mIGFuIEZQVS4gICovCi0gICBpbnQgc3QwX3JlZ251bTsKLSAKLSsgIC8qIE51bWJl ciBvZiBNTVggcmVnaXN0ZXJzLiAgKi8KLSsgIGludCBudW1fbW14X3JlZ3M7Ci0rCi0gICAvKiBS ZWdpc3RlciBudW1iZXIgZm9yICVtbTAuICBTZXQgdGhpcyB0byAtMSB0byBpbmRpY2F0ZSB0aGUg YWJzZW5jZQotICAgICAgb2YgTU1YIHN1cHBvcnQuICAqLwotICAgaW50IG1tMF9yZWdudW07Ci0g Ci0rICAvKiBOdW1iZXIgb2YgYnl0ZSByZWdpc3RlcnMuICAqLwotKyAgaW50IG51bV9ieXRlX3Jl Z3M7Ci0rCi0rICAvKiBSZWdpc3RlciBwc2V1ZG8gbnVtYmVyIGZvciAlYWwuICAqLwotKyAgaW50 IGFsX3JlZ251bTsKLSsKLSsgIC8qIE51bWJlciBvZiBwc2V1ZG8gd29yZCByZWdpc3RlcnMuICAq LwotKyAgaW50IG51bV93b3JkX3JlZ3M7Ci0rCi0rICAvKiBSZWdpc3RlciBudW1iZXIgZm9yICVh eC4gICovCi0rICBpbnQgYXhfcmVnbnVtOwotKwotKyAgLyogTnVtYmVyIG9mIHBzZXVkbyBkd29y ZCByZWdpc3RlcnMuICAqLwotKyAgaW50IG51bV9kd29yZF9yZWdzOwotKwotKyAgLyogUmVnaXN0 ZXIgbnVtYmVyIGZvciAlZWF4LiAgU2V0IHRoaXMgdG8gLTEgdG8gaW5kaWNhdGUgdGhlIGFic2Vu Y2UKLSsgICAgIG9mIHBzZXVkbyBkd29yZCByZWdpc3RlciBzdXBwb3J0LiAgKi8KLSsgIGludCBl YXhfcmVnbnVtOwotKwotICAgLyogTnVtYmVyIG9mIGNvcmUgcmVnaXN0ZXJzLiAgKi8KLSAgIGlu dCBudW1fY29yZV9yZWdzOwotIAotQEAgLTI1Myw2ICsyNzUsMjEgQEAgZW51bSByZWNvcmRfaTM4 Nl9yZWdudW0KLSAvKiBUeXBlcyBmb3IgaTM4Ni1zcGVjaWZpYyByZWdpc3RlcnMuICAqLwotIGV4 dGVybiBzdHJ1Y3QgdHlwZSAqaTM4N19leHRfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp OwotIAotKy8qIENoZWNrcyBvZiBkaWZmZXJlbnQgcHNldWRvLXJlZ2lzdGVycy4gICovCi0rZXh0 ZXJuIGludCBpMzg2X2J5dGVfcmVnbnVtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQg cmVnbnVtKTsKLStleHRlcm4gaW50IGkzODZfd29yZF9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIGludCByZWdudW0pOwotK2V4dGVybiBpbnQgaTM4Nl9kd29yZF9yZWdudW1fcCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pOwotKwotK2V4dGVybiBjb25zdCBj aGFyICppMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK LSsJCQkJCSAgICAgIGludCByZWdudW0pOwotKwotK2V4dGVybiB2b2lkIGkzODZfcHNldWRvX3Jl Z2lzdGVyX3JlYWQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCQkgICAgICAgc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsJCQkJICAgICAgIGludCByZWdudW0sIGdkYl9ieXRlICpi dWYpOwotK2V4dGVybiB2b2lkIGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKLSsJCQkJCXN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rCQkJCQlp bnQgcmVnbnVtLCBjb25zdCBnZGJfYnl0ZSAqYnVmKTsKLSsKLSAvKiBTZWdtZW50IHNlbGVjdG9y cy4gICovCi0gI2RlZmluZSBJMzg2X1NFTF9SUEwJMHgwMDAzICAvKiBSZXF1ZXN0ZXIncyBQcml2 aWxlZ2UgTGV2ZWwgbWFzay4gICovCi0gI2RlZmluZSBJMzg2X1NFTF9VUEwJMHgwMDAzCS8qIFVz ZXIgUHJpdmlsaWdlIExldmVsLiAqLwotLS0tIGdkYi03LjEtcDIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC9hbWQ2NC1ieXRlLmV4cAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1ieXRlLmV4cAkyMDEwLTA0 LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxMjEgQEAKLSsjIENvcHly aWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMs IGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyMgYnVnLWdkYkBnbnUub3JnCi0r Ci0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KLSsKLStpZiAkdHJh Y2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAw Ci0rc2V0IGJ1Z19pZCAwCi0rCi0raWYgeyAhW2lzdGFyZ2V0IHg4Nl82NC0qLSogXSB9IHsKLSsg ICAgdmVyYm9zZSAiU2tpcHBpbmcgYW1kNjQgYnl0ZSByZWdpc3RlciB0ZXN0cy4iCi0rICAgIHJl dHVybgotK30KLSsKLStzZXQgdGVzdGZpbGUgImFtZDY0LWJ5dGUiCi0rc2V0IHNyY2ZpbGUgYW1k NjQtcHNldWRvLmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 Ci0rCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmls ZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnXV0gIT0gIiIgfSB7Ci0rICAg IHVudGVzdGVkICR7dGVzdGZpbGV9Ci0rICAgIHJldHVybgotK30KLSsKLStnZGJfZXhpdAotK2dk Yl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2Fk ICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBnZGJfc3VwcHJl c3NfdGVzdHMKLSt9Ci0rCi0rc2V0IG5yX3JlZ3MgMTQKLStzZXQgYnl0ZV9yZWdzKDEpIGFsCi0r c2V0IGJ5dGVfcmVncygyKSBibAotK3NldCBieXRlX3JlZ3MoMykgY2wKLStzZXQgYnl0ZV9yZWdz KDQpIGRsCi0rc2V0IGJ5dGVfcmVncyg1KSBzaWwKLStzZXQgYnl0ZV9yZWdzKDYpIGRpbAotK3Nl dCBieXRlX3JlZ3MoNykgcjhsCi0rc2V0IGJ5dGVfcmVncyg4KSByOWwKLStzZXQgYnl0ZV9yZWdz KDkpIHIxMGwKLStzZXQgYnl0ZV9yZWdzKDEwKSByMTFsCi0rc2V0IGJ5dGVfcmVncygxMSkgcjEy bAotK3NldCBieXRlX3JlZ3MoMTIpIHIxM2wKLStzZXQgYnl0ZV9yZWdzKDEzKSByMTRsCi0rc2V0 IGJ5dGVfcmVncygxNCkgcjE1bAotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5lX251 bWJlciAiZmlyc3QgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSsgICAgICAgICAiQnJlYWtwb2ludCAu KiBhdCAuKiR7c3JjZmlsZX0uKiIgXAotKyAgICAgICAgICJzZXQgZmlyc3QgYnJlYWtwb2ludCBp biBtYWluIgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBmaXJzdCBi cmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIgPD0gNiAgfSB7IGlu Y3IgciB9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50L3ggXCQkYnl0ZV9yZWdzKCRyKSIgXAotKyAg ICAgICAgIi4uID0gMHhbZm9ybWF0ICV4ICRyXTEiIFwKLSsgICAgICAgICJjaGVjayBjb250ZW50 cyBvZiAlJGJ5dGVfcmVncygkcikiCi0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9s aW5lX251bWJlciAic2Vjb25kIGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFr cG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0IHNlY29uZCBicmVh a3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRv IHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgNyB9IHsgJHIgPD0g JG5yX3JlZ3MgIH0geyBpbmNyIHIgfSB7Ci0rICAgIGdkYl90ZXN0ICJwcmludC94IFwkJGJ5dGVf cmVncygkcikiIFwKLSsgICAgICAgICIuLiA9IDB4W2Zvcm1hdCAleCAkcl0xIiBcCi0rICAgICAg ICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotK30KLSsKLStmb3IgeyBzZXQg ciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gewotKyAgZ2RiX3Rlc3QgInNldCB2YXIgXCQk Ynl0ZV9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUkYnl0ZV9yZWdzKCRyKSIKLSt9Ci0rCi0rZ2Ri X3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ0aGlyZCBicmVha3BvaW50IGhlcmUi XSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtzcmNmaWxlfS4qIiBcCi0rICAg ICAgICAgInNldCB0aGlyZCBicmVha3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgImNvbnRpbnVlIHRvIHRoaXJkIGJyZWFrcG9pbnQgaW4gbWFpbiIKLSsKLStmb3Ig eyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gewotKyAgICBnZGJfdGVzdCAicHJp bnQgXCQkYnl0ZV9yZWdzKCRyKSIgXAotKyAgICAgICAgIi4uID0gJHIiIFwKLSsgICAgICAgICJj aGVjayBjb250ZW50cyBvZiAlJGJ5dGVfcmVncygkcikiCi0rfQotKwotK2ZvciB7IHNldCByIDcg fSB7ICRyIDw9ICRucl9yZWdzICB9IHsgaW5jciByIH0gewotKyAgZ2RiX3Rlc3QgInNldCB2YXIg XCQkYnl0ZV9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUkYnl0ZV9yZWdzKCRyKSIKLSt9Ci0rCi0r Z2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmb3J0aCBicmVha3BvaW50IGhl cmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtzcmNmaWxlfS4qIiBcCi0r ICAgICAgICAgInNldCBmb3J0aCBicmVha3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIGZvcnRoIGJyZWFrcG9pbnQgaW4gbWFpbiIKLSsKLStm b3IgeyBzZXQgciA3IH0geyAkciA8PSAkbnJfcmVncyAgfSB7IGluY3IgciB9IHsKLSsgICAgZ2Ri X3Rlc3QgInByaW50IFwkJGJ5dGVfcmVncygkcikiIFwKLSsgICAgICAgICIuLiA9ICRyIiBcCi0r ICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotK30KLS0tLSBnZGIt Ny4xLXAyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtZHdvcmQuZXhwCTE5NzAtMDEtMDEg MDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL2FtZDY0LWR3b3JkLmV4cAkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAot QEAgLTAsMCArMSwxMjMgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFBsZWFz ZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxl IHRvOgotKyMgYnVnLWdkYkBnbnUub3JnCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg Z2RiIHRlc3RzdWl0ZS4KLSsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2Vs ZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCi0raWYgeyAhW2lz dGFyZ2V0IHg4Nl82NC0qLSogXSB9IHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcgYW1kNjQgZHdv cmQgcmVnaXN0ZXIgdGVzdHMuIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJh bWQ2NC1kd29yZCIKLStzZXQgc3JjZmlsZSBhbWQ2NC1wc2V1ZG8uYwotK3NldCBiaW5maWxlICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8g JHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg W2xpc3QgZGVidWddXSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0KLSsgICAg cmV0dXJuCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9f bWFpbl0gdGhlbiB7Ci0rICAgIGdkYl9zdXBwcmVzc190ZXN0cwotK30KLSsKLStzZXQgbnJfcmVn cyAxNAotK3NldCBkd29yZF9yZWdzKDEpIGVheAotK3NldCBkd29yZF9yZWdzKDIpIGVieAotK3Nl dCBkd29yZF9yZWdzKDMpIGVjeAotK3NldCBkd29yZF9yZWdzKDQpIGVkeAotK3NldCBkd29yZF9y ZWdzKDUpIGVzaQotK3NldCBkd29yZF9yZWdzKDYpIGVkaQotK3NldCBkd29yZF9yZWdzKDcpIHI4 ZAotK3NldCBkd29yZF9yZWdzKDgpIHI5ZAotK3NldCBkd29yZF9yZWdzKDkpIHIxMGQKLStzZXQg ZHdvcmRfcmVncygxMCkgcjExZAotK3NldCBkd29yZF9yZWdzKDExKSByMTJkCi0rc2V0IGR3b3Jk X3JlZ3MoMTIpIHIxM2QKLStzZXQgZHdvcmRfcmVncygxMykgcjE0ZAotK3NldCBkd29yZF9yZWdz KDE0KSByMTVkCi0rCi0rZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmaXJz dCBicmVha3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtz cmNmaWxlfS4qIiBcCi0rICAgICAgICAgInNldCBmaXJzdCBicmVha3BvaW50IGluIG1haW4iCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIGZpcnN0IGJyZWFrcG9pbnQg aW4gbWFpbiIKLSsKLStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gewot KyAgICBzZXQgaGV4IFtmb3JtYXQgJXggJHJdCi0rICAgIGdkYl90ZXN0ICJwcmludC94IFwkJGR3 b3JkX3JlZ3MoJHIpIiBcCi0rCSIuLiA9IDB4JHtoZXh9NCR7aGV4fTMke2hleH0yJHtoZXh9MSIg XAotKyAgICAgICAgImNoZWNrIGNvbnRlbnRzIG9mICUkZHdvcmRfcmVncygkcikiCi0rfQotKwot K2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5lX251bWJlciAic2Vjb25kIGJyZWFrcG9pbnQg aGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwK LSsgICAgICAgICAic2V0IHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0r Ci0rZm9yIHsgc2V0IHIgNyB9IHsgJHIgPD0gJG5yX3JlZ3MgIH0geyBpbmNyIHIgfSB7Ci0rICAg IHNldCBoZXggW2Zvcm1hdCAleCAkcl0KLSsgICAgZ2RiX3Rlc3QgInByaW50L3ggXCQkZHdvcmRf cmVncygkcikiIFwKLSsJIi4uID0gMHgke2hleH00JHtoZXh9MyR7aGV4fTIke2hleH0xIiBcCi0r ICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRkd29yZF9yZWdzKCRyKSIKLSt9Ci0rCi0rZm9y IHsgc2V0IHIgMSB9IHsgJHIgPD0gNiAgfSB7IGluY3IgciB9IHsKLSsgIGdkYl90ZXN0ICJzZXQg dmFyIFwkJGR3b3JkX3JlZ3MoJHIpID0gJHIiICIiICJzZXQgJSRkd29yZF9yZWdzKCRyKSIKLSt9 Ci0rCi0rZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ0aGlyZCBicmVha3Bv aW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtzcmNmaWxlfS4q IiBcCi0rICAgICAgICAgInNldCB0aGlyZCBicmVha3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIHRoaXJkIGJyZWFrcG9pbnQgaW4gbWFpbiIK LSsKLStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gewotKyAgICBnZGJf dGVzdCAicHJpbnQgXCQkZHdvcmRfcmVncygkcikiIFwKLSsgICAgICAgICIuLiA9ICRyIiBcCi0r ICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRkd29yZF9yZWdzKCRyKSIKLSt9Ci0rCi0rZm9y IHsgc2V0IHIgNyB9IHsgJHIgPD0gJG5yX3JlZ3MgIH0geyBpbmNyIHIgfSB7Ci0rICBnZGJfdGVz dCAic2V0IHZhciBcJCRkd29yZF9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUkZHdvcmRfcmVncygk cikiCi0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5lX251bWJlciAiZm9ydGgg YnJlYWtwb2ludCBoZXJlIl0iIFwKLSsgICAgICAgICAiQnJlYWtwb2ludCAuKiBhdCAuKiR7c3Jj ZmlsZX0uKiIgXAotKyAgICAgICAgICJzZXQgZm9ydGggYnJlYWtwb2ludCBpbiBtYWluIgotK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBmb3J0aCBicmVha3BvaW50IGlu IG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgNyB9IHsgJHIgPD0gJG5yX3JlZ3MgIH0geyBpbmNyIHIg fSB7Ci0rICAgIGdkYl90ZXN0ICJwcmludCBcJCRkd29yZF9yZWdzKCRyKSIgXAotKyAgICAgICAg Ii4uID0gJHIiIFwKLSsgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJGR3b3JkX3JlZ3MoJHIp IgotK30KLS0tLSBnZGItNy4xLXAyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtcHNldWRv LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtcHNldWRvLmMJMjAxMC0wNC0wMyAyMTowNjo1Mi4wMDAw MDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsOTEgQEAKLSsvKiBUZXN0IHByb2dyYW0gZm9yIGJ5dGUg cmVnaXN0ZXJzLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0r Ci0raW50IGRhdGFbXSA9IHsKLSsgIDB4MTQxMzEyMTEsCi0rICAweDI0MjMyMjIxLAotKyAgMHgz NDMzMzIzMSwKLSsgIDB4NDQ0MzQyNDEsCi0rICAweDU0NTM1MjUxLAotKyAgMHg2NDYzNjI2MSwK LSsgIDB4NzQ3MzcyNzEsCi0rICAweDg0ODM4MjgxLAotKyAgMHg5NDkzOTI5MSwKLSsgIDB4YTRh M2EyYTEsCi0rICAweGI0YjNiMmIxLAotKyAgMHhjNGMzYzJjMSwKLSsgIDB4ZDRkM2QyZDEsCi0r ICAweGU0ZTNlMmUxLAotK307Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQotK3sKLSsgIGFzbSAoIm1vdiAwKCUwKSwgJSVlYXhcblx0IgotKyAgICAgICAibW92IDQoJTAp LCAlJWVieFxuXHQiCi0rICAgICAgICJtb3YgOCglMCksICUlZWN4XG5cdCIKLSsgICAgICAgIm1v diAxMiglMCksICUlZWR4XG5cdCIKLSsgICAgICAgIm1vdiAxNiglMCksICUlZXNpXG5cdCIKLSsg ICAgICAgIm1vdiAyMCglMCksICUlZWRpXG5cdCIKLSsgICAgICAgOiAvKiBubyBvdXRwdXQgb3Bl cmFuZHMgKi8KLSsgICAgICAgOiAiciIgKGRhdGEpIAotKyAgICAgICA6ICJlYXgiLCAiZWJ4Iiwg ImVjeCIsICJlZHgiLCAiZXNpIiwgImVkaSIpOwotKyAgYXNtICgibm9wIik7IC8qIGZpcnN0IGJy ZWFrcG9pbnQgaGVyZSAqLwotKwotKyAgYXNtICgibW92IDI0KCUwKSwgJSVyOGRcblx0IgotKyAg ICAgICAibW92IDI4KCUwKSwgJSVyOWRcblx0IgotKyAgICAgICAibW92IDMyKCUwKSwgJSVyMTBk XG5cdCIKLSsgICAgICAgIm1vdiAzNiglMCksICUlcjExXG5cdCIKLSsgICAgICAgIm1vdiA0MCgl MCksICUlcjEyZFxuXHQiCi0rICAgICAgICJtb3YgNDQoJTApLCAlJXIxM2Rcblx0IgotKyAgICAg ICAibW92IDQ4KCUwKSwgJSVyMTRkXG5cdCIKLSsgICAgICAgIm1vdiA1MiglMCksICUlcjE1ZFxu XHQiCi0rICAgICAgIDogLyogbm8gb3V0cHV0IG9wZXJhbmRzICovCi0rICAgICAgIDogInIiIChk YXRhKSAKLSsgICAgICAgOiAicjgiLCAicjkiLCAicjEwIiwgInIxMSIsICJyMTIiLCAicjEzIiwg InIxNCIsICJyMTUiKTsKLSsgIGFzbSAoIm5vcCIpOyAvKiBzZWNvbmQgYnJlYWtwb2ludCBoZXJl ICovCi0rCi0rICBhc20gKCJtb3YgJSVlYXgsIDAoJTApXG5cdCIKLSsgICAgICAgIm1vdiAlJWVi eCwgNCglMClcblx0IgotKyAgICAgICAibW92ICUlZWN4LCA4KCUwKVxuXHQiCi0rICAgICAgICJt b3YgJSVlZHgsIDEyKCUwKVxuXHQiCi0rICAgICAgICJtb3YgJSVlc2ksIDE2KCUwKVxuXHQiCi0r ICAgICAgICJtb3YgJSVlZGksIDIwKCUwKVxuXHQiCi0rICAgICAgIDogLyogbm8gb3V0cHV0IG9w ZXJhbmRzICovCi0rICAgICAgIDogInIiIChkYXRhKSAKLSsgICAgICAgOiAiZWF4IiwgImVieCIs ICJlY3giLCAiZWR4IiwgImVzaSIsICJlZGkiKTsKLSsgIGFzbSAoIm5vcCIpOyAvKiB0aGlyZCBi cmVha3BvaW50IGhlcmUgKi8KLSsKLSsgIGFzbSAoIm1vdiAlJXI4ZCwgMjQoJTApXG5cdCIKLSsg ICAgICAgIm1vdiAlJXI5ZCwgMjgoJTApXG5cdCIKLSsgICAgICAgIm1vdiAlJXIxMGQsIDMyKCUw KVxuXHQiCi0rICAgICAgICJtb3YgJSVyMTFkLCAzNiglMClcblx0IgotKyAgICAgICAibW92ICUl cjEyZCwgNDAoJTApXG5cdCIKLSsgICAgICAgIm1vdiAlJXIxM2QsIDQ0KCUwKVxuXHQiCi0rICAg ICAgICJtb3YgJSVyMTRkLCA0OCglMClcblx0IgotKyAgICAgICAibW92ICUlcjE1ZCwgNTIoJTAp XG5cdCIKLSsgICAgICAgOiAvKiBubyBvdXRwdXQgb3BlcmFuZHMgKi8KLSsgICAgICAgOiAiciIg KGRhdGEpIAotKyAgICAgICA6ICJyOCIsICJyOSIsICJyMTAiLCAicjExIiwgInIxMiIsICJyMTMi LCAicjE0IiwgInIxNSIpOwotKyAgcHV0cyAoIkJ5ZSEiKTsgLyogZm9ydGggYnJlYWtwb2ludCBo ZXJlICovCi0rCi0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2RiLTcuMS1wMi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL2FtZDY0LXdvcmQuZXhwCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LXdvcmQuZXhwCTIw MTAtMDQtMDMgMjE6MDY6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDEyMyBAQAotKyMg Q29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBjb21t ZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86Ci0rIyBidWctZ2RiQGdudS5v cmcKLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgotKwotK2lm ICR0cmFjZWxldmVsIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1z X2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKLStpZiB7ICFbaXN0YXJnZXQgeDg2XzY0LSotKiBdIH0g ewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBhbWQ2NCB3b3JkIHJlZ2lzdGVyIHRlc3RzLiIKLSsg ICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiYW1kNjQtd29yZCIKLStzZXQgc3JjZmls ZSBhbWQ2NC1wc2V1ZG8uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0KLSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1 cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgW2xpc3QgZGVidWddXSAhPSAiIiB9IHsK LSsgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0KLSsgICAgcmV0dXJuCi0rfQotKwotK2dkYl9leGl0 Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2Ri X2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIGdkYl9z dXBwcmVzc190ZXN0cwotK30KLSsKLStzZXQgbnJfcmVncyAxNAotK3NldCB3b3JkX3JlZ3MoMSkg YXgKLStzZXQgd29yZF9yZWdzKDIpIGJ4Ci0rc2V0IHdvcmRfcmVncygzKSBjeAotK3NldCB3b3Jk X3JlZ3MoNCkgZHgKLStzZXQgd29yZF9yZWdzKDUpIHNpCi0rc2V0IHdvcmRfcmVncyg2KSBkaQot K3NldCB3b3JkX3JlZ3MoNykgcjh3Ci0rc2V0IHdvcmRfcmVncyg4KSByOXcKLStzZXQgd29yZF9y ZWdzKDkpIHIxMHcKLStzZXQgd29yZF9yZWdzKDEwKSByMTF3Ci0rc2V0IHdvcmRfcmVncygxMSkg cjEydwotK3NldCB3b3JkX3JlZ3MoMTIpIHIxM3cKLStzZXQgd29yZF9yZWdzKDEzKSByMTR3Ci0r c2V0IHdvcmRfcmVncygxNCkgcjE1dwotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5l X251bWJlciAiZmlyc3QgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSsgICAgICAgICAiQnJlYWtwb2lu dCAuKiBhdCAuKiR7c3JjZmlsZX0uKiIgXAotKyAgICAgICAgICJzZXQgZmlyc3QgYnJlYWtwb2lu dCBpbiBtYWluIgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBmaXJz dCBicmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIgPD0gNiAgfSB7 IGluY3IgciB9IHsKLSsgICAgc2V0IGhleCBbZm9ybWF0ICV4ICRyXQotKyAgICBnZGJfdGVzdCAi cHJpbnQveCBcJCR3b3JkX3JlZ3MoJHIpIiBcCi0rICAgICAgICAiLi4gPSAweCR7aGV4fTIke2hl eH0xIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSR3b3JkX3JlZ3MoJHIpIgotK30K LSsKLStnZGJfdGVzdCAiYnJlYWsgW2dkYl9nZXRfbGluZV9udW1iZXIgInNlY29uZCBicmVha3Bv aW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtzcmNmaWxlfS4q IiBcCi0rICAgICAgICAgInNldCBzZWNvbmQgYnJlYWtwb2ludCBpbiBtYWluIgotK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBzZWNvbmQgYnJlYWtwb2ludCBpbiBtYWlu IgotKwotK2ZvciB7IHNldCByIDcgfSB7ICRyIDw9ICRucl9yZWdzICB9IHsgaW5jciByIH0gewot KyAgICBzZXQgaGV4IFtmb3JtYXQgJXggJHJdCi0rICAgIGdkYl90ZXN0ICJwcmludC94IFwkJHdv cmRfcmVncygkcikiIFwKLSsgICAgICAgICIuLiA9IDB4JHtoZXh9MiR7aGV4fTEiIFwKLSsgICAg ICAgICJjaGVjayBjb250ZW50cyBvZiAlJHdvcmRfcmVncygkcikiCi0rfQotKwotK2ZvciB7IHNl dCByIDEgfSB7ICRyIDw9IDYgIH0geyBpbmNyIHIgfSB7Ci0rICBnZGJfdGVzdCAic2V0IHZhciBc JCR3b3JkX3JlZ3MoJHIpID0gJHIiICIiICJzZXQgJSR3b3JkX3JlZ3MoJHIpIgotK30KLSsKLStn ZGJfdGVzdCAiYnJlYWsgW2dkYl9nZXRfbGluZV9udW1iZXIgInRoaXJkIGJyZWFrcG9pbnQgaGVy ZSJdIiBcCi0rICAgICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwKLSsg ICAgICAgICAic2V0IHRoaXJkIGJyZWFrcG9pbnQgaW4gbWFpbiIKLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiY29udGludWUgdG8gdGhpcmQgYnJlYWtwb2ludCBpbiBtYWluIgotKwotK2Zv ciB7IHNldCByIDEgfSB7ICRyIDw9IDYgIH0geyBpbmNyIHIgfSB7Ci0rICAgIGdkYl90ZXN0ICJw cmludCBcJCR3b3JkX3JlZ3MoJHIpIiBcCi0rICAgICAgICAiLi4gPSAkciIgXAotKyAgICAgICAg ImNoZWNrIGNvbnRlbnRzIG9mICUkd29yZF9yZWdzKCRyKSIKLSt9Ci0rCi0rZm9yIHsgc2V0IHIg NyB9IHsgJHIgPD0gJG5yX3JlZ3MgIH0geyBpbmNyIHIgfSB7Ci0rICBnZGJfdGVzdCAic2V0IHZh ciBcJCR3b3JkX3JlZ3MoJHIpID0gJHIiICIiICJzZXQgJSR3b3JkX3JlZ3MoJHIpIgotK30KLSsK LStnZGJfdGVzdCAiYnJlYWsgW2dkYl9nZXRfbGluZV9udW1iZXIgImZvcnRoIGJyZWFrcG9pbnQg aGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwK LSsgICAgICAgICAic2V0IGZvcnRoIGJyZWFrcG9pbnQgaW4gbWFpbiIKLStnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gZm9ydGggYnJlYWtwb2ludCBpbiBtYWluIgotKwot K2ZvciB7IHNldCByIDcgfSB7ICRyIDw9ICRucl9yZWdzICB9IHsgaW5jciByIH0gewotKyAgICBn ZGJfdGVzdCAicHJpbnQgXCQkd29yZF9yZWdzKCRyKSIgXAotKyAgICAgICAgIi4uID0gJHIiIFwK LSsgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJHdvcmRfcmVncygkcikiCi0rfQotLS0tIGdk Yi03LjEtcDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pMzg2LWJ5dGUuZXhwCTE5NzAtMDEtMDEg MDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL2kzODYtYnl0ZS5leHAJMjAxMC0wNC0wMyAyMTowNjo1Mi4wMDAwMDAwMDAgKzAyMDAKLUBA IC0wLDAgKzEsOTggQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFBsZWFzZSBl bWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRv OgotKyMgYnVnLWdkYkBnbnUub3JnCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2Ri IHRlc3RzdWl0ZS4KLSsKLStpZiAkdHJhY2VsZXZlbCB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZl bAotK30KLSsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAwCi0rCi0raWYgeyAhW2lzdGFy Z2V0IGk/ODYtKi0qXSB9IHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcgaTM4NiBieXRlIHJlZ2lz dGVyIHRlc3RzLiIKLSsgICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiaTM4Ni1ieXRl IgotK3NldCBzcmNmaWxlIGkzODYtcHNldWRvLmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1d IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVn XV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdGZpbGV9Ci0rICAgIHJldHVybgotK30K LSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIv JHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4g ewotKyAgICBnZGJfc3VwcHJlc3NfdGVzdHMKLSt9Ci0rCi0rc2V0IGJ5dGVfcmVncygxKSBhbAot K3NldCBieXRlX3JlZ3MoMikgYmwKLStzZXQgYnl0ZV9yZWdzKDMpIGNsCi0rc2V0IGJ5dGVfcmVn cyg0KSBkbAotK3NldCBieXRlX3JlZ3MoNSkgYWgKLStzZXQgYnl0ZV9yZWdzKDYpIGJoCi0rc2V0 IGJ5dGVfcmVncyg3KSBjaAotK3NldCBieXRlX3JlZ3MoOCkgZGgKLSsKLStnZGJfdGVzdCAiYnJl YWsgW2dkYl9nZXRfbGluZV9udW1iZXIgImZpcnN0IGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAg ICAgICAgIkJyZWFrcG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0 IGZpcnN0IGJyZWFrcG9pbnQgaW4gbWFpbiIKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi Y29udGludWUgdG8gZmlyc3QgYnJlYWtwb2ludCBpbiBtYWluIgotKwotK2ZvciB7IHNldCByIDEg fSB7ICRyIDw9IDQgIH0geyBpbmNyIHIgfSB7Ci0rICAgIGdkYl90ZXN0ICJwcmludC94IFwkJGJ5 dGVfcmVncygkcikiIFwKLSsgICAgICAgICIuLiA9IDB4W2Zvcm1hdCAleCAkcl0xIiBcCi0rICAg ICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotKyAgICBzZXQgaCBbZXhw ciAkciArIDRdCi0rICAgIGdkYl90ZXN0ICJwcmludC94IFwkJGJ5dGVfcmVncygkaCkiIFwKLSsg ICAgICAgICIuLiA9IDB4W2Zvcm1hdCAleCAkcl0yIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVu dHMgb2YgJSRieXRlX3JlZ3MoJGgpIgotK30KLSsKLStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA0 ICB9IHsgaW5jciByIH0gewotKyAgZ2RiX3Rlc3QgInNldCB2YXIgXCQkYnl0ZV9yZWdzKCRyKSA9 ICRyIiAiIiAic2V0ICUkYnl0ZV9yZWdzKCRyKSIKLSsgIHNldCBoIFtleHByICRyICsgNF0KLSsg IGdkYl90ZXN0ICJzZXQgdmFyIFwkJGJ5dGVfcmVncygkaCkgPSAkaCIgIiIgInNldCAlJGJ5dGVf cmVncygkaCkiCi0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5lX251bWJlciAi c2Vjb25kIGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFrcG9pbnQgLiogYXQg Lioke3NyY2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0IHNlY29uZCBicmVha3BvaW50IGluIG1h aW4iCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIHNlY29uZCBicmVh a3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIgPD0gNCAgfSB7IGluY3Ig ciB9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkJGJ5dGVfcmVncygkcikiIFwKLSsgICAgICAg ICIuLiA9ICRyIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIp IgotKyAgICBzZXQgaCBbZXhwciAkciArIDRdCi0rICAgIGdkYl90ZXN0ICJwcmludCBcJCRieXRl X3JlZ3MoJGgpIiBcCi0rICAgICAgICAiLi4gPSAkaCIgXAotKyAgICAgICAgImNoZWNrIGNvbnRl bnRzIG9mICUkYnl0ZV9yZWdzKCRoKSIKLSt9Ci0tLS0gZ2RiLTcuMS1wMi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL2kzODYtcHNldWRvLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1wc2V1ZG8uYwkyMDEw LTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1MSBAQAotKy8qIFRl c3QgcHJvZ3JhbSBmb3IgYnl0ZSByZWdpc3RlcnMuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsj aW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQgZGF0YVtdID0gewotKyAgMHgxNDEzMTIxMSwKLSsg IDB4MjQyMzIyMjEsCi0rICAweDM0MzMzMjMxLAotKyAgMHg0NDQzNDI0MSwKLSt9OwotKwotK2lu dAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBhc20gKCJtb3YgMCglMCks ICUlZWF4XG5cdCIKLSsgICAgICAgIm1vdiA0KCUwKSwgJSVlYnhcblx0IgotKyAgICAgICAibW92 IDgoJTApLCAlJWVjeFxuXHQiCi0rICAgICAgICJtb3YgMTIoJTApLCAlJWVkeFxuXHQiCi0rICAg ICAgIDogLyogbm8gb3V0cHV0IG9wZXJhbmRzICovCi0rICAgICAgIDogInIiIChkYXRhKSAKLSsg ICAgICAgOiAiZWF4IiwgImVieCIsICJlY3giLCAiZWR4Iik7Ci0rICBhc20gKCJub3AiKTsgLyog Zmlyc3QgYnJlYWtwb2ludCBoZXJlICovCi0rCi0rICBhc20gKCJtb3YgJSVlYXgsIDAoJTApXG5c dCIKLSsgICAgICAgIm1vdiAlJWVieCwgNCglMClcblx0IgotKyAgICAgICAibW92ICUlZWN4LCA4 KCUwKVxuXHQiCi0rICAgICAgICJtb3YgJSVlZHgsIDEyKCUwKVxuXHQiCi0rICAgICAgIDogLyog bm8gb3V0cHV0IG9wZXJhbmRzICovCi0rICAgICAgIDogInIiIChkYXRhKSAKLSsgICAgICAgOiAi ZWF4IiwgImVieCIsICJlY3giLCAiZWR4Iik7Ci0rICBwdXRzICgiQnllISIpOyAvKiBzZWNvbmQg YnJlYWtwb2ludCBoZXJlICovCi0rCi0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2RiLTcuMS1wMi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2kzODYtd29yZC5leHAJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni13 b3JkLmV4cAkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw4 NCBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgUGxlYXNlIGVtYWlsIGFueSBi dWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86Ci0rIyBidWct Z2RiQGdudS5vcmcKLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRl LgotKwotK2lmICR0cmFjZWxldmVsIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwot K3NldCBwcm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKLStpZiB7ICFbaXN0YXJnZXQgaT84Ni0q LSpdIH0gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyBpMzg2IHdvcmQgcmVnaXN0ZXIgdGVzdHMu IgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJpMzg2LXdvcmQiCi0rc2V0IHNy Y2ZpbGUgaTM4Ni1wc2V1ZG8uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KLSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgW2xpc3QgZGVidWddXSAhPSAiIiB9 IHsKLSsgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0KLSsgICAgcmV0dXJuCi0rfQotKwotK2dkYl9l eGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0r Z2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIGdk Yl9zdXBwcmVzc190ZXN0cwotK30KLSsKLStzZXQgd29yZF9yZWdzKDEpIGF4Ci0rc2V0IHdvcmRf cmVncygyKSBieAotK3NldCB3b3JkX3JlZ3MoMykgY3gKLStzZXQgd29yZF9yZWdzKDQpIGR4Ci0r Ci0rZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmaXJzdCBicmVha3BvaW50 IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtzcmNmaWxlfS4qIiBc Ci0rICAgICAgICAgInNldCBmaXJzdCBicmVha3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIGZpcnN0IGJyZWFrcG9pbnQgaW4gbWFpbiIKLSsK LStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA0ICB9IHsgaW5jciByIH0gewotKyAgICBnZGJfdGVz dCAicHJpbnQveCBcJCR3b3JkX3JlZ3MoJHIpIiBcCi0rICAgICAgICAiLi4gPSAweFtmb3JtYXQg JXggJHJdMltmb3JtYXQgJXggJHJdMSIgXAotKyAgICAgICAgImNoZWNrIGNvbnRlbnRzIG9mICUk d29yZF9yZWdzKCRyKSIKLSt9Ci0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIgPD0gNCAgfSB7IGlu Y3IgciB9IHsKLSsgIGdkYl90ZXN0ICJzZXQgdmFyIFwkJHdvcmRfcmVncygkcikgPSAkciIgIiIg InNldCAlJHdvcmRfcmVncygkcikiCi0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9s aW5lX251bWJlciAic2Vjb25kIGJyZWFrcG9pbnQgaGVyZSJdIiBcCi0rICAgICAgICAgIkJyZWFr cG9pbnQgLiogYXQgLioke3NyY2ZpbGV9LioiIFwKLSsgICAgICAgICAic2V0IHNlY29uZCBicmVh a3BvaW50IGluIG1haW4iCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRv IHNlY29uZCBicmVha3BvaW50IGluIG1haW4iCi0rCi0rZm9yIHsgc2V0IHIgMSB9IHsgJHIgPD0g NCAgfSB7IGluY3IgciB9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkJHdvcmRfcmVncygkciki IFwKLSsgICAgICAgICIuLiA9ICRyIiBcCi0rICAgICAgICAiY2hlY2sgY29udGVudHMgb2YgJSR3 b3JkX3JlZ3MoJHIpIgotK30KCmRpZmYgLS1naXQgYS9nZGItYno1NzgyNTAtYXZ4LTA1b2YxMC5w YXRjaCBiL2dkYi1iejU3ODI1MC1hdngtMDVvZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBhOWYwOTA4Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMDVvZjEw LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotWyBCYWNrcG9ydGVkLiAgXQot Ci1jb21taXQgNjQ0OGFhY2U2Mzc4NDNlOGU3YzAyMWQ3ZjhjNWQ1ZDVmZGQ3MTk3NAotQXV0aG9y OiBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogICBXZWQgTWFyIDMgMjA6MTk6 NDggMjAxMCArMDAwMAotCi0gICAgTWVudGlvbiBpbXByb3ZlbWVudCBmb3IgWDg2IGdlbmVyYWwg cHVycG9zZSByZWdpc3RlcnMuCi0gICAgCi0gICAgMjAxMC0wMy0wMyAgSC5KLiBMdSAgPGhvbmdq aXUubHVAaW50ZWwuY29tPgotICAgIAkgICAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4K LSAgICAKLSAgICAJKiBORVdTOiBBZGQgWDg2IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgc2Vj dGlvbi4KLQotLS0tIGdkYi03LjEtcDMvZ2RiL05FV1MJMjAxMC0wMy0xOCAyMjowMTo1NS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi9ORVdTCTIwMTAtMDQtMDMgMjE6MDc6NDYuMDAw MDAwMDAwICswMjAwCi1AQCAtNDM4LDYgKzQzOCwxNCBAQCBHREIgd2lsbCBub3cgY29ycmVjdGx5 IGhhbmRsZSBhbGwgb2Y6Ci0gICAgIG5vdyBzdXBwb3J0IGhhcmR3YXJlIHdhdGNocG9pbnRzLCBh bmQgd2lsbCB1c2UgdGhlbSBhdXRvbWF0aWNhbGx5Ci0gICAgIGFzIGFwcHJvcHJpYXRlLgotIAot KyogWDg2IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMKLSsKLSsgIEdEQiBub3cgc3VwcG9ydHMg cmVhZGluZy93cml0aW5nIGJ5dGUsIHdvcmQgYW5kIGRvdWJsZS13b3JkIHg4NgotKyAgZ2VuZXJh bCBwdXJwb3NlIHJlZ2lzdGVycyBkaXJlY3RseS4gIFRoaXMgbWVhbnMgeW91IGNhbiB1c2UsIHNh eSwKLSsgICRhaCBvciAkYXggdG8gcmVmZXIsIHJlc3BlY3RpdmVseSwgdG8gdGhlIGJ5dGUgcmVn aXN0ZXIgQUggYW5kCi0rICAxNi1iaXQgd29yZCByZWdpc3RlciBBWCB0aGF0IGFyZSBhY3R1YWxs eSBwb3J0aW9ucyBvZiB0aGUgMzItYml0Ci0rICByZWdpc3RlciBFQVggb3IgNjQtYml0IHJlZ2lz dGVyIFJBWC4KLSsKLSAqIFB5dGhvbiBzY3JpcHRpbmcKLSAKLSAgIEdEQiBub3cgaGFzIHN1cHBv cnQgZm9yIHNjcmlwdGluZyB1c2luZyBQeXRob24uICBXaGV0aGVyIHRoaXMgaXMKCmRpZmYgLS1n aXQgYS9nZGItYno1NzgyNTAtYXZ4LTA2b2YxMC5wYXRjaCBiL2dkYi1iejU3ODI1MC1hdngtMDZv ZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2U1NWYyLi4wMDAwMDAw Ci0tLSBhL2dkYi1iejU3ODI1MC1hdngtMDZvZjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MzUgKzAsMCBAQAotWyBCYWNrcG9ydGVkLiAgXQotCi1jb21taXQgNDlmOGQxYzI0YzYzOWQ4OTFm NThhM2I5ZmVkYTQyNTgzM2I3MDJmYgotQXV0aG9yOiBILkouIEx1IDxoamwudG9vbHNAZ21haWwu Y29tPgotRGF0ZTogICBGcmkgTWFyIDEyIDE1OjEyOjM0IDIwMTAgKzAwMDAKLQotICAgIFJlc3Rv cmUgc3AgZm9yIHg4Ni4KLSAgICAKLSAgICAyMDEwLTAzLTEyICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0gICAgCi0gICAgCSogYW1kNjQtdGRlcC5jIChhbWQ2NF93b3JkX25hbWVz KTogUmVwbGFjZSAic3AiIHdpdGggIiIuCi0gICAgCSogaTM4Ni10ZGVwLmMgKGkzODZfd29yZF9u YW1lcyk6IExpa2V3aXNlLgotCi0tLS0gZ2RiLTcuMS1wNC9nZGIvYW1kNjQtdGRlcC5jCTIwMTAt MDQtMDMgMjE6MDY6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvYW1kNjQtdGRl cC5jCTIwMTAtMDQtMDMgMjE6MDg6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMjIyLDcgKzIyMiw3 IEBAIHN0YXRpYyBjb25zdCBjaGFyICphbWQ2NF9ieXRlX25hbWVzW10gPQotIAotIHN0YXRpYyBj b25zdCBjaGFyICphbWQ2NF93b3JkX25hbWVzW10gPQotIHsKLS0gICJheCIsICJieCIsICJjeCIs ICJkeCIsICJzaSIsICJkaSIsICJicCIsICJzcCIsIAotKyAgImF4IiwgImJ4IiwgImN4IiwgImR4 IiwgInNpIiwgImRpIiwgImJwIiwgIiIsIAotICAgInI4dyIsICJyOXciLCAicjEwdyIsICJyMTF3 IiwgInIxMnciLCAicjEzdyIsICJyMTR3IiwgInIxNXciCi0gfTsKLSAKLS0tLSBnZGItNy4xLXA0 L2dkYi9pMzg2LXRkZXAuYwkyMDEwLTA0LTAzIDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEvZ2RiL2kzODYtdGRlcC5jCTIwMTAtMDQtMDMgMjE6MDg6MjEuMDAwMDAwMDAwICsw MjAwCi1AQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqaTM4Nl9ieXRlX25hbWVz W10gPQotIHN0YXRpYyBjb25zdCBjaGFyICppMzg2X3dvcmRfbmFtZXNbXSA9Ci0gewotICAgImF4 IiwgImN4IiwgImR4IiwgImJ4IiwKLS0gICJzcCIsICJicCIsICJzaSIsICJkaSIKLSsgICIiLCAi YnAiLCAic2kiLCAiZGkiCi0gfTsKLSAKLSAvKiBNTVggcmVnaXN0ZXI/ICAqLwoKZGlmZiAtLWdp dCBhL2dkYi1iejU3ODI1MC1hdngtMDdvZjEwLnBhdGNoIGIvZ2RiLWJ6NTc4MjUwLWF2eC0wN29m MTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MDI5ZTAuLjAwMDAwMDAK LS0tIGEvZ2RiLWJ6NTc4MjUwLWF2eC0wN29mMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx ODMgKzAsMCBAQAotWyBCYWNrcG9ydGVkLiAgXQotCi1jb21taXQgZDVlYTcwNDIyMTBmNWFkMzE5 YWQxOTkxMGJjZTEzZmQ1NzE3YzZkNgotQXV0aG9yOiBILkouIEx1IDxoamwudG9vbHNAZ21haWwu Y29tPgotRGF0ZTogICBUdWUgTWFyIDMwIDE1OjQ1OjA4IDIwMTAgKzAwMDAKLQotICAgIEFkZCB4 bWxSZWdpc3RlcnM9IHRvIHFTdXBwb3J0ZWQgcGFja2V0LgotICAgIAotICAgIGdkYi8KLSAgICAK LSAgICAyMDEwLTAzLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0gICAgCi0g ICAgCSogTkVXUzogTWVudGlvbiB4bWxSZWdpc3RlcnM9IGluIHFTdXBwb3J0ZWQgcGFja2V0Lgot ICAgIAotICAgIAkqIGkzODYtdGRlcC5jOiBJbmNsdWRlICJyZW1vdGUuaCIuCi0gICAgCShfaW5p dGlhbGl6ZV9pMzg2X3RkZXApOiBDYWxsIHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbC4KLSAg ICAKLSAgICAJKiByZW1vdGUuYyAocmVtb3RlX3N1cHBvcnRfeG1sKTogTmV3LgotICAgIAkocmVn aXN0ZXJfcmVtb3RlX3N1cHBvcnRfeG1sKTogTGlrZXdpc2UuCi0gICAgCShyZW1vdGVfcXVlcnlf c3VwcG9ydGVkX2FwcGVuZCk6IExpa2V3aXNlLgotICAgIAkocmVtb3RlX3F1ZXJ5X3N1cHBvcnRl ZCk6IFN1cHBvcnQgcmVtb3RlX3N1cHBvcnRfeG1sLgotICAgIAotICAgIAkqIHJlbW90ZS5oIChy ZWdpc3Rlcl9yZW1vdGVfc3VwcG9ydF94bWwpOiBOZXcuCi0gICAgCi0gICAgZ2RiL2RvYy8KLSAg ICAKLSAgICAyMDEwLTAzLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0gICAg Ci0gICAgCSogZ2RiLnRleGluZm8gKEdlbmVyYWwgUXVlcnkgUGFja2V0cyk6IEFkZCB4bWxSZWdp c3RlcnMuCi0KLS0tLSBnZGItNy4xLXA1L2dkYi9ORVdTCTIwMTAtMDQtMDMgMjE6MDc6NDYuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvTkVXUwkyMDEwLTA0LTAzIDIxOjEwOjA2LjAw MDAwMDAwMCArMDIwMAotQEAgLTEsNiArMSwxMSBAQAotIAkJV2hhdCBoYXMgY2hhbmdlZCBpbiBH REI/Ci0gCSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJlbGVhc2UpCi0gCi0rKioqIENoYW5n ZXMgc2luY2UgR0RCIDcuMQotKwotKyogR0RCIG5vdyBzZW5kcyB4bWxSZWdpc3RlcnM9IGluIHFT dXBwb3J0ZWQgcGFja2V0IHRvIGluZGljYXRlIHRoYXQKLSsgIGl0IHVuZGVyc3RhbmRzIHJlZ2lz dGVyIGRlc2NyaXB0aW9uLgotKwotICoqKiBDaGFuZ2VzIGluIEdEQiA3LjEKLSAKLSAqIEMrKyBJ bXByb3ZlbWVudHMKLS0tLSBnZGItNy4xLXA1L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNC0w MyAyMTowNDoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMC0wNC0wMyAyMTowOToyOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMDI5Miw2ICszMDI5 MiwxMiBAQCBleHRlbnNpb25zIHRvIHRoZSByZW1vdGUgcHJvdG9jb2wuICBAdmFsCi0gZXh0ZW5z aW9ucyB1bmxlc3MgdGhlIHN0dWIgYWxzbyByZXBvcnRzIHRoYXQgaXQgc3VwcG9ydHMgdGhlbSBi eQotIGluY2x1ZGluZyBAc2FtcHttdWx0aXByb2Nlc3MrfSBpbiBpdHMgQHNhbXB7cVN1cHBvcnRl ZH0gcmVwbHkuCi0gQHhyZWZ7bXVsdGlwcm9jZXNzIGV4dGVuc2lvbnN9LCBmb3IgZGV0YWlscy4K LSsKLStAaXRlbSB4bWxSZWdpc3RlcnMKLStUaGlzIGZlYXR1cmUgaW5kaWNhdGVzIHRoYXQgQHZh bHVle0dEQk59IHN1cHBvcnRzIHRoZSBYTUwgdGFyZ2V0Ci0rZGVzY3JpcHRpb24uICBJZiB0aGUg c3R1YiBzZWVzIEBzYW1we3htbFJlZ2lzdGVycz19IHdpdGggdGFyZ2V0Ci0rc3BlY2lmaWMgc3Ry aW5ncyBzZXBhcmF0ZWQgYnkgYSBjb21tYSwgaXQgd2lsbCByZXBvcnQgcmVnaXN0ZXIKLStkZXNj cmlwdGlvbi4KLSBAZW5kIHRhYmxlCi0gCi0gU3R1YnMgc2hvdWxkIGlnbm9yZSBhbnkgdW5rbm93 biB2YWx1ZXMgZm9yCi0tLS0gZ2RiLTcuMS1wNS9nZGIvaTM4Ni10ZGVwLmMJMjAxMC0wNC0wMyAy MTowODoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9pMzg2LXRkZXAuYwkyMDEw LTA0LTAzIDIxOjA5OjI5LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ0LDYgKzQ0LDcgQEAKLSAjaW5j bHVkZSAidmFsdWUuaCIKLSAjaW5jbHVkZSAiZGlzLWFzbS5oIgotICNpbmNsdWRlICJkaXNhc20u aCIKLSsjaW5jbHVkZSAicmVtb3RlLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAj aW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTYwMDAsNCArNjAwMSw3IEBAIGlzIFwiZGVmYXVs dFwiLiIpLAotIAotICAgLyogSW5pdGlhbGl6ZSB0aGUgc3RhbmRhcmQgdGFyZ2V0IGRlc2NyaXB0 aW9ucy4gICovCi0gICBpbml0aWFsaXplX3RkZXNjX2kzODYgKCk7Ci0rCi0rICAvKiBUZWxsIHJl bW90ZSBzdHViIHRoYXQgd2Ugc3VwcG9ydCBYTUwgdGFyZ2V0IGRlc2NyaXB0aW9uLiAgKi8KLSsg IHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCAoImkzODYiKTsKLSB9Ci0tLS0gZ2RiLTcuMS1w NS9nZGIvcmVtb3RlLmMJMjAxMC0wNC0wMyAyMDoyNDo1MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4xL2dkYi9yZW1vdGUuYwkyMDEwLTA0LTAzIDIxOjA5OjI5LjAwMDAwMDAwMCArMDIwMAot QEAgLTM0NjcsNiArMzQ2Nyw1MyBAQCBzdGF0aWMgc3RydWN0IHByb3RvY29sX2ZlYXR1cmUgcmVt b3RlX3ByCi0gICAgIFBBQ0tFVF9icyB9LAotIH07Ci0gCi0rc3RhdGljIGNoYXIgKnJlbW90ZV9z dXBwb3J0X3htbDsKLSsKLSsvKiBSZWdpc3RlciBzdHJpbmcgYXBwZW5kZWQgdG8gInhtbFJlZ2lz dGVycz0iIGluIHFTdXBwb3J0ZWQgcXVlcnkuICAqLwotKwotK3ZvaWQKLStyZWdpc3Rlcl9yZW1v dGVfc3VwcG9ydF94bWwgKGNvbnN0IGNoYXIgKnhtbCBBVFRSSUJVVEVfVU5VU0VEKQotK3sKLSsj aWYgZGVmaW5lZChIQVZFX0xJQkVYUEFUKQotKyAgaWYgKHJlbW90ZV9zdXBwb3J0X3htbCA9PSBO VUxMKQotKyAgICByZW1vdGVfc3VwcG9ydF94bWwgPSBjb25jYXQgKCJ4bWxSZWdpc3RlcnM9Iiwg eG1sLCBOVUxMKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGNoYXIgKmNvcHkgPSB4c3RyZHVw IChyZW1vdGVfc3VwcG9ydF94bWwgKyAxMyk7Ci0rICAgICAgY2hhciAqcCA9IHN0cnRvayAoY29w eSwgIiwiKTsKLSsKLSsgICAgICBkbwotKwl7Ci0rCSAgaWYgKHN0cmNtcCAocCwgeG1sKSA9PSAw KQotKwkgICAgewotKwkgICAgICAvKiBhbHJlYWR5IHRoZXJlICovCi0rCSAgICAgIHhmcmVlIChj b3B5KTsKLSsJICAgICAgcmV0dXJuOwotKwkgICAgfQotKwl9Ci0rICAgICAgd2hpbGUgKChwID0g c3RydG9rIChOVUxMLCAiLCIpKSAhPSBOVUxMKTsKLSsgICAgICB4ZnJlZSAoY29weSk7Ci0rCi0r ICAgICAgcCA9IGNvbmNhdCAocmVtb3RlX3N1cHBvcnRfeG1sLCAiLCIsIHhtbCwgTlVMTCk7Ci0r ICAgICAgeGZyZWUgKHJlbW90ZV9zdXBwb3J0X3htbCk7Ci0rICAgICAgcmVtb3RlX3N1cHBvcnRf eG1sID0gcDsKLSsgICAgfQotKyNlbmRpZgotK30KLSsKLStzdGF0aWMgY2hhciAqCi0rcmVtb3Rl X3F1ZXJ5X3N1cHBvcnRlZF9hcHBlbmQgKGNoYXIgKm1zZywgY29uc3QgY2hhciAqYXBwZW5kKQot K3sKLSsgIGlmIChtc2cpCi0rICAgIHsKLSsgICAgICBjaGFyICpwID0gY29uY2F0IChtc2csICI7 IiwgYXBwZW5kLCBOVUxMKTsKLSsgICAgICB4ZnJlZSAobXNnKTsKLSsgICAgICByZXR1cm4gcDsK LSsgICAgfQotKyAgZWxzZQotKyAgICByZXR1cm4geHN0cmR1cCAoYXBwZW5kKTsKLSt9Ci0rCi0g c3RhdGljIHZvaWQKLSByZW1vdGVfcXVlcnlfc3VwcG9ydGVkICh2b2lkKQotIHsKLUBAIC0zNDg1 LDI0ICszNTMyLDI3IEBAIHJlbW90ZV9xdWVyeV9zdXBwb3J0ZWQgKHZvaWQpCi0gICBycy0+YnVm WzBdID0gMDsKLSAgIGlmIChyZW1vdGVfcHJvdG9jb2xfcGFja2V0c1tQQUNLRVRfcVN1cHBvcnRl ZF0uc3VwcG9ydCAhPSBQQUNLRVRfRElTQUJMRSkKLSAgICAgewotKyAgICAgIGNoYXIgKnEgPSBO VUxMOwotICAgICAgIGNvbnN0IGNoYXIgKnFzdXBwb3J0ZWQgPSBnZGJhcmNoX3FzdXBwb3J0ZWQg KHRhcmdldF9nZGJhcmNoKTsKLSsKLSsgICAgICBpZiAocnMtPmV4dGVuZGVkKQotKwlxID0gcmVt b3RlX3F1ZXJ5X3N1cHBvcnRlZF9hcHBlbmQgKHEsICJtdWx0aXByb2Nlc3MrIik7Ci0rICAgICAg Ci0gICAgICAgaWYgKHFzdXBwb3J0ZWQpCi0rCXEgPSByZW1vdGVfcXVlcnlfc3VwcG9ydGVkX2Fw cGVuZCAocSwgcXN1cHBvcnRlZCk7Ci0rCi0rICAgICAgaWYgKHJlbW90ZV9zdXBwb3J0X3htbCkK LSsJcSA9IHJlbW90ZV9xdWVyeV9zdXBwb3J0ZWRfYXBwZW5kIChxLCByZW1vdGVfc3VwcG9ydF94 bWwpOwotKwotKyAgICAgIGlmIChxKQotIAl7Ci0tCSAgY2hhciAqcTsKLS0JICBpZiAocnMtPmV4 dGVuZGVkKQotLQkgICAgcSA9IGNvbmNhdCAoInFTdXBwb3J0ZWQ6bXVsdGlwcm9jZXNzKzsiLCBx c3VwcG9ydGVkLCBOVUxMKTsKLS0JICBlbHNlCi0tCSAgICBxID0gY29uY2F0ICgicVN1cHBvcnRl ZDoiLCBxc3VwcG9ydGVkLCBOVUxMKTsKLS0JICBwdXRwa3QgKHEpOwotKwkgIGNoYXIgKnAgPSBj b25jYXQgKCJxU3VwcG9ydGVkOiIsIHEsIE5VTEwpOwotIAkgIHhmcmVlIChxKTsKLSsJICBwdXRw a3QgKHApOwotKwkgIHhmcmVlIChwKTsKLSAJfQotICAgICAgIGVsc2UKLS0JewotLQkgIGlmIChy cy0+ZXh0ZW5kZWQpCi0tCSAgICBwdXRwa3QgKCJxU3VwcG9ydGVkOm11bHRpcHJvY2VzcysiKTsK LS0JICBlbHNlCi0tCSAgICBwdXRwa3QgKCJxU3VwcG9ydGVkIik7Ci0tCX0KLSsJcHV0cGt0ICgi cVN1cHBvcnRlZCIpOwotIAotICAgICAgIGdldHBrdCAoJnJzLT5idWYsICZycy0+YnVmX3NpemUs IDApOwotIAotLS0tIGdkYi03LjEtcDUvZ2RiL3JlbW90ZS5oCTIwMTAtMDEtMDEgMDg6MzE6NDEu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvcmVtb3RlLmgJMjAxMC0wNC0wMyAyMTow OToyOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC02Niw2ICs2Niw3IEBAIGV4dGVybiB2b2lkICgqZGVw cmVjYXRlZF90YXJnZXRfd2FpdF9sb28KLSAKLSB2b2lkIHJlZ2lzdGVyX3JlbW90ZV9nX3BhY2tl dF9ndWVzcyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCBieXRlcywKLSAJCQkJICAgICBj b25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjKTsKLSt2b2lkIHJlZ2lzdGVyX3JlbW90ZV9z dXBwb3J0X3htbCAoY29uc3QgY2hhciAqKTsKLSAKLSB2b2lkIHJlbW90ZV9maWxlX3B1dCAoY29u c3QgY2hhciAqbG9jYWxfZmlsZSwgY29uc3QgY2hhciAqcmVtb3RlX2ZpbGUsCi0gCQkgICAgICBp bnQgZnJvbV90dHkpOwoKZGlmZiAtLWdpdCBhL2dkYi1iejU3ODI1MC1hdngtMDhvZjEwLnBhdGNo IGIvZ2RiLWJ6NTc4MjUwLWF2eC0wOG9mMTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDRmMWU0YWIuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTc4MjUwLWF2eC0wOG9mMTAucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1bIEJhY2twb3J0ZWQuICBdCi0KLWNv bW1pdCA2ODQzNDEzOTJmM2NhNjcwM2RjMjhkYWM1NDhkMzA1MTgxMWJmZjQ3Ci1BdXRob3I6IEgu Si4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiAgIFR1ZSBNYXIgMzAgMTg6Mzc6MDMg MjAxMCArMDAwMAotCi0gICAgQWRkIG9yZy5nbnUuZ2RiLmkzODYuYXZ4LgotICAgIAotICAgIDIw MTAtMDMtMzAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSAgICAKLSAgICAJKiBn ZGIudGV4aW5mbyAoaTM4NiBGZWF0dXJlcyk6IEFkZCBvcmcuZ251LmdkYi5pMzg2LmF2eC4KLQot LS0tIGdkYi03LjEtcDYvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA0LTAzIDIxOjA5OjI5LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA0LTAz IDIxOjEwOjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTMzMzgwLDYgKzMzMzgwLDE3IEBAIGRlc2Ny aWJlIHJlZ2lzdGVyczoKLSBAc2FtcHtteGNzcn0KLSBAZW5kIGl0ZW1pemUKLSAKLStUaGUgQHNh bXB7b3JnLmdudS5nZGIuaTM4Ni5hdnh9IGZlYXR1cmUgaXMgb3B0aW9uYWwuICBJdCBzaG91bGQK LStkZXNjcmliZSB0aGUgdXBwZXIgMTI4IGJpdHMgb2YgQHNje3ltbX0gcmVnaXN0ZXJzOgotKwot K0BpdGVtaXplIEBtaW51cwotK0BpdGVtCi0rQHNhbXB7eW1tMGh9IHRocm91Z2ggQHNhbXB7eW1t N2h9IGZvciBpMzg2Ci0rQGl0ZW0KLStAc2FtcHt5bW0waH0gdGhyb3VnaCBAc2FtcHt5bW0xNWh9 IGZvciBhbWQ2NAotK0BpdGVtIAotK0BlbmQgaXRlbWl6ZQotKwotIFRoZSBAc2FtcHtvcmcuZ251 LmdkYi5pMzg2LmxpbnV4fSBmZWF0dXJlIGlzIG9wdGlvbmFsLiAgSXQgc2hvdWxkCi0gZGVzY3Jp YmUgYSBzaW5nbGUgcmVnaXN0ZXIsIEBzYW1we29yaWdfZWF4fS4KLSAKCmRpZmYgLS1naXQgYS9n ZGItYno1NzgyNTAtYXZ4LTA5b2YxMC5wYXRjaCBiL2dkYi1iejU3ODI1MC1hdngtMDlvZjEwLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2E0MWIxLi4wMDAwMDAwCi0tLSBh L2dkYi1iejU3ODI1MC1hdngtMDlvZjEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICsw LDAgQEAKLVsgQmFja3BvcnRlZC4gIF0KLQotY29tbWl0IDUzNjJlNWUxZGM0Y2ZhYzI0ZmJkNTg3 NzNhYWE3YTgyYzYxNWI2NjIKLUF1dGhvcjogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4K LURhdGU6ICAgVGh1IEFwciAxIDIwOjAyOjA3IDIwMTAgKzAwMDAKLQotICAgIFN1cHBvcnQgImFo IiwgImJoIiwgImNoIiwgImRoIiBvbiBhbWQ2NC4KLSAgICAKLSAgICBnZGIvCi0gICAgCi0gICAg MjAxMC0wNC0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotICAgIAotICAgIAkq IGFtZDY0LXRkZXAuYyAoYW1kNjRfYnl0ZV9uYW1lcyk6IEFkZCAiYWgiLCAiYmgiLCAiY2giLCAi ZGgiLgotICAgIAkoQU1ENjRfTlVNX0xPV0VSX0JZVEVfUkVHUyk6IE5ldy4KLSAgICAJKGFtZDY0 X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogSGFuZGxlICJhaCIsICJiaCIsICJjaCIsICJkaCIuCi0g ICAgCShhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSAgICAJKGFtZDY0 X2luaXRfYWJpKTogU2V0IG51bV9ieXRlX3JlZ3MgdG8gMjAuCi0gICAgCi0gICAgZ2RiL3Rlc3Rz dWl0ZS8KLSAgICAKLSAgICAyMDEwLTA0LTAxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0gICAgCi0gICAgCSogZ2RiLmFyY2gvYW1kNjQtYnl0ZS5leHA6IENoZWNrICJhaCIsICJi aCIsICJjaCIsICJkaCIuCi0KLS0tLSBnZGItNy4xLXA3L2dkYi9hbWQ2NC10ZGVwLmMJMjAxMC0w NC0wMyAyMTowODoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi9hbWQ2NC10ZGVw LmMJMjAxMC0wNC0wMyAyMToxMTo0MS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMTUsOSArMjE1LDEz IEBAIGFtZDY0X2FyY2hfcmVnX3RvX3JlZ251bSAoaW50IHJlZykKLSBzdGF0aWMgY29uc3QgY2hh ciAqYW1kNjRfYnl0ZV9uYW1lc1tdID0KLSB7Ci0gICAiYWwiLCAiYmwiLCAiY2wiLCAiZGwiLCAi c2lsIiwgImRpbCIsICJicGwiLCAic3BsIiwKLS0gICJyOGwiLCAicjlsIiwgInIxMGwiLCAicjEx bCIsICJyMTJsIiwgInIxM2wiLCAicjE0bCIsICJyMTVsIgotKyAgInI4bCIsICJyOWwiLCAicjEw bCIsICJyMTFsIiwgInIxMmwiLCAicjEzbCIsICJyMTRsIiwgInIxNWwiLAotKyAgImFoIiwgImJo IiwgImNoIiwgImRoIgotIH07Ci0gCi0rLyogTnVtYmVyIG9mIGxvd2VyIGJ5dGUgcmVnaXN0ZXJz LiAgKi8KLSsjZGVmaW5lIEFNRDY0X05VTV9MT1dFUl9CWVRFX1JFR1MgMTYKLSsKLSAvKiBSZWdp c3RlciBuYW1lcyBmb3Igd29yZCBwc2V1ZG8tcmVnaXN0ZXJzLiAgKi8KLSAKLSBzdGF0aWMgY29u c3QgY2hhciAqYW1kNjRfd29yZF9uYW1lc1tdID0KLUBAIC0yNjMsOCArMjY3LDE4IEBAIGFtZDY0 X3BzZXVkb19yZWdpc3Rlcl9yZWFkIChzdHJ1Y3QgZ2RiYXIKLSAgICAgICBpbnQgZ3BudW0gPSBy ZWdudW0gLSB0ZGVwLT5hbF9yZWdudW07Ci0gCi0gICAgICAgLyogRXh0cmFjdCAoYWx3YXlzIGxp dHRsZSBlbmRpYW4pLiAgKi8KLS0gICAgICByZWdjYWNoZV9yYXdfcmVhZCAocmVnY2FjaGUsIGdw bnVtLCByYXdfYnVmKTsKLS0gICAgICBtZW1jcHkgKGJ1ZiwgcmF3X2J1ZiwgMSk7Ci0rICAgICAg aWYgKGdwbnVtID49IEFNRDY0X05VTV9MT1dFUl9CWVRFX1JFR1MpCi0rCXsKLSsJICAvKiBTcGVj aWFsIGhhbmRsaW5nIGZvciBBSCwgQkgsIENILCBESC4gICovCi0rCSAgcmVnY2FjaGVfcmF3X3Jl YWQgKHJlZ2NhY2hlLAotKwkJCSAgICAgZ3BudW0gLSBBTUQ2NF9OVU1fTE9XRVJfQllURV9SRUdT LCByYXdfYnVmKTsKLSsJICBtZW1jcHkgKGJ1ZiwgcmF3X2J1ZiArIDEsIDEpOwotKwl9Ci0rICAg ICAgZWxzZQotKwl7Ci0rCSAgcmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCBncG51bSwgcmF3 X2J1Zik7Ci0rCSAgbWVtY3B5IChidWYsIHJhd19idWYsIDEpOwotKwl9Ci0gICAgIH0KLSAgIGVs c2UgaWYgKGkzODZfZHdvcmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHsKLUBA IC0yODksMTIgKzMwMywyNiBAQCBhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUgKHN0cnVjdCBn ZGJhCi0gICAgIHsKLSAgICAgICBpbnQgZ3BudW0gPSByZWdudW0gLSB0ZGVwLT5hbF9yZWdudW07 Ci0gCi0tICAgICAgLyogUmVhZCAuLi4gICovCi0tICAgICAgcmVnY2FjaGVfcmF3X3JlYWQgKHJl Z2NhY2hlLCBncG51bSwgcmF3X2J1Zik7Ci0tICAgICAgLyogLi4uIE1vZGlmeSAuLi4gKGFsd2F5 cyBsaXR0bGUgZW5kaWFuKS4gICovCi0tICAgICAgbWVtY3B5IChyYXdfYnVmLCBidWYsIDEpOwot LSAgICAgIC8qIC4uLiBXcml0ZS4gICovCi0tICAgICAgcmVnY2FjaGVfcmF3X3dyaXRlIChyZWdj YWNoZSwgZ3BudW0sIHJhd19idWYpOwotKyAgICAgIGlmIChncG51bSA+PSBBTUQ2NF9OVU1fTE9X RVJfQllURV9SRUdTKQotKwl7Ci0rCSAgLyogUmVhZCAuLi4gQUgsIEJILCBDSCwgREguICAqLwot KwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwKLSsJCQkgICAgIGdwbnVtIC0gQU1ENjRf TlVNX0xPV0VSX0JZVEVfUkVHUywgcmF3X2J1Zik7Ci0rCSAgLyogLi4uIE1vZGlmeSAuLi4gKGFs d2F5cyBsaXR0bGUgZW5kaWFuKS4gICovCi0rCSAgbWVtY3B5IChyYXdfYnVmICsgMSwgYnVmLCAx KTsKLSsJICAvKiAuLi4gV3JpdGUuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2Fj aGUsCi0rCQkJICAgICAgZ3BudW0gLSBBTUQ2NF9OVU1fTE9XRVJfQllURV9SRUdTLCByYXdfYnVm KTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8qIFJlYWQgLi4uICAqLwotKwkgIHJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgZ3BudW0sIHJhd19idWYpOwotKwkgIC8qIC4uLiBNb2Rp ZnkgLi4uIChhbHdheXMgbGl0dGxlIGVuZGlhbikuICAqLwotKwkgIG1lbWNweSAocmF3X2J1Ziwg YnVmLCAxKTsKLSsJICAvKiAuLi4gV3JpdGUuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd193cml0ZSAo cmVnY2FjaGUsIGdwbnVtLCByYXdfYnVmKTsKLSsJfQotICAgICB9Ci0gICBlbHNlIGlmIChpMzg2 X2R3b3JkX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotICAgICB7Ci1AQCAtMjIzMyw3ICsy MjYxLDcgQEAgYW1kNjRfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbwotICAgdGRl cC0+bnVtX2NvcmVfcmVncyA9IEFNRDY0X05VTV9HUkVHUyArIEkzODdfTlVNX1JFR1M7Ci0gICB0 ZGVwLT5yZWdpc3Rlcl9uYW1lcyA9IGFtZDY0X3JlZ2lzdGVyX25hbWVzOwotIAotLSAgdGRlcC0+ bnVtX2J5dGVfcmVncyA9IDE2OwotKyAgdGRlcC0+bnVtX2J5dGVfcmVncyA9IDIwOwotICAgdGRl cC0+bnVtX3dvcmRfcmVncyA9IDE2OwotICAgdGRlcC0+bnVtX2R3b3JkX3JlZ3MgPSAxNjsKLSAg IC8qIEF2b2lkIHdpcmluZyBpbiB0aGUgTU1YIHJlZ2lzdGVycyBmb3Igbm93LiAgKi8KLS0tLSBn ZGItNy4xLXA3L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtYnl0ZS5leHAJMjAxMC0wNC0w MyAyMTowNjo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gvYW1kNjQtYnl0ZS5leHAJMjAxMC0wNC0wMyAyMToxMTo0MS4wMDAwMDAwMDAgKzAyMDAK LUBAIC01Miw3ICs1Miw2IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0gICAgIGdkYl9zdXBw cmVzc190ZXN0cwotIH0KLSAKLS1zZXQgbnJfcmVncyAxNAotIHNldCBieXRlX3JlZ3MoMSkgYWwK LSBzZXQgYnl0ZV9yZWdzKDIpIGJsCi0gc2V0IGJ5dGVfcmVncygzKSBjbAotQEAgLTY3LDYgKzY2 LDEwIEBAIHNldCBieXRlX3JlZ3MoMTEpIHIxMmwKLSBzZXQgYnl0ZV9yZWdzKDEyKSByMTNsCi0g c2V0IGJ5dGVfcmVncygxMykgcjE0bAotIHNldCBieXRlX3JlZ3MoMTQpIHIxNWwKLStzZXQgYnl0 ZV9yZWdzKDE1KSBhaAotK3NldCBieXRlX3JlZ3MoMTYpIGJoCi0rc2V0IGJ5dGVfcmVncygxNykg Y2gKLStzZXQgYnl0ZV9yZWdzKDE4KSBkaAotIAotIGdkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9s aW5lX251bWJlciAiZmlyc3QgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSAgICAgICAgICAiQnJlYWtw b2ludCAuKiBhdCAuKiR7c3JjZmlsZX0uKiIgXAotQEAgLTc5LDEyICs4MiwxOSBAQCBmb3IgeyBz ZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gCi0gICAgICAgICAiY2hlY2sgY29udGVu dHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotIH0KLSAKLStmb3IgeyBzZXQgciAxIH0geyAkciA8PSA0 ICB9IHsgaW5jciByIH0gewotKyAgICBzZXQgaCBbZXhwciAkciArIDE0XQotKyAgICBnZGJfdGVz dCAicHJpbnQveCBcJCRieXRlX3JlZ3MoJGgpIiBcCi0rICAgICAgICAiLi4gPSAweFtmb3JtYXQg JXggJHJdMiIgXAotKyAgICAgICAgImNoZWNrIGNvbnRlbnRzIG9mICUkYnl0ZV9yZWdzKCRoKSIK LSt9Ci0rCi0gZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZWNvbmQgYnJl YWtwb2ludCBoZXJlIl0iIFwKLSAgICAgICAgICAiQnJlYWtwb2ludCAuKiBhdCAuKiR7c3JjZmls ZX0uKiIgXAotICAgICAgICAgICJzZXQgc2Vjb25kIGJyZWFrcG9pbnQgaW4gbWFpbiIKLSBnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gc2Vjb25kIGJyZWFrcG9pbnQgaW4g bWFpbiIKLSAKLS1mb3IgeyBzZXQgciA3IH0geyAkciA8PSAkbnJfcmVncyAgfSB7IGluY3IgciB9 IHsKLStmb3IgeyBzZXQgciA3IH0geyAkciA8PSAxNCAgfSB7IGluY3IgciB9IHsKLSAgICAgZ2Ri X3Rlc3QgInByaW50L3ggXCQkYnl0ZV9yZWdzKCRyKSIgXAotICAgICAgICAgIi4uID0gMHhbZm9y bWF0ICV4ICRyXTEiIFwKLSAgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJGJ5dGVfcmVncygk cikiCi1AQCAtOTQsNiArMTA0LDExIEBAIGZvciB7IHNldCByIDEgfSB7ICRyIDw9IDYgIH0geyBp bmNyIHIgfSAKLSAgIGdkYl90ZXN0ICJzZXQgdmFyIFwkJGJ5dGVfcmVncygkcikgPSAkciIgIiIg InNldCAlJGJ5dGVfcmVncygkcikiCi0gfQotIAotK2ZvciB7IHNldCByIDEgfSB7ICRyIDw9IDQg IH0geyBpbmNyIHIgfSB7Ci0rICBzZXQgaCBbZXhwciAkciArIDE0XQotKyAgZ2RiX3Rlc3QgInNl dCB2YXIgXCQkYnl0ZV9yZWdzKCRoKSA9ICRoIiAiIiAic2V0ICUkYnl0ZV9yZWdzKCRoKSIKLSt9 Ci0rCi0gZ2RiX3Rlc3QgImJyZWFrIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ0aGlyZCBicmVha3Bv aW50IGhlcmUiXSIgXAotICAgICAgICAgICJCcmVha3BvaW50IC4qIGF0IC4qJHtzcmNmaWxlfS4q IiBcCi0gICAgICAgICAgInNldCB0aGlyZCBicmVha3BvaW50IGluIG1haW4iCi1AQCAtMTA1LDcg KzEyMCwxNCBAQCBmb3IgeyBzZXQgciAxIH0geyAkciA8PSA2ICB9IHsgaW5jciByIH0gCi0gICAg ICAgICAiY2hlY2sgY29udGVudHMgb2YgJSRieXRlX3JlZ3MoJHIpIgotIH0KLSAKLS1mb3IgeyBz ZXQgciA3IH0geyAkciA8PSAkbnJfcmVncyAgfSB7IGluY3IgciB9IHsKLStmb3IgeyBzZXQgciAx IH0geyAkciA8PSA0ICB9IHsgaW5jciByIH0gewotKyAgICBzZXQgaCBbZXhwciAkciArIDE0XQot KyAgICBnZGJfdGVzdCAicHJpbnQgXCQkYnl0ZV9yZWdzKCRoKSIgXAotKyAgICAgICAgIi4uID0g JGgiIFwKLSsgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJGJ5dGVfcmVncygkaCkiCi0rfQot KwotK2ZvciB7IHNldCByIDcgfSB7ICRyIDw9IDE0ICB9IHsgaW5jciByIH0gewotICAgZ2RiX3Rl c3QgInNldCB2YXIgXCQkYnl0ZV9yZWdzKCRyKSA9ICRyIiAiIiAic2V0ICUkYnl0ZV9yZWdzKCRy KSIKLSB9Ci0gCi1AQCAtMTE0LDcgKzEzNiw3IEBAIGdkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9s aW5lX251bWJlciAiZm8KLSAgICAgICAgICAic2V0IGZvcnRoIGJyZWFrcG9pbnQgaW4gbWFpbiIK LSBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gZm9ydGggYnJlYWtwb2lu dCBpbiBtYWluIgotIAotLWZvciB7IHNldCByIDcgfSB7ICRyIDw9ICRucl9yZWdzICB9IHsgaW5j ciByIH0gewotK2ZvciB7IHNldCByIDcgfSB7ICRyIDw9IDE0ICB9IHsgaW5jciByIH0gewotICAg ICBnZGJfdGVzdCAicHJpbnQgXCQkYnl0ZV9yZWdzKCRyKSIgXAotICAgICAgICAgIi4uID0gJHIi IFwKLSAgICAgICAgICJjaGVjayBjb250ZW50cyBvZiAlJGJ5dGVfcmVncygkcikiCgpkaWZmIC0t Z2l0IGEvZ2RiLWJ6NTc4MjUwLWF2eC0xMG9mMTAtcHBjLnBhdGNoIGIvZ2RiLWJ6NTc4MjUwLWF2 eC0xMG9mMTAtcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWNlMjc1 Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMTBvZjEwLXBwYy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDE2ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEwLTA0L21zZzAwMDU2Lmh0bWwKLQotbGludXgtcHBjLWxvdy5jOjU5OTogZXJyb3I6 IGluY29tcGF0aWJsZSB0eXBlcyB3aGVuIGluaXRpYWxpemluZyB0eXBlIOKAmGVudW0gcmVnc2V0 X3R5cGXigJkgdXNpbmcgdHlwZSDigJh2b2lkICgqKShzdHJ1Y3QgcmVnY2FjaGUgKiwgdm9pZCAq KeKAmQotbGludXgtcHBjLWxvdy5jOjU5OTogd2FybmluZzogaW5pdGlhbGl6YXRpb24gZnJvbSBp bmNvbXBhdGlibGUgcG9pbnRlciB0eXBlCi0KLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBj LWxvdy5jCi0rKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwotQEAgLTU5NCw3ICs1 OTQsNyBAQCBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9IHsKLSAgICAgIFBQ Q19QVFJBQ0VfR0VUUkVHUy4gICovCi0gICB7IFBUUkFDRV9HRVRWU1hSRUdTLCBQVFJBQ0VfU0VU VlNYUkVHUywgMCwgU0laRU9GX1ZTWFJFR1MsIEVYVEVOREVEX1JFR1MsCi0gICBwcGNfZmlsbF92 c3hyZWdzZXQsIHBwY19zdG9yZV92c3hyZWdzZXQgfSwKLS0gIHsgUFRSQUNFX0dFVFZSUkVHUywg UFRSQUNFX1NFVFZSUkVHUywgU0laRU9GX1ZSUkVHUywgRVhURU5ERURfUkVHUywKLSsgIHsgUFRS QUNFX0dFVFZSUkVHUywgUFRSQUNFX1NFVFZSUkVHUywgMCwgU0laRU9GX1ZSUkVHUywgRVhURU5E RURfUkVHUywKLSAgICAgcHBjX2ZpbGxfdnJyZWdzZXQsIHBwY19zdG9yZV92cnJlZ3NldCB9LAot ICAgeyBQVFJBQ0VfR0VURVZSUkVHUywgUFRSQUNFX1NFVEVWUlJFR1MsIDAsIDMyICogNCArIDgg KyA0LCBFWFRFTkRFRF9SRUdTLAotICAgICBwcGNfZmlsbF9ldnJyZWdzZXQsIHBwY19zdG9yZV9l dnJyZWdzZXQgfSwKCmRpZmYgLS1naXQgYS9nZGItYno1NzgyNTAtYXZ4LTEwb2YxMC5wYXRjaCBi L2dkYi1iejU3ODI1MC1hdngtMTBvZjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA0MTE5NmMzLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU3ODI1MC1hdngtMTBvZjEwLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsODI3MSArMCwwIEBACi1bIEJhY2twb3J0ZWQuICBdCi0KLWdp dDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vZGV2ZWwvZ2RiL2hqbC9hdnguZ2l0Ci1oamwvYXZ4 aAotYWViYWUzNmMyYThiNzNhZTUxMzE5ZmZmNTRmYzM5ZjIyMGYwODI0YQotCi0tLS0gLi9iZmQv Q2hhbmdlTG9nLnhzdGF0ZQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysr IC4vYmZkL0NoYW5nZUxvZy54c3RhdGUJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0wLDAgKzEsMTQgQEAKLSsyMDEwLTAxLTI3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogZWxmLmMgKGVsZmNvcmVfZ3Jva19ub3RlKTogUmVwbGFjZSBOVF8z ODZfWFNUQVRFIHdpdGgKLSsJTlRfWDg2X1hTVEFURS4KLSsJKGVsZmNvcmVfd3JpdGVfeHN0YXRl cmVnKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGVsZi1iZmQuaCAoZWxmY29yZV93cml0ZV94c3RhdGVyZWcpOiBOZXcu Ci0rCi0rCSogZWxmLmMgKGVsZmNvcmVfZ3Jva194c3RhdGVyZWcpOiBOZXcuCi0rCShlbGZjb3Jl X3dyaXRlX3hzdGF0ZXJlZyk6IExpa2V3aXNlLgotKwkoZWxmY29yZV9ncm9rX25vdGUpOiBIYW5k bGUgTlRfMzg2X1hTVEFURS4KLSsJKGVsZmNvcmVfd3JpdGVfcmVnaXN0ZXJfbm90ZSk6IEhhbmRs ZSAucmVnLXhzdGF0ZSBzZWN0aW9uLgotLS0tIC4vZ2RiL0NoYW5nZUxvZy5hdngJMTk3MC0wMS0w MSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9DaGFuZ2VMb2cuYXZ4CTIwMTAt MDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDMwNiBAQAotKzIwMTAt MDMtMDQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb21tb24vaTM4 Ni14c3RhdGUuaCAoSTM4Nl9YU1RBVEVfU1NFX01BU0tfU1RSSU5HKTogUmVtb3ZlZC4KLSsJKEkz ODZfWFNUQVRFX0FWWF9NQVNLX1NUUklORyk6IExpa2V3aXNlLgotKwkoSTM4Nl9YU1RBVEVfTUFY X01BU0tfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShJMzg2X1hTVEFURV9TU0VfU0laRV9TVFJJTkcp OiBMaWtld2lzZS4KLSsJKEkzODZfWFNUQVRFX0FWWF9TSVpFX1NUUklORyk6IExpa2V3aXNlLgot KwkoSTM4Nl9YU1RBVEVfTUFYX1NJWkVfU1RSSU5HKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni10 ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogUmVwbGFjZQotKwlJMzg2X1hTVEFURV9NQVhfU0la RV9TVFJJTkcvSTM4Nl9YU1RBVEVfTUFYX01BU0tfU1RSSU5HIHdpdGgKLSsJSTM4Nl9YU1RBVEVf TUFYX1NJWkUvSTM4Nl9YU1RBVEVfTUFYX01BU0suCi0rCi0rMjAxMC0wMy0wNCAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfc3VwcGx5 X3hzdGF0ZXJlZ3NldCk6IERvbid0IGNoZWNrCi0rCXNpemVvZl94c3RhdGVyZWdzZXQuCi0rCShh bWQ2NF9jb2xsZWN0X3hzdGF0ZXJlZ3NldCk6IExpa2V3aXNlLgotKwkoYW1kNjRfcmVnc2V0X2Zy b21fY29yZV9zZWN0aW9uKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9pbml0X2FiaSk6IERvbid0IHNl dCBzaXplb2ZfeHN0YXRlcmVnc2V0LgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3N1cHBseV94 c3RhdGVyZWdzZXQpOiBEb24ndCBjaGVjawotKwlzaXplb2ZfeHN0YXRlcmVnc2V0LgotKwkoaTM4 Nl9jb2xsZWN0X3hzdGF0ZXJlZ3NldCk6IExpa2V3aXNlLgotKwkoaTM4Nl9yZWdzZXRfZnJvbV9j b3JlX3NlY3Rpb24pOiBMaWtld2lzZS4KLSsJKGkzODZfZ2RiYXJjaF9pbml0KTogRG9uJ3Qgc2V0 IHNpemVvZl94c3RhdGVyZWdzZXQuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRlcCk6 IFJlbW92ZSBzaXplb2ZfeHN0YXRlcmVnc2V0LgotKwotKzIwMTAtMDMtMDQgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1kNjRfbGlu dXhfcmVhZF9kZXNjcmlwdGlvbik6IENhbGwKLSsJaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVn c2V0LgotKwkqIGkzODYtbGludXgtbmF0LmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6 IExpa2V3aXNlLgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X3VwZGF0ZV94 c3RhdGVyZWdzZXQpOiBOZXcuCi0rCSogaTM4Ni1saW51eC10ZGVwLmggKGkzODZfbGludXhfdXBk YXRlX3hzdGF0ZXJlZ3NldCk6IExpa2V3aXNlLgotKwotKzIwMTAtMDMtMDMgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoeHN0YXRlX3Np emUpOiBOZXcuCi0rCSh4c3RhdGVfc2l6ZV9uX29mX2ludDY0KTogTGlrZXdpc2UuCi0rCShhbWQ2 NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVcGRhdGVkLgotKwkoYW1kNjRfbGlu dXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9y ZWFkX2Rlc2NyaXB0aW9uKTogVXNlIEkzODZfWFNUQVRFX1NTRV9TSVpFCi0rCWluc3RlYWQgb2Yg STM4Nl9YU1RBVEVfTUFYX1NJWkUuICBTZXQgeHN0YXRlX3NpemUgYW5kCi0rCXhzdGF0ZV9zaXpl X25fb2ZfaW50NjQuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAoeHN0YXRlX3NpemUpOiBOZXcu Ci0rCSh4c3RhdGVfc2l6ZV9uX29mX2ludDY0KTogTGlrZXdpc2UuCi0rCShmZXRjaF94c3RhdGVy ZWdzKTogVXBkYXRlZC4KLSsJKHN0b3JlX3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsJKGkzODZf bGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFVzZSBJMzg2X1hTVEFURV9TU0VfU0laRQotKwlpbnN0 ZWFkIG9mIEkzODZfWFNUQVRFX01BWF9TSVpFLiAgU2V0IHhzdGF0ZV9zaXplIGFuZAotKwl4c3Rh dGVfc2l6ZV9uX29mX2ludDY0LgotKwotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5oIChJMzg2X1hT VEFURV9TSVpFKTogTmV3LgotKwotKzIwMTAtMDMtMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBjb25maWcvZGpncHAvZm5jaGFuZ2UubHN0OiBBZGQgeDg2IEFWWCBY TUwgZmlsZXMuCi0rCi0rMjAxMC0wMy0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChYU1RBVEVfTUFYX1NJWkVfTl9PRl9JTlQ2NCk6 IE5ldy4KLSsJKGFtZDY0X2xpbnV4X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyk6IFVwZGF0ZWQu Ci0rCShhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMpOiBMaWtld2lzZS4KLSsJ KGFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSsJKiBhbWQ2NC1saW51 eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IExpa2V3aXNlLgot KwotKwkqIGkzODYtbGludXgtbmF0LmMgIChYU1RBVEVfTUFYX1NJWkVfTl9PRl9JTlQ2NCk6IE5l dy4KLSsJKGZldGNoX3hzdGF0ZXJlZ3MpOiBVcGRhdGVkLgotKwkoc3RvcmVfeHN0YXRlcmVncyk6 IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogTGlrZXdpc2UuCi0r Ci0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX3hjcjApOiBVcGRh dGVkLgotKwkoaTM4Nl9saW51eF9jb3JlX3JlYWRfeGNyMCk6IExpa2V3aXNlLgotKwkoaTM4Nl9s aW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2LXRkZXAu YyAoaTM4Nl9yZWdpc3Rlcl9yZWdncm91cF9wKTogVXBkYXRlZC4KLSsJKGkzODZfdmFsaWRhdGVf dGRlc2NfcCk6IExpa2V3aXNlLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBMaWtld2lzZS4KLSsK LSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfZnhzYXZlKTogVXBkYXRlZC4KLSsJKGkzODdf Y29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5oOiBD aGFuZ2UgWFNUQVRFIHRvIEkzODZfWFNUQVRFIGluIG1hY3Jvcy4KLSsKLSsyMDEwLTAzLTAyICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKGkzODYt eHN0YXRlLm8pOiBSZW1vdmVkLgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51 eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVc2UKLSsJWFNUQVRFX01BWF9TSVpFX05fT0Zf SU5UNjQgYW5kIFhTVEFURV9NQVhfU0laRS4KLSsJKGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9y X3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwkoYW1kNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6 IEFkZCBzdGF0aWMgeGNyMCBhbmQgZ2V0IGl0Ci0rCWZyb20gSTM4Nl9MSU5VWF9YU0FWRV9YQ1Iw X09GRlNFVC4gIFVzZSBYU1RBVEVfTUFYX1NJWkVfTl9PRl9JTlQ2NAotKwlhbmQgWFNUQVRFX01B WF9TSVpFLgotKwkoX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTogRG9uJ3QgY2FsbCBpMzg2 X3hzdGF0ZV9pbml0LgotKwotKwkqIGNvbmZpZ3VyZS5hYzogUmVtb3ZlIGNoZWNrIGZvciBjcHVp ZC5oLgotKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZWQuCi0rCSogY29uZmlndXJlOiBMaWtld2lz ZS4KLSsKLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChmZXRjaF94c3RhdGVyZWdzKTogVXNlCi0rCVhT VEFURV9NQVhfU0laRV9OX09GX0lOVDY0IGFuZCBYU1RBVEVfTUFYX1NJWkUuCi0rCShzdG9yZV94 c3RhdGVyZWdzKTogTGlrZXdpc2UuCi0rCShpMzg2X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBB ZGQgc3RhdGljIHhjcjAgYW5kIGdldCBpdAotKwlmcm9tIEkzODZfTElOVVhfWFNBVkVfWENSMF9P RkZTRVQuICBVc2UgWFNUQVRFX01BWF9TSVpFX05fT0ZfSU5UNjQKLSsJYW5kIFhTVEFURV9NQVhf U0laRS4KLSsJKF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0KTogRG9uJ3QgY2FsbCBpMzg2X3hz dGF0ZV9pbml0LgotKwotKwkqIGNvbW1vbi9pMzg2LWNwdWlkLmg6IFJlbW92ZWQuCi0rCSogY29t bW9uL2kzODYteHN0YXRlLmM6IExpa2V3aXNlLgotKwotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5o ICh4c3RhdGVfc3RhdHVzKTogUmVtb3ZlZC4KLSsJKGkzODZfeHN0YXRlX3R5cGUpOiBMaWtld2lz ZS4KLSsJKGkzODZfeHN0YXRlKTogTGlrZXdpc2UuCi0rCShpMzg2X3hzdGF0ZV9pbml0KTogTGlr ZXdpc2UuCi0rCShYU1RBVEVfTUFYX1NJWkVfTl9PRl9JTlQ2NCk6IE5ldy4KLSsKLSsJKiBjb25m aWcvaTM4Ni9saW51eC5taCAoTkFUREVQRklMRVMpOiBSZW1vdmUgaTM4Ni14c3RhdGUuby4KLSsJ KiBjb25maWcvaTM4Ni9saW51eDY0Lm1oIChOQVRERVBGSUxFUyk6IExpa2V3aXNlLgotKwotKzIw MTAtMDItMDEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1s aW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2dfcGFja2V0X3NpemUpOiBNYWtlIGl0IGNvbnN0Lgot KwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfZ19wYWNrZXRfc2l6ZSk6IExpa2V3aXNlLgotKwkqIGkz ODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2dfcGFja2V0X3NpemUpOiBMaWtld2lzZS4KLSsJ KiBpMzg2LXRkZXAuYyAoaTM4Nl9nX3BhY2tldF9zaXplKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4 Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfaW5pdF9hYmkpOiBSZW1vdmUKLSsJaTM4Nl9saW51 eF9nX3BhY2tldF9zaXplLgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3JlZ2lzdGVyX2dfcGFj a2V0X2d1ZXNzZXMpOiBVcGRhdGVkLgotKwkqIGkzODYtdGRlcC5oIChpMzg2X3JlZ2lzdGVyX2df cGFja2V0X2d1ZXNzZXMpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAxICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51 eF9nX3BhY2tldF9zaXplKTogQWRkIGtleS4KLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9s aW51eF9nX3BhY2tldF9zaXplKTogTGlrZXdpc2UuCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ19w YWNrZXRfc2l6ZSk6IExpa2V3aXNlLgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfZ19wYWNr ZXRfc2l6ZSk6IE5ldy4KLSsJKGFtZDY0X2luaXRfYWJpKTogQ2FsbCBpMzg2X3JlZ2lzdGVyX2df cGFja2V0X2d1ZXNzZXMuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKEkzODZfUFJPUEVSVFlfU1NFKTog UmVtb3ZlZC4KLSsJKEkzODZfUFJPUEVSVFlfQVZYKTogTGlrZXdpc2UuCi0rCShpMzg2X3RkZXNj X3NzZSk6IExpa2V3aXNlLgotKwkoaTM4Nl90ZGVzY19hdngpOiBMaWtld2lzZS4KLSsJKGkzODZf aW5pdF90ZGVzYyk6IExpa2V3aXNlLgotKwkoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2Vz KTogVXBkYXRlZC4KLSsJKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogTGlrZXdpc2Uu Ci0rCi0rCSogaTM4Ni10ZGVwLmggKEkzODZfUFJPUEVSVFlfU1NFKTogTmV3LgotKwkoSTM4Nl9Q Uk9QRVJUWV9BVlgpOiBMaWtld2lzZS4KLSsJKEFNRDY0X1BST1BFUlRZX1NTRSk6IExpa2V3aXNl LgotKwkoQU1ENjRfUFJPUEVSVFlfQVZYKTogTGlrZXdpc2UuCi0rCShpMzg2X2dfcGFja2V0X3Np emUpOiBBZGQga2V5LgotKwkoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2VzKTogVXBkYXRl ZC4KLSsKLSsyMDEwLTAxLTMxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogcmVnZm9ybWF0cy9yZWctaTM4Ni1hdngtbGludXguZGF0OiBBZGQgYSBjb21tZW50IGZvciBv c2FiaS4KLSsJKiByZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LWxpbnV4LmRhdDogTGlrZXdpc2Uu Ci0rCi0rMjAxMC0wMS0zMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IHJlZ2Zvcm1hdHMvcmVnLWkzODYtYXZ4LWxpbnV4LmRhdDogQWRkIGEgY29tbWVudCBmb3IgeG1s YXJjaC4KLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC5kYXQ6IExpa2V3aXNlLgotKwkqIHJl Z2Zvcm1hdHMvcmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4KLSsJKiByZWdmb3Jt YXRzL3JlZy14ODYtNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0zMSAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYyAoYW1k NjRfbGludXhfZ19wYWNrZXRfc2l6ZSk6IE5ldy4KLSsJKGFtZDY0X2xpbnV4X2luaXRfYWJpKTog UGFzcyBhbWQ2NF9saW51eF9nX3BhY2tldF9zaXplIHRvCi0rCWkzODZfcmVnaXN0ZXJfZ19wYWNr ZXRfZ3Vlc3Nlcy4KLSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9nX3BhY2tl dF9zaXplKTogTmV3LgotKwkoaTM4Nl9saW51eF9pbml0X2FiaSk6IFBhc3MgaTM4Nl9saW51eF9n X3BhY2tldF9zaXplIHRvCi0rCWkzODZfcmVnaXN0ZXJfZ19wYWNrZXRfZ3Vlc3Nlcy4KLSsKLSsJ KiBpMzg2LXRkZXAuYyAoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2VzKTogVXBkYXRlZCB0 bwotKwl0YWtlIGFuIGFycmF5IG9mIHRoZSBnL0cgcGFja2V0IHNpemVzLgotKwkoaTM4Nl9nX3Bh Y2tldF9zaXplKTogTmV3LgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBQYXNzIGkzODZfZ19wYWNr ZXRfc2l6ZSB0bwotKwlpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMuCi0rCi0rCSogaTM4 Ni10ZGVwLmggKGkzODZfZ19wYWNrZXRfc2l6ZV9pbmRleCk6IE5ldy4KLSsJKGkzODZfcmVnaXN0 ZXJfZ19wYWNrZXRfZ3Vlc3Nlcyk6IFVwZGF0ZWQuCi0rCi0rMjAxMC0wMS0zMSAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuaCAoQU1ENjRfR19QQUNL RVRfU0laRV9BVlgpOiBDb3JyZWN0IGNvbW1lbnRzLgotKwkqIGkzODYtdGRlcC5oIChJMzg2X0df UEFDS0VUX1NJWkVfQVZYKTogTGlrZXdpc2UuCi0rCQotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfZnhz YXZlKTogUmVtb3ZlIHZlY3RvciB1bml0IGNoZWNrLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNo X3ZlY3Rvcl91bml0X2luaXQpOiBSZW1vdmUgdGhlCi0rCWR1cGxpY2F0ZS4KLSsKLSsyMDEwLTAx LTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMg KGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogQ2FsbCAKLSsJaTM4Nl94c3RhdGVfaW5p dCBhbmQgaW5pdGlhbGl6ZSB2ZWN0b3JfdW5pdCBwcm9wZXJseS4KLSsKLSsyMDEwLTAxLTIxICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZf Z2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogSW5pdGlhbGl6ZQotKwl2ZWN0b3JfdW5pdCBvbmx5 IGlmIHRhcmdldF9kZXNjIGlzbid0IE5VTEwuCi0rCi0rMjAxMC0wMS0yMSAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3NzZV90eXBlKTog UmVuYW1lZCB0byAuLi4KLSsJKGkzODZfdmVjdG9yX3R5cGUpOiBUaGlzLiAgVXBkYXRlZC4KLSsJ KGkzODZfcmVnaXN0ZXJfdHlwZSk6IFVwZGF0ZWQuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGkzODZf c3NlX3R5cGUpOiBSZW5hbWVkIHRvIC4uLgotKwkoaTM4Nl92ZWN0b3JfdHlwZSk6IFRoaXMuCi0r Ci0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9yZWdpc3Rlcl90eXBlKTogVXBkYXRlZC4KLSsKLSsy MDEwLTAxLTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQt dGRlcC5jIChhbWQ2NF9yZWdpc3Rlcl9uYW1lKTogUmVwbGFjZSBzc2VfdW5pdCB3aXRoCi0rCXZl Y3Rvcl91bml0LgotKwkoYW1kNjRfaW5pdF9hYmkpOiBMaWtld2lzZS4KLSsJKiBpMzg2LXRkZXAu YyAoaTM4Nl9yZWdpc3Rlcl9uYW1lKTogTGlrZXdpc2UuCi0rCShpMzg2X3NzZV90eXBlKTogTGlr ZXdpc2UuCi0rCShpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMpOiBMaWtld2lzZS4KLSsJ KGkzODZfZ2RiYXJjaF9zc2VfdW5pdF9pbml0KTogUmVuYW1lZCB0byAuLi4KLSsJKGkzODZfZ2Ri YXJjaF92ZWN0b3JfdW5pdF9pbml0KTogVGhpcy4KLSsJKGkzODZfZ2RiYXJjaF9pbml0KTogVXBk YXRlZC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoeDg2X3NzZV91bml0KTogUmVuYW1lZCB0byAuLi4K LSsJKHg4Nl92ZWN0b3JfdW5pdCk6IFRoaXMuCi0rCShpMzg2X2dkYmFyY2hfc3NlX3VuaXRfaW5p dCk6IFJlbmFtZWQgdG8gLi4uCi0rCShpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFRo aXMuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X2Z4c2F2ZSk6IFJlcGxhY2Ugc3Nl X3VuaXQgd2l0aAotKwl2ZWN0b3JfdW5pdC4KLSsKLSsyMDA5LTEwLTE0ICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51 eF9pbml0X2FiaSk6IENhbGwKLSsJcmVnaXN0ZXJfcmVtb3RlX2dfcGFja2V0X2d1ZXNzLgotKwot KwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfcmVnaXN0ZXJfbmFtZXMpOiBSZW5hbWVkIHRvIC4uLgot KwkoYW1kNjRfc3NlX3JlZ2lzdGVyX25hbWVzKTogVGhpcy4gIFJlbW92ZSBBVlggcmVnaXN0ZXJz LgotKwkoYW1kNjRfYXZ4X3JlZ2lzdGVyX25hbWVzKTogTmV3LgotKwkoQU1ENjRfTlVNX1JFR1Mp OiBVcGRhdGVkLgotKwkoYW1kNjRfcmVnaXN0ZXJfbmFtZSk6IEhhbmRsZSBzc2VfdW5pdC4KLSsJ KGFtZDY0X3JlZ2lzdGVyX3R5cGUpOiBSZW1vdmUgQVZYIHJlZ2lzdGVycy4KLSsJKGFtZDY0X2lu aXRfYWJpKTogQ2FsbCBpMzg2X2dkYmFyY2hfc3NlX3VuaXRfaW5pdCB0bwotKwlpbml0aWFsaXpl IHNzZV91bml0LgotKwotKwkqIGFtZDY0LXRkZXAuaCAoQU1ENjRfR19QQUNLRVRfU0laRV9TU0Up OiBOZXcuCi0rCShBTUQ2NF9HX1BBQ0tFVF9TSVpFX0FWWCk6IExpa2V3aXNlLgotKwotKwkqIGRl ZnMuaCAoTUFYX1JFR0lTVEVSX1NJWkUpOiBJbmNyZWFzZSB0byAzMi4KLSsKLSsJKiBpMzg2LWxp bnV4LXRkZXAuYyAoaTM4Nl9saW51eF9pbml0X2FiaSk6IENhbGwKLSsJaTM4Nl9yZWdpc3Rlcl9n X3BhY2tldF9ndWVzc2VzLgotKwotKwkqIGkzODYtdGRlcC5jOiBJbmNsdWRlICJyZW1vdGUuaCIg YW5kICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiLgotKwkoSTM4Nl9QUk9QRVJUWV9TU0UpOiBOZXcu Ci0rCShJMzg2X1BST1BFUlRZX0FWWCk6IExpa2V3aXNlLgotKwkoaTM4Nl90ZGVzY19zc2UpOiBM aWtld2lzZS4KLSsJKGkzODZfdGRlc2NfYXZ4KTogTGlrZXdpc2UuCi0rCShpMzg2X2F2eF9yZWdp c3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoaTM4Nl92ZWMxMjhfdHlwZSk6IExpa2V3aXNlLgot KwkoaTM4Nl92ZWMyNTZfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9pbml0X3RkZXNjKTogTGlr ZXdpc2UuCi0rCShpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMpOiBMaWtld2lzZS4KLSsJ KGkzODZfZ2RiYXJjaF9zc2VfdW5pdF9pbml0KTogTGlrZXdpc2UuCi0rCShpMzg2X3JlZ2lzdGVy X25hbWVzKTogUmVuYW1lZCB0byAuLi4KLSsJKGkzODZfc3NlX3JlZ2lzdGVyX25hbWVzKTogVGhp cy4KLSsJKGkzODZfbnVtX3JlZ2lzdGVyX25hbWVzKTogVXBkYXRlZC4KLSsJKGkzODZfcmVnaXN0 ZXJfbmFtZSk6IEhhbmRsZSBzc2VfdW5pdC4KLSsJKGkzODZfc3NlX3R5cGUpOiBMaWtld2lzZS4K LSsJKGkzODZfZ2RiYXJjaF9pbml0KTogQ2FsbCBpMzg2X2dkYmFyY2hfc3NlX3VuaXRfaW5pdCB0 bwotKwlpbml0aWFsaXplIHNzZV91bml0LiAgQ2FsbCBpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1 ZXNzZXMuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X3RkZXApOiBDYWxsIGkzODZfdGRlc2NfaW5pdC4K LSsKLSsJKiBpMzg2LXRkZXAuaCAoeDg2X3NzZV91bml0KTogTmV3LgotKwkoSTM4Nl9HX1BBQ0tF VF9TSVpFX1NTRSk6IExpa2V3aXNlLgotKwkoSTM4Nl9HX1BBQ0tFVF9TSVpFX0FWWCk6IExpa2V3 aXNlLgotKwkoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2VzKTogTGlrZXdpc2UuCi0rCShp Mzg2X2dkYmFyY2hfc3NlX3VuaXRfaW5pdCk6IExpa2V3aXNlLgotKwkoZ2RiYXJjaF90ZGVwKTog QWRkIHNzZV91bml0LgotKwkoSTM4Nl9NQVhfUkVHSVNURVJfU0laRSk6IEluY3JlYXNlIHRvIDMy LgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X3N1cHBseV9meHNhdmUpOiBBc3NlcnQgc3NlX3Vu aXQgb24gU1NFCi0rCXJlZ2lzdGVycy4KLSsKLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC1s aW51eC5kYXQ6IE5ldy4KLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC5kYXQ6IExpa2V3aXNl LgotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4KLSsJ KiByZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0rCSogcmVnZm9y bWF0cy9yZWcteDg2LTY0LmRhdDogQWRkIHhtbGFyY2guCi0tLS0gLi9nZGIvQ2hhbmdlTG9nLnBz ZXVkbwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL0NoYW5n ZUxvZy5wc2V1ZG8JMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAg KzEsMTg5IEBACi0rMjAxMC0wMi0yNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGkzODYtdGRlcC5jIChpMzg2X21teF9yZWdudW1fcCk6IE9wdGltaXplZC4KLSsJKGkz ODZfYnl0ZV9yZWdudW1fcCk6IExpa2V3aXNlLgotKwkoaTM4Nl93b3JkX3JlZ251bV9wKTogTGlr ZXdpc2UuCi0rCShpMzg2X2R3b3JkX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0x OSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChp Mzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBNaW5pbWl6ZSBmdW5jdGlvbgotKwljYWxscy4KLSsK LSsyMDEwLTAyLTE4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4 Ni10ZGVwLmMgKGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBfcCk6IERvbid0IGluY2x1ZGUgcHNldWRv Ci0rCXJlZ2lzdGVycywgZXhjZXB0IGZvciBNWFgsIGluIGFueSByZWdpc3RlciBncm91cHMuCi0r Ci0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkz ODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IFNldCBtbTBfcmVnbnVtIG9ubHkgb25jZS4K LSsKLSsyMDEwLTAyLTE4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog YW1kNjQtdGRlcC5jIChhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk6IERvbid0IGNoZWNrIE1N WAotKwlwc2V1ZG8gcmVnaXN0ZXJzLiAgQ2FsbCBpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lLgot KwkoYW1kNjRfaW5pdF9hYmkpOiBSZXN0b3JlIG51bV94bW1fcmVncy4KLSsKLSsJKiBpMzg2LXRk ZXAuYyAoaTM4Nl9tbXhfbmFtZXMpOiBNYWtlIGl0IHN0YXRpYy4KLSsJKGkzODZfbW14X3JlZ251 bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogTWFrZSBpdCBn bG9iYWwuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGkzODZfbW14X3JlZ251bV9wKTogUmVtb3ZlZC4K LSsJKGkzODZfbW14X25hbWVzKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9u YW1lKTogTmV3LgotKwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNv bT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBDYWxsIHNldF9nZGJh cmNoX251bV9wc2V1ZG9fcmVncwotKwliZWZvcmUgdGRlc2NfdXNlX3JlZ2lzdGVycy4KLSsKLSsy MDEwLTAyLTE4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10 ZGVwLmMgKGkzODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBDaGVjayBpbnZhbGlkCi0rCXJlZ2lz dGVyIG51bWJlci4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCi0r Ci0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFt ZDY0LXRkZXAuYyAoYW1kNjRfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBOZXcuCi0rCShhbWQ2NF9w c2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSsJKGFtZDY0X2luaXRfYWJpKTogQ2Fs bCBzZXRfZ2RiYXJjaF9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCBhbmQKLSsJc2V0X2dkYmFyY2hfcHNl dWRvX3JlZ2lzdGVyX3dyaXRlLgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3BzZXVkb19yZWdp c3Rlcl9yZWFkKTogTWFrZSBpdCBnbG9iYWwuCi0rCURvbid0IGhhbmRsZSA2NGJpdCBub3IgRFdP UkQuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgotKwotKwkqIGkz ODYtdGRlcC5oIChpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTmV3LgotKwkoaTM4Nl9wc2V1 ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTE4ICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9ieXRlX25h bWVzKTogTWFrZSBpdCBzdGF0aWMuCi0rCShhbWQ2NF93b3JkX25hbWVzKTogTGlrZXdpc2UuCi0r CShhbWQ2NF9kd29yZF9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfcHNldWRvX3JlZ2lzdGVy X25hbWUpOiBOZXcuCi0rCShhbWQ2NF9pbml0X2FiaSk6IFNldCBudW1fYnl0ZV9yZWdzLCBudW1f d29yZF9yZWdzLCBudW1fZHdvcmRfcmVncwotKwlhbmQgbnVtX21teF9yZWdzLiAgQ2FsbCBzZXRf dGRlc2NfcHNldWRvX3JlZ2lzdGVyX25hbWUuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfbW14 X25hbWVzKTogTWFrZSBpdCBnbG9iYWwuCi0rCShpMzg2X21teF9yZWdudW1fcCk6IExpa2V3aXNl LgotKwkoaTM4Nl9ieXRlX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X3dvcmRfcmVnbnVt X3ApOiBMaWtld2lzZS4KLSsJKGkzODZfZHdvcmRfcmVnbnVtX3ApOiBMaWtld2lzZS4KLSsJKGkz ODZfcHNldWRvX3JlZ2lzdGVyX25hbWUpOiBSZW1vdmUgWEJGRDY0LgotKwkoaTM4Nl9wc2V1ZG9f cmVnaXN0ZXJfcmVhZCk6IFJlbW92ZSBCRkQ2NC4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3dy aXRlKTogTGlrZXdpc2UuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IE1vdmUgc2V0X2dkYmFyY2hf cHNldWRvX3JlZ2lzdGVyX3JlYWQgYW5kCi0rCXNldF9nZGJhcmNoX3BzZXVkb19yZWdpc3Rlcl93 cml0ZSBiZWZvcmUgZ2RiYXJjaF9pbml0X29zYWJpLgotKwotKwkqIGkzODYtdGRlcC5oIChpMzg2 X2J5dGVfcmVnbnVtX3ApOiBOZXcuCi0rCShpMzg2X3dvcmRfcmVnbnVtX3ApOiBMaWtld2lzZS4K LSsJKGkzODZfZHdvcmRfcmVnbnVtX3ApOiBMaWtld2lzZS4KLSsJKGkzODZfbW14X3JlZ251bV9w KTogTGlrZXdpc2UuCi0rCShpMzg2X21teF9uYW1lcyk6IExpa2V3aXNlLgotKwotKzIwMTAtMDIt MTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMg KEFNRDY0X05VTV9SRUdTKTogUmVzdG9yZWQuCi0rCi0rCSogYW1kNjQtdGRlcC5oIChBTUQ2NF9O VU1fR1JFR1MpOiBSZW1vdmVkLgotKwotKzIwMTAtMDItMTAgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKEFNRDY0X05VTV9SRUdTKTogUmVtb3Zl ZC4KLSsKLSsJKiBhbWQ2NC10ZGVwLmggKEFNRDY0X05VTV9HUkVHUyk6IE5ldy4KLSsKLSsJKiBp Mzg2LW50by10ZGVwLmMgKGkzODZudG9fcmVnc2V0X2lkKTogUmVwbGFjZSBJMzg2X05VTV9GUkVH UwotKwl3aXRoIEkzODdfTlVNX1JFR1MuCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ28zMl9pbml0 X2FiaSk6IExpa2V3aXNlLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBMaWtld2lzZS4KLSsKLSsJ KiBpMzg2LXRkZXAuaCAoaTM4Nl9yZWdudW0pOiBBZGQgSTM4Nl9NWENTUl9SRUdOVU0uCi0rCShJ Mzg2X05VTV9GUkVHUyk6IFJlbW92ZWQuCi0rCShJMzg2X1NTRV9OVU1fUkVHUyk6IERlZmluZWQg d2l0aCBJMzg2X01YQ1NSX1JFR05VTS4KLSsKLSsJKiBpMzg3LXRkZXAuaCAoSTM4N19OVU1fUkVH Uyk6IE5ldy4KLSsKLSsyMDEwLTAyLTEwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+ Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9pbml0X2FiaSk6IERvbid0IHNldCBudW1feG1t X3JlZ3MuCi0rCi0rMjAxMC0wMi0wOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYyAoYW1kNjRfbGludXhfcmVnaXN0ZXJfcmVnZ3JvdXBf cCk6IENhbGwKLSsJaTM4Nl9yZWdpc3Rlcl9yZWdncm91cF9wIGluc3RlYWQgb2YgZGVmYXVsdF9y ZWdpc3Rlcl9yZWdncm91cF9wLgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfbnVtX3BzZXVk b19yZWdzKTogUmVtb3ZlZC4KLSsJKGFtZDY0X2luaXRfYWJpKTogRG9uJ3QgY2FsbCBzZXRfZ2Ri YXJjaF9udW1fcHNldWRvX3JlZ3MuIERvbid0Ci0rCXNldCBtbTBfcmVnbnVtLgotKwotKwkqIGkz ODYtdGRlcC5jIChpMzg2X251bV9tbXhfcmVncyk6IFJlbW92ZWQuCi0rCShpMzg2X251bV9wc2V1 ZG9fcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9tbXhfcmVnbnVtX3ApOiBVcGRhdGVkLgotKwko aTM4Nl9yZWdpc3Rlcl9yZWdncm91cF9wKTogRG9uJ3QgaW5jbHVkZSBwc2V1ZG8gYnl0ZSwgd29y ZCwKLSsJZHdvcmQgcmVnaXN0ZXJzIGluIGdlbmVyYWxfcmVnZ3JvdXAuCi0rCShpMzg2X2dkYmFy Y2hfaW5pdCk6IFVwZGF0ZWQuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRlcCk6IEFk ZCBudW1fbW14X3JlZ3MuCi0rCi0rMjAxMC0wMi0wOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfd29yZF9uYW1lcyk6IEFkZCBhIG1p c3NpbmcgJywnLgotKwkoYW1kNjRfZHdvcmRfbmFtZXMpOiBOZXcuCi0rCShhbWQ2NF9udW1fcHNl dWRvX3JlZ3MpOiBVcGRhdGVkLgotKwotKwkqIGFtZDY0LXRkZXAuaCAoYW1kNjRfZHdvcmRfbmFt ZXMpOiBOZXcuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZHdvcmRfcmVnbnVtX3ApOiBOZXcu Ci0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogVXNlIGkzODZfZHdvcmRfcmVnbnVtX3Au Ci0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl90eXBlKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVk b19yZWdpc3Rlcl9yZWFkKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0 ZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBTZXQgbnVtX2R3b3JkX3JlZ3Mg YW5kIGVheF9yZWdudW0uCi0rCi0rMjAxMC0wMi0wOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IE9wdGltaXpl ZC4KLSsKLSsyMDEwLTAyLTA4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogYW1kNjQtdGRlcC5jIChhbWQ2NF9ieXRlX25hbWVzKTogTmV3LgotKwkoYW1kNjRfd29yZF9u YW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfbnVtX3BzZXVkb19yZWdzKTogTGlrZXdpc2UuCi0r CShhbWQ2NF9pbml0X2FiaSk6IENhbGwgc2V0X2dkYmFyY2hfbnVtX3BzZXVkb19yZWdzIHdpdGgK LSsJYW1kNjRfbnVtX3BzZXVkb19yZWdzLAotKwotKwkqIGFtZDY0LXRkZXAuaCAoYW1kNjRfYnl0 ZV9uYW1lcyk6IE5ldy4KLSsJKGFtZDY0X3dvcmRfbmFtZXMpOiBMaWtld2lzZS4KLSsKLSsJKiBp Mzg2LXRkZXAuYyAoaTM4Nl9udW1fYnl0ZV9yZWdzKTogUmVtb3ZlZC4KLSsJKGkzODZfbnVtX3dv cmRfcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9ieXRlX3JlZ251bV9wKTogVXBkYXRlZC4KLSsJ KGkzODZfd29yZF9yZWdudW1fcCk6IExpa2V3aXNlLgotKwkoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJf bmFtZSk6IFN1cHBvcnQgNjRiaXQuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTGlr ZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgotKwotKzIw MTAtMDItMDggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRk ZXAuYyAoaTM4Nl9ieXRlX25hbWVzKTogTmV3LgotKwkoaTM4Nl93b3JkX25hbWVzKTogTGlrZXdp c2UuCi0rCShpMzg2X251bV9ieXRlX3JlZ3MpOiBMaWtld2lzZS4KLSsJKGkzODZfbnVtX3dvcmRf cmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9udW1fcHNldWRvX3JlZ3MpOiBMaWtld2lzZS4KLSsJ KGkzODZfYnl0ZV9yZWdudW1fcCk6IExpa2V3aXNlLgotKwkoaTM4Nl93b3JkX3JlZ251bV9wKTog TGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogSGFuZGxlIGJ5dGUgYW5k IHdvcmQgcHNldWRvLXJlZ2lzdGVycy4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3R5cGUpOiBM aWtld2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBMaWtld2lzZS4KLSsJKGkz ODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCi0rCShpMzg2X2dkYmFyY2hfaW5p dCk6IENhbGwgc2V0X2dkYmFyY2hfbnVtX3BzZXVkb19yZWdzIHdpdGgKLSsJaTM4Nl9udW1fcHNl dWRvX3JlZ3MuICBTZXQgbnVtX2J5dGVfcmVncywgbnVtX3dvcmRfcmVncywKLSsJYWxfcmVnbnVt LCBheF9yZWdudW0uICBQdXQgTU1YIHBzZXVkby1yZWdpc3RlcnMgYWZ0ZXIgd29yZAotKwlwc2V1 ZG8tcmVnaXN0ZXJzLgotKwotKwkqIGkzODYtdGRlcC5oIChnZGJhcmNoX3RkZXApOiBBZGQgbnVt X2J5dGVfcmVncywgYWxfcmVnbnVtLAotKwludW1fd29yZF9yZWdzLCBheF9yZWdudW0sIG51bV9k d29yZF9yZWdzIGFuZCBlYXhfcmVnbnVtLgotLS0tIC4vZ2RiL0NoYW5nZUxvZy54Y3IJMTk3MC0w MS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9DaGFuZ2VMb2cueGNyCTIw MTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDEzMDQgQEAKLSsy MDEwLTA0LTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQt bGludXgtbmF0LmMgKGFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBDYWxsCi0rCWkzODZf bGludXhfdXBkYXRlX3hzdGF0ZXJlZ3NldC4KLSsKLSsyMDEwLTA0LTAyICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfcHJvY2Vzc19yZWNv cmQpOiBSZXBsYWNlIGkzODZfc3NlX3JlZ251bV9wCi0rCXdpdGggaTM4Nl94bW1fcmVnbnVtX3Au Ci0rCi0rMjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogQ2FsbAot KwlhbWQ2NF9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0IGluc3RlYWQgb2YKLSsJaTM4Nl9saW51 eF91cGRhdGVfeHN0YXRlcmVnc2V0LgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYyAoYW1kNjRf bGludXhfcmVnc2V0X3NlY3Rpb25zKTogTWFrZSBpdAotKwlzdGF0aWMuCi0rCShhbWQ2NF9saW51 eF91cGRhdGVfeHN0YXRlcmVnc2V0KTogTmV3LgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuaCAo YW1kNjRfbGludXhfcmVnc2V0X3NlY3Rpb25zKTogUmVtb3ZlZC4KLSsJKGFtZDY0X2xpbnV4X3Vw ZGF0ZV94c3RhdGVyZWdzZXQpOiBOZXcuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAoaTM4Nl9s aW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogUmVtb3ZlCi0rCWkzODZfbGludXhfcmVnc2V0X3NlY3Rp b25zIGZyb20gaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0LgotKwotKwkqIGkzODYtbGlu dXgtdGRlcC5jIChpMzg2X2xpbnV4X3JlZ3NldF9zZWN0aW9ucyk6IE1ha2UgaXQKLSsJc3RhdGlj LgotKwkoaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0KTogUmVtb3ZlIHJlZ3NldF9zZWN0 aW9ucy4gIFVzZQotKwlpMzg2X2xpbnV4X3JlZ3NldF9zZWN0aW9ucy4KLSsKLSsJKiBpMzg2LWxp bnV4LXRkZXAuaCAoaTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMpOiBSZW1vdmVkLgotKwkoaTM4 Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0KTogUmVtb3ZlIHJlZ3NldF9zZWN0aW9ucy4KLSsJ aTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMuCi0rCi0rMjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgtbmF0LmMgKGZldGNoX3hzdGF0 ZXJlZ3MpOiBEb24ndCBjYXN0ICZpb3YgdG8gaW50LgotKwkoc3RvcmVfeHN0YXRlcmVncyk6IExp a2V3aXNlLgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogRG9uJ3QgY2FzdCAmaW92 IHRvIGxvbmcuCi0rCi0rMjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGkzODYtbGludXgtdGRlcC5oIChJMzg2X0xJTlVYX1hTQVZFX1hDUjBfT0ZGU0VU KTogVXBkYXRlCi0rCWNvbW1lbnRzLgotKwotKzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoeHN0YXRlX3NpemUpOiBS ZW1vdmVkLgotKwkoYW1kNjRfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzKTogUmVwbGFj ZSB4c3RhdGVfc2l6ZQotKwl3aXRoIEkzODZfWFNUQVRFX01BWF9TSVpFLgotKwkoYW1kNjRfbGlu dXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9y ZWFkX2Rlc2NyaXB0aW9uKTogVXBkYXRlZC4KLSsKLSsJKiBpMzg2LWxpbnV4LW5hdC5jICh4c3Rh dGVfc2l6ZSk6IFJlbW92ZWQuCi0rCShmZXRjaF94c3RhdGVyZWdzKTogUmVwbGFjZSB4c3RhdGVf c2l6ZSB3aXRoCi0rCUkzODZfWFNUQVRFX01BWF9TSVpFLgotKwkoZmV0Y2hfeHN0YXRlcmVncyk6 IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogVXBkYXRlZC4KLSsK LSsJKiBjb21tb24vaTM4Ni14c3RhdGUuaCAoSTM4Nl9YU1RBVEVfTUFYX1NJWkUpOiBOZXcuCi0r Ci0rMjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFt ZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogUmVwbGFjZQot Kwl1bnNpZ25lZCBsb25nIGxvbmcgd2l0aCB1aW50NjRfdC4KLSsJKiBhbWQ2NC1saW51eC10ZGVw LmMgKGFtZDY0X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6Ci0rCUxpa2V3aXNlLgotKwkq IGkzODYtbGludXgtbmF0LmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IExpa2V3aXNl LgotKwkqIGkzODYtbGludXgtdGRlcC5oIChpMzg2X2xpbnV4X2NvcmVfcmVhZF94Y3IwKTogTGlr ZXdpc2UuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX3hj cjApOiBSZXBsYWNlCi0rCXVuc2lnbmVkIGxvbmcgbG9uZyB3aXRoIHVpbnQ2NF90LiAgRG9uJ3Qg YXNzZXJ0IHNlY3Rpb24gc2l6ZS4KLSsJKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9u KTogUmVwbGFjZSB1bnNpZ25lZCBsb25nIGxvbmcKLSsJd2l0aCB1aW50NjRfdC4KLSsKLSsJKiBp Mzg2LXRkZXAuYyAoaTM4Nl95bW1fdHlwZSk6IEZpeCB0eXBvcyBpbiBjb21tZW50cy4KLSsJKGkz ODZfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBDaGFuZ2UgMTZieXRlIHRvIDEyOGJpdHMgaW4KLSsJ Y29tbWVudHMuCi0rCShpMzg2X3ZhbGlkYXRlX3RkZXNjX3ApOiBVcGRhdGUgY29tbWVudHMuCi0r CShpMzg2X2dkYmFyY2hfaW5pdCk6IExpa2V3aXNlLgotKwotKwkqIGkzODYtdGRlcC5oIChnZGJh cmNoX3RkZXApOiBSZXBsYWNlIHVuc2lnbmVkIGxvbmcgbG9uZyB3aXRoCi0rCXVpbnQ2NF90LiAg UmVwbGFjZSBnZGIgd2l0aCBHREIgaW4gY29tbWVudHMuCi0rCi0rMjAxMC0wMy0yNyAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFy Y2hfaW5pdCk6IFJlcGxhY2UgIng4Nj14bWwiIHdpdGgKLSsJInhtbFJlZ2lzdGVycysiLgotKwot KzIwMTAtMDMtMTIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2 NC1saW51eC1uYXQuYyAoeHN0YXRlX3NpemVfbl9vZl9pbnQ2NCk6IFJlbW92ZWQuCi0rCShhbWQ2 NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVcGRhdGVkLgotKwkoYW1kNjRfbGlu dXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9y ZWFkX2Rlc2NyaXB0aW9uKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAoeHN0 YXRlX3NpemVfbl9vZl9pbnQ2NCk6IFJlbW92ZWQuCi0rCShmZXRjaF94c3RhdGVyZWdzKTogVXBk YXRlZC4KLSsJKHN0b3JlX3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsJKGkzODZfbGludXhfcmVh ZF9kZXNjcmlwdGlvbik6IExpa2V3aXNlLgotKwotKzIwMTAtMDMtMTIgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzogSW5jbHVkZSAiaTM4 Ni14c3RhdGUuaCIuCi0rCShQVFJBQ0VfR0VUUkVHU0VUKTogTmV3LgotKwkoUFRSQUNFX1NFVFJF R1NFVCk6IExpa2V3aXNlLgotKwkqIGkzODYtbGludXgtbmF0LmM6IExpa2V3aXNlLgotKwotKwkq IGFtZDY0LWxpbnV4LXRkZXAuYzogSW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIuCi0rCi0rCSogY29u ZmlnL2kzODYvbGludXg2NC5taCAoTkFUX0ZJTEUpOiBTZXQgdG8gY29uZmlnL25tLWxpbnV4Lmgu Ci0rCi0rCSogY29uZmlnL2kzODYvbm0tbGludXguaDogRG9uJ3QgaW5jbHVkZQotKwkiY29uZmln L2kzODYvbm0tbGludXgteHN0YXRlLmgiLgotKwotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4LXhz dGF0ZS5oOiBSZW1vdmVkLgotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4NjQuaDogTGlrZXdpc2Uu Ci0rCi0rMjAxMC0wMy0xMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGkzODctdGRlcC5jIChpMzg3X3N1cHBseV94c2F2ZSk6IFJlcGxhY2UgSTM4Nl9YU1RBVEVfTUFY X01BU0sKLSsJd2l0aCBJMzg2X1hTVEFURV9BVlhfTUFTSy4KLSsKLSsJKiBjb21tb24vaTM4Ni14 c3RhdGUuaCAoSTM4Nl9YU1RBVEVfTUFYX01BU0spOiBSZW1vdmVkLgotKwkoSTM4Nl9YU1RBVEVf TUFYX1NJWkUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAzLTEyICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBf cCk6IFJlcGxhY2UKLSsJYml0X0kzODZfWFNUQVRFX1hYWCB3aXRoIEkzODZfWFNUQVRFX1hYWC4K LSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfeHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdf Y29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5oIChi aXRfSTM4Nl9YU1RBVEVfWFhYKTogUmVuYW1lZCB0byAuLi4KLSsJKEkzODZfWFNUQVRFX1hYWCk6 IFRoaXMuCi0rCShJMzg2X1hTVEFURV9YWFhfTUFTSyk6IFJlcGxhY2UgYml0X0kzODZfWFNUQVRF X1hYWCB3aXRoCi0rCUkzODZfWFNUQVRFX1hYWC4KLSsJKEkzODZfWFNUQVRFX1NJWkUpOiBMaWtl d2lzZS4KLSsKLSsyMDEwLTAzLTA3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9kd2FyZl9yZWdfdG9fcmVnbnVtKTogUmV0dXJuICV5 bW1OCi0rCXJlZ2lzdGVyIG51bWJlciBmb3IgJXhtbU4gaWYgQVZYIGlzIGF2YWlsYWJsZS4KLSsK LSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl94bW1fcmVnbnVtX3ApOiBNYWtlIGl0IGdsb2JhbC4KLSsJ KGkzODZfZGJ4X3JlZ190b19yZWdudW0pOiBSZXR1cm4gJXltbU4gcmVnaXN0ZXIgbnVtYmVyIGZv cgotKwkleG1tTiBpZiBBVlggaXMgYXZhaWxhYmxlLgotKwotKwkqIGkzODYtdGRlcC5oIChpMzg2 X3htbV9yZWdudW1fcCk6IE5ldy4KLSsKLSsyMDEwLTAzLTA2ICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9pbml0X2FiaSk6IFJlcGxh Y2UgQU1ENjRfQVZYX05VTV9SRUdTCi0rCXdpdGggQU1ENjRfTlVNX1JFR1MuCi0rCi0rCSogYW1k NjQtdGRlcC5oIChBTUQ2NF9BVlhfTlVNX1JFR1MpOiBSZW5hbWVkIHRvIC4uLgotKwkoQU1ENjRf TlVNX1JFR1MpOiBUaGlzLgotKwotKwkqIGkzODYtbGludXgtbmF0LmMgKEdFVEZQWFJFR1NfU1VQ UExJRVMpOiBSZXBsYWNlCi0rCUkzODZfQVZYX05VTV9SRUdTIHdpdGggSTM4Nl9TU0VfTlVNX1JF R1MuCi0rCShHRVRYU1RBVEVSRUdTX1NVUFBMSUVTKTogTmV3LgotKwkoaTM4Nl9saW51eF9mZXRj aF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVc2UgR0VUWFNUQVRFUkVHU19TVVBQTElFUy4KLSsJKGkz ODZfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0w My0wNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgt dGRlcC5jIChpMzg2X2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldCk6IENvdW50IDgKLSsJdXBwZXIg WU1NIHJlZ2lzdGVycy4KLSsKLSsyMDEwLTAzLTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBfcCk6IEZv ciBhbGxfZ3JvdXAsIGRvbid0Ci0rCWluY2x1ZGUgdXBwZXIgWU1NIHJlZ2lzdGVycyBub3IgWE1N IHJlZ2lzdGVycyB3aGVuIEFWWCBpcwotKwlzdXBwb3J0ZWQuCi0rCi0rMjAxMC0wMy0wNSAgSC5K LiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X2Nv bGxlY3RfeHNhdmUpOiBSZXBsYWNlIHJlZ2NhY2hlX3Jhd19yZWFkCi0rCXdpdGggcmVnY2FjaGVf cmF3X2NvbGxlY3QuCi0rCi0rMjAxMC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBEb24n dCByZXR1cm4gMAotKwlmb3IgdXBwcGVyIFlNTSBub3IgWE1NIHJlZ2lzdGVycy4KLSsKLSsJKiBp Mzg3LXRkZXAuYyAoeHNhdmVfc3NlX29mZnNldCk6IFJlbW92ZWQuCi0rCShYU0FWRV9TU0VfQURE Uik6IExpa2V3aXNlLgotKwkoaTM4N19zdXBwbHlfeHNhdmUpOiBSZXBsYWNlIFhTQVZFX1NTRV9B RERSIHdpdGggRlhTQVZFX0FERFIuCi0rCShpMzg3X2NvbGxlY3RfeHNhdmUpOiBMaWtld2lzZS4g IFJlcGxhY2UgdGhlIHNlY29uZAotKwlyZWdjYWNoZV9yYXdfY29sbGVjdCB3aXRoIG1lbWNweS4K LSsKLSsyMDEwLTAzLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog aTM4Ny10ZGVwLmMgKHhzYXZlX29mZnNldCk6IFJlbW92ZWQuCi0rCShYU0FWRV9BRERSKTogTGlr ZXdpc2UuCi0rCSh4c2F2ZV9zc2Vfb2Zmc2V0KTogTmV3LgotKwkoWFNBVkVfU1NFX0FERFIpOiBM aWtld2lzZS4KLSsJKHhzYXZlX2F2eGhfb2Zmc2V0KTogTGlrZXdpc2UuCi0rCShYU0FWRV9BVlhI X0FERFIpOiBMaWtld2lzZS4KLSsJKGkzODdfc3VwcGx5X3hzYXZlKTogVXBkYXRlZC4KLSsJKGkz ODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDMtMDUgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfeHNh dmUpOiBGaXggdHlwb3MuCi0rCShpMzg3X2NvbGxlY3RfeHNhdmUpOiBQcm9wZXJseSBoYW5kbGUg Z2NvcmUuCi0rCi0rMjAxMC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9ncmVnc2V0NjRfcmVnX29mZnNl dCk6IENvdW50Ci0rCTE2IHVwcGVyIFlNTSByZWdpc3RlcnMuCi0rCShhbWQ2NF9saW51eF9ncmVn c2V0MzJfcmVnX29mZnNldCk6IENvdW50IDggdXBwZXIgWU1NIHJlZ2lzdGVycy4KLSsKLSsJKiBh bWQ2NC1saW51eC10ZGVwLmggKEFNRDY0X0xJTlVYX09SSUdfUkFYX1JFR05VTSk6IFJlcGxhY2UK LSsJQU1ENjRfTVhDU1JfUkVHTlVNIHdpdGggQU1ENjRfWU1NMTVIX1JFR05VTS4KLSsKLSsJKiBh bWQ2NC10ZGVwLmMgKGFtZDY0X3NzZV9yZWdpc3Rlcl9uYW1lcyk6IFJlbmFtZWQgdG8gLi4uCi0r CShhbWQ2NF9yZWdpc3Rlcl9uYW1lcyk6IFRoaXMuCi0rCShhbWQ2NF9hdnhfcmVnaXN0ZXJfbmFt ZXMpOiBSZW1vdmVkLgotKwkoYW1kNjRfeG1tX25hbWVzKTogTGlrZXdpc2UuCi0rCShBTUQ2NF9O VU1fUkVHUyk6IExpa2V3aXNlLgotKwkoYW1kNjRfeW1tX25hbWVzKTogTmV3LgotKwkoYW1kNjRf eW1taF9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfcmVnaXN0ZXJfbmFtZSk6IExpa2V3aXNl LgotKwkoYW1kNjRfcHNldWRvX3JlZ2lzdGVyX25hbWUpOiBSZW1vdmUgaTM4Nl94bW1fcmVnbnVt X3AuICBBZGQKLSsJaTM4Nl95bW1fcmVnbnVtX3AuCi0rCShhbWQ2NF9pbml0X2FiaSk6IFNldCB5 bW1oX3JlZ2lzdGVyX25hbWVzLCBudW1feW1tX3JlZ3MKLSsJYW5kIHltbTBoX3JlZ251bS4gIENh bGwgc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZS4gIFJlcGxhY2UKLSsJbnVtX3ZlY3Rvcl9yZWdz IHdpdGggbnVtX3htbV9yZWdzLiAgUmVwbGFjZSBBTUQ2NF9OVU1fUkVHUwotKwl3aXRoIEFNRDY0 X0FWWF9OVU1fUkVHUy4KLSsKLSsJKiBhbWQ2NC10ZGVwLmggKGFtZDY0X3JlZ251bSk6IEFkZCBB TUQ2NF9ZTU0wSF9SRUdOVU0gYW5kCi0rCUFNRDY0X1lNTTE1SF9SRUdOVU0uCi0rCShBTUQ2NF9B VlhfTlVNX1JFR1MpOiBOZXcuCi0rCShhbWQ2NF9yZWdpc3Rlcl9uYW1lKTogUmVtb3ZlZC4KLSsJ KGFtZDY0X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2LWRhcndpbi10ZGVw LmMgKGkzODZfZGFyd2luX2luaXRfYWJpKTogUmVwbGFjZQotKwludW1fdmVjdG9yX3JlZ3Mgd2l0 aCBudW1feG1tX3JlZ3MuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAocmVnbWFwKTogQ291bnQg OCB1cHBlciBZTU0gcmVnaXN0ZXJzLgotKwkoR0VURlBYUkVHU19TVVBQTElFUyk6IFJlcGxhY2Ug STM4Nl9TU0VfTlVNX1JFR1Mgd2l0aAotKwlJMzg2X0FWWF9OVU1fUkVHUy4KLSsJKiBpMzg2LWxp bnV4LXRkZXAuaCAoSTM4Nl9MSU5VWF9PUklHX0VBWF9SRUdOVU0pOiBMaWtld2lzZS4KLSsKLSsJ KiBpMzg2LW50by10ZGVwLmMgKGkzODZudG9fcmVnaXN0ZXJfYXJlYSk6IFJlcGxhY2UKLSsJSTM4 N19WRUNUT1IwX1JFR05VTSB3aXRoIEkzODdfWE1NMF9SRUdOVU0uCi0rCi0rCSogaTM4Ni10ZGVw LmMgKGkzODZfc3NlX3JlZ2lzdGVyX25hbWVzKTogUmVuYW1lZCB0byAuLi4KLSsJKGkzODZfcmVn aXN0ZXJfbmFtZXMpOiBUaGlzLgotKwkoaTM4Nl9hdnhfcmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmVk LgotKwkoaTM4Nl94bW1fbmFtZXMpOiBMaWtld2lzZS4KLSsJKGkzODZfdmVjdG9yX3JlZ251bV9w KTogTGlrZXdpc2UuCi0rCShpMzg2X3htbV90eXBlKTogTGlrZXdpc2UuCi0rCSgpOiBMaWtld2lz ZS4KLSsJKCk6IExpa2V3aXNlLgotKwkoaTM4Nl95bW1fbmFtZXMpOiBOZXcuCi0rCShpMzg2X3lt bWhfbmFtZXMpOiBMaWtld2lzZS4KLSsJKGkzODZfeW1taF9yZWdudW1fcCk6IExpa2V3aXNlLgot KwkoaTM4Nl95bW1fcmVnbnVtX3ApOiBMaWtld2lzZS4KLSsJKGkzODZfcmVnaXN0ZXJfbmFtZSk6 IExpa2V3aXNlLgotKwkoaTM4Nl95bW1fdHlwZSk6IExpa2V3aXNlLgotKwkoKTogTGlrZXdpc2Uu Ci0rCShpMzg2X214Y3NyX3JlZ251bV9wKTogUmVwbGFjZSBJMzg3X1ZFQ1RPUjBfUkVHTlVNIHdp dGgKLSsJSTM4N19YTU0wX1JFR05VTS4KLSsJKGkzODZfZGJ4X3JlZ190b19yZWdudW0pOiBMaWtl d2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX25hbWUpOiBSZW1vdmUgaTM4Nl94bW1fcmVn bnVtX3AuICBBZGQKLSsJaTM4Nl95bW1fcmVnbnVtX3AuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rl cl90eXBlKTogTGlrZXdpc2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTGlrZXdp c2UuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9n bzMyX2luaXRfYWJpKTogUmVwbGFjZSBudW1fdmVjdG9yX3JlZ3Mgd2l0aCBudW1feG1tX3JlZ3Mu Ci0rCShpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBSZXBsYWNlIGkzODZfdmVjdG9yX3JlZ251 bV9wLiBBZGQKLSsJaTM4Nl95bW1fcmVnbnVtX3AuCi0rCShpMzg2X3ZhbGlkYXRlX3RkZXNjX3Ap OiBHZXQgU1NFIHJlZ2lzdGVycy4gIFRyeSBBVlggcmVnaXN0ZXJzLgotKwkoaTM4Nl9nZGJhcmNo X2luaXQpOiBSZXBsYWNlIG51bV92ZWN0b3JfcmVncyB3aXRoIG51bV94bW1fcmVncy4KLSsJQ2Fs bCBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lLiAgUmVwbGFjZSBJMzg2X1NTRV9OVU1fUkVHUwot Kwl3aXRoIEkzODZfQVZYX05VTV9SRUdTLiAgU2V0IHltbWhfcmVnaXN0ZXJfbmFtZXMsIHltbTBo X3JlZ251bSwKLSsJbnVtX3ltbV9yZWdzIGFuZCB5bW0wX3JlZ251bS4gIENhbGwgc2V0X2dkYmFy Y2hfcXN1cHBvcnRlZAotKwl3aXRoICJ4ODY9eG1sIi4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoZ2Ri YXJjaF90ZGVwKTogQWRkIG51bV95bW1fcmVncywgeW1tMF9yZWdudW0sCi0rCXltbTBoX3JlZ251 bSwgeW1taF9yZWdpc3Rlcl9uYW1lcyBhbmQgaTM4Nl95bW1fdHlwZS4gIFJlbW92ZQotKwl4bW0w X3JlZ251bSwgbnVtX3ZlY3Rvcl9yZWdzIGFuZCBpMzg2X3htbV90eXBlLgotKwkoaTM4Nl9yZWdu dW0pOiBBZGQgSTM4Nl9ZTU0wSF9SRUdOVU0gYW5kIEkzODZfWU1NN0hfUkVHTlVNLgotKwkoSTM4 Nl9BVlhfTlVNX1JFR1MpOiBOZXcuCi0rCShpMzg2X3ltbV9yZWdudW1fcCk6IExpa2V3aXNlLgot KwkoaTM4Nl95bW1oX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShJMzg2X01BWF9SRUdJU1RFUl9T SVpFKTogQ2hhbmdlZCB0byAxNi4KLSsJKGkzODZfeG1tX3JlZ251bV9wKTogUmVtb3ZlZC4KLSsK LSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfZnNhdmUpOiBSZXBsYWNlIEkzODdfVkVDVE9S MF9SRUdOVU0KLSsJd2l0aCBJMzg3X1hNTTBfUkVHTlVNLgotKwkoaTM4N19jb2xsZWN0X2ZzYXZl KTogTGlrZXdpc2UuCi0rCShpMzg3X3N1cHBseV9meHNhdmUpOiBSZXBsYWNlIEkzODdfVkVDVE9S MF9SRUdOVU0vbnVtX3ZlY3Rvcl9yZWdzCi0rCXdpdGggSTM4N19YTU0wX1JFR05VTS9udW1fdmVj dG9yX3JlZ3MuCi0rCShpMzg3X2NvbGxlY3RfZnhzYXZlKTogTGlrZXdpc2UuCi0rCSh4c2F2ZV9z c2Vfb2Zmc2V0KTogUmVtb3ZlZC4KLSsJKFhTQVZFX1NTRV9BRERSKTogTGlrZXdpc2UuCi0rCSh4 c2F2ZV9hdnhoX29mZnNldCk6IExpa2V3aXNlLgotKwkoWFNBVkVfQVZYSF9BRERSKTogTGlrZXdp c2UuCi0rCSh4c2F2ZV9vZmZzZXQpOiBOZXcuCi0rCShYU0FWRV9BRERSKTogTGlrZXdpc2UuCi0r CShpMzg3X3N1cHBseV94c2F2ZSk6IFJld3JpdGUuCi0rCShpMzg3X2NvbGxlY3RfeHNhdmUpOiBM aWtld2lzZS4KLSsKLSsJKiBpMzg3LXRkZXAuaCAoSTM4N19OVU1fVkVDVE9SX1JFR1MpOiBSZW5h bWVkIHRvIC4uLgotKwkoSTM4N19OVU1fWE1NX1JFR1MpOiBUaGlzLgotKwkoSTM4N19OVU1fWU1N X1JFR1MpOiBOZXcuCi0rCShJMzg3X1lNTTBIX1JFR05VTSk6IExpa2V3aXNlLgotKwkoSTM4N19W RUNUT1IwX1JFR05VTSk6IFJlbmFtZWQgdG8gLi4uCi0rCShJMzg3X1hNTTBfUkVHTlVNKTogVGhp cy4KLSsJKEkzODdfTVhDU1JfUkVHTlVNKTogVXBkYXRlZC4KLSsJKEkzODdfWU1NRU5ESF9SRUdO VU0pOiBOZXcuCi0rCi0rMjAxMC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGZlYXR1cmVzL2kzODYvMzJiaXQtYXZ4LnhtbDogT25seSBkZWZpbmUgdXBwZXIg WU1NIHJlZ2lzdGVycy4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWF2eC54bWw6IExpa2V3aXNl LgotKwotKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LWxpbnV4LnhtbDogSW5jbHVkZSA2NGJp dC1zc2UueG1sLgotKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LnhtbDogTGlrZXdpc2UuCi0r Ci0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC1saW51eC54bWw6IEluY2x1ZGUgMzJiaXQtc3Nl LnhtbC4KLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LnhtbDogTGlrZXdpc2UuCi0rCi0rCSog ZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXguYzogUmVnZW5lcmF0ZWQuCi0rCSogZmVhdHVy ZXMvaTM4Ni9hbWQ2NC1hdnguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2 eC1saW51eC5jOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LmM6IExpa2V3 aXNlLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4K LSsJKiByZWdmb3JtYXRzL2kzODYvYW1kNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCSogcmVnZm9y bWF0cy9pMzg2L2kzODYtYXZ4LWxpbnV4LmRhdDogTGlrZXdpc2UuCi0rCSogcmVnZm9ybWF0cy9p Mzg2L2kzODYtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMy0wMiAgSC5KLiBMdSAgPGhv bmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgtdGRlcC5oIChYU0FWRV9YQ1Iw X09GRlNFVCk6IFJlbmFtZWQgdG8gLi4uCi0rCShJMzg2X0xJTlVYX1hTQVZFX1hDUjBfT0ZGU0VU KTogVGhpcy4KLSsJKiBhbWQ2NC1saW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2luaXRfYWJpKTog VXBkYXRlZC4KLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9jb3JlX3JlYWRfeGNy MCk6IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9pbml0X2FiaSk6IExpa2V3aXNlLgotKwotKzIw MTAtMDMtMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1s aW51eC10ZGVwLmMgKGFtZDY0X2xpbnV4X2luaXRfYWJpKTogU2V0IHhzYXZlX3hjcjBfb2Zmc2V0 LgotKwkqIGkzODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2luaXRfYWJpKTogTGlrZXdpc2Uu Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogU2V0IHhzYXZlX3hjcjBf b2Zmc2V0IHRvIC0xLgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X2NvbGxlY3RfeHNhdmUpOiBV cGRhdGVkLgotKwotKwkqIGkzODctdGRlcC5oIChYU0FWRV9YQ1IwX09GRlNFVCk6IE1vdmVkIHRv IC4uLgotKwkqIGkzODYtbGludXgtdGRlcC5oIChYU0FWRV9YQ1IwX09GRlNFVCk6IEhlcmUuCi0r Ci0rMjAxMC0wMy0wMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGZl YXR1cmVzL2kzODYvMzJiaXQtYXZ4LnhtbDogRGVmaW5lIGkzODZfbXhjc3IuCi0rCSogZmVhdHVy ZXMvaTM4Ni82NGJpdC1hdngueG1sOiBMaWtld2lzZS4KLSsKLSsJKiBmZWF0dXJlcy9pMzg2L2Ft ZDY0LWF2eC1saW51eC5jOiBSZWdlbmVyYXRlZC4KLSsJKiBmZWF0dXJlcy9pMzg2L2FtZDY0LWF2 eC5jOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LWxpbnV4LmM6IExpa2V3 aXNlLgotKwkqIGZlYXR1cmVzL2kzODYvaTM4Ni1hdnguYzogTGlrZXdpc2UuCi0rCi0rMjAxMC0w Mi0yNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5j IChpMzg2X3htbV9yZWdudW1fcCk6IE9wdGltaXplZC4KLSsJKGkzODZfdmVjdG9yX3JlZ251bV9w KTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0yNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlv cl9yZWdpc3RlcnMpOiBQYXNzCi0rCTAgdG8gYW1kNjRfY29sbGVjdF94c2F2ZS4KLSsKLSsJKiBh bWQ2NC10ZGVwLmMgKGFtZDY0X2NvbGxlY3RfeHN0YXRlcmVnc2V0KTogUGFzcyAxIHRvCi0rCWFt ZDY0X2NvbGxlY3RfeHNhdmUuCi0rCShhbWQ2NF9jb2xsZWN0X3hzYXZlKTogQWRkIGFuIGludGVn ZXIgYXJndW1lbnQgYW5kIHBhc3MgaXQgdG8KLSsJaTM4N19jb2xsZWN0X3hzYXZlLgotKwotKwkq IGFtZDY0LXRkZXAuaCAoYW1kNjRfY29sbGVjdF94c2F2ZSk6IEFkZCBhbiBpbnRlZ2VyIGFyZ3Vt ZW50LgotKwkqIGkzODctdGRlcC5oIChpMzg3X2NvbGxlY3RfeHNhdmUpOiBMaWtld2lzZS4KLSsK LSsJKiBpMzg2LWxpbnV4LW5hdC5jIChzdG9yZV94c3RhdGVyZWdzKTogUGFzcyAxIHRvCi0rCWkz ODdfY29sbGVjdF94c2F2ZS4KLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9jb2xsZWN0X3hzdGF0ZXJl Z3NldCk6IExpa2V3aXNlLgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X2NvbGxlY3RfeHNhdmUp OiBBZGQgYW4gaW50ZWdlciBhcmd1bWVudAotKwl0byBpbmRpY2F0ZSBnY29yZS4gIFVwZGF0ZSB0 aGUgZmlyc3QgOCBieXRlcyBvZiB0aGUKLSsJc3dfdXNhYmxlX2J5dGVzWzQ2NC4uNDY3XSBhbmQg YHhzdGF0ZV9idicgd2l0aCBYQ1IwIGZvciBnY29yZS4KLSsKLSsyMDEwLTAyLTI0ICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfY29sbGVj dF94c2F2ZSk6IEZpeCBtb3JlIHR5cG9zLgotKwotKzIwMTAtMDItMjQgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19jb2xsZWN0X3hzYXZl KTogRml4IGEgdHlwby4KLSsKLSsyMDEwLTAyLTI0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMgKGFtZDY0X2xpbnV4X3JlYWRfZGVzY3Jp cHRpb24pOiBGaXggYSB0eXBvLgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3JlZ2lzdGVyX3Jl Z2dyb3VwX3ApOiBSZXR1cm4gMCBmb3IgcHNldWRvCi0rCVhNTSByZWdpc3RlcnMgaWYgZ3JvdXAg aXNuJ3QgU1NFLgotKwotKzIwMTAtMDItMjQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNv bT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzogSW5jbHVkZSAicmVnc2V0LmgiLgotKwkoYW1k NjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFNldCAucmVnLXhzdGF0ZSBzZWN0aW9uIHNpemUg aWYKLSsJaXQgaXMgc3VwcG9ydGVkLgotKwkoX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTog Q2FsbCBpMzg2X3hzdGF0ZV9pbml0LgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYzogSW5jbHVk ZSAicmVnc2V0LmgiIGJlZm9yZQotKwkiYW1kNjQtbGludXgtdGRlcC5oIi4KLSsJKGFtZDY0X2xp bnV4X3JlZ3NldF9zZWN0aW9ucyk6IE1ha2UgaXQgZ2xvYmFsLgotKwkoX2luaXRpYWxpemVfYW1k NjRfbGludXhfdGRlcCk6IERvbid0IGNhbGwgaTM4Nl94c3RhdGVfaW5pdC4KLSsKLSsJKiBhbWQ2 NC1saW51eC10ZGVwLmggKGFtZDY0X2xpbnV4X3JlZ3NldF9zZWN0aW9ucyk6IE5ldy4KLSsKLSsJ KiBjb25maWcvaTM4Ni9ubS1saW51eC14c3RhdGUuaCAoRklMTF9YU1RBVEVSRUdTRVQpOiBSZW1v dmVkLgotKwotKwkqIGkzODYtbGludXgtbmF0LmM6IEluY2x1ZGUgInJlZ3NldC5oIi4KLSsJKGkz ODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFNldCAucmVnLXhzdGF0ZSBzZWN0aW9uIHNpemUg aWYKLSsJaXQgaXMgc3VwcG9ydGVkLgotKwkoX2luaXRpYWxpemVfaTM4Nl9saW51eF9uYXQpOiBD YWxsIGkzODZfeHN0YXRlX2luaXQuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmM6IEluY2x1ZGUg InJlZ3NldC5oIiBiZWZvcmUgImluZmVyaW9yLmgiLgotKwkoaTM4Nl9saW51eF9yZWdzZXRfc2Vj dGlvbnMpOiBNYWtlIGl0IGdsb2JhbC4KLSsJKF9pbml0aWFsaXplX2kzODZfbGludXhfdGRlcCk6 IERvbid0IGNhbGwgaTM4Nl94c3RhdGVfaW5pdC4KLSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAuaCAo aTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMpOiBOZXcuCi0rCi0rMjAxMC0wMi0yMiAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3ZhbGlk YXRlX3RkZXNjX3ApOiBVc2UgbnVtX3ZlY3Rvcl9yZWdzIGluc3RlYWQKLSsJb2YgbnVtX3htbV9y ZWdzIHRvIGNoZWNrIHZlY3RvciByZWdpc3RlcnMuCi0rCi0rMjAxMC0wMi0yMCAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGZlYXR1cmVzL2kzODYvTWFrZWZpbGU6IE5l dy4KLSsKLSsyMDEwLTAyLTE5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X3hzYXZlKTogUmVtb3ZlIG9uZSByZWdjYWNoZV9y YXdfc3VwcGx5Ci0rCWZvciB4ODcuCi0rCi0rMjAxMC0wMi0xOSAgSC5KLiBMdSAgPGhvbmdqaXUu bHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChoYXZlX3B0cmFjZV9nZXRy ZWdzZXQpOiBNYWtlIGl0IHN0YXRpYwotKwlhbmQgaW5pdGlhbGl6ZWQgdG8gLTEuCi0rCShhbWQ2 NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBFcnJvciBpZiBQVFJBQ0VfR0VUUkVH U0VUCi0rCWZhaWxzLgotKwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTog TGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogU2V0IGhhdmVfcHRy YWNlX2dldHJlZ3NldC4KLSsJQ2hlY2sgdGhlIG5hdGl2ZSBYQ1IwIG9ubHkgaWYgUFRSQUNFX0dF VFJFR1NFVCBpcyBhdmFpbGFibGUuCi0rCShfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF9uYXQpOiBE b24ndCBzZXQgaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0LgotKwotKwkqIGkzODYtbGludXgtbmF0LmMg KGhhdmVfcHRyYWNlX2dldHJlZ3NldCk6IE1ha2UgaXQgc3RhdGljCi0rCWFuZCBpbml0aWFsaXpl ZCB0byAtMS4KLSsJKGZldGNoX3hzdGF0ZXJlZ3MpOiBFcnJvciBpZiBQVFJBQ0VfR0VUUkVHU0VU IGZhaWxzLgotKwkoc3RvcmVfeHN0YXRlcmVncyk6IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9y ZWFkX2Rlc2NyaXB0aW9uKTogU2V0IGhhdmVfcHRyYWNlX2dldHJlZ3NldC4KLSsJQ2hlY2sgdGhl IG5hdGl2ZSBYQ1IwIG9ubHkgaWYgUFRSQUNFX0dFVFJFR1NFVCBpcyBhdmFpbGFibGUuCi0rCShf aW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCk6IERvbid0IHNldCBoYXZlX3B0cmFjZV9nZXRyZWdz ZXQuCi0rCi0rMjAxMC0wMi0xOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwot KwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5oIChYU1RBVEVfU1NFX01BU0spOiBBZGQgYml0X1hTVEFU RV9YODcuCi0rCShYU1RBVEVfTUFYX01BU0spOiBEZWZpbmVkIHdpdGggWFNUQVRFX0FWWF9NQVNL IG9ubHkuCi0rCShYU1RBVEVfU1NFX01BU0tfU1RSSU5HKTogVXBkYXRlZC4KLSsJKFhTVEFURV9B VlhfTUFTS19TVFJJTkcpOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBw bHlfeHNhdmUpOiBBbHNvIGNoZWNrIHg4NyByZWdpc3RlcnMuCi0rCShpMzg3X2NvbGxlY3RfeHNh dmUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTE5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogVXNlIG51bV92 ZWN0b3JfcmVncyBpbnN0ZWFkCi0rCW9mIG51bV94bW1fcmVncyB0byBjaGVjayB2ZWN0b3IgcmVn aXN0ZXJzLgotKwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2luaXRfYWJpKTogU2V0IG51bV94bW1fcmVncyBi YXNlZCBvbgotKwl2ZWN0b3IgZmVhdHVyZS4KLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNo X2luaXQpOiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2LWRhcndpbi10ZGVwLmMgKGkzODZfZGFyd2lu X2luaXRfYWJpKTogUmVwbGFjZSBudW1feG1tX3JlZ3MKLSsJd2l0aCBudW1fdmVjdG9yX3JlZ3Mu Ci0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGFtZDY0LXRkZXAuYyAoYW1kNjRfaW5pdF9hYmkpOiBTZXQgbnVtX3ZlY3Rvcl9yZWdzIHRvIDE2 LgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IEFkZCBudW1feG1tX3Jl Z3MgdG8KLSsJc2V0X2dkYmFyY2hfbnVtX3BzZXVkb19yZWdzLgotKwotKzIwMTAtMDItMTggIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAo YW1kNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IENoZWNrIHRoZQotKwluYXRpdmUgWENSMC4K LSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmM6IEluY2x1ZGUgImZlYXR1cmVzL2kzODYvYW1kNjQt YXZ4LWxpbnV4LmMiLgotKwkoYW1kNjRfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogQ2hl Y2sgWENSMCBmcm9tIGNvcmUgZHVtcC4KLSsJKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X3RkZXAp OiBDYWxsCi0rCWluaXRpYWxpemVfdGRlc2NfYW1kNjRfYXZ4X2xpbnV4LgotKwotKwkqIGFtZDY0 LXRkZXAuYzogSW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdnguYyIuCi0rCShBTUQ2NF9O VU1fUkVHUyk6IFVzZSBhbWQ2NF9zc2VfcmVnaXN0ZXJfbmFtZXMuCi0rCShhbWQ2NF94bW1fbmFt ZXMpOiBNYWtlIGl0IHN0YXRpYy4KLSsJKGFtZDY0X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogSGFu ZGxlIFhNTSBwc2V1ZCByZWdpc3RlcnMuCi0rCShhbWQ2NF9pbml0X2FiaSk6IFNldCByZWdpc3Rl cl9uYW1lcyBiYXNlZCBvbiB0YXJnZXQgZGVzY3JpcHRpb24uCi0rCShfaW5pdGlhbGl6ZV9hbWQ2 NF90ZGVwKTogQ2FsbCBpbml0aWFsaXplX3RkZXNjX2FtZDY0X2F2eC4KLSsKLSsJKiBpMzg2LWxp bnV4LW5hdC5jIChpMzg2X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBDaGVjayB0aGUKLSsJbmF0 aXZlIFhDUjAuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFk X3hjcjApOiBOZXcuCi0rCShpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IFVzZSBp dC4gIFJlbW92ZSBCRkQ2NC4KLSsJKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IFJlbW92 ZWQuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXApOiBDYWxsCi0rCWluaXRpYWxpemVf dGRlc2NfaTM4Nl9hdnhfbGludXguCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfeG1tX3JlZ251 bV9wKTogTWFrZSBpdCBnbG9iYWwuCi0rCShpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lKTogUmVt b3ZlIEJGRDY0LgotKwkoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCk6IExpa2V3aXNlLgotKwko aTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSsJKGkzODZfZ2RiYXJjaF9p bml0KTogU2V0IHJlZ2lzdGVyX25hbWVzIGJhc2VkIG9uIHRhcmdldAotKwlkZXNjcmlwdGlvbi4K LSsKLSsyMDEwLTAyLTEzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog aTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogUHJv cGVybHkKLSsJY2hlY2sgZXh0ZW5kZWQgc3RhdGUgc2l6ZS4KLSsJKGkzODZfbGludXhfcmVhZF9k ZXNjcmlwdGlvbik6IFByb3Blcmx5IGNoZWNrIHRoZSBuYXRpdmUgWENSMC4KLSsKLSsyMDEwLTAy LTEzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29tbW9uL2kzODYt eHN0YXRlLmggKFhTVEFURV9TU0VfTUFTSyk6IERlZmluZWQgd2l0aAotKwliaXRfWFNUQVRFX1NT RS4KLSsJKFhTVEFURV9BVlhfTUFTSyk6IERlZmluZWQgd2l0aCBYU1RBVEVfU1NFX01BU0sgYW5k IGJpdF9YU1RBVEVfQVZYLgotKwkoWFNUQVRFX01BWF9NQVNLKTogRGVmaW5lZCB3aXRoIFhTVEFU RV9BVlhfTUFTSyBhbmQgYml0X1hTVEFURV9YODcuCi0rCShYU1RBVEVfU1NFX01BU0tfU1RSSU5H KTogVXBkYXRlZC4KLSsJKFhTVEFURV9BVlhfTUFTS19TVFJJTkcpOiBMaWtld2lzZS4KLSsKLSsJ KiAzODYtbGludXgtdGRlcC5jIChpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IFVz ZQotKwlYU1RBVEVfWFhYX01BU0suCi0rCShpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlv bik6IExpa2V3aXNlLgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X3JlZ2lzdGVyX3JlZ2dyb3Vw X3ApOiBDaGVjayB4Y3IwIGluc3RlYWQKLSsJb2YgdmVjdG9yX3VuaXQuCi0rCShpMzg2X2dkYmFy Y2hfaW5pdCk6IFNldCB4Y3IwIGluc3RlYWQgb2YgdmVjdG9yX3VuaXQuCi0rCi0rCSogaTM4Ni10 ZGVwLmggKHg4Nl92ZWN0b3JfdW5pdCk6IFJlbW92ZWQuCi0rCShnZGJhcmNoX3RkZXApOiBSZW1v dmUgdmVjdG9yX3VuaXQuICBBZGQgeGNyMC4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBw bHlfZnhzYXZlKTogQ2hlY2sgeGNyMCBpbnN0ZWFkIG9mCi0rCXZlY3Rvcl91bml0LgotKwkoaTM4 N19zdXBwbHlfeHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3 aXNlLgotKwotKzIwMTAtMDItMTEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBEb24ndCBzZXQgeGNyMCBvbiB4 ODYgaG9zdC4KLSsJKF9pbml0aWFsaXplX2kzODZfdGRlcCk6IERvbid0IGNhbGwgaTM4Nl94c3Rh dGVfaW5pdCBvbiB4ODYgaG9zdC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoZ2RiYXJjaF90ZGVwKTog UmVtb3ZlIHhjcjAuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X3hzYXZlKTogUmVw bGFjZSB0ZGVwLT54Y3IwIHdpdGgKLSsJaTM4Nl94c3RhdGUueGNyMC4KLSsJKGkzODdfY29sbGVj dF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMTEgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9jb3JlX3Jl YWRfZGVzY3JpcHRpb24pOiBEb24ndAotKwlzZXQgeGNyMCBoZXJlLgotKwotKzIwMTAtMDItMTEg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC10ZGVw LmMgKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X3RkZXApOiBSZS1pbmRlbnQuCi0rCi0rCSogaTM4 Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IERvbid0IHNldAot Kwl4Y3IwIGhlcmUuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXApOiBSZS1pbmRlbnQu Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogU2V0IHhjcjAgb24geDg2 IGhvc3QuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X3RkZXApOiBDYWxsIGkzODZfeHN0YXRlX2luaXQg b24geDg2IGhvc3QuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRlcCk6IE1lbnRpb24g eGNyMCBpcyB1c2VkIG9ubHkgZm9yCi0rCW5hdGl2ZSBkZWJ1Zy4KLSsKLSsyMDEwLTAyLTExICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMg KGFtZDY0X2xpbnV4X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyk6IENhc3QKLSsJTlRfWDg2X1hT VEFURSB0byB1bnNpZ25lZCBpbnQuCi0rCShhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdp c3RlcnMpOiBMaWtld2lzZS4KLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChmZXRjaF94c3RhdGVyZWdz KTogTGlrZXdpc2UuCi0rCShzdG9yZV94c3RhdGVyZWdzKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0w Mi0xMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4 LW5hdC5jOiBJbmNsdWRlICJlbGYvY29tbW9uLmgiIGFuZCA8c3lzL3Vpby5oPi4KLSsJKGFtZDY0 X2xpbnV4X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyk6IFVzZSBpb3ZlYy4KLSsJKGFtZDY0X2xp bnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwotKwkqIGFtZDY0LWxp bnV4LXRkZXAuYyAoX2luaXRpYWxpemVfYW1kNjRfbGludXhfdGRlcCk6IERvbid0Ci0rCWNoZWNr IGkzODZfeHN0YXRlLnNpemUuCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKF9pbml0aWFsaXplX2kz ODZfbGludXhfdGRlcCk6IExpa2V3aXNlLgotKwotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4LXhz dGF0ZS5oOiBEb24ndCBpbmNsdWRlICJlbGYvY29tbW9uLmgiLgotKwkoUFRSQUNFX1JFR1NFVF9O VF9TSElGVCk6IFJlbW92ZWQuCi0rCShQVFJBQ0VfUkVHU0VUX01BWF9TSVpFKTogTGlrZXdpc2Uu Ci0rCShQVFJBQ0VfUkVHU0VUX1hTVEFURV9BRERSKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni1s aW51eC1uYXQuYzogSW5jbHVkZSAiZWxmL2NvbW1vbi5oIiBhbmQgPHN5cy91aW8uaD4uCi0rCShm ZXRjaF94c3RhdGVyZWdzKTogVXNlIGlvdmVjLgotKwkoc3RvcmVfeHN0YXRlcmVncyk6IExpa2V3 aXNlLgotKwotKzIwMTAtMDItMDkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCk6IFByb3Blcmx5IGNv bnZlcnQKLSsJWE1NIHBzZXVkbyByZWdpc3RlciB0byB2ZWN0b3IgcmVnaXN0ZXIuCi0rCShpMzg2 X3BzZXVkb19yZWdpc3Rlcl93cml0ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDkgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBmZWF0dXJlcy9pMzg2LzMyYml0LWF2 eC54bWw6IEZpeCB0eXBvcy4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWF2eC54bWw6IExpa2V3 aXNlLgotKwotKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LWxpbnV4LmM6IFJlZ2VuZXJhdGVk LgotKwkqIGZlYXR1cmVzL2kzODYvYW1kNjQtYXZ4LmM6IExpa2V3aXNlLgotKwkqIGZlYXR1cmVz L2kzODYvaTM4Ni1hdngtbGludXguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2 LWF2eC5jOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogQ291bnQg WE1NIHBzZXVkbyByZWdpc3RlcnMuCi0rCi0rMjAxMC0wMi0wOSAgSC5KLiBMdSAgPGhvbmdqaXUu bHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctdGRlcC5oIChJMzg3X1hNTTBfUkVHTlVNKTogUmVu YW1lZCB0byAuLi4KLSsJKEkzODdfVkVDVE9SMF9SRUdOVU0pOiBUaGlzLgotKwkoSTM4N19NWENT Ul9SRUdOVU0pOiBVcGRhdGVkLgotKwotKwkqIGkzODYtbnRvLXRkZXAuYyAoaTM4Nm50b19yZWdp c3Rlcl9hcmVhKTogUmVwbGFjZQotKwlJMzg3X1hNTTBfUkVHTlVNIHdpdGggSTM4N19WRUNUT1Iw X1JFR05VTS4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9zc2VfcmVnbnVtX3ApOiBSZW5hbWVk IHRvIC4uLgotKwkoaTM4Nl92ZWN0b3JfcmVnbnVtX3ApOiBUaGlzLiAgUmVwbGFjZSBJMzg3X1hN TTBfUkVHTlVNCi0rCXdpdGggSTM4N19WRUNUT1IwX1JFR05VTS4KLSsJKGkzODZfZnBjX3JlZ251 bV9wKTogUmVwbGFjZSBJMzg3X1hNTTBfUkVHTlVNIHdpdGgKLSsJSTM4N19WRUNUT1IwX1JFR05V TS4KLSsJKGkzODZfcmVnaXN0ZXJfcmVnZ3JvdXBfcCk6IFVwZGF0ZWQuICBIYW5kbGUgWE1NIHBz ZXVkbwotKwlyZWdpc3RlcnMuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODZfZnBjX3JlZ251bV9w KTogUmVwbGFjZSBJMzg3X1hNTTBfUkVHTlVNCi0rCXdpdGggSTM4N19WRUNUT1IwX1JFR05VTS4K LSsJKGkzODdfc3VwcGx5X2Z4c2F2ZSk6IExpa2V3aXNlLgotKwkoaTM4N19jb2xsZWN0X2Z4c2F2 ZSk6IExpa2V3aXNlLgotKwkoWFNBVkVfU1NFX0FERFIpOiBMaWtld2lzZS4KLSsJKFhTQVZFX0FW WEhfQUREUik6IExpa2V3aXNlLgotKwkoaTM4N19zdXBwbHlfeHNhdmUpOiBMaWtld2lzZS4KLSsJ KGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDkgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9wc2V1ZG9f cmVnaXN0ZXJfbmFtZSk6IEhhbmRsZSBYTU0gcHNldWRvCi0rCXJlZ2lzdGVycy4KLSsJKGkzODZf cHNldWRvX3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVy X3JlYWQpOiBMaWtld2lzZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdp c2UuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IExpa2V3aXNlLgotKwkoaTM4Nl94bW1fdHlwZSk6 IE5ldy4KLSsKLSsJKiAzODYtdGRlcC5oIChnZGJhcmNoX3RkZXApOiBBZGQgbnVtX3htbV9yZWdz LCB4bW0wX3JlZ251bQotKwlhbmQgaTM4Nl94bW1fdHlwZS4KLSsKLSsyMDEwLTAyLTA5ICBILkou IEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF94 bW1fbmFtZXMpOiBOZXcuCi0rCShhbWQ2NF9udW1fcHNldWRvX3JlZ3MpOiBVcGRhdGVkLgotKwot KwkqIGFtZDY0LXRkZXAuaCAoYW1kNjRfeG1tX25hbWVzKTogTmV3LgotKwotKwkqIGkzODYtdGRl cC5jIChpMzg2X3htbV9uYW1lcyk6IE5ldy4KLSsJKGkzODZfeG1tX3JlZ251bV9wKTogTGlrZXdp c2UuCi0rCShpMzg2X251bV9wc2V1ZG9fcmVncyk6IFVwZGF0ZWQuCi0rCi0rMjAxMC0wMi0wOSAg SC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5oIChnZGJh cmNoX3RkZXApOiBSZW5hbWUgbnVtX3htbV9yZWdzIHRvCi0rCW51bV92ZWN0b3JfcmVncy4KLSsK LSsJKiBpMzg3LXRkZXAuaCAoSTM4N19OVU1fWE1NX1JFR1MpOiBSZW1vdmVkLgotKwkoSTM4N19O VU1fVkVDVE9SX1JFR1MpOiBOZXcuCi0rCShJMzg3X01YQ1NSX1JFR05VTSk6IFVwZGF0ZWQuCi0r Ci0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9pbml0X2FiaSk6IFVwZGF0ZWQuCi0rCSogaTM4Ni10 ZGVwLmMgKGkzODZfc3NlX3JlZ251bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X214Y3NyX3JlZ251 bV9wKTogTGlrZXdpc2UuCi0rCShpMzg2X2dvMzJfaW5pdF9hYmkpOiBMaWtld2lzZS4KLSsJKGkz ODZfZ2RiYXJjaF9pbml0KTogTGlrZXdpc2UuCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5 X2Z4c2F2ZSk6IExpa2V3aXNlLgotKwkoaTM4N19jb2xsZWN0X2Z4c2F2ZSk6IExpa2V3aXNlLgot KwkoaTM4N19zdXBwbHlfeHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6 IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDkgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNv bT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzogUmVwbGFjZSBQVFJBQ0VfR0VUWFNUQVRFUkVH UyB3aXRoCi0rCVBUUkFDRV9HRVRSRUdTRVQgaW4gY29tbWVudHMuCi0rCShoYXZlX3B0cmFjZV9n ZXR4c3RhdGVyZWdzKTogUmVuYW1lZCB0byAuLi4KLSsJKGhhdmVfcHRyYWNlX2dldHJlZ3NldCk6 IFRoaXMuCi0rCShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBVcGRhdGVk IHRvIHVzZQotKwlQVFJBQ0VfR0VUUkVHU0VULgotKwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJp b3JfcmVnaXN0ZXJzKTogVXBkYXRlZCB0byB1c2UKLSsJUFRSQUNFX0dFVFJFR1NFVCBhbmQgUFRS QUNFX1NFVFJFR1NFVC4KLSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmMgKF9pbml0aWFsaXplX2Ft ZDY0X2xpbnV4X3RkZXApOiBBc3NlcnQKLSsJdGhlIFhTQVZFIGV4dGVuZGVkIHN0YXRlIHNpemUu Ci0rCi0rCSogaTM4Ni1saW51eC1uYXQuYzogUmVwbGFjZSBQVFJBQ0VfR0VUWFNUQVRFUkVHUyB3 aXRoCi0rCVBUUkFDRV9HRVRSRUdTRVQgaW4gY29tbWVudHMuCi0rCShoYXZlX3B0cmFjZV9nZXR4 c3RhdGVyZWdzKTogUmVuYW1lZCB0byAuLi4KLSsJKGhhdmVfcHRyYWNlX2dldHJlZ3NldCk6IFRo aXMuCi0rCShmZXRjaF94c3RhdGVyZWdzKTogVXBkYXRlZCB0byB1c2UgUFRSQUNFX0dFVFJFR1NF VC4KLSsJKHN0b3JlX3hzdGF0ZXJlZ3MpOiBVcGRhdGVkIHRvIHVzZSBQVFJBQ0VfR0VUUkVHU0VU IGFuZAotKwlQVFJBQ0VfU0VUUkVHU0VULgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jIChfaW5p dGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXApOiBBc3NlcnQKLSsJdGhlIFhTQVZFIGV4dGVuZGVkIHN0 YXRlIHNpemUuCi0rCi0rCSogY29uZmlnL2kzODYvbm0tbGludXgteHN0YXRlLmg6IEluY2x1ZGUg ImVsZi9jb21tb24uaCIuCi0rCShQVFJBQ0VfR0VUWFNUQVRFUkVHUyk6IFJlbW92ZWQuCi0rCShQ VFJBQ0VfU0VUWFNUQVRFUkVHUyk6IExpa2V3aXNlLgotKwkoUFRSQUNFX0dFVFJFR1NFVCk6IE5l dy4KLSsJKFBUUkFDRV9TRVRSRUdTRVQpOiBMaWtld2lzZS4KLSsJKFBUUkFDRV9SRUdTRVRfTlRf U0hJRlQpOiBMaWtld2lzZS4KLSsJKFBUUkFDRV9SRUdTRVRfTUFYX1NJWkUpOiBMaWtld2lzZS4K LSsJKFBUUkFDRV9SRUdTRVRfWFNUQVRFX0FERFIpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTA4 ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVw LmM6IFJlcGxhY2UgeDg2LTY0L3g4Nl82NCB3aXRoIGFtZDY0LgotKwkqIGkzODYtdGRlcC5jOiBM aWtld2lzZS4KLSsKLSsJKiBmZWF0dXJlcy9NYWtlZmlsZTogUmVwbGFjZSB4ODYtNjQgd2l0aCBh bWQ2NC4KLSsJKiBmZWF0dXJlcy9pMzg2Lyo6IFJlbmFtZSB4ODYtNjQqIHRvIGFtZDY0Ki4KLSsK LSsJKiByZWdmb3JtYXRzL2kzODYvKjogUmVuYW1lIHg4Ni02NCogdG8gYW1kNjQqLgotKwotKzIw MTAtMDItMDcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb21tb24v aTM4Ni14c3RhdGUuYzogRG9uJ3QgaW5jbHVkZSAiY29uZmlnLmgiIGlmIFhTVEFURV9NQUlOCi0r CWlzIGRlZmluZWQuCi0rCShtYWluKTogRml4IHR5cG8uCi0rCi0rMjAxMC0wMi0wNiAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5jICht YWluKTogTmV3LiAgRGVmaW5lZCBvbmx5IGlmIFhTVEFURV9NQUlOCi0rCWlzIGRlZmluZWQuCi0r Ci0rMjAxMC0wMi0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkz ODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IFNldCB2ZWN0b3JfdW5pdC4KLSsKLSsyMDEw LTAyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29uZmlnL2kz ODYvbm0tbGludXgteHN0YXRlLmg6IERvbid0IGluY2x1ZGUgPHN5cy9wdHJhY2UuaD4uCi0rCi0r CSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IERvbid0 IHVzZQotKwlwdHJhY2UuCi0rCi0rMjAxMC0wMi0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9mZXRjaF9pbmZl cmlvcl9yZWdpc3RlcnMpOiBQYXNzCi0rCWkzODZfeHN0YXRlLnNpemUgdG8gWFNUQVRFIHB0cmFj ZS4KLSsJKGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgot KwkqIGkzODYtbGludXgtbmF0LmMgKGZldGNoX3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsJKHN0 b3JlX3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMgKFBUUkFDRV9HRVRY U1RBVEVSRUdTKTogRG9uJ3QgZGVmaW5lLgotKwkoUFRSQUNFX1NFVFhTVEFURVJFR1MpOiBMaWtl d2lzZS4KLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChQVFJBQ0VfR0VUWFNUQVRFUkVHUyk6Ci0rCShQ VFJBQ0VfU0VUWFNUQVRFUkVHUyk6IExpa2V3aXNlLgotKwotKwkqIGNvbmZpZy9pMzg2L25tLWxp bnV4Lmg6IEluY2x1ZGUgImNvbmZpZy9pMzg2L25tLWxpbnV4LXhzdGF0ZS5oIi4KLSsJKiBjb25m aWcvaTM4Ni9ubS1saW51eDY0Lmg6IExpa2V3aXNlLgotKwotKwkqIDM4Ni1saW51eC10ZGVwLmMg KGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlvbik6IERlZmluZSBvbmx5IGlmCi0rCUZJTExfWFNU QVRFUkVHU0VUIGlzIGRlZmluZWQuICBVc2UgcHRyYWNlIHRvIGdldCB4Y3IwIGZyb20KLSsJa2Vy bmVsLgotKwotKzIwMTAtMDItMDUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBhbWQ2NC1saW51eC10ZGVwLmMgKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X3RkZXApOiBV cGRhdGUKLSsJY29tbWVudHMuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmM6IEluY2x1ZGUgZmVh dHVyZXMvaTM4Ni9pMzg2LWF2eC1saW51eC5jCi0rCWFuZCBmZWF0dXJlcy9pMzg2L3g4Ni02NC1h dngtbGludXguYy4KLSsJKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogSGFuZGxl IEFWWC4KLSsJKF9pbml0aWFsaXplX2kzODZfbGludXhfdGRlcCk6IENhbGwgaW5pdGlhbGl6ZV90 ZGVzY19pMzg2X2F2eF9saW51eAotKwlhbmQgaW5pdGlhbGl6ZV90ZGVzY194ODZfNjRfYXZ4X2xp bnV4LgotKwotKwkqIGkzODYtdGRlcC5jOiBJbmNsdWRlIGZlYXR1cmVzL2kzODYvaTM4Ni1hdngu YyBhbmQKLSsJZmVhdHVyZXMvaTM4Ni94ODYtNjQtYXZ4LmMuCi0rCShfaW5pdGlhbGl6ZV9pMzg2 X3RkZXApOiBDYWxsIGluaXRpYWxpemVfdGRlc2NfaTM4Nl9hdnggYW5kCi0rCWluaXRpYWxpemVf dGRlc2NfeDg2XzY0X2F2eC4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogVHJ5IG9y Zy5nbnUuZ2RiLmkzODYuYXZ4LgotKwotKzIwMTAtMDItMDUgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBmZWF0dXJlcy9pMzg2LzMyYml0LWF2eC54bWw6IE5ldy4KLSsJ KiBmZWF0dXJlcy9pMzg2LzY0Yml0LWF2eC54bWw6IExpa2V3aXNlLgotKwkqIGZlYXR1cmVzL2kz ODYvaTM4Ni1hdngtbGludXguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2 eC1saW51eC54bWw6IExpa2V3aXNlLgotKwkqIGZlYXR1cmVzL2kzODYvaTM4Ni1hdnguYzogTGlr ZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC54bWw6IExpa2V3aXNlLgotKwkqIGZl YXR1cmVzL2kzODYveDg2LTY0LWF2eC1saW51eC5jOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9p Mzg2L3g4Ni02NC1hdngtbGludXgueG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L3g4 Ni02NC1hdnguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni94ODYtNjQtYXZ4LnhtbDog TGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvTWFrZWZpbGUgKFdISUNIKTogQWRkIGkzODYvaTM4 Ni1hdngsCi0rCWkzODYvaTM4Ni1hdngtbGludXgsIGkzODYveDg2LTY0LWF2eCBhbmQgaTM4Ni94 ODYtNjQtYXZ4LWxpbnV4LgotKwkoaTM4Ni9pMzg2LWF2eC1leHBlZGl0ZSk6IE5ldy4KLSsJKGkz ODYvaTM4Ni1hdngtbGludXgtZXhwZWRpdGUpOiBMaWtld2lzZS4KLSsJKGkzODYveDg2LTY0LWF2 eC1leHBlZGl0ZSk6TGlrZXdpc2UuCi0rCShpMzg2L3g4Ni02NC1hdngtbGludXgtZXhwZWRpdGUp OiBMaWtld2lzZS4KLSsJKCQob3V0ZGlyKS9pMzg2L2kzODYtYXZ4LmRhdCk6IE5ldyBkZXBlbmRl bmN5LgotKwkoJChvdXRkaXIpL2kzODYvaTM4Ni1hdngtbGludXguZGF0KTogTGlrZXdpc2UuCi0r CSgkKG91dGRpcikvaTM4Ni94ODYtYXZ4LTY0LmRhdCk6IExpa2V3aXNlLgotKwkoJChvdXRkaXIp L2kzODYveDg2LTY0LWF2eC1saW51eC5kYXQpOiBMaWtld2lzZS4KLSsKLSsJKiByZWdmb3JtYXRz L3JlZy1pMzg2LWF2eC1saW51eC5kYXQ6IE1vdmVkIHRvIC4uCi0rCSogcmVnZm9ybWF0cy9pMzg2 L2kzODYtYXZ4LWxpbnV4LmRhdDogSGVyZS4KLSsKLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2 eC5kYXQ6IE1vdmVkIHRvIC4uCi0rCSogcmVnZm9ybWF0cy9pMzg2L2kzODYtYXZ4LmRhdDogSGVy ZS4KLSsKLSsJKiByZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LWxpbnV4LmRhdDogTW92ZWQgdG8g Li4uCi0rCSogcmVnZm9ybWF0cy9pMzg2L3g4Ni02NC1hdngtbGludXguZGF0OiBIZXJlLgotKwot KwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdnguZGF0OiBNb3ZlZCB0byAuLi4KLSsJKiByZWdm b3JtYXRzL2kzODYveDg2LTY0LWF2eC5kYXQ6IEhlcmUuCi0rCi0rMjAxMC0wMi0wNSAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfc3Nl X3JlZ2lzdGVyX25hbWVzKTogTWFrZSBpdCBnbG9iYWwuCi0rCShhbWQ2NF9hdnhfcmVnaXN0ZXJf bmFtZXMpOiBMaWtld2lzZS4KLSsJKGFtZDY0X2luaXRfYWJpKTogRG9uJ3QgY2FsbCBpMzg2X2dk YmFyY2hfdmVjdG9yX3VuaXRfaW5pdC4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNo X3ZlY3Rvcl91bml0X2luaXQpOiBSZW1vdmVkLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBEb24n dCBjYWxsIGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0LgotKwkqIGkzODYtdGRlcC5oIChp Mzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFJlbW92ZWQuCi0rCi0rMjAxMC0wMi0wNCAg SC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgtdGRlcC5j IChpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IENoZWNrCi0rCWNvcmUgc2l6ZSBm b3IgQVZYIHN1cHBvcnQuCi0rCi0rMjAxMC0wMi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X3N1cHBseV9meHNhdmUpOiBPcHRpbWl6 ZSB4c3RhdGVfYnYgPT0gMC4KLSsKLSsyMDEwLTAyLTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfc3VwcGx5X2Z4c2F2ZSk6IERvbid0 IHVzZQotKwlyZWdjYWNoZV9yYXdfc3VwcGx5X3BhcnQuCi0rCShpMzg3X3N1cHBseV94c2F2ZSk6 IExpa2V3aXNlLgotKwkoaTM4N19jb2xsZWN0X2Z4c2F2ZSk6IERvbid0IHVzZSByZWdjYWNoZV9y YXdfY29sbGVjdF9wYXJ0LgotKwkoaTM4N19jb2xsZWN0X3hzYXZlKTogTGlrZXdpc2UuCi0rCi0r CSogcmVnY2FjaGUuYyAocmVnY2FjaGVfcmF3X3N1cHBseV9wYXJ0KTogUmVtb3ZlZC4KLSsJKHJl Z2NhY2hlX3Jhd19jb2xsZWN0X3BhcnQpOiBMaWtld2lzZS4KLSsJKiByZWdjYWNoZS5oIChyZWdj YWNoZV9yYXdfc3VwcGx5X3BhcnQpOiBMaWtld2lzZS4KLSsJKHJlZ2NhY2hlX3Jhd19jb2xsZWN0 X3BhcnQpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAzICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFk X2Rlc2NyaXB0aW9uKTogVXBkYXRlCi0rCXdhcm5pbmcgbWVzc2FnZSBmb3IgeGNyMC4KLSsKLSsJ KiBpMzg3LXRkZXAuYyAoaTM4N19jb2xsZWN0X3hzYXZlKTogTW92ZSBjb21tZW50cyBvbiB4c3Rh dGVfYnYuCi0rCi0rMjAxMC0wMi0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IENoZWNr Ci0rCUZJTExfWFNUQVRFUkVHU0VUIGluc3RlYWQgb2YgYml0X1hTVEFURV9BVlguCi0rCi0rCSog Y29uZmlnL2kzODYvbm0tbGludXguaCAoRklMTF9YU1RBVEVSRUdTRVQpOiBVcGRhdGUgY29tbWVu dHMuCi0rCSogY29uZmlnL2kzODYvbm0tbGludXg2NC5oIChGSUxMX1hTVEFURVJFR1NFVCk6IExp a2V3aXNlLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBpMzg2LXRkZXAuYzogSW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIuCi0rCSogaTM4Ny10 ZGVwLmM6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0X2lu aXQpOiBDaGVjayBpZgotKwliaXRfWFNUQVRFX0FWWCBpcyBkZWZpbmVkIGJlZm9yZSB1c2luZyBp dC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogTWFrZWZpbGUuaW4gKHhzdGF0ZS1uYXQubyk6IFJlbmFtZWQgdG8gLi4uCi0rCShpMzg2LXhz dGF0ZS5vKTogVGhpcy4KLSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAuYzogSW5jbHVkZSAiaTM4Ni14 c3RhdGUuaCIgaW5zdGVhZCBvZgotKwkieHN0YXRlLW5hdC5oIi4KLSsJKiBjb25maWcvaTM4Ni9u bS1saW51eC5oOiBMaWtld2lzZS4KLSsJKiBjb25maWcvaTM4Ni9ubS1saW51eDY0Lmg6IExpa2V3 aXNlLgotKwotKwkqIGNvbW1vbi94c3RhdGUtbmF0LmM6IE1vdmVkIHRvIC4uLgotKwkqIGNvbW1v bi9pMzg2LXhzdGF0ZS5jOiBUaGlzLgotKwotKwkqIGNvbW1vbi94c3RhdGUtbmF0Lmg6IE1vdmVk IHRvIC4uLgotKwkqIGNvbW1vbi9pMzg2LXhzdGF0ZS5oOiBUaGlzLgotKwotKwkqIGNvbmZpZy9p Mzg2L2xpbnV4Lm1oIChOQVRERVBGSUxFUyk6IFJlcGxhY2UgeHN0YXRlLW5hdC5vIHdpdGgKLSsJ aTM4Ni14c3RhdGUuby4KLSsJKiBjb25maWcvaTM4Ni9saW51eDY0Lm1oIChOQVRERVBGSUxFUyk6 IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNv bT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1kNjRfbGludXhfZ3JlZ3NldDY0X3JlZ19v ZmZzZXQpOiBSZW1vdmUKLSsJeHN0YXRlX2J2IG9mZnNldC4KLSsJKGFtZDY0X2xpbnV4X2dyZWdz ZXQzMl9yZWdfb2Zmc2V0KTogTGlrZXdpc2UuCi0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5oIChB TUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0pOiBVcGRhdGVkLgotKwotKwkqIGFtZDY0LXRkZXAu YyAoYW1kNjRfc3NlX3JlZ2lzdGVyX25hbWVzKTogUmVtb3ZlIHhzdGF0ZV9idi4KLSsJKGFtZDY0 X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfcmVnaXN0ZXJfbmFtZSk6 IFJlbW92ZSBBTUQ2NF9YU1RBVEVfQlZfUkVHTlVNLgotKwkoYW1kNjRfcmVnaXN0ZXJfdHlwZSk6 IExpa2V3aXNlLgotKwotKwkqIGFtZDY0LXRkZXAuaCAoQU1ENjRfWFNUQVRFX0JWX1JFR05VTSk6 IFJlbW92ZWQuCi0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAocmVnbWFwKTogUmVtb3ZlIHhzdGF0 ZV9idi4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBSZW1v dmUgeHN0YXRlX2J2LgotKwkoaTM4Nl9hdnhfcmVnaXN0ZXJfbmFtZXMpOiBMaWtld2lzZS4KLSsJ KGkzODZfeHN0YXRlX3JlZ251bV9wKTogUmVtb3ZlZC4KLSsJKGkzODZfcmVnaXN0ZXJfbmFtZSk6 IFJlbW92ZSBJMzg3X1hTVEFURV9CVl9SRUdOVU0uCi0rCi0rCSogaTM4Ni10ZGVwLmggKEkzODZf U1NFX05VTV9SRUdTKTogUmVtb3ZlIHhzdGF0ZV9idi4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoWFNB VkVfWFNUQVRFX0JWX0FERFIpOiBVcGRhdGUgY29tbWVudHMuCi0rCi0rCSogaTM4Ny10ZGVwLmgg KEkzODdfWFNUQVRFX0JWX1JFR05VTSk6IFJlbW92ZWQuCi0rCi0rMjAxMC0wMi0wMiAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfaW5p dF9hYmkpOiBVcGRhdGUgY2FsbCB0bwotKwlpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdC4K LSsKLSsJKiBnZGJhcmNoLmMgKGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IFJldHVy biB2b2lkLgotKwkqIGdkYmFyY2guaCAoZ2RiYXJjaF9xc3VwcG9ydGVkX3Byb2Nlc3NfYWNrX2Z0 eXBlKTogTGlrZXdpc2UuCi0rCShnZGJhcmNoX3FzdXBwb3J0ZWRfcHJvY2Vzc19hY2spOiBMaWtl d2lzZS4KLSsKLSsJKiBpMzg2LXRkZXAuYyAocmVtb3RlX3hjcjApOiBOZXcuCi0rCShpMzg2X2dk YmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFVzZSByZW1vdGVfeGNyMCBmb3IgcmVtb3RlCi0rCWNs aWVudC4KLSsJKGkzODZfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IFNldCByZW1vdGVfeGNyMC4K LSsJKGkzODZfZ2RiYXJjaF9pbml0KTogVXBkYXRlIGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9p bml0IGNhbGwuCi0rCi0rCSogaTM4Ni10ZGVwLmggKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9p bml0KTogVXBkYXRlZC4KLSsKLSsJKiByZW1vdGUuYyAocmVtb3RlX3F1ZXJ5X3N1cHBvcnRlZCk6 IENhbGwKLSsJZ2RiYXJjaF9xc3VwcG9ydGVkX3Byb2Nlc3NfYWNrIHdpdGggTlVMTCB0byBwcmVw YXJlIHFTdXBwb3J0ZWQKLSsJQUNLIHByb2Nlc3NpbmcuCi0rCi0rMjAxMC0wMi0wMiAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIHJlZ2Zvcm1hdHMvcmVnLWkzODYtYXZ4 LWxpbnV4LmRhdDogQWRkIHhtbGFyY2ggYW5kIG9zYWJpLgotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4 Ni02NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4KLSsKLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2 LWF2eC5kYXQ6IEFkZCB4bWxhcmNoLgotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdnguZGF0 OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2Ny aXB0aW9uKTogVXNlCi0rCVhTVEFURV9TU0VfU0laRSBpbnN0ZWFkIG9mIDU3Ni4KLSsKLSsyMDEw LTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGlu dXgtdGRlcC5jIChhbWQ2NF9saW51eF9nX3BhY2tldF9zaXplKTogUmVtb3ZlZC4KLSsJKGFtZDY0 X2xpbnV4X2luaXRfYWJpKTogUmVtb3ZlIGkzODZfcmVnaXN0ZXJfZ19wYWNrZXRfZ3Vlc3Nlcy4K LSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2dfcGFja2V0X3NpemUpOiBSZW1vdmVkLgotKwko YW1kNjRfaW5pdF9hYmkpOiBVcGRhdGUgaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0X2luaXQgY2Fs bC4KLSsJUmVtb3ZlIGkzODZfcmVnaXN0ZXJfZ19wYWNrZXRfZ3Vlc3Nlcy4KLSsKLSsJKiBhbWQ2 NC10ZGVwLmggKEFNRDY0X0dfUEFDS0VUX1NJWkVfU1NFKTogUmVtb3ZlZC4KLSsJKEFNRDY0X0df UEFDS0VUX1NJWkVfQVZYKTogTGlrZXdpc2UuCi0rCi0rCSogZ2RiYXJjaC5jIChnZGJhcmNoX3Fz dXBwb3J0ZWRfcHJvY2Vzc19hY2spOiBBZGQgdmFsdWUuCi0rCSogZ2RiYXJjaC5oIChnZGJhcmNo X3FzdXBwb3J0ZWRfcHJvY2Vzc19hY2tfZnR5cGUpOiBMaWtld2lzZS4KLSsJKGdkYmFyY2hfcXN1 cHBvcnRlZF9wcm9jZXNzX2Fjayk6IExpa2V3aXNlLgotKwotKwkqIGkzODYtbGludXgtdGRlcC5j IChpMzg2X2xpbnV4X2dfcGFja2V0X3NpemUpOiBSZW1vdmVkLgotKwkoaTM4Nl9saW51eF9pbml0 X2FiaSk6IFJlbW92ZSBpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMuCi0rCi0rCSogaTM4 Ni10ZGVwLmM6IERvbid0IGluY2x1ZGUgInJlbW90ZS5oIiBub3IKLSsJInRhcmdldC1kZXNjcmlw dGlvbnMuaCIuCi0rCShpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMpOiBSZW1vdmVkLgot KwkoaTM4Nl9nX3BhY2tldF9zaXplKTogTGlrZXdpc2UuCi0rCSgzODZfZ2RiYXJjaF92ZWN0b3Jf dW5pdF9pbml0KTogUmV3cml0ZS4KLSsJKGkzODZfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IE5l dy4KLSsJKGkzODZfZ2RiYXJjaF9pbml0KTogVXBkYXRlIGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5p dF9pbml0IGNhbGwuCi0rCVJlbW92ZSBpMzg2X3JlZ2lzdGVyX2dfcGFja2V0X2d1ZXNzZXMuIENh bGwKLSsJc2V0X2dkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjay4KLSsKLSsJKiBpMzg2LXRk ZXAuaCAoeDg2X3ZlY3Rvcl91bml0KTogUmVtb3ZlIHVua25vd24uCi0rCShJMzg2X0dfUEFDS0VU X1NJWkVfU1NFKTogUmVtb3ZlZC4KLSsJKEkzODZfR19QQUNLRVRfU0laRV9BVlgpOiBMaWtld2lz ZS4KLSsJKEkzODZfUFJPUEVSVFlfU1NFKTogTGlrZXdpc2UuCi0rCShJMzg2X1BST1BFUlRZX0FW WCk6IExpa2V3aXNlLgotKwkoQU1ENjRfUFJPUEVSVFlfU1NFKTogTGlrZXdpc2UuCi0rCShBTUQ2 NF9QUk9QRVJUWV9BVlgpOiBMaWtld2lzZS4KLSsJKGkzODZfZ19wYWNrZXRfc2l6ZSk6IExpa2V3 aXNlLgotKwkoaTM4Nl9yZWdpc3Rlcl9nX3BhY2tldF9ndWVzc2VzKTogTGlrZXdpc2UuCi0rCShp Mzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFVwZGF0ZWQuCi0rCi0rCSogcmVtb3RlLmMg KHJlbW90ZV9xdWVyeV9zdXBwb3J0ZWQpOiBQYXNzIHZhbHVlIHRvCi0rCWdkYmFyY2hfcXN1cHBv cnRlZF9wcm9jZXNzX2Fjay4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfY29sbGVjdF94c2F2ZSk6IE9wdGlt aXplZC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogcmVnZm9ybWF0cy9yZWctaTM4Ni1hdngtbGludXguZGF0OiBSZW1vdmUgeGNyMC4KLSsJ KiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC5kYXQ6IExpa2V3aXNlLgotKwkqIHJlZ2Zvcm1hdHMv cmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4KLSsJKiByZWdmb3JtYXRzL3JlZy14 ODYtNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0wMiAgSC5KLiBMdSAgPGhvbmdq aXUubHVAaW50ZWwuY29tPgotKwotKwkqIGNvbW1vbi94c3RhdGUtbmF0LmggKFhTVEFURV9TU0Vf TUFTSyk6IE5ldy4KLSsJKFhTVEFURV9BVlhfTUFTSyk6IExpa2V3aXNlLgotKwkoWFNUQVRFX01B WF9NQVNLKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfU1NFX01BU0tfU1RSSU5HKTogTGlrZXdpc2Uu Ci0rCShYU1RBVEVfQVZYX01BU0tfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfTUFYX01B U0tfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfU1NFX1NJWkUpOiBMaWtld2lzZS4KLSsJ KFhTVEFURV9BVlhfU0laRSk6IExpa2V3aXNlLgotKwkoWFNUQVRFX01BWF9TSVpFKTogTGlrZXdp c2UuCi0rCShYU1RBVEVfU1NFX1NJWkVfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfQVZY X1NJWkVfU1RSSU5HKTogTGlrZXdpc2UuCi0rCShYU1RBVEVfTUFYX1NJWkVfU1RSSU5HKTogTGlr ZXdpc2UuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogVXNlIFhTVEFU RV9NQVhfU0laRV9TVFJJTkcKLSsJYW5kIFhTVEFURV9NQVhfTUFTS19TVFJJTkcgb24gc2V0X2dk YmFyY2hfcXN1cHBvcnRlZC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogZ2RiYXJjaC5jIChnZGJhcmNoKTogQWRkIHFzdXBwb3J0ZWRfcHJv Y2Vzc19hY2suCi0rCShzdGFydHVwX2dkYmFyY2gpOiBMaWtld2lzZS4KLSsJKGdkYmFyY2hfYWxs b2MpOiBMaWtld2lzZS4KLSsJKHZlcmlmeV9nZGJhcmNoKTogTGlrZXdpc2UuCi0rCShnZGJhcmNo X2R1bXApOiBMaWtld2lzZS4KLSsJKGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IE5l dy4KLSsJKHNldF9nZGJhcmNoX3FzdXBwb3J0ZWRfcHJvY2Vzc19hY2spOiBMaWtld2lzZS4KLSsK LSsJKiBnZGJhcmNoLmggKGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fja19mdHlwZSk6IE5l dy4KLSsJKGdkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IExpa2V3aXNlLgotKwkoc2V0 X2dkYmFyY2hfcXN1cHBvcnRlZF9wcm9jZXNzX2Fjayk6IExpa2V3aXNlLgotKwotKwkqIGkzODYt dGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IFVwZGF0ZSBjYWxsIHRvCi0rCXNldF9nZGJhcmNo X3FzdXBwb3J0ZWQuCi0rCi0rCSogcmVtb3RlLmMgKHJlbW90ZV9zdGF0ZSk6IFJlcGxhY2UgcXN1 cHBvcnRlZCB3aXRoIGdkYmFyY2guCi0rCShpbml0X3JlbW90ZV9zdGF0ZSk6IFNldCBnZGJhcmNo IGluc3RlYWQgb2YgIHFzdXBwb3J0ZWQuCi0rCShyZW1vdGVfcXVlcnlfc3VwcG9ydGVkKTogUmVw bGFjZSBxc3VwcG9ydGVkIHdpdGgKLSsJZ2RiYXJjaF9xc3VwcG9ydGVkLiAgQ2FsbCBnZGJhcmNo X3FzdXBwb3J0ZWRfcHJvY2Vzc19hY2sgb24KLSsJdW5wcm9jZXNzZWQgQUNLcy4KLSsKLSsyMDEw LTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVw LmMgKGkzODdfc3VwcGx5X3hzYXZlKTogQXBwbHkgWENSMCBtYXNrIHRvIGNsZWFyX2J2LgotKwko aTM4N19jb2xsZWN0X3hzYXZlKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0wMiAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9s aW51eF9ncmVnc2V0NjRfcmVnX29mZnNldCk6IFJlbW92ZQotKwl4Y3IwIG9mZnNldC4KLSsJKGFt ZDY0X2xpbnV4X2dyZWdzZXQzMl9yZWdfb2Zmc2V0KTogTGlrZXdpc2UuCi0rCi0rCSogYW1kNjQt dGRlcC5jIChhbWQ2NF9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmUgeGNyMC4KLSsJKGFtZDY0 X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoYW1kNjRfcmVnaXN0ZXJfbmFtZSk6 IFJlbW92ZSBBTUQ2NF9YQ1IwX1JFR05VTS4KLSsJKGFtZDY0X3JlZ2lzdGVyX3R5cGUpOiBSZW1v dmUgQU1ENjRfWENSMF9SRUdOVU0uICBVcGRhdGUKLSsJQU1ENjRfWFNUQVRFX0JWX1JFR05VTS4K LSsKLSsJKiBhbWQ2NC10ZGVwLmggKEFNRDY0X1hDUjBfUkVHTlVNKTogUmVtb3ZlZC4KLSsKLSsJ KiBpMzg2LWxpbnV4LW5hdC5jIChyZWdtYXApOiBSZW1vdmUgeGNyMC4KLSsKLSsJKiBpMzg2LXRk ZXAuYyAoaTM4Nl9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBSZW1vdmUgeGNyMC4KLSsJKGkzODZfYXZ4 X3JlZ2lzdGVyX25hbWVzKTogTGlrZXdpc2UuCi0rCShpMzg2X3hzdGF0ZV9yZWdudW1fcCk6IFJl bW92ZWQuCi0rCShpMzg2X3JlZ2lzdGVyX25hbWUpOiBSZW1vdmUgSTM4N19YQ1IwX1JFR05VTS4K LSsJKGkzODZfeGNyMF90eXBlKTogUmVtb3ZlZC4KLSsJKGkzODZfcmVnaXN0ZXJfdHlwZSk6IFJl bW92ZSBJMzg3X1hDUjBfUkVHTlVNIGFuZAotKwlJMzg3X1hTVEFURV9CVl9SRUdOVU0uCi0rCShp Mzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBSZW1vdmUgaTM4Nl94c3RhdGVfcmVnbnVtX3AuCi0r Ci0rCSogaTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRlcCk6IFJlbW92ZSBpMzg2X3hjcjBfdHlwZS4K LSsJKEkzODZfU1NFX05VTV9SRUdTKTogUmVtb3ZlIHhjcjAuCi0rCShpMzg2X3hjcjBfdHlwZSk6 IFJlbW92ZWQuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKFhTQVZFX1hDUjBfQUREUik6IFJlbW92ZWQu Ci0rCShpMzg3X3N1cHBseV94c2F2ZSk6IENsZWFyIHBhcnQgaW4gdmVjdG9yIHJlZ2lzdGVycyBp ZiBpdHMgYml0IGluCi0rCXhzdGF0X2J2IGlzIHplcm8uICBEb24ndCB1cGRhdGUgSTM4N19YQ1Iw X1JFR05VTSBub3IKLSsJSTM4N19YU1RBVEVfQlZfUkVHTlVNLgotKwkoaTM4N19jb2xsZWN0X3hz YXZlKTogQ2xlYXIgcGFydCBpbiB2ZWN0b3IgcmVnaXN0ZXJzIGlmIGl0cyBiaXQKLSsJaW4geHN0 YXRfYnYgaXMgemVyby4gIFVwZGF0ZSB4c3RhdF9idiBkaXJlY3RseS4KLSsKLSsJKiBpMzg3LXRk ZXAuaCAoSTM4N19YQ1IwX1JFR05VTSk6IFJlbW92ZWQuCi0rCi0rMjAxMC0wMi0wMSAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYmFyY2guYyAoZ2RiYXJjaCk6IEFk ZCBxc3VwcG9ydGVkLgotKwkoc3RhcnR1cF9nZGJhcmNoKTogTGlrZXdpc2UuCi0rCShnZGJhcmNo X2FsbG9jKTogTGlrZXdpc2UuCi0rCSh2ZXJpZnlfZ2RiYXJjaCk6IExpa2V3aXNlLgotKwkoZ2Ri YXJjaF9kdW1wKTogTGlrZXdpc2UuCi0rCShnZGJhcmNoX3FzdXBwb3J0ZWQpOiBOZXcuCi0rCShz ZXRfZ2RiYXJjaF9xc3VwcG9ydGVkKTogTGlrZXdpc2UuCi0rCi0rCSogZ2RiYXJjaC5oIChnZGJh cmNoX3FzdXBwb3J0ZWQpOiBOZXcuCi0rCShzZXRfZ2RiYXJjaF9xc3VwcG9ydGVkKTogTGlrZXdp c2UuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogQ2FsbCBzZXRfZ2Ri YXJjaF9xc3VwcG9ydGVkLgotKwotKwkqIHJlbW90ZS5jIChyZW1vdGVfc3RhdGUpOiBBZGQgcXN1 cHBvcnRlZC4KLSsJKGluaXRfcmVtb3RlX3N0YXRlKTogU2V0IHFzdXBwb3J0ZWQgZnJvbSBnZGJh cmNoX3FzdXBwb3J0ZWQuCi0rCShyZW1vdGVfcXVlcnlfc3VwcG9ydGVkKTogU3VwcG9ydCBxc3Vw cG9ydGVkLgotKwotKzIwMTAtMDItMDEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19jb2xsZWN0X3hzYXZlKTogT3B0aW1pemUgdXBkYXRp bmcgc2luZ2xlCi0rCXZlY3RvciByZWdpc3Rlci4KLSsKLSsyMDEwLTAyLTAxICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny10ZGVwLmMgKGkzODdfY29sbGVjdF94 c2F2ZSk6IEdldCB0aGUgb3JpZ2luYWwgYHhzdGF0X2J2Jy4KLSsKLSsyMDEwLTAyLTAxICBILkou IEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2Ri YXJjaF92ZWN0b3JfdW5pdF9pbml0KTogVXNlCi0rCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3Vuc2ln bmVkLgotKwotKwkqIGkzODctdGRlcC5jIChpMzg3X2NvbGxlY3RfeHNhdmUpOiBVcGRhdGUgdGhl IGJpdHMgaW4KLSsJYHhzdGF0ZV9idicgaWYgYW55IFNTRS9BVlggcmVnaXN0ZXJzIGFyZSBjaGFu Z2VkLiAgRG9uJ3QgY2hhbmdlCi0rCWB4Y3IwJy4KLSsKLSsyMDEwLTAyLTAxICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9zc2VfcmVn aXN0ZXJfbmFtZXMpOiBVc2UgTlVMTCBvbiB4c3RhdGVfYnYuCi0rCShhbWQ2NF9hdnhfcmVnaXN0 ZXJfbmFtZXMpOiBMaWtld2lzZS4KLSsJKGFtZDY0X3JlZ2lzdGVyX25hbWUpOiBSZXR1cm4gTlVM TCBmb3IgQU1ENjRfWFNUQVRFX0JWX1JFR05VTS4KLSsKLSsJKiBhbWQ2NC10ZGVwLiAoQU1ENjRf R19QQUNLRVRfU0laRV9BVlgpOiBEb24ndCBpbmNsdWRlIHhzdGF0ZV9idi4KLSsKLSsJKiBpMzg2 LXRkZXAuYyAoaTM4Nl9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBVc2UgTlVMTCBvbiB4c3RhdGVfYnYu Ci0rCShpMzg2X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoaTM4Nl9yZWdpc3Rl cl9uYW1lKTogUmV0dXJuIE5VTEwgZm9yIEkzODZfWFNUQVRFX0JWX1JFR05VTS4KLSsKLSsJKiBp Mzg2LXRkZXAuIChJMzg2X0dfUEFDS0VUX1NJWkVfQVZYKTogRG9uJ3QgaW5jbHVkZSB4c3RhdGVf YnYuCi0rCi0rCSogaTM4Ny10ZGVwLmMgKFhTQVZFX1hTVEFURV9CVl9BRERSKTogVXBkYXRlIGNv bW1lbnRzLgotKwotKwkqIHJlZ2Zvcm1hdHMvcmVnLWkzODYtYXZ4LWxpbnV4LmRhdDogUmVtb3Zl IHhzdGF0ZV9idi4KLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LWF2eC5kYXQ6IExpa2V3aXNlLgot KwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC1hdngtbGludXguZGF0OiBMaWtld2lzZS4KLSsJKiBy ZWdmb3JtYXRzL3JlZy14ODYtNjQtYXZ4LmRhdDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0wMSAg SC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2 X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IENvcnJlY3QgdGhlCi0rCVhDUjAgcmVnaXN0ZXIg bnVtYmVyIGZvciA2NGJpdC4KLSsKLSsyMDEwLTAyLTAxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9p bml0KTogR2V0IHhjcjAgZnJvbQotKwl0aGUgcmVtb3RlIHRhcmdldC4KLSsKLSsyMDEwLTAxLTMx ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5oIChB TUQ2NF9HX1BBQ0tFVF9TSVpFX0FWWCk6IEFkZCBzaXplcyBmb3IgeGNyMAotKwlhbmQgeHN0YXRl X2J2LgotKwkqIGkzODYtdGRlcC5oIChJMzg2X0dfUEFDS0VUX1NJWkVfQVZYKTogTGlrZXdpc2Uu Ci0rCi0rCSogcmVnZm9ybWF0cy9yZWctaTM4Ni1hdngtbGludXguZGF0OiBBZGQgeGNyMCBhbmQg eHN0YXRlX2J2LgotKwkqIHJlZ2Zvcm1hdHMvcmVnLWkzODYtYXZ4LmRhdDogTGlrZXdpc2UuCi0r CSogcmVnZm9ybWF0cy9yZWcteDg2LTY0LWF2eC1saW51eC5kYXQ6IExpa2V3aXNlLgotKwkqIHJl Z2Zvcm1hdHMvcmVnLXg4Ni02NC1hdnguZGF0OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTMwICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMg KGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogUmVhZCA4Ci0rCWJ5dGVzIGZvciB4 Y3IwLgotKwotKzIwMTAtMDEtMzAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBpMzg3LXRkZXAuaCAoWFNBVkVfWENSMF9PRkZTRVQpOiBVcGRhdGUgY29tbWVudHMuCi0r Ci0rMjAxMC0wMS0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFt ZDY0LXRkZXAuYyAoYW1kNjRfcmVnaXN0ZXJfbmFtZSk6IFJldHVybiBOVUxMIGZvciB4Y3IwCi0r CWFuZCB4c3RhdGVfYnYgaWYgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgaXNuJ3Qgc3VwcG9ydGVkLgot KwkqIGkzODYtdGRlcC5jIChpMzg2X3JlZ2lzdGVyX25hbWUpOiBMaWtld2lzZS4KLSsJKGkzODZf eHN0YXRlX3JlZ251bV9wKTogUmV0dXJuIDAgb2YgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgaXNuJ3QK LSsJc3VwcG9ydGVkLgotKwotKzIwMTAtMDEtMzAgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVs LmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl94c3RhdGVfcmVnbnVtX3ApOiBOZXcuCi0r CShpMzg2X3JlZ2lzdGVyX3JlZ2dyb3VwX3ApOiBVc2UgaXQuCi0rCi0rMjAxMC0wMS0zMCAgSC5K LiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jOiBJ bmNsdWRlIGkzODctdGRlcC5oIGFuZCB4c3RhdGUtbmF0LmguCi0rCShpMzg2X2xpbnV4X2NvcmVf cmVhZF9kZXNjcmlwdGlvbik6IFJlYWQgeGNyMCBmcm9tIGNvcmUgZmlsZS4KLSsKLSsJKiBpMzg3 LXRkZXAuYyAoWFNBVkVfWENSMF9BRERSKTogTmV3LgotKwkoWFNBVkVfWFNUQVRFX0JWX0FERFIp OiBMaWtld2lzZS4KLSsKLSsJKiBpMzg3LXRkZXAuaCAoWFNBVkVfWENSMF9PRkZTRVQpOiBOZXcu Ci0rCShYU0FWRV9YQ1IwX0FERFIpOiBSZW1vdmVkLgotKwkoWFNBVkVfWFNUQVRFX0JWX0FERFIp OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMgKGFtZDY0X2xpbnV4X2dyZWdzZXQ2NF9yZWdf b2Zmc2V0KTogQWRkCi0rCWVudHJpZXMgb2YgLTEgZm9yIHhjcjAgYW5kIHhzdGF0ZV9idi4KLSsJ KGFtZDY0X2xpbnV4X2dyZWdzZXQzMl9yZWdfb2Zmc2V0KTogTGlrZXdpc2UuCi0rCSogaTM4Ni1s aW51eC1uYXQuYyAocmVnbWFwKTogTGlrZXdpc2UuCi0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5o IChBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0pOiBSZXBsYWNlCi0rCUFNRDY0X01YQ1NSX1JF R05VTSB3aXRoIEFNRDY0X1hTVEFURV9CVl9SRUdOVU0uCi0rCi0rCSogYW1kNjQtdGRlcC5jIChh bWQ2NF9zc2VfcmVnaXN0ZXJfbmFtZXMpOiBBZGQgeGNyMCBhbmQgeHN0YXRlX2J2LgotKwkoYW1k NjRfYXZ4X3JlZ2lzdGVyX25hbWVzKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9yZWdpc3Rlcl90eXBl KTogSGFuZGxlIEFNRDY0X1hDUjBfUkVHTlVNIGFuZAotKwlBTUQ2NF9YU1RBVEVfQlZfUkVHTlVN LgotKwotKwkqIGFtZDY0LXRkZXAuaCAoYW1kNjRfcmVnbnVtKTogQWRkIEFNRDY0X1hDUjBfUkVH TlVNIGFuZAotKwlBTUQ2NF9YU1RBVEVfQlZfUkVHTlVNLgotKwotKwkqIGkzODYtdGRlcC5jIChp Mzg2X3NzZV9yZWdpc3Rlcl9uYW1lcyk6IEFkZCB4Y3IwIGFuZCB4c3RhdGVfYnYuCi0rCShpMzg2 X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IExpa2V3aXNlLgotKwkoaTM4Nl94Y3IwX3R5cGUpOiBOZXcu Ci0rCShpMzg2X3JlZ2lzdGVyX3R5cGUpOiBIYW5kbGUgQU1ENjRfWENSMF9SRUdOVU0gYW5kCi0r CUFNRDY0X1hTVEFURV9CVl9SRUdOVU0uCi0rCShpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5p dCk6IFNldCB0aGUgeGNyMCBmaWVsZC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoZ2RiYXJjaF90ZGVw KTogQWRkIHhjcjAgYW5kIGkzODZfeGNyMF90eXBlLgotKwkoSTM4Nl9TU0VfTlVNX1JFR1MpOiBJ bmNyZWFzZSBieSAyLgotKwkoaTM4Nl94Y3IwX3R5cGUpOiBOZXcuCi0rCi0rCSogaTM4Ny10ZGVw LmMgKGkzODdfc3VwcGx5X3hzYXZlKTogSGFuZGxlIEkzODdfWENSMF9SRUdOVU0KLSsJYW5kIEkz ODdfWFNUQVRFX0JWX1JFR05VTS4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgot KwotKwkqIGkzODctdGRlcC5oIChJMzg3X1hDUjBfUkVHTlVNKTogTmV3LgotKwkoSTM4N19YU1RB VEVfQlZfUkVHTlVNKTogTGlrZXdpc2UuCi0rCShYU0FWRV9YQ1IwX0FERFIpOiBMaWtld2lzZS4K LSsJKFhTQVZFX1hTVEFURV9CVl9BRERSKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yOSAgSC5K LiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChh bWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBGYWxsCi0rCWJhY2sgYWZ0ZXIg UFRSQUNFX0dFVFhTVEFURVJFR1MgaWYgaGF2ZV9wdHJhY2VfZ2V0eHN0YXRlcmVncyA9PSAxLgot KwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShf aW5pdGlhbGl6ZV9hbWQ2NF9saW51eF9uYXQpOiBJbml0aWFsaXplIGhhdmVfcHRyYWNlX2dldHhz dGF0ZXJlZ3MKLSsJdG8gMiBmb3IgQVZYLgotKwotKwkqIGkzODYtbGludXgtbmF0LmMgKGZldGNo X3hzdGF0ZXJlZ3MpOiBGYWxsIGJhY2sgYWZ0ZXIKLSsJUFRSQUNFX0dFVFhTVEFURVJFR1MgaWYg aGF2ZV9wdHJhY2VfZ2V0eHN0YXRlcmVncyA9PSAxLgotKwkoc3RvcmVfeHN0YXRlcmVncyk6IExp a2V3aXNlLgotKwkoX2luaXRpYWxpemVfaTM4Nl9saW51eF9uYXQpOiBJbml0aWFsaXplIGhhdmVf cHRyYWNlX2dldHhzdGF0ZXJlZ3MKLSsJdG8gMiBmb3IgQVZYLgotKwotKwkqIGkzODYtdGRlcC5j IChpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5pdCk6IFVwZGF0ZWQuCi0rCi0rCSogY29tbW9u L3hzdGF0ZS1uYXQuaCAoeHN0YXRlKTogUmVtb3ZlZC4KLSsJKHhzdGF0ZV9zdGF0dXMpOiBOZXcu Ci0rCShiaXRfWFNUQVRFX1g4Nyk6IExpa2V3aXNlLgotKwkoYml0X1hTVEFURV9TU0UpOiBMaWtl d2lzZS4KLSsJKGJpdF9YU1RBVEVfQVZYKTogTGlrZXdpc2UuCi0rCShpMzg2X3hzdGF0ZV90eXBl KTogUmVtb3ZlIHN0YXRlLiAgQWRkIHN0YXR1cyBhbmQgeGNyMC4KLSsKLSsJKiBjb21tb24veHN0 YXRlLW5hdC5jIChpMzg2X3hzdGF0ZV9pbml0KTogVXBkYXRlZC4KLS0tLSAuL2dkYi9DaGFuZ2VM b2cueG1sCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvQ2hh bmdlTG9nLnhtbAkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCAr MSw0NjQgQEAKLSsyMDEwLTAzLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogcmVtb3RlLmMgKHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCk6IFVzZSBzdHJ0b2su Ci0rCi0rMjAxMC0wMy0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IE5FV1M6IE1lbnRpb24geG1sUmVnaXN0ZXJzPSBpbiBxU3VwcG9ydGVkIHBhY2tldC4KLSsKLSsy MDEwLTAzLTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10 ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogTW92ZQotKwlyZWdpc3Rlcl9yZW1vdGVfc3VwcG9y dF94bWwgY2FsbCB0byAuLi4KLSsJKF9pbml0aWFsaXplX2kzODZfdGRlcCk6IEhlcmUuCi0rCi0r MjAxMC0wMy0yOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYt dGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IFBhc3MgImkzODYiIGluc3RlYWQgb2YgIng4NiIK LSsJdG8gcmVnaXN0ZXJfcmVtb3RlX3N1cHBvcnRfeG1sLgotKwotKzIwMTAtMDMtMjkgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiByZW1vdGUuYyAocmVnaXN0ZXJfcmVt b3RlX3N1cHBvcnRfeG1sKTogRG8gbm90aGluZyBpZgotKwlIQVZFX0xJQkVYUEFUIGlzIHVuZGVm aW5lZC4KLSsKLSsyMDEwLTAzLTI4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogcmVtb3RlLmMgKHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCk6IEFkZCAieG1sUmVn aXN0ZXJzPSIKLSsJcHJlZml4LiAgRnJlZSB0aGUgdW51c2VkIG9sZCBtZW1vcnkuCi0rCShyZW1v dGVfcXVlcnlfc3VwcG9ydGVkX2FwcGVuZCk6IE5ldy4KLSsJKHJlbW90ZV9xdWVyeV9zdXBwb3J0 ZWQpOiBDYWxsIHJlbW90ZV9xdWVyeV9zdXBwb3J0ZWRfYXBwZW5kLgotKwotKzIwMTAtMDMtMjgg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYzogSW5j bHVkZSAicmVtb3RlLmgiLgotKwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBDYWxsIHJlZ2lzdGVyX3Jl bW90ZV9zdXBwb3J0X3htbC4KLSsKLSsJKiByZW1vdGUuYyAocmVtb3RlX3N1cHBvcnRfeG1sKTog TmV3LgotKwkocmVnaXN0ZXJfcmVtb3RlX3N1cHBvcnRfeG1sKTogTGlrZXdpc2UuCi0rCShyZW1v dGVfcXVlcnlfc3VwcG9ydGVkKTogU3VwcG9ydCByZW1vdGVfc3VwcG9ydF94bWwuCi0rCi0rCSog cmVtb3RlLmggKHJlZ2lzdGVyX3JlbW90ZV9zdXBwb3J0X3htbCk6IE5ldy4KLSsKLSsyMDEwLTAy LTI4ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgt dGRlcC5jIChhbWQ2NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBEb24ndAotKwljaGVj ayAucmVnIHNlY3Rpb24gc2l6ZS4KLSsJKiBpMzg2LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9j b3JlX3JlYWRfZGVzY3JpcHRpb24pOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTI4ICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMgKEFNRDY0 X0xJTlVYX1VTRVI2NF9DUyk6IE5ldy4KLSsJKGFtZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24p OiBVc2UgaXQuCi0rCi0rMjAxMC0wMi0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29t PgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuYyAoYW1kNjRfbGludXhfaW5pdF9hYmkpOiBDaGVj ayBvcmlnX3JheAotKwlyaWdodCBhZnRlciBhbWQ2NF9pbml0X2FiaS4KLSsKLSsJKiBpMzg2LWxp bnV4LXRkZXAuYyAoaTM4Nl9saW51eF9pbml0X2FiaSk6IENoZWNrIG9yaWdfZWF4Ci0rCXJpZ2h0 IGFmdGVyIGkzODZfZWxmX2luaXRfYWJpLgotKwotKzIwMTAtMDItMjIgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1kNjRfbGludXhf cmVhZF9kZXNjcmlwdGlvbik6IFJlYWQgQ1MKLSsJcmVnaXN0ZXIgdG8gY2hlY2sgcHJvY2VzcyBh ZGRyZXNzIHNwYWNlLgotKwotKzIwMTAtMDItMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVs LmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl92YWxpZGF0ZV90ZGVzY19wKTogTmV3Lgot KwkoaTM4Nl9nZGJhcmNoX2luaXQpOiBVc2UgaXQuCi0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9s aW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogUmV0dXJuCi0rCXRkZXNjX2kzODZfbGludXggZm9yIDMy Yml0LgotKwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2luaXRfYWJpKTogU2V0IG51bV9jb3JlX3JlZ3MgYW5k Ci0rCXJlZ2lzdGVyX25hbWVzIGFmdGVyIHRkZXNjLgotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dk YmFyY2hfaW5pdCk6IERvbid0IGNoZWNrIGJmZF9hcmNoX2kzODYuICBTZXQgCi0rCW51bV9jb3Jl X3JlZ3MgYW5kIHJlZ2lzdGVyX25hbWVzIGFmdGVyIHRkZXNjLgotKwotKzIwMTAtMDItMTggIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmMg KGFtZDY0X2xpbnV4X2luaXRfYWJpKTogUmVtb3ZlIGEgc3RyYXllZAotKwljb21tZW50LgotKwot KzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2 NC1saW51eC1uYXQuYzogRG9uJ3QgaW5jbHVkZSAiaTM4Ny10ZGVwLmgiLgotKwkqIGFtZDY0LWxp bnV4LXRkZXAuYzogTGlrZXdpc2UuCi0rCSogaTM4Ni1saW51eC10ZGVwLmM6IExpa2V3aXNlLgot KwotKwkqIGkzODYtdGRlcC5oIChpMzg2X3JlZ251bSk6IEFkZCBJMzg2X01YQ1NSX1JFR05VTS4K LSsJKEkzODZfU1NFX05VTV9SRUdTKTogRGVmaW5lZCB3aXRoIEkzODZfTVhDU1JfUkVHTlVNLgot KwotKzIwMTAtMDItMTcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBp Mzg2LXRkZXAuaCAodGRlc2NfaTM4Nik6IFJlbW92ZWQuCi0rCi0rMjAxMC0wMi0xNyAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jOiBJbmNs dWRlICJpMzg3LXRkZXAuaCIuCi0rCShhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogSnVz dCByZXR1cm4gdGRlc2NfYW1kNjRfbGludXguCi0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5jOiBE b24ndCBpbmNsdWRlICJpMzg2LWxpbnV4LXRkZXAuaCIuCi0rCUluY2x1ZGUgImkzODctdGRlcC5o Ii4KLSsJKGFtZDY0X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBSZW1vdmVkLgotKwkoYW1kNjRfbGlu dXhfcmVnaXN0ZXJfdHlwZSk6IExpa2V3aXNlLgotKwkoYW1kNjRfbGludXhfY29yZV9yZWFkX2Rl c2NyaXB0aW9uKTogSnVzdCByZXR1cm4KLSsJdGRlc2NfYW1kNjRfbGludXguCi0rCShhbWQ2NF9s aW51eF9pbml0X2FiaSk6IFNldCB0YXJnZXQgZGVzY3JpcHRpb24gdG8KLSsJdGRlc2NfYW1kNjRf bGludXggaWYgbmVlZGVkLiAgU3VwcG9ydCBvcmlnX3JheC4gIFNldAotKwlyZWdpc3Rlcl9yZWdn cm91cF9wLgotKwotKwkqIGFtZDY0LXRkZXAuYyAoYW1kNjRfcmVnaXN0ZXJfbmFtZXMpOiBNYWtl IGl0IHN0YXRpYy4KLSsJKGFtZDY0X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IFJlbW92ZWQuCi0r CShhbWQ2NF9pbml0X2FiaSk6IFNldCBudW1fY29yZV9yZWdzIGFuZCByZWdpc3Rlcl9uYW1lcy4g IFNldAotKwl0YXJnZXQgZGVzY3JpcHRpb24gdG8gdGRlc2NfYW1kNjQgaWYgbmVlZGVkLiAgQ2Fs bAotKwlzZXRfZ2RiYXJjaF9udW1fcmVncy4gCi0rCi0rCSogYW1kNjQtdGRlcC5oIChhbWQ2NF9y ZWdpc3Rlcl9uYW1lcyk6IFJlbW92ZWQuCi0rCSh0ZGVzY19hbWQ2NCk6IExpa2V3aXNlLgotKwot KwkqIGkzODYtbGludXgtdGRlcC5jOiBJbmNsdWRlICJpMzg3LXRkZXAuaCIuCi0rCShpMzg2X2xp bnV4X3JlZ2lzdGVyX25hbWUpOiBSZW1vdmVkLgotKwkoaTM4Nl9saW51eF9yZWdpc3Rlcl90eXBl KTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9pbml0X2FiaSk6IFNldCB0YXJnZXQgZGVzY3Jp cHRpb24gdG8KLSsJdGRlc2NfaTM4Nl9saW51eCBpZiBuZWVkZWQuICBTdXBwb3J0IG9yaWdfZWF4 LiAgU2V0Ci0rCXJlZ2lzdGVyX3JlZ2dyb3VwX3AuCi0rCi0rCSogaTM4Ni1udG8tdGRlcC5jIChp Mzg2bnRvX3JlZ3NldF9pZCk6IFJlcGxhY2UgSTM4Nl9OVU1fRlJFR1MKLSsJd2l0aCBJMzg3X05V TV9SRUdTLgotKwotKwkqIGkzODYtdGRlcC5jOiBEb24ndCBpbmNsdWRlICJhbWQ2NC10ZGVwLmgi LgotKwkoaTM4Nl9nbzMyX2luaXRfYWJpKTogUmVwbGFjZSBJMzg2X05VTV9GUkVHUyB3aXRoIEkz ODdfTlVNX1JFR1MuCi0rCShpMzg2X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IFJlbW92ZWQuCi0r CShpMzg2X2dkYmFyY2hfaW5pdCk6IFNldCB0YXJnZXQgZGVzY3JpcHRpb24gdG8gdGRlc2NfaTM4 NiBpZgotKwluZWVkZWQuICBTZXQgZ3JlZ3NldF9udW1fcmVncyB0byBJMzg2X05VTV9HUkVHUy4g IFNldAotKwludW1fY29yZV9yZWdzIGFuZCByZWdpc3Rlcl9uYW1lcy4gIFNldCByZWdpc3Rlcl9y ZWdncm91cF9wLgotKwotKzIwMTAtMDItMTcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNv bT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBNb3ZlIHRkZXNjX3Vz ZV9yZWdpc3RlcnMKLSsJbW9yZSB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uICBDYWxs IHRkZXNjX3VzZV9yZWdpc3RlcnMKLSsJYWZ0ZXIgZ2RiYXJjaF9pbml0X29zYWJpLiAgVXBkYXRl Ci0rCXNldF9nZGJhcmNoX3JlZ2lzdGVyX3JlZ2dyb3VwX3AuCi0rCi0rCSogaTM4Ni10ZGVwLmgg KGdkYmFyY2hfdGRlcCk6IEFkZCBudW1fY29yZV9yZWdzLAotKwlyZWdpc3Rlcl9uYW1lcywgdGRl c2MgYW5kIHJlZ2lzdGVyX3JlZ2dyb3VwX3AuCi0rCShJMzg2X05VTV9GUkVHUyk6IFJlbW92ZWQu Ci0rCShJMzg2X1NTRV9OVU1fUkVHUyk6IFJlcGxhY2UgSTM4Nl9OVU1fRlJFR1Mgd2l0aCBJMzg3 X05VTV9SRUdTLgotKwotKwkqIGkzODctdGRlcC5oIChJMzg3X05VTV9SRUdTKTogTmV3LgotKwot KzIwMTAtMDItMTcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2 LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBNb3ZlIHRkZXNjX3VzZV9yZWdpc3RlcnMKLSsJ ZnVydGhlciB0b3dhcmQgdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCi0rCi0rMjAxMC0wMi0xNyAg SC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2 X2dkYmFyY2hfaW5pdCk6IE1vdmUgdGRlc2NfdXNlX3JlZ2lzdGVycwotKwl0b3dhcmQgdGhlIGVu ZCBvZiB0aGUgZnVuY3Rpb24uCi0rCi0rMjAxMC0wMi0xNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGFtZDY0LXRkZXAuYzogSW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9h bWQ2NC5jIi4KLSsJKGFtZDY0X2NvcmVfcmVhZF9kZXNjcmlwdGlvbik6IE5ldy4KLSsJKF9pbml0 aWFsaXplX2FtZDY0X3RkZXApOiBMaWtld2lzZS4KLSsJKGFtZDY0X2luaXRfYWJpKTogQ2FsbCBz ZXRfZ2RiYXJjaF9jb3JlX3JlYWRfZGVzY3JpcHRpb24uCi0rCi0rCSogYW1kNjQtdGRlcC5oICh0 ZGVzY19hbWQ2NCk6IE5ldy4KLSsKLSsJKiBpMzg2LXRkZXAuYzogSW5jbHVkZSBpMzg2LXRkZXAu aCIgaW5zdGVhZCBvZiAiYW1kNjQtdGRlcC5oIi4KLSsJSW5jbHVkZSAiYW1kNjQtdGRlcC5oIiBp bnN0ZWFkIG9mICJmZWF0dXJlcy9pMzg2L2FtZDY0LmMiIHdoZW4KLSsJQkZENjQgaXMgZGVmaW5l ZC4KLSsJKGkzODZfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogTmV3LgotKwkoaTM4Nl9nZGJhcmNo X2luaXQpOiBDYWxsIHNldF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlvbi4KLSsJKF9pbml0 aWFsaXplX2kzODZfdGRlcCk6IERvbid0IENhbGwgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NC4KLSsK LSsJKiBpMzg2LXRkZXAuaCAodGRlc2NfaTM4Nik6IE5ldy4KLSsKLSsyMDEwLTAyLTE3ICBILkou IEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMgKGFt ZDY0X2xpbnV4X3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0rCShfaW5pdGlhbGl6ZV9hbWQ2NF9s aW51eF9uYXQpOiBVc2UgaXQuCi0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5jOiBJbmNsdWRlICJp Mzg2LWxpbnV4LXRkZXAuaCIgYW5kCi0rCWZlYXR1cmVzL2kzODYvYW1kNjQtbGludXguYy4KLSsJ KGFtZDY0X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBOZXcuCi0rCShhbWQ2NF9saW51eF9yZWdpc3Rl cl90eXBlKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24p OiBMaWtld2lzZS4KLSsJKGFtZDY0X2xpbnV4X2luaXRfYWJpKTogU3VwcG9ydCByZW1vdGUgc3R1 YiB3aXRob3V0IFhNTCB0YXJnZXQKLSsJZGVzY3JpcHRpb24uICBVc2UgYW1kNjRfbGludXhfY29y ZV9yZWFkX2Rlc2NyaXB0aW9uIGluc3RlYWQgb2YKLSsJaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVz Y3JpcHRpb24uCi0rCShfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF90ZGVwKTogQ2FsbCBpbml0aWFs aXplX3RkZXNjX2FtZDY0X2xpbnV4LgotKwotKwkqIGFtZDY0LWxpbnV4LXRkZXAuaDogRG9uJ3Qg aW5jbHVkZSAiaTM4Ni1saW51eC10ZGVwLmgiLgotKwkodGRlc2NfYW1kNjRfbGludXgpOiBOZXcu Ci0rCi0rCSogaTM4Ni1saW51eC1uYXQuYyAoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTog TmV3LgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jOiBJbmNsdWRlICJpMzg2LXRkZXAuaC8iaTM4 Ni1saW51eC10ZGVwLmgiCi0rCWluc3RlYWQgb2YgImFtZDY0LXRkZXAuaCIvImFtZDY0LWxpbnV4 LXRkZXAuaCIuCi0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX25hbWUpOiBEb24ndCBjaGVjayBCRkQ2 NC4KLSsJKGkzODZfbGludXhfcmVnaXN0ZXJfdHlwZSk6IExpa2V3aXNlLgotKwkoX2luaXRpYWxp emVfaTM4Nl9saW51eF90ZGVwKTogTGlrZXdpc2UuCi0rCShpMzg2X2xpbnV4X2luaXRfb3JpZ19l YXgpOiBSZW1vdmVkLgotKwkoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBNYWtl IGl0IHN0YXRpYy4gIERvbid0Ci0rCWNoZWNrIEJGRDY0LgotKwkoaTM4Nl9saW51eF9yZWFkX2Rl c2NyaXB0aW9uKTogUmVtb3ZlZC4KLSsJKGkzODZfbGludXhfaW5pdF9hYmkpOiBTdXBwb3J0IHJl bW90ZSBzdHViIHdpdGhvdXQgWE1MIHRhcmdldAotKwlkZXNjcmlwdGlvbi4KLSsKLSsJKiBpMzg2 LWxpbnV4LXRkZXAuaCAoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBSZW1vdmVk LgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogTGlrZXdpc2UuCi0rCShpMzg2X2xp bnV4X2luaXRfb3JpZ19lYXgpOiBMaWtld2lzZS4KLSsJKHRkZXNjX2kzODZfbGludXgpOiBOZXcu Ci0rCi0rMjAxMC0wMi0xMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGkzODYtdGRlcC5jIChpMzg2X2dkYmFyY2hfaW5pdCk6IE9wdGltaXplIGZvciBCRkQ2NC4KLSsK LSsyMDEwLTAyLTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4 Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfcmVnaXN0ZXJfbmFtZSk6IE9wdGltaXplZCBmb3IK LSsJQkZENjQuCi0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGkz ODZfbGludXhfaW5pdF9vcmlnX2VheCk6IExpa2V3aXNlLgotKwkoaTM4Nl9saW51eF9yZWFkX2Rl c2NyaXB0aW9uKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMi0wOSAgSC5KLiBMdSAgPGhvbmdqaXUu bHVAaW50ZWwuY29tPgotKwotKwkqIHRhcmdldC1kZXNjcmlwdGlvbnMuYyAodGRlc2NfZ2RiX3R5 cGUpOiBDb3JyZWN0IGkzODZfZWZsYWdzCi0rCXR5cGUuCi0rCi0rMjAxMC0wMi0wOCAgSC5KLiBM dSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODYtdGRlcC5jIChpMzg2X2dkYmFy Y2hfaW5pdCk6IFNldCBudW1iZXJzIG9mIGRpZmZlcmVudAotKwlyZWdpc3RlcnMgc2VwYXJhdGVs eSBmb3IgMzJiaXQgYW5kIDY0Yml0LgotKwotKzIwMTAtMDItMDggIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4N19leHRfdHlwZSk6IENhbGwg dGRlc2NfZmluZF90eXBlIGluc3RlYWQgb2YKLSsJYXJjaF9mbG9hdF90eXBlLgotKwotKwkqIHRh cmdldC1kZXNjcmlwdGlvbnMuYyAodGRlc2NfZmluZF90eXBlKTogTmV3LgotKwkodGRlc2NfZ2Ri X3R5cGUpOiBVc2UgaXQuCi0rCi0rCSogdGFyZ2V0LWRlc2NyaXB0aW9ucy5oICh0ZGVzY19maW5k X3R5cGUpOiBOZXcuCi0rCi0rMjAxMC0wMi0wNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jOiBSZXBsYWNlIHg4Ni02NC94ODZfNjQgd2l0 aCBhbWQ2NC4KLSsJKiBpMzg2LXRkZXAuYzogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvTWFr ZWZpbGU6IFJlcGxhY2UgeDg2LTY0IHdpdGggYW1kNjQuCi0rCSogZmVhdHVyZXMvaTM4Ni8qOiBS ZW5hbWUgeDg2LTY0KiB0byBhbWQ2NCouCi0rCi0rCSogcmVnZm9ybWF0cy9pMzg2Lyo6IFJlbmFt ZSB4ODYtNjQqIHRvIGFtZDY0Ki4KLSsKLSsyMDEwLTAyLTA3ICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogZmVhdHVyZXMvTWFrZWZpbGUgKEkzODYtWE1MVE9DKTogUmVt b3ZlZC4gCi0rCShJMzg2LUNGSUxFUyk6IExpa2V3aXNlLgotKwkoaTM4Ni1jZmlsZXMpOiBMaWtl d2lzZS4KLSsKLSsyMDEwLTAyLTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0r Ci0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZfbGludXhfaW5pdF9vcmlnX2VheCk6IFJldHVy biBvbmx5Ci0rCWlmIFhNTCB0YXJnZXQgZGVzY3JpcHRpb24gaXMgYXZhaWxhYmxlLgotKwotKzIw MTAtMDItMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LWxp bnV4LXRkZXAuYyAoaTM4Nl9saW51eF9pbml0X29yaWdfZWF4KTogQ2hlY2sKLSsJb3JnLmdudS5n ZGIuaTM4Ni5saW51eCBpbnN0ZWFkIG9mIG9yZy5nbnUuZ2RiLmkzODYuY29yZS4KLSsKLSsyMDEw LTAyLTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGlu dXgtdGRlcC5jIChhbWQ2NF9saW51eF9pbml0X2FiaSk6IFJldmVydCB0aGUgbGFzdAotKwljaGFu Z2UuICBDYWxsIGkzODZfbGludXhfaW5pdF9vcmlnX2VheC4KLSsKLSsJKiBpMzg2LWxpbnV4LXRk ZXAuYyAoaTM4Nl9saW51eF9yZWdpc3Rlcl9uYW1lKTogTWFrZSBpdCBzdGF0aWMuCi0rCShpMzg2 X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfbGludXhfaW5pdF9vcmln X2VheCk6IE5ldy4KLSsJKGkzODZfbGludXhfaW5pdF9hYmkpOiBSZXZlcnQgdGhlIGxhc3QgY2hh bmdlLiAgQ2FsbAotKwlpMzg2X2xpbnV4X2luaXRfb3JpZ19lYXguCi0rCi0rCSogaTM4Ni1saW51 eC10ZGVwLmggKGkzODZfbGludXhfcmVnaXN0ZXJfbmFtZSk6IFJlbW92ZWQuCi0rCShpMzg2X2xp bnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGkzODZfbGludXhfaW5pdF9vcmlnX2Vh eCk6IE5ldy4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+ Ci0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51eF9pbml0X2FiaSk6IFJlc3Rv cmUKLSsJc2V0X2dkYmFyY2hfbnVtX3JlZ3MuICBDYWxsIHNldF9nZGJhcmNoX3JlZ2lzdGVyX25h bWUsCi0rCXNldF9nZGJhcmNoX3JlZ2lzdGVyX3R5cGUgYW5kIHNldF9nZGJhcmNoX3JlbW90ZV9y ZWdpc3Rlcl9udW1iZXIuCi0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5oOiBJbmNsdWRlICJpMzg2 LWxpbnV4LXRkZXAuaCIuCi0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmM6IEluY2x1ZGUgImkzODYt dGRlcC5oIiBhbmQKLSsJImkzODYtbGludXgtdGRlcC5oIiB3aXRoICJhbWQ2NC10ZGVwLmgiIGFu ZCAiYW1kNjQtbGludXgtdGRlcC5oIi4KLSsJKGkzODZfbGludXhfcmVnaXN0ZXJfbmFtZSk6IFJl c3RvcmVkIGFuZCByZXdvdGUuICBNYWtlIGl0IGdsb2JhbC4KLSsJKGkzODZfbGludXhfcmVnaXN0 ZXJfdHlwZSk6IE5ldy4KLSsJKGkzODZfbGludXhfaW5pdF9hYmkpOiBSZXN0b3JlIHNldF9nZGJh cmNoX251bV9yZWdzIGFuZAotKwlzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lLiAgQ2FsbCBzZXRf Z2RiYXJjaF9yZWdpc3Rlcl90eXBlIGFuZAotKwlzZXRfZ2RiYXJjaF9yZW1vdGVfcmVnaXN0ZXJf bnVtYmVyLgotKwotKwkqIGkzODYtbGludXgtdGRlcC5oIChpMzg2X2xpbnV4X3JlZ2lzdGVyX25h bWUpOiBOZXcuCi0rCShpMzg2X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsKLSsy MDEwLTAyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1s aW51eC10ZGVwLmMgKGkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogRml4IGEKLSsJ dHlwbyBpbiBjb21tZW50cy4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogaTM4Ni10ZGVwLmMgKGkzODZfZ2RiYXJjaF9pbml0KTogT3B0aW1p emUgdGFyZ2V0IGRlc2NyaXB0aW9uCi0rCWNoZWNrLgotKwotKzIwMTAtMDItMDQgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC10ZGVwLmM6IEluY2x1 ZGUgImkzODYtbGludXgtdGRlcC5oIgotKwkoYW1kNjRfbGludXhfaW5pdF9hYmkpOiBDYWxsIHNl dF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlvbi4KLSsKLSsJKiBpMzg2LWxpbnV4LXRkZXAu YyAoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBGaXggYQotKwl0eXBvLgotKwot KzIwMTAtMDItMDQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2 NC1saW51eC1uYXQuYyAoX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTogU2V0Ci0rCXRvX3Jl YWRfZGVzY3JpcHRpb24gdG8gaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uLgotKwkqIGkzODYt bGludXgtbmF0LmMgKF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0KTogTGlrZXdpc2UuCi0rCi0r CSogYW1kNjQtbGludXgtdGRlcC5jIChhbWQ2NF9saW51eF9yZWdpc3Rlcl9uYW1lKTogUmVtb3Zl ZC4KLSsJKGFtZDY0X2xpbnV4X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lzZS4KLSsJKGFtZDY0X2xp bnV4X2luaXRfYWJpKTogRG9uJ3QgY2FsbCBzZXRfZ2RiYXJjaF9udW1fcmVncywKLSsJc2V0X2dk YmFyY2hfcmVnaXN0ZXJfbmFtZSBub3Igc2V0X2dkYmFyY2hfcmVnaXN0ZXJfdHlwZS4KLSsKLSsJ KiBhbWQ2NC10ZGVwLmMgKGFtZDY0X3JlZ2lzdGVyX25hbWVzKTogTWFrZSBpdCBnbG9iYWwuCi0r CShhbWQ2NF9yZWdpc3Rlcl9uYW1lKTogUmVtb3ZlZC4KLSsJKGFtZDY0X3JlZ2lzdGVyX3R5cGUp OiBMaWtld2lzZS4KLSsJKGFtZDY0X2luaXRfYWJpKTogRG9uJ3QgY2FsbCBzZXRfZ2RiYXJjaF9u dW1fcmVncywKLSsJc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZSBub3Igc2V0X2dkYmFyY2hfcmVn aXN0ZXJfdHlwZS4KLSsKLSsJKiBhbWQ2NC10ZGVwLmggKGFtZDY0X3JlZ2lzdGVyX25hbWVzKTog TmV3LgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jOiBJbmNsdWRlIGZlYXR1cmVzL2kzODYvaTM4 Ni1saW51eC5jIGFuZAotKwlmZWF0dXJlcy9pMzg2L3g4Ni02NC1saW51eC5jLgotKwkoaTM4Nl9s aW51eF9yZWdpc3Rlcl9uYW1lKTogUmVtb3ZlZC4KLSsJKGkzODZfbGludXhfY29yZV9yZWFkX2Rl c2NyaXB0aW9uKTogTmV3LgotKwkoaTM4Nl9saW51eF9yZWFkX2Rlc2NyaXB0aW9uKTogTGlrZXdp c2UuCi0rCShpMzg2X2xpbnV4X2luaXRfYWJpKTogRG9uJ3QgY2FsbCBzZXRfZ2RiYXJjaF9udW1f cmVncyBub3IKLSsJc2V0X2dkYmFyY2hfcmVnaXN0ZXJfbmFtZS4gIENhbGwKLSsJc2V0X2dkYmFy Y2hfY29yZV9yZWFkX2Rlc2NyaXB0aW9uLgotKwkoX2luaXRpYWxpemVfaTM4Nl9saW51eF90ZGVw KTogQ2FsbCBpbml0aWFsaXplX3RkZXNjX2kzODZfbGludXgKLSsJYW5kIGluaXRpYWxpemVfdGRl c2NfeDg2XzY0X2xpbnV4LgotKwotKwkqIGkzODYtbGludXgtdGRlcC5oIChpMzg2X2xpbnV4X2Nv cmVfcmVhZF9kZXNjcmlwdGlvbik6IE5ldy4KLSsJKGkzODZfbGludXhfcmVhZF9kZXNjcmlwdGlv bik6IExpa2V3aXNlLgotKwotKwkqIGkzODYtdGRlcC5jOiBJbmNsdWRlICJhbWQ2NC10ZGVwLmgi IGluc3RlYWQgb2YgImkzODYtdGRlcC5oIi4KLSsJSW5jbHVkZSBmZWF0dXJlcy9pMzg2L2kzODYu YyBhbmQgZmVhdHVyZXMvaTM4Ni94ODYtNjQuYy4KLSsJKGkzODZfbnVtX3JlZ2lzdGVyX25hbWVz KTogUmVtb3ZlZC4KLSsJKGkzODZfcmVnaXN0ZXJfbmFtZXMpOiBNYWtlIGl0IGNvbnN0LgotKwko aTM4Nl9tbXhfbmFtZXMpOiBMaWtld2lzZS4KLSsJKGkzODZfbnVtX3JlZ2lzdGVyX25hbWVzKTog UmVtb3ZlZC4KLSsJKGkzODZfcmVnaXN0ZXJfbmFtZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9lZmxh Z3NfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9teGNzcl90eXBlKTogTGlrZXdpc2UuCi0rCShp Mzg2X3NzZV90eXBlKTogTGlrZXdpc2UuCi0rCShpMzg2X3JlZ2lzdGVyX3R5cGUpOiBMaWtld2lz ZS4KLSsJKGkzODZfcHNldWRvX3JlZ2lzdGVyX25hbWUpOiBOZXcuCi0rCShpMzg2X3BzZXVkb19y ZWdpc3Rlcl90eXBlKTogTGlrZXdpc2UuCi0rCShpMzg2X21teF90eXBlKTogTWFrZSBpdCBzdGF0 aWMuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IERvbid0IGNhbGwgc2V0X2dkYmFyY2hfcmVnaXN0 ZXJfbmFtZQotKwlub3Igc2V0X2dkYmFyY2hfcmVnaXN0ZXJfdHlwZS4gIENhbGwKLSsJc2V0X3Rk ZXNjX3BzZXVkb19yZWdpc3Rlcl90eXBlLCBzZXRfdGRlc2NfcHNldWRvX3JlZ2lzdGVyX25hbWUK LSsJYW5kIHRkZXNjX3VzZV9yZWdpc3RlcnMuCi0rCShfaW5pdGlhbGl6ZV9pMzg2X3RkZXApOiBD YWxsIGluaXRpYWxpemVfdGRlc2NfaTM4NiBhbmQKLSsJaW5pdGlhbGl6ZV90ZGVzY194ODZfNjQu Ci0rCi0rCSogaTM4Ni10ZGVwLmggKGdkYmFyY2hfdGRlcCk6IFJlbW92ZSBpMzg2X2VmbGFnc190 eXBlLAotKwlpMzg2X214Y3NyX3R5cGUgYW5kIGkzODZfc3NlX3R5cGUuCi0rCShpMzg2X2VmbGFn c190eXBlKTogUmVtb3ZlZC4KLSsJKGkzODZfbXhjc3JfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4 Nl9tbXhfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9zc2VfdHlwZSk6IExpa2V3aXNlLgotKwko aTM4Nl9yZWdpc3Rlcl9uYW1lKTogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvTWFrZWZpbGUg KEkzODYtWE1MVE9DKTogTmV3LgotKwkoSTM4Ni1DRklMRVMpOiBMaWtld2lzZS4KLSsJKGkzODYt Y2ZpbGVzKTogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvaTM4Ni8zMmJpdC1zc2UueG1sOiBV cGRhdGUgdmVjMTI4IHR5cGUuCi0rCSogZmVhdHVyZXMvaTM4Ni82NGJpdC1zc2UueG1sOiBMaWtl d2lzZS4KLSsKLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYtbGludXguYzogUmVnZW5lcmF0ZWQuCi0r CSogZmVhdHVyZXMvaTM4Ni9pMzg2LmM6IExpa2V3aXNlLgotKwkqIGZlYXR1cmVzL2kzODYveDg2 LTY0LWxpbnV4LmM6IExpa2V3aXNlLgotKwkqIGZlYXR1cmVzL2kzODYveDg2LTY0LmM6IExpa2V3 aXNlLgotKwotKzIwMTAtMDItMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiB0YXJnZXQtZGVzY3JpcHRpb25zLmMgKHRkZXNjX3R5cGUpOiBBZGQgVERFU0NfVFlQRV9J Mzg3X0VYVCwKLSsJVERFU0NfVFlQRV9JMzg2X0VGTEFHUyBhbmQgVERFU0NfVFlQRV9JMzg2X01Y Q1NSLgotKwkodGRlc2NfcHJlZGVmaW5lZF90eXBlcyk6IEFkZCBpMzg3X2V4dCwgaTM4Nl9lZmxh Z3MgYW5kCi0rCWkzODZfbXhjc3IuCi0rCSh0ZGVzY19nZGJfdHlwZSk6IEhhbmRsZSBUREVTQ19U WVBFX0kzODdfRVhULAotKwlUREVTQ19UWVBFX0kzODZfRUZMQUdTIGFuZCBUREVTQ19UWVBFX0kz ODZfTVhDU1IuCi0rCSgKLSsJKiBmZWF0dXJlcy9pMzg2LzMyYml0LWNvcmUueG1sOiBSZXBsYWNl IGkzODZfZXh0IHdpdGggaTM4N19leHQuCi0rCSogZmVhdHVyZXMvaTM4Ni82NGJpdC1jb3JlLnht bDogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvaTM4Ni9pMzg2LWxpbnV4LmM6IE5ldy4KLSsJ KiBmZWF0dXJlcy9pMzg2L2kzODYuYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni94ODYt NjQtbGludXguYzogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni94ODYtNjQuYzogTGlrZXdp c2UuCi0rCi0rMjAxMC0wMi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwot KwkqIGZlYXR1cmVzL2kzODYvMzJiaXQtY29yZS54bWw6IE5ldy4KLSsJKiBmZWF0dXJlcy9pMzg2 LzMyYml0LWxpbnV4LnhtbDogTGlrZXdpc2UuCi0rCSogZmVhdHVyZXMvaTM4Ni8zMmJpdC1zc2Uu eG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWNvcmUueG1sOiBMaWtld2lz ZS4KLSsJKiBmZWF0dXJlcy9pMzg2LzY0Yml0LWxpbnV4LnhtbDogTGlrZXdpc2UuCi0rCSogZmVh dHVyZXMvaTM4Ni82NGJpdC1zc2UueG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L2kz ODYtbGludXgueG1sOiBMaWtld2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L2kzODYueG1sOiBMaWtl d2lzZS4KLSsJKiBmZWF0dXJlcy9pMzg2L3g4Ni02NC1saW51eC54bWw6IExpa2V3aXNlLgotKwkq IGZlYXR1cmVzL2kzODYveDg2LTY0LnhtbDogTGlrZXdpc2UuCi0rCi0rCSogZmVhdHVyZXMvTWFr ZWZpbGUgKFdISUNIKTogQWRkIGkzODYvaTM4NiwgaTM4Ni9pMzg2LWxpbnV4LAotKwlpMzg2L3g4 Ni02NCBhbmQgaTM4Ni94ODYtNjQtbGludXguCi0rCShpMzg2L2kzODYtZXhwZWRpdGUpOiBOZXcu Ci0rCShpMzg2L2kzODYtbGludXgtZXhwZWRpdGUpOiBMaWtld2lzZS4KLSsJKGkzODYveDg2LTY0 LWV4cGVkaXRlKTpMaWtld2lzZS4KLSsJKGkzODYveDg2LTY0LWxpbnV4LWV4cGVkaXRlKTogTGlr ZXdpc2UuCi0rCSgkKG91dGRpcikvaTM4Ni9pMzg2LmRhdCk6IE5ldyBkZXBlbmRlbmN5LgotKwko JChvdXRkaXIpL2kzODYvaTM4Ni1saW51eC5kYXQpOiBMaWtld2lzZS4KLSsJKCQob3V0ZGlyKS9p Mzg2L3g4Ni02NC5kYXQpOiBMaWtld2lzZS4KLSsJKCQob3V0ZGlyKS9pMzg2L3g4Ni02NC1saW51 eC5kYXQpOiBMaWtld2lzZS4KLSsKLSsJKiByZWdmb3JtYXRzL2kzODYvaTM4Ni1saW51eC5kYXQ6 IFJlZ2VuZXJhdGVkLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2LmRhdDogTGlrZXdpc2UuCi0r CSogcmVnZm9ybWF0cy9pMzg2L3g4Ni02NC1saW51eC5kYXQ6IExpa2V3aXNlLgotKwkqIHJlZ2Zv cm1hdHMvaTM4Ni94ODYtNjQuZGF0OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAzICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogcmVnZm9ybWF0cy9yZWctaTM4Ni1saW51 eC5kYXQ6IE1vdmVkIHRvIC4uLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWxpbnV4LmRhdDog SGVyZS4KLSsKLSsJKiByZWdmb3JtYXRzL3JlZy1pMzg2LmRhdDogTW92ZWQgdG8gLi4uCi0rCSog cmVnZm9ybWF0cy9pMzg2L2kzODYuZGF0OiBIZXJlLgotKwotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4 Ni02NC1saW51eC5kYXQ6IE1vdmVkIHRvIC4uLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni94ODYtNjQt bGludXguZGF0OiBIZXJlLgotKwotKwkqIHJlZ2Zvcm1hdHMvcmVnLXg4Ni02NC5kYXQ6IE1vdmVk IHRvIC4uLgotKwkqIHJlZ2Zvcm1hdHMvaTM4Ni94ODYtNjQuZGF0OiBIZXJlLgotLS0tIC4vZ2Ri L0NoYW5nZUxvZy54c3RhdGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsr KyAuL2dkYi9DaGFuZ2VMb2cueHN0YXRlCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICsw MjAwCi1AQCAtMCwwICsxLDM4NCBAQAotKzIwMTAtMDItMDEgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0 X2luaXQpOiBVcGRhdGVkLgotKwotKzIwMTAtMDEtMzEgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X2luaXRfYWJpKTogVXBkYXRlZC4K LSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX2luaXQpOiBMaWtld2lzZS4KLSsKLSsJKiBp Mzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0X2luaXQpOiBDaGFuZ2UgZnVuY3Rp b24KLSsJYXJndW1lbnRzLgotKwkqIGkzODYtdGRlcC5oIChpMzg2X2dkYmFyY2hfdmVjdG9yX3Vu aXRfaW5pdCk6IExpa2Vpc2UuCi0rCi0rMjAxMC0wMS0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGNvbW1vbi94c3RhdGUtbmF0LmMgKGkzODZfeHN0YXRlX2luaXQp OiBVc2UgZW5hYmxlZCBzaXplLgotKwotKzIwMTAtMDEtMjggIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfZnhzYXZlKTogQ2hl Y2sgdmVjdG9yX3VuaXQuCi0rCShpMzg3X2NvbGxlY3RfZnhzYXZlKTogTGlrZXdpc2UuCi0rCi0r MjAxMC0wMS0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIHJlZ2Nh Y2hlLmMgKHJlZ2NhY2hlX3Jhd19zdXBwbHlfcGFydCk6IEdyb3VwIGl0IHdpdGggLi4uCi0rCShy ZWdjYWNoZV9yYXdfY29sbGVjdF9wYXJ0KTogVGhpcy4KLSsKLSsyMDEwLTAxLTI4ICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ni1saW51eC10ZGVwLmMgKGkzODZf bGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uKTogU2V0Ci0rCXZlY3Rvcl91bml0IHRvIHNzZSBp ZiB0aGVyZSBpcyBubyAucmVnLXhzdGF0ZSBzZWN0aW9uLgotKwotKzIwMTAtMDEtMjcgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoX2lu aXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTogQXNzZXJ0Ci0rCWkzODZfeHN0YXRlLnN0YXRlICE9 IFhTVEFURV9VTktOT1dOIGluc3RlYWQgb2YgY2FsbGluZyBpMzg2X3hzdGF0ZV9pbml0LgotKwkq IGkzODYtbGludXgtbmF0LmMgKF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0KTogTGlrZXdpc2Uu Ci0rCi0rMjAxMC0wMS0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGFtZDY0LWxpbnV4LXRkZXAuYyAoX2luaXRpYWxpemVfYW1kNjRfbGludXhfdGRlcCk6IENhbGwK LSsJaTM4Nl94c3RhdGVfaW5pdCBhbmQgdXBkYXRlIHRoZSBYU0FWRSBleHRlbmRlZCBzdGF0ZSBz aXplIG9uCi0rCUxpbnV4L3g4NiBob3N0LgotKwkqIGkzODYtbGludXgtdGRlcC5jIChfaW5pdGlh bGl6ZV9pMzg2X2xpbnV4X3RkZXApOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTI3ICBILkouIEx1 ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtdGRlcC5jOiBJbmNs dWRlICJpMzg2LWxpbnV4LXRkZXAuaCIgYW5kICJyZWdzZXQuaCIuCi0rCShhbWQ2NF9saW51eF9y ZWdzZXRfc2VjdGlvbnMpOiBOZXcuCi0rCShhbWQ2NF9saW51eF9pbml0X2FiaSk6IENhbGwgc2V0 X2dkYmFyY2hfY29yZV9yZWdzZXRfc2VjdGlvbnMKLSsJd2l0aCBhbWQ2NF9saW51eF9yZWdzZXRf c2VjdGlvbnMuICBDYWxsCi0rCXNldF9nZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlvbiB3aXRo Ci0rCWkzODZfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uLgotKwotKwkqIGFtZDY0LXRkZXAu YyAoYW1kNjRfc3VwcGx5X3hzdGF0ZXJlZ3NldCk6IE5ldy4KLSsJKGFtZDY0X2NvbGxlY3RfeHN0 YXRlcmVnc2V0KTogTGlrZXdpc2UuCi0rCShhbWQ2NF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24p OiBDaGVjayAucmVnLXhzdGF0ZSBzZWN0aW9uLgotKwotKwkqIGkzODYtbGludXgtdGRlcC5jIChp Mzg2X2xpbnV4X3JlZ3NldF9zZWN0aW9ucyk6IEFkZAotKwkucmVnLXhzdGF0ZSBzZWN0aW9uLgot KwkoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0rCShpMzg2X2xpbnV4 X2luaXRfYWJpKTogQ2FsbCBzZXRfZ2RiYXJjaF9jb3JlX3JlYWRfZGVzY3JpcHRpb24KLSsJd2l0 aCBpMzg2X2xpbnV4X2NvcmVfcmVhZF9kZXNjcmlwdGlvbi4KLSsKLSsJKiBpMzg2LWxpbnV4LXRk ZXAuaCAoaTM4Nl9saW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOiBOZXcuCi0rCi0rCSogaTM4 Ni10ZGVwLmMgKGkzODZfc3VwcGx5X3hzdGF0ZXJlZ3NldCk6IE5ldy4KLSsJKGkzODZfY29sbGVj dF94c3RhdGVyZWdzZXQpOiBMaWtld2lzZS4KLSsJKGkzODZfcmVnc2V0X2Zyb21fY29yZV9zZWN0 aW9uKTogQ2hlY2sgLnJlZy14c3RhdGUgc2VjdGlvbi4KLSsJKGkzODZfZ2RiYXJjaF9pbml0KTog SW5pdGlhbGl6ZSB4c3RhdGVyZWdzZXQgdG8gTlVMTC4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoZ2Ri YXJjaF90ZGVwKTogQWRkIHhzdGF0ZXJlZ3NldC4KLSsKLSsyMDEwLTAxLTI3ICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtdGRlcC5jIChhbWQ2NF9pbml0X2Fi aSk6IFNldCBzaXplb2ZfeHN0YXRlcmVnc2V0IHRvIDAuCi0rCi0rCSogaTM4Ni10ZGVwLmMgKGkz ODZfZ2RiYXJjaF92ZWN0b3JfdW5pdF9pbml0KTogU2V0Ci0rCXNpemVvZl94c3RhdGVyZWdzZXQg aWYgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgaXMgc3VwcG9ydGVkLgotKwkoaTM4Nl9nZGJhcmNoX2lu aXQpOiBTZXQgc2l6ZW9mX3hzdGF0ZXJlZ3NldCB0byAwLgotKwotKwkqIGkzODYtdGRlcC5oIChn ZGJhcmNoX3RkZXApOiBBZGQgc2l6ZW9mX3hzdGF0ZXJlZ3NldC4KLSsKLSsJKiBjb21tb24veHN0 YXRlLW5hdC5jIChpMzg2X3hzdGF0ZV9pbml0KTogU2V0IGkzODZfeHN0YXRlLnNpemUuCi0rCi0r CSogY29tbW9uL3hzdGF0ZS1uYXQuaCAoaTM4Nl94c3RhdGVfdHlwZSk6IEFkZCBzaXplLgotKwot KzIwMTAtMDEtMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2 NC10ZGVwLmMgKGFtZDY0X3JlZ2lzdGVyX25hbWVzKTogUmVuYW1lZCB0byAuLi4KLSsJKGFtZDY0 X3NzZV9yZWdpc3Rlcl9uYW1lcyk6IFRoaXMuICBSZW1vdmUgQVZYIHJlZ2lzdGVycy4KLSsJKGFt ZDY0X2F2eF9yZWdpc3Rlcl9uYW1lcyk6IE5ldy4KLSsJKEFNRDY0X05VTV9SRUdTKTogVXBkYXRl ZC4KLSsJKGFtZDY0X3JlZ2lzdGVyX25hbWUpOiBIYW5kbGUgdmVjdG9yX3VuaXQuCi0rCShhbWQ2 NF9yZWdpc3Rlcl90eXBlKTogUmVwbGFjZSBpMzg2X3NzZV90eXBlIHdpdGgKLSsJaTM4Nl92ZWN0 b3JfdHlwZS4KLSsKLSsJKiBkZWZzLmggKE1BWF9SRUdJU1RFUl9TSVpFKTogSW5jcmVhc2UgdG8g MzIuCi0rCi0rCSogaTM4Ni10ZGVwLmM6IChpMzg2X3JlZ2lzdGVyX25hbWVzKTogUmVuYW1lZCB0 byAuLi4KLSsJKGkzODZfc3NlX3JlZ2lzdGVyX25hbWVzKTogVGhpcy4KLSsJKGkzODZfYXZ4X3Jl Z2lzdGVyX25hbWVzKTogTmV3LgotKwkoaTM4Nl92ZWMxMjhfdHlwZSk6IExpa2V3aXNlLgotKwko aTM4Nl92ZWMyNTZfdHlwZSk6IExpa2V3aXNlLgotKwkoaTM4Nl9udW1fcmVnaXN0ZXJfbmFtZXMp OiBVcGRhdGVkLgotKwkoaTM4Nl9nZGJhcmNoX3NzZV91bml0X2luaXQpOiBMaWtld2lzZS4KLSsJ KGkzODZfcmVnaXN0ZXJfbmFtZSk6IEhhbmRsZSB2ZWN0b3JfdW5pdC4KLSsJKGkzODZfc3NlX3R5 cGUpOiBSZW5hbWVkIHRvIC4uLgotKwkoaTM4Nl92ZWN0b3JfdHlwZSk6IFRoaXMuICBIYW5kbGUg dmVjdG9yX3VuaXQuCi0rCShhbWQ2NF9yZWdpc3Rlcl90eXBlKTogUmVwbGFjZSBpMzg2X3NzZV90 eXBlIHdpdGgKLSsJaTM4Nl92ZWN0b3JfdHlwZS4KLSsKLSsJKiBpMzg2LXRkZXAuaCAoZ2RiYXJj aF90ZGVwKTogUmVwbGFjZSBpMzg2X3NzZV90eXBlIHdpdGgKLSsJaTM4Nl92ZWN0b3JfdHlwZS4K LSsJKEkzODZfTUFYX1JFR0lTVEVSX1NJWkUpOiBJbmNyZWFzZSB0byAzMi4KLSsJKGkzODZfc3Nl X3R5cGUpOiBSZW5hbWVkIHRvIC4uLgotKwkoaTM4Nl92ZWN0b3JfdHlwZSk6IFRoaXMuCi0rCi0r MjAxMC0wMS0yNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIE1ha2Vm aWxlLmluICh4c2F2ZS1uYXQubyk6IFJlbmFtZWQgdG8gLi4uCi0rCSh4c3RhdGUtbmF0Lm8pOiBU aGlzLgotKwotKwkqIGNvbW1vbi94c2F2ZS1uYXQuYzogTW92ZWQgdG8gLi4uCi0rCSogY29tbW9u L3hzdGF0ZS1uYXQuYzogVGhpcy4KLSsKLSsJKiBjb21tb24veHNhdmUtbmF0Lmg6IE1vdmVkIHRv IC4uLgotKwkqIGNvbW1vbi94c3RhdGUtbmF0Lmg6IFRoaXMuCi0rCi0rCSogY29uZmlnL2kzODYv bGludXgubWggKE5BVERFUEZJTEVTKTogUmVwbGFjZSB4c2F2ZS1uYXQubyB3aXRoCi0rCXhzdGF0 ZS1uYXQuby4KLSsJKiBjb25maWcvaTM4Ni9saW51eDY0Lm1oIChOQVRERVBGSUxFUyk6IExpa2V3 aXNlLgotKwotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4Lmg6IEluY2x1ZGUgInhzdGF0ZS1uYXQu aCIgaW5zdGVhZCBvZgotKwkieHNhdmUtbmF0LmgiLgotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4 NjQuaDogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9mZXRjaF9pbmZl cmlvcl9yZWdpc3RlcnMpOgotKwlJc3N1ZSBhbiBlcnJvciBpZiBQVFJBQ0VfR0VUWFNUQVRFUkVH UyBmYWlsZWQgYW5kIFhTQVZFCi0rCWV4dGVuZGVkIHN0YXRlIGlzIGhpZ2hlciB0aGFuIFNTRS4K LSsJKGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwkq IGkzODYtbGludXgtbmF0LmMgKGZldGNoX3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsJKHN0b3Jl X3hzdGF0ZXJlZ3MpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTIyICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29tbW9uL3hzYXZlLW5hdC5jOiBJbmNsdWRlICJpMzg2 LWNwdWlkLmgiIGluc3RlYWQgb2YKLSsJImNvbmZpZy9pMzg2L2kzODYtY3B1aWQuaCIuCi0rCi0r CSogY29uZmlnL2kzODYvaTM4Ni1jcHVpZC5oOiBNb3ZlZCB0byAuLi4KLSsJKiBjb21tb24vaTM4 Ni1jcHVpZC5oOiBIZXJlLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoeHNhdmUtbmF0Lm8pOiBOZXcuCi0rCi0rCSog eHNhdmUtbmF0LmM6IE1vdmVkIHRvIC4uLgotKwkqIGNvbW1vbi94c2F2ZS1uYXQuYzogSGVyZS4K LSsKLSsJKiB4c2F2ZS1uYXQuaDogTW92ZWQgdG8gLi4uCi0rCSogY29tbW9uL3hzYXZlLW5hdC5o OiBIZXJlLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBpMzg2LWxpbnV4LW5hdC5jIChoYXZlX3B0cmFjZV9nZXR4c3RhdGVyZWdzKTogTmV3 LgotKwkoUFRSQUNFX0dFVFhTVEFURVJFR1MpOiBMaWtld2lzZS4KLSsJKFBUUkFDRV9TRVRYU1RB VEVSRUdTKTogTGlrZXdpc2UuCi0rCShmZXRjaF94c3RhdGVyZWdzKTogTGlrZXdpc2UuCi0rCShz dG9yZV94c3RhdGVyZWdzKTogTGlrZXdpc2UuCi0rCShpMzg2X2xpbnV4X2ZldGNoX2luZmVyaW9y X3JlZ2lzdGVycyk6IFN1cHBvcnQgWFNBVkUgZXh0ZW5kZWQKLSsJc3RhdGUuCi0rCShpMzg2X2xp bnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwkoX2luaXRpYWxpemVf aTM4Nl9saW51eF9uYXQpOiBDYWxsIGkzODZfeHN0YXRlX2luaXQgYW5kIHNldAotKwloYXZlX3B0 cmFjZV9nZXR4c3RhdGVyZWdzLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoeHNhdmVfYXZ4aF9vZmZzZXQpOiBOZXcu Ci0rCShYU0FWRV9BVlhIX0FERFIpOiBMaWtld2lzZS4KLSsJKGkzODdfc3VwcGx5X3hzYXZlKTog VXNlIFhTQVZFX1NTRV9BRERSIGFuZCBYU0FWRV9BVlhIX0FERFIgZm9yCi0rCUFWWCB2ZWN0b3Ig dW5pdC4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjIg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoeHNh dmVfc3NlX29mZnNldCk6IE5ldy4KLSsJKFhTQVZFX1NTRV9BRERSKTogTGlrZXdpc2UuCi0rCShp Mzg3X3N1cHBseV94c2F2ZSk6IFVzZSBYU0FWRV9TU0VfQUREUi4KLSsJKGkzODdfY29sbGVjdF94 c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiBpMzg3LXRkZXAuYyAoaTM4N19zdXBwbHlfeHNhdmUpOiBDaGVjayB2 ZWN0b3IgdW5pdC4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExpa2V3aXNlLgotKwotKzIwMTAt MDEtMjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBncmVnc2V0Lmgg KEdEQl9YU1RBVEVfU1NFX1JFR1NFVF9UKTogUmVtb3ZlZC4KLSsJKEdEQl9YU1RBVEVfQVZYX1JF R1NFVF9UKTogTGlrZXdpc2UuCi0rCShnZGJfeHN0YXRlX3NzZV9yZWdzZXRfdCk6IExpa2V3aXNl LgotKwkoZ2RiX3hzdGF0ZV9hdnhfcmVnc2V0X3QpOiBMaWtld2lzZS4KLSsJKHN1cHBseV94c3Rh dGVfc3NlX3JlZ3NldCk6IExpa2V3aXNlLgotKwkoc3VwcGx5X3hzdGF0ZV9hdnhfcmVnc2V0KTog TGlrZXdpc2UuCi0rCShmaWxsX3hzdGF0ZV9zc2VfcmVnc2V0KTogTGlrZXdpc2UuCi0rCShmaWxs X3hzdGF0ZV9hdnhfcmVnc2V0KTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIHJlZ2NhY2hlLmMgKHJlZ2NhY2hlX3Jhd19z dXBwbHlfcGFydCk6IE5ldy4KLSsJKHJlZ2NhY2hlX3Jhd19jb2xsZWN0X3BhcnQpOiBMaWtld2lz ZS4KLSsJKiByZWdjYWNoZS5oIChyZWdjYWNoZV9yYXdfc3VwcGx5X3BhcnQpOiBMaWtld2lzZS4K LSsJKHJlZ2NhY2hlX3Jhd19jb2xsZWN0X3BhcnQpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTIy ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0 LmMgKGFtZDY0X2luaXRfYWJpKTogQ2FsbAotKwlpMzg2X2dkYmFyY2hfdmVjdG9yX3VuaXRfaW5p dC4KLSsKLSsJKiBpMzg2LXRkZXAuYyAoaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0X2luaXQpOiBO ZXcuCi0rCShpMzg2X2dkYmFyY2hfaW5pdCk6IENhbGwgaTM4Nl9nZGJhcmNoX3ZlY3Rvcl91bml0 X2luaXQuCi0rCi0rCSogaTM4Ni10ZGVwLmggKHg4Nl92ZWN0b3JfdW5pdCk6IE5ldy4KLSsJKGdk YmFyY2hfdGRlcCk6IEFkZCB2ZWN0b3JfdW5pdC4KLSsKLSsyMDEwLTAxLTIyICBILkouIEx1ICA8 aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmMgKF9pbml0aWFs aXplX2FtZDY0X2xpbnV4X25hdCk6IEFsd2F5cyBjYWxsCi0rCWkzODZfeHN0YXRlX2luaXQgKCku Ci0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGFtZDY0LWxpbnV4LW5hdC5jIChoYXZlX3B0cmFjZV9nZXR4c3RhdGVyZWdzKTogTmV3LgotKwko UFRSQUNFX0dFVFhTVEFURVJFR1MpOiBMaWtld2lzZS4KLSsJKFBUUkFDRV9TRVRYU1RBVEVSRUdT KTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMpOiBT dXBwb3J0IFhTQVZFIGV4dGVuZGVkCi0rCXN0YXRlLgotKwkoYW1kNjRfbGludXhfc3RvcmVfaW5m ZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCShhbWQ2NF9saW51eF9mZXRjaF9pbmZlcmlv cl9yZWdpc3RlcnNfd2l0aF94c2F2ZSk6IFJlbW92ZWQuCi0rCShhbWQ2NF9saW51eF9zdG9yZV9p bmZlcmlvcl9yZWdpc3RlcnNfd2l0aF94c2F2ZSk6IExpa2V3aXNlLgotKwkoX2luaXRpYWxpemVf YW1kNjRfbGludXhfbmF0KTogVXBkYXRlZC4KLSsKLSsJKiBjb25maWd1cmUuYWM6IFJlbW92ZSBj aGVjayBmb3IgUFRSQUNFX0dFVFhTVEFURVJFR1MuCi0rCSogY29uZmlnLmluOiBSZWdlbmVyYXRl ZC4KLSsJKiBjb25maWd1cmU6IExpa2V3aXNlLgotKwotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4 LmggKFVTRV9YU0FWRSk6IENoYW5nZWQgdG8gLi4uCi0rCShGSUxMX1hTVEFURVJFR1NFVCk6IFRo aXMuCi0rCSogb25maWcvaTM4Ni9ubS1saW51eDY0Lmg6IExpa2V3aXNlLgotKwotKzIwMTAtMDEt MjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiB4c2F2ZS1uYXQuYyAo aTM4Nl94c3RhdGVfaW5pdCk6IFByb3Blcmx5IHNldCBzdGF0ZS4KLSsKLSsyMDEwLTAxLTIxICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogYW1kNjQtbGludXgtbmF0LmM6 IERvbid0IGluY2x1ZGUgInhzYXZlLW5hdC5oIi4KLSsJKGFtZDY0X2xpbnV4X2ZldGNoX2luZmVy aW9yX3JlZ2lzdGVyc193aXRoX3hzdGF0ZSk6IFJlbmFtZWQgdG8gLi4uCi0rCShhbWQ2NF9saW51 eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnNfd2l0aF94c2F2ZSk6IFRoaXMuCi0rCShhbWQ2NF9s aW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnNfd2l0aF94c3RhdGUpOiBSZW5hbWVkIHRvIC4u LgotKwkoYW1kNjRfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHNhdmUpOiBU aGlzLgotKwotKwkqIGNvbmZpZy9pMzg2L25tLWxpbnV4Lmg6IEluY2x1ZGUgInhzYXZlLW5hdC5o Ii4KLSsJKiBjb25maWcvaTM4Ni9ubS1saW51eDY0Lmg6IExpa2V3aXNlLgotKwotKzIwMTAtMDEt MjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb25maWcvaTM4Ni9s aW51eDY0Lm1oIChOQVRfRklMRSk6IFNldCB0byBubS1saW51eDY0LmguCi0rCi0rCSogY29uZmln L2kzODYvbm0tbGludXguaCAoVVNFX1hTQVZFKTogTmV3LgotKwotKwkqIGNvbmZpZy9pMzg2L25t LWxpbnV4NjQuaDogTmV3LgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25naml1Lmx1QGlu dGVsLmNvbT4KLSsKLSsJKiB4c2F2ZS1uYXQuYzogSW5jbHVkZSAiY29uZmlnL2kzODYvaTM4Ni1j cHVpZC5oIiBpZiA8Y3B1aWQuaD4KLSsJaXNuJ3QgYXZhaWxhYmxlLgotKwotKwkqIGNvbmZpZy9p Mzg2L2kzODYtY3B1aWQuaDogTmV3LiBUYWtlbiBmcm9tIGdjYyA0LjQuCi0rCi0rMjAxMC0wMS0y MSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGFtZDY0LWxpbnV4LW5h dC5jOiBJbmNsdWRlICJ4c2F2ZS1uYXQuaCIKLSsJKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25h dCk6IENoZWNrIEhBVkVfUFRSQUNFX0dFVFhTVEFURVJFR1MKLSsJaW5zdGVhZCBvZiBIQVZFX1NZ U19YU1RBVEVfSC4KLSsKLSsJKiBjb25maWd1cmUuYWM6IEFkZCBjaGVjayBmb3IgY3B1aWQuaC4g IFJlbW92ZSBjaGVjayBmb3IKLSsJc3lzL3hzdGF0ZS5oLCBfX2dldF94c3RhdGUgYW5kIF9fZ2V0 X3hzdGF0ZV9zaXplLgotKwkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZWQuCi0rCSogY29uZmlndXJl OiBMaWtld2lzZS4KLSsKLSsJKiBpMzg2LW5hdC5jIChpMzg2X3hzdGF0ZSk6IFJlbW92ZWQuCi0r CShpMzg2X3hzdGF0ZV9pbml0KTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni1uYXQuaCAoaTM4Nl94 c3RhdGVfdHlwZSk6IFJlbW92ZWQuCi0rCShpMzg2X3hzdGF0ZSk6IExpa2V3aXNlLgotKwkoaTM4 Nl94c3RhdGVfaW5pdCk6IExpa2V3aXNlLgotKwotKwkqIHhzYXZlLW5hdC5jOiBOZXcuCi0rCSog eHNhdmUtbmF0Lmg6IExpa2V3aXNlLgotKwotKwkqIGNvbmZpZy9pMzg2L2xpbnV4Lm1oIChOQVRE RVBGSUxFUyk6IEFkZCB4c2F2ZS1uYXQuby4KLSsJKiBjb25maWcvaTM4Ni9saW51eDY0Lm1oIChO QVRERVBGSUxFUyk6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1kNjRfbGludXhfZmV0 Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlKToKLSsJQ2FsbCBhbWQ2NF9zdXBwbHlf eHNhdmUgaW5zdGVhZCBvZiBhbWQ2NF9zdXBwbHlfZnhzYXZlLgotKwkoYW1kNjRfbGludXhfc3Rv cmVfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlKTogQ2FsbAotKwlhbWQ2NF9jb2xsZWN0 X2Z4c2F2ZSBpbnN0ZWFkIG9mIGFtZDY0X2NvbGxlY3RfeHNhdmUuCi0rCi0rCSogYW1kNjQtdGRl cC5jIChhbWQ2NF9zdXBwbHlfeHNhdmUpOiBOZXcuCi0rCShhbWQ2NF9jb2xsZWN0X3hzYXZlKTog TGlrZXdpc2UuCi0rCSogYW1kNjQtdGRlcC5oIChhbWQ2NF9zdXBwbHlfeHNhdmUpOiBMaWtld2lz ZS4KLSsJKGFtZDY0X2NvbGxlY3RfeHNhdmUpOiBMaWtld2lzZS4KLSsJKiBpMzg3LXRkZXAuYyAo aTM4N19zdXBwbHlfeHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdfY29sbGVjdF94c2F2ZSk6IExp a2V3aXNlLgotKwkqIGkzODctdGRlcC5oIChpMzg3X3N1cHBseV94c2F2ZSk6IExpa2V3aXNlLgot KwkoaTM4N19jb2xsZWN0X3hzYXZlKTogTGlrZXdpc2UuCi0rCi0rCSogaTM4Ni1uYXQuaDogVXBk YXRlIGNvbW1lbnRzLgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVs LmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1kNjRfbGludXhfZmV0Y2hfaW5mZXJp b3JfcmVnaXN0ZXJzKTogUmV2ZXJ0Ci0rCXRoZSBsYXN0IGNoYW5nZSwKLSsJKGFtZDY0X2xpbnV4 X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwkoYW1kNjRfbGludXhfZmV0 Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlKTogTmV3LgotKwkoYW1kNjRfbGludXhf c3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlKTogTGlrZXdpc2UuCi0rCShfaW5p dGlhbGl6ZV9hbWQ2NF9saW51eF9uYXQpOiBVc2UKLSsJYW1kNjRfbGludXhfZmV0Y2hfaW5mZXJp b3JfcmVnaXN0ZXJzX3dpdGhfeHN0YXRlIGFuZAotKwlhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlv cl9yZWdpc3RlcnNfd2l0aF94c3RhdGUgaWYgcG9zc2libGUuCi0rCi0rCSogaTM4Ni1uYXQuaCAo aTM4Nl94c3RhdGVfdHlwZSk6IFJlbmFtZSBzaXplIHRvIG5fb2ZfaW50NjQuCi0rCSogaTM4Ni1u YXQuYyAoaTM4Nl94c3RhdGUpOiBVcGRhdGVkLgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYyAoYW1kNjRfbGlu dXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzKToKLSsJVXNlIFBUUkFDRV9HRVRYU1RBVEVSRUdT L1BUUkFDRV9TRVRYU1RBVEVSRUdTIGlmIHBvc3NzaWJsZS4KLSsJKGFtZDY0X2xpbnV4X3N0b3Jl X2luZmVyaW9yX3JlZ2lzdGVycyk6IExpa2V3aXNlLgotKwkoX2luaXRpYWxpemVfYW1kNjRfbGlu dXhfbmF0KTogQ2FsbCBpMzg2X3hzdGF0ZV9pbml0LgotKwotKwkqIGkzODYtbmF0LmMgKGkzODZf eHN0YXRlKTogTmV3LgotKwkoaTM4Nl94c3RhdGVfaW5pdCk6IExpa2V3aXNlLgotKwotKwkqIGkz ODYtbmF0LmggKGkzODZfeHN0YXRlX3R5cGUpOiBOZXcuCi0rCShpMzg2X3hzdGF0ZSk6IExpa2V3 aXNlLgotKwkoaTM4Nl94c3RhdGVfaW5pdCk6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjEgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzog UmV2ZXJ0IHRoZSBjaGFuZ2UgY2hhbmdlLgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb25maWd1cmUuYWM6IEFkZCBjaGVjayBmb3IgX19n ZXRfeHN0YXRlX3NpemUuCi0rCSogY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KLSsJKiBjb25maWd1 cmU6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVs LmNvbT4KLSsKLSsJKiBhbWQ2NC1saW51eC1uYXQuYzogSW5jbHVkZSA8c3lzL3hzdGF0ZS5oPiBp ZiBIQVZFX1NZU19YU1RBVEVfSAotKwlpcyBkZWZpbmVkLgotKwkoaGF2ZV9wdHJhY2VfZ2V0eHN0 YXRlcmVncyk6IE5ldy4KLSsJKF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25hdCk6IENsZWFyIGhh dmVfcHRyYWNlX2dldHhzdGF0ZXJlZ3MKLSsJaWYgbmVlZGVkLgotKwotKwkqIGdyZWdzZXQuaCAo R0RCX1hTVEFURV9TU0VfUkVHU0VUX1QpOiBOZXcuCi0rCShHREJfWFNUQVRFX0FWWF9SRUdTRVRf VCk6IExpa2V3aXNlLgotKwkoZ2RiX3hzdGF0ZV9zc2VfcmVnc2V0X3QpOiBMaWtld2lzZS4KLSsJ KGdkYl94c3RhdGVfYXZ4X3JlZ3NldF90KTogTGlrZXdpc2UuCi0rCShzdXBwbHlfeHN0YXRlX3Nz ZV9yZWdzZXQpOiBMaWtld2lzZS4KLSsJKHN1cHBseV94c3RhdGVfYXZ4X3JlZ3NldCk6IExpa2V3 aXNlLgotKwkoZmlsbF94c3RhdGVfc3NlX3JlZ3NldCk6IExpa2V3aXNlLgotKwkoZmlsbF94c3Rh dGVfYXZ4X3JlZ3NldCk6IExpa2V3aXNlLgotKwotKzIwMTAtMDEtMjEgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb25maWd1cmUuYWM6IEFkZCBjaGVjayBmb3Igc3lz L3hzdGF0ZS5oLCBfX2dldF94c3RhdGUgYW5kCi0rCVBUUkFDRV9HRVRYU1RBVEVSRUdTLgotKwkq IGNvbmZpZy5pbjogUmVnZW5lcmF0ZWQuCi0rCSogY29uZmlndXJlOiBMaWtld2lzZS4KLS0tLSAu L2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIw MAotKysrIC4vZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAtMDQtMDMgMjE6MTU6MDguMDAwMDAw MDAwICswMjAwCi1AQCAtMjMsMTEgKzIzLDE0IEBACi0gI2luY2x1ZGUgImluZmVyaW9yLmgiCi0g I2luY2x1ZGUgImdkYmNvcmUuaCIKLSAjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAi cmVnc2V0LmgiCi0gI2luY2x1ZGUgImxpbnV4LW5hdC5oIgotICNpbmNsdWRlICJhbWQ2NC1saW51 eC10ZGVwLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0 cmluZy5oIgotKyNpbmNsdWRlICJlbGYvY29tbW9uLmgiCi0rI2luY2x1ZGUgPHN5cy91aW8uaD4K LSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpbmNsdWRlIDxzeXMvZGVidWdyZWcuaD4KLSAj aW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLUBAIC01NCw2ICs1NywxOCBAQAotICNpbmNsdWRlICJp Mzg3LXRkZXAuaCIKLSAjaW5jbHVkZSAiZWxmLWJmZC5oIgotICNpbmNsdWRlICJnZGJfcHJvY2Zz MzIuaCIKLSsjaW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIKLSsKLSsjaWZuZGVmIFBUUkFDRV9HRVRS RUdTRVQKLSsjZGVmaW5lIFBUUkFDRV9HRVRSRUdTRVQJMHg0MjA0Ci0rI2VuZGlmCi0rCi0rI2lm bmRlZiBQVFJBQ0VfU0VUUkVHU0VUCi0rI2RlZmluZSBQVFJBQ0VfU0VUUkVHU0VUCTB4NDIwNQot KyNlbmRpZgotKwotKy8qIERvZXMgdGhlIGN1cnJlbnQgaG9zdCBzdXBwb3J0IFBUUkFDRV9HRVRS RUdTRVQ/ICAqLwotK3N0YXRpYyBpbnQgaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0ID0gLTE7Ci0gCi0g LyogTWFwcGluZyBiZXR3ZWVuIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzIGluIEdOVS9M aW51eCB4ODYtNjQKLSAgICBgc3RydWN0IHVzZXInIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIg Y2FjaGUgbGF5b3V0LiAgKi8KLUBAIC03Niw2ICs5MSw4IEBAIHN0YXRpYyBpbnQgYW1kNjRfbGlu dXhfZ3JlZ3NldDY0X3JlZ19vZmYKLSAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwK LSAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSAgIC0xLCAtMSwgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsCi0rICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCi0r ICAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCi0gICBPUklHX1JBWCAqIDgKLSB9Owot IAwKLUBAIC0xMzEsNiArMTQ4LDcgQEAgc3RhdGljIGludCBhbWQ2NF9saW51eF9ncmVnc2V0MzJf cmVnX29mZgotICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotICAgLTEsIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLAotICAgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0x LCAtMSwKLSsgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSAgIE9SSUdfUkFYICog OAkJCS8qICJvcmlnX2VheCIgKi8KLSB9OwotIAwKLUBAIC0zMTIsMTAgKzMzMCwyNiBAQCBhbWQ2 NF9saW51eF9mZXRjaF9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0Ci0gICAgIHsKLSAgICAgICBlbGZf ZnByZWdzZXRfdCBmcHJlZ3M7Ci0gCi0tICAgICAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVEZQUkVH UywgdGlkLCAwLCAobG9uZykgJmZwcmVncykgPCAwKQotLQlwZXJyb3Jfd2l0aF9uYW1lIChfKCJD b3VsZG4ndCBnZXQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwotKyAgICAgIGlmIChoYXZlX3B0 cmFjZV9nZXRyZWdzZXQpCi0rCXsKLSsJICBjaGFyIHhzdGF0ZXJlZ3NbSTM4Nl9YU1RBVEVfTUFY X1NJWkVdOwotKwkgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0rCi0rCSAgaW92Lmlvdl9iYXNlID0geHN0 YXRlcmVnczsKLSsJICBpb3YuaW92X2xlbiA9IHNpemVvZiAoeHN0YXRlcmVncyk7Ci0rCSAgaWYg KHB0cmFjZSAoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLAotKwkJICAgICAgKHVuc2lnbmVkIGludCkg TlRfWDg2X1hTVEFURSwgKGxvbmcpICZpb3YpIDwgMCkKLSsJICAgIHBlcnJvcl93aXRoX25hbWUg KF8oIkNvdWxkbid0IGdldCBleHRlbmRlZCBzdGF0ZSBzdGF0dXMiKSk7Ci0gCi0tICAgICAgYW1k NjRfc3VwcGx5X2Z4c2F2ZSAocmVnY2FjaGUsIC0xLCAmZnByZWdzKTsKLSsJICBhbWQ2NF9zdXBw bHlfeHNhdmUgKHJlZ2NhY2hlLCAtMSwgeHN0YXRlcmVncyk7Ci0rCX0KLSsgICAgICBlbHNlCi0r CXsKLSsJICBpZiAocHRyYWNlIChQVFJBQ0VfR0VURlBSRUdTLCB0aWQsIDAsIChsb25nKSAmZnBy ZWdzKSA8IDApCi0rCSAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgZmxvYXRp bmcgcG9pbnQgc3RhdHVzIikpOwotKwotKwkgIGFtZDY0X3N1cHBseV9meHNhdmUgKHJlZ2NhY2hl LCAtMSwgJmZwcmVncyk7Ci0rCX0KLSAgICAgfQotIH0KLSAKLUBAIC0zNTUsMTUgKzM4OSwzMyBA QCBhbWQ2NF9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0Ci0gICAgIHsKLSAgICAg ICBlbGZfZnByZWdzZXRfdCBmcHJlZ3M7Ci0gCi0tICAgICAgaWYgKHB0cmFjZSAoUFRSQUNFX0dF VEZQUkVHUywgdGlkLCAwLCAobG9uZykgJmZwcmVncykgPCAwKQotLQlwZXJyb3Jfd2l0aF9uYW1l IChfKCJDb3VsZG4ndCBnZXQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwotKyAgICAgIGlmICho YXZlX3B0cmFjZV9nZXRyZWdzZXQpCi0rCXsKLSsJICBjaGFyIHhzdGF0ZXJlZ3NbSTM4Nl9YU1RB VEVfTUFYX1NJWkVdOwotKwkgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0gCi0tICAgICAgYW1kNjRfY29s bGVjdF9meHNhdmUgKHJlZ2NhY2hlLCByZWdudW0sICZmcHJlZ3MpOwotKwkgIGlvdi5pb3ZfYmFz ZSA9IHhzdGF0ZXJlZ3M7Ci0rCSAgaW92Lmlvdl9sZW4gPSBzaXplb2YgKHhzdGF0ZXJlZ3MpOwot KwkgIGlmIChwdHJhY2UgKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwKLSsJCSAgICAgICh1bnNpZ25l ZCBpbnQpIE5UX1g4Nl9YU1RBVEUsIChsb25nKSAmaW92KSA8IDApCi0rCSAgICBwZXJyb3Jfd2l0 aF9uYW1lIChfKCJDb3VsZG4ndCBnZXQgZXh0ZW5kZWQgc3RhdGUgc3RhdHVzIikpOwotKwotKwkg IGFtZDY0X2NvbGxlY3RfeHNhdmUgKHJlZ2NhY2hlLCByZWdudW0sIHhzdGF0ZXJlZ3MsIDApOwot KwotKwkgIGlmIChwdHJhY2UgKFBUUkFDRV9TRVRSRUdTRVQsIHRpZCwKLSsJCSAgICAgICh1bnNp Z25lZCBpbnQpIE5UX1g4Nl9YU1RBVEUsIChsb25nKSAmaW92KSA8IDApCi0rCSAgICBwZXJyb3Jf d2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBleHRlbmRlZCBzdGF0ZSBzdGF0dXMiKSk7Ci0r CX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAocHRyYWNlIChQVFJBQ0VfR0VURlBSRUdTLCB0 aWQsIDAsIChsb25nKSAmZnByZWdzKSA8IDApCi0rCSAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJD b3VsZG4ndCBnZXQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwotIAotLSAgICAgIGlmIChwdHJh Y2UgKFBUUkFDRV9TRVRGUFJFR1MsIHRpZCwgMCwgKGxvbmcpICZmcHJlZ3MpIDwgMCkKLS0JcGVy cm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3Qgd3JpdGUgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikp OwotKwkgIGFtZDY0X2NvbGxlY3RfZnhzYXZlIChyZWdjYWNoZSwgcmVnbnVtLCAmZnByZWdzKTsK LSAKLS0gICAgICByZXR1cm47Ci0rCSAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVEZQUkVHUywgdGlk LCAwLCAobG9uZykgJmZwcmVncykgPCAwKQotKwkgICAgcGVycm9yX3dpdGhfbmFtZSAoXygiQ291 bGRuJ3Qgd3JpdGUgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIikpOwotKwl9Ci0gICAgIH0KLSB9Ci0g DAotQEAgLTgzMSw2ICs4ODMsOCBAQCBhbWQ2NF9saW51eF9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1 Y3QgdGFyCi0gewotICAgdW5zaWduZWQgbG9uZyBjczsKLSAgIGludCB0aWQ7Ci0rICBpbnQgaXNf NjRiaXQ7Ci0rICBzdGF0aWMgdWludDY0X3QgeGNyMDsKLSAKLSAgIC8qIEdOVS9MaW51eCBMV1Ag SUQncyBhcmUgcHJvY2VzcyBJRCdzLiAgKi8KLSAgIHRpZCA9IFRJREdFVCAoaW5mZXJpb3JfcHRp ZCk7Ci1AQCAtODQ0LDEwICs4OTgsNTUgQEAgYW1kNjRfbGludXhfcmVhZF9kZXNjcmlwdGlvbiAo c3RydWN0IHRhcgotICAgaWYgKGVycm5vICE9IDApCi0gICAgIHBlcnJvcl93aXRoX25hbWUgKF8o IkNvdWxkbid0IGdldCBDUyByZWdpc3RlciIpKTsKLSAKLS0gIGlmIChjcyA9PSBBTUQ2NF9MSU5V WF9VU0VSNjRfQ1MpCi0tICAgIHJldHVybiB0ZGVzY19hbWQ2NF9saW51eDsKLSsgIGlzXzY0Yml0 ID0gY3MgPT0gQU1ENjRfTElOVVhfVVNFUjY0X0NTOwotKwotKyAgaWYgKGhhdmVfcHRyYWNlX2dl dHJlZ3NldCA9PSAtMSkKLSsgICAgewotKyAgICAgIHVpbnQ2NF90IHhzdGF0ZXJlZ3NbKEkzODZf WFNUQVRFX1NTRV9TSVpFIC8gc2l6ZW9mICh1aW50NjRfdCkpXTsKLSsgICAgICBzdHJ1Y3QgaW92 ZWMgaW92OwotKyAgICAgIHVuc2lnbmVkIGludCB4c3RhdGVfc2l6ZTsKLSsKLSsgICAgICBpb3Yu aW92X2Jhc2UgPSB4c3RhdGVyZWdzOwotKyAgICAgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mICh4c3Rh dGVyZWdzKTsKLSsKLSsgICAgICAvKiBDaGVjayBpZiBQVFJBQ0VfR0VUUkVHU0VUIHdvcmtzLiAg Ki8KLSsgICAgICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUUkVHU0VULCB0aWQsCi0rCQkgICh1bnNp Z25lZCBpbnQpIE5UX1g4Nl9YU1RBVEUsIChsb25nKSAmaW92KSA8IDApCi0rCXsKLSsJICBoYXZl X3B0cmFjZV9nZXRyZWdzZXQgPSAwOwotKwkgIHhzdGF0ZV9zaXplID0gMDsKLSsJfQotKyAgICAg IGVsc2UKLSsJewotKwkgIGhhdmVfcHRyYWNlX2dldHJlZ3NldCA9IDE7Ci0rCi0rCSAgLyogR2V0 IFhDUjAgZnJvbSBYU0FWRSBleHRlbmRlZCBzdGF0ZS4gICovCi0rCSAgeGNyMCA9IHhzdGF0ZXJl Z3NbKEkzODZfTElOVVhfWFNBVkVfWENSMF9PRkZTRVQKLSsJCQkgICAgIC8gc2l6ZW9mICh1aW50 NjRfdCkpXTsKLSsKLSsJICB4c3RhdGVfc2l6ZSA9IEkzODZfWFNUQVRFX1NJWkUgKHhjcjApOwot Kwl9Ci0rCi0rICAgICAgaTM4Nl9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0ICh4c3RhdGVfc2l6 ZSk7Ci0rICAgICAgYW1kNjRfbGludXhfdXBkYXRlX3hzdGF0ZXJlZ3NldCAoeHN0YXRlX3NpemUp OwotKyAgICB9Ci0rCi0rICAvKiBDaGVjayB0aGUgbmF0aXZlIFhDUjAgb25seSBpZiBQVFJBQ0Vf R0VUUkVHU0VUIGlzIGF2YWlsYWJsZS4gICovCi0rICBpZiAoaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0 Ci0rICAgICAgJiYgKHhjcjAgJiBJMzg2X1hTVEFURV9BVlhfTUFTSykgPT0gSTM4Nl9YU1RBVEVf QVZYX01BU0spCi0rICAgIHsKLSsgICAgICBpZiAoaXNfNjRiaXQpCi0rCXJldHVybiB0ZGVzY19h bWQ2NF9hdnhfbGludXg7Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gdGRlc2NfaTM4Nl9hdnhfbGlu dXg7Ci0rICAgIH0KLSAgIGVsc2UKLS0gICAgcmV0dXJuIHRkZXNjX2kzODZfbGludXg7Ci0rICAg IHsKLSsgICAgICBpZiAoaXNfNjRiaXQpCi0rCXJldHVybiB0ZGVzY19hbWQ2NF9saW51eDsKLSsg ICAgICBlbHNlCi0rCXJldHVybiB0ZGVzY19pMzg2X2xpbnV4OwotKyAgICB9Ci0gfQotIAotIC8q IFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICov Ci0tLS0gLi9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAw MDAwICswMjAwCi0rKysgLi9nZGIvYW1kNjQtbGludXgtdGRlcC5jCTIwMTAtMDQtMDMgMjE6MTI6 MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjgsOCArMjgsMTEgQEAKLSAjaW5jbHVkZSAic3ltdGFi LmgiCi0gI2luY2x1ZGUgImdkYnR5cGVzLmgiCi0gI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgotKyNp bmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAiYW1kNjQtbGludXgtdGRlcC5oIgotKyNpbmNs dWRlICJpMzg2LWxpbnV4LXRkZXAuaCIKLSAjaW5jbHVkZSAibGludXgtdGRlcC5oIgotKyNpbmNs dWRlICJpMzg2LXhzdGF0ZS5oIgotIAotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gCi1AQCAt MzgsNiArNDEsNyBAQAotICNpbmNsdWRlICJ4bWwtc3lzY2FsbC5oIgotIAotICNpbmNsdWRlICJm ZWF0dXJlcy9pMzg2L2FtZDY0LWxpbnV4LmMiCi0rI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvYW1k NjQtYXZ4LWxpbnV4LmMiCi0gCi0gLyogVGhlIHN5c2NhbGwncyBYTUwgZmlsZW5hbWUgZm9yIGkz ODYuICAqLwotICNkZWZpbmUgWE1MX1NZU0NBTExfRklMRU5BTUVfQU1ENjQgInN5c2NhbGxzL2Ft ZDY0LWxpbnV4LnhtbCIKLUBAIC00NSw2ICs0OSwxNSBAQAotICNpbmNsdWRlICJyZWNvcmQuaCIK LSAjaW5jbHVkZSAibGludXgtcmVjb3JkLmgiCi0gCi0rLyogU3VwcG9ydGVkIHJlZ2lzdGVyIG5v dGUgc2VjdGlvbnMuICAqLwotK3N0YXRpYyBzdHJ1Y3QgY29yZV9yZWdzZXRfc2VjdGlvbiBhbWQ2 NF9saW51eF9yZWdzZXRfc2VjdGlvbnNbXSA9Ci0rewotKyAgeyAiLnJlZyIsIDE0NCwgImdlbmVy YWwtcHVycG9zZSIgfSwKLSsgIHsgIi5yZWcyIiwgNTEyLCAiZmxvYXRpbmctcG9pbnQiIH0sCi0r ICB7ICIucmVnLXhzdGF0ZSIsIDAsICJYU0FWRSBleHRlbmRlZCBzdGF0ZSIgfSwKLSsgIHsgTlVM TCwgMCB9Ci0rfTsKLSsKLSAvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSBy ZWdpc3RlcnMgaW4gYHN0cnVjdCB1c2VyJwotICAgIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIg Y2FjaGUgbGF5b3V0LiAgKi8KLSAKLUBAIC0xMzE2LDYgKzEzMjksMjIgQEAgYW1kNjRfbGludXhf cmVjb3JkX3NpZ25hbCAoc3RydWN0IGdkYmFyYwotICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIFVw ZGF0ZSBYU0FWRSBleHRlbmRlZCBzdGF0ZSByZWdpc3RlciBub3RlIHNlY3Rpb24uICAqLwotKwot K3ZvaWQKLSthbWQ2NF9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0ICh1bnNpZ25lZCBpbnQgeHN0 YXRlX3NpemUpCi0rewotKyAgc3RydWN0IGNvcmVfcmVnc2V0X3NlY3Rpb24gKnhzdGF0ZSA9ICZh bWQ2NF9saW51eF9yZWdzZXRfc2VjdGlvbnNbMl07Ci0rCi0rICAvKiBVcGRhdGUgdGhlIFhTQVZF IGV4dGVuZGVkIHN0YXRlIHJlZ2lzdGVyIG5vdGUgc2VjdGlvbiBmb3IgImdjb3JlIi4KLSsgICAg IERpc2FibGUgaXQgaWYgaXRzIHNpemUgaXMgMC4gICovCi0rICBnZGJfYXNzZXJ0IChzdHJjbXAg KHhzdGF0ZS0+c2VjdF9uYW1lLCAiLnJlZy14c3RhdGUiKSA9PSAwKTsKLSsgIGlmICh4c3RhdGVf c2l6ZSkKLSsgICAgeHN0YXRlLT5zaXplID0geHN0YXRlX3NpemU7Ci0rICBlbHNlCi0rICAgIHhz dGF0ZS0+c2VjdF9uYW1lID0gTlVMTDsKLSt9Ci0rCi0gLyogR2V0IExpbnV4L3g4NiB0YXJnZXQg ZGVzY3JpcHRpb24gZnJvbSBjb3JlIGR1bXAuICAqLwotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg dGFyZ2V0X2Rlc2MgKgotQEAgLTEzMjQsMTIgKzEzNTMsMTcgQEAgYW1kNjRfbGludXhfY29yZV9y ZWFkX2Rlc2NyaXB0aW9uIChzdHJ1YwotIAkJCQkgIGJmZCAqYWJmZCkKLSB7Ci0gICBhc2VjdGlv biAqc2VjdGlvbiA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLnJlZzIiKTsKLSsg IHVpbnQ2NF90IHhjcjA7Ci0gCi0gICBpZiAoc2VjdGlvbiA9PSBOVUxMKQotICAgICByZXR1cm4g TlVMTDsKLSAKLSAgIC8qIExpbnV4L3g4Ni02NC4gICovCi0tICByZXR1cm4gdGRlc2NfYW1kNjRf bGludXg7Ci0rICB4Y3IwID0gaTM4Nl9saW51eF9jb3JlX3JlYWRfeGNyMCAoZ2RiYXJjaCwgdGFy Z2V0LCBhYmZkKTsKLSsgIGlmICgoeGNyMCAmIEkzODZfWFNUQVRFX0FWWF9NQVNLKSA9PSBJMzg2 X1hTVEFURV9BVlhfTUFTSykKLSsgICAgcmV0dXJuIHRkZXNjX2FtZDY0X2F2eF9saW51eDsKLSsg IGVsc2UKLSsgICAgcmV0dXJuIHRkZXNjX2FtZDY0X2xpbnV4OwotIH0KLSAKLSBzdGF0aWMgdm9p ZAotQEAgLTEzNzMsNiArMTQwNyw4IEBAIGFtZDY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2Ri YXJjaF9pbmYKLSAKLSAgIHRkZXAtPm91dGVybW9zdF9mcmFtZV9wID0gYW1kNjRfbGludXhfb3V0 ZXJtb3N0X2ZyYW1lOwotIAotKyAgdGRlcC0+eHNhdmVfeGNyMF9vZmZzZXQgPSBJMzg2X0xJTlVY X1hTQVZFX1hDUjBfT0ZGU0VUOwotKwotICAgLyogR05VL0xpbnV4IHVzZXMgU1ZSNC1zdHlsZSBz aGFyZWQgbGlicmFyaWVzLiAgKi8KLSAgIHNldF9zb2xpYl9zdnI0X2ZldGNoX2xpbmtfbWFwX29m ZnNldHMKLSAgICAgKGdkYmFyY2gsIHN2cjRfbHA2NF9mZXRjaF9saW5rX21hcF9vZmZzZXRzKTsK LUBAIC0xMzk0LDYgKzE0MzAsOSBAQCBhbWQ2NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFy Y2hfaW5mCi0gICAvKiBHTlUvTGludXggdXNlcyBTVlI0LXN0eWxlIHNoYXJlZCBsaWJyYXJpZXMu ICAqLwotICAgc2V0X2dkYmFyY2hfc2tpcF90cmFtcG9saW5lX2NvZGUgKGdkYmFyY2gsIGZpbmRf c29saWJfdHJhbXBvbGluZV90YXJnZXQpOwotIAotKyAgLyogSW5zdGFsbCBzdXBwb3J0ZWQgcmVn aXN0ZXIgbm90ZSBzZWN0aW9ucy4gICovCi0rICBzZXRfZ2RiYXJjaF9jb3JlX3JlZ3NldF9zZWN0 aW9ucyAoZ2RiYXJjaCwgYW1kNjRfbGludXhfcmVnc2V0X3NlY3Rpb25zKTsKLSsKLSAgIHNldF9n ZGJhcmNoX2NvcmVfcmVhZF9kZXNjcmlwdGlvbiAoZ2RiYXJjaCwKLSAJCQkJICAgICBhbWQ2NF9s aW51eF9jb3JlX3JlYWRfZGVzY3JpcHRpb24pOwotIAotQEAgLTE1OTYsNCArMTYzNSw1IEBAIF9p bml0aWFsaXplX2FtZDY0X2xpbnV4X3RkZXAgKHZvaWQpCi0gCi0gICAvKiBJbml0aWFsaXplIHRo ZSBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24gICovCi0gICBpbml0aWFsaXplX3RkZXNjX2FtZDY0 X2xpbnV4ICgpOwotKyAgaW5pdGlhbGl6ZV90ZGVzY19hbWQ2NF9hdnhfbGludXggKCk7Ci0gfQot LS0tIC4vZ2RiL2FtZDY0LWxpbnV4LXRkZXAuaAkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAw MCArMDIwMAotKysrIC4vZ2RiL2FtZDY0LWxpbnV4LXRkZXAuaAkyMDEwLTA0LTAzIDIxOjEyOjMy LjAwMDAwMDAwMCArMDIwMAotQEAgLTI2LDEzICsyNiwxNyBAQAotIC8qIFJlZ2lzdGVyIG51bWJl ciBmb3IgdGhlICJvcmlnX3JheCIgcmVnaXN0ZXIuICBJZiB0aGlzIHJlZ2lzdGVyCi0gICAgY29u dGFpbnMgYSB2YWx1ZSA+PSAwIGl0IGlzIGludGVycHJldGVkIGFzIHRoZSBzeXN0ZW0gY2FsbCBu dW1iZXIKLSAgICB0aGF0IHRoZSBrZXJuZWwgaXMgc3VwcG9zZWQgdG8gcmVzdGFydC4gICovCi0t I2RlZmluZSBBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0gKEFNRDY0X01YQ1NSX1JFR05VTSAr IDEpCi0rI2RlZmluZSBBTUQ2NF9MSU5VWF9PUklHX1JBWF9SRUdOVU0gKEFNRDY0X1lNTTE1SF9S RUdOVU0gKyAxKQotIAotIC8qIFRvdGFsIG51bWJlciBvZiByZWdpc3RlcnMgZm9yIEdOVS9MaW51 eC4gICovCi0gI2RlZmluZSBBTUQ2NF9MSU5VWF9OVU1fUkVHUyAoQU1ENjRfTElOVVhfT1JJR19S QVhfUkVHTlVNICsgMSkKLSAKLSAvKiBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24uICAqLwotIGV4 dGVybiBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2xpbnV4OwotK2V4dGVybiBzdHJ1 Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2FtZDY0X2F2eF9saW51eDsKLSsKLSsvKiBVcGRhdGUgWFNB VkUgZXh0ZW5kZWQgc3RhdGUgcmVnaXN0ZXIgbm90ZSBzZWN0aW9uLiAgKi8KLStleHRlcm4gdm9p ZCBhbWQ2NF9saW51eF91cGRhdGVfeHN0YXRlcmVnc2V0ICh1bnNpZ25lZCBpbnQgeHN0YXRlX3Np emUpOwotIAotIC8qIEVudW0gdGhhdCBkZWZpbmVzIHRoZSBzeXNjYWxsIGlkZW50aWZpZXJzIGZv ciBhbWQ2NCBsaW51eC4KLSAgICBVc2VkIGZvciBwcm9jZXNzIHJlY29yZC9yZXBsYXksIHRoZXNl IHdpbGwgYmUgdHJhbnNsYXRlZCBpbnRvCi0tLS0gLi9nZGIvYW1kNjQtdGRlcC5jCTIwMTAtMDQt MDMgMjE6MTE6NDEuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvYW1kNjQtdGRlcC5jCTIwMTAt MDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDMsNiArNDMsNyBAQAotICNpbmNs dWRlICJpMzg3LXRkZXAuaCIKLSAKLSAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9hbWQ2NC5jIgot KyNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC5jIgotIAotIC8qIE5vdGUgdGhhdCB0 aGUgQU1ENjQgYXJjaGl0ZWN0dXJlIHdhcyBwcmV2aW91c2x5IGtub3duIGFzIHg4Ni02NC4KLSAg ICBUaGUgbGF0dGVyIGlzIChmb3JldmVyKSBlbmdyYXZlZCBpbnRvIHRoZSBjYW5vbmljYWwgc3lz dGVtIG5hbWUgYXMKLUBAIC03MSw4ICs3MiwyMSBAQCBzdGF0aWMgY29uc3QgY2hhciAqYW1kNjRf cmVnaXN0ZXJfbmFtZXNbCi0gICAibXhjc3IiLAotIH07Ci0gCi0tLyogVG90YWwgbnVtYmVyIG9m IHJlZ2lzdGVycy4gICovCi0tI2RlZmluZSBBTUQ2NF9OVU1fUkVHUwlBUlJBWV9TSVpFIChhbWQ2 NF9yZWdpc3Rlcl9uYW1lcykKLStzdGF0aWMgY29uc3QgY2hhciAqYW1kNjRfeW1tX25hbWVzW10g PSAKLSt7Ci0rICAieW1tMCIsICJ5bW0xIiwgInltbTIiLCAieW1tMyIsCi0rICAieW1tNCIsICJ5 bW01IiwgInltbTYiLCAieW1tNyIsCi0rICAieW1tOCIsICJ5bW05IiwgInltbTEwIiwgInltbTEx IiwKLSsgICJ5bW0xMiIsICJ5bW0xMyIsICJ5bW0xNCIsICJ5bW0xNSIKLSt9OwotKwotK3N0YXRp YyBjb25zdCBjaGFyICphbWQ2NF95bW1oX25hbWVzW10gPSAKLSt7Ci0rICAieW1tMGgiLCAieW1t MWgiLCAieW1tMmgiLCAieW1tM2giLAotKyAgInltbTRoIiwgInltbTVoIiwgInltbTZoIiwgInlt bTdoIiwKLSsgICJ5bW04aCIsICJ5bW05aCIsICJ5bW0xMGgiLCAieW1tMTFoIiwKLSsgICJ5bW0x MmgiLCAieW1tMTNoIiwgInltbTE0aCIsICJ5bW0xNWgiCi0rfTsKLSAKLSAvKiBUaGUgcmVnaXN0 ZXJzIHVzZWQgdG8gcGFzcyBpbnRlZ2VyIGFyZ3VtZW50cyBkdXJpbmcgYSBmdW5jdGlvbiBjYWxs LiAgKi8KLSBzdGF0aWMgaW50IGFtZDY0X2R1bW15X2NhbGxfaW50ZWdlcl9yZWdzW10gPQotQEAg LTE2Myw2ICsxNzcsOCBAQCBzdGF0aWMgY29uc3QgaW50IGFtZDY0X2R3YXJmX3JlZ21hcF9sZW4g Ci0gc3RhdGljIGludAotIGFtZDY0X2R3YXJmX3JlZ190b19yZWdudW0gKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBpbnQgcmVnKQotIHsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBn ZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgaW50IHltbTBfcmVnbnVtID0gdGRlcC0+eW1tMF9y ZWdudW07Ci0gICBpbnQgcmVnbnVtID0gLTE7Ci0gCi0gICBpZiAocmVnID49IDAgJiYgcmVnIDwg YW1kNjRfZHdhcmZfcmVnbWFwX2xlbikKLUBAIC0xNzAsNiArMTg2LDkgQEAgYW1kNjRfZHdhcmZf cmVnX3RvX3JlZ251bSAoc3RydWN0IGdkYmFyYwotIAotICAgaWYgKHJlZ251bSA9PSAtMSkKLSAg ICAgd2FybmluZyAoXygiVW5tYXBwZWQgRFdBUkYgUmVnaXN0ZXIgIyVkIGVuY291bnRlcmVkLiIp LCByZWcpOwotKyAgZWxzZSBpZiAoeW1tMF9yZWdudW0gPj0gMAotKwkgICAmJiBpMzg2X3htbV9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmVnbnVtICs9IHltbTBfcmVnbnVtIC0g STM4N19YTU0wX1JFR05VTSAodGRlcCk7Ci0gCi0gICByZXR1cm4gcmVnbnVtOwotIH0KLUBAIC0y MzgsNiArMjU3LDE5IEBAIHN0YXRpYyBjb25zdCBjaGFyICphbWQ2NF9kd29yZF9uYW1lc1tdID0K LSAgICJyOGQiLCAicjlkIiwgInIxMGQiLCAicjExZCIsICJyMTJkIiwgInIxM2QiLCAicjE0ZCIs ICJyMTVkIgotIH07Ci0gCi0rLyogUmV0dXJuIHRoZSBuYW1lIG9mIHJlZ2lzdGVyIFJFR05VTSwg b3IgdGhlIGVtcHR5IHN0cmluZyBpZiBpdCBpcwotKyAgIGFuIGFub255bW91cyByZWdpc3Rlci4g Ki8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rYW1kNjRfcmVnaXN0ZXJfbmFtZSAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pCi0rewotKyAgLyogSGlkZSB0aGUgdXBwZXIg WU1NIHJlZ2lzdGVycy4gICovCi0rICBpZiAoaTM4Nl95bW1oX3JlZ251bV9wIChnZGJhcmNoLCBy ZWdudW0pKQotKyAgICByZXR1cm4gIiI7Ci0rCi0rICByZXR1cm4gdGRlc2NfcmVnaXN0ZXJfbmFt ZSAoZ2RiYXJjaCwgcmVnbnVtKTsKLSt9Ci0rCi0gLyogUmV0dXJuIHRoZSBuYW1lIG9mIHJlZ2lz dGVyIFJFR05VTS4gICovCi0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotQEAgLTI0Niw2ICsyNzgs OCBAQCBhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyCi0gICBzdHJ1Y3Qg Z2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKLSAgIGlmIChpMzg2 X2J5dGVfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJldHVybiBhbWQ2NF9ieXRl X25hbWVzW3JlZ251bSAtIHRkZXAtPmFsX3JlZ251bV07Ci0rICBlbHNlIGlmIChpMzg2X3ltbV9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0dXJuIGFtZDY0X3ltbV9uYW1lc1ty ZWdudW0gLSB0ZGVwLT55bW0wX3JlZ251bV07Ci0gICBlbHNlIGlmIChpMzg2X3dvcmRfcmVnbnVt X3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJldHVybiBhbWQ2NF93b3JkX25hbWVzW3JlZ251 bSAtIHRkZXAtPmF4X3JlZ251bV07Ci0gICBlbHNlIGlmIChpMzg2X2R3b3JkX3JlZ251bV9wIChn ZGJhcmNoLCByZWdudW0pKQotQEAgLTIxODEsNiArMjIxNSwyOCBAQCBhbWQ2NF9jb2xsZWN0X2Zw cmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnCi0gICBhbWQ2NF9jb2xsZWN0X2Z4c2F2ZSAocmVnY2Fj aGUsIHJlZ251bSwgZnByZWdzKTsKLSB9Ci0gCi0rLyogU2ltaWxhciB0byBhbWQ2NF9zdXBwbHlf ZnByZWdzZXQsIGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQgc3RhdGUuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rYW1kNjRfc3VwcGx5X3hzdGF0ZXJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVn c2V0LAotKwkJCSAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sCi0rCQkJ ICAgY29uc3Qgdm9pZCAqeHN0YXRlcmVncywgc2l6ZV90IGxlbikKLSt7Ci0rICBjb25zdCBzdHJ1 Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOwotKyAg YW1kNjRfc3VwcGx5X3hzYXZlIChyZWdjYWNoZSwgcmVnbnVtLCB4c3RhdGVyZWdzKTsKLSt9Ci0r Ci0rLyogU2ltaWxhciB0byBhbWQ2NF9jb2xsZWN0X2ZwcmVnc2V0LCBidXQgdXNlIFhTQVZFIGV4 dGVuZGVkIHN0YXRlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2FtZDY0X2NvbGxlY3RfeHN0YXRl cmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCi0rCQkJICAgIGNvbnN0IHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rCQkJICAgIGludCByZWdudW0sIHZvaWQgKnhzdGF0ZXJl Z3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9 IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGFtZDY0X2NvbGxlY3RfeHNhdmUgKHJl Z2NhY2hlLCByZWdudW0sIHhzdGF0ZXJlZ3MsIDEpOwotK30KLSsKLSAvKiBSZXR1cm4gdGhlIGFw cHJvcHJpYXRlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGNvcmUgc2VjdGlvbiBpZGVudGlmaWVkCi0g ICAgYnkgU0VDVF9OQU1FIGFuZCBTRUNUX1NJWkUuICAqLwotIAotQEAgLTIxOTksNiArMjI1NSwx NiBAQCBhbWQ2NF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBnCi0gICAgICAgcmV0 dXJuIHRkZXAtPmZwcmVnc2V0OwotICAgICB9Ci0gCi0rICBpZiAoc3RyY21wIChzZWN0X25hbWUs ICIucmVnLXhzdGF0ZSIpID09IDApCi0rICAgIHsKLSsgICAgICBpZiAodGRlcC0+eHN0YXRlcmVn c2V0ID09IE5VTEwpCi0rCXRkZXAtPnhzdGF0ZXJlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJj aCwKLSsJCQkJCSAgIGFtZDY0X3N1cHBseV94c3RhdGVyZWdzZXQsCi0rCQkJCQkgICBhbWQ2NF9j b2xsZWN0X3hzdGF0ZXJlZ3NldCk7Ci0rCi0rICAgICAgcmV0dXJuIHRkZXAtPnhzdGF0ZXJlZ3Nl dDsKLSsgICAgfQotKwotICAgcmV0dXJuIGkzODZfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChn ZGJhcmNoLCBzZWN0X25hbWUsIHNlY3Rfc2l6ZSk7Ci0gfQotIAwKLUBAIC0yMjYxLDYgKzIzMjcs MTMgQEAgYW1kNjRfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbwotICAgdGRlcC0+ bnVtX2NvcmVfcmVncyA9IEFNRDY0X05VTV9HUkVHUyArIEkzODdfTlVNX1JFR1M7Ci0gICB0ZGVw LT5yZWdpc3Rlcl9uYW1lcyA9IGFtZDY0X3JlZ2lzdGVyX25hbWVzOwotIAotKyAgaWYgKHRkZXNj X2ZpbmRfZmVhdHVyZSAodGRlc2MsICJvcmcuZ251LmdkYi5pMzg2LmF2eCIpICE9IE5VTEwpCi0r ICAgIHsKLSsgICAgICB0ZGVwLT55bW1oX3JlZ2lzdGVyX25hbWVzID0gYW1kNjRfeW1taF9uYW1l czsKLSsgICAgICB0ZGVwLT5udW1feW1tX3JlZ3MgPSAxNjsKLSsgICAgICB0ZGVwLT55bW0waF9y ZWdudW0gPSBBTUQ2NF9ZTU0wSF9SRUdOVU07Ci0rICAgIH0KLSsKLSAgIHRkZXAtPm51bV9ieXRl X3JlZ3MgPSAyMDsKLSAgIHRkZXAtPm51bV93b3JkX3JlZ3MgPSAxNjsKLSAgIHRkZXAtPm51bV9k d29yZF9yZWdzID0gMTY7Ci1AQCAtMjI3NCw2ICsyMzQ3LDggQEAgYW1kNjRfaW5pdF9hYmkgKHN0 cnVjdCBnZGJhcmNoX2luZm8gaW5mbwotIAotICAgc2V0X3RkZXNjX3BzZXVkb19yZWdpc3Rlcl9u YW1lIChnZGJhcmNoLCBhbWQ2NF9wc2V1ZG9fcmVnaXN0ZXJfbmFtZSk7Ci0gCi0rICBzZXRfZ2Ri YXJjaF9yZWdpc3Rlcl9uYW1lIChnZGJhcmNoLCBhbWQ2NF9yZWdpc3Rlcl9uYW1lKTsKLSsKLSAg IC8qIEFNRDY0IGhhcyBhbiBGUFUgYW5kIDE2IFNTRSByZWdpc3RlcnMuICAqLwotICAgdGRlcC0+ c3QwX3JlZ251bSA9IEFNRDY0X1NUMF9SRUdOVU07Ci0gICB0ZGVwLT5udW1feG1tX3JlZ3MgPSAx NjsKLUBAIC0yMzU0LDYgKzI0MjksNyBAQCB2b2lkCi0gX2luaXRpYWxpemVfYW1kNjRfdGRlcCAo dm9pZCkKLSB7Ci0gICBpbml0aWFsaXplX3RkZXNjX2FtZDY0ICgpOwotKyAgaW5pdGlhbGl6ZV90 ZGVzY19hbWQ2NF9hdnggKCk7Ci0gfQotIAwKLSAKLUBAIC0yMzg5LDYgKzI0NjUsMzAgQEAgYW1k NjRfc3VwcGx5X2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyZQotICAgICB9Ci0gfQotIAotKy8q IFNpbWlsYXIgdG8gYW1kNjRfc3VwcGx5X2Z4c2F2ZSwgYnV0IHVzZSBYU0FWRSBleHRlbmRlZCBz dGF0ZS4gICovCi0rCi0rdm9pZAotK2FtZDY0X3N1cHBseV94c2F2ZSAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50IHJlZ251bSwKLSsJCSAgICBjb25zdCB2b2lkICp4c2F2ZSkKLSt7Ci0r ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7 Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsK LSsKLSsgIGkzODdfc3VwcGx5X3hzYXZlIChyZWdjYWNoZSwgcmVnbnVtLCB4c2F2ZSk7Ci0rCi0r ICBpZiAoeHNhdmUgJiYgZ2RiYXJjaF9wdHJfYml0IChnZGJhcmNoKSA9PSA2NCkKLSsgICAgewot KyAgICAgIGNvbnN0IGdkYl9ieXRlICpyZWdzID0geHNhdmU7Ci0rCi0rICAgICAgaWYgKHJlZ251 bSA9PSAtMSB8fCByZWdudW0gPT0gSTM4N19GSVNFR19SRUdOVU0gKHRkZXApKQotKwlyZWdjYWNo ZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgSTM4N19GSVNFR19SRUdOVU0gKHRkZXApLAotKwkJCSAg ICAgcmVncyArIDEyKTsKLSsgICAgICBpZiAocmVnbnVtID09IC0xIHx8IHJlZ251bSA9PSBJMzg3 X0ZPU0VHX1JFR05VTSAodGRlcCkpCi0rCXJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBJ Mzg3X0ZPU0VHX1JFR05VTSAodGRlcCksCi0rCQkJICAgICByZWdzICsgMjApOwotKyAgICB9Ci0r fQotKwotIC8qIEZpbGwgcmVnaXN0ZXIgUkVHTlVNIChpZiBpdCBpcyBhIGZsb2F0aW5nLXBvaW50 IG9yIFNTRSByZWdpc3RlcikgaW4KLSAgICAqRlhTQVZFIHdpdGggdGhlIHZhbHVlIGZyb20gUkVH Q0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCi0gICAgYWxsIHJlZ2lzdGVycy4g IFRoaXMgZnVuY3Rpb24gZG9lc24ndCB0b3VjaCBhbnkgb2YgdGhlIHJlc2VydmVkCi1AQCAtMjQx MiwzICsyNTEyLDI2IEBAIGFtZDY0X2NvbGxlY3RfZnhzYXZlIChjb25zdCBzdHJ1Y3QgcmVnY2EK LSAJcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBJMzg3X0ZPU0VHX1JFR05VTSAodGRl cCksIHJlZ3MgKyAyMCk7Ci0gICAgIH0KLSB9Ci0rCi0rLyogU2ltaWxhciB0byBhbWQ2NF9jb2xs ZWN0X2Z4c2F2ZSwgYnV0IGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQgc3RhdGUuICAqLwotKwotK3Zv aWQKLSthbWQ2NF9jb2xsZWN0X3hzYXZlIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBpbnQgcmVnbnVtLAotKwkJICAgICB2b2lkICp4c2F2ZSwgaW50IGdjb3JlKQotK3sKLSsgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKLSsg IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAg Z2RiX2J5dGUgKnJlZ3MgPSB4c2F2ZTsKLSsKLSsgIGkzODdfY29sbGVjdF94c2F2ZSAocmVnY2Fj aGUsIHJlZ251bSwgeHNhdmUsIGdjb3JlKTsKLSsKLSsgIGlmIChnZGJhcmNoX3B0cl9iaXQgKGdk YmFyY2gpID09IDY0KQotKyAgICB7Ci0rICAgICAgaWYgKHJlZ251bSA9PSAtMSB8fCByZWdudW0g PT0gSTM4N19GSVNFR19SRUdOVU0gKHRkZXApKQotKwlyZWdjYWNoZV9yYXdfY29sbGVjdCAocmVn Y2FjaGUsIEkzODdfRklTRUdfUkVHTlVNICh0ZGVwKSwKLSsJCQkgICAgICByZWdzICsgMTIpOwot KyAgICAgIGlmIChyZWdudW0gPT0gLTEgfHwgcmVnbnVtID09IEkzODdfRk9TRUdfUkVHTlVNICh0 ZGVwKSkKLSsJcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBJMzg3X0ZPU0VHX1JFR05V TSAodGRlcCksCi0rCQkJICAgICAgcmVncyArIDIwKTsKLSsgICAgfQotK30KLS0tLSAuL2dkYi9h bWQ2NC10ZGVwLmgJMjAxMC0wMS0yOSAwNjoxOToyMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dk Yi9hbWQ2NC10ZGVwLmgJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC02 MSwxMiArNjEsMTYgQEAgZW51bSBhbWQ2NF9yZWdudW0KLSAgIEFNRDY0X0ZTVEFUX1JFR05VTSA9 IEFNRDY0X1NUMF9SRUdOVU0gKyA5LAotICAgQU1ENjRfWE1NMF9SRUdOVU0gPSA0MCwJLyogJXht bTAgKi8KLSAgIEFNRDY0X1hNTTFfUkVHTlVNLAkJLyogJXhtbTEgKi8KLS0gIEFNRDY0X01YQ1NS X1JFR05VTSA9IEFNRDY0X1hNTTBfUkVHTlVNICsgMTYKLSsgIEFNRDY0X01YQ1NSX1JFR05VTSA9 IEFNRDY0X1hNTTBfUkVHTlVNICsgMTYsCi0rICBBTUQ2NF9ZTU0wSF9SRUdOVU0sCQkvKiAleW1t MGggKi8KLSsgIEFNRDY0X1lNTTE1SF9SRUdOVU0gPSBBTUQ2NF9ZTU0wSF9SRUdOVU0gKyAxNQot IH07Ci0gCi0gLyogTnVtYmVyIG9mIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuICAqLwotICNk ZWZpbmUgQU1ENjRfTlVNX0dSRUdTCQkyNAotIAotKyNkZWZpbmUgQU1ENjRfTlVNX1JFR1MJCShB TUQ2NF9ZTU0xNUhfUkVHTlVNICsgMSkKLSsKLSBleHRlcm4gc3RydWN0IGRpc3BsYWNlZF9zdGVw X2Nsb3N1cmUgKmFtZDY0X2Rpc3BsYWNlZF9zdGVwX2NvcHlfaW5zbgotICAgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBDT1JFX0FERFIgZnJvbSwgQ09SRV9BRERSIHRvLAotICAgIHN0cnVjdCBy ZWdjYWNoZSAqcmVncyk7Ci1AQCAtNzcsMTIgKzgxLDYgQEAgZXh0ZXJuIHZvaWQgYW1kNjRfZGlz cGxhY2VkX3N0ZXBfZml4dXAgKAotIAotIGV4dGVybiB2b2lkIGFtZDY0X2luaXRfYWJpIChzdHJ1 Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKLSAKLS0vKiBG dW5jdGlvbnMgZnJvbSBhbWQ2NC10ZGVwLmMgd2hpY2ggbWF5IGJlIG5lZWRlZCBvbiBhcmNoaXRl Y3R1cmVzCi0tICAgd2l0aCBleHRyYSByZWdpc3RlcnMuICAqLwotLQotLWV4dGVybiBjb25zdCBj aGFyICphbWQ2NF9yZWdpc3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJl Z251bSk7Ci0tZXh0ZXJuIHN0cnVjdCB0eXBlICphbWQ2NF9yZWdpc3Rlcl90eXBlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSk7Ci0tCi0gLyogRmlsbCByZWdpc3RlciBSRUdO VU0gaW4gUkVHQ0FDSEUgd2l0aCB0aGUgYXBwcm9wcmlhdGUKLSAgICBmbG9hdGluZy1wb2ludCBv ciBTU0UgcmVnaXN0ZXIgdmFsdWUgZnJvbSAqRlhTQVZFLiAgSWYgUkVHTlVNIGlzCi0gICAgLTEs IGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMuICBUaGlzIGZ1bmN0aW9uIG1hc2tzIG9mZiBhbnkg b2YgdGhlCi1AQCAtOTEsNiArODksMTAgQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICphbWQ2NF9yZWdp c3Rlcl90eXBlIAotIGV4dGVybiB2b2lkIGFtZDY0X3N1cHBseV9meHNhdmUgKHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sCi0gCQkJCSBjb25zdCB2b2lkICpmeHNhdmUpOwot IAotKy8qIFNpbWlsYXIgdG8gYW1kNjRfc3VwcGx5X2Z4c2F2ZSwgYnV0IHVzZSBYU0FWRSBleHRl bmRlZCBzdGF0ZS4gICovCi0rZXh0ZXJuIHZvaWQgYW1kNjRfc3VwcGx5X3hzYXZlIChzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotKwkJCQljb25zdCB2b2lkICp4c2F2ZSk7 Ci0rCi0gLyogRmlsbCByZWdpc3RlciBSRUdOVU0gKGlmIGl0IGlzIGEgZmxvYXRpbmctcG9pbnQg b3IgU1NFIHJlZ2lzdGVyKSBpbgotICAgICpGWFNBVkUgd2l0aCB0aGUgdmFsdWUgZnJvbSBSRUdD QUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSAgICBhbGwgcmVnaXN0ZXJzLiAg VGhpcyBmdW5jdGlvbiBkb2Vzbid0IHRvdWNoIGFueSBvZiB0aGUgcmVzZXJ2ZWQKLUBAIC05OSw2 ICsxMDEsMTAgQEAgZXh0ZXJuIHZvaWQgYW1kNjRfc3VwcGx5X2Z4c2F2ZSAoc3RydWN0IAotIGV4 dGVybiB2b2lkIGFtZDY0X2NvbGxlY3RfZnhzYXZlIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCBpbnQgcmVnbnVtLAotIAkJCQkgIHZvaWQgKmZ4c2F2ZSk7Ci0gCi0rLyogU2ltaWxh ciB0byBhbWQ2NF9jb2xsZWN0X2Z4c2F2ZSwgYnV0IGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQgc3Rh dGUuICAqLwotK2V4dGVybiB2b2lkIGFtZDY0X2NvbGxlY3RfeHNhdmUgKGNvbnN0IHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsCi0rCQkJCSBpbnQgcmVnbnVtLCB2b2lkICp4c2F2ZSwgaW50IGdj b3JlKTsKLSsKLSB2b2lkIGFtZDY0X2NsYXNzaWZ5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgZW51bSBh bWQ2NF9yZWdfY2xhc3MgY2xhc3NbMl0pOwotIAotIAwKLS0tLSAuL2dkYi9jb21tb24vaTM4Ni14 c3RhdGUuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2Nv bW1vbi9pMzg2LXhzdGF0ZS5oCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1A QCAtMCwwICsxLDQxIEBACi0rLyogQ29tbW9uIGNvZGUgZm9yIGkzODYgWFNBVkUgZXh0ZW5kZWQg c3RhdGUuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmbmRlZiBJMzg2X1hTVEFURV9I Ci0rI2RlZmluZSBJMzg2X1hTVEFURV9IIDEKLSsKLSsvKiBUaGUgZXh0ZW5kZWQgc3RhdGUgZmVh dHVyZSBiaXRzLiAgKi8KLSsjZGVmaW5lIEkzODZfWFNUQVRFX1g4NwkJKDFVTEwgPDwgMCkKLSsj ZGVmaW5lIEkzODZfWFNUQVRFX1NTRQkJKDFVTEwgPDwgMSkKLSsjZGVmaW5lIEkzODZfWFNUQVRF X0FWWAkJKDFVTEwgPDwgMikKLSsKLSsvKiBTdXBwb3J0ZWQgbWFzayBhbmQgc2l6ZSBvZiB0aGUg ZXh0ZW5kZWQgc3RhdGUuICAqLwotKyNkZWZpbmUgSTM4Nl9YU1RBVEVfU1NFX01BU0sJKEkzODZf WFNUQVRFX1g4NyB8IEkzODZfWFNUQVRFX1NTRSkKLSsjZGVmaW5lIEkzODZfWFNUQVRFX0FWWF9N QVNLCShJMzg2X1hTVEFURV9TU0VfTUFTSyB8IEkzODZfWFNUQVRFX0FWWCkKLSsKLSsjZGVmaW5l IEkzODZfWFNUQVRFX1NTRV9TSVpFCTU3NgotKyNkZWZpbmUgSTM4Nl9YU1RBVEVfQVZYX1NJWkUJ ODMyCi0rI2RlZmluZSBJMzg2X1hTVEFURV9NQVhfU0laRQk4MzIKLSsKLSsvKiBHZXQgSTM4NiBY U0FWRSBleHRlbmRlZCBzdGF0ZSBzaXplLiAgKi8KLSsjZGVmaW5lIEkzODZfWFNUQVRFX1NJWkUo WENSMCkJXAotKyAgKCgoWENSMCkgJiBJMzg2X1hTVEFURV9BVlgpICE9IDAgXAotKyAgID8gSTM4 Nl9YU1RBVEVfQVZYX1NJWkUgOiBJMzg2X1hTVEFURV9TU0VfU0laRSkKLSsKLSsjZW5kaWYgLyog STM4Nl9YU1RBVEVfSCAqLwotLS0tIC4vZ2RiL2NvbmZpZy9kamdwcC9mbmNoYW5nZS5sc3QJMjAx MC0wMi0wMSAyMDoyNzo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9jb25maWcvZGpncHAv Zm5jaGFuZ2UubHN0CTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjI4 LDYgKzIyOCwxNCBAQAotIEBWQC9nZGIvZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtdnN4NjRsLnht bCBAVkAvZ2RiL2ZlYXR1cmVzL3JzNjAwMC9wcGMtdjY0bC54bWwKLSBAVkAvZ2RiL2ZlYXR1cmVz L3JzNjAwMC9wb3dlcnBjLWNlbGwzMmwueG1sIEBWQC9nZGIvZmVhdHVyZXMvcnM2MDAwL3BwYy1j MzJsLnhtbAotIEBWQC9nZGIvZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMtY2VsbDY0bC54bWwgQFZA L2dkYi9mZWF0dXJlcy9yczYwMDAvcHBjLWM2NGwueG1sCi0rQFZAL2dkYi9mZWF0dXJlcy9pMzg2 L2FtZDY0LWF2eC1saW51eC5jIEBWQC9nZGIvZmVhdHVyZXMvaTM4Ni9hNjQtYWwuYwotK0BWQC9n ZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdnguYyBAVkAvZ2RiL2ZlYXR1cmVzL2kzODYvYTY0LWEu YwotK0BWQC9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXgueG1sIEBWQC9nZGIvZmVh dHVyZXMvaTM4Ni9hNjQtYWwueG1sCi0rQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC54 bWwgQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2E2NC1hLnhtbAotK0BWQC9nZGIvZmVhdHVyZXMvaTM4 Ni9pMzg2LWF2eC1saW51eC5jIEBWQC9mZWF0dXJlcy9pMzg2L2kzMi1hbC5jCi0rQFZAL2dkYi9m ZWF0dXJlcy9pMzg2L2kzODYtYXZ4LmMgQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2kzMi1hLmMKLStA VkAvZ2RiL2ZlYXR1cmVzL2kzODYvaTM4Ni1hdngtbGludXgueG1sIEBWQC9nZGIvZmVhdHVyZXMv aTM4Ni9pMzItYWwueG1sCi0rQFZAL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LnhtbCBAVkAv Z2RiL2ZlYXR1cmVzL2kzODYvaTMyLWEueG1sCi0gQFZAL2dkYi9mLWV4cC50YWIuYyBAVkAvZ2Ri L2YtZXhwX3RhYi5jCi0gQFZAL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpcy1sb3cuYyBAVkAvZ2Ri L2dkYnNlcnZlci9seC1jcmlzLmMKLSBAVkAvZ2RiL2dkYnNlcnZlci9saW51eC1jcmlzdjMyLWxv dy5jIEBWQC9nZGIvZ2Ric2VydmVyL2x4LWNyaXMzMi5jCi0tLS0gLi9nZGIvZG9jL0NoYW5nZUxv Zy54Y3IJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9kb2Mv Q2hhbmdlTG9nLnhjcgkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAs MCArMSwzMSBAQAotKzIwMTAtMDMtMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBnZGIudGV4aW5mbyAoR2VuZXJhbCBRdWVyeSBQYWNrZXRzKTogUmVwbGFjZSAieDg2 PXhtbCIgd2l0aAotKwkieG1sUmVnaXN0ZXJzKyIuCi0rCi0rMjAxMC0wMy0xMiAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChHZW5lcmFsIFF1ZXJ5 IFBhY2tldHMpOiBVcGRhdGVkLgotKwkoaTM4NiBGZWF0dXJlcyk6IExpa2V3aXNlLgotKwotKzIw MTAtMDMtMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBnZGIudGV4 aW5mbyAoaTM4NiBGZWF0dXJlcyk6IE1ha2Ugb3JnLmdudS5nZGIuaTM4Ni5hdnggb3B0aW9uYWwu Ci0rCi0rMjAxMC0wMy0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGdkYi50ZXhpbmZvIChHZW5lcmFsIFF1ZXJ5IFBhY2tldHMpOiBSZW1vdmUgeDg2OnhzdGF0ZSBl eHRlbnNpb24uCi0rCURvY3VtZW50IHg4Nj14bWwgZXh0ZW5zaW9uIGluIGdkYiByZW1vdGUgcHJv dG9jb2wuCi0rCi0rMjAxMC0wMi0xMSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGdkYi50ZXhpbmZvIChpMzg2IEZlYXR1cmVzKTogQWRkIG9yZy5nbnUuZ2RiLmkzODYu YXZ4LgotKwotKzIwMTAtMDItMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsK LSsJKiBnZGIudGV4aW5mbzogUmVtb3ZlIHg4Njp4c3RhdGUgZnJvbSBzdHViIHJlcGx5LgotKwot KzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBnZGIu dGV4aW5mbzogRG9jdW1lbnQgeDg2OnhzdGF0ZSBleHRlbnNpb24gaW4gZ2RiIHJlbW90ZQotKwlw cm90b2NvbC4KLS0tLSAuL2dkYi9kb2MvQ2hhbmdlTG9nLnhtbAkxOTcwLTAxLTAxIDAxOjAwOjAw LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2RvYy9DaGFuZ2VMb2cueG1sCTIwMTAtMDQtMDMg MjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDI4IEBACi0rMjAxMC0wMy0zMCAg SC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChHZW5l cmFsIFF1ZXJ5IFBhY2tldHMpOiBVcGRhdGVkLgotKwotKzIwMTAtMDMtMjkgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoR2VuZXJhbCBRdWVyeSBQ YWNrZXRzKTogVXBkYXRlZC4KLSsKLSsyMDEwLTAzLTI5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBp bnRlbC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEdlbmVyYWwgUXVlcnkgUGFja2V0cyk6IFJl bW92ZSBleHRyYSBzdXBwb3J0cy4KLSsKLSsyMDEwLTAzLTI4ICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEdlbmVyYWwgUXVlcnkgUGFja2V0cyk6 IEFkZCB4bWxSZWdpc3RlcnMuCi0rCi0rMjAxMC0wMi0wOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChQcmVkZWZpbmVkIFRhcmdldCBUeXBlcyk6 IEFkZCBpMzg3X2V4dCwKLSsJaTM4Nl9lZmxhZ3MgYW5kIGkzODZfbXhjc3IuCi0rCi0rMjAxMC0w Mi0wOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZv OiBVcGRhdGUgaTM4NiB0YXJnZXQgZmVhdHVyZXMuCi0rCi0rMjAxMC0wMi0wOCAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvOiBEb2N1bWVudCBpMzg2 IHRhcmdldCBmZWF0dXJlcy4KLS0tLSAuL2dkYi9mZWF0dXJlcy9NYWtlZmlsZQkyMDEwLTAyLTA4 IDA2OjA4OjQ2LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2ZlYXR1cmVzL01ha2VmaWxlCTIw MTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzMsNiArMzMsOCBAQAotIFdI SUNIID0gYXJtLXdpdGgtaXdtbXh0IGFybS13aXRoLXZmcHYyIGFybS13aXRoLXZmcHYzIGFybS13 aXRoLW5lb24gXAotIAlpMzg2L2kzODYgaTM4Ni9pMzg2LWxpbnV4IFwKLSAJaTM4Ni9hbWQ2NCBp Mzg2L2FtZDY0LWxpbnV4IFwKLSsJaTM4Ni9pMzg2LWF2eCBpMzg2L2kzODYtYXZ4LWxpbnV4IFwK LSsJaTM4Ni9hbWQ2NC1hdnggaTM4Ni9hbWQ2NC1hdngtbGludXggXAotIAltaXBzLWxpbnV4IG1p cHM2NC1saW51eCBcCi0gCXJzNjAwMC9wb3dlcnBjLTMybCByczYwMDAvcG93ZXJwYy1hbHRpdmVj MzJsIHJzNjAwMC9wb3dlcnBjLWU1MDBsIFwKLSAJcnM2MDAwL3Bvd2VycGMtNjRsIHJzNjAwMC9w b3dlcnBjLWFsdGl2ZWM2NGwgcnM2MDAwL3Bvd2VycGMtdnN4MzJsIFwKLUBAIC00NSw2ICs0Nywx MCBAQCBpMzg2L2kzODYtZXhwZWRpdGUgPSBlYnAsZXNwLGVpcAotIGkzODYvaTM4Ni1saW51eC1l eHBlZGl0ZSA9IGVicCxlc3AsZWlwCi0gaTM4Ni9hbWQ2NC1leHBlZGl0ZSA9IHJicCxyc3Ascmlw Ci0gaTM4Ni9hbWQ2NC1saW51eC1leHBlZGl0ZSA9IHJicCxyc3AscmlwCi0raTM4Ni9pMzg2LWF2 eC1leHBlZGl0ZSA9IGVicCxlc3AsZWlwCi0raTM4Ni9pMzg2LWF2eC1saW51eC1leHBlZGl0ZSA9 IGVicCxlc3AsZWlwCi0raTM4Ni9hbWQ2NC1hdngtZXhwZWRpdGUgPSByYnAscnNwLHJpcAotK2kz ODYvYW1kNjQtYXZ4LWxpbnV4LWV4cGVkaXRlID0gcmJwLHJzcCxyaXAKLSBtaXBzLWV4cGVkaXRl ID0gcjI5LHBjCi0gbWlwczY0LWV4cGVkaXRlID0gcjI5LHBjCi0gcG93ZXJwYy1leHBlZGl0ZSA9 IHIxLHBjCi1AQCAtOTAsMyArOTYsOSBAQCAkKG91dGRpcikvaTM4Ni9pMzg2LWxpbnV4LmRhdDog aTM4Ni8zMmJpCi0gJChvdXRkaXIpL2kzODYvYW1kNjQuZGF0OiBpMzg2LzY0Yml0LWNvcmUueG1s IGkzODYvNjRiaXQtc3NlLnhtbAotICQob3V0ZGlyKS9pMzg2L2FtZDY0LWxpbnV4LmRhdDogaTM4 Ni82NGJpdC1jb3JlLnhtbCBpMzg2LzY0Yml0LXNzZS54bWwgXAotIAkJCSAgICAgICAgaTM4Ni82 NGJpdC1saW51eC54bWwKLSskKG91dGRpcikvaTM4Ni9pMzg2LWF2eC5kYXQ6IGkzODYvMzJiaXQt Y29yZS54bWwgaTM4Ni8zMmJpdC1hdngueG1sCi0rJChvdXRkaXIpL2kzODYvaTM4Ni1hdngtbGlu dXguZGF0OiBpMzg2LzMyYml0LWNvcmUueG1sIGkzODYvMzJiaXQtYXZ4LnhtbCBcCi0rCQkJICAg ICAgIGkzODYvMzJiaXQtbGludXgueG1sCi0rJChvdXRkaXIpL2kzODYvYW1kNjQtYXZ4LmRhdDog aTM4Ni82NGJpdC1jb3JlLnhtbCBpMzg2LzY0Yml0LWF2eC54bWwKLSskKG91dGRpcikvaTM4Ni9h bWQ2NC1hdngtbGludXguZGF0OiBpMzg2LzY0Yml0LWNvcmUueG1sIGkzODYvNjRiaXQtYXZ4Lnht bCBcCi0rCQkJCSAgICBpMzg2LzY0Yml0LWxpbnV4LnhtbAotLS0tIC4vZ2RiL2ZlYXR1cmVzL2kz ODYvMzJiaXQtYXZ4LnhtbAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysr IC4vZ2RiL2ZlYXR1cmVzL2kzODYvMzJiaXQtYXZ4LnhtbAkyMDEwLTA0LTAzIDIxOjEyOjMyLjAw MDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxOCBAQAotKzw/eG1sIHZlcnNpb249IjEuMCI/Pgot KzwhLS0gQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3 aXRob3V0IG1vZGlmaWNhdGlvbiwKLSsgICAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3 aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAotKyAgICAgbm90aWNlIGFuZCB0 aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+Ci0rCi0rPCFET0NUWVBFIGZlYXR1cmUgU1lT VEVNICJnZGItdGFyZ2V0LmR0ZCI+Ci0rPGZlYXR1cmUgbmFtZT0ib3JnLmdudS5nZGIuaTM4Ni5h dngiPgotKyAgPHJlZyBuYW1lPSJ5bW0waCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+ Ci0rICA8cmVnIG5hbWU9InltbTFoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsg IDxyZWcgbmFtZT0ieW1tMmgiIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEyOCIvPgotKyAgPHJl ZyBuYW1lPSJ5bW0zaCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+Ci0rICA8cmVnIG5h bWU9InltbTRoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0i eW1tNWgiIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEyOCIvPgotKyAgPHJlZyBuYW1lPSJ5bW02 aCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+Ci0rICA8cmVnIG5hbWU9InltbTdoIiBi aXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSs8L2ZlYXR1cmU+Ci0tLS0gLi9nZGIvZmVh dHVyZXMvaTM4Ni82NGJpdC1hdngueG1sCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICsw MTAwCi0rKysgLi9nZGIvZmVhdHVyZXMvaTM4Ni82NGJpdC1hdngueG1sCTIwMTAtMDQtMDMgMjE6 MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDI2IEBACi0rPD94bWwgdmVyc2lvbj0i MS4wIj8+Ci0rPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rICAgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBmaWxlLCB3 aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAotKyAgICAgYXJlIHBlcm1pdHRlZCBpbiBhbnkg bWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0Ci0rICAgICBub3Rp Y2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAtLT4KLSsKLSs8IURPQ1RZUEUgZmVh dHVyZSBTWVNURU0gImdkYi10YXJnZXQuZHRkIj4KLSs8ZmVhdHVyZSBuYW1lPSJvcmcuZ251Lmdk Yi5pMzg2LmF2eCI+Ci0rICA8cmVnIG5hbWU9InltbTBoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVp bnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMWgiIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEy OCIvPgotKyAgPHJlZyBuYW1lPSJ5bW0yaCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+ Ci0rICA8cmVnIG5hbWU9InltbTNoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsg IDxyZWcgbmFtZT0ieW1tNGgiIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEyOCIvPgotKyAgPHJl ZyBuYW1lPSJ5bW01aCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+Ci0rICA8cmVnIG5h bWU9InltbTZoIiBiaXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0i eW1tN2giIGJpdHNpemU9IjEyOCIgdHlwZT0idWludDEyOCIvPgotKyAgPHJlZyBuYW1lPSJ5bW04 aCIgYml0c2l6ZT0iMTI4IiB0eXBlPSJ1aW50MTI4Ii8+Ci0rICA8cmVnIG5hbWU9InltbTloIiBi aXRzaXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTBoIiBiaXRz aXplPSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTFoIiBiaXRzaXpl PSIxMjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTJoIiBiaXRzaXplPSIx MjgiIHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTNoIiBiaXRzaXplPSIxMjgi IHR5cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTRoIiBiaXRzaXplPSIxMjgiIHR5 cGU9InVpbnQxMjgiLz4KLSsgIDxyZWcgbmFtZT0ieW1tMTVoIiBiaXRzaXplPSIxMjgiIHR5cGU9 InVpbnQxMjgiLz4KLSs8L2ZlYXR1cmU+Ci0tLS0gLi9nZGIvZmVhdHVyZXMvaTM4Ni9NYWtlZmls ZQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2ZlYXR1cmVz L2kzODYvTWFrZWZpbGUJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0w LDAgKzEsNSBAQAotK2luY2x1ZGUgTWFrZWZpbGUKLSsKLStYTUxUT0MgPSAkKGFkZHN1ZmZpeCAu eG1sLCAkKGZpbHRlciBpMzg2LyUsICQoV0hJQ0gpKSkKLStDRklMRVMgPSAkKHBhdHN1YnN0ICUu eG1sLCUuYywkKFhNTFRPQykpCi0rY2ZpbGVzOiAkKENGSUxFUykKLS0tLSAuL2dkYi9mZWF0dXJl cy9pMzg2L2FtZDY0LWF2eC1saW51eC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICsw MTAwCi0rKysgLi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXguYwkyMDEwLTA0LTAz IDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxNzEgQEAKLSsvKiBUSElTIEZJ TEUgSVMgR0VORVJBVEVELiAgT3JpZ2luYWw6IGFtZDY0LWF2eC1saW51eC54bWwgKi8KLSsKLSsj aW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJvc2FiaS5oIgotKyNpbmNsdWRlICJ0YXJnZXQt ZGVzY3JpcHRpb25zLmgiCi0rCi0rc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19hbWQ2NF9hdnhf bGludXg7Ci0rc3RhdGljIHZvaWQKLStpbml0aWFsaXplX3RkZXNjX2FtZDY0X2F2eF9saW51eCAo dm9pZCkKLSt7Ci0rICBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnJlc3VsdCA9IGFsbG9jYXRlX3Rhcmdl dF9kZXNjcmlwdGlvbiAoKTsKLSsgIHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0dXJlOwotKyAg c3RydWN0IHRkZXNjX3R5cGUgKmZpZWxkX3R5cGUsICp0eXBlOwotKwotKyAgc2V0X3RkZXNjX2Fy Y2hpdGVjdHVyZSAocmVzdWx0LCBiZmRfc2Nhbl9hcmNoICgiaTM4Njp4ODYtNjQiKSk7Ci0rCi0r ICBzZXRfdGRlc2Nfb3NhYmkgKHJlc3VsdCwgb3NhYmlfZnJvbV90ZGVzY19zdHJpbmcgKCJHTlUv TGludXgiKSk7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwg Im9yZy5nbnUuZ2RiLmkzODYuY29yZSIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9m bGFncyAoZmVhdHVyZSwgImkzODZfZWZsYWdzIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmll bGRfdHlwZSwgMCwgIkNGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIp OwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOwotKyAgdGRlc2NfYWRk X2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJBRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5 cGUsIDYsICJaRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJURiIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDksICJJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUs IDEwLCAiREYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9GIik7Ci0r ICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTQsICJOVCIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDE2LCAiUkYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBl LCAxNywgIlZNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE5LCAiVklGIik7Ci0rICB0ZGVzY19hZGRf ZmxhZyAoZmllbGRfdHlwZSwgMjAsICJWSVAiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90 eXBlLCAyMSwgIklEIik7Ci0rCi0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmF4Iiwg MCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwg InJieCIsIDEsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJyY3giLCAyLCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAicmR4IiwgMywgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2Nf Y3JlYXRlX3JlZyAoZmVhdHVyZSwgInJzaSIsIDQsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyZGkiLCA1LCAxLCBOVUxMLCA2NCwgImludDY0 Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJwIiwgNiwgMSwgTlVMTCwgNjQs ICJkYXRhX3B0ciIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJzcCIsIDcsIDEs IE5VTEwsIDY0LCAiZGF0YV9wdHIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJy OCIsIDgsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJyOSIsIDksIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJyMTAiLCAxMCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgInIxMSIsIDExLCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjEyIiwgMTIsIDEsIE5VTEwsIDY0LCAiaW50NjQi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTMiLCAxMywgMSwgTlVMTCwgNjQs ICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxNCIsIDE0LCAxLCBO VUxMLCA2NCwgImludDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjE1Iiwg MTUsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUs ICJyaXAiLCAxNiwgMSwgTlVMTCwgNjQsICJjb2RlX3B0ciIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgImVmbGFncyIsIDE3LCAxLCBOVUxMLCAzMiwgImkzODZfZWZsYWdzIik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiY3MiLCAxOCwgMSwgTlVMTCwgMzIsICJpbnQz MiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInNzIiwgMTksIDEsIE5VTEwsIDMy LCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJkcyIsIDIwLCAxLCBO VUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZXMiLCAy MSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwg ImZzIiwgMjIsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJncyIsIDIzLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAic3QwIiwgMjQsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDEiLCAyNSwgMSwgTlVMTCwgODAsICJpMzg3X2V4 dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MiIsIDI2LCAxLCBOVUxMLCA4 MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3QzIiwgMjcs IDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUs ICJzdDQiLCAyOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgInN0NSIsIDI5LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVz Y19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q2IiwgMzAsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDciLCAzMSwgMSwgTlVMTCwgODAs ICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZjdHJsIiwgMzIs IDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi ZnN0YXQiLCAzMywgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJmdGFnIiwgMzQsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAiZmlzZWciLCAzNSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsK LSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmaW9mZiIsIDM2LCAxLCAiZmxvYXQiLCAz MiwgImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvc2VnIiwgMzcsIDEs ICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZm9v ZmYiLCAzOCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJmb3AiLCAzOSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsKLSsgIGZlYXR1cmUg PSB0ZGVzY19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5zc2UiKTsK LSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaWVlZV9zaW5nbGUi KTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2NGYiLCBmaWVsZF90eXBlLCA0 KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaWVlZV9k b3VibGUiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2MmQiLCBmaWVsZF90 eXBlLCAyKTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAi aW50OCIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInYxNmk4IiwgZmllbGRf dHlwZSwgMTYpOwotKwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUs ICJpbnQxNiIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY4aTE2IiwgZmll bGRfdHlwZSwgOCk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVy ZSwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjRpMzIiLCBm aWVsZF90eXBlLCA0KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0 dXJlLCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2Mmk2NCIs IGZpZWxkX3R5cGUsIDIpOwotKwotKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV91bmlvbiAoZmVhdHVy ZSwgInZlYzEyOCIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUs ICJ2NGYiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY0X2Zsb2F0IiwgZmllbGRfdHlw ZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYyZCIpOwot KyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfZG91YmxlIiwgZmllbGRfdHlwZSk7Ci0rICBm aWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYxNmk4Iik7Ci0rICB0ZGVz Y19hZGRfZmllbGQgKHR5cGUsICJ2MTZfaW50OCIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlw ZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2OGkxNiIpOwotKyAgdGRlc2NfYWRkX2Zp ZWxkICh0eXBlLCAidjhfaW50MTYiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVz Y19uYW1lZF90eXBlIChmZWF0dXJlLCAidjRpMzIiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlw ZSwgInY0X2ludDMyIiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRf dHlwZSAoZmVhdHVyZSwgInYyaTY0Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2Ml9p bnQ2NCIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZl YXR1cmUsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ1aW50MTI4Iiwg ZmllbGRfdHlwZSk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdzIChmZWF0 dXJlLCAiaTM4Nl9teGNzciIsIDQpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDAs ICJJRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEsICJERSIpOwotKyAgdGRl c2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJaRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDMsICJPRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJV RSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDUsICJQRSIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJEQVoiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCA3LCAiSU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA4LCAiRE0i KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA5LCAiWk0iKTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCAxMCwgIk9NIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgMTEsICJVTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEyLCAiUE0i KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNSwgIkZaIik7Ci0rCi0rICB0ZGVz Y19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMCIsIDQwLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xIiwgNDEsIDEsIE5VTEwsIDEy OCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTIiLCA0Miwg MSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi eG1tMyIsIDQzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJ4bW00IiwgNDQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2Nf Y3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTUiLCA0NSwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7 Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNiIsIDQ2LCAxLCBOVUxMLCAxMjgs ICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW03IiwgNDcsIDEs IE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInht bTgiLCA0OCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAieG1tOSIsIDQ5LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMCIsIDUwLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsK LSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMSIsIDUxLCAxLCBOVUxMLCAxMjgs ICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMiIsIDUyLCAx LCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4 bW0xMyIsIDUzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJ4bW0xNCIsIDU0LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNj X2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xNSIsIDU1LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDU2LCAxLCAidmVjdG9y IiwgMzIsICJpMzg2X214Y3NyIik7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1 cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYubGludXgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJvcmlnX3JheCIsIDU3LCAxLCBOVUxMLCA2NCwgImludCIpOwotKwotKyAg ZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2 LmF2eCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTBoIiwgNTgsIDEsIE5V TEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0x aCIsIDU5LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAieW1tMmgiLCA2MCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2Nf Y3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTNoIiwgNjEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW00aCIsIDYyLCAxLCBOVUxMLCAx MjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNWgiLCA2 MywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgInltbTZoIiwgNjQsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJ5bW03aCIsIDY1LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tOGgiLCA2NiwgMSwgTlVMTCwgMTI4LCAi dWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTloIiwgNjcsIDEs IE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5 bW0xMGgiLCA2OCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgInltbTExaCIsIDY5LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTJoIiwgNzAsIDEsIE5VTEwsIDEyOCwgInVp bnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xM2giLCA3MSwgMSwg TlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInlt bTE0aCIsIDcyLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVn IChmZWF0dXJlLCAieW1tMTVoIiwgNzMsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsKLSsg IHRkZXNjX2FtZDY0X2F2eF9saW51eCA9IHJlc3VsdDsKLSt9Ci0tLS0gLi9nZGIvZmVhdHVyZXMv aTM4Ni9hbWQ2NC1hdngtbGludXgueG1sCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICsw MTAwCi0rKysgLi9nZGIvZmVhdHVyZXMvaTM4Ni9hbWQ2NC1hdngtbGludXgueG1sCTIwMTAtMDQt MDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDE4IEBACi0rPD94bWwgdmVy c2lvbj0iMS4wIj8+Ci0rPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgICBDb3B5aW5nIGFuZCBkaXN0cmlidXRpb24gb2YgdGhpcyBm aWxlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLAotKyAgICAgYXJlIHBlcm1pdHRlZCBp biBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0Ci0rICAg ICBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICAtLT4KLSsKLSs8IS0tIEFN RDY0IHdpdGggQVZYIC0gSW5jbHVkZXMgTGludXgtb25seSBzcGVjaWFsICJyZWdpc3RlciIuICAt LT4KLSsKLSs8IURPQ1RZUEUgdGFyZ2V0IFNZU1RFTSAiZ2RiLXRhcmdldC5kdGQiPgotKzx0YXJn ZXQ+Ci0rICA8YXJjaGl0ZWN0dXJlPmkzODY6eDg2LTY0PC9hcmNoaXRlY3R1cmU+Ci0rICA8b3Nh Ymk+R05VL0xpbnV4PC9vc2FiaT4KLSsgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LWNvcmUueG1s Ii8+Ci0rICA8eGk6aW5jbHVkZSBocmVmPSI2NGJpdC1zc2UueG1sIi8+Ci0rICA8eGk6aW5jbHVk ZSBocmVmPSI2NGJpdC1saW51eC54bWwiLz4KLSsgIDx4aTppbmNsdWRlIGhyZWY9IjY0Yml0LWF2 eC54bWwiLz4KLSs8L3RhcmdldD4KLS0tLSAuL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC5j CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZmVhdHVyZXMv aTM4Ni9hbWQ2NC1hdnguYwkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAg LTAsMCArMSwxNjYgQEAKLSsvKiBUSElTIEZJTEUgSVMgR0VORVJBVEVELiAgT3JpZ2luYWw6IGFt ZDY0LWF2eC54bWwgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJvc2FiaS5o IgotKyNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgiCi0rCi0rc3RydWN0IHRhcmdldF9k ZXNjICp0ZGVzY19hbWQ2NF9hdng7Ci0rc3RhdGljIHZvaWQKLStpbml0aWFsaXplX3RkZXNjX2Ft ZDY0X2F2eCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnJlc3VsdCA9IGFsbG9j YXRlX3RhcmdldF9kZXNjcmlwdGlvbiAoKTsKLSsgIHN0cnVjdCB0ZGVzY19mZWF0dXJlICpmZWF0 dXJlOwotKyAgc3RydWN0IHRkZXNjX3R5cGUgKmZpZWxkX3R5cGUsICp0eXBlOwotKwotKyAgc2V0 X3RkZXNjX2FyY2hpdGVjdHVyZSAocmVzdWx0LCBiZmRfc2Nhbl9hcmNoICgiaTM4Njp4ODYtNjQi KSk7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5n bnUuZ2RiLmkzODYuY29yZSIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAo ZmVhdHVyZSwgImkzODZfZWZsYWdzIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlw ZSwgMCwgIkNGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIpOwotKyAg dGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJQRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcg KGZpZWxkX3R5cGUsIDQsICJBRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYs ICJaRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOwotKyAgdGRl c2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDgsICJURiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDksICJJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAi REYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9GIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTQsICJOVCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDE2LCAiUkYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNywg IlZNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOwotKyAgdGRl c2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE5LCAiVklGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAo ZmllbGRfdHlwZSwgMjAsICJWSVAiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAy MSwgIklEIik7Ci0rCi0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmF4IiwgMCwgMSwg TlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJieCIs IDEsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUs ICJyY3giLCAyLCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAicmR4IiwgMywgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRl X3JlZyAoZmVhdHVyZSwgInJzaSIsIDQsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNj X2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyZGkiLCA1LCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicmJwIiwgNiwgMSwgTlVMTCwgNjQsICJkYXRh X3B0ciIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInJzcCIsIDcsIDEsIE5VTEws IDY0LCAiZGF0YV9wdHIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyOCIsIDgs IDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJy OSIsIDksIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJyMTAiLCAxMCwgMSwgTlVMTCwgNjQsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgInIxMSIsIDExLCAxLCBOVUxMLCA2NCwgImludDY0Iik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAicjEyIiwgMTIsIDEsIE5VTEwsIDY0LCAiaW50NjQiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyMTMiLCAxMywgMSwgTlVMTCwgNjQsICJpbnQ2 NCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInIxNCIsIDE0LCAxLCBOVUxMLCA2 NCwgImludDY0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAicjE1IiwgMTUsIDEs IE5VTEwsIDY0LCAiaW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJyaXAi LCAxNiwgMSwgTlVMTCwgNjQsICJjb2RlX3B0ciIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgImVmbGFncyIsIDE3LCAxLCBOVUxMLCAzMiwgImkzODZfZWZsYWdzIik7Ci0rICB0ZGVz Y19jcmVhdGVfcmVnIChmZWF0dXJlLCAiY3MiLCAxOCwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInNzIiwgMTksIDEsIE5VTEwsIDMyLCAiaW50 MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJkcyIsIDIwLCAxLCBOVUxMLCAz MiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZXMiLCAyMSwgMSwg TlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZzIiwg MjIsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUs ICJncyIsIDIzLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAic3QwIiwgMjQsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2Ny ZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDEiLCAyNSwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MiIsIDI2LCAxLCBOVUxMLCA4MCwgImkz ODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3QzIiwgMjcsIDEsIE5V TEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDQi LCAyOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgInN0NSIsIDI5LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAic3Q2IiwgMzAsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDciLCAzMSwgMSwgTlVMTCwgODAsICJpMzg3 X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZjdHJsIiwgMzIsIDEsICJm bG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZnN0YXQi LCAzMywgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJmdGFnIiwgMzQsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAiZmlzZWciLCAzNSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmaW9mZiIsIDM2LCAxLCAiZmxvYXQiLCAzMiwgImlu dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvc2VnIiwgMzcsIDEsICJmbG9h dCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZm9vZmYiLCAz OCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUs ICJmb3AiLCAzOSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsKLSsgIGZlYXR1cmUgPSB0ZGVz Y19jcmVhdGVfZmVhdHVyZSAocmVzdWx0LCAib3JnLmdudS5nZGIuaTM4Ni5zc2UiKTsKLSsgIGZp ZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaWVlZV9zaW5nbGUiKTsKLSsg IHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2NGYiLCBmaWVsZF90eXBlLCA0KTsKLSsK LSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaWVlZV9kb3VibGUi KTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2MmQiLCBmaWVsZF90eXBlLCAy KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50OCIp OwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInYxNmk4IiwgZmllbGRfdHlwZSwg MTYpOwotKwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQx NiIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY4aTE2IiwgZmllbGRfdHlw ZSwgOCk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImlu dDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJlLCAidjRpMzIiLCBmaWVsZF90 eXBlLCA0KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAi aW50NjQiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZlYXR1cmUsICJ2Mmk2NCIsIGZpZWxk X3R5cGUsIDIpOwotKwotKyAgdHlwZSA9IHRkZXNjX2NyZWF0ZV91bmlvbiAoZmVhdHVyZSwgInZl YzEyOCIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2NGYi KTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY0X2Zsb2F0IiwgZmllbGRfdHlwZSk7Ci0r ICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYyZCIpOwotKyAgdGRl c2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfZG91YmxlIiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90 eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInYxNmk4Iik7Ci0rICB0ZGVzY19hZGRf ZmllbGQgKHR5cGUsICJ2MTZfaW50OCIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRk ZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2OGkxNiIpOwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0 eXBlLCAidjhfaW50MTYiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1l ZF90eXBlIChmZWF0dXJlLCAidjRpMzIiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY0 X2ludDMyIiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAo ZmVhdHVyZSwgInYyaTY0Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2Ml9pbnQ2NCIs IGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUs ICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ1aW50MTI4IiwgZmllbGRf dHlwZSk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfY3JlYXRlX2ZsYWdzIChmZWF0dXJlLCAi aTM4Nl9teGNzciIsIDQpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDAsICJJRSIp OwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEsICJERSIpOwotKyAgdGRlc2NfYWRk X2ZsYWcgKGZpZWxkX3R5cGUsIDIsICJaRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5 cGUsIDMsICJPRSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJVRSIpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDUsICJQRSIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDYsICJEQVoiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBl LCA3LCAiSU0iKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA4LCAiRE0iKTsKLSsg IHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA5LCAiWk0iKTsKLSsgIHRkZXNjX2FkZF9mbGFn IChmaWVsZF90eXBlLCAxMCwgIk9NIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg MTEsICJVTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEyLCAiUE0iKTsKLSsg IHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNSwgIkZaIik7Ci0rCi0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAieG1tMCIsIDQwLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xIiwgNDEsIDEsIE5VTEwsIDEyOCwgInZl YzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTIiLCA0MiwgMSwgTlVM TCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tMyIs IDQzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJ4bW00IiwgNDQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRl X3JlZyAoZmVhdHVyZSwgInhtbTUiLCA0NSwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNiIsIDQ2LCAxLCBOVUxMLCAxMjgsICJ2ZWMx MjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW03IiwgNDcsIDEsIE5VTEws IDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTgiLCA0 OCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJl LCAieG1tOSIsIDQ5LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJ4bW0xMCIsIDUwLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMSIsIDUxLCAxLCBOVUxMLCAxMjgsICJ2ZWMx MjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMiIsIDUyLCAxLCBOVUxM LCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0xMyIs IDUzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJ4bW0xNCIsIDU0LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJ4bW0xNSIsIDU1LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDU2LCAxLCAidmVjdG9yIiwgMzIs ICJpMzg2X214Y3NyIik7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJl c3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuYXZ4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAieW1tMGgiLCA1NywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgInltbTFoIiwgNTgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsK LSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0yaCIsIDU5LCAxLCBOVUxMLCAxMjgs ICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tM2giLCA2MCwg MSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwg InltbTRoIiwgNjEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJ5bW01aCIsIDYyLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNmgiLCA2MywgMSwgTlVMTCwgMTI4LCAidWlu dDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTdoIiwgNjQsIDEsIE5V TEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW04 aCIsIDY1LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChm ZWF0dXJlLCAieW1tOWgiLCA2NiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2Nf Y3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTEwaCIsIDY3LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4 Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTFoIiwgNjgsIDEsIE5VTEws IDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xMmgi LCA2OSwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgInltbTEzaCIsIDcwLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAieW1tMTRoIiwgNzEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgi KTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xNWgiLCA3MiwgMSwgTlVMTCwg MTI4LCAidWludDEyOCIpOwotKwotKyAgdGRlc2NfYW1kNjRfYXZ4ID0gcmVzdWx0OwotK30KLS0t LSAuL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC54bWwJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9mZWF0dXJlcy9pMzg2L2FtZDY0LWF2eC54bWwJMjAx MC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTYgQEAKLSs8P3ht bCB2ZXJzaW9uPSIxLjAiPz4KLSs8IS0tIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0 aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCi0rICAgICBhcmUgcGVybWl0 dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQK LSsgICAgIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gIC0tPgotKwotKzwh LS0gQU1ENjQgd2l0aCBBVlggLS0+Ci0rCi0rPCFET0NUWVBFIHRhcmdldCBTWVNURU0gImdkYi10 YXJnZXQuZHRkIj4KLSs8dGFyZ2V0PgotKyAgPGFyY2hpdGVjdHVyZT5pMzg2Ong4Ni02NDwvYXJj aGl0ZWN0dXJlPgotKyAgPHhpOmluY2x1ZGUgaHJlZj0iNjRiaXQtY29yZS54bWwiLz4KLSsgIDx4 aTppbmNsdWRlIGhyZWY9IjY0Yml0LXNzZS54bWwiLz4KLSsgIDx4aTppbmNsdWRlIGhyZWY9IjY0 Yml0LWF2eC54bWwiLz4KLSs8L3RhcmdldD4KLS0tLSAuL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYt YXZ4LWxpbnV4LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dk Yi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LWxpbnV4LmMJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAw MDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTQ3IEBACi0rLyogVEhJUyBGSUxFIElTIEdFTkVSQVRF RC4gIE9yaWdpbmFsOiBpMzg2LWF2eC1saW51eC54bWwgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5o IgotKyNpbmNsdWRlICJvc2FiaS5oIgotKyNpbmNsdWRlICJ0YXJnZXQtZGVzY3JpcHRpb25zLmgi Ci0rCi0rc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19pMzg2X2F2eF9saW51eDsKLStzdGF0aWMg dm9pZAotK2luaXRpYWxpemVfdGRlc2NfaTM4Nl9hdnhfbGludXggKHZvaWQpCi0rewotKyAgc3Ry dWN0IHRhcmdldF9kZXNjICpyZXN1bHQgPSBhbGxvY2F0ZV90YXJnZXRfZGVzY3JpcHRpb24gKCk7 Ci0rICBzdHJ1Y3QgdGRlc2NfZmVhdHVyZSAqZmVhdHVyZTsKLSsgIHN0cnVjdCB0ZGVzY190eXBl ICpmaWVsZF90eXBlLCAqdHlwZTsKLSsKLSsgIHNldF90ZGVzY19hcmNoaXRlY3R1cmUgKHJlc3Vs dCwgYmZkX3NjYW5fYXJjaCAoImkzODYiKSk7Ci0rCi0rICBzZXRfdGRlc2Nfb3NhYmkgKHJlc3Vs dCwgb3NhYmlfZnJvbV90ZGVzY19zdHJpbmcgKCJHTlUvTGludXgiKSk7Ci0rCi0rICBmZWF0dXJl ID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3VsdCwgIm9yZy5nbnUuZ2RiLmkzODYuY29yZSIp OwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfZWZs YWdzIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMCwgIkNGIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMSwgIiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDIsICJQRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDQsICJB RiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDYsICJaRiIpOwotKyAgdGRlc2Nf YWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJTRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDgsICJURiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJJRiIp OwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiREYiKTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIk9GIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgMTQsICJOVCIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE2LCAiUkYi KTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNywgIlZNIik7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgMTgsICJBQyIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxk X3R5cGUsIDE5LCAiVklGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjAsICJW SVAiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyMSwgIklEIik7Ci0rCi0rICB0 ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWF4IiwgMCwgMSwgTlVMTCwgMzIsICJpbnQzMiIp OwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVjeCIsIDEsIDEsIE5VTEwsIDMyLCAi aW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlZHgiLCAyLCAxLCBOVUxM LCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWJ4IiwgMywg MSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVz cCIsIDQsIDEsIE5VTEwsIDMyLCAiZGF0YV9wdHIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJlYnAiLCA1LCAxLCBOVUxMLCAzMiwgImRhdGFfcHRyIik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAiZXNpIiwgNiwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVkaSIsIDcsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsK LSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlaXAiLCA4LCAxLCBOVUxMLCAzMiwgImNv ZGVfcHRyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWZsYWdzIiwgOSwgMSwg TlVMTCwgMzIsICJpMzg2X2VmbGFncyIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwg ImNzIiwgMTAsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJzcyIsIDExLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAiZHMiLCAxMiwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2Nf Y3JlYXRlX3JlZyAoZmVhdHVyZSwgImVzIiwgMTMsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsg IHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmcyIsIDE0LCAxLCBOVUxMLCAzMiwgImludDMy Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZ3MiLCAxNSwgMSwgTlVMTCwgMzIs ICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MCIsIDE2LCAxLCBO VUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Qx IiwgMTcsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJzdDIiLCAxOCwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgInN0MyIsIDE5LCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q0IiwgMjAsIDEsIE5VTEwsIDgwLCAiaTM4 N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDUiLCAyMSwgMSwgTlVM TCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NiIs IDIyLCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAic3Q3IiwgMjMsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJmY3RybCIsIDI0LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOwotKyAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZzdGF0IiwgMjUsIDEsICJmbG9hdCIsIDMyLCAi aW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZnRhZyIsIDI2LCAxLCAiZmxv YXQiLCAzMiwgImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZpc2VnIiwg MjcsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJl LCAiZmlvZmYiLCAyOCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJmb3NlZyIsIDI5LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvb2ZmIiwgMzAsIDEsICJmbG9hdCIsIDMyLCAiaW50 Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZm9wIiwgMzEsIDEsICJmbG9hdCIs IDMyLCAiaW50Iik7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3Vs dCwgIm9yZy5nbnUuZ2RiLmkzODYuc3NlIik7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRf dHlwZSAoZmVhdHVyZSwgImllZWVfc2luZ2xlIik7Ci0rICB0ZGVzY19jcmVhdGVfdmVjdG9yIChm ZWF0dXJlLCAidjRmIiwgZmllbGRfdHlwZSwgNCk7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2Nf bmFtZWRfdHlwZSAoZmVhdHVyZSwgImllZWVfZG91YmxlIik7Ci0rICB0ZGVzY19jcmVhdGVfdmVj dG9yIChmZWF0dXJlLCAidjJkIiwgZmllbGRfdHlwZSwgMik7Ci0rCi0rICBmaWVsZF90eXBlID0g dGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDgiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0 b3IgKGZlYXR1cmUsICJ2MTZpOCIsIGZpZWxkX3R5cGUsIDE2KTsKLSsKLSsgIGZpZWxkX3R5cGUg PSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAiaW50MTYiKTsKLSsgIHRkZXNjX2NyZWF0ZV92 ZWN0b3IgKGZlYXR1cmUsICJ2OGkxNiIsIGZpZWxkX3R5cGUsIDgpOwotKwotKyAgZmllbGRfdHlw ZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRl X3ZlY3RvciAoZmVhdHVyZSwgInY0aTMyIiwgZmllbGRfdHlwZSwgNCk7Ci0rCi0rICBmaWVsZF90 eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgImludDY0Iik7Ci0rICB0ZGVzY19jcmVh dGVfdmVjdG9yIChmZWF0dXJlLCAidjJpNjQiLCBmaWVsZF90eXBlLCAyKTsKLSsKLSsgIHR5cGUg PSB0ZGVzY19jcmVhdGVfdW5pb24gKGZlYXR1cmUsICJ2ZWMxMjgiKTsKLSsgIGZpZWxkX3R5cGUg PSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjRmIik7Ci0rICB0ZGVzY19hZGRfZmllbGQg KHR5cGUsICJ2NF9mbG9hdCIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25h bWVkX3R5cGUgKGZlYXR1cmUsICJ2MmQiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInYy X2RvdWJsZSIsIGZpZWxkX3R5cGUpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUg KGZlYXR1cmUsICJ2MTZpOCIpOwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjE2X2ludDgi LCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJl LCAidjhpMTYiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInY4X2ludDE2IiwgZmllbGRf dHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInY0aTMy Iik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2NF9pbnQzMiIsIGZpZWxkX3R5cGUpOwot KyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2Mmk2NCIpOwotKyAg dGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjJfaW50NjQiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxk X3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidWludDEyOCIpOwotKyAgdGRlc2Nf YWRkX2ZpZWxkICh0eXBlLCAidWludDEyOCIsIGZpZWxkX3R5cGUpOwotKwotKyAgZmllbGRfdHlw ZSA9IHRkZXNjX2NyZWF0ZV9mbGFncyAoZmVhdHVyZSwgImkzODZfbXhjc3IiLCA0KTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAwLCAiSUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCAxLCAiREUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAyLCAi WkUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAzLCAiT0UiKTsKLSsgIHRkZXNj X2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAiVUUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVs ZF90eXBlLCA1LCAiUEUiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiREFa Iik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNywgIklNIik7Ci0rICB0ZGVzY19h ZGRfZmxhZyAoZmllbGRfdHlwZSwgOCwgIkRNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgOSwgIlpNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTAsICJPTSIp OwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDExLCAiVU0iKTsKLSsgIHRkZXNjX2Fk ZF9mbGFnIChmaWVsZF90eXBlLCAxMiwgIlBNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRf dHlwZSwgMTUsICJGWiIpOwotKwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTAi LCAzMiwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAieG1tMSIsIDMzLCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJ4bW0yIiwgMzQsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTMiLCAzNSwgMSwgTlVMTCwgMTI4LCAidmVj MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNCIsIDM2LCAxLCBOVUxM LCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW01Iiwg MzcsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgInhtbTYiLCAzOCwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAieG1tNyIsIDM5LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJteGNzciIsIDQwLCAxLCAidmVjdG9yIiwgMzIsICJp Mzg2X214Y3NyIik7Ci0rCi0rICBmZWF0dXJlID0gdGRlc2NfY3JlYXRlX2ZlYXR1cmUgKHJlc3Vs dCwgIm9yZy5nbnUuZ2RiLmkzODYubGludXgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJvcmlnX2VheCIsIDQxLCAxLCBOVUxMLCAzMiwgImludCIpOwotKwotKyAgZmVhdHVyZSA9 IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2LmF2eCIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTBoIiwgNDIsIDEsIE5VTEwsIDEyOCwg InVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW0xaCIsIDQzLCAx LCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi eW1tMmgiLCA0NCwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgInltbTNoIiwgNDUsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW00aCIsIDQ2LCAxLCBOVUxMLCAxMjgsICJ1aW50 MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieW1tNWgiLCA0NywgMSwgTlVM TCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTZo IiwgNDgsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJ5bW03aCIsIDQ5LCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rCi0rICB0ZGVz Y19pMzg2X2F2eF9saW51eCA9IHJlc3VsdDsKLSt9Ci0tLS0gLi9nZGIvZmVhdHVyZXMvaTM4Ni9p Mzg2LWF2eC1saW51eC54bWwJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsr KyAuL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LWxpbnV4LnhtbAkyMDEwLTA0LTAzIDIxOjEy OjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxOCBAQAotKzw/eG1sIHZlcnNpb249IjEu MCI/PgotKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0 aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKLSsgICAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1l ZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAotKyAgICAgbm90aWNl IGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+Ci0rCi0rPCEtLSBJMzg2IHdpdGgg QVZYLSBJbmNsdWRlcyBMaW51eC1vbmx5IHNwZWNpYWwgInJlZ2lzdGVyIi4gIC0tPgotKwotKzwh RE9DVFlQRSB0YXJnZXQgU1lTVEVNICJnZGItdGFyZ2V0LmR0ZCI+Ci0rPHRhcmdldD4KLSsgIDxh cmNoaXRlY3R1cmU+aTM4NjwvYXJjaGl0ZWN0dXJlPgotKyAgPG9zYWJpPkdOVS9MaW51eDwvb3Nh Ymk+Ci0rICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1jb3JlLnhtbCIvPgotKyAgPHhpOmluY2x1 ZGUgaHJlZj0iMzJiaXQtc3NlLnhtbCIvPgotKyAgPHhpOmluY2x1ZGUgaHJlZj0iMzJiaXQtbGlu dXgueG1sIi8+Ci0rICA8eGk6aW5jbHVkZSBocmVmPSIzMmJpdC1hdngueG1sIi8+Ci0rPC90YXJn ZXQ+Ci0tLS0gLi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC5jCTE5NzAtMDEtMDEgMDE6MDA6 MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZmVhdHVyZXMvaTM4Ni9pMzg2LWF2eC5jCTIw MTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDE0MiBAQAotKy8q IFRISVMgRklMRSBJUyBHRU5FUkFURUQuICBPcmlnaW5hbDogaTM4Ni1hdngueG1sICovCi0rCi0r I2luY2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAib3NhYmkuaCIKLSsjaW5jbHVkZSAidGFyZ2V0 LWRlc2NyaXB0aW9ucy5oIgotKwotK3N0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfaTM4Nl9hdng7 Ci0rc3RhdGljIHZvaWQKLStpbml0aWFsaXplX3RkZXNjX2kzODZfYXZ4ICh2b2lkKQotK3sKLSsg IHN0cnVjdCB0YXJnZXRfZGVzYyAqcmVzdWx0ID0gYWxsb2NhdGVfdGFyZ2V0X2Rlc2NyaXB0aW9u ICgpOwotKyAgc3RydWN0IHRkZXNjX2ZlYXR1cmUgKmZlYXR1cmU7Ci0rICBzdHJ1Y3QgdGRlc2Nf dHlwZSAqZmllbGRfdHlwZSwgKnR5cGU7Ci0rCi0rICBzZXRfdGRlc2NfYXJjaGl0ZWN0dXJlIChy ZXN1bHQsIGJmZF9zY2FuX2FyY2ggKCJpMzg2IikpOwotKwotKyAgZmVhdHVyZSA9IHRkZXNjX2Ny ZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251LmdkYi5pMzg2LmNvcmUiKTsKLSsgIGZpZWxk X3R5cGUgPSB0ZGVzY19jcmVhdGVfZmxhZ3MgKGZlYXR1cmUsICJpMzg2X2VmbGFncyIsIDQpOwot KyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDAsICJDRiIpOwotKyAgdGRlc2NfYWRkX2Zs YWcgKGZpZWxkX3R5cGUsIDEsICIiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAy LCAiUEYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA0LCAiQUYiKTsKLSsgIHRk ZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA2LCAiWkYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChm aWVsZF90eXBlLCA3LCAiU0YiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA4LCAi VEYiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCA5LCAiSUYiKTsKLSsgIHRkZXNj X2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMCwgIkRGIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmll bGRfdHlwZSwgMTEsICJPRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE0LCAi TlQiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxNiwgIlJGIik7Ci0rICB0ZGVz Y19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMTcsICJWTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDE4LCAiQUMiKTsKLSsgIHRkZXNjX2FkZF9mbGFnIChmaWVsZF90eXBlLCAxOSwg IlZJRiIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDIwLCAiVklQIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMjEsICJJRCIpOwotKwotKyAgdGRlc2NfY3JlYXRl X3JlZyAoZmVhdHVyZSwgImVheCIsIDAsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNj X2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlY3giLCAxLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWR4IiwgMiwgMSwgTlVMTCwgMzIsICJpbnQz MiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVieCIsIDMsIDEsIE5VTEwsIDMy LCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJlc3AiLCA0LCAxLCBO VUxMLCAzMiwgImRhdGFfcHRyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAiZWJw IiwgNSwgMSwgTlVMTCwgMzIsICJkYXRhX3B0ciIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVh dHVyZSwgImVzaSIsIDYsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJlZGkiLCA3LCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19j cmVhdGVfcmVnIChmZWF0dXJlLCAiZWlwIiwgOCwgMSwgTlVMTCwgMzIsICJjb2RlX3B0ciIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImVmbGFncyIsIDksIDEsIE5VTEwsIDMyLCAi aTM4Nl9lZmxhZ3MiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJjcyIsIDEwLCAx LCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Mi LCAxMSwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgImRzIiwgMTIsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcg KGZlYXR1cmUsICJlcyIsIDEzLCAxLCBOVUxMLCAzMiwgImludDMyIik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAiZnMiLCAxNCwgMSwgTlVMTCwgMzIsICJpbnQzMiIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImdzIiwgMTUsIDEsIE5VTEwsIDMyLCAiaW50MzIiKTsK LSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDAiLCAxNiwgMSwgTlVMTCwgODAsICJp Mzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0MSIsIDE3LCAxLCBO VUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Qy IiwgMTgsIDEsIE5VTEwsIDgwLCAiaTM4N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZl YXR1cmUsICJzdDMiLCAxOSwgMSwgTlVMTCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3Jl YXRlX3JlZyAoZmVhdHVyZSwgInN0NCIsIDIwLCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0r ICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAic3Q1IiwgMjEsIDEsIE5VTEwsIDgwLCAiaTM4 N19leHQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJzdDYiLCAyMiwgMSwgTlVM TCwgODAsICJpMzg3X2V4dCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInN0NyIs IDIzLCAxLCBOVUxMLCA4MCwgImkzODdfZXh0Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAiZmN0cmwiLCAyNCwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJmc3RhdCIsIDI1LCAxLCAiZmxvYXQiLCAzMiwgImludCIpOwotKyAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZ0YWciLCAyNiwgMSwgImZsb2F0IiwgMzIsICJp bnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJmaXNlZyIsIDI3LCAxLCAiZmxv YXQiLCAzMiwgImludCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZpb2ZmIiwg MjgsIDEsICJmbG9hdCIsIDMyLCAiaW50Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJl LCAiZm9zZWciLCAyOSwgMSwgImZsb2F0IiwgMzIsICJpbnQiKTsKLSsgIHRkZXNjX2NyZWF0ZV9y ZWcgKGZlYXR1cmUsICJmb29mZiIsIDMwLCAxLCAiZmxvYXQiLCAzMiwgImludCIpOwotKyAgdGRl c2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgImZvcCIsIDMxLCAxLCAiZmxvYXQiLCAzMiwgImludCIp OwotKwotKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251 LmdkYi5pMzg2LnNzZSIpOwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1 cmUsICJpZWVlX3NpbmdsZSIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVyZSwgInY0 ZiIsIGZpZWxkX3R5cGUsIDQpOwotKwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUg KGZlYXR1cmUsICJpZWVlX2RvdWJsZSIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAoZmVhdHVy ZSwgInYyZCIsIGZpZWxkX3R5cGUsIDIpOwotKwotKyAgZmllbGRfdHlwZSA9IHRkZXNjX25hbWVk X3R5cGUgKGZlYXR1cmUsICJpbnQ4Iik7Ci0rICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0dXJl LCAidjE2aTgiLCBmaWVsZF90eXBlLCAxNik7Ci0rCi0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFt ZWRfdHlwZSAoZmVhdHVyZSwgImludDE2Iik7Ci0rICB0ZGVzY19jcmVhdGVfdmVjdG9yIChmZWF0 dXJlLCAidjhpMTYiLCBmaWVsZF90eXBlLCA4KTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19u YW1lZF90eXBlIChmZWF0dXJlLCAiaW50MzIiKTsKLSsgIHRkZXNjX2NyZWF0ZV92ZWN0b3IgKGZl YXR1cmUsICJ2NGkzMiIsIGZpZWxkX3R5cGUsIDQpOwotKwotKyAgZmllbGRfdHlwZSA9IHRkZXNj X25hbWVkX3R5cGUgKGZlYXR1cmUsICJpbnQ2NCIpOwotKyAgdGRlc2NfY3JlYXRlX3ZlY3RvciAo ZmVhdHVyZSwgInYyaTY0IiwgZmllbGRfdHlwZSwgMik7Ci0rCi0rICB0eXBlID0gdGRlc2NfY3Jl YXRlX3VuaW9uIChmZWF0dXJlLCAidmVjMTI4Iik7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFt ZWRfdHlwZSAoZmVhdHVyZSwgInY0ZiIpOwotKyAgdGRlc2NfYWRkX2ZpZWxkICh0eXBlLCAidjRf ZmxvYXQiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChm ZWF0dXJlLCAidjJkIik7Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2Ml9kb3VibGUiLCBm aWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAi djE2aTgiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAodHlwZSwgInYxNl9pbnQ4IiwgZmllbGRfdHlw ZSk7Ci0rICBmaWVsZF90eXBlID0gdGRlc2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInY4aTE2Iik7 Ci0rICB0ZGVzY19hZGRfZmllbGQgKHR5cGUsICJ2OF9pbnQxNiIsIGZpZWxkX3R5cGUpOwotKyAg ZmllbGRfdHlwZSA9IHRkZXNjX25hbWVkX3R5cGUgKGZlYXR1cmUsICJ2NGkzMiIpOwotKyAgdGRl c2NfYWRkX2ZpZWxkICh0eXBlLCAidjRfaW50MzIiLCBmaWVsZF90eXBlKTsKLSsgIGZpZWxkX3R5 cGUgPSB0ZGVzY19uYW1lZF90eXBlIChmZWF0dXJlLCAidjJpNjQiKTsKLSsgIHRkZXNjX2FkZF9m aWVsZCAodHlwZSwgInYyX2ludDY0IiwgZmllbGRfdHlwZSk7Ci0rICBmaWVsZF90eXBlID0gdGRl c2NfbmFtZWRfdHlwZSAoZmVhdHVyZSwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2FkZF9maWVsZCAo dHlwZSwgInVpbnQxMjgiLCBmaWVsZF90eXBlKTsKLSsKLSsgIGZpZWxkX3R5cGUgPSB0ZGVzY19j cmVhdGVfZmxhZ3MgKGZlYXR1cmUsICJpMzg2X214Y3NyIiwgNCk7Ci0rICB0ZGVzY19hZGRfZmxh ZyAoZmllbGRfdHlwZSwgMCwgIklFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwg MSwgIkRFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMiwgIlpFIik7Ci0rICB0 ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgMywgIk9FIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAo ZmllbGRfdHlwZSwgNCwgIlVFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNSwg IlBFIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmllbGRfdHlwZSwgNiwgIkRBWiIpOwotKyAgdGRl c2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDcsICJJTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZp ZWxkX3R5cGUsIDgsICJETSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDksICJa TSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDEwLCAiT00iKTsKLSsgIHRkZXNj X2FkZF9mbGFnIChmaWVsZF90eXBlLCAxMSwgIlVNIik7Ci0rICB0ZGVzY19hZGRfZmxhZyAoZmll bGRfdHlwZSwgMTIsICJQTSIpOwotKyAgdGRlc2NfYWRkX2ZsYWcgKGZpZWxkX3R5cGUsIDE1LCAi RloiKTsKLSsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW0wIiwgMzIsIDEsIE5V TEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTEi LCAzMywgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0 dXJlLCAieG1tMiIsIDM0LCAxLCBOVUxMLCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0 ZV9yZWcgKGZlYXR1cmUsICJ4bW0zIiwgMzUsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAg dGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInhtbTQiLCAzNiwgMSwgTlVMTCwgMTI4LCAidmVj MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAieG1tNSIsIDM3LCAxLCBOVUxM LCAxMjgsICJ2ZWMxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ4bW02Iiwg MzgsIDEsIE5VTEwsIDEyOCwgInZlYzEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVy ZSwgInhtbTciLCAzOSwgMSwgTlVMTCwgMTI4LCAidmVjMTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVf cmVnIChmZWF0dXJlLCAibXhjc3IiLCA0MCwgMSwgInZlY3RvciIsIDMyLCAiaTM4Nl9teGNzciIp OwotKwotKyAgZmVhdHVyZSA9IHRkZXNjX2NyZWF0ZV9mZWF0dXJlIChyZXN1bHQsICJvcmcuZ251 LmdkYi5pMzg2LmF2eCIpOwotKyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTBoIiwg NDEsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1 cmUsICJ5bW0xaCIsIDQyLCAxLCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVh dGVfcmVnIChmZWF0dXJlLCAieW1tMmgiLCA0MywgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwot KyAgdGRlc2NfY3JlYXRlX3JlZyAoZmVhdHVyZSwgInltbTNoIiwgNDQsIDEsIE5VTEwsIDEyOCwg InVpbnQxMjgiKTsKLSsgIHRkZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW00aCIsIDQ1LCAx LCBOVUxMLCAxMjgsICJ1aW50MTI4Iik7Ci0rICB0ZGVzY19jcmVhdGVfcmVnIChmZWF0dXJlLCAi eW1tNWgiLCA0NiwgMSwgTlVMTCwgMTI4LCAidWludDEyOCIpOwotKyAgdGRlc2NfY3JlYXRlX3Jl ZyAoZmVhdHVyZSwgInltbTZoIiwgNDcsIDEsIE5VTEwsIDEyOCwgInVpbnQxMjgiKTsKLSsgIHRk ZXNjX2NyZWF0ZV9yZWcgKGZlYXR1cmUsICJ5bW03aCIsIDQ4LCAxLCBOVUxMLCAxMjgsICJ1aW50 MTI4Iik7Ci0rCi0rICB0ZGVzY19pMzg2X2F2eCA9IHJlc3VsdDsKLSt9Ci0tLS0gLi9nZGIvZmVh dHVyZXMvaTM4Ni9pMzg2LWF2eC54bWwJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyAuL2dkYi9mZWF0dXJlcy9pMzg2L2kzODYtYXZ4LnhtbAkyMDEwLTA0LTAzIDIxOjEy OjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxNiBAQAotKzw/eG1sIHZlcnNpb249IjEu MCI/PgotKzwhLS0gQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0 aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKLSsgICAgIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1l ZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAotKyAgICAgbm90aWNl IGFuZCB0aGlzIG5vdGljZSBhcmUgcHJlc2VydmVkLiAgLS0+Ci0rCi0rPCEtLSBJMzg2IHdpdGgg QVZYIC0tPgotKwotKzwhRE9DVFlQRSB0YXJnZXQgU1lTVEVNICJnZGItdGFyZ2V0LmR0ZCI+Ci0r PHRhcmdldD4KLSsgIDxhcmNoaXRlY3R1cmU+aTM4NjwvYXJjaGl0ZWN0dXJlPgotKyAgPHhpOmlu Y2x1ZGUgaHJlZj0iMzJiaXQtY29yZS54bWwiLz4KLSsgIDx4aTppbmNsdWRlIGhyZWY9IjMyYml0 LXNzZS54bWwiLz4KLSsgIDx4aTppbmNsdWRlIGhyZWY9IjMyYml0LWF2eC54bWwiLz4KLSs8L3Rh cmdldD4KLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nLmF2eAkxOTcwLTAxLTAxIDAxOjAw OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cuYXZ4CTIw MTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDg0IEBACi0rMjAx MC0wMy0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGxpbnV4LXg4 Ni1sb3cuYyAoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IFVzZQotKwlJMzg2X1hTVEFU RV9TU0VfU0laRSBpbnN0ZWFkIG9mIEkzODZfWFNUQVRFX01BWF9TSVpFLiAgVXNlCi0rCUkzODZf WFNUQVRFX1NJWkUuCi0rCi0rMjAxMC0wMy0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGkzODctZnAuYyAoaTM4N19jYWNoZV90b194c2F2ZSk6IFVwZGF0ZWQuCi0r CShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCSh4ODZfeGNyMCk6IExpa2V3aXNl LgotKwkqIGxpbnV4LXg4Ni1sb3cuYyAoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IExp a2V3aXNlLgotKwotKzIwMTAtMDMtMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBNYWtlZmlsZS5pbiAoaTM4Ni14c3RhdGUubyk6IFJlbW92ZWQuCi0rCi0rCSogY29u ZmlndXJlLnNydiAoc3J2X3RndG9iaik6IFJlbW92ZSBpMzg2LXhzdGF0ZS5vIGZvcgotKwlpWzM0 NTY3XTg2LSotbGludXgqIGFuZCB4ODZfNjQtKi1saW51eCouCi0rCi0rCSogaTM4Ny1mcC5jICh4 ODZfeGNyMCk6IEluaXRpYWxpemVkIHRvIFhTVEFURV9TU0VfTUFTSy4KLSsJKHg4Nl94Y3IwX2lu aXQpOiBSZW1vdmVkLgotKwotKwkqIGkzODctZnAuaCAoeDg2X3hjcjBfaW5pdCk6IFJlbW92ZWQu Ci0rCi0rCSogbGludXgteDg2LWxvdy5jICh4ODZfbGludXhfcHJvY2Vzc19xc3VwcG9ydGVkKTog VXNlCi0rCVhTVEFURV9NQVhfU0laRV9OX09GX0lOVDY0IGFuZCBYU1RBVEVfTUFYX1NJWkUuICBH ZXQgeGNyMAotKwlmcm9tIFhTQVZFIGV4dGVuZGVkIHN0YXRlLgotKwotKzIwMTAtMDItMDIgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAoY2xlYW4p OiBSZXBsYWNlIHJlZy1pMzg2LWxpbnV4LWF2eC5jIHdpdGgKLSsJcmVnLWkzODYtYXZ4LWxpbnV4 LmMuCi0rCShyZWcteDg2LTY0LWF2eC5jKTogRml4ZWQuCi0rCShyZWcteDg2LTY0LWF2eC1saW51 eC5jKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50 ZWwuY29tPgotKwotKwkqIGNvbmZpZ3VyZS5zcnYgKHNydl90Z3RvYmopOiBBZGQgeHNhdmUtbmF0 Lm8gZm9yCi0rCWlbMzQ1NjddODYtKi1saW51eCogYW5kIHg4Nl82NC0qLWxpbnV4Ki4KLSsKLSsy MDEwLTAxLTIxICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1m cC5jICh4ODZfc3NlX3VuaXQpOiBSZW5hbWVkIHRvIC4uLgotKwkoeDg2X3ZlY3Rvcl91bml0KTog VGhpcy4KLSsJKHg4Nl9nZXRfc3NlX3VuaXQpOiBSZW5hbWVkIHRvIC4uLgotKwkoeDg2X2dldF92 ZWN0b3JfdW5pdCk6IFRoaXMuCi0rCShpMzg3X2NhY2hlX3RvX2Z4c2F2ZSk6IFVwZGF0ZWQuCi0r CSogbGludXgteDg2LWxvdy5jICh4ODZfYXJjaF9zZXR1cCk6IExpa2V3aXNlLgotKwotKzIwMTAt MDEtMjEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmgg KHg4Nl9zc2VfdW5pdCk6IFJlbmFtZWQgdG8gLi4uCi0rCSh4ODZfdmVjdG9yX3VuaXQpOiBUaGlz LgotKwotKzIwMDktMTAtMTQgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJ KiBNYWtlZmlsZS5pbiAoY2xlYW4pOiBBbHNvIHJlbW92ZSByZWctaTM4Ni1hdnguYywKLSsJcmVn LWkzODYtYXZ4LWxpbnV4LmMsIHJlZy14ODYtNjQtYXZ4LmMgYW5kIHJlZy14ODYtNjQtYXZ4LWxp bnV4LmMuCi0rCShyZWctaTM4Ni1hdngubyk6IE5ldyB0YXJnZXQuCi0rCShyZWctaTM4Ni1hdngu Yyk6IExpa2V3aXNlLgotKwkocmVnLWkzODYtYXZ4LWxpbnV4Lm8pOiBMaWtld2lzZS4KLSsJKHJl Zy1pMzg2LWF2eC1saW51eC5jKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0LWF2eC5vKTogTGlr ZXdpc2UuCi0rCShyZWcteDg2LTY0LWF2eC5jKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0LWF2 eC1saW51eC5vKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0LWF2eC1saW51eC5jKTogTGlrZXdp c2UuCi0rCi0rCSogZ2Ric2VydmVyL2NvbmZpZ3VyZS5zcnYgKHNydl9yZWdvYmopOiBBZGQgcmVn LWkzODYtYXZ4LWxpbnV4Lm8KLSsJZm9yIGlbMzQ1NjddODYtKi1saW51eCouICBBZGQgcmVnLXg4 Ni02NC1hdngtbGludXgubyBhbmQKLSsJcmVnLWkzODYtYXZ4LWxpbnV4Lm8gZm9yIHg4Nl82NC0q LWxpbnV4Ki4KLSsKLSsJKiBpMzg3LWZwLmMgKHg4Nl9zc2VfdW5pdCk6IE5ldy4KLSsJKHg4Nl9n ZXRfc3NlX3VuaXQpOiBMaWtld2lzZS4KLSsJKGkzODdfY2FjaGVfdG9fZnhzYXZlKTogSGFuZGxl IHg4Nl9zc2VfdW5pdC4gU3VwcG9ydCBmYWtlCi0rCUFWWCByZWdpc3RlcnMuCi0rCShpMzg3X2Z4 c2F2ZV90b19jYWNoZSk6IExpa2V3aXNlLgotKwotKwkqIGkzODctZnAuaCAoeDg2X3NzZV91bml0 KTogTmV3LgotKwkoeDg2X2dldF9zc2VfdW5pdCk6IExpa2V3aXNlLgotKwotKwkqIGxpbnV4LXg4 Ni1sb3cuYyAoaW5pdF9yZWdpc3RlcnNfaTM4Nl9hdnhfbGludXgpOiBOZXcuCi0rCShpbml0X3Jl Z2lzdGVyc194ODZfNjRfYXZ4X2xpbnV4KTogTGlrZXdpc2UuCi0rCSh4ODZfYXJjaF9zZXR1cCk6 IENhbGwgeDg2X2dldF9zc2VfdW5pdCAoKSB0byBoYW5kbGUgeDg2X3NzZV91bml0LgotLS0tIC4v Z2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cueGNyCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAw ICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZy54Y3IJMjAxMC0wNC0wMyAyMTox MjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMzczIEBACi0rMjAxMC0wMy0zMCAgSC5K LiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGxpbnV4LXg4Ni1sb3cuYzogRG9u J3QgaW5jbHVkZSA8dW5pc3RkLmg+LgotKwotKzIwMTAtMDMtMjkgIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF91cGRhdGVf eG1sdGFyZ2V0KTogQ2FsbCBwdHJhY2UKLSsJb25seSBvbmNlLgotKwotKzIwMTAtMDMtMjkgIEgu Si4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHVz ZV94bWwpOiBOZXcuCi0rCSh4ODZfbGludXhfdXBkYXRlX3htbHRhcmdldCk6IExpa2V3aXNlLgot KwkoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IFVzZSB4ODZfbGludXhfdXBkYXRlX3ht bHRhcmdldC4KLSsJKHg4Nl9hcmNoX3NldHVwKTogRG9uJ3QgY2FsbCBpbml0X3JlZ2lzdGVyc19h bWQ2NF9saW51eCwKLSsJaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eC4gIERvbid0IHNldCBnZGJz ZXJ2ZXJfeG1sdGFyZ2V0LiAgVXNlCi0rCXg4Nl9saW51eF91cGRhdGVfeG1sdGFyZ2V0LgotKwot KwkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBDYWxsIHRhcmdldF9wcm9jZXNzX3FzdXBwb3J0 ZWQgd2l0aAotKwlOVUxMIHF1ZXJ5IGZpcnN0LgotKwotKzIwMTAtMDMtMjkgIEguSi4gTHUgIDxo b25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9w cm9jZXNzX3FzdXBwb3J0ZWQpOiBSZXBsYWNlCi0rCXVpbnQ2NF90IHdpdGggdW5zaWduZWQgbG9u ZyBsb25nLgotKwotKzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBD aGVjawotKwkieG1sUmVnaXN0ZXJzPSIgaW5zdGVhZCBvZiAieG1sUmVnaXN0ZXJzKyIuCi0rCi0r MjAxMC0wMy0yOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGxpbnV4 LXg4Ni1sb3cuYyAodGFyZ2V0X3JlZ3NldHMpOiBBbHdheXMgdXNlIEVYVEVOREVEX1JFR1MKLSsJ d2l0aCBOVF9YODZfWFNUQVRFLgotKwotKzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHhtbHRhcmdldF9hbWQ2NF9saW51 eF9ub194bWwpOiBOZXcuCi0rCSh4bWx0YXJnZXRfaTM4Nl9saW51eF9ub194bWwpOiBMaWtld2lz ZS4KLSsJKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBSZW1vdmUgdXNlX3htbC4gIFVw ZGF0ZQotKwlnZGJzZXJ2ZXJfeG1sdGFyZ2V0LgotKwkoeDg2X2FyY2hfc2V0dXApOiBTZXQgZ2Ri c2VydmVyX3htbHRhcmdldCB0bwotKwl4bWx0YXJnZXRfYW1kNjRfbGludXhfbm9feG1sL3htbHRh cmdldF9pMzg2X2xpbnV4X25vX3htbC4KLSsKLSsJKiBzZXJ2ZXIuYyAodXNlX3htbCk6IFJlbW92 ZWQuCi0rCShnZXRfZmVhdHVyZXNfeG1sKTogVXBkYXRlZC4KLSsJKGhhbmRsZV9xdWVyeSk6IERv bid0IGNhbGwgdGFyZ2V0X3Byb2Nlc3NfcXN1cHBvcnRlZCB3aXRoIE5VTEwuCi0rCi0rCSogc2Vy dmVyLmggKHVzZV94bWwpOiBSZW1vdmVkLgotKwotKzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmM6IEluY2x1ZGUgPHVuaXN0 ZC5oPi4KLSsJKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBVc2UgZ2V0cGlkLgotKwot KzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51 eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBSZXBsYWNlCi0rCXVu c2lnbmVkIGxvbmcgbG9uZyB3aXRoIHVpbnQ2NF90LgotKwotKzIwMTAtMDMtMjggIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51 eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBTZXQgdXNlX3htbAotKwl0byAxIGlmIFhNTCBpcyBzdXBw b3J0ZWQuCi0rCi0rMjAxMC0wMy0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBEb24ndCBjaGVjayAieDg2OnhzdGF0ZT0i LgotKwotKzIwMTAtMDMtMjcgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJ KiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBDaGVjawot Kwl4bWxSZWdpc3RlcnMrIGluc3RlYWQgb2YgeDg2PXhtbC4KLSsKLSsJKiBzZXJ2ZXIuYyAoVVNF X1hNTCk6IERlZmF1bHQgdG8gMC4KLSsJKHVzZV94bWwpOiBJbml0aWFsaXplIHRvIFVTRV9YTUwu Ci0rCi0rMjAxMC0wMy0xMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGkzODctZnAuYyAoaTM4N19jYWNoZV90b194c2F2ZSk6IFJlcGxhY2UgYml0X0kzODZfWFNUQVRF X1hYWAotKwl3aXRoIEkzODZfWFNUQVRFX1hYWC4KLSsJKGkzODdfeHNhdmVfdG9fY2FjaGUpOiBM aWtld2lzZS4KLSsKLSsyMDEwLTAzLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+ Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZlKTogQ2hlY2sgYml0X0kzODZf WFNUQVRFX1g4Ny4KLSsJKGkzODdfeHNhdmVfdG9fY2FjaGUpOiBMaWtld2lzZS4KLSsKLSsyMDEw LTAzLTA1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5j IChpMzg3X2NhY2hlX3RvX3hzYXZlKTogT3B0aW1pemVkLgotKwotKzIwMTAtMDMtMDUgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfY2FjaGVf dG9feHNhdmUpOiBIYW5kbGUgdXBwZXIgWU1NIHJlZ2lzdGVycy4KLSsJKGkzODdfeHNhdmVfdG9f Y2FjaGUpOiBMaWtld2lzZS4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9j ZXNzX3FzdXBwb3J0ZWQpOiBDaGVjayB4ODY9eG1sLgotKwotKzIwMTAtMDItMTkgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfY2FjaGVfdG9f eHNhdmUpOiBBbHNvIGNoZWNrIHg4NyByZWdpc3RlcnMuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hl KTogTGlrZXdpc2UuCi0rCi0rCSogbGludXgteDg2LWxvdy5jOiBJbmNsdWRlIDxzeXMvdWlvLmg+ LgotKwkoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IFN1cHBvcnQgQVZYIG9ubHkgaWYK LSsJUFRSQUNFX0dFVFJFR1NFVCB3b3Jrcy4KLSsKLSsyMDEwLTAyLTEzICBILkouIEx1ICA8aG9u Z2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZl KTogQ2hlY2sgeDg2X3hjcjAgaW5zdGVhZCBvZgotKwl4ODZfdmVjdG9yX3VuaXQuCi0rCShpMzg3 X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCSh4ODZfdmVjdG9yX3VuaXQpOiBSZW1vdmVk LgotKwkoeDg2X3ZlY3Rvcl91bml0X2luaXQpOiBMaWtld2lzZS4KLSsJKHg4Nl94Y3IwKTogTmV3 LgotKwkoeDg2X3hjcjBfaW5pdCk6IExpa2V3aXNlLgotKwotKwkqIGkzODctZnAuaCAoeDg2X3Zl Y3Rvcl91bml0KTogUmVtb3ZlZC4KLSsJKHg4Nl92ZWN0b3JfdW5pdF9pbml0KTogTGlrZXdpc2Uu Ci0rCSh4ODZfeGNyMCk6IE5ldy4KLSsJKHg4Nl94Y3IwX2luaXQpOiBMaWtld2lzZS4KLSsKLSsJ KiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBDaGVjayB4 ODZfeGNyMAotKwlpbnN0ZWFkIG9mIHg4Nl92ZWN0b3JfdW5pdC4KLSsKLSsyMDEwLTAyLTExICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGludXgtYXJtLWxvdy5jICh0 YXJnZXRfcmVnc2V0cyk6IEluaXRpYWxpemUgbnRfdHlwZSB0byAwLgotKwkqIGxpbnV4LWNyaXN2 MzItbG93LmMgKHRhcmdldF9yZWdzZXRzKTogTGlrZXdpc2UuCi0rCSogbGludXgtbTY4ay1sb3cu YyAodGFyZ2V0X3JlZ3NldHMpOiBMaWtld2lzZS4KLSsJKiBsaW51eC1taXBzLWxvdy5jICh0YXJn ZXRfcmVnc2V0cyk6IExpa2V3aXNlLgotKwkqIGxpbnV4LXBwYy1sb3cuYyAodGFyZ2V0X3JlZ3Nl dHMpOiBMaWtld2lzZS4KLSsJKiBsaW51eC1zMzkwLWxvdy5jICh0YXJnZXRfcmVnc2V0cyk6IExp a2V3aXNlLgotKwkqIGxpbnV4LXNoLWxvdy5jICh0YXJnZXRfcmVnc2V0cyk6IExpa2V3aXNlLgot KwkqIGxpbnV4LXNwYXJjLWxvdy5jICh0YXJnZXRfcmVnc2V0cyk6IExpa2V3aXNlLgotKwkqIGxp bnV4LXh0ZW5zYS1sb3cuYyAodGFyZ2V0X3JlZ3NldHMpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAy LTExICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGludXgtbG93LmMg KHJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzKTogU2ltcGxpZnkKLSsJbnRfdHlwZS4K LSsJKHJlZ3NldHNfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzKTogTGlrZXdpc2UuCi0rCi0rMjAx MC0wMi0xMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGxpbnV4LWxv dy5jOiBJbmNsdWRlIDxzeXMvdWlvLmg+LgotKwkocmVnc2V0c19mZXRjaF9pbmZlcmlvcl9yZWdp c3RlcnMpOiBTdXBwb3J0IG50X3R5cGUuCi0rCShyZWdzZXRzX3N0b3JlX2luZmVyaW9yX3JlZ2lz dGVycyk6IExpa2V3aXNlLgotKwotKwkqIGxpbnV4LWxvdy5oIChyZWdzZXRfaW5mbyk6IEFkZCBu dF90eXBlLgotKwotKwkqIGxpbnV4LXg4Ni1sb3cuYzogSW5jbHVkZSAiZWxmL2NvbW1vbi5oIi4g IERvbid0IGluY2x1ZGUKLSsJIi4uL2NvbmZpZy9pMzg2L25tLWxpbnV4LXhzdGF0ZS5oIi4KLSsJ KFBUUkFDRV9HRVRSRUdTRVQpOiBOZXcuCi0rCShQVFJBQ0VfU0VUUkVHU0VUKTogTGlrZXdpc2Uu Ci0rCSh0YXJnZXRfcmVnc2V0cyk6IEluaXRpYWxpemUgbnRfdHlwZS4KLSsKLSsyMDEwLTAyLTA5 ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGludXgteDg2LWxvdy5j OiBSZXBsYWNlIFBUUkFDRV9HRVRYU1RBVEVSRUdTIHdpdGgKLSsJUFRSQUNFX0dFVFJFR1NFVCBp biBjb21tZW50cy4KLSsKLSsyMDEwLTAyLTA5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogbGludXgteDg2LWxvdy5jOiBJbmNsdWRlICIuLi9jb25maWcvaTM4Ni9ubS1s aW51eC14c3RhdGUuaCIuCi0rCShQVFJBQ0VfU0VUWFNUQVRFUkVHUyk6IFJlbW92ZWQuCi0rCShQ VFJBQ0VfU0VUWFNUQVRFUkVHUyk6IExpa2V3aXNlLgotKwkodGFyZ2V0X3JlZ3NldHMpOiBVc2Ug UFRSQUNFX0dFVFJFR1NFVC9QVFJBQ0VfU0VUUkVHU0VUIGluc3RlYWQKLSsJb2YgUFRSQUNFX0dF VFhTVEFURVJFR1MvUFRSQUNFX1NFVFhTVEFURVJFR1MuCi0rCSh4ODZfbGludXhfcHJvY2Vzc19x c3VwcG9ydGVkKTogQ2hlY2sgUFRSQUNFX0dFVFJFR1NFVCBpbnN0ZWFkCi0rCW9mIFBUUkFDRV9H RVRYU1RBVEVSRUdTLgotKwotKzIwMTAtMDItMDYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVs LmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKHg4Nl92ZWN0b3JfdW5pdF9pbml0KTogUHJvcGVybHkg Y2hlY2sgeGNyMC4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9jZXNzX3Fz dXBwb3J0ZWQpOiBTZXQgdXNlX3htbAotKwl0byAwIGFuZCByZXR1cm4gZm9yIE5VTEwgcXVlcnku ICBTZXQgdXNlX3htbCB0byAxIGlmIHRoZXJlIGlzCi0rCSJ4ODY6eHN0YXRlPSIgaW4gcVN1cHBv cnRlZCBwYWNrZXQuCi0rCi0rCSogc2VydmVyLmMgKGdldF9mZWF0dXJlc194bWwpOiBPcHRpbWl6 ZWQuCi0rCShoYW5kbGVfcXVlcnkpOiBDYWxsIHRhcmdldF9wcm9jZXNzX3FzdXBwb3J0ZWQgd2l0 aCBOVUxMCi0rCXF1ZXJ5IGZpcnN0LgotKwotKzIwMTAtMDItMDUgIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfY2FjaGVfdG9feHNhdmUpOiBS ZW1vdmUgdW5zaWduZWQgZnJvbSByYXcuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogUmVtb3Zl IHVuc2lnbmVkIGZyb20gcmF3IGFuZCB4bW0uICBGaXgKLSsJYSB0eXBvLgotKwotKzIwMTAtMDIt MDUgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93 LmMgKHg4Nl9saW51eF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBTZXQgdXNlX3htbAotKwl0byAwIGlm IHRoZXJlIGlzIG5vICJ4ODY6eHN0YXRlPSIgaW4gcVN1cHBvcnRlZCBwYWNrZXQuCi0rCi0rCSog c2VydmVyLmMgKHVzZV94bWwpOiBOZXcuCi0rCShnZXRfZmVhdHVyZXNfeG1sKTogRG9uJ3QgdXNl IFhNTCBmaWxlIGlmIHVzZV94bWwgaXMgMC4KLSsJKGhhbmRsZV9xdWVyeSk6IEFsd2F5cyBjYWxs IHRhcmdldF9wcm9jZXNzX3FzdXBwb3J0ZWQuCi0rCi0rCSogc2VydmVyLmggKHVzZV94bWwpOiBO ZXcuCi0rCi0rMjAxMC0wMi0wNSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwot KwkqIE1ha2VmaWxlLmluIChjbGVhbik6IFVwZGF0ZWQuCi0rCShpMzg2LWF2eC5vKTogTmV3Lgot KwkoaTM4Ni1hdnguYyk6IExpa2V3aXNlLgotKwkoaTM4Ni1hdngtbGludXgubyk6IExpa2V3aXNl LgotKwkoaTM4Ni1hdngtbGludXguYyk6IExpa2V3aXNlLgotKwkoeDg2LTY0LWF2eC5vKTogTGlr ZXdpc2UuCi0rCSh4ODYtNjQtYXZ4LmMpOiBMaWtld2lzZS4KLSsJKHg4Ni02NC1hdngtbGludXgu byk6IExpa2V3aXNlLgotKwkoeDg2LTY0LWF2eC1saW51eC5jKTogTGlrZXdpc2UuCi0rCi0rCSog Y29uZmlndXJlLnNydiAoc3J2X2kzODZfcmVnb2JqKTogQWRkIGkzODYtYXZ4Lm8uCi0rCShzcnZf aTM4Nl9saW51eF9yZWdvYmopOiBBZGQgaTM4Ni1hdngtbGludXguby4KLSsJKHNydl94ODZfNjRf cmVnb2JqKTogQWRkIHg4Ni02NC1hdnguby4KLSsJKHNydl94ODZfNjRfbGludXhfcmVnb2JqKTog QWRkIHg4Ni02NC1hdngtbGludXguby4KLSsKLSsyMDEwLTAyLTA1ICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29uZmlndXJlLnNydiAoc3J2X2kzODZfMzJiaXRfeG1s ZmlsZXMpOiBBZGQKLSsJaTM4Ni8zMmJpdC1hdngueG1sLgotKwkoc3J2X2kzODZfNjRiaXRfeG1s ZmlsZXMpOiBBZGQgaTM4Ni82NGJpdC1hdngueG1sLgotKwkoc3J2X2kzODZfeG1sZmlsZXMpOiBB ZGQgaTM4Ni9pMzg2LWF2eC54bWwuCi0rCShzcnZfeDg2XzY0X3htbGZpbGVzKTogQWRkIGkzODYv eDg2LTY0LWF2eC54bWwuCi0rCShzcnZfaTM4Nl9saW51eF94bWxmaWxlcyk6IEFkZCBpMzg2L2kz ODYtYXZ4LWxpbnV4LnhtbC4KLSsJKHNydl94ODZfNjRfbGludXhfeG1sZmlsZXMpOiBBZGQgaTM4 Ni94ODYtNjQtYXZ4LWxpbnV4LnhtbC4KLSsKLSsyMDEwLTAyLTA0ICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGludXgtbG93LmMgKGxpbnV4X3Byb2Nlc3NfcXN1cHBv cnRlZCk6IE1ha2UgaXQgdm9pZC4KLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9j ZXNzX3FzdXBwb3J0ZWQpOiBMaWtld2lzZS4KLSsKLSsJKiBsaW51eC1sb3cuaCAobGludXhfdGFy Z2V0X29wcyk6IE1ha2UgcHJvY2Vzc19xc3VwcG9ydGVkIHZvaWQuCi0rCi0rCSogc2VydmVyLmMg KGhhbmRsZV9xdWVyeSk6IE1ha2UgdGFyZ2V0X3Byb2Nlc3NfcXN1cHBvcnRlZCB2b2lkLgotKwot KwkqIHRhcmdldC5oICh0YXJnZXRfb3BzKTogTWFrZSBwcm9jZXNzX3FzdXBwb3J0ZWQgdm9pZC4K LSsJKHRhcmdldF9wcm9jZXNzX3FzdXBwb3J0ZWQpOiBNYWtlIGl0IHZvaWQuCi0rCi0rMjAxMC0w Mi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctZnAuYyAo aTM4N19jYWNoZV90b194c2F2ZSk6IFJlcGxhY2UgeG1tWzMyXSB3aXRoIHJhd1szMl0uCi0rCShp Mzg3X3hzYXZlX3RvX2NhY2hlKTogT3B0aW1pemUgeHN0YXRlX2J2ID09IDAuCi0rCi0rMjAxMC0w Mi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctZnAuYyAo aTM4N19jYWNoZV90b194c2F2ZSk6IFJlbW92ZSBjb2xsZWN0X3JlZ2lzdGVyX3BhcnQuCi0rCShp Mzg3X3hzYXZlX3RvX2NhY2hlKTogUmVtb3ZlIHN1cHBseV9yZWdpc3Rlcl9wYXJ0LgotKwotKwkq IHJlZ2NhY2hlLmMgKHN1cHBseV9yZWdpc3Rlcl9wYXJ0KTogUmVtb3ZlZC4KLSsJKGNvbGxlY3Rf cmVnaXN0ZXJfcGFydCk6IExpa2V3aXNlLgotKwkqIHJlZ2NhY2hlLmggKHN1cHBseV9yZWdpc3Rl cl9wYXJ0KTogTGlrZXdpc2UuCi0rCShjb2xsZWN0X3JlZ2lzdGVyX3BhcnQpOiBMaWtld2lzZS4K LSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSog TWFrZWZpbGUuaW4gKHhzdGF0ZS1uYXQubyk6IFJlbmFtZWQgdG8gLi4uCi0rCShpMzg2LXhzdGF0 ZS5vKTogVGhpcy4KLSsKLSsJKiBjb25maWd1cmUuc3J2IChzcnZfdGd0b2JqKTogQWRkIGkzODYt eHN0YXRlLm8gaW5zdGVhZCBvZgotKwl4c3RhdGUtbmF0Lm8gZm9yIGlbMzQ1NjddODYtKi1saW51 eCogYW5kIHg4Nl82NC0qLWxpbnV4Ki4KLSsKLSsJKiBpMzg3LWZwLmM6IEluY2x1ZGUgImkzODYt eHN0YXRlLmgiIGluc3RlYWQgb2YgInhzdGF0ZS1uYXQuaCIuCi0rCSogbGludXgteDg2LWxvdy5j OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZlKTogQWRkIGFub3RoZXIg bWlzc2luZyBicmVhay4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRl bC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZlKTogQWRkIHRoZSBt aXNzaW5nIGJyZWFrLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVs LmNvbT4KLSsKLSsJKiByZWdjYWNoZS5jIChzdXBwbHlfcmVnaXN0ZXJfcGFydCk6IENsZWFyIHJl Z2NhY2hlIGlmIGJ1ZiBpcwotKwlOVUxMLgotKwotKzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25n aml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93LmMgKHg4Nl9saW51eF9wcm9j ZXNzX3FzdXBwb3J0ZWQpOiBBbHdheXMKLSsJaW5pdGlhbGl6ZSBzaXplIGFuZCB4Y3IwLgotKwot KzIwMTAtMDItMDIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3 LWZwLmMgKHg4Nl92ZWN0b3JfdW5pdF9pbml0KTogU3VwcG9ydCBvbmx5IHdoYXQgYm90aCBnZGIK LSsJYW5kIGhvc3Qgc3VwcG9ydC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2ppdS5s dUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZlKTogQ2xl YXIgcGFydCBpbiB2ZWN0b3IgcmVnaXN0ZXJzCi0rCWlmIGl0cyBiaXQgaW4geHN0YXRfYnYgaXMg emVyby4gIFVwZGF0ZSB4c3RhdF9idiBpZiBuZWVkZWQuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hl KTogQ2xlYXIgcGFydCBpbiB2ZWN0b3IgcmVnaXN0ZXJzIGlmIGl0cyBiaXQKLSsJaW4geHN0YXRf YnYgaXMgemVyby4KLSsKLSsJKiByZWdjYWNoZS5jIChzdXBwbHlfcmVnaXN0ZXIpOiBDbGVhciBy ZWdjYWNoZSBpZiBidWYgaXMgTlVMTC4KLSsKLSsyMDEwLTAyLTAyICBILkouIEx1ICA8aG9uZ2pp dS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogaTM4Ny1mcC5jIChpMzg3X2NhY2hlX3RvX3hzYXZlKTog UmVtb3ZlIHhjcjAuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCi0rMjAx MC0wMi0wMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctZnAu YyAoeDg2X3ZlY3Rvcl91bml0X2luaXQpOiBVcGRhdGVkLgotKwkqIGkzODctZnAuaCAoeDg2X3Zl Y3Rvcl91bml0X2luaXQpOiBMaWtld2lzZS4KLSsKLSsJKiBsaW51eC1sb3cuYyAobGludXhfdXBk YXRlX3g4Nl94c3RhdGVfc2l6ZSk6IFJlbmFtZWQgdG8gLi4uCi0rCShsaW51eF9wcm9jZXNzX3Fz dXBwb3J0ZWQpOiBUaGlzLiAgVXBkYXRlZC4KLSsJKGxpbnV4X3RhcmdldF9vcHMpOiBVcGRhdGVk LgotKwotKwkqIGxpbnV4LWxvdy5oIChsaW51eF90YXJnZXRfb3BzKTogUmVwbGFjZSB1cGRhdGVf eDg2X3hzdGF0ZV9zaXplCi0rCXdpdGggcHJvY2Vzc19xc3VwcG9ydGVkLgotKwotKwkqIGxpbnV4 LXg4Ni1sb3cuYyAoeDg2X2xpbnV4X3VwZGF0ZV94ODZfeHN0YXRlX3NpemUpOiBSZW5hbWVkCi0r CXRvIC4uLgotKwkoeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCk6IFRoaXMuICBBc3NlbWJs ZSBxU3VwcG9ydGVkIEFDSy4KLSsKLSsJKiBzZXJ2ZXIuYyAoaGFuZGxlX3F1ZXJ5KTogQ2FsbCB0 YXJnZXRfcHJvY2Vzc19xc3VwcG9ydGVkCi0rCWZvciB1bmhhbmRsZWQgcXVlcnkuCi0rCi0rCSog dGFyZ2V0LmggKHRhcmdldF9vcHMpOiBSZXBsYWNlIHVwZGF0ZV94ODZfeHN0YXRlX3NpemUgd2l0 aAotKwlwcm9jZXNzX3FzdXBwb3J0ZWQuCi0rCSh0YXJnZXRfdXBkYXRlX3g4Nl94c3RhdGVfc2l6 ZSk6IFJlbW92ZWQuCi0rCSh0YXJnZXRfcHJvY2Vzc19xc3VwcG9ydGVkKTogTmV3LgotKwotKzIw MTAtMDItMDEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZw LmMgKGkzODdfY2FjaGVfdG9feHNhdmUpOiBSZW1vdmUgeHN0YXRlX2J2LgotKwkoaTM4N194c2F2 ZV90b19jYWNoZSk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDEgIEguSi4gTHUgIDxob25naml1 Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKHg4Nl92ZWN0b3JfdW5pdF9pbml0KTog QWRkIGFuZCBjaGVjayBzaXplIGFyZ3VtZW50LgotKwotKwkqIGkzODctZnAuaCAoeDg2X3ZlY3Rv cl91bml0KTogUmVtb3ZlIHVua25vd24uCi0rCSh4ODZfdmVjdG9yX3VuaXRfaW5pdCk6IEFkZCBz aXplIGFyZ3VtZW50LgotKwotKwkqIGxpbnV4LWxvdy5jIChsaW51eF91cGRhdGVfeDg2X3hzdGF0 ZV9zaXplKTogTmV3LgotKwkobGludXhfdGFyZ2V0X29wcyk6IEFkZCBsaW51eF91cGRhdGVfeDg2 X3hzdGF0ZV9zaXplLgotKwotKwkqIGxpbnV4LWxvdy5oIChsaW51eF90YXJnZXRfb3BzKTogQWRk IHVwZGF0ZV94ODZfeHN0YXRlX3NpemUuCi0rCi0rCSogbGludXgteDg2LWxvdy5jICh4ODZfdXBk YXRlX3hzdGF0ZXJlZ3NldF9zaXplKTogUmVuYW1lZCB0bwotKwkuLi4KLSsJKHg4Nl9saW51eF91 cGRhdGVfeDg2X3hzdGF0ZV9zaXplKTogVGhpcy4gIFVwZGF0ZWQuCi0rCSh4ODZfYXJjaF9zZXR1 cCk6IERvbid0IGNhbGwgeDg2X3VwZGF0ZV94c3RhdGVyZWdzZXRfc2l6ZS4KLSsJKHRoZV9sb3df dGFyZ2V0KTogQWRkIHg4Nl9saW51eF91cGRhdGVfeDg2X3hzdGF0ZV9zaXplLgotKwotKwkqIHNl cnZlci5jIChoYW5kbGVfcXVlcnkpOiBIYW5kbGUgIng4Njp4c3RhdGU6U0laRSIuCi0rCi0rCSog dGFyZ2V0LmggKHRhcmdldF9vcHMpOiBBZGQgdXBkYXRlX3g4Nl94c3RhdGVfc2l6ZS4KLSsJKHRh cmdldF91cGRhdGVfeDg2X3hzdGF0ZV9zaXplKTogTmV3LgotKwotKzIwMTAtMDEtMzEgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfY2FjaGVf dG9feHNhdmUpOiBIYW5kbGUgeGNyMCBhbmQgeHN0YXRlX2J2Ci0rCW9ubHkgZm9yIEFWWCBhbmQg YWJvdmUuCi0rCShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCi0rMjAxMC0wMS0z MSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGkzODctZnAuYyAoaTM4 N194c2F2ZSk6IEFkZCB4Y3IwIGFuZCB4c3RhdGVfYnYuCi0rCShpMzg3X2NhY2hlX3RvX3hzYXZl KTogSGFuZGxlIHhjcjAgYW5kIHhzdGF0ZV9idi4KLSsJKGkzODdfeHNhdmVfdG9fY2FjaGUpOiBM aWtld2lzZS4KLSsKLSsyMDEwLTAxLTI5ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+ Ci0rCi0rCSogaTM4Ny1mcC5jICh4ODZfdmVjdG9yX3VuaXRfaW5pdCk6IFVwZGF0ZWQuCi0rCSog bGludXgteDg2LWxvdy5jICh4ODZfdXBkYXRlX3hzdGF0ZXJlZ3NldF9zaXplKTogTGlrZXdpc2Uu Ci0tLS0gLi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZy54bWwJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nLnhtbAkyMDEwLTA0 LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw2OCBAQAotKzIwMTAtMDIt MDggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93 LmMgKGluaXRfcmVnaXN0ZXJzX2kzODZfbGludXgpOiBVcGRhdGUgY29tbWVudHMuCi0rCShpbml0 X3JlZ2lzdGVyc19hbWQ2NF9saW51eCk6IExpa2V3aXNlLgotKwotKzIwMTAtMDItMDcgIEguSi4g THUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbjogUmVwbGFjZSB4 ODYtNjQgd2l0aCBhbWQ2NC4KLSsKLSsJKiBjb25maWd1cmUuc3J2OiBSZXBsYWNlIHg4Ni02NC94 ODZfNjQgd2l0aCBhbWQ2NC4KLSsKLSsJKiBsaW51eC14ODYtbG93LmM6IFJlcGxhY2UgeDg2XzY0 IHdpdGggYW1kNjQuCi0rCi0rMjAxMC0wMi0wNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwu Y29tPgotKwotKwkqIGNvbmZpZ3VyZS5zcnYgKHNydl9pMzg2X3JlZ29iaik6IE5ldy4KLSsJKHNy dl9pMzg2X2xpbnV4X3JlZ29iaik6IExpa2V3aXNlLgotKwkoc3J2X3g4Nl82NF9yZWdvYmopOiBM aWtld2lzZS4KLSsJKHNydl94ODZfNjRfbGludXhfcmVnb2JqKTogTGlrZXdpc2UuCi0rCShpWzM0 NTY3XTg2LSotY3lnd2luKik6IFNldCBzcnZfcmVnb2JqIHRvICRzcnZfaTM4Nl9yZWdvYmouCi0r CShpWzM0NTY3XTg2LSotbWluZ3czMmNlKik6IExpa2V3aXNlLgotKwkoaVszNDU2N104Ni0qLW1p bmd3Kik6IExpa2V3aXNlLgotKwkoaVszNDU2N104Ni0qLW50byopOiBMaWtld2lzZS4KLSsJKGlb MzQ1NjddODYtKi1saW51eCopOiBTZXQgc3J2X3JlZ29iaiB0byAkc3J2X2kzODZfbGludXhfcmVn b2JqCi0rCWFuZCAkc3J2X3g4Nl82NF9saW51eF9yZWdvYmouCi0rCSh4ODZfNjQtKi1saW51eCop OiBMaWtld2lzZS4KLSsKLSsyMDEwLTAyLTA0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5j b20+Ci0rCi0rCSogY29uZmlndXJlLnNydiAoc3J2X2kzODZfMzJiaXRfeG1sZmlsZXMpOiBOZXcu Ci0rCShzcnZfaTM4Nl82NGJpdF94bWxmaWxlcyk6IExpa2V3aXNlLgotKwkoc3J2X2kzODZfeG1s ZmlsZXMpOiBMaWtld2lzZS4KLSsJKHNydl94ODZfNjRfeG1sZmlsZXMpOiBMaWtld2lzZS4KLSsJ KHNydl9pMzg2X2xpbnV4X3htbGZpbGVzKTogTGlrZXdpc2UuCi0rCShzcnZfeDg2XzY0X2xpbnV4 X3htbGZpbGVzKTogTGlrZXdpc2UuCi0rCShpWzM0NTY3XTg2LSotY3lnd2luKik6IFNldCBzcnZf eG1sZmlsZXMgdG8gJHNydl9pMzg2X3htbGZpbGVzLgotKwkoaVszNDU2N104Ni0qLW1pbmd3MzJj ZSopOiBMaWtld2lzZS4KLSsJKGlbMzQ1NjddODYtKi1taW5ndyopOiBMaWtld2lzZS4KLSsJKGlb MzQ1NjddODYtKi1udG8qKTogTGlrZXdpc2UuCi0rCShpWzM0NTY3XTg2LSotbGludXgqKTogU2V0 IHNydl94bWxmaWxlcyB0bwotKwkkc3J2X2kzODZfbGludXhfeG1sZmlsZXMgYW5kICRzcnZfeDg2 XzY0X2xpbnV4X3htbGZpbGVzLgotKwkoeDg2XzY0LSotbGludXgqKTogTGlrZXdpc2UuCi0rCi0r MjAxMC0wMi0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIE1ha2Vm aWxlLmluIChjbGVhbik6IFJlcGxhY2UgcmVnLWkzODYuYywgcmVnLXg4Ni02NC5jLAotKwlyZWct aTM4Ni1saW51eC5jIGFuZCByZWcteDg2LTY0LWxpbnV4LmMgd2l0aCBpMzg2LmMsIHg4Ni02NC5j LAotKwlpMzg2LWxpbnV4LmMgYW5kIHg4Ni02NC1saW51eC5jLgotKwkocmVnLWkzODYubyk6IFJl bW92ZWQuCi0rCShyZWctaTM4Ni5jKTogTGlrZXdpc2UuCi0rCShyZWctaTM4Ni1saW51eC5vKTog TGlrZXdpc2UuCi0rCShyZWctaTM4Ni1saW51eC5jKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0 Lm8pOiBMaWtld2lzZS4KLSsJKHJlZy14ODYtNjQuYyk6IExpa2V3aXNlLgotKwkocmVnLXg4Ni02 NC1saW51eC5vKTogTGlrZXdpc2UuCi0rCShyZWcteDg2LTY0LWxpbnV4LmMpOiBMaWtld2lzZS4K LSsJKGkzODYubyk6IE5ldy4KLSsJKGkzODYuYyk6IExpa2V3aXNlLgotKwkoaTM4Ni1saW51eC5v KTogTGlrZXdpc2UuCi0rCShpMzg2LWxpbnV4LmMpOiBMaWtld2lzZS4KLSsJKHg4Ni02NC5vKTog TGlrZXdpc2UuCi0rCSh4ODYtNjQuYyk6IExpa2V3aXNlLgotKwkoeDg2LTY0LWxpbnV4Lm8pOiBM aWtld2lzZS4KLSsJKHg4Ni02NC1saW51eC5jKTogTGlrZXdpc2UuCi0rCi0rCSogY29uZmlndXJl LnNydjogUmVwbGFjZSByZWctaTM4Ni5vLCByZWcteDg2LTY0Lm8sCi0rCXJlZy1pMzg2LWxpbnV4 Lm8gYW5kIHJlZy14ODYtNjQtbGludXgubyB3aXRoIGkzODYubywgeDg2LTY0Lm8sCi0rCWkzODYt bGludXgubyBhbmQgeDg2LTY0LWxpbnV4Lm8uCi0tLS0gLi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxv Zy54c3RhdGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9n ZGJzZXJ2ZXIvQ2hhbmdlTG9nLnhzdGF0ZQkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTAsMCArMSw4OSBAQAotKzIwMTAtMDEtMzEgIEguSi4gTHUgIDxob25naml1Lmx1 QGludGVsLmNvbT4KLSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfeHNhdmUpOiBDb3JyZWN0IGxheW91 dC4KLSsKLSsyMDEwLTAxLTI3ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0r CSogbGludXgteDg2LWxvdy5jICh4ODZfdXBkYXRlX3hzdGF0ZXJlZ3NldF9zaXplKTogVXNlCi0r CWkzODZfeHN0YXRlLnNpemUuCi0rCi0rMjAxMC0wMS0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVA aW50ZWwuY29tPgotKwotKwkqIGxpbnV4LXg4Ni1sb3cuYyAoeDg2X3VwZGF0ZV94c3RhdGVyZWdz ZXRfc2l6ZSk6IENhbGwKLSsJeDg2X3ZlY3Rvcl91bml0X2luaXQgaGVyZS4gVHVybiBvZmYgb3Ro ZXIgRlAgUFRSQUNFIHJlcXVlc3RzCi0rCW9ubHkgb24gQVZYIGhvc3QuCi0rCSh4ODZfYXJjaF9z ZXR1cCk6IERvbid0IGNhbGwgeDg2X3ZlY3Rvcl91bml0X2luaXQgaGVyZS4KLSsKLSsyMDEwLTAx LTI2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogbGludXgteDg2LWxv dy5jICh4ODZfdXBkYXRlX3hzdGF0ZXJlZ3NldF9zaXplKTogVXBkYXRlCi0rCXNpemUgZm9yIFBU UkFDRV9HRVRYU1RBVEVSRUdTIG9ubHkgaWYgaXQgaXMgc3VwcG9ydGVkLgotKwotKzIwMTAtMDEt MjYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBsaW51eC14ODYtbG93 LmMgKHg4Nl91cGRhdGVfeHN0YXRlcmVnc2V0X3NpemUpOiBVc2Ugb25seQotKwlQVFJBQ0VfR0VU WFNUQVRFUkVHUyBpZiBpdCBpcyBzdXBwb3J0ZWQuCi0rCi0rMjAxMC0wMS0yNiAgSC5KLiBMdSAg PGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkqIGxpbnV4LXg4Ni1sb3cuYyAoeDg2X3VwZGF0 ZV94c3RhdGVyZWdzZXRfc2l6ZSk6IEZvciBBVlgsCi0rCW9ubHkgdXNlIFBUUkFDRV9HRVRYU1RB VEVSRUdTLgotKwotKzIwMTAtMDEtMjYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4K LSsKLSsJKiBpMzg3LWZwLmMgKGkzODdfY2FjaGVfdG9feHNhdmUpOiBGaW5kIHltbTAgZm9yIEFW WC4KLSsJKGkzODdfeHNhdmVfdG9fY2FjaGUpOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAxLTI1ICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKHhzYXZl LW5hdC5vKTogUmVuYW1lZCB0byAuLi4KLSsJKHhzdGF0ZS1uYXQubyk6IFRoaXMuCi0rCi0rCSog Y29uZmlndXJlLnNydiAoc3J2X3RndG9iaik6IEFkZCB4c3RhdGUtbmF0Lm8gaW5zdGVhZCBvZgot Kwl4c2F2ZS1uYXQubyBmb3IgaVszNDU2N104Ni0qLWxpbnV4KiBhbmQgeDg2XzY0LSotbGludXgq LgotKwotKwkqIGkzODctZnAuYzogSW5jbHVkZSAieHN0YXRlLW5hdC5oIiBpbnN0ZWFkIG9mICJ4 c2F2ZS1uYXQuaCIuCi0rCSogbGludXgteDg2LWxvdy5jOiBMaWtld2lzZS4KLSsKLSsyMDEwLTAx LTIyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogcmVnY2FjaGUuYyAo c3VwcGx5X3JlZ2lzdGVyX3BhcnQpOiBDaGFuZ2Ugc2l6ZSB0byB1bnNpZ25lZCBpbnQuCi0rCShj b2xsZWN0X3JlZ2lzdGVyX3BhcnQpOiBMaWtld2lzZS4KLSsJKiByZWdjYWNoZS5oIChzdXBwbHlf cmVnaXN0ZXJfcGFydCk6IExpa2V3aXNlLgotKwkoY29sbGVjdF9yZWdpc3Rlcl9wYXJ0KTogTGlr ZXdpc2UuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGxpbnV4LXg4Ni1sb3cuYzogSW5jbHVkZSAieHNhdmUtbmF0LmgiCi0rCShQVFJBQ0Vf R0VUWFNUQVRFUkVHUyk6IE5ldy4KLSsJKFBUUkFDRV9TRVRYU1RBVEVSRUdTKTogTGlrZXdpc2Uu Ci0rCSh4ODZfZmlsbF94c3RhdGVyZWdzZXQpOiBMaWtld2lzZS4KLSsJKHg4Nl9zdG9yZV94c3Rh dGVyZWdzZXQpOiBMaWtld2lzZS4KLSsJKHg4Nl91cGRhdGVfeHN0YXRlcmVnc2V0X3NpemUpOiBM aWtld2lzZS4KLSsJKHRhcmdldF9yZWdzZXRzKTogQWRkIFBUUkFDRV9HRVRYU1RBVEVSRUdTIGVu dHJ5LgotKwkoeDg2X2FyY2hfc2V0dXApOiBDYWxsIHg4Nl91cGRhdGVfeHN0YXRlcmVnc2V0X3Np emUuCi0rCi0rMjAxMC0wMS0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwot KwkqIGNvbmZpZ3VyZS5zcnYgKHNydl90Z3RvYmopOiBBZGQgeHNhdmUtbmF0Lm8gZm9yCi0rCWlb MzQ1NjddODYtKi1saW51eCogYW5kIHg4Nl82NC0qLWxpbnV4Ki4KLSsKLSsJKiBpMzg3LWZwLmMg KGkzODdfeHNhdmUpOiBOZXcuCi0rCShpMzg3X2NhY2hlX3RvX3hzYXZlKTogTGlrZXdpc2UuCi0r CShpMzg3X3hzYXZlX3RvX2NhY2hlKTogTGlrZXdpc2UuCi0rCSh4ODZfdmVjdG9yX3VuaXQpOiBM aWtld2lzZS4KLSsJKHg4Nl92ZWN0b3JfdW5pdF9pbml0KTogTGlrZXdpc2UuCi0rCSogMzg3LWZw LmggKGkzODdfY2FjaGVfdG9feHNhdmUpOiBMaWtld2lzZS4KLSsJKGkzODdfeHNhdmVfdG9fY2Fj aGUpOiBMaWtld2lzZS4KLSsJKHg4Nl92ZWN0b3JfdW5pdCk6IExpa2V3aXNlLgotKwkoeDg2X3Zl Y3Rvcl91bml0X2luaXQpOiBMaWtld2lzZS4KLSsJKiByZWdjYWNoZS5jIChzdXBwbHlfcmVnaXN0 ZXJfcGFydCk6IExpa2V3aXNlLgotKwkoY29sbGVjdF9yZWdpc3Rlcl9wYXJ0KTogTGlrZXdpc2Uu Ci0rCSogcmVnY2FjaGUuaCAoc3VwcGx5X3JlZ2lzdGVyX3BhcnQpOiBMaWtld2lzZS4KLSsJKGNv bGxlY3RfcmVnaXN0ZXJfcGFydCk6IExpa2V3aXNlLgotKwotKwkqIGxpbnV4LXg4Ni1sb3cuYyAo eDg2X2FyY2hfc2V0dXApOiBDYWxsIHg4Nl92ZWN0b3JfdW5pdF9pbml0LgotKwotKzIwMTAtMDEt MjIgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBNYWtlZmlsZS5pbiAo eHNhdmUtbmF0Lm8pOiBOZXcuCi0tLS0gLi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCTIwMTAt MDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL01ha2Vm aWxlLmluCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjE3LDYgKzIx Nyw4IEBAIGNsZWFuOgotIAlybSAtZiBwb3dlcnBjLWlzYTIwNS12c3g2NGwuYwotIAlybSAtZiBz MzkwLWxpbnV4MzIuYyBzMzkwLWxpbnV4NjQuYyBzMzkweC1saW51eDY0LmMKLSAJcm0gLWYgeG1s LWJ1aWx0aW4uYyBzdGFtcC14bWwKLSsJcm0gLWYgaTM4Ni1hdnguYyBpMzg2LWF2eC1saW51eC5j Ci0rCXJtIC1mIGFtZDY0LWF2eC5jIGFtZDY0LWF2eC1saW51eC5jCi0gCi0gbWFpbnRhaW5lci1j bGVhbiByZWFsY2xlYW4gZGlzdGNsZWFuOiBjbGVhbgotIAlybSAtZiBubS5oIHRtLmggeG0uaCBj b25maWcuc3RhdHVzIGNvbmZpZy5oIHN0YW1wLWggY29uZmlnLmxvZwotQEAgLTM1MSw2ICszNTMs MTIgQEAgaTM4Ni5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMwotIGkzODYtbGlu dXgubyA6IGkzODYtbGludXguYyAkKHJlZ2RlZl9oKQotIGkzODYtbGludXguYyA6ICQoc3JjZGly KS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1saW51eC5kYXQgJChyZWdkYXRfc2gpCi0gCSQoU0hF TEwpICQocmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2kzODYtbGludXgu ZGF0IGkzODYtbGludXguYwotK2kzODYtYXZ4Lm8gOiBpMzg2LWF2eC5jICQocmVnZGVmX2gpCi0r aTM4Ni1hdnguYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdnguZGF0ICQo cmVnZGF0X3NoKQotKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1h dHMvaTM4Ni9pMzg2LWF2eC5kYXQgaTM4Ni1hdnguYwotK2kzODYtYXZ4LWxpbnV4Lm8gOiBpMzg2 LWF2eC1saW51eC5jICQocmVnZGVmX2gpCi0raTM4Ni1hdngtbGludXguYyA6ICQoc3JjZGlyKS8u Li9yZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbGludXguZGF0ICQocmVnZGF0X3NoKQotKwkkKFNI RUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWF2eC1s aW51eC5kYXQgaTM4Ni1hdngtbGludXguYwotIHJlZy1pYTY0Lm8gOiByZWctaWE2NC5jICQocmVn ZGVmX2gpCi0gcmVnLWlhNjQuYyA6ICQoc3JjZGlyKS8uLi9yZWdmb3JtYXRzL3JlZy1pYTY0LmRh dCAkKHJlZ2RhdF9zaCkKLSAJJChTSEVMTCkgJChyZWdkYXRfc2gpICQoc3JjZGlyKS8uLi9yZWdm b3JtYXRzL3JlZy1pYTY0LmRhdCByZWctaWE2NC5jCi1AQCAtNDM4LDYgKzQ0NiwxMiBAQCBhbWQ2 NC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hCi0gYW1kNjQtbGludXgubyA6IGFt ZDY0LWxpbnV4LmMgJChyZWdkZWZfaCkKLSBhbWQ2NC1saW51eC5jIDogJChzcmNkaXIpLy4uL3Jl Z2Zvcm1hdHMvaTM4Ni9hbWQ2NC1saW51eC5kYXQgJChyZWdkYXRfc2gpCi0gCSQoU0hFTEwpICQo cmVnZGF0X3NoKSAkKHNyY2RpcikvLi4vcmVnZm9ybWF0cy9pMzg2L2FtZDY0LWxpbnV4LmRhdCBh bWQ2NC1saW51eC5jCi0rYW1kNjQtYXZ4Lm8gOiBhbWQ2NC1hdnguYyAkKHJlZ2RlZl9oKQotK2Ft ZDY0LWF2eC5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdnguZGF0ICQo cmVnZGF0X3NoKQotKwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1h dHMvaTM4Ni9hbWQ2NC1hdnguZGF0IGFtZDY0LWF2eC5jCi0rYW1kNjQtYXZ4LWxpbnV4Lm8gOiBh bWQ2NC1hdngtbGludXguYyAkKHJlZ2RlZl9oKQotK2FtZDY0LWF2eC1saW51eC5jIDogJChzcmNk aXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbGludXguZGF0ICQocmVnZGF0X3NoKQot KwkkKFNIRUxMKSAkKHJlZ2RhdF9zaCkgJChzcmNkaXIpLy4uL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2 NC1hdngtbGludXguZGF0IGFtZDY0LWF2eC1saW51eC5jCi0gcmVnLXh0ZW5zYS5vIDogcmVnLXh0 ZW5zYS5jICQocmVnZGVmX2gpCi0gcmVnLXh0ZW5zYS5jIDogJChzcmNkaXIpLy4uL3JlZ2Zvcm1h dHMvcmVnLXh0ZW5zYS5kYXQgJChyZWdkYXRfc2gpCi0gCSQoU0hFTEwpICQocmVnZGF0X3NoKSAk KHNyY2RpcikvLi4vcmVnZm9ybWF0cy9yZWcteHRlbnNhLmRhdCByZWcteHRlbnNhLmMKLS0tLSAu L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAw MCArMDIwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2CTIwMTAtMDQtMDMgMjE6 MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjIsMTcgKzIyLDE3IEBACi0gIyBEZWZhdWx0IGhv c3Rpb19sYXN0X2Vycm9yIGltcGxlbWVudGF0aW9uCi0gc3J2X2hvc3Rpb19lcnJfb2Jqcz0iaG9z dGlvLWVycm5vLm8iCi0gCi0tc3J2X2kzODZfcmVnb2JqPWkzODYubwotLXNydl9pMzg2X2xpbnV4 X3JlZ29iaj1pMzg2LWxpbnV4Lm8KLS1zcnZfYW1kNjRfcmVnb2JqPWFtZDY0Lm8KLS1zcnZfYW1k NjRfbGludXhfcmVnb2JqPWFtZDY0LWxpbnV4Lm8KLStzcnZfaTM4Nl9yZWdvYmo9ImkzODYubyBp Mzg2LWF2eC5vIgotK3Nydl9pMzg2X2xpbnV4X3JlZ29iaj0iaTM4Ni1saW51eC5vIGkzODYtYXZ4 LWxpbnV4Lm8iCi0rc3J2X2FtZDY0X3JlZ29iaj0iYW1kNjQubyB4ODYtNjQtYXZ4Lm8iCi0rc3J2 X2FtZDY0X2xpbnV4X3JlZ29iaj0iYW1kNjQtbGludXgubyBhbWQ2NC1hdngtbGludXgubyIKLSAK LS1zcnZfaTM4Nl8zMmJpdF94bWxmaWxlcz0iaTM4Ni8zMmJpdC1jb3JlLnhtbCBpMzg2LzMyYml0 LXNzZS54bWwiCi0tc3J2X2kzODZfNjRiaXRfeG1sZmlsZXM9ImkzODYvNjRiaXQtY29yZS54bWwg aTM4Ni82NGJpdC1zc2UueG1sIgotLXNydl9pMzg2X3htbGZpbGVzPSJpMzg2L2kzODYueG1sICRz cnZfaTM4Nl8zMmJpdF94bWxmaWxlcyIKLS1zcnZfYW1kNjRfeG1sZmlsZXM9ImkzODYvYW1kNjQu eG1sICRzcnZfaTM4Nl82NGJpdF94bWxmaWxlcyIKLS1zcnZfaTM4Nl9saW51eF94bWxmaWxlcz0i aTM4Ni9pMzg2LWxpbnV4LnhtbCBpMzg2LzMyYml0LWxpbnV4LnhtbCAkc3J2X2kzODZfMzJiaXRf eG1sZmlsZXMiCi0tc3J2X2FtZDY0X2xpbnV4X3htbGZpbGVzPSJpMzg2L2FtZDY0LWxpbnV4Lnht bCBpMzg2LzY0Yml0LWxpbnV4LnhtbCAkc3J2X2kzODZfNjRiaXRfeG1sZmlsZXMiCi0rc3J2X2kz ODZfMzJiaXRfeG1sZmlsZXM9ImkzODYvMzJiaXQtY29yZS54bWwgaTM4Ni8zMmJpdC1zc2UueG1s IGkzODYvMzJiaXQtYXZ4LnhtbCIKLStzcnZfaTM4Nl82NGJpdF94bWxmaWxlcz0iaTM4Ni82NGJp dC1jb3JlLnhtbCBpMzg2LzY0Yml0LXNzZS54bWwgaTM4Ni82NGJpdC1hdngueG1sIgotK3Nydl9p Mzg2X3htbGZpbGVzPSJpMzg2L2kzODYueG1sIGkzODYvaTM4Ni1hdngueG1sICRzcnZfaTM4Nl8z MmJpdF94bWxmaWxlcyIKLStzcnZfYW1kNjRfeG1sZmlsZXM9ImkzODYvYW1kNjQueG1sIGkzODYv YW1kNjQtYXZ4LnhtbCAkc3J2X2kzODZfNjRiaXRfeG1sZmlsZXMiCi0rc3J2X2kzODZfbGludXhf eG1sZmlsZXM9ImkzODYvaTM4Ni1saW51eC54bWwgaTM4Ni9pMzg2LWF2eC1saW51eC54bWwgaTM4 Ni8zMmJpdC1saW51eC54bWwgJHNydl9pMzg2XzMyYml0X3htbGZpbGVzIgotK3Nydl9hbWQ2NF9s aW51eF94bWxmaWxlcz0iaTM4Ni9hbWQ2NC1saW51eC54bWwgaTM4Ni9hbWQ2NC1hdngtbGludXgu eG1sIGkzODYvNjRiaXQtbGludXgueG1sICRzcnZfaTM4Nl82NGJpdF94bWxmaWxlcyIKLSAKLSAj IElucHV0IGlzIHRha2VuIGZyb20gdGhlICIke3RhcmdldH0iIHZhcmlhYmxlLgotIAotLS0tIC4v Z2RiL2dkYnNlcnZlci9pMzg3LWZwLmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAx MDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvaTM4Ny1mcC5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAw MDAwMDAwICswMjAwCi1AQCAtMTksNiArMTksNyBAQAotIAotICNpbmNsdWRlICJzZXJ2ZXIuaCIK LSAjaW5jbHVkZSAiaTM4Ny1mcC5oIgotKyNpbmNsdWRlICJpMzg2LXhzdGF0ZS5oIgotIAotIGlu dCBudW1feG1tX3JlZ2lzdGVycyA9IDg7Ci0gCi1AQCAtNzIsNiArNzMsNDYgQEAgc3RydWN0IGkz ODdfZnhzYXZlIHsKLSAgIHVuc2lnbmVkIGNoYXIgeG1tX3NwYWNlWzI1Nl07Ci0gfTsKLSAKLStz dHJ1Y3QgaTM4N194c2F2ZSB7Ci0rICAvKiBBbGwgdGhlc2UgYXJlIG9ubHkgc2l4dGVlbiBiaXRz LCBwbHVzIHBhZGRpbmcsIGV4Y2VwdCBmb3IgZm9wICh3aGljaAotKyAgICAgaXMgb25seSBlbGV2 ZW4gYml0cyksIGFuZCBmb29mZiAvIGZpb2ZmICh3aGljaCBhcmUgMzIgYml0cyBlYWNoKS4gICov Ci0rICB1bnNpZ25lZCBzaG9ydCBmY3RybDsKLSsgIHVuc2lnbmVkIHNob3J0IGZzdGF0OwotKyAg dW5zaWduZWQgc2hvcnQgZnRhZzsKLSsgIHVuc2lnbmVkIHNob3J0IGZvcDsKLSsgIHVuc2lnbmVk IGludCBmaW9mZjsKLSsgIHVuc2lnbmVkIHNob3J0IGZpc2VnOwotKyAgdW5zaWduZWQgc2hvcnQg cGFkMTsKLSsgIHVuc2lnbmVkIGludCBmb29mZjsKLSsgIHVuc2lnbmVkIHNob3J0IGZvc2VnOwot KyAgdW5zaWduZWQgc2hvcnQgcGFkMTI7Ci0rCi0rICB1bnNpZ25lZCBpbnQgbXhjc3I7Ci0rICB1 bnNpZ25lZCBpbnQgbXhjc3JfbWFzazsKLSsKLSsgIC8qIFNwYWNlIGZvciBlaWdodCA4MC1iaXQg RlAgdmFsdWVzIGluIDEyOC1iaXQgc3BhY2VzLiAgKi8KLSsgIHVuc2lnbmVkIGNoYXIgc3Rfc3Bh Y2VbMTI4XTsKLSsKLSsgIC8qIFNwYWNlIGZvciBlaWdodCAxMjgtYml0IFhNTSB2YWx1ZXMsIG9y IDE2IG9uIHg4Ni02NC4gICovCi0rICB1bnNpZ25lZCBjaGFyIHhtbV9zcGFjZVsyNTZdOwotKwot KyAgdW5zaWduZWQgY2hhciByZXNlcnZlZDFbNDhdOwotKwotKyAgLyogVGhlIGV4dGVuZGVkIGNv bnRyb2wgcmVnaXN0ZXIgMCAodGhlIFhGRUFUVVJFX0VOQUJMRURfTUFTSwotKyAgICAgcmVnaXN0 ZXIpLiAgKi8KLSsgIHVuc2lnbmVkIGxvbmcgbG9uZyB4Y3IwOwotKwotKyAgdW5zaWduZWQgY2hh ciByZXNlcnZlZDJbNDBdOwotKwotKyAgLyogVGhlIFhTVEFURV9CViBiaXQgdmVjdG9yLiAgKi8K LSsgIHVuc2lnbmVkIGxvbmcgbG9uZyB4c3RhdGVfYnY7Ci0rCi0rICB1bnNpZ25lZCBjaGFyIHJl c2VydmVkM1s1Nl07Ci0rCi0rICAvKiBTcGFjZSBmb3IgZWlnaHQgdXBwZXIgMTI4LWJpdCBZTU0g dmFsdWVzLCBvciAxNiBvbiB4ODYtNjQuICAqLwotKyAgdW5zaWduZWQgY2hhciB5bW1oX3NwYWNl WzI1Nl07Ci0rfTsKLSsKLSB2b2lkCi0gaTM4N19jYWNoZV90b19mc2F2ZSAoc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQotIHsKLUBAIC0xOTksNiArMjQwLDEyOCBAQCBpMzg3 X2NhY2hlX3RvX2Z4c2F2ZSAoc3RydWN0IHJlZ2NhY2hlICpyCi0gICBmcC0+Zm9zZWcgPSB2YWw7 Ci0gfQotIAotK3ZvaWQKLStpMzg3X2NhY2hlX3RvX3hzYXZlIChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLCB2b2lkICpidWYpCi0rewotKyAgc3RydWN0IGkzODdfeHNhdmUgKmZwID0gKHN0cnVj dCBpMzg3X3hzYXZlICopIGJ1ZjsKLSsgIGludCBpOwotKyAgdW5zaWduZWQgbG9uZyB2YWwsIHZh bDI7Ci0rICB1bnNpZ25lZCBpbnQgY2xlYXJfYnY7Ci0rICB1bnNpZ25lZCBsb25nIGxvbmcgeHN0 YXRlX2J2ID0gMDsKLSsgIGNoYXIgcmF3WzE2XTsKLSsgIGNoYXIgKnA7Ci0rCi0rICAvKiBUaGUg c3VwcG9ydGVkIGJpdHMgaW4gYHhzdGF0X2J2JyBhcmUgMSBieXRlLiAgQ2xlYXIgcGFydCBpbgot KyAgICAgdmVjdG9yIHJlZ2lzdGVycyBpZiBpdHMgYml0IGluIHhzdGF0X2J2IGlzIHplcm8uICAq LwotKyAgY2xlYXJfYnYgPSAofmZwLT54c3RhdGVfYnYpICYgeDg2X3hjcjA7Ci0rCi0rICAvKiBD bGVhciBwYXJ0IGluIHg4NyBhbmQgdmVjdG9yIHJlZ2lzdGVycyBpZiBpdHMgYml0IGluIHhzdGF0 X2J2IGlzCi0rICAgICB6ZXJvLiAgKi8KLSsgIGlmIChjbGVhcl9idikKLSsgICAgewotKyAgICAg IGlmICgoY2xlYXJfYnYgJiBJMzg2X1hTVEFURV9YODcpKQotKwlmb3IgKGkgPSAwOyBpIDwgODsg aSsrKQotKwkgIG1lbXNldCAoKChjaGFyICopICZmcC0+c3Rfc3BhY2VbMF0pICsgaSAqIDE2LCAw LCAxMCk7Ci0rCi0rICAgICAgaWYgKChjbGVhcl9idiAmIEkzODZfWFNUQVRFX1NTRSkpCi0rCWZv ciAoaSA9IDA7IGkgPCBudW1feG1tX3JlZ2lzdGVyczsgaSsrKSAKLSsJICBtZW1zZXQgKCgoY2hh ciAqKSAmZnAtPnhtbV9zcGFjZVswXSkgKyBpICogMTYsIDAsIDE2KTsKLSsKLSsgICAgICBpZiAo KGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJZm9yIChpID0gMDsgaSA8IG51bV94bW1f cmVnaXN0ZXJzOyBpKyspIAotKwkgIG1lbXNldCAoKChjaGFyICopICZmcC0+eW1taF9zcGFjZVsw XSkgKyBpICogMTYsIDAsIDE2KTsKLSsgICAgfQotKwotKyAgLyogQ2hlY2sgaWYgYW55IHg4NyBy ZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwotKyAgaWYgKCh4ODZfeGNyMCAmIEkzODZfWFNUQVRF X1g4NykpCi0rICAgIHsKLSsgICAgICBpbnQgc3QwX3JlZ251bSA9IGZpbmRfcmVnbm8gKCJzdDAi KTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQotKwl7Ci0rCSAgY29sbGVjdF9y ZWdpc3RlciAocmVnY2FjaGUsIGkgKyBzdDBfcmVnbnVtLCByYXcpOwotKwkgIHAgPSAoKGNoYXIg KikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTY7Ci0rCSAgaWYgKG1lbWNtcCAocmF3LCBwLCAx MCkpCi0rCSAgICB7Ci0rCSAgICAgIHhzdGF0ZV9idiB8PSBJMzg2X1hTVEFURV9YODc7Ci0rCSAg ICAgIG1lbWNweSAocCwgcmF3LCAxMCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgLyog Q2hlY2sgaWYgYW55IFNTRSByZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwotKyAgaWYgKCh4ODZf eGNyMCAmIEkzODZfWFNUQVRFX1NTRSkpCi0rICAgIHsKLSsgICAgICBpbnQgeG1tMF9yZWdudW0g PSBmaW5kX3JlZ25vICgieG1tMCIpOwotKwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1feG1t X3JlZ2lzdGVyczsgaSsrKSAKLSsJewotKwkgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBp ICsgeG1tMF9yZWdudW0sIHJhdyk7Ci0rCSAgcCA9ICgoY2hhciAqKSAmZnAtPnhtbV9zcGFjZVsw XSkgKyBpICogMTY7Ci0rCSAgaWYgKG1lbWNtcCAocmF3LCBwLCAxNikpCi0rCSAgICB7Ci0rCSAg ICAgIHhzdGF0ZV9idiB8PSBJMzg2X1hTVEFURV9TU0U7Ci0rCSAgICAgIG1lbWNweSAocCwgcmF3 LCAxNik7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgLyogQ2hlY2sgaWYgYW55IEFWWCBy ZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwotKyAgaWYgKCh4ODZfeGNyMCAmIEkzODZfWFNUQVRF X0FWWCkpCi0rICAgIHsKLSsgICAgICBpbnQgeW1tMGhfcmVnbnVtID0gZmluZF9yZWdubyAoInlt bTBoIik7Ci0rCi0rICAgICAgZm9yIChpID0gMDsgaSA8IG51bV94bW1fcmVnaXN0ZXJzOyBpKysp IAotKwl7Ci0rCSAgY29sbGVjdF9yZWdpc3RlciAocmVnY2FjaGUsIGkgKyB5bW0waF9yZWdudW0s IHJhdyk7Ci0rCSAgcCA9ICgoY2hhciAqKSAmZnAtPnltbWhfc3BhY2VbMF0pICsgaSAqIDE2Owot KwkgIGlmIChtZW1jbXAgKHJhdywgcCwgMTYpKQotKwkgICAgewotKwkgICAgICB4c3RhdGVfYnYg fD0gSTM4Nl9YU1RBVEVfQVZYOwotKwkgICAgICBtZW1jcHkgKHAsIHJhdywgMTYpOwotKwkgICAg fQotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIFVwZGF0ZSB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGlu IHhzdGF0ZV9idiBpZiBhbnkgU1NFL0FWWAotKyAgICAgcmVnaXN0ZXJzIGFyZSBjaGFuZ2VkLiAg Ki8KLSsgIGZwLT54c3RhdGVfYnYgfD0geHN0YXRlX2J2OwotKwotKyAgY29sbGVjdF9yZWdpc3Rl cl9ieV9uYW1lIChyZWdjYWNoZSwgImZpb2ZmIiwgJmZwLT5maW9mZik7Ci0rICBjb2xsZWN0X3Jl Z2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9vZmYiLCAmZnAtPmZvb2ZmKTsKLSsgIGNvbGxl Y3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJteGNzciIsICZmcC0+bXhjc3IpOwotKwot KyAgLyogVGhpcyBvbmUncyAxMSBiaXRzLi4uICovCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25h bWUgKHJlZ2NhY2hlLCAiZm9wIiwgJnZhbDIpOwotKyAgZnAtPmZvcCA9ICh2YWwyICYgMHg3RkYp IHwgKGZwLT5mb3AgJiAweEY4MDApOwotKwotKyAgLyogU29tZSByZWdpc3RlcnMgYXJlIDE2LWJp dC4gICovCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZmN0cmwiLCAm dmFsKTsKLSsgIGZwLT5mY3RybCA9IHZhbDsKLSsKLSsgIGNvbGxlY3RfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJmc3RhdCIsICZ2YWwpOwotKyAgZnAtPmZzdGF0ID0gdmFsOwotKwotKyAg LyogQ29udmVydCB0byB0aGUgc2ltcGxpZmVkIHRhZyBmb3JtIHN0b3JlZCBpbiBmeHNhdmUgZGF0 YS4gICovCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZnRhZyIsICZ2 YWwpOwotKyAgdmFsICY9IDB4RkZGRjsKLSsgIHZhbDIgPSAwOwotKyAgZm9yIChpID0gNzsgaSA+ PSAwOyBpLS0pCi0rICAgIHsKLSsgICAgICBpbnQgdGFnID0gKHZhbCA+PiAoaSAqIDIpKSAmIDM7 Ci0rCi0rICAgICAgaWYgKHRhZyAhPSAzKQotKwl2YWwyIHw9ICgxIDw8IGkpOwotKyAgICB9Ci0r ICBmcC0+ZnRhZyA9IHZhbDI7Ci0rCi0rICBjb2xsZWN0X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2Nh Y2hlLCAiZmlzZWciLCAmdmFsKTsKLSsgIGZwLT5maXNlZyA9IHZhbDsKLSsKLSsgIGNvbGxlY3Rf cmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOwotKyAgZnAtPmZvc2Vn ID0gdmFsOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gaTM4N19mdGFnIChzdHJ1Y3QgaTM4N19meHNh dmUgKmZwLCBpbnQgcmVnbm8pCi0gewotQEAgLTI5NiwzICs0NTksMTA3IEBAIGkzODdfZnhzYXZl X3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnIKLSAgIHZhbCA9IChmcC0+Zm9wKSAmIDB4N0ZG OwotICAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9wIiwgJnZhbCk7Ci0g fQotKwotK3ZvaWQKLStpMzg3X3hzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBjb25zdCB2b2lkICpidWYpCi0rewotKyAgc3RydWN0IGkzODdfeHNhdmUgKmZwID0gKHN0 cnVjdCBpMzg3X3hzYXZlICopIGJ1ZjsKLSsgIHN0cnVjdCBpMzg3X2Z4c2F2ZSAqZnhwID0gKHN0 cnVjdCBpMzg3X2Z4c2F2ZSAqKSBidWY7Ci0rICBpbnQgaSwgdG9wOwotKyAgdW5zaWduZWQgbG9u ZyB2YWw7Ci0rICB1bnNpZ25lZCBpbnQgY2xlYXJfYnY7Ci0rICBjaGFyICpwOwotKwotKyAgLyog VGhlIHN1cHBvcnRlZCBiaXRzIGluIGB4c3RhdF9idicgYXJlIDEgYnl0ZS4gIENsZWFyIHBhcnQg aW4KLSsgICAgIHZlY3RvciByZWdpc3RlcnMgaWYgaXRzIGJpdCBpbiB4c3RhdF9idiBpcyB6ZXJv LiAgKi8KLSsgIGNsZWFyX2J2ID0gKH5mcC0+eHN0YXRlX2J2KSAmIHg4Nl94Y3IwOwotKwotKyAg LyogQ2hlY2sgaWYgYW55IHg4NyByZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwotKyAgaWYgKCh4 ODZfeGNyMCAmIEkzODZfWFNUQVRFX1g4NykpCi0rICAgIHsKLSsgICAgICBpbnQgc3QwX3JlZ251 bSA9IGZpbmRfcmVnbm8gKCJzdDAiKTsKLSsKLSsgICAgICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9Y U1RBVEVfWDg3KSkKLSsJcCA9IE5VTEw7Ci0rICAgICAgZWxzZQotKwlwID0gKGNoYXIgKikgYnVm OwotKwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCi0rCXsKLSsJICBpZiAocCkKLSsJ ICAgIHAgPSAoKGNoYXIgKikgJmZwLT5zdF9zcGFjZVswXSkgKyBpICogMTY7Ci0rCSAgc3VwcGx5 X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSArIHN0MF9yZWdudW0sIHApOwotKwl9Ci0rICAgIH0KLSsK LSsgIGlmICgoeDg2X3hjcjAgJiBJMzg2X1hTVEFURV9TU0UpKQotKyAgICB7Ci0rICAgICAgaW50 IHhtbTBfcmVnbnVtID0gZmluZF9yZWdubyAoInhtbTAiKTsKLSsKLSsgICAgICBpZiAoKGNsZWFy X2J2ICYgSTM4Nl9YU1RBVEVfU1NFKSkKLSsJcCA9IE5VTEw7Ci0rICAgICAgZWxzZQotKwlwID0g KGNoYXIgKikgYnVmOwotKwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1feG1tX3JlZ2lzdGVy czsgaSsrKQotKwl7Ci0rCSAgaWYgKHApCi0rCSAgICBwID0gKChjaGFyICopICZmcC0+eG1tX3Nw YWNlWzBdKSArIGkgKiAxNjsKLSsJICBzdXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpICsgeG1t MF9yZWdudW0sIHApOwotKwl9Ci0rICAgIH0KLSsKLSsgIGlmICgoeDg2X3hjcjAgJiBJMzg2X1hT VEFURV9BVlgpKQotKyAgICB7Ci0rICAgICAgaW50IHltbTBoX3JlZ251bSA9IGZpbmRfcmVnbm8g KCJ5bW0waCIpOwotKwotKyAgICAgIGlmICgoY2xlYXJfYnYgJiBJMzg2X1hTVEFURV9BVlgpKQot KwlwID0gTlVMTDsKLSsgICAgICBlbHNlCi0rCXAgPSAoY2hhciAqKSBidWY7Ci0rCi0rICAgICAg Zm9yIChpID0gMDsgaSA8IG51bV94bW1fcmVnaXN0ZXJzOyBpKyspCi0rCXsKLSsJICBpZiAocCkK LSsJICAgIHAgPSAoKGNoYXIgKikgJmZwLT55bW1oX3NwYWNlWzBdKSArIGkgKiAxNjsKLSsJICBz dXBwbHlfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBpICsgeW1tMGhfcmVnbnVtLCBwKTsKLSsJfQotKyAg ICB9Ci0rCi0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmaW9mZiIsICZm cC0+ZmlvZmYpOwotKyAgc3VwcGx5X3JlZ2lzdGVyX2J5X25hbWUgKHJlZ2NhY2hlLCAiZm9vZmYi LCAmZnAtPmZvb2ZmKTsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgIm14 Y3NyIiwgJmZwLT5teGNzcik7Ci0rCi0rICAvKiBTb21lIHJlZ2lzdGVycyBhcmUgMTYtYml0LiAg Ki8KLSsgIHZhbCA9IGZwLT5mY3RybCAmIDB4RkZGRjsKLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9u YW1lIChyZWdjYWNoZSwgImZjdHJsIiwgJnZhbCk7Ci0rCi0rICB2YWwgPSBmcC0+ZnN0YXQgJiAw eEZGRkY7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmc3RhdCIsICZ2 YWwpOwotKwotKyAgLyogR2VuZXJhdGUgdGhlIGZvcm0gb2YgZnRhZyBkYXRhIHRoYXQgR0RCIGV4 cGVjdHMuICAqLwotKyAgdG9wID0gKGZwLT5mc3RhdCA+PiAxMSkgJiAweDc7Ci0rICB2YWwgPSAw OwotKyAgZm9yIChpID0gNzsgaSA+PSAwOyBpLS0pCi0rICAgIHsKLSsgICAgICBpbnQgdGFnOwot KyAgICAgIGlmIChmcC0+ZnRhZyAmICgxIDw8IGkpKQotKwl0YWcgPSBpMzg3X2Z0YWcgKGZ4cCwg KGkgKyA4IC0gdG9wKSAlIDgpOwotKyAgICAgIGVsc2UKLSsJdGFnID0gMzsKLSsgICAgICB2YWwg fD0gdGFnIDw8ICgyICogaSk7Ci0rICAgIH0KLSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChy ZWdjYWNoZSwgImZ0YWciLCAmdmFsKTsKLSsKLSsgIHZhbCA9IGZwLT5maXNlZyAmIDB4RkZGRjsK LSsgIHN1cHBseV9yZWdpc3Rlcl9ieV9uYW1lIChyZWdjYWNoZSwgImZpc2VnIiwgJnZhbCk7Ci0r Ci0rICB2YWwgPSBmcC0+Zm9zZWcgJiAweEZGRkY7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFt ZSAocmVnY2FjaGUsICJmb3NlZyIsICZ2YWwpOwotKwotKyAgdmFsID0gKGZwLT5mb3ApICYgMHg3 RkY7Ci0rICBzdXBwbHlfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJmb3AiLCAmdmFsKTsK LSt9Ci0rCi0rLyogRGVmYXVsdCB0byBTU0UuICAqLwotK3Vuc2lnbmVkIGxvbmcgbG9uZyB4ODZf eGNyMCA9IEkzODZfWFNUQVRFX1NTRV9NQVNLOwotLS0tIC4vZ2RiL2dkYnNlcnZlci9pMzg3LWZw LmgJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2 ZXIvaTM4Ny1mcC5oCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjYs NiArMjYsMTEgQEAgdm9pZCBpMzg3X2ZzYXZlX3RvX2NhY2hlIChzdHJ1Y3QgcmVnY2FjaAotIHZv aWQgaTM4N19jYWNoZV90b19meHNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQg KmJ1Zik7Ci0gdm9pZCBpMzg3X2Z4c2F2ZV90b19jYWNoZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgY29uc3Qgdm9pZCAqYnVmKTsKLSAKLSt2b2lkIGkzODdfY2FjaGVfdG9feHNhdmUgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZvaWQgKmJ1Zik7Ci0rdm9pZCBpMzg3X3hzYXZlX3Rv X2NhY2hlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCB2b2lkICpidWYpOwotKwot K2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgeDg2X3hjcjA7Ci0rCi0gZXh0ZXJuIGludCBudW1f eG1tX3JlZ2lzdGVyczsKLSAKLSAjZW5kaWYgLyogSTM4N19GUF9IICovCi0tLS0gLi9nZGIvZ2Ri c2VydmVyL2xpbnV4LWFybS1sb3cuYwkyMDEwLTAyLTAxIDE3OjEzOjE2LjAwMDAwMDAwMCArMDEw MAotKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1hcm0tbG93LmMJMjAxMC0wNC0wMyAyMToxMjoz Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNTQsMTYgKzM1NCwxNiBAQCBhcm1fYXJjaF9zZXR1cCAo dm9pZCkKLSB9Ci0gCi0gc3RydWN0IHJlZ3NldF9pbmZvIHRhcmdldF9yZWdzZXRzW10gPSB7Ci0t ICB7IFBUUkFDRV9HRVRSRUdTLCBQVFJBQ0VfU0VUUkVHUywgMTggKiA0LAotKyAgeyBQVFJBQ0Vf R0VUUkVHUywgUFRSQUNFX1NFVFJFR1MsIDAsIDE4ICogNCwKLSAgICAgR0VORVJBTF9SRUdTLAot ICAgICBhcm1fZmlsbF9ncmVnc2V0LCBhcm1fc3RvcmVfZ3JlZ3NldCB9LAotLSAgeyBQVFJBQ0Vf R0VUV01NWFJFR1MsIFBUUkFDRV9TRVRXTU1YUkVHUywgMTYgKiA4ICsgNiAqIDQsCi0rICB7IFBU UkFDRV9HRVRXTU1YUkVHUywgUFRSQUNFX1NFVFdNTVhSRUdTLCAwLCAxNiAqIDggKyA2ICogNCwK LSAgICAgRVhURU5ERURfUkVHUywKLSAgICAgYXJtX2ZpbGxfd21teHJlZ3NldCwgYXJtX3N0b3Jl X3dtbXhyZWdzZXQgfSwKLS0gIHsgUFRSQUNFX0dFVFZGUFJFR1MsIFBUUkFDRV9TRVRWRlBSRUdT LCAzMiAqIDggKyA0LAotKyAgeyBQVFJBQ0VfR0VUVkZQUkVHUywgUFRSQUNFX1NFVFZGUFJFR1Ms IDAsIDMyICogOCArIDQsCi0gICAgIEVYVEVOREVEX1JFR1MsCi0gICAgIGFybV9maWxsX3ZmcHJl Z3NldCwgYXJtX3N0b3JlX3ZmcHJlZ3NldCB9LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5VTEwsIE5V TEwgfQotKyAgeyAwLCAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotIH07Ci0gCi0gc3RydWN0 IGxpbnV4X3RhcmdldF9vcHMgdGhlX2xvd190YXJnZXQgPSB7Ci0tLS0gLi9nZGIvZ2Ric2VydmVy L2xpbnV4LWNyaXN2MzItbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAK LSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpc3YzMi1sb3cuYwkyMDEwLTA0LTAzIDIxOjEy OjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM2NSw5ICszNjUsOSBAQCBjcmlzX3N0b3JlX2dyZWdz ZXQgKGNvbnN0IHZvaWQgKmJ1ZikKLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdzZXRf dFtjcmlzX251bV9yZWdzXTsKLSAKLSBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNb XSA9IHsKLS0gIHsgUFRSQUNFX0dFVFJFR1MsIFBUUkFDRV9TRVRSRUdTLCBzaXplb2YgKGVsZl9n cmVnc2V0X3QpLAotKyAgeyBQVFJBQ0VfR0VUUkVHUywgUFRSQUNFX1NFVFJFR1MsIDAsIHNpemVv ZiAoZWxmX2dyZWdzZXRfdCksCi0gICAgIEdFTkVSQUxfUkVHUywgY3Jpc19maWxsX2dyZWdzZXQs IGNyaXNfc3RvcmVfZ3JlZ3NldCB9LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQot KyAgeyAwLCAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotIH07Ci0gCi0gc3RydWN0IGxpbnV4 X3RhcmdldF9vcHMgdGhlX2xvd190YXJnZXQgPSB7Ci0tLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4 LWxvdy5jCTIwMTAtMDMtMDYgMDE6MTI6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ri c2VydmVyL2xpbnV4LWxvdy5jCTIwMTAtMDQtMDMgMjE6MTk6MTQuMDAwMDAwMDAwICswMjAwCi1A QCAtMzksNiArMzksNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3N0 YXQuaD4KLSAjaW5jbHVkZSA8c3lzL3Zmcy5oPgotKyNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0gI2lm bmRlZiBFTEZNQUcwCi0gLyogRG9uJ3QgaW5jbHVkZSA8bGludXgvZWxmLmg+IGhlcmUuICBJZiBp dCBnb3QgaW5jbHVkZWQgYnkgZ2RiX3Byb2Nfc2VydmljZS5oCi0gICAgdGhlbiBFTEZNQUcwIHdp bGwgaGF2ZSBiZWVuIGRlZmluZWQuICBJZiBpdCBkaWRuJ3QgZ2V0IGluY2x1ZGVkIGJ5Ci1AQCAt MjI4MSwxNCArMjI4MiwxNSBAQCByZWdzZXRzX2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVycyAoc3Ry dWN0Ci0gICBzdHJ1Y3QgcmVnc2V0X2luZm8gKnJlZ3NldDsKLSAgIGludCBzYXdfZ2VuZXJhbF9y ZWdzID0gMDsKLSAgIGludCBwaWQ7Ci0rICBzdHJ1Y3QgaW92ZWMgaW92OwotIAotICAgcmVnc2V0 ID0gdGFyZ2V0X3JlZ3NldHM7Ci0gCi0gICBwaWQgPSBsd3BpZF9vZiAoZ2V0X3RocmVhZF9sd3Ag KGN1cnJlbnRfaW5mZXJpb3IpKTsKLSAgIHdoaWxlIChyZWdzZXQtPnNpemUgPj0gMCkKLSAgICAg ewotLSAgICAgIHZvaWQgKmJ1ZjsKLS0gICAgICBpbnQgcmVzOwotKyAgICAgIHZvaWQgKmJ1Ziwg KmRhdGE7Ci0rICAgICAgaW50IG50X3R5cGUsIHJlczsKLSAKLSAgICAgICBpZiAocmVnc2V0LT5z aXplID09IDAgfHwgZGlzYWJsZWRfcmVnc2V0c1tyZWdzZXQgLSB0YXJnZXRfcmVnc2V0c10pCi0g CXsKLUBAIC0yMjk3LDEwICsyMjk5LDIxIEBAIHJlZ3NldHNfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0 ZXJzIChzdHJ1Y3QKLSAJfQotIAotICAgICAgIGJ1ZiA9IHhtYWxsb2MgKHJlZ3NldC0+c2l6ZSk7 Ci0rCi0rICAgICAgbnRfdHlwZSA9IHJlZ3NldC0+bnRfdHlwZTsKLSsgICAgICBpZiAobnRfdHlw ZSkKLSsJewotKwkgIGlvdi5pb3ZfYmFzZSA9IGJ1ZjsKLSsJICBpb3YuaW92X2xlbiA9IHJlZ3Nl dC0+c2l6ZTsKLSsJICBkYXRhID0gKHZvaWQgKikgJmlvdjsKLSsJfQotKyAgICAgIGVsc2UKLSsJ ZGF0YSA9IGJ1ZjsKLSsKLSAjaWZuZGVmIF9fc3BhcmNfXwotLSAgICAgIHJlcyA9IHB0cmFjZSAo cmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCAwLCBidWYpOwotKyAgICAgIHJlcyA9IHB0cmFjZSAo cmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBudF90eXBlLCBkYXRhKTsKLSAjZWxzZQotLSAgICAg IHJlcyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBidWYsIDApOwotKyAgICAg IHJlcyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBkYXRhLCBudF90eXBlKTsK LSAjZW5kaWYKLSAgICAgICBpZiAocmVzIDwgMCkKLSAJewotQEAgLTIzMzgsMTQgKzIzNTEsMTUg QEAgcmVnc2V0c19zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdAotICAgc3RydWN0IHJl Z3NldF9pbmZvICpyZWdzZXQ7Ci0gICBpbnQgc2F3X2dlbmVyYWxfcmVncyA9IDA7Ci0gICBpbnQg cGlkOwotKyAgc3RydWN0IGlvdmVjIGlvdjsKLSAKLSAgIHJlZ3NldCA9IHRhcmdldF9yZWdzZXRz OwotIAotICAgcGlkID0gbHdwaWRfb2YgKGdldF90aHJlYWRfbHdwIChjdXJyZW50X2luZmVyaW9y KSk7Ci0gICB3aGlsZSAocmVnc2V0LT5zaXplID49IDApCi0gICAgIHsKLS0gICAgICB2b2lkICpi dWY7Ci0tICAgICAgaW50IHJlczsKLSsgICAgICB2b2lkICpidWYsICpkYXRhOwotKyAgICAgIGlu dCBudF90eXBlLCByZXM7Ci0gCi0gICAgICAgaWYgKHJlZ3NldC0+c2l6ZSA9PSAwIHx8IGRpc2Fi bGVkX3JlZ3NldHNbcmVnc2V0IC0gdGFyZ2V0X3JlZ3NldHNdKQotIAl7Ci1AQCAtMjM1OCwxMCAr MjM3MiwyMSBAQCByZWdzZXRzX3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVycyAoc3RydWN0Ci0gICAg ICAgLyogRmlyc3QgZmlsbCB0aGUgYnVmZmVyIHdpdGggdGhlIGN1cnJlbnQgcmVnaXN0ZXIgc2V0 IGNvbnRlbnRzLAotIAkgaW4gY2FzZSB0aGVyZSBhcmUgYW55IGl0ZW1zIGluIHRoZSBrZXJuZWwn cyByZWdzZXQgdGhhdCBhcmUKLSAJIG5vdCBpbiBnZGJzZXJ2ZXIncyByZWdjYWNoZS4gICovCi0r Ci0rICAgICAgbnRfdHlwZSA9IHJlZ3NldC0+bnRfdHlwZTsKLSsgICAgICBpZiAobnRfdHlwZSkK LSsJewotKwkgIGlvdi5pb3ZfYmFzZSA9IGJ1ZjsKLSsJICBpb3YuaW92X2xlbiA9IHJlZ3NldC0+ c2l6ZTsKLSsJICBkYXRhID0gKHZvaWQgKikgJmlvdjsKLSsJfQotKyAgICAgIGVsc2UKLSsJZGF0 YSA9IGJ1ZjsKLSsKLSAjaWZuZGVmIF9fc3BhcmNfXwotLSAgICAgIHJlcyA9IHB0cmFjZSAocmVn c2V0LT5nZXRfcmVxdWVzdCwgcGlkLCAwLCBidWYpOwotKyAgICAgIHJlcyA9IHB0cmFjZSAocmVn c2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBudF90eXBlLCBkYXRhKTsKLSAjZWxzZQotLSAgICAgIHJl cyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCBidWYsIDApOwotKyAgICAgIHJl cyA9IHB0cmFjZSAocmVnc2V0LT5nZXRfcmVxdWVzdCwgcGlkLCAmaW92LCBkYXRhKTsKLSAjZW5k aWYKLSAKLSAgICAgICBpZiAocmVzID09IDApCi1AQCAtMjM3MSw5ICsyMzk2LDkgQEAgcmVnc2V0 c19zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cnVjdAotIAotIAkgIC8qIE9ubHkgbm93IGRv IHdlIHdyaXRlIHRoZSByZWdpc3RlciBzZXQuICAqLwotICNpZm5kZWYgX19zcGFyY19fCi0tCSAg cmVzID0gcHRyYWNlIChyZWdzZXQtPnNldF9yZXF1ZXN0LCBwaWQsIDAsIGJ1Zik7Ci0rCSAgcmVz ID0gcHRyYWNlIChyZWdzZXQtPnNldF9yZXF1ZXN0LCBwaWQsIG50X3R5cGUsIGRhdGEpOwotICNl bHNlCi0tCSAgcmVzID0gcHRyYWNlIChyZWdzZXQtPnNldF9yZXF1ZXN0LCBwaWQsIGJ1ZiwgMCk7 Ci0rCSAgcmVzID0gcHRyYWNlIChyZWdzZXQtPnNldF9yZXF1ZXN0LCBwaWQsIGRhdGEsIG50X3R5 cGUpOwotICNlbmRpZgotIAl9Ci0gCi1AQCAtMzQzNCw2ICszNDU5LDEzIEBAIGxpbnV4X2NvcmVf b2ZfdGhyZWFkIChwdGlkX3QgcHRpZCkKLSAgIHJldHVybiBjb3JlOwotIH0KLSAKLStzdGF0aWMg dm9pZAotK2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCAoY29uc3QgY2hhciAqcXVlcnkpCi0rewot KyAgaWYgKHRoZV9sb3dfdGFyZ2V0LnByb2Nlc3NfcXN1cHBvcnRlZCAhPSBOVUxMKQotKyAgICB0 aGVfbG93X3RhcmdldC5wcm9jZXNzX3FzdXBwb3J0ZWQgKHF1ZXJ5KTsKLSt9Ci0rCi0gc3RhdGlj IHN0cnVjdCB0YXJnZXRfb3BzIGxpbnV4X3RhcmdldF9vcHMgPSB7Ci0gICBsaW51eF9jcmVhdGVf aW5mZXJpb3IsCi0gICBsaW51eF9hdHRhY2gsCi1AQCAtMzQ3Nyw3ICszNTA5LDggQEAgc3RhdGlj IHN0cnVjdCB0YXJnZXRfb3BzIGxpbnV4X3RhcmdldF9vcAotICNlbHNlCi0gICBOVUxMLAotICNl bmRpZgotLSAgbGludXhfY29yZV9vZl90aHJlYWQKLSsgIGxpbnV4X2NvcmVfb2ZfdGhyZWFkLAot KyAgbGludXhfcHJvY2Vzc19xc3VwcG9ydGVkCi0gfTsKLSAKLSBzdGF0aWMgdm9pZAotLS0tIC4v Z2RiL2dkYnNlcnZlci9saW51eC1sb3cuaAkyMDEwLTAxLTIwIDIzOjU1OjM4LjAwMDAwMDAwMCAr MDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuaAkyMDEwLTA0LTAzIDIxOjEyOjMy LjAwMDAwMDAwMCArMDIwMAotQEAgLTM1LDYgKzM1LDkgQEAgZW51bSByZWdzZXRfdHlwZSB7Ci0g c3RydWN0IHJlZ3NldF9pbmZvCi0gewotICAgaW50IGdldF9yZXF1ZXN0LCBzZXRfcmVxdWVzdDsK LSsgIC8qIElmIE5UX1RZUEUgaXNuJ3QgMCwgaXQgd2lsbCBiZSBwYXNzZWQgdG8gcHRyYWNlIGFz IHRoZSAzcmQKLSsgICAgIGFyZ3VtZW50IGFuZCB0aGUgNHRoIGFyZ3VtZW50IHNob3VsZCBiZSAi Y29uc3Qgc3RydWN0IGlvdmVjICoiLiAgKi8KLSsgIGludCBudF90eXBlOwotICAgaW50IHNpemU7 Ci0gICBlbnVtIHJlZ3NldF90eXBlIHR5cGU7Ci0gICByZWdzZXRfZmlsbF9mdW5jIGZpbGxfZnVu Y3Rpb247Ci1AQCAtMTExLDYgKzExNCw5IEBAIHN0cnVjdCBsaW51eF90YXJnZXRfb3BzCi0gCi0g ICAvKiBIb29rIHRvIGNhbGwgcHJpb3IgdG8gcmVzdW1pbmcgYSB0aHJlYWQuICAqLwotICAgdm9p ZCAoKnByZXBhcmVfdG9fcmVzdW1lKSAoc3RydWN0IGx3cF9pbmZvICopOwotKwotKyAgLyogSG9v ayB0byBzdXBwb3J0IHRhcmdldCBzcGVjaWZpYyBxU3VwcG9ydGVkLiAgKi8KLSsgIHZvaWQgKCpw cm9jZXNzX3FzdXBwb3J0ZWQpIChjb25zdCBjaGFyICopOwotIH07Ci0gCi0gZXh0ZXJuIHN0cnVj dCBsaW51eF90YXJnZXRfb3BzIHRoZV9sb3dfdGFyZ2V0OwotLS0tIC4vZ2RiL2dkYnNlcnZlci9s aW51eC1tNjhrLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysg Li9nZGIvZ2Ric2VydmVyL2xpbnV4LW02OGstbG93LmMJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xMTIsMTQgKzExMiwxNCBAQCBtNjhrX3N0b3JlX2ZwcmVnc2V0IChz dHJ1Y3QgcmVnY2FjaGUgKnJlCi0gCi0gc3RydWN0IHJlZ3NldF9pbmZvIHRhcmdldF9yZWdzZXRz W10gPSB7Ci0gI2lmZGVmIEhBVkVfUFRSQUNFX0dFVFJFR1MKLS0gIHsgUFRSQUNFX0dFVFJFR1Ms IFBUUkFDRV9TRVRSRUdTLCBzaXplb2YgKGVsZl9ncmVnc2V0X3QpLAotKyAgeyBQVFJBQ0VfR0VU UkVHUywgUFRSQUNFX1NFVFJFR1MsIDAsIHNpemVvZiAoZWxmX2dyZWdzZXRfdCksCi0gICAgIEdF TkVSQUxfUkVHUywKLSAgICAgbTY4a19maWxsX2dyZWdzZXQsIG02OGtfc3RvcmVfZ3JlZ3NldCB9 LAotLSAgeyBQVFJBQ0VfR0VURlBSRUdTLCBQVFJBQ0VfU0VURlBSRUdTLCBzaXplb2YgKGVsZl9m cHJlZ3NldF90KSwKLSsgIHsgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNFX1NFVEZQUkVHUywgMCwg c2l6ZW9mIChlbGZfZnByZWdzZXRfdCksCi0gICAgIEZQX1JFR1MsCi0gICAgIG02OGtfZmlsbF9m cHJlZ3NldCwgbTY4a19zdG9yZV9mcHJlZ3NldCB9LAotICNlbmRpZiAvKiBIQVZFX1BUUkFDRV9H RVRSRUdTICovCi0tICB7IDAsIDAsIC0xLCAtMSwgTlVMTCwgTlVMTCB9Ci0rICB7IDAsIDAsIDAs IC0xLCAtMSwgTlVMTCwgTlVMTCB9Ci0gfTsKLSAKLSBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh ciBtNjhrX2JyZWFrcG9pbnRbXSA9IHsgMHg0RSwgMHg0RiB9OwotLS0tIC4vZ2RiL2dkYnNlcnZl ci9saW51eC1taXBzLWxvdy5jCTIwMTAtMDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0r KysgLi9nZGIvZ2Ric2VydmVyL2xpbnV4LW1pcHMtbG93LmMJMjAxMC0wNC0wMyAyMToxMjozMi4w MDAwMDAwMDAgKzAyMDAKLUBAIC0zNDMsMTIgKzM0MywxMiBAQCBtaXBzX3N0b3JlX2ZwcmVnc2V0 IChzdHJ1Y3QgcmVnY2FjaGUgKnJlCi0gCi0gc3RydWN0IHJlZ3NldF9pbmZvIHRhcmdldF9yZWdz ZXRzW10gPSB7Ci0gI2lmZGVmIEhBVkVfUFRSQUNFX0dFVFJFR1MKLS0gIHsgUFRSQUNFX0dFVFJF R1MsIFBUUkFDRV9TRVRSRUdTLCAzOCAqIDgsIEdFTkVSQUxfUkVHUywKLSsgIHsgUFRSQUNFX0dF VFJFR1MsIFBUUkFDRV9TRVRSRUdTLCAwLCAzOCAqIDgsIEdFTkVSQUxfUkVHUywKLSAgICAgbWlw c19maWxsX2dyZWdzZXQsIG1pcHNfc3RvcmVfZ3JlZ3NldCB9LAotLSAgeyBQVFJBQ0VfR0VURlBS RUdTLCBQVFJBQ0VfU0VURlBSRUdTLCAzMyAqIDgsIEZQX1JFR1MsCi0rICB7IFBUUkFDRV9HRVRG UFJFR1MsIFBUUkFDRV9TRVRGUFJFR1MsIDAsIDMzICogOCwgRlBfUkVHUywKLSAgICAgbWlwc19m aWxsX2ZwcmVnc2V0LCBtaXBzX3N0b3JlX2ZwcmVnc2V0IH0sCi0gI2VuZGlmIC8qIEhBVkVfUFRS QUNFX0dFVFJFR1MgKi8KLS0gIHsgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSsgIHsgMCwg MCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotIHN0cnVjdCBsaW51eF90YXJnZXRf b3BzIHRoZV9sb3dfdGFyZ2V0ID0gewotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93 LmMJMjAxMC0wMS0yMSAyMzoxMDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2 ZXIvbGludXgtcHBjLWxvdy5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1A QCAtNTkzLDE0ICs1OTMsMTQgQEAgc3RydWN0IHJlZ3NldF9pbmZvIHRhcmdldF9yZWdzZXRzW10g PSB7Ci0gICAgICBmZXRjaCB0aGVtIGV2ZXJ5IHRpbWUsIGJ1dCBzdGlsbCBmYWxsIGJhY2sgdG8g UFRSQUNFX1BFRUtVU0VSIGZvciB0aGUKLSAgICAgIGdlbmVyYWwgcmVnaXN0ZXJzLiAgU29tZSBr ZXJuZWxzIHN1cHBvcnQgdGhlc2UsIGJ1dCBub3QgdGhlIG5ld2VyCi0gICAgICBQUENfUFRSQUNF X0dFVFJFR1MuICAqLwotLSAgeyBQVFJBQ0VfR0VUVlNYUkVHUywgUFRSQUNFX1NFVFZTWFJFR1Ms IFNJWkVPRl9WU1hSRUdTLCBFWFRFTkRFRF9SRUdTLAotKyAgeyBQVFJBQ0VfR0VUVlNYUkVHUywg UFRSQUNFX1NFVFZTWFJFR1MsIDAsIFNJWkVPRl9WU1hSRUdTLCBFWFRFTkRFRF9SRUdTLAotICAg cHBjX2ZpbGxfdnN4cmVnc2V0LCBwcGNfc3RvcmVfdnN4cmVnc2V0IH0sCi0gICB7IFBUUkFDRV9H RVRWUlJFR1MsIFBUUkFDRV9TRVRWUlJFR1MsIFNJWkVPRl9WUlJFR1MsIEVYVEVOREVEX1JFR1Ms Ci0gICAgIHBwY19maWxsX3ZycmVnc2V0LCBwcGNfc3RvcmVfdnJyZWdzZXQgfSwKLS0gIHsgUFRS QUNFX0dFVEVWUlJFR1MsIFBUUkFDRV9TRVRFVlJSRUdTLCAzMiAqIDQgKyA4ICsgNCwgRVhURU5E RURfUkVHUywKLSsgIHsgUFRSQUNFX0dFVEVWUlJFR1MsIFBUUkFDRV9TRVRFVlJSRUdTLCAwLCAz MiAqIDQgKyA4ICsgNCwgRVhURU5ERURfUkVHUywKLSAgICAgcHBjX2ZpbGxfZXZycmVnc2V0LCBw cGNfc3RvcmVfZXZycmVnc2V0IH0sCi0tICB7IDAsIDAsIDAsIEdFTkVSQUxfUkVHUywgcHBjX2Zp bGxfZ3JlZ3NldCwgTlVMTCB9LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotKyAg eyAwLCAwLCAwLCAwLCBHRU5FUkFMX1JFR1MsIHBwY19maWxsX2dyZWdzZXQsIE5VTEwgfSwKLSsg IHsgMCwgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotIHN0cnVjdCBsaW51eF90 YXJnZXRfb3BzIHRoZV9sb3dfdGFyZ2V0ID0gewotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1z MzkwLWxvdy5jCTIwMTAtMDEtMjEgMjA6MjY6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIv Z2Ric2VydmVyL2xpbnV4LXMzOTAtbG93LmMJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xODEsOCArMTgxLDggQEAgc3RhdGljIHZvaWQgczM5MF9maWxsX2dyZWdzZXQg KHN0cnVjdCByZQotIH0KLSAKLSBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9 IHsKLS0gIHsgMCwgMCwgMCwgR0VORVJBTF9SRUdTLCBzMzkwX2ZpbGxfZ3JlZ3NldCwgTlVMTCB9 LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotKyAgeyAwLCAwLCAwLCAwLCBHRU5F UkFMX1JFR1MsIHMzOTBfZmlsbF9ncmVnc2V0LCBOVUxMIH0sCi0rICB7IDAsIDAsIDAsIC0xLCAt MSwgTlVMTCwgTlVMTCB9Ci0gfTsKLSAKLSAKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvbGludXgtc2gt bG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJz ZXJ2ZXIvbGludXgtc2gtbG93LmMJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAK LUBAIC0xMDQsOCArMTA0LDggQEAgc3RhdGljIHZvaWQgc2hfZmlsbF9ncmVnc2V0IChzdHJ1Y3Qg cmVnYwotIH0KLSAKLSBzdHJ1Y3QgcmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9IHsKLS0g IHsgMCwgMCwgMCwgR0VORVJBTF9SRUdTLCBzaF9maWxsX2dyZWdzZXQsIE5VTEwgfSwKLS0gIHsg MCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSsgIHsgMCwgMCwgMCwgMCwgR0VORVJBTF9SRUdT LCBzaF9maWxsX2dyZWdzZXQsIE5VTEwgfSwKLSsgIHsgMCwgMCwgMCwgLTEsIC0xLCBOVUxMLCBO VUxMIH0KLSB9OwotIAotIHN0cnVjdCBsaW51eF90YXJnZXRfb3BzIHRoZV9sb3dfdGFyZ2V0ID0g ewotLS0tIC4vZ2RiL2dkYnNlcnZlci9saW51eC1zcGFyYy1sb3cuYwkyMDEwLTAxLTIwIDIzOjU1 OjM4LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL2dkYnNlcnZlci9saW51eC1zcGFyYy1sb3cu YwkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTI2MCwxMyArMjYwLDEz IEBAIHNwYXJjX3JlaW5zZXJ0X2FkZHIgKHZvaWQpCi0gCi0gCi0gc3RydWN0IHJlZ3NldF9pbmZv IHRhcmdldF9yZWdzZXRzW10gPSB7Ci0tICB7IFBUUkFDRV9HRVRSRUdTLCBQVFJBQ0VfU0VUUkVH Uywgc2l6ZW9mIChlbGZfZ3JlZ3NldF90KSwKLSsgIHsgUFRSQUNFX0dFVFJFR1MsIFBUUkFDRV9T RVRSRUdTLCAwLCBzaXplb2YgKGVsZl9ncmVnc2V0X3QpLAotICAgICBHRU5FUkFMX1JFR1MsCi0g ICAgIHNwYXJjX2ZpbGxfZ3JlZ3NldCwgc3BhcmNfc3RvcmVfZ3JlZ3NldCB9LAotLSAgeyBQVFJB Q0VfR0VURlBSRUdTLCBQVFJBQ0VfU0VURlBSRUdTLCBzaXplb2YgKGZwcmVnc2V0X3QpLAotKyAg eyBQVFJBQ0VfR0VURlBSRUdTLCBQVFJBQ0VfU0VURlBSRUdTLCAwLCBzaXplb2YgKGZwcmVnc2V0 X3QpLAotICAgICBGUF9SRUdTLAotICAgICBzcGFyY19maWxsX2ZwcmVnc2V0LCBzcGFyY19zdG9y ZV9mcHJlZ3NldCB9LAotLSAgeyAwLCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotKyAgeyAwLCAw LCAwLCAtMSwgLTEsIE5VTEwsIE5VTEwgfQotIH07Ci0gCi0gc3RydWN0IGxpbnV4X3RhcmdldF9v cHMgdGhlX2xvd190YXJnZXQgPSB7Ci0tLS0gLi9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cu YwkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2dkYnNlcnZl ci9saW51eC14ODYtbG93LmMJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBA IC0yNCw2ICsyNCw4IEBACi0gI2luY2x1ZGUgImxpbnV4LWxvdy5oIgotICNpbmNsdWRlICJpMzg3 LWZwLmgiCi0gI2luY2x1ZGUgImkzODYtbG93LmgiCi0rI2luY2x1ZGUgImkzODYteHN0YXRlLmgi Ci0rI2luY2x1ZGUgImVsZi9jb21tb24uaCIKLSAKLSAjaW5jbHVkZSAiZ2RiX3Byb2Nfc2Vydmlj ZS5oIgotIAotQEAgLTMxLDEwICszMywzNSBAQAotIHZvaWQgaW5pdF9yZWdpc3RlcnNfaTM4Nl9s aW51eCAodm9pZCk7Ci0gLyogRGVmaW5lZCBpbiBhdXRvLWdlbmVyYXRlZCBmaWxlIGFtZDY0LWxp bnV4LmMuICAqLwotIHZvaWQgaW5pdF9yZWdpc3RlcnNfYW1kNjRfbGludXggKHZvaWQpOwotKy8q IERlZmluZWQgaW4gYXV0by1nZW5lcmF0ZWQgZmlsZSBpMzg2LWF2eC1saW51eC5jLiAgKi8KLSt2 b2lkIGluaXRfcmVnaXN0ZXJzX2kzODZfYXZ4X2xpbnV4ICh2b2lkKTsKLSsvKiBEZWZpbmVkIGlu IGF1dG8tZ2VuZXJhdGVkIGZpbGUgYW1kNjQtYXZ4LWxpbnV4LmMuICAqLwotK3ZvaWQgaW5pdF9y ZWdpc3RlcnNfYW1kNjRfYXZ4X2xpbnV4ICh2b2lkKTsKLSsKLSsvKiBCYWNrd2FyZCBjb21wYXRp YmlsaXR5IGZvciBnZGIgd2l0aG91dCBYTUwgc3VwcG9ydC4gICovCi0rCi0rc3RhdGljIGNvbnN0 IGNoYXIgKnhtbHRhcmdldF9pMzg2X2xpbnV4X25vX3htbCA9ICJAPHRhcmdldD5cCi0rPGFyY2hp dGVjdHVyZT5pMzg2PC9hcmNoaXRlY3R1cmU+XAotKzxvc2FiaT5HTlUvTGludXg8L29zYWJpPlwK LSs8L3RhcmdldD4iOwotK3N0YXRpYyBjb25zdCBjaGFyICp4bWx0YXJnZXRfYW1kNjRfbGludXhf bm9feG1sID0gIkA8dGFyZ2V0PlwKLSs8YXJjaGl0ZWN0dXJlPmkzODY6eDg2LTY0PC9hcmNoaXRl Y3R1cmU+XAotKzxvc2FiaT5HTlUvTGludXg8L29zYWJpPlwKLSs8L3RhcmdldD4iOwotIAotICNp bmNsdWRlIDxzeXMvcmVnLmg+Ci0gI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSAjaW5jbHVkZSA8 c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0rCi0rI2lmbmRlZiBQVFJBQ0Vf R0VUUkVHU0VUCi0rI2RlZmluZSBQVFJBQ0VfR0VUUkVHU0VUCTB4NDIwNAotKyNlbmRpZgotKwot KyNpZm5kZWYgUFRSQUNFX1NFVFJFR1NFVAotKyNkZWZpbmUgUFRSQUNFX1NFVFJFR1NFVAkweDQy MDUKLSsjZW5kaWYKLSsKLSAKLSAjaWZuZGVmIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEKLSAjZGVm aW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgMjUKLUBAIC0yNTIsNiArMjc5LDE4IEBAIHg4Nl9z dG9yZV9mcHhyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmUKLSAKLSAjZW5kaWYKLSAKLStzdGF0 aWMgdm9pZAotK3g4Nl9maWxsX3hzdGF0ZXJlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgdm9pZCAqYnVmKQotK3sKLSsgIGkzODdfY2FjaGVfdG9feHNhdmUgKHJlZ2NhY2hlLCBidWYp OwotK30KLSsKLStzdGF0aWMgdm9pZAotK3g4Nl9zdG9yZV94c3RhdGVyZWdzZXQgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IHZvaWQgKmJ1ZikKLSt7Ci0rICBpMzg3X3hzYXZlX3Rv X2NhY2hlIChyZWdjYWNoZSwgYnVmKTsKLSt9Ci0rCi0gLyogPz8/IFRoZSBub24tYmlhcmNoIGkz ODYgY2FzZSBzdG9yZXMgYWxsIHRoZSBpMzg3IHJlZ3MgdHdpY2UuCi0gICAgT25jZSBpbiBpMzg3 Xy4qZnNhdmUuKiBhbmQgb25jZSBpbiBpMzg3Xy4qZnhzYXZlLiouCi0gICAgVGhpcyBpcywgcHJl c3VtYWJseSwgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIFBUUkFDRV9bR1NdRVRGUFhSRUdTCi1A QCAtMjY0LDIxICszMDMsMjMgQEAgeDg2X3N0b3JlX2ZweHJlZ3NldCAoc3RydWN0IHJlZ2NhY2hl ICpyZQotIHN0cnVjdCByZWdzZXRfaW5mbyB0YXJnZXRfcmVnc2V0c1tdID0KLSB7Ci0gI2lmZGVm IEhBVkVfUFRSQUNFX0dFVFJFR1MKLS0gIHsgUFRSQUNFX0dFVFJFR1MsIFBUUkFDRV9TRVRSRUdT LCBzaXplb2YgKGVsZl9ncmVnc2V0X3QpLAotKyAgeyBQVFJBQ0VfR0VUUkVHUywgUFRSQUNFX1NF VFJFR1MsIDAsIHNpemVvZiAoZWxmX2dyZWdzZXRfdCksCi0gICAgIEdFTkVSQUxfUkVHUywKLSAg ICAgeDg2X2ZpbGxfZ3JlZ3NldCwgeDg2X3N0b3JlX2dyZWdzZXQgfSwKLSsgIHsgUFRSQUNFX0dF VFJFR1NFVCwgUFRSQUNFX1NFVFJFR1NFVCwgTlRfWDg2X1hTVEFURSwgMCwKLSsgICAgRVhURU5E RURfUkVHUywgeDg2X2ZpbGxfeHN0YXRlcmVnc2V0LCB4ODZfc3RvcmVfeHN0YXRlcmVnc2V0IH0s Ci0gIyBpZm5kZWYgX194ODZfNjRfXwotICMgIGlmZGVmIEhBVkVfUFRSQUNFX0dFVEZQWFJFR1MK LS0gIHsgUFRSQUNFX0dFVEZQWFJFR1MsIFBUUkFDRV9TRVRGUFhSRUdTLCBzaXplb2YgKGVsZl9m cHhyZWdzZXRfdCksCi0rICB7IFBUUkFDRV9HRVRGUFhSRUdTLCBQVFJBQ0VfU0VURlBYUkVHUywg MCwgc2l6ZW9mIChlbGZfZnB4cmVnc2V0X3QpLAotICAgICBFWFRFTkRFRF9SRUdTLAotICAgICB4 ODZfZmlsbF9mcHhyZWdzZXQsIHg4Nl9zdG9yZV9mcHhyZWdzZXQgfSwKLSAjICBlbmRpZgotICMg ZW5kaWYKLS0gIHsgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNFX1NFVEZQUkVHUywgc2l6ZW9mIChl bGZfZnByZWdzZXRfdCksCi0rICB7IFBUUkFDRV9HRVRGUFJFR1MsIFBUUkFDRV9TRVRGUFJFR1Ms IDAsIHNpemVvZiAoZWxmX2ZwcmVnc2V0X3QpLAotICAgICBGUF9SRUdTLAotICAgICB4ODZfZmls bF9mcHJlZ3NldCwgeDg2X3N0b3JlX2ZwcmVnc2V0IH0sCi0gI2VuZGlmIC8qIEhBVkVfUFRSQUNF X0dFVFJFR1MgKi8KLS0gIHsgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSsgIHsgMCwgMCwg MCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSB9OwotIAotIHN0YXRpYyBDT1JFX0FERFIKLUBAIC03 NzIsNiArODEzLDEyMSBAQCB4ODZfc2lnaW5mb19maXh1cCAoc3RydWN0IHNpZ2luZm8gKm5hdGl2 Ci0gICByZXR1cm4gMDsKLSB9Ci0gDAotK3N0YXRpYyBpbnQgdXNlX3htbDsKLSsKLSsvKiBVcGRh dGUgZ2Ric2VydmVyX3htbHRhcmdldC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSt4ODZfbGludXhf dXBkYXRlX3htbHRhcmdldCAodm9pZCkKLSt7Ci0rICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25n IHhjcjA7Ci0rICBzdGF0aWMgaW50IGhhdmVfcHRyYWNlX2dldHJlZ3NldCA9IC0xOwotKwotKyAg aWYgKCFjdXJyZW50X2luZmVyaW9yKQotKyAgICByZXR1cm47Ci0rCi0rI2lmZGVmIF9feDg2XzY0 X18KLSsgIGlmIChudW1feG1tX3JlZ2lzdGVycyA9PSA4KQotKyAgICBpbml0X3JlZ2lzdGVyc19p Mzg2X2xpbnV4ICgpOwotKyAgZWxzZQotKyAgICBpbml0X3JlZ2lzdGVyc19hbWQ2NF9saW51eCAo KTsKLSsjZWxzZQotKyAgaW5pdF9yZWdpc3RlcnNfaTM4Nl9saW51eCAoKTsKLSsjZW5kaWYKLSsK LSsgIGlmICghdXNlX3htbCkKLSsgICAgewotKyAgICAgIC8qIERvbid0IHVzZSBYTUwuICAqLwot KyNpZmRlZiBfX3g4Nl82NF9fCi0rICAgICAgaWYgKG51bV94bW1fcmVnaXN0ZXJzID09IDgpCi0r CWdkYnNlcnZlcl94bWx0YXJnZXQgPSB4bWx0YXJnZXRfaTM4Nl9saW51eF9ub194bWw7Ci0rICAg ICAgZWxzZQotKwlnZGJzZXJ2ZXJfeG1sdGFyZ2V0ID0geG1sdGFyZ2V0X2FtZDY0X2xpbnV4X25v X3htbDsKLSsjZWxzZQotKyAgICAgIGdkYnNlcnZlcl94bWx0YXJnZXQgPSB4bWx0YXJnZXRfaTM4 Nl9saW51eF9ub194bWw7Ci0rI2VuZGlmCi0rCi0rICAgICAgeDg2X3hjcjAgPSBJMzg2X1hTVEFU RV9TU0VfTUFTSzsKLSsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIC8qIFVwZGF0ZSBn ZGJzZXJ2ZXJfeG1sdGFyZ2V0IHdpdGggWE1MIHN1cHBvcnQuICAqLwotKyNpZmRlZiBfX3g4Nl82 NF9fCi0rICBpZiAobnVtX3htbV9yZWdpc3RlcnMgPT0gOCkKLSsgICAgZ2Ric2VydmVyX3htbHRh cmdldCA9ICJpMzg2LWxpbnV4LnhtbCI7Ci0rICBlbHNlCi0rICAgIGdkYnNlcnZlcl94bWx0YXJn ZXQgPSAiYW1kNjQtbGludXgueG1sIjsKLSsjZWxzZQotKyAgZ2Ric2VydmVyX3htbHRhcmdldCA9 ICJpMzg2LWxpbnV4LnhtbCI7Ci0rI2VuZGlmCi0rCi0rICAvKiBDaGVjayBpZiBYU0FWRSBleHRl bmRlZCBzdGF0ZSBpcyBzdXBwb3J0ZWQuICAqLwotKyAgaWYgKGhhdmVfcHRyYWNlX2dldHJlZ3Nl dCA9PSAtMSkKLSsgICAgewotKyAgICAgIGludCBwaWQgPSBwaWRfb2YgKGdldF90aHJlYWRfbHdw IChjdXJyZW50X2luZmVyaW9yKSk7Ci0rICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHhzdGF0ZXJl Z3NbSTM4Nl9YU1RBVEVfU1NFX1NJWkUgLyBzaXplb2YgKGxvbmcgbG9uZyldOwotKyAgICAgIHN0 cnVjdCBpb3ZlYyBpb3Y7Ci0rICAgICAgc3RydWN0IHJlZ3NldF9pbmZvICpyZWdzZXQ7Ci0rCi0r ICAgICAgaW92Lmlvdl9iYXNlID0geHN0YXRlcmVnczsKLSsgICAgICBpb3YuaW92X2xlbiA9IHNp emVvZiAoeHN0YXRlcmVncyk7Ci0rCi0rICAgICAgLyogQ2hlY2sgaWYgUFRSQUNFX0dFVFJFR1NF VCB3b3Jrcy4gICovCi0rICAgICAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVFJFR1NFVCwgcGlkLCAo dW5zaWduZWQgaW50KSBOVF9YODZfWFNUQVRFLAotKwkJICAmaW92KSA8IDApCi0rCXsKLSsJICBo YXZlX3B0cmFjZV9nZXRyZWdzZXQgPSAwOwotKwkgIHJldHVybjsKLSsJfQotKyAgICAgIGVsc2UK LSsJaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0ID0gMTsKLSsKLSsgICAgICAvKiBHZXQgWENSMCBmcm9t IFhTQVZFIGV4dGVuZGVkIHN0YXRlIGF0IGJ5dGUgNDY0LiAgKi8KLSsgICAgICB4Y3IwID0geHN0 YXRlcmVnc1s0NjQgLyBzaXplb2YgKGxvbmcgbG9uZyldOwotKwotKyAgICAgIC8qIFVzZSBQVFJB Q0VfR0VUUkVHU0VUIGlmIGl0IGlzIGF2YWlsYWJsZS4gICovCi0rICAgICAgZm9yIChyZWdzZXQg PSB0YXJnZXRfcmVnc2V0czsKLSsJICAgcmVnc2V0LT5maWxsX2Z1bmN0aW9uICE9IE5VTEw7IHJl Z3NldCsrKQotKwlpZiAocmVnc2V0LT5nZXRfcmVxdWVzdCA9PSBQVFJBQ0VfR0VUUkVHU0VUKQot KwkgIHJlZ3NldC0+c2l6ZSA9IEkzODZfWFNUQVRFX1NJWkUgKHhjcjApOwotKwllbHNlIGlmIChy ZWdzZXQtPnR5cGUgIT0gR0VORVJBTF9SRUdTKQotKwkgIHJlZ3NldC0+c2l6ZSA9IDA7Ci0rICAg IH0KLSsKLSsgIGlmIChoYXZlX3B0cmFjZV9nZXRyZWdzZXQpCi0rICAgIHsKLSsgICAgICAvKiBB VlggaXMgdGhlIGhpZ2hlc3QgZmVhdHVyZSB3ZSBzdXBwb3J0LiAgKi8KLSsgICAgICBpZiAoKHhj cjAgJiBJMzg2X1hTVEFURV9BVlhfTUFTSykgPT0gSTM4Nl9YU1RBVEVfQVZYX01BU0spCi0rCXsK LSsJICB4ODZfeGNyMCA9IHhjcjA7Ci0rCi0rI2lmZGVmIF9feDg2XzY0X18KLSsJICAvKiBJMzg2 IGhhcyA4IHhtbSByZWdzLiAgKi8KLSsJICBpZiAobnVtX3htbV9yZWdpc3RlcnMgPT0gOCkKLSsJ ICAgIGluaXRfcmVnaXN0ZXJzX2kzODZfYXZ4X2xpbnV4ICgpOwotKwkgIGVsc2UKLSsJICAgIGlu aXRfcmVnaXN0ZXJzX2FtZDY0X2F2eF9saW51eCAoKTsKLSsjZWxzZQotKwkgIGluaXRfcmVnaXN0 ZXJzX2kzODZfYXZ4X2xpbnV4ICgpOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rLyog UHJvY2VzcyBxU3VwcG9ydGVkIHF1ZXJ5LCAieG1sUmVnaXN0ZXJzPSIuICBVcGRhdGUgdGhlIGJ1 ZmZlciBzaXplIGZvcgotKyAgIFBUUkFDRV9HRVRSRUdTRVQuICAqLwotKwotK3N0YXRpYyB2b2lk Ci0reDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCAoY29uc3QgY2hhciAqcXVlcnkpCi0rewot KyAgLyogUmV0dXJuIGlmIGdkYiBkb2Vzbid0IHN1cHBvcnQgWE1MLiAgSWYgZ2RiIHNlbmRzICJ4 bWxSZWdpc3RlcnM9IgotKyAgICAgaW4gcVN1cHBvcnRlZCBxdWVyeSwgaXQgc3VwcG9ydHMgeDg2 IFhNTCB0YXJnZXQgZGVzY3JpcHRpb25zLiAgKi8KLSsgIHVzZV94bWwgPSBxdWVyeSAhPSBOVUxM ICYmIHN0cm5jbXAgKHF1ZXJ5LCAieG1sUmVnaXN0ZXJzPSIsIDEzKSA9PSAwOwotKwotKyAgeDg2 X2xpbnV4X3VwZGF0ZV94bWx0YXJnZXQgKCk7Ci0rfQotKwotIC8qIEluaXRpYWxpemUgZ2Ric2Vy dmVyIGZvciB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBpbmZlcmlvci4gICovCi0gCi0gc3RhdGlj IHZvaWQKLUBAIC03OTIsOCArOTQ4LDYgQEAgeDg2X2FyY2hfc2V0dXAgKHZvaWQpCi0gICAgIH0K LSAgIGVsc2UgaWYgKHVzZV82NGJpdCkKLSAgICAgewotLSAgICAgIGluaXRfcmVnaXN0ZXJzX2Ft ZDY0X2xpbnV4ICgpOwotLQotICAgICAgIC8qIEFtZDY0IGRvZXNuJ3QgaGF2ZSBIQVZFX0xJTlVY X1VTUlJFR1MuICAqLwotICAgICAgIHRoZV9sb3dfdGFyZ2V0Lm51bV9yZWdzID0gLTE7Ci0gICAg ICAgdGhlX2xvd190YXJnZXQucmVnbWFwID0gTlVMTDsKLUBAIC04MDMsMTQgKzk1NywxMyBAQCB4 ODZfYXJjaF9zZXR1cCAodm9pZCkKLSAgICAgICAvKiBBbWQ2NCBoYXMgMTYgeG1tIHJlZ3MuICAq LwotICAgICAgIG51bV94bW1fcmVnaXN0ZXJzID0gMTY7Ci0gCi0rICAgICAgeDg2X2xpbnV4X3Vw ZGF0ZV94bWx0YXJnZXQgKCk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gI2VuZGlmCi0gCi0g ICAvKiBPayB3ZSBoYXZlIGEgMzItYml0IGluZmVyaW9yLiAgKi8KLSAKLS0gIGluaXRfcmVnaXN0 ZXJzX2kzODZfbGludXggKCk7Ci0tCi0gICB0aGVfbG93X3RhcmdldC5udW1fcmVncyA9IEkzODZf TlVNX1JFR1M7Ci0gICB0aGVfbG93X3RhcmdldC5yZWdtYXAgPSBpMzg2X3JlZ21hcDsKLSAgIHRo ZV9sb3dfdGFyZ2V0LmNhbm5vdF9mZXRjaF9yZWdpc3RlciA9IGkzODZfY2Fubm90X2ZldGNoX3Jl Z2lzdGVyOwotQEAgLTgxOCw2ICs5NzEsOCBAQCB4ODZfYXJjaF9zZXR1cCAodm9pZCkKLSAKLSAg IC8qIEkzODYgaGFzIDggeG1tIHJlZ3MuICAqLwotICAgbnVtX3htbV9yZWdpc3RlcnMgPSA4Owot KwotKyAgeDg2X2xpbnV4X3VwZGF0ZV94bWx0YXJnZXQgKCk7Ci0gfQotIAotIC8qIFRoaXMgaXMg aW5pdGlhbGl6ZWQgYXNzdW1pbmcgYW4gYW1kNjQgdGFyZ2V0LgotQEAgLTg1MCw1ICsxMDA1LDYg QEAgc3RydWN0IGxpbnV4X3RhcmdldF9vcHMgdGhlX2xvd190YXJnZXQgPQotICAgeDg2X3NpZ2lu Zm9fZml4dXAsCi0gICB4ODZfbGludXhfbmV3X3Byb2Nlc3MsCi0gICB4ODZfbGludXhfbmV3X3Ro cmVhZCwKLS0gIHg4Nl9saW51eF9wcmVwYXJlX3RvX3Jlc3VtZQotKyAgeDg2X2xpbnV4X3ByZXBh cmVfdG9fcmVzdW1lLAotKyAgeDg2X2xpbnV4X3Byb2Nlc3NfcXN1cHBvcnRlZCAKLSB9OwotLS0t IC4vZ2RiL2dkYnNlcnZlci9saW51eC14dGVuc2EtbG93LmMJMjAxMC0wMS0yMCAyMzo1NTozOC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJzZXJ2ZXIvbGludXgteHRlbnNhLWxvdy5jCTIw MTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTMxLDEzICsxMzEsMTMgQEAg eHRlbnNhX3N0b3JlX3h0cmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKgotIH0KLSAKLSBzdHJ1Y3Qg cmVnc2V0X2luZm8gdGFyZ2V0X3JlZ3NldHNbXSA9IHsKLS0gIHsgUFRSQUNFX0dFVFJFR1MsIFBU UkFDRV9TRVRSRUdTLCBzaXplb2YgKGVsZl9ncmVnc2V0X3QpLAotKyAgeyBQVFJBQ0VfR0VUUkVH UywgUFRSQUNFX1NFVFJFR1MsIDAsIHNpemVvZiAoZWxmX2dyZWdzZXRfdCksCi0gICAgIEdFTkVS QUxfUkVHUywKLSAgICAgeHRlbnNhX2ZpbGxfZ3JlZ3NldCwgeHRlbnNhX3N0b3JlX2dyZWdzZXQg fSwKLS0gIHsgUFRSQUNFX0dFVFhUUkVHUywgUFRSQUNFX1NFVFhUUkVHUywgWFRFTlNBX0VMRl9Y VFJFR19TSVpFLAotKyAgeyBQVFJBQ0VfR0VUWFRSRUdTLCBQVFJBQ0VfU0VUWFRSRUdTLCAwLCBY VEVOU0FfRUxGX1hUUkVHX1NJWkUsCi0gICAgIEVYVEVOREVEX1JFR1MsCi0gICAgIHh0ZW5zYV9m aWxsX3h0cmVnc2V0LCB4dGVuc2Ffc3RvcmVfeHRyZWdzZXQgfSwKLS0gIHsgMCwgMCwgLTEsIC0x LCBOVUxMLCBOVUxMIH0KLSsgIHsgMCwgMCwgMCwgLTEsIC0xLCBOVUxMLCBOVUxMIH0KLSB9Owot IAotICNpZiBYQ0hBTF9IQVZFX0JFCi0tLS0gLi9nZGIvZ2Ric2VydmVyL3NlcnZlci5jCTIwMTAt MDEtMjAgMjM6NTU6MzguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvZ2Ric2VydmVyL3NlcnZl ci5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTIzNiw2ICsxMjM2 LDkgQEAgaGFuZGxlX3F1ZXJ5IChjaGFyICpvd25fYnVmLCBpbnQgcGFja2V0XwotICAgICB7Ci0g ICAgICAgY2hhciAqcCA9ICZvd25fYnVmWzEwXTsKLSAKLSsgICAgICAvKiBTdGFydCBwcm9jZXNz aW5nIHFTdXBwb3J0ZWQgcGFja2V0LiAgKi8KLSsgICAgICB0YXJnZXRfcHJvY2Vzc19xc3VwcG9y dGVkIChOVUxMKTsKLSsKLSAgICAgICAvKiBQcm9jZXNzIGVhY2ggZmVhdHVyZSBiZWluZyBwcm92 aWRlZCBieSBHREIuICBUaGUgZmlyc3QKLSAJIGZlYXR1cmUgd2lsbCBmb2xsb3cgYSAnOicsIGFu ZCBsYXR0ZXIgZmVhdHVyZXMgd2lsbCBmb2xsb3cKLSAJICc7Jy4gICovCi1AQCAtMTI1MSw2ICsx MjU0LDggQEAgaGFuZGxlX3F1ZXJ5IChjaGFyICpvd25fYnVmLCBpbnQgcGFja2V0XwotIAkJaWYg KHRhcmdldF9zdXBwb3J0c19tdWx0aV9wcm9jZXNzICgpKQotIAkJICBtdWx0aV9wcm9jZXNzID0g MTsKLSAJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB0YXJnZXRfcHJvY2Vzc19xc3VwcG9y dGVkIChwKTsKLSAJICB9Ci0gCi0gICAgICAgc3ByaW50ZiAob3duX2J1ZiwgIlBhY2tldFNpemU9 JXg7UVBhc3NTaWduYWxzKyIsIFBCVUZTSVogLSAxKTsKLS0tLSAuL2dkYi9nZGJzZXJ2ZXIvdGFy Z2V0LmgJMjAxMC0wMS0yMCAyMzo1NTozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9nZGJz ZXJ2ZXIvdGFyZ2V0LmgJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0y ODYsNiArMjg2LDkgQEAgc3RydWN0IHRhcmdldF9vcHMKLSAKLSAgIC8qIFJldHVybnMgdGhlIGNv cmUgZ2l2ZW4gYSB0aHJlYWQsIG9yIC0xIGlmIG5vdCBrbm93bi4gICovCi0gICBpbnQgKCpjb3Jl X29mX3RocmVhZCkgKHB0aWRfdCk7Ci0rCi0rICAvKiBUYXJnZXQgc3BlY2lmaWMgcVN1cHBvcnRl ZCBzdXBwb3J0LiAgKi8KLSsgIHZvaWQgKCpwcm9jZXNzX3FzdXBwb3J0ZWQpIChjb25zdCBjaGFy ICopOwotIH07Ci0gCi0gZXh0ZXJuIHN0cnVjdCB0YXJnZXRfb3BzICp0aGVfdGFyZ2V0OwotQEAg LTMyNiw2ICszMjksMTAgQEAgdm9pZCBzZXRfdGFyZ2V0X29wcyAoc3RydWN0IHRhcmdldF9vcHMg KgotICAgKHRoZV90YXJnZXQtPnN1cHBvcnRzX211bHRpX3Byb2Nlc3MgPyBcCi0gICAgKCp0aGVf dGFyZ2V0LT5zdXBwb3J0c19tdWx0aV9wcm9jZXNzKSAoKSA6IDApCi0gCi0rI2RlZmluZSB0YXJn ZXRfcHJvY2Vzc19xc3VwcG9ydGVkKHF1ZXJ5KSBcCi0rICBpZiAodGhlX3RhcmdldC0+cHJvY2Vz c19xc3VwcG9ydGVkKSBcCi0rICAgIHRoZV90YXJnZXQtPnByb2Nlc3NfcXN1cHBvcnRlZCAocXVl cnkpCi0rCi0gLyogU3RhcnQgbm9uLXN0b3AgbW9kZSwgcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0x IG9uIGZhaWx1cmUuICAgKi8KLSAKLSBpbnQgc3RhcnRfbm9uX3N0b3AgKGludCBub25zdG9wKTsK LS0tLSAuL2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIwMTAtMDQtMDMgMjA6NTk6NTIuMDAwMDAwMDAw ICswMjAwCi0rKysgLi9nZGIvaTM4Ni1saW51eC1uYXQuYwkyMDEwLTA0LTAzIDIxOjEyOjMyLjAw MDAwMDAwMCArMDIwMAotQEAgLTIzLDExICsyMywxNCBAQAotICNpbmNsdWRlICJpbmZlcmlvci5o IgotICNpbmNsdWRlICJnZGJjb3JlLmgiCi0gI2luY2x1ZGUgInJlZ2NhY2hlLmgiCi0rI2luY2x1 ZGUgInJlZ3NldC5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAibGludXgtbmF0 LmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5o IgotKyNpbmNsdWRlICJlbGYvY29tbW9uLmgiCi0rI2luY2x1ZGUgPHN5cy91aW8uaD4KLSAjaW5j bHVkZSA8c3lzL3B0cmFjZS5oPgotICNpbmNsdWRlIDxzeXMvdXNlci5oPgotICNpbmNsdWRlIDxz eXMvcHJvY2ZzLmg+Ci1AQCAtNjksNiArNzIsMTkgQEAKLSAKLSAvKiBEZWZpbmVzIHBzX2Vycl9l LCBzdHJ1Y3QgcHNfcHJvY2hhbmRsZS4gICovCi0gI2luY2x1ZGUgImdkYl9wcm9jX3NlcnZpY2Uu aCIKLSsKLSsjaW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIKLSsKLSsjaWZuZGVmIFBUUkFDRV9HRVRS RUdTRVQKLSsjZGVmaW5lIFBUUkFDRV9HRVRSRUdTRVQJMHg0MjA0Ci0rI2VuZGlmCi0rCi0rI2lm bmRlZiBQVFJBQ0VfU0VUUkVHU0VUCi0rI2RlZmluZSBQVFJBQ0VfU0VUUkVHU0VUCTB4NDIwNQot KyNlbmRpZgotKwotKy8qIERvZXMgdGhlIGN1cnJlbnQgaG9zdCBzdXBwb3J0IFBUUkFDRV9HRVRS RUdTRVQ/ICAqLwotK3N0YXRpYyBpbnQgaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0ID0gLTE7Ci0gDAot IAotIC8qIFRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gR05VL0xpbnV4IEVMRiBjb3JlLWR1bXBz IGFyZSBpZGVudGljYWwgdG8KLUBAIC05OCw2ICsxMTQsOCBAQCBzdGF0aWMgaW50IHJlZ21hcFtd ID0gCi0gICAtMSwgLTEsIC0xLCAtMSwJCS8qIHhtbTAsIHhtbTEsIHhtbTIsIHhtbTMgKi8KLSAg IC0xLCAtMSwgLTEsIC0xLAkJLyogeG1tNCwgeG1tNSwgeG1tNiwgeG1tNiAqLwotICAgLTEsCQkJ CS8qIG14Y3NyICovCi0rICAtMSwgLTEsIC0xLCAtMSwJCS8qIHltbTBoLCB5bW0xaCwgeW1tMmgs IHltbTNoICovCi0rICAtMSwgLTEsIC0xLCAtMSwJCS8qIHltbTRoLCB5bW01aCwgeW1tNmgsIHlt bTZoICovCi0gICBPUklHX0VBWAotIH07Ci0gCi1AQCAtMTEwLDYgKzEyOCw5IEBAIHN0YXRpYyBp bnQgcmVnbWFwW10gPSAKLSAjZGVmaW5lIEdFVEZQWFJFR1NfU1VQUExJRVMocmVnbm8pIFwKLSAg IChJMzg2X1NUMF9SRUdOVU0gPD0gKHJlZ25vKSAmJiAocmVnbm8pIDwgSTM4Nl9TU0VfTlVNX1JF R1MpCi0gCi0rI2RlZmluZSBHRVRYU1RBVEVSRUdTX1NVUFBMSUVTKHJlZ25vKSBcCi0rICAoSTM4 Nl9TVDBfUkVHTlVNIDw9IChyZWdubykgJiYgKHJlZ25vKSA8IEkzODZfQVZYX05VTV9SRUdTKQot KwotIC8qIERvZXMgdGhlIGN1cnJlbnQgaG9zdCBzdXBwb3J0IHRoZSBHRVRSRUdTIHJlcXVlc3Q/ ICAqLwotIGludCBoYXZlX3B0cmFjZV9nZXRyZWdzID0KLSAjaWZkZWYgSEFWRV9QVFJBQ0VfR0VU UkVHUwotQEAgLTM1NSw2ICszNzYsNTcgQEAgc3RhdGljIHZvaWQgc3RvcmVfZnByZWdzIChjb25z dCBzdHJ1Y3QgcgotIAotIC8qIFRyYW5zZmVyaW5nIGZsb2F0aW5nLXBvaW50IGFuZCBTU0UgcmVn aXN0ZXJzIHRvIGFuZCBmcm9tIEdEQi4gICovCi0gCi0rLyogRmV0Y2ggYWxsIHJlZ2lzdGVycyBj b3ZlcmVkIGJ5IHRoZSBQVFJBQ0VfR0VUUkVHU0VUIHJlcXVlc3QgZnJvbQotKyAgIHByb2Nlc3Mv dGhyZWFkIFRJRCBhbmQgc3RvcmUgdGhlaXIgdmFsdWVzIGluIEdEQidzIHJlZ2lzdGVyIGFycmF5 LgotKyAgIFJldHVybiBub24temVybyBpZiBzdWNjZXNzZnVsLCB6ZXJvIG90aGVyd2lzZS4gICov Ci0rCi0rc3RhdGljIGludAotK2ZldGNoX3hzdGF0ZXJlZ3MgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCB0aWQpCi0rewotKyAgY2hhciB4c3RhdGVyZWdzW0kzODZfWFNUQVRFX01BWF9T SVpFXTsKLSsgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0rCi0rICBpZiAoIWhhdmVfcHRyYWNlX2dldHJl Z3NldCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpb3YuaW92X2Jhc2UgPSB4c3RhdGVyZWdzOwot KyAgaW92Lmlvdl9sZW4gPSBzaXplb2YoeHN0YXRlcmVncyk7Ci0rICBpZiAocHRyYWNlIChQVFJB Q0VfR0VUUkVHU0VULCB0aWQsICh1bnNpZ25lZCBpbnQpIE5UX1g4Nl9YU1RBVEUsCi0rCSAgICAg ICZpb3YpIDwgMCkKLSsgICAgcGVycm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3QgcmVhZCBleHRl bmRlZCBzdGF0ZSBzdGF0dXMiKSk7Ci0rCi0rICBpMzg3X3N1cHBseV94c2F2ZSAocmVnY2FjaGUs IC0xLCB4c3RhdGVyZWdzKTsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBTdG9yZSBhbGwgdmFs aWQgcmVnaXN0ZXJzIGluIEdEQidzIHJlZ2lzdGVyIGFycmF5IGNvdmVyZWQgYnkgdGhlCi0rICAg UFRSQUNFX1NFVFJFR1NFVCByZXF1ZXN0IGludG8gdGhlIHByb2Nlc3MvdGhyZWFkIHNwZWNpZmll ZCBieSBUSUQuCi0rICAgUmV0dXJuIG5vbi16ZXJvIGlmIHN1Y2Nlc3NmdWwsIHplcm8gb3RoZXJ3 aXNlLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc3RvcmVfeHN0YXRlcmVncyAoY29uc3Qgc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHRpZCwgaW50IHJlZ25vKQotK3sKLSsgIGNoYXIgeHN0 YXRlcmVnc1tJMzg2X1hTVEFURV9NQVhfU0laRV07Ci0rICBzdHJ1Y3QgaW92ZWMgaW92OwotKwot KyAgaWYgKCFoYXZlX3B0cmFjZV9nZXRyZWdzZXQpCi0rICAgIHJldHVybiAwOwotKyAgCi0rICBp b3YuaW92X2Jhc2UgPSB4c3RhdGVyZWdzOwotKyAgaW92Lmlvdl9sZW4gPSBzaXplb2YoeHN0YXRl cmVncyk7Ci0rICBpZiAocHRyYWNlIChQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh1bnNpZ25lZCBp bnQpIE5UX1g4Nl9YU1RBVEUsCi0rCSAgICAgICZpb3YpIDwgMCkKLSsgICAgcGVycm9yX3dpdGhf bmFtZSAoXygiQ291bGRuJ3QgcmVhZCBleHRlbmRlZCBzdGF0ZSBzdGF0dXMiKSk7Ci0rCi0rICBp Mzg3X2NvbGxlY3RfeHNhdmUgKHJlZ2NhY2hlLCByZWdubywgeHN0YXRlcmVncywgMCk7Ci0rCi0r ICBpZiAocHRyYWNlIChQVFJBQ0VfU0VUUkVHU0VULCB0aWQsICh1bnNpZ25lZCBpbnQpIE5UX1g4 Nl9YU1RBVEUsCi0rCSAgICAgIChpbnQpICZpb3YpIDwgMCkKLSsgICAgcGVycm9yX3dpdGhfbmFt ZSAoXygiQ291bGRuJ3Qgd3JpdGUgZXh0ZW5kZWQgc3RhdGUgc3RhdHVzIikpOwotKwotKyAgcmV0 dXJuIDE7Ci0rfQotKwotICNpZmRlZiBIQVZFX1BUUkFDRV9HRVRGUFhSRUdTCi0gCi0gLyogRmls bCBHREIncyByZWdpc3RlciBhcnJheSB3aXRoIHRoZSBmbG9hdGluZy1wb2ludCBhbmQgU1NFIHJl Z2lzdGVyCi1AQCAtNDg5LDYgKzU2MSw4IEBAIGkzODZfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVn aXN0ZXJzIChzdHIKLSAJICByZXR1cm47Ci0gCX0KLSAKLSsgICAgICBpZiAoZmV0Y2hfeHN0YXRl cmVncyAocmVnY2FjaGUsIHRpZCkpCi0rCXJldHVybjsKLSAgICAgICBpZiAoZmV0Y2hfZnB4cmVn cyAocmVnY2FjaGUsIHRpZCkpCi0gCXJldHVybjsKLSAgICAgICBmZXRjaF9mcHJlZ3MgKHJlZ2Nh Y2hlLCB0aWQpOwotQEAgLTUwMSw2ICs1NzUsMTIgQEAgaTM4Nl9saW51eF9mZXRjaF9pbmZlcmlv cl9yZWdpc3RlcnMgKHN0cgotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotKyAgaWYgKEdFVFhT VEFURVJFR1NfU1VQUExJRVMgKHJlZ25vKSkKLSsgICAgewotKyAgICAgIGlmIChmZXRjaF94c3Rh dGVyZWdzIChyZWdjYWNoZSwgdGlkKSkKLSsJcmV0dXJuOwotKyAgICB9Ci0rCi0gICBpZiAoR0VU RlBYUkVHU19TVVBQTElFUyAocmVnbm8pKQotICAgICB7Ci0gICAgICAgaWYgKGZldGNoX2ZweHJl Z3MgKHJlZ2NhY2hlLCB0aWQpKQotQEAgLTU1Myw2ICs2MzMsOCBAQCBpMzg2X2xpbnV4X3N0b3Jl X2luZmVyaW9yX3JlZ2lzdGVycyAoc3RyCi0gICBpZiAocmVnbm8gPT0gLTEpCi0gICAgIHsKLSAg ICAgICBzdG9yZV9yZWdzIChyZWdjYWNoZSwgdGlkLCByZWdubyk7Ci0rICAgICAgaWYgKHN0b3Jl X3hzdGF0ZXJlZ3MgKHJlZ2NhY2hlLCB0aWQsIHJlZ25vKSkKLSsJcmV0dXJuOwotICAgICAgIGlm IChzdG9yZV9mcHhyZWdzIChyZWdjYWNoZSwgdGlkLCByZWdubykpCi0gCXJldHVybjsKLSAgICAg ICBzdG9yZV9mcHJlZ3MgKHJlZ2NhY2hlLCB0aWQsIHJlZ25vKTsKLUBAIC01NjUsNiArNjQ3LDEy IEBAIGkzODZfbGludXhfc3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdHIKLSAgICAgICByZXR1 cm47Ci0gICAgIH0KLSAKLSsgIGlmIChHRVRYU1RBVEVSRUdTX1NVUFBMSUVTIChyZWdubykpCi0r ICAgIHsKLSsgICAgICBpZiAoc3RvcmVfeHN0YXRlcmVncyAocmVnY2FjaGUsIHRpZCwgcmVnbm8p KQotKwlyZXR1cm47Ci0rICAgIH0KLSsKLSAgIGlmIChHRVRGUFhSRUdTX1NVUFBMSUVTIChyZWdu bykpCi0gICAgIHsKLSAgICAgICBpZiAoc3RvcmVfZnB4cmVncyAocmVnY2FjaGUsIHRpZCwgcmVn bm8pKQotQEAgLTg3Myw3ICs5NjEsNTAgQEAgaTM4Nl9saW51eF9jaGlsZF9wb3N0X3N0YXJ0dXBf aW5mZXJpb3IgKAotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKgotIGkzODZfbGlu dXhfcmVhZF9kZXNjcmlwdGlvbiAoc3RydWN0IHRhcmdldF9vcHMgKm9wcykKLSB7Ci0tICByZXR1 cm4gdGRlc2NfaTM4Nl9saW51eDsKLSsgIHN0YXRpYyB1aW50NjRfdCB4Y3IwOwotKwotKyAgaWYg KGhhdmVfcHRyYWNlX2dldHJlZ3NldCA9PSAtMSkKLSsgICAgewotKyAgICAgIGludCB0aWQ7Ci0r ICAgICAgdWludDY0X3QgeHN0YXRlcmVnc1soSTM4Nl9YU1RBVEVfU1NFX1NJWkUgLyBzaXplb2Yg KHVpbnQ2NF90KSldOwotKyAgICAgIHN0cnVjdCBpb3ZlYyBpb3Y7Ci0rICAgICAgdW5zaWduZWQg aW50IHhzdGF0ZV9zaXplOwotKwotKyAgICAgIC8qIEdOVS9MaW51eCBMV1AgSUQncyBhcmUgcHJv Y2VzcyBJRCdzLiAgKi8KLSsgICAgICB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOwotKyAg ICAgIGlmICh0aWQgPT0gMCkKLSsJdGlkID0gUElER0VUIChpbmZlcmlvcl9wdGlkKTsgLyogTm90 IGEgdGhyZWFkZWQgcHJvZ3JhbS4gICovCi0rCi0rICAgICAgaW92Lmlvdl9iYXNlID0geHN0YXRl cmVnczsKLSsgICAgICBpb3YuaW92X2xlbiA9IHNpemVvZiAoeHN0YXRlcmVncyk7Ci0rCi0rICAg ICAgLyogQ2hlY2sgaWYgUFRSQUNFX0dFVFJFR1NFVCB3b3Jrcy4gICovCi0rICAgICAgaWYgKHB0 cmFjZSAoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodW5zaWduZWQgaW50KSBOVF9YODZfWFNUQVRF LAotKwkJICAmaW92KSA8IDApCi0rCXsKLSsJICBoYXZlX3B0cmFjZV9nZXRyZWdzZXQgPSAwOwot KwkgIHhzdGF0ZV9zaXplID0gMDsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIGhhdmVfcHRy YWNlX2dldHJlZ3NldCA9IDE7Ci0rCi0rCSAgLyogR2V0IFhDUjAgZnJvbSBYU0FWRSBleHRlbmRl ZCBzdGF0ZS4gICovCi0rCSAgeGNyMCA9IHhzdGF0ZXJlZ3NbKEkzODZfTElOVVhfWFNBVkVfWENS MF9PRkZTRVQKLSsJCQkgICAgIC8gc2l6ZW9mIChsb25nIGxvbmcpKV07Ci0rCi0rCSAgeHN0YXRl X3NpemUgPSBJMzg2X1hTVEFURV9TSVpFICh4Y3IwKTsKLSsJfQotKwotKyAgICAgIGkzODZfbGlu dXhfdXBkYXRlX3hzdGF0ZXJlZ3NldCAoeHN0YXRlX3NpemUpOwotKyAgICB9Ci0rCi0rICAvKiBD aGVjayB0aGUgbmF0aXZlIFhDUjAgb25seSBpZiBQVFJBQ0VfR0VUUkVHU0VUIGlzIGF2YWlsYWJs ZS4gICovCi0rICBpZiAoaGF2ZV9wdHJhY2VfZ2V0cmVnc2V0Ci0rICAgICAgJiYgKHhjcjAgJiBJ Mzg2X1hTVEFURV9BVlhfTUFTSykgPT0gSTM4Nl9YU1RBVEVfQVZYX01BU0spCi0rICAgIHJldHVy biB0ZGVzY19pMzg2X2F2eF9saW51eDsKLSsgIGVsc2UKLSsgICAgcmV0dXJuIHRkZXNjX2kzODZf bGludXg7Ci0gfQotIAotIHZvaWQKLS0tLSAuL2dkYi9pMzg2LWxpbnV4LXRkZXAuYwkyMDEwLTA0 LTAzIDIwOjU5OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2kzODYtbGludXgtdGRlcC5j CTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjMsNiArMjMsNyBAQAot ICNpbmNsdWRlICJmcmFtZS5oIgotICNpbmNsdWRlICJ2YWx1ZS5oIgotICNpbmNsdWRlICJyZWdj YWNoZS5oIgotKyNpbmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAiaW5mZXJpb3IuaCIKLSAj aW5jbHVkZSAib3NhYmkuaCIKLSAjaW5jbHVkZSAicmVnZ3JvdXBzLmgiCi1AQCAtMzYsOSArMzcs MTEgQEAKLSAjaW5jbHVkZSAic29saWItc3ZyNC5oIgotICNpbmNsdWRlICJzeW10YWIuaCIKLSAj aW5jbHVkZSAiYXJjaC11dGlscy5oIgotLSNpbmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAi eG1sLXN5c2NhbGwuaCIKLSAKLSsjaW5jbHVkZSAiaTM4Ny10ZGVwLmgiCi0rI2luY2x1ZGUgImkz ODYteHN0YXRlLmgiCi0rCi0gLyogVGhlIHN5c2NhbGwncyBYTUwgZmlsZW5hbWUgZm9yIGkzODYu ICAqLwotICNkZWZpbmUgWE1MX1NZU0NBTExfRklMRU5BTUVfSTM4NiAic3lzY2FsbHMvaTM4Ni1s aW51eC54bWwiCi0gCi1AQCAtNDcsNiArNTAsNyBAQAotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAK LSAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LWxpbnV4LmMiCi0rI2luY2x1ZGUgImZlYXR1 cmVzL2kzODYvaTM4Ni1hdngtbGludXguYyIKLSAKLSAvKiBTdXBwb3J0ZWQgcmVnaXN0ZXIgbm90 ZSBzZWN0aW9ucy4gICovCi0gc3RhdGljIHN0cnVjdCBjb3JlX3JlZ3NldF9zZWN0aW9uIGkzODZf bGludXhfcmVnc2V0X3NlY3Rpb25zW10gPQotQEAgLTU0LDYgKzU4LDcgQEAgc3RhdGljIHN0cnVj dCBjb3JlX3JlZ3NldF9zZWN0aW9uIGkzODZfbAotICAgeyAiLnJlZyIsIDE0NCwgImdlbmVyYWwt cHVycG9zZSIgfSwKLSAgIHsgIi5yZWcyIiwgMTA4LCAiZmxvYXRpbmctcG9pbnQiIH0sCi0gICB7 ICIucmVnLXhmcCIsIDUxMiwgImV4dGVuZGVkIGZsb2F0aW5nLXBvaW50IiB9LAotKyAgeyAiLnJl Zy14c3RhdGUiLCAwLCAiWFNBVkUgZXh0ZW5kZWQgc3RhdGUiIH0sCi0gICB7IE5VTEwsIDAgfQot IH07Ci0gCi1AQCAtNTMzLDYgKzUzOCw3IEBAIHN0YXRpYyBpbnQgaTM4Nl9saW51eF9ncmVnc2V0 X3JlZ19vZmZzZXQKLSAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSAgIC0xLCAt MSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwKLSAgIC0xLAotKyAgLTEsIC0xLCAtMSwgLTEsIC0x LCAtMSwgLTEsIC0xLAotICAgMTEgKiA0CQkJLyogIm9yaWdfZWF4IiAqLwotIH07Ci0gCi1AQCAt NTYwLDYgKzU2Niw1OSBAQCBzdGF0aWMgaW50IGkzODZfbGludXhfc2NfcmVnX29mZnNldFtdID0K LSAgIDAgKiA0CQkJCS8qICVncyAqLwotIH07Ci0gCi0rLyogVXBkYXRlIFhTQVZFIGV4dGVuZGVk IHN0YXRlIHJlZ2lzdGVyIG5vdGUgc2VjdGlvbi4gICovCi0rCi0rdm9pZAotK2kzODZfbGludXhf dXBkYXRlX3hzdGF0ZXJlZ3NldCAodW5zaWduZWQgaW50IHhzdGF0ZV9zaXplKQotK3sKLSsgIHN0 cnVjdCBjb3JlX3JlZ3NldF9zZWN0aW9uICp4c3RhdGUgPSAmaTM4Nl9saW51eF9yZWdzZXRfc2Vj dGlvbnNbM107Ci0rCi0rICAvKiBVcGRhdGUgdGhlIFhTQVZFIGV4dGVuZGVkIHN0YXRlIHJlZ2lz dGVyIG5vdGUgc2VjdGlvbiBmb3IgImdjb3JlIi4KLSsgICAgIERpc2FibGUgaXQgaWYgaXRzIHNp emUgaXMgMC4gICovCi0rICBnZGJfYXNzZXJ0IChzdHJjbXAgKHhzdGF0ZS0+c2VjdF9uYW1lLCAi LnJlZy14c3RhdGUiKSA9PSAwKTsKLSsgIGlmICh4c3RhdGVfc2l6ZSkKLSsgICAgeHN0YXRlLT5z aXplID0geHN0YXRlX3NpemU7Ci0rICBlbHNlCi0rICAgIHhzdGF0ZS0+c2VjdF9uYW1lID0gTlVM TDsKLSt9Ci0rCi0rLyogR2V0IFhTQVZFIGV4dGVuZGVkIHN0YXRlIHhjcjAgZnJvbSBjb3JlIGR1 bXAuICAqLwotKwotK3VpbnQ2NF90Ci0raTM4Nl9saW51eF9jb3JlX3JlYWRfeGNyMCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJICAgc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgYmZk ICphYmZkKQotK3sKLSsgIGFzZWN0aW9uICp4c3RhdGUgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFt ZSAoYWJmZCwgIi5yZWcteHN0YXRlIik7Ci0rICB1aW50NjRfdCB4Y3IwOwotKwotKyAgaWYgKHhz dGF0ZSkKLSsgICAgewotKyAgICAgIHNpemVfdCBzaXplID0gYmZkX3NlY3Rpb25fc2l6ZSAoYWJm ZCwgeHN0YXRlKTsKLSsKLSsgICAgICAvKiBDaGVjayBleHRlbmRlZCBzdGF0ZSBzaXplLiAgKi8K LSsgICAgICBpZiAoc2l6ZSA8IEkzODZfWFNUQVRFX0FWWF9TSVpFKQotKwl4Y3IwID0gSTM4Nl9Y U1RBVEVfU1NFX01BU0s7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgY2hhciBjb250ZW50c1s4XTsK LSsKLSsJICBpZiAoISBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHhzdGF0ZSwgY29u dGVudHMsCi0rCQkJCQkgIEkzODZfTElOVVhfWFNBVkVfWENSMF9PRkZTRVQsCi0rCQkJCQkgIDgp KQotKwkgICAgewotKwkgICAgICB3YXJuaW5nIChfKCJDb3VsZG4ndCByZWFkIGB4Y3IwJyBieXRl cyBmcm9tIGAucmVnLXhzdGF0ZScgc2VjdGlvbiBpbiBjb3JlIGZpbGUuIikpOwotKwkgICAgICBy ZXR1cm4gMDsKLSsJICAgIH0KLSsKLSsJICB4Y3IwID0gYmZkX2dldF82NCAoYWJmZCwgY29udGVu dHMpOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgeGNyMCA9IEkzODZfWFNUQVRFX1NTRV9N QVNLOwotKwotKyAgcmV0dXJuIHhjcjA7Ci0rfQotKwotIC8qIEdldCBMaW51eC94ODYgdGFyZ2V0 IGRlc2NyaXB0aW9uIGZyb20gY29yZSBkdW1wLiAgKi8KLSAKLSBzdGF0aWMgY29uc3Qgc3RydWN0 IHRhcmdldF9kZXNjICoKLUBAIC01NjgsMTIgKzYyNywxNyBAQCBpMzg2X2xpbnV4X2NvcmVfcmVh ZF9kZXNjcmlwdGlvbiAoc3RydWN0Ci0gCQkJCSAgYmZkICphYmZkKQotIHsKLSAgIGFzZWN0aW9u ICpzZWN0aW9uID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsICIucmVnMiIpOwotKyAg dWludDY0X3QgeGNyMDsKLSAKLSAgIGlmIChzZWN0aW9uID09IE5VTEwpCi0gICAgIHJldHVybiBO VUxMOwotIAotICAgLyogTGludXgvaTM4Ni4gICovCi0tICByZXR1cm4gdGRlc2NfaTM4Nl9saW51 eDsKLSsgIHhjcjAgPSBpMzg2X2xpbnV4X2NvcmVfcmVhZF94Y3IwIChnZGJhcmNoLCB0YXJnZXQs IGFiZmQpOwotKyAgaWYgKCh4Y3IwICYgSTM4Nl9YU1RBVEVfQVZYX01BU0spID09IEkzODZfWFNU QVRFX0FWWF9NQVNLKQotKyAgICByZXR1cm4gdGRlc2NfaTM4Nl9hdnhfbGludXg7Ci0rICBlbHNl Ci0rICAgIHJldHVybiB0ZGVzY19pMzg2X2xpbnV4OwotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAg LTYyMyw2ICs2ODcsOCBAQCBpMzg2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZv Ci0gICB0ZGVwLT5zY19yZWdfb2Zmc2V0ID0gaTM4Nl9saW51eF9zY19yZWdfb2Zmc2V0OwotICAg dGRlcC0+c2NfbnVtX3JlZ3MgPSBBUlJBWV9TSVpFIChpMzg2X2xpbnV4X3NjX3JlZ19vZmZzZXQp OwotIAotKyAgdGRlcC0+eHNhdmVfeGNyMF9vZmZzZXQgPSBJMzg2X0xJTlVYX1hTQVZFX1hDUjBf T0ZGU0VUOwotKwotICAgc2V0X2dkYmFyY2hfcHJvY2Vzc19yZWNvcmQgKGdkYmFyY2gsIGkzODZf cHJvY2Vzc19yZWNvcmQpOwotICAgc2V0X2dkYmFyY2hfcHJvY2Vzc19yZWNvcmRfc2lnbmFsIChn ZGJhcmNoLCBpMzg2X2xpbnV4X3JlY29yZF9zaWduYWwpOwotIAotQEAgLTg0Myw0ICs5MDksNSBA QCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X3RkZXAgKHZvaWQpCi0gCi0gICAvKiBJbml0aWFsaXpl IHRoZSBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24gICovCi0gICBpbml0aWFsaXplX3RkZXNjX2kz ODZfbGludXggKCk7Ci0rICBpbml0aWFsaXplX3RkZXNjX2kzODZfYXZ4X2xpbnV4ICgpOwotIH0K LS0tLSAuL2dkYi9pMzg2LWxpbnV4LXRkZXAuaAkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAw MCArMDIwMAotKysrIC4vZ2RiL2kzODYtbGludXgtdGRlcC5oCTIwMTAtMDQtMDMgMjE6MTI6MzIu MDAwMDAwMDAwICswMjAwCi1AQCAtMzAsMTIgKzMwLDQxIEBACi0gLyogUmVnaXN0ZXIgbnVtYmVy IGZvciB0aGUgIm9yaWdfZWF4IiBwc2V1ZG8tcmVnaXN0ZXIuICBJZiB0aGlzCi0gICAgcHNldWRv LXJlZ2lzdGVyIGNvbnRhaW5zIGEgdmFsdWUgPj0gMCBpdCBpcyBpbnRlcnByZXRlZCBhcyB0aGUK LSAgICBzeXN0ZW0gY2FsbCBudW1iZXIgdGhhdCB0aGUga2VybmVsIGlzIHN1cHBvc2VkIHRvIHJl c3RhcnQuICAqLwotLSNkZWZpbmUgSTM4Nl9MSU5VWF9PUklHX0VBWF9SRUdOVU0gSTM4Nl9TU0Vf TlVNX1JFR1MKLSsjZGVmaW5lIEkzODZfTElOVVhfT1JJR19FQVhfUkVHTlVNIEkzODZfQVZYX05V TV9SRUdTCi0gCi0gLyogVG90YWwgbnVtYmVyIG9mIHJlZ2lzdGVycyBmb3IgR05VL0xpbnV4LiAg Ki8KLSAjZGVmaW5lIEkzODZfTElOVVhfTlVNX1JFR1MgKEkzODZfTElOVVhfT1JJR19FQVhfUkVH TlVNICsgMSkKLSAKLSsvKiBHZXQgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgeGNyMCBmcm9tIGNvcmUg ZHVtcC4gICovCi0rZXh0ZXJuIHVpbnQ2NF90IGkzODZfbGludXhfY29yZV9yZWFkX3hjcjAKLSsg IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgYmZk ICphYmZkKTsKLSsKLSAvKiBMaW51eCB0YXJnZXQgZGVzY3JpcHRpb24uICAqLwotIGV4dGVybiBz dHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRkZXNjX2kzODZfbGludXg7Ci0rZXh0ZXJuIHN0cnVjdCB0YXJn ZXRfZGVzYyAqdGRlc2NfaTM4Nl9hdnhfbGludXg7Ci0rCi0rLyogVXBkYXRlIFhTQVZFIGV4dGVu ZGVkIHN0YXRlIHJlZ2lzdGVyIG5vdGUgc2VjdGlvbi4gICovCi0rZXh0ZXJuIHZvaWQgaTM4Nl9s aW51eF91cGRhdGVfeHN0YXRlcmVnc2V0ICh1bnNpZ25lZCBpbnQgeHN0YXRlX3NpemUpOwotKwot Ky8qIEZvcm1hdCBvZiBYU0FWRSBleHRlbmRlZCBzdGF0ZSBpczoKLSsgCXN0cnVjdAotKwl7Ci0r CSAgZnhzYXZlX2J5dGVzWzAuLjQ2M10KLSsJICBzd191c2FibGVfYnl0ZXNbNDY0Li41MTFdCi0r CSAgeHN0YXRlX2hkcl9ieXRlc1s1MTIuLjU3NV0KLSsJICBhdnhfYnl0ZXNbNTc2Li44MzFdCi0r CSAgZnV0dXJlX3N0YXRlIGV0YwotKwl9OwotKwotKyAgU2FtZSBtZW1vcnkgbGF5b3V0IHdpbGwg YmUgdXNlZCBmb3IgdGhlIGNvcmVkdW1wIE5UX1g4Nl9YU1RBVEUKLSsgIHJlcHJlc2VudGluZyB0 aGUgWFNBVkUgZXh0ZW5kZWQgc3RhdGUgcmVnaXN0ZXJzLgotKwotKyAgVGhlIGZpcnN0IDggYnl0 ZXMgb2YgdGhlIHN3X3VzYWJsZV9ieXRlc1s0NjQuLjQ2N10gaXMgdGhlIE9TIGVuYWJsZWQKLSsg IGV4dGVuZGVkIHN0YXRlIG1hc2ssIHdoaWNoIGlzIHRoZSBzYW1lIGFzIHRoZSBleHRlbmRlZCBj b250cm9sIHJlZ2lzdGVyCi0rICAwICh0aGUgWEZFQVRVUkVfRU5BQkxFRF9NQVNLIHJlZ2lzdGVy KSwgWENSMC4gIFdlIGNhbiB1c2UgdGhpcyBtYXNrCi0rICB0b2dldGhlciB3aXRoIHRoZSBtYXNr IHNhdmVkIGluIHRoZSB4c3RhdGVfaGRyX2J5dGVzIHRvIGRldGVybWluZSB3aGF0Ci0rICBzdGF0 ZXMgdGhlIHByb2Nlc3Nvci9PUyBzdXBwb3J0cyBhbmQgd2hhdCBzdGF0ZSwgdXNlZCBvciBpbml0 aWFsaXplZCwKLSsgIHRoZSBwcm9jZXNzL3RocmVhZCBpcyBpbi4gICovIAotKyNkZWZpbmUgSTM4 Nl9MSU5VWF9YU0FWRV9YQ1IwX09GRlNFVCA0NjQKLSAKLSAjZW5kaWYgLyogaTM4Ni1saW51eC10 ZGVwLmggKi8KLS0tLSAuL2dkYi9pMzg2LXRkZXAuYwkyMDEwLTA0LTAzIDIxOjA5OjI5LjAwMDAw MDAwMCArMDIwMAotKysrIC4vZ2RiL2kzODYtdGRlcC5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAw MDAwMDAwICswMjAwCi1AQCAtNTEsMTEgKzUxLDEzIEBACi0gCi0gI2luY2x1ZGUgImkzODYtdGRl cC5oIgotICNpbmNsdWRlICJpMzg3LXRkZXAuaCIKLSsjaW5jbHVkZSAiaTM4Ni14c3RhdGUuaCIK LSAKLSAjaW5jbHVkZSAicmVjb3JkLmgiCi0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotICNpbmNs dWRlICJmZWF0dXJlcy9pMzg2L2kzODYuYyIKLSsjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2 LWF2eC5jIgotIAotIC8qIFJlZ2lzdGVyIG5hbWVzLiAgKi8KLSAKLUBAIC03NCw2ICs3NiwxOCBA QCBzdGF0aWMgY29uc3QgY2hhciAqaTM4Nl9yZWdpc3Rlcl9uYW1lc1tdCi0gICAibXhjc3IiCi0g fTsKLSAKLStzdGF0aWMgY29uc3QgY2hhciAqaTM4Nl95bW1fbmFtZXNbXSA9Ci0rewotKyAgInlt bTAiLCAgInltbTEiLCAgICJ5bW0yIiwgICJ5bW0zIiwKLSsgICJ5bW00IiwgICJ5bW01IiwgICAi eW1tNiIsICAieW1tNyIsCi0rfTsKLSsKLStzdGF0aWMgY29uc3QgY2hhciAqaTM4Nl95bW1oX25h bWVzW10gPQotK3sKLSsgICJ5bW0waCIsICAieW1tMWgiLCAgICJ5bW0yaCIsICAieW1tM2giLAot KyAgInltbTRoIiwgICJ5bW01aCIsICAgInltbTZoIiwgICJ5bW03aCIsCi0rfTsKLSsKLSAvKiBS ZWdpc3RlciBuYW1lcyBmb3IgTU1YIHBzZXVkby1yZWdpc3RlcnMuICAqLwotIAotIHN0YXRpYyBj b25zdCBjaGFyICppMzg2X21teF9uYW1lc1tdID0KLUBAIC0xNTAsMTggKzE2NCw0NyBAQCBpMzg2 X2R3b3JkX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCi0gICByZXR1cm4gcmVnbnVtID49 IDAgJiYgcmVnbnVtIDwgdGRlcC0+bnVtX2R3b3JkX3JlZ3M7Ci0gfQotIAotK2ludAotK2kzODZf eW1taF9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pCi0rewot KyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0r ICBpbnQgeW1tMGhfcmVnbnVtID0gdGRlcC0+eW1tMGhfcmVnbnVtOwotKwotKyAgaWYgKHltbTBo X3JlZ251bSA8IDApCi0rICAgIHJldHVybiAwOwotKwotKyAgcmVnbnVtIC09IHltbTBoX3JlZ251 bTsKLSsgIHJldHVybiByZWdudW0gPj0gMCAmJiByZWdudW0gPCB0ZGVwLT5udW1feW1tX3JlZ3M7 Ci0rfQotKwotKy8qIEFWWCByZWdpc3Rlcj8gICovCi0rCi0raW50Ci0raTM4Nl95bW1fcmVnbnVt X3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQotK3sKLSsgIHN0cnVjdCBn ZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgaW50IHltbTBf cmVnbnVtID0gdGRlcC0+eW1tMF9yZWdudW07Ci0rCi0rICBpZiAoeW1tMF9yZWdudW0gPCAwKQot KyAgICByZXR1cm4gMDsKLSsKLSsgIHJlZ251bSAtPSB5bW0wX3JlZ251bTsKLSsgIHJldHVybiBy ZWdudW0gPj0gMCAmJiByZWdudW0gPCB0ZGVwLT5udW1feW1tX3JlZ3M7Ci0rfQotKwotIC8qIFNT RSByZWdpc3Rlcj8gICovCi0gCi0tc3RhdGljIGludAotLWkzODZfc3NlX3JlZ251bV9wIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkKLStpbnQKLStpMzg2X3htbV9yZWdudW1f cCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pCi0gewotICAgc3RydWN0IGdk YmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0rICBpbnQgbnVtX3ht bV9yZWdzID0gSTM4N19OVU1fWE1NX1JFR1MgKHRkZXApOwotIAotLSAgaWYgKEkzODdfTlVNX1hN TV9SRUdTICh0ZGVwKSA9PSAwKQotKyAgaWYgKG51bV94bW1fcmVncyA9PSAwKQotICAgICByZXR1 cm4gMDsKLSAKLS0gIHJldHVybiAoSTM4N19YTU0wX1JFR05VTSAodGRlcCkgPD0gcmVnbnVtCi0t CSAgJiYgcmVnbnVtIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApKTsKLSsgIHJlZ251bSAtPSBJ Mzg3X1hNTTBfUkVHTlVNICh0ZGVwKTsKLSsgIHJldHVybiByZWdudW0gPj0gMCAmJiByZWdudW0g PCBudW1feG1tX3JlZ3M7Ci0gfQotIAotIHN0YXRpYyBpbnQKLUBAIC0yMDEsNiArMjQ0LDE5IEBA IGkzODZfZnBjX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXIKLSAJICAmJiByZWdudW0g PCBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKSk7Ci0gfQotIAotKy8qIFJldHVybiB0aGUgbmFtZSBv ZiByZWdpc3RlciBSRUdOVU0sIG9yIHRoZSBlbXB0eSBzdHJpbmcgaWYgaXQgaXMKLSsgICBhbiBh bm9ueW1vdXMgcmVnaXN0ZXIuICAqLwotKwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStpMzg2X3Jl Z2lzdGVyX25hbWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKQotK3sKLSsg IC8qIEhpZGUgdGhlIHVwcGVyIFlNTSByZWdpc3RlcnMuICAqLwotKyAgaWYgKGkzODZfeW1taF9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgcmV0dXJuICIiOwotKwotKyAgcmV0dXJu IHRkZXNjX3JlZ2lzdGVyX25hbWUgKGdkYmFyY2gsIHJlZ251bSk7Ci0rfQotKwotIC8qIFJldHVy biB0aGUgbmFtZSBvZiByZWdpc3RlciBSRUdOVU0uICAqLwotIAotIGNvbnN0IGNoYXIgKgotQEAg LTIwOSw2ICsyNjUsOCBAQCBpMzg2X3BzZXVkb19yZWdpc3Rlcl9uYW1lIChzdHJ1Y3QgZ2RiYXJj Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsK LSAgIGlmIChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSAgICAgcmV0dXJu IGkzODZfbW14X25hbWVzW3JlZ251bSAtIEkzODdfTU0wX1JFR05VTSAodGRlcCldOwotKyAgZWxz ZSBpZiAoaTM4Nl95bW1fcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rICAgIHJldHVybiBp Mzg2X3ltbV9uYW1lc1tyZWdudW0gLSB0ZGVwLT55bW0wX3JlZ251bV07Ci0gICBlbHNlIGlmIChp Mzg2X2J5dGVfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJldHVybiBpMzg2X2J5 dGVfbmFtZXNbcmVnbnVtIC0gdGRlcC0+YWxfcmVnbnVtXTsKLSAgIGVsc2UgaWYgKGkzODZfd29y ZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLUBAIC0yNDYsNyArMzA0LDEzIEBAIGkzODZf ZGJ4X3JlZ190b19yZWdudW0gKHN0cnVjdCBnZGJhcmNoICoKLSAgIGVsc2UgaWYgKHJlZyA+PSAy MSAmJiByZWcgPD0gMjgpCi0gICAgIHsKLSAgICAgICAvKiBTU0UgcmVnaXN0ZXJzLiAgKi8KLS0g ICAgICByZXR1cm4gcmVnIC0gMjEgKyBJMzg3X1hNTTBfUkVHTlVNICh0ZGVwKTsKLSsgICAgICBp bnQgeW1tMF9yZWdudW0gPSB0ZGVwLT55bW0wX3JlZ251bTsKLSsKLSsgICAgICBpZiAoeW1tMF9y ZWdudW0gPj0gMAotKwkgICYmIGkzODZfeG1tX3JlZ251bV9wIChnZGJhcmNoLCByZWcpKQotKwly ZXR1cm4gcmVnIC0gMjEgKyB5bW0wX3JlZ251bTsKLSsgICAgICBlbHNlCi0rCXJldHVybiByZWcg LSAyMSArIEkzODdfWE1NMF9SRUdOVU0gKHRkZXApOwotICAgICB9Ci0gICBlbHNlIGlmIChyZWcg Pj0gMjkgJiYgcmVnIDw9IDM2KQotICAgICB7Ci1AQCAtMjE4NCw2ICsyMjQ4LDU5IEBAIGkzODdf ZXh0X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgcmV0dXJuIHRkZXAtPmkzODdf ZXh0X3R5cGU7Ci0gfQotIAotKy8qIENvbnN0cnVjdCB2ZWN0b3IgdHlwZSBmb3IgcHNldWRvIFlN TSByZWdpc3RlcnMuICBXZSBjYW4ndCB1c2UKLSsgICB0ZGVzY19maW5kX3R5cGUgc2luY2UgWU1N IGlzbid0IGRlc2NyaWJlZCBpbiB0YXJnZXQgZGVzY3JpcHRpb24uICAqLwotKwotK3N0YXRpYyBz dHJ1Y3QgdHlwZSAqCi0raTM4Nl95bW1fdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0r ewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7 Ci0rCi0rICBpZiAoIXRkZXAtPmkzODZfeW1tX3R5cGUpCi0rICAgIHsKLSsgICAgICBjb25zdCBz dHJ1Y3QgYnVpbHRpbl90eXBlICpidCA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCk7Ci0rCi0rICAg ICAgLyogVGhlIHR5cGUgd2UncmUgYnVpbGRpbmcgaXMgdGhpczogKi8KLSsjaWYgMAotKyAgICAg IHVuaW9uIF9fZ2RiX2J1aWx0aW5fdHlwZV92ZWMyNTZpCi0rICAgICAgewotKyAgICAgICAgaW50 MTI4X3QgdWludDEyOFsyXTsKLSsgICAgICAgIGludDY0X3QgdjJfaW50NjRbNF07Ci0rICAgICAg ICBpbnQzMl90IHY0X2ludDMyWzhdOwotKyAgICAgICAgaW50MTZfdCB2OF9pbnQxNlsxNl07Ci0r ICAgICAgICBpbnQ4X3QgdjE2X2ludDhbMzJdOwotKyAgICAgICAgZG91YmxlIHYyX2RvdWJsZVs0 XTsKLSsgICAgICAgIGZsb2F0IHY0X2Zsb2F0WzhdOwotKyAgICAgIH07Ci0rI2VuZGlmCi0rCi0r ICAgICAgc3RydWN0IHR5cGUgKnQ7Ci0rCi0rICAgICAgdCA9IGFyY2hfY29tcG9zaXRlX3R5cGUg KGdkYmFyY2gsCi0rCQkJICAgICAgICJfX2dkYl9idWlsdGluX3R5cGVfdmVjMjU2aSIsIFRZUEVf Q09ERV9VTklPTik7Ci0rICAgICAgYXBwZW5kX2NvbXBvc2l0ZV90eXBlX2ZpZWxkICh0LCAidjhf ZmxvYXQiLAotKwkJCQkgICBpbml0X3ZlY3Rvcl90eXBlIChidC0+YnVpbHRpbl9mbG9hdCwgOCkp OwotKyAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodCwgInY0X2RvdWJsZSIsCi0r CQkJCSAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5idWlsdGluX2RvdWJsZSwgNCkpOwotKyAgICAg IGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodCwgInYzMl9pbnQ4IiwKLSsJCQkJICAgaW5p dF92ZWN0b3JfdHlwZSAoYnQtPmJ1aWx0aW5faW50OCwgMzIpKTsKLSsgICAgICBhcHBlbmRfY29t cG9zaXRlX3R5cGVfZmllbGQgKHQsICJ2MTZfaW50MTYiLAotKwkJCQkgICBpbml0X3ZlY3Rvcl90 eXBlIChidC0+YnVpbHRpbl9pbnQxNiwgMTYpKTsKLSsgICAgICBhcHBlbmRfY29tcG9zaXRlX3R5 cGVfZmllbGQgKHQsICJ2OF9pbnQzMiIsCi0rCQkJCSAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5i dWlsdGluX2ludDMyLCA4KSk7Ci0rICAgICAgYXBwZW5kX2NvbXBvc2l0ZV90eXBlX2ZpZWxkICh0 LCAidjRfaW50NjQiLAotKwkJCQkgICBpbml0X3ZlY3Rvcl90eXBlIChidC0+YnVpbHRpbl9pbnQ2 NCwgNCkpOwotKyAgICAgIGFwcGVuZF9jb21wb3NpdGVfdHlwZV9maWVsZCAodCwgInYyX2ludDEy OCIsCi0rCQkJCSAgIGluaXRfdmVjdG9yX3R5cGUgKGJ0LT5idWlsdGluX2ludDEyOCwgMikpOwot KwotKyAgICAgIFRZUEVfVkVDVE9SICh0KSA9IDE7Ci0rICAgICAgVFlQRV9OQU1FICh0KSA9ICJi dWlsdGluX3R5cGVfdmVjMTI4aSI7Ci0rICAgICAgdGRlcC0+aTM4Nl95bW1fdHlwZSA9IHQ7Ci0r ICAgIH0KLSsKLSsgIHJldHVybiB0ZGVwLT5pMzg2X3ltbV90eXBlOwotK30KLSsKLSAvKiBDb25z dHJ1Y3QgdmVjdG9yIHR5cGUgZm9yIE1NWCByZWdpc3RlcnMuICAqLwotIHN0YXRpYyBzdHJ1Y3Qg dHlwZSAqCi0gaTM4Nl9tbXhfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi1AQCAtMjIz NCw2ICsyMzUxLDggQEAgaTM4Nl9wc2V1ZG9fcmVnaXN0ZXJfdHlwZSAoc3RydWN0IGdkYmFyYwot IHsKLSAgIGlmIChpMzg2X21teF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSAgICAgcmV0 dXJuIGkzODZfbW14X3R5cGUgKGdkYmFyY2gpOwotKyAgZWxzZSBpZiAoaTM4Nl95bW1fcmVnbnVt X3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rICAgIHJldHVybiBpMzg2X3ltbV90eXBlIChnZGJhcmNo KTsKLSAgIGVsc2UKLSAgICAgewotICAgICAgIGNvbnN0IHN0cnVjdCBidWlsdGluX3R5cGUgKmJ0 ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKTsKLUBAIC0yMjg1LDcgKzI0MDQsMjIgQEAgaTM4Nl9w c2V1ZG9fcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGdkYmFyYwotICAgICB7Ci0gICAgICAgc3RydWN0 IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0gCi0tICAgICAg aWYgKGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgICBpZiAoaTM4 Nl95bW1fcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rCXsKLSsJICByZWdudW0gLT0gdGRl cC0+eW1tMF9yZWdudW07Ci0rCi0rCSAgLyogRXh0cmFjdCAoYWx3YXlzIGxpdHRsZSBlbmRpYW4p LiAgUmVhZCBsb3dlciAxMjhiaXRzLiAqLwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNo ZSwKLSsJCQkgICAgIEkzODdfWE1NMF9SRUdOVU0gKHRkZXApICsgcmVnbnVtLAotKwkJCSAgICAg cmF3X2J1Zik7Ci0rCSAgbWVtY3B5IChidWYsIHJhd19idWYsIDE2KTsKLSsJICAvKiBSZWFkIHVw cGVyIDEyOGJpdHMuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwKLSsJCQkg ICAgIHRkZXAtPnltbTBoX3JlZ251bSArIHJlZ251bSwKLSsJCQkgICAgIHJhd19idWYpOwotKwkg IG1lbWNweSAoYnVmICsgMTYsIHJhd19idWYsIDE2KTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKGkz ODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSAJewotIAkgIGludCBncG51bSA9 IHJlZ251bSAtIHRkZXAtPmF4X3JlZ251bTsKLSAKLUBAIC0yMzM0LDcgKzI0NjgsMjAgQEAgaTM4 Nl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUgKHN0cnVjdCBnZGJhcgotICAgICB7Ci0gICAgICAgc3Ry dWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7Ci0gCi0tICAg ICAgaWYgKGkzODZfd29yZF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKLSsgICAgICBpZiAo aTM4Nl95bW1fcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0rCXsKLSsJICByZWdudW0gLT0g dGRlcC0+eW1tMF9yZWdudW07Ci0rCi0rCSAgLyogLi4uIFdyaXRlIGxvd2VyIDEyOGJpdHMuICAq LwotKwkgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2FjaGUsCi0rCQkJICAgICBJMzg3X1hNTTBf UkVHTlVNICh0ZGVwKSArIHJlZ251bSwKLSsJCQkgICAgIGJ1Zik7Ci0rCSAgLyogLi4uIFdyaXRl IHVwcGVyIDEyOGJpdHMuICAqLwotKwkgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2FjaGUsCi0r CQkJICAgICB0ZGVwLT55bW0waF9yZWdudW0gKyByZWdudW0sCi0rCQkJICAgICBidWYgKyAxNik7 Ci0rCX0KLSsgICAgICBlbHNlIGlmIChpMzg2X3dvcmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251 bSkpCi0gCXsKLSAJICBpbnQgZ3BudW0gPSByZWdudW0gLSB0ZGVwLT5heF9yZWdudW07Ci0gCi1A QCAtMjU4MSw2ICsyNzI4LDI4IEBAIGkzODZfY29sbGVjdF9mcHJlZ3NldCAoY29uc3Qgc3RydWN0 IHJlZ3MKLSAgIGkzODdfY29sbGVjdF9mc2F2ZSAocmVnY2FjaGUsIHJlZ251bSwgZnByZWdzKTsK LSB9Ci0gCi0rLyogU2ltaWxhciB0byBpMzg2X3N1cHBseV9mcHJlZ3NldCwgYnV0IHVzZSBYU0FW RSBleHRlbmRlZCBzdGF0ZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpMzg2X3N1cHBseV94c3Rh dGVyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwKLSsJCQkgIHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsIGludCByZWdudW0sCi0rCQkJICBjb25zdCB2b2lkICp4c3RhdGVyZWdz LCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBn ZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7Ci0rICBpMzg3X3N1cHBseV94c2F2ZSAocmVnY2Fj aGUsIHJlZ251bSwgeHN0YXRlcmVncyk7Ci0rfQotKwotKy8qIFNpbWlsYXIgdG8gaTM4Nl9jb2xs ZWN0X2ZwcmVnc2V0ICwgYnV0IHVzZSBYU0FWRSBleHRlbmRlZCBzdGF0ZS4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStpMzg2X2NvbGxlY3RfeHN0YXRlcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0 ICpyZWdzZXQsCi0rCQkJICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsJCQkg ICBpbnQgcmVnbnVtLCB2b2lkICp4c3RhdGVyZWdzLCBzaXplX3QgbGVuKQotK3sKLSsgIGNvbnN0 IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7 Ci0rICBpMzg3X2NvbGxlY3RfeHNhdmUgKHJlZ2NhY2hlLCByZWdudW0sIHhzdGF0ZXJlZ3MsIDEp OwotK30KLSsKLSAvKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIHNldCBmb3IgdGhl IGNvcmUgc2VjdGlvbiBpZGVudGlmaWVkCi0gICAgYnkgU0VDVF9OQU1FIGFuZCBTRUNUX1NJWkUu ICAqLwotIAotQEAgLTI2MDgsNiArMjc3NywxNiBAQCBpMzg2X3JlZ3NldF9mcm9tX2NvcmVfc2Vj dGlvbiAoc3RydWN0IGdkCi0gICAgICAgcmV0dXJuIHRkZXAtPmZwcmVnc2V0OwotICAgICB9Ci0g Ci0rICBpZiAoc3RyY21wIChzZWN0X25hbWUsICIucmVnLXhzdGF0ZSIpID09IDApCi0rICAgIHsK LSsgICAgICBpZiAodGRlcC0+eHN0YXRlcmVnc2V0ID09IE5VTEwpCi0rCXRkZXAtPnhzdGF0ZXJl Z3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwKLSsJCQkJCSAgIGkzODZfc3VwcGx5X3hzdGF0 ZXJlZ3NldCwKLSsJCQkJCSAgIGkzODZfY29sbGVjdF94c3RhdGVyZWdzZXQpOwotKwotKyAgICAg IHJldHVybiB0ZGVwLT54c3RhdGVyZWdzZXQ7Ci0rICAgIH0KLSsKLSAgIHJldHVybiBOVUxMOwot IH0KLSAMCi1AQCAtMjgwMSw0NiArMjk4MCw2MCBAQCBpbnQKLSBpMzg2X3JlZ2lzdGVyX3JlZ2dy b3VwX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAotIAkJCSAgc3RydWN0 IHJlZ2dyb3VwICpncm91cCkKLSB7Ci0tICBpbnQgc3NlX3JlZ251bV9wLCBmcF9yZWdudW1fcCwg bW14X3JlZ251bV9wLCBieXRlX3JlZ251bV9wLAotLSAgICAgIHdvcmRfcmVnbnVtX3AsIGR3b3Jk X3JlZ251bV9wOwotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hf dGRlcCAoZ2RiYXJjaCk7Ci0rICBpbnQgZnBfcmVnbnVtX3AsIG1teF9yZWdudW1fcCwgeG1tX3Jl Z251bV9wLCBteGNzcl9yZWdudW1fcCwKLSsgICAgICB5bW1fcmVnbnVtX3AsIHltbWhfcmVnbnVt X3A7Ci0gCi0gICAvKiBEb24ndCBpbmNsdWRlIHBzZXVkbyByZWdpc3RlcnMsIGV4Y2VwdCBmb3Ig TU1YLCBpbiBhbnkgcmVnaXN0ZXIKLSAgICAgIGdyb3Vwcy4gICovCi0tICBieXRlX3JlZ251bV9w ID0gaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pOwotLSAgaWYgKGJ5dGVfcmVn bnVtX3ApCi0rICBpZiAoaTM4Nl9ieXRlX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pKQotICAg ICByZXR1cm4gMDsKLSAKLS0gIHdvcmRfcmVnbnVtX3AgPSBpMzg2X3dvcmRfcmVnbnVtX3AgKGdk YmFyY2gsIHJlZ251bSk7Ci0tICBpZiAod29yZF9yZWdudW1fcCkKLSsgIGlmIChpMzg2X3dvcmRf cmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkpCi0gICAgIHJldHVybiAwOwotIAotLSAgZHdvcmRf cmVnbnVtX3AgPSBpMzg2X2R3b3JkX3JlZ251bV9wIChnZGJhcmNoLCByZWdudW0pOwotLSAgaWYg KGR3b3JkX3JlZ251bV9wKQotKyAgaWYgKGkzODZfZHdvcmRfcmVnbnVtX3AgKGdkYmFyY2gsIHJl Z251bSkpCi0gICAgIHJldHVybiAwOwotIAotICAgbW14X3JlZ251bV9wID0gaTM4Nl9tbXhfcmVn bnVtX3AgKGdkYmFyY2gsIHJlZ251bSk7Ci0gICBpZiAoZ3JvdXAgPT0gaTM4Nl9tbXhfcmVnZ3Jv dXApCi0gICAgIHJldHVybiBtbXhfcmVnbnVtX3A7Ci0gCi0tICBzc2VfcmVnbnVtX3AgPSAoaTM4 Nl9zc2VfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkKLS0JCSAgfHwgaTM4Nl9teGNzcl9yZWdu dW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0rICB4bW1fcmVnbnVtX3AgPSBpMzg2X3htbV9yZWdu dW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsKLSsgIG14Y3NyX3JlZ251bV9wID0gaTM4Nl9teGNzcl9y ZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsKLSAgIGlmIChncm91cCA9PSBpMzg2X3NzZV9yZWdn cm91cCkKLS0gICAgcmV0dXJuIHNzZV9yZWdudW1fcDsKLSsgICAgcmV0dXJuIHhtbV9yZWdudW1f cCB8fCBteGNzcl9yZWdudW1fcDsKLSsKLSsgIHltbV9yZWdudW1fcCA9IGkzODZfeW1tX3JlZ251 bV9wIChnZGJhcmNoLCByZWdudW0pOwotICAgaWYgKGdyb3VwID09IHZlY3Rvcl9yZWdncm91cCkK LS0gICAgcmV0dXJuIG1teF9yZWdudW1fcCB8fCBzc2VfcmVnbnVtX3A7Ci0rICAgIHJldHVybiAo bW14X3JlZ251bV9wCi0rCSAgICB8fCB5bW1fcmVnbnVtX3AKLSsJICAgIHx8IG14Y3NyX3JlZ251 bV9wCi0rCSAgICB8fCAoeG1tX3JlZ251bV9wCi0rCQkmJiAoKHRkZXAtPnhjcjAgJiBJMzg2X1hT VEFURV9BVlhfTUFTSykKLSsJCSAgICA9PSBJMzg2X1hTVEFURV9TU0VfTUFTSykpKTsKLSAKLSAg IGZwX3JlZ251bV9wID0gKGkzODZfZnBfcmVnbnVtX3AgKGdkYmFyY2gsIHJlZ251bSkKLSAJCSB8 fCBpMzg2X2ZwY19yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSk7Ci0gICBpZiAoZ3JvdXAgPT0g ZmxvYXRfcmVnZ3JvdXApCi0gICAgIHJldHVybiBmcF9yZWdudW1fcDsKLSAKLSsgIC8qIEZvciAi aW5mbyByZWcgYWxsIiwgZG9uJ3QgaW5jbHVkZSB1cHBlciBZTU0gcmVnaXN0ZXJzIG5vciBYTU0K LSsgICAgIHJlZ2lzdGVycyB3aGVuIEFWWCBpcyBzdXBwb3J0ZWQuICAqLwotKyAgeW1taF9yZWdu dW1fcCA9IGkzODZfeW1taF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKTsKLSsgIGlmIChncm91 cCA9PSBhbGxfcmVnZ3JvdXAKLSsgICAgICAmJiAoKHhtbV9yZWdudW1fcAotKwkgICAmJiAodGRl cC0+eGNyMCAmIEkzODZfWFNUQVRFX0FWWCkpCi0rCSAgfHwgeW1taF9yZWdudW1fcCkpCi0rICAg IHJldHVybiAwOwotKwotICAgaWYgKGdyb3VwID09IGdlbmVyYWxfcmVnZ3JvdXApCi0gICAgIHJl dHVybiAoIWZwX3JlZ251bV9wCi0gCSAgICAmJiAhbW14X3JlZ251bV9wCi0tCSAgICAmJiAhc3Nl X3JlZ251bV9wCi0tCSAgICAmJiAhYnl0ZV9yZWdudW1fcAotLQkgICAgJiYgIXdvcmRfcmVnbnVt X3AKLS0JICAgICYmICFkd29yZF9yZWdudW1fcCk7Ci0rCSAgICAmJiAhbXhjc3JfcmVnbnVtX3AK LSsJICAgICYmICF4bW1fcmVnbnVtX3AKLSsJICAgICYmICF5bW1fcmVnbnVtX3AKLSsJICAgICYm ICF5bW1oX3JlZ251bV9wKTsKLSAKLSAgIHJldHVybiBkZWZhdWx0X3JlZ2lzdGVyX3JlZ2dyb3Vw X3AgKGdkYmFyY2gsIHJlZ251bSwgZ3JvdXApOwotIH0KLUBAIC01NjUwLDcgKzU4NDMsOCBAQCBp Mzg2X3ZhbGlkYXRlX3RkZXNjX3AgKHN0cnVjdCBnZGJhcmNoX3RkCi0gCQkgICAgICAgc3RydWN0 IHRkZXNjX2FyY2hfZGF0YSAqdGRlc2NfZGF0YSkKLSB7Ci0gICBjb25zdCBzdHJ1Y3QgdGFyZ2V0 X2Rlc2MgKnRkZXNjID0gdGRlcC0+dGRlc2M7Ci0tICBjb25zdCBzdHJ1Y3QgdGRlc2NfZmVhdHVy ZSAqZmVhdHVyZV9jb3JlLCAqZmVhdHVyZV92ZWN0b3I7Ci0rICBjb25zdCBzdHJ1Y3QgdGRlc2Nf ZmVhdHVyZSAqZmVhdHVyZV9jb3JlOwotKyAgY29uc3Qgc3RydWN0IHRkZXNjX2ZlYXR1cmUgKmZl YXR1cmVfc3NlLCAqZmVhdHVyZV9hdng7Ci0gICBpbnQgaSwgbnVtX3JlZ3MsIHZhbGlkX3A7Ci0g Ci0gICBpZiAoISB0ZGVzY19oYXNfcmVnaXN0ZXJzICh0ZGVzYykpCi1AQCAtNTY2MCwxMyArNTg1 NCwzNyBAQCBpMzg2X3ZhbGlkYXRlX3RkZXNjX3AgKHN0cnVjdCBnZGJhcmNoX3RkCi0gICBmZWF0 dXJlX2NvcmUgPSB0ZGVzY19maW5kX2ZlYXR1cmUgKHRkZXNjLCAib3JnLmdudS5nZGIuaTM4Ni5j b3JlIik7Ci0gCi0gICAvKiBHZXQgU1NFIHJlZ2lzdGVycy4gICovCi0tICBmZWF0dXJlX3ZlY3Rv ciA9IHRkZXNjX2ZpbmRfZmVhdHVyZSAodGRlc2MsICJvcmcuZ251LmdkYi5pMzg2LnNzZSIpOwot KyAgZmVhdHVyZV9zc2UgPSB0ZGVzY19maW5kX2ZlYXR1cmUgKHRkZXNjLCAib3JnLmdudS5nZGIu aTM4Ni5zc2UiKTsKLSAKLS0gIGlmIChmZWF0dXJlX2NvcmUgPT0gTlVMTCB8fCBmZWF0dXJlX3Zl Y3RvciA9PSBOVUxMKQotKyAgaWYgKGZlYXR1cmVfY29yZSA9PSBOVUxMIHx8IGZlYXR1cmVfc3Nl ID09IE5VTEwpCi0gICAgIHJldHVybiAwOwotIAotKyAgLyogVHJ5IEFWWCByZWdpc3RlcnMuICAq LwotKyAgZmVhdHVyZV9hdnggPSB0ZGVzY19maW5kX2ZlYXR1cmUgKHRkZXNjLCAib3JnLmdudS5n ZGIuaTM4Ni5hdngiKTsKLSsKLSAgIHZhbGlkX3AgPSAxOwotIAotKyAgLyogVGhlIFhDUjAgYml0 cy4gICovCi0rICBpZiAoZmVhdHVyZV9hdngpCi0rICAgIHsKLSsgICAgICB0ZGVwLT54Y3IwID0g STM4Nl9YU1RBVEVfQVZYX01BU0s7Ci0rCi0rICAgICAgLyogSXQgbWF5IGhhdmUgYmVlbiBzZXQg YnkgT1NBQkkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uICAqLwotKyAgICAgIGlmICh0ZGVwLT5u dW1feW1tX3JlZ3MgPT0gMCkKLSsJewotKwkgIHRkZXAtPnltbWhfcmVnaXN0ZXJfbmFtZXMgPSBp Mzg2X3ltbWhfbmFtZXM7Ci0rCSAgdGRlcC0+bnVtX3ltbV9yZWdzID0gODsKLSsJICB0ZGVwLT55 bW0waF9yZWdudW0gPSBJMzg2X1lNTTBIX1JFR05VTTsKLSsJfQotKwotKyAgICAgIGZvciAoaSA9 IDA7IGkgPCB0ZGVwLT5udW1feW1tX3JlZ3M7IGkrKykKLSsJdmFsaWRfcCAmPSB0ZGVzY19udW1i ZXJlZF9yZWdpc3RlciAoZmVhdHVyZV9hdngsIHRkZXNjX2RhdGEsCi0rCQkJCQkgICAgdGRlcC0+ eW1tMGhfcmVnbnVtICsgaSwKLSsJCQkJCSAgICB0ZGVwLT55bW1oX3JlZ2lzdGVyX25hbWVzW2ld KTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB0ZGVwLT54Y3IwID0gSTM4Nl9YU1RBVEVfU1NFX01B U0s7Ci0rCi0gICBudW1fcmVncyA9IHRkZXAtPm51bV9jb3JlX3JlZ3M7Ci0gICBmb3IgKGkgPSAw OyBpIDwgbnVtX3JlZ3M7IGkrKykKLSAgICAgdmFsaWRfcCAmPSB0ZGVzY19udW1iZXJlZF9yZWdp c3RlciAoZmVhdHVyZV9jb3JlLCB0ZGVzY19kYXRhLCBpLAotQEAgLTU2NzUsNyArNTg5Myw3IEBA IGkzODZfdmFsaWRhdGVfdGRlc2NfcCAoc3RydWN0IGdkYmFyY2hfdGQKLSAgIC8qIE5lZWQgdG8g aW5jbHVkZSAlbXhjc3IsIHNvIGFkZCBvbmUuICAqLwotICAgbnVtX3JlZ3MgKz0gdGRlcC0+bnVt X3htbV9yZWdzICsgMTsKLSAgIGZvciAoOyBpIDwgbnVtX3JlZ3M7IGkrKykKLS0gICAgdmFsaWRf cCAmPSB0ZGVzY19udW1iZXJlZF9yZWdpc3RlciAoZmVhdHVyZV92ZWN0b3IsIHRkZXNjX2RhdGEs IGksCi0rICAgIHZhbGlkX3AgJj0gdGRlc2NfbnVtYmVyZWRfcmVnaXN0ZXIgKGZlYXR1cmVfc3Nl LCB0ZGVzY19kYXRhLCBpLAotIAkJCQkJdGRlcC0+cmVnaXN0ZXJfbmFtZXNbaV0pOwotIAotICAg cmV0dXJuIHZhbGlkX3A7Ci1AQCAtNTY5MCw2ICs1OTA4LDcgQEAgaTM4Nl9nZGJhcmNoX2luaXQg KHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAgc3RydWN0IHRkZXNjX2FyY2hfZGF0YSAqdGRlc2Nf ZGF0YTsKLSAgIGNvbnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2M7Ci0gICBpbnQgbW0wX3Jl Z251bTsKLSsgIGludCB5bW0wX3JlZ251bTsKLSAKLSAgIC8qIElmIHRoZXJlIGlzIGFscmVhZHkg YSBjYW5kaWRhdGUsIHVzZSBpdC4gICovCi0gICBhcmNoZXMgPSBnZGJhcmNoX2xpc3RfbG9va3Vw X2J5X2luZm8gKGFyY2hlcywgJmluZm8pOwotQEAgLTU3MTAsNiArNTkyOSw4IEBAIGkzODZfZ2Ri YXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGkKLSAgIHRkZXAtPmZwcmVnc2V0ID0gTlVM TDsKLSAgIHRkZXAtPnNpemVvZl9mcHJlZ3NldCA9IEkzODdfU0laRU9GX0ZTQVZFOwotIAotKyAg dGRlcC0+eHN0YXRlcmVnc2V0ID0gTlVMTDsKLSsKLSAgIC8qIFRoZSBkZWZhdWx0IHNldHRpbmdz IGluY2x1ZGUgdGhlIEZQVSByZWdpc3RlcnMsIHRoZSBNTVggcmVnaXN0ZXJzCi0gICAgICBhbmQg dGhlIFNTRSByZWdpc3RlcnMuICBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGZvciBhIHNwZWNpZmlj IEFCSQotICAgICAgYnkgYWRqdXN0aW5nIHRoZSBtZW1iZXJzIGBzdDBfcmVnbnVtJywgYG1tMF9y ZWdudW0nIGFuZAotQEAgLTU3NDIsNiArNTk2Myw4IEBAIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1 Y3QgZ2RiYXJjaF9pbmZvIGkKLSAgIC8qIFVud2luZGluZyBzdG9wcyBvbiBpMzg2IGF1dG9tYXRp Y2FsbHkuICAqLwotICAgdGRlcC0+b3V0ZXJtb3N0X2ZyYW1lX3AgPSBOVUxMOwotIAotKyAgdGRl cC0+eHNhdmVfeGNyMF9vZmZzZXQgPSAtMTsKLSsKLSAgIHRkZXAtPnJlY29yZF9yZWdtYXAgPSBp Mzg2X3JlY29yZF9yZWdtYXA7Ci0gCi0gICAvKiBUaGUgZm9ybWF0IHVzZWQgZm9yIGBsb25nIGRv dWJsZScgb24gYWxtb3N0IGFsbCBpMzg2IHRhcmdldHMgaXMKLUBAIC01ODU4LDkgKzYwODEsMTQg QEAgaTM4Nl9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQotICAgc2V0X3RkZXNj X3BzZXVkb19yZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBpMzg2X3BzZXVkb19yZWdpc3Rlcl90eXBl KTsKLSAgIHNldF90ZGVzY19wc2V1ZG9fcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgaTM4Nl9wc2V1 ZG9fcmVnaXN0ZXJfbmFtZSk7Ci0gCi0tICAvKiBUaGUgZGVmYXVsdCBBQkkgaW5jbHVkZXMgZ2Vu ZXJhbC1wdXJwb3NlIHJlZ2lzdGVycywgCi0tICAgICBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMs IGFuZCB0aGUgU1NFIHJlZ2lzdGVycy4gICovCi0tICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2Ri YXJjaCwgSTM4Nl9TU0VfTlVNX1JFR1MpOwotKyAgLyogT3ZlcnJpZGUgdGhlIG5vcm1hbCB0YXJn ZXQgZGVzY3JpcHRpb24gbWV0aG9kIHRvIG1ha2UgdGhlIEFWWAotKyAgICAgdXBwZXIgaGFsdmVz IGFub255bW91cy4gICovCi0rICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lIChnZGJhcmNoLCBp Mzg2X3JlZ2lzdGVyX25hbWUpOwotKwotKyAgLyogRXZlbiB0aG91Z2ggdGhlIGRlZmF1bHQgQUJJ IG9ubHkgaW5jbHVkZXMgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycywKLSsgICAgIGZsb2F0aW5n LXBvaW50IHJlZ2lzdGVycyBhbmQgdGhlIFNTRSByZWdpc3RlcnMsIHdlIGhhdmUgdG8gbGVhdmUg YQotKyAgICAgZ2FwIGZvciB0aGUgdXBwZXIgQVZYIHJlZ2lzdGVycy4gICovCi0rICBzZXRfZ2Ri YXJjaF9udW1fcmVncyAoZ2RiYXJjaCwgSTM4Nl9BVlhfTlVNX1JFR1MpOwotIAotICAgLyogR2V0 IHRoZSB4ODYgdGFyZ2V0IGRlc2NyaXB0aW9uIGZyb20gSU5GTy4gICovCi0gICB0ZGVzYyA9IGlu Zm8udGFyZ2V0X2Rlc2M7Ci1AQCAtNTg3MSwxMCArNjA5OSwxNSBAQCBpMzg2X2dkYmFyY2hfaW5p dCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gICB0ZGVwLT5udW1fY29yZV9yZWdzID0gSTM4Nl9O VU1fR1JFR1MgKyBJMzg3X05VTV9SRUdTOwotICAgdGRlcC0+cmVnaXN0ZXJfbmFtZXMgPSBpMzg2 X3JlZ2lzdGVyX25hbWVzOwotIAotKyAgLyogTm8gdXBwZXIgWU1NIHJlZ2lzdGVycy4gICovCi0r ICB0ZGVwLT55bW1oX3JlZ2lzdGVyX25hbWVzID0gTlVMTDsKLSsgIHRkZXAtPnltbTBoX3JlZ251 bSA9IC0xOwotKwotICAgdGRlcC0+bnVtX2J5dGVfcmVncyA9IDg7Ci0gICB0ZGVwLT5udW1fd29y ZF9yZWdzID0gODsKLSAgIHRkZXAtPm51bV9kd29yZF9yZWdzID0gMDsKLSAgIHRkZXAtPm51bV9t bXhfcmVncyA9IDg7Ci0rICB0ZGVwLT5udW1feW1tX3JlZ3MgPSAwOwotIAotICAgdGRlc2NfZGF0 YSA9IHRkZXNjX2RhdGFfYWxsb2MgKCk7Ci0gCi1AQCAtNTg4MiwyNCArNjExNSwyNSBAQCBpMzg2 X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gICBpbmZvLnRkZXBfaW5mbyA9 ICh2b2lkICopIHRkZXNjX2RhdGE7Ci0gICBnZGJhcmNoX2luaXRfb3NhYmkgKGluZm8sIGdkYmFy Y2gpOwotIAotKyAgaWYgKCFpMzg2X3ZhbGlkYXRlX3RkZXNjX3AgKHRkZXAsIHRkZXNjX2RhdGEp KQotKyAgICB7Ci0rICAgICAgdGRlc2NfZGF0YV9jbGVhbnVwICh0ZGVzY19kYXRhKTsKLSsgICAg ICB4ZnJlZSAodGRlcCk7Ci0rICAgICAgZ2RiYXJjaF9mcmVlIChnZGJhcmNoKTsKLSsgICAgICBy ZXR1cm4gTlVMTDsKLSsgICAgfQotKwotICAgLyogV2lyZSBpbiBwc2V1ZG8gcmVnaXN0ZXJzLiAg TnVtYmVyIG9mIHBzZXVkbyByZWdpc3RlcnMgbWF5IGJlCi0gICAgICBjaGFuZ2VkLiAgKi8KLSAg IHNldF9nZGJhcmNoX251bV9wc2V1ZG9fcmVncyAoZ2RiYXJjaCwgKHRkZXAtPm51bV9ieXRlX3Jl Z3MKLSAJCQkJCSArIHRkZXAtPm51bV93b3JkX3JlZ3MKLSAJCQkJCSArIHRkZXAtPm51bV9kd29y ZF9yZWdzCi0tCQkJCQkgKyB0ZGVwLT5udW1fbW14X3JlZ3MpKTsKLSsJCQkJCSArIHRkZXAtPm51 bV9tbXhfcmVncwotKwkJCQkJICsgdGRlcC0+bnVtX3ltbV9yZWdzKSk7Ci0gCi0gICAvKiBUYXJn ZXQgZGVzY3JpcHRpb24gbWF5IGJlIGNoYW5nZWQuICAqLwotICAgdGRlc2MgPSB0ZGVwLT50ZGVz YzsKLSAKLS0gIGlmICghaTM4Nl92YWxpZGF0ZV90ZGVzY19wICh0ZGVwLCB0ZGVzY19kYXRhKSkK LS0gICAgewotLSAgICAgIHRkZXNjX2RhdGFfY2xlYW51cCAodGRlc2NfZGF0YSk7Ci0tICAgICAg eGZyZWUgKHRkZXApOwotLSAgICAgIGdkYmFyY2hfZnJlZSAoZ2RiYXJjaCk7Ci0tICAgICAgcmV0 dXJuIE5VTEw7Ci0tICAgIH0KLS0KLSAgIHRkZXNjX3VzZV9yZWdpc3RlcnMgKGdkYmFyY2gsIHRk ZXNjLCB0ZGVzY19kYXRhKTsKLSAKLSAgIC8qIE92ZXJyaWRlIGdkYmFyY2hfcmVnaXN0ZXJfcmVn Z3JvdXBfcCBzZXQgaW4gdGRlc2NfdXNlX3JlZ2lzdGVycy4gICovCi1AQCAtNTkwOSwxNiArNjE0 MywyNiBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpCi0gICB0ZGVw LT5hbF9yZWdudW0gPSBnZGJhcmNoX251bV9yZWdzIChnZGJhcmNoKTsKLSAgIHRkZXAtPmF4X3Jl Z251bSA9IHRkZXAtPmFsX3JlZ251bSArIHRkZXAtPm51bV9ieXRlX3JlZ3M7Ci0gCi0tICBtbTBf cmVnbnVtID0gdGRlcC0+YXhfcmVnbnVtICsgdGRlcC0+bnVtX3dvcmRfcmVnczsKLSsgIHltbTBf cmVnbnVtID0gdGRlcC0+YXhfcmVnbnVtICsgdGRlcC0+bnVtX3dvcmRfcmVnczsKLSAgIGlmICh0 ZGVwLT5udW1fZHdvcmRfcmVncykKLSAgICAgewotICAgICAgIC8qIFN1cHBvcnQgZHdvcmQgcHNl dWRvLXJlZ2lzdGVzciBpZiBpdCBoYXNuJ3QgYmVlbiBkaXNhYmxlZCwgICovCi0tICAgICAgdGRl cC0+ZWF4X3JlZ251bSA9IG1tMF9yZWdudW07Ci0tICAgICAgbW0wX3JlZ251bSA9IHRkZXAtPmVh eF9yZWdudW0gKyB0ZGVwLT5udW1fZHdvcmRfcmVnczsKLSsgICAgICB0ZGVwLT5lYXhfcmVnbnVt ID0geW1tMF9yZWdudW07Ci0rICAgICAgeW1tMF9yZWdudW0gKz0gdGRlcC0+bnVtX2R3b3JkX3Jl Z3M7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgdGRlcC0+ZWF4X3JlZ251bSA9IC0xOwotIAotKyAg bW0wX3JlZ251bSA9IHltbTBfcmVnbnVtOwotKyAgaWYgKHRkZXAtPm51bV95bW1fcmVncykKLSsg ICAgewotKyAgICAgIC8qIFN1cHBvcnQgWU1NIHBzZXVkby1yZWdpc3Rlc3IgaWYgaXQgaXMgYXZh aWxhYmxlLCAgKi8KLSsgICAgICB0ZGVwLT55bW0wX3JlZ251bSA9IHltbTBfcmVnbnVtOwotKyAg ICAgIG1tMF9yZWdudW0gKz0gdGRlcC0+bnVtX3ltbV9yZWdzOwotKyAgICB9Ci0rICBlbHNlCi0r ICAgIHRkZXAtPnltbTBfcmVnbnVtID0gLTE7Ci0rCi0gICBpZiAodGRlcC0+bnVtX21teF9yZWdz ICE9IDApCi0gICAgIHsKLSAgICAgICAvKiBTdXBwb3J0IE1NWCBwc2V1ZG8tcmVnaXN0ZXNyIGlm IE1NWCBoYXNuJ3QgYmVlbiBkaXNhYmxlZCwgICovCi1AQCAtNjAwMSw2ICs2MjQ1LDcgQEAgaXMg XCJkZWZhdWx0XCIuIiksCi0gCi0gICAvKiBJbml0aWFsaXplIHRoZSBzdGFuZGFyZCB0YXJnZXQg ZGVzY3JpcHRpb25zLiAgKi8KLSAgIGluaXRpYWxpemVfdGRlc2NfaTM4NiAoKTsKLSsgIGluaXRp YWxpemVfdGRlc2NfaTM4Nl9hdnggKCk7Ci0gCi0gICAvKiBUZWxsIHJlbW90ZSBzdHViIHRoYXQg d2Ugc3VwcG9ydCBYTUwgdGFyZ2V0IGRlc2NyaXB0aW9uLiAgKi8KLSAgIHJlZ2lzdGVyX3JlbW90 ZV9zdXBwb3J0X3htbCAoImkzODYiKTsKLS0tLSAuL2dkYi9pMzg2LXRkZXAuaAkyMDEwLTA0LTAz IDIxOjA2OjUyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL2kzODYtdGRlcC5oCTIwMTAtMDQt MDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTA5LDYgKzEwOSw5IEBAIHN0cnVjdCBn ZGJhcmNoX3RkZXAKLSAgIHN0cnVjdCByZWdzZXQgKmZwcmVnc2V0OwotICAgc2l6ZV90IHNpemVv Zl9mcHJlZ3NldDsKLSAKLSsgIC8qIFhTQVZFIGV4dGVuZGVkIHN0YXRlLiAgKi8KLSsgIHN0cnVj dCByZWdzZXQgKnhzdGF0ZXJlZ3NldDsKLSsKLSAgIC8qIFJlZ2lzdGVyIG51bWJlciBmb3IgJXN0 KDApLiAgVGhlIHJlZ2lzdGVyIG51bWJlcnMgZm9yIHRoZSBvdGhlcgotICAgICAgcmVnaXN0ZXJz IGZvbGxvdyBmcm9tIHRoaXMgb25lLiAgU2V0IHRoaXMgdG8gLTEgdG8gaW5kaWNhdGUgdGhlCi0g ICAgICBhYnNlbmNlIG9mIGFuIEZQVS4gICovCi1AQCAtMTIxLDYgKzEyNCwxMyBAQCBzdHJ1Y3Qg Z2RiYXJjaF90ZGVwCi0gICAgICBvZiBNTVggc3VwcG9ydC4gICovCi0gICBpbnQgbW0wX3JlZ251 bTsKLSAKLSsgIC8qIE51bWJlciBvZiBwc2V1ZG8gWU1NIHJlZ2lzdGVycy4gICovCi0rICBpbnQg bnVtX3ltbV9yZWdzOwotKwotKyAgLyogUmVnaXN0ZXIgbnVtYmVyIGZvciAleW1tMC4gIFNldCB0 aGlzIHRvIC0xIHRvIGluZGljYXRlIHRoZSBhYnNlbmNlCi0rICAgICBvZiBwc2V1ZG8gWU1NIHJl Z2lzdGVyIHN1cHBvcnQuICAqLwotKyAgaW50IHltbTBfcmVnbnVtOwotKwotICAgLyogTnVtYmVy IG9mIGJ5dGUgcmVnaXN0ZXJzLiAgKi8KLSAgIGludCBudW1fYnl0ZV9yZWdzOwotIAotQEAgLTE0 Niw5ICsxNTYsMjQgQEAgc3RydWN0IGdkYmFyY2hfdGRlcAotICAgLyogTnVtYmVyIG9mIFNTRSBy ZWdpc3RlcnMuICAqLwotICAgaW50IG51bV94bW1fcmVnczsKLSAKLSsgIC8qIEJpdHMgb2YgdGhl IGV4dGVuZGVkIGNvbnRyb2wgcmVnaXN0ZXIgMCAodGhlIFhGRUFUVVJFX0VOQUJMRURfTUFTSwot KyAgICAgcmVnaXN0ZXIpLCBleGNsdWRpbmcgdGhlIHg4NyBiaXQsIHdoaWNoIGFyZSBzdXBwb3J0 ZWQgYnkgdGhpcyBHREIuCi0rICAgKi8KLSsgIHVpbnQ2NF90IHhjcjA7Ci0rCi0rICAvKiBPZmZz ZXQgb2YgWENSMCBpbiBYU0FWRSBleHRlbmRlZCBzdGF0ZS4gICovCi0rICBpbnQgeHNhdmVfeGNy MF9vZmZzZXQ7Ci0rCi0gICAvKiBSZWdpc3RlciBuYW1lcy4gICovCi0gICBjb25zdCBjaGFyICoq cmVnaXN0ZXJfbmFtZXM7Ci0gCi0rICAvKiBSZWdpc3RlciBudW1iZXIgZm9yICV5bW0waC4gIFNl dCB0aGlzIHRvIC0xIHRvIGluZGljYXRlIHRoZSBhYnNlbmNlCi0rICAgICBvZiB1cHBlciBZTU0g cmVnaXN0ZXIgc3VwcG9ydC4gICovCi0rICBpbnQgeW1tMGhfcmVnbnVtOwotKwotKyAgLyogVXBw ZXIgWU1NIHJlZ2lzdGVyIG5hbWVzLiAgT25seSB1c2VkIGZvciB0ZGVzY19udW1iZXJlZF9yZWdp c3Rlci4gICovCi0rICBjb25zdCBjaGFyICoqeW1taF9yZWdpc3Rlcl9uYW1lczsKLSsKLSAgIC8q IFRhcmdldCBkZXNjcmlwdGlvbi4gICovCi0gICBjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKnRk ZXNjOwotIAotQEAgLTE4Miw2ICsyMDcsNyBAQCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwCi0gCi0gICAv KiBJU0Etc3BlY2lmaWMgZGF0YSB0eXBlcy4gICovCi0gICBzdHJ1Y3QgdHlwZSAqaTM4Nl9tbXhf dHlwZTsKLSsgIHN0cnVjdCB0eXBlICppMzg2X3ltbV90eXBlOwotICAgc3RydWN0IHR5cGUgKmkz ODdfZXh0X3R5cGU7Ci0gCi0gICAvKiBQcm9jZXNzIHJlY29yZC9yZXBsYXkgdGFyZ2V0LiAgKi8K LUBAIC0yMzEsNyArMjU3LDkgQEAgZW51bSBpMzg2X3JlZ251bQotICAgSTM4Nl9GU19SRUdOVU0s CQkvKiAlZnMgKi8KLSAgIEkzODZfR1NfUkVHTlVNLAkJLyogJWdzICovCi0gICBJMzg2X1NUMF9S RUdOVU0sCQkvKiAlc3QoMCkgKi8KLS0gIEkzODZfTVhDU1JfUkVHTlVNID0gNDAJLyogJW14Y3Ny ICovIAotKyAgSTM4Nl9NWENTUl9SRUdOVU0gPSA0MCwJLyogJW14Y3NyICovIAotKyAgSTM4Nl9Z TU0wSF9SRUdOVU0sCQkvKiAleW1tMGggKi8KLSsgIEkzODZfWU1NN0hfUkVHTlVNID0gSTM4Nl9Z TU0wSF9SRUdOVU0gKyA3Ci0gfTsKLSAKLSAvKiBSZWdpc3RlciBudW1iZXJzIG9mIFJFQ09SRF9S RUdNQVAuICAqLwotQEAgLTI2OCw2ICsyOTYsNyBAQCBlbnVtIHJlY29yZF9pMzg2X3JlZ251bQot ICNkZWZpbmUgSTM4Nl9OVU1fWFJFR1MgIDkKLSAKLSAjZGVmaW5lIEkzODZfU1NFX05VTV9SRUdT CShJMzg2X01YQ1NSX1JFR05VTSArIDEpCi0rI2RlZmluZSBJMzg2X0FWWF9OVU1fUkVHUwkoSTM4 Nl9ZTU03SF9SRUdOVU0gKyAxKQotIAotIC8qIFNpemUgb2YgdGhlIGxhcmdlc3QgcmVnaXN0ZXIu ICAqLwotICNkZWZpbmUgSTM4Nl9NQVhfUkVHSVNURVJfU0laRQkxNgotQEAgLTI3OSw2ICszMDgs OSBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmkzODdfZXh0X3R5cGUgKHN0cnVjCi0gZXh0ZXJuIGlu dCBpMzg2X2J5dGVfcmVnbnVtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVt KTsKLSBleHRlcm4gaW50IGkzODZfd29yZF9yZWdudW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIGludCByZWdudW0pOwotIGV4dGVybiBpbnQgaTM4Nl9kd29yZF9yZWdudW1fcCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0pOwotK2V4dGVybiBpbnQgaTM4Nl94bW1fcmVn bnVtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtKTsKLStleHRlcm4gaW50 IGkzODZfeW1tX3JlZ251bV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSk7 Ci0rZXh0ZXJuIGludCBpMzg2X3ltbWhfcmVnbnVtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBpbnQgcmVnbnVtKTsKLSAKLSBleHRlcm4gY29uc3QgY2hhciAqaTM4Nl9wc2V1ZG9fcmVnaXN0 ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCQkJCQkgICAgICBpbnQgcmVnbnVt KTsKLS0tLSAuL2dkYi9pMzg3LXRkZXAuYwkyMDEwLTAxLTAxIDA4OjMxOjM2LjAwMDAwMDAwMCAr MDEwMAotKysrIC4vZ2RiL2kzODctdGRlcC5jCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAw ICswMjAwCi1AQCAtMzQsNiArMzQsNyBAQAotIAotICNpbmNsdWRlICJpMzg2LXRkZXAuaCIKLSAj aW5jbHVkZSAiaTM4Ny10ZGVwLmgiCi0rI2luY2x1ZGUgImkzODYteHN0YXRlLmgiCi0gCi0gLyog UHJpbnQgdGhlIGZsb2F0aW5nIHBvaW50IG51bWJlciBzcGVjaWZpZWQgYnkgUkFXLiAgKi8KLSAK LUBAIC02NzcsNiArNjc4LDUxOCBAQCBpMzg3X2NvbGxlY3RfZnhzYXZlIChjb25zdCBzdHJ1Y3Qg cmVnY2FjCi0gCQkJICBGWFNBVkVfTVhDU1JfQUREUiAocmVncykpOwotIH0KLSAKLSsvKiBgeHN0 YXRlX2J2JyBpcyBhdCBieXRlIG9mZnNldCA1MTIuICAqLwotKyNkZWZpbmUgWFNBVkVfWFNUQVRF X0JWX0FERFIoeHNhdmUpICh4c2F2ZSArIDUxMikKLSsKLSsvKiBBdCB4c2F2ZV9hdnhoX29mZnNl dFtSRUdOVU1dIHlvdSdsbCBmaW5kIHRoZSBvZmZzZXQgdG8gdGhlIGxvY2F0aW9uIGluCi0rICAg dGhlIHVwcGVyIDEyOGJpdCBvZiBBVlggcmVnaXN0ZXIgZGF0YSBzdHJ1Y3R1cmUgdXNlZCBieSB0 aGUgInhzYXZlIgotKyAgIGluc3RydWN0aW9uIHdoZXJlIEdEQiByZWdpc3RlciBSRUdOVU0gaXMg c3RvcmVkLiAgKi8KLSsKLStzdGF0aWMgaW50IHhzYXZlX2F2eGhfb2Zmc2V0W10gPQotK3sKLSsg IDU3NiArIDAgKiAxNiwJCS8qIFVwcGVyIDEyOGJpdCBvZiAleW1tMCB0aHJvdWdoIC4uLiAgKi8K LSsgIDU3NiArIDEgKiAxNiwKLSsgIDU3NiArIDIgKiAxNiwKLSsgIDU3NiArIDMgKiAxNiwKLSsg IDU3NiArIDQgKiAxNiwKLSsgIDU3NiArIDUgKiAxNiwKLSsgIDU3NiArIDYgKiAxNiwKLSsgIDU3 NiArIDcgKiAxNiwKLSsgIDU3NiArIDggKiAxNiwKLSsgIDU3NiArIDkgKiAxNiwKLSsgIDU3NiAr IDEwICogMTYsCi0rICA1NzYgKyAxMSAqIDE2LAotKyAgNTc2ICsgMTIgKiAxNiwKLSsgIDU3NiAr IDEzICogMTYsCi0rICA1NzYgKyAxNCAqIDE2LAotKyAgNTc2ICsgMTUgKiAxNgkJLyogVXBwZXIg MTI4Yml0IG9mIC4uLiAleW1tMTUgKDEyOCBiaXRzIGVhY2gpLiAgKi8KLSt9OwotKwotKyNkZWZp bmUgWFNBVkVfQVZYSF9BRERSKHRkZXAsIHhzYXZlLCByZWdudW0pIFwKLSsgICh4c2F2ZSArIHhz YXZlX2F2eGhfb2Zmc2V0W3JlZ251bSAtIEkzODdfWU1NMEhfUkVHTlVNICh0ZGVwKV0pCi0rCi0r LyogU2ltaWxhciB0byBpMzg3X3N1cHBseV9meHNhdmUsIGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQg c3RhdGUuICAqLwotKwotK3ZvaWQKLStpMzg3X3N1cHBseV94c2F2ZSAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgaW50IHJlZ251bSwKLSsJCSAgIGNvbnN0IHZvaWQgKnhzYXZlKQotK3sKLSsg IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdldF9yZWdjYWNoZV9h cmNoIChyZWdjYWNoZSkpOwotKyAgY29uc3QgZ2RiX2J5dGUgKnJlZ3MgPSB4c2F2ZTsKLSsgIGlu dCBpOwotKyAgdW5zaWduZWQgaW50IGNsZWFyX2J2OwotKyAgY29uc3QgZ2RiX2J5dGUgKnA7Ci0r ICBlbnVtCi0rICAgIHsKLSsgICAgICBub25lID0gMHgwLAotKyAgICAgIHg4NyA9IDB4MSwKLSsg ICAgICBzc2UgPSAweDIsCi0rICAgICAgYXZ4aCA9IDB4NCwKLSsgICAgICBhbGwgPSB4ODcgfCBz c2UgfCBhdnhoCi0rICAgIH0gcmVnY2xhc3M7Ci0rCi0rICBnZGJfYXNzZXJ0ICh0ZGVwLT5zdDBf cmVnbnVtID49IEkzODZfU1QwX1JFR05VTSk7Ci0rICBnZGJfYXNzZXJ0ICh0ZGVwLT5udW1feG1t X3JlZ3MgPiAwKTsKLSsKLSsgIGlmIChyZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NsYXNzID0gYWxs OwotKyAgZWxzZSBpZiAocmVnbnVtID49IEkzODdfWU1NMEhfUkVHTlVNICh0ZGVwKQotKwkgICAm JiByZWdudW0gPCBJMzg3X1lNTUVOREhfUkVHTlVNICh0ZGVwKSkKLSsgICAgcmVnY2xhc3MgPSBh dnhoOwotKyAgZWxzZSBpZiAocmVnbnVtID49IEkzODdfWE1NMF9SRUdOVU0odGRlcCkKLSsJICAg JiYgcmVnbnVtIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApKQotKyAgICByZWdjbGFzcyA9IHNz ZTsKLSsgIGVsc2UgaWYgKHJlZ251bSA+PSBJMzg3X1NUMF9SRUdOVU0gKHRkZXApCi0rCSAgICYm IHJlZ251bSA8IEkzODdfRkNUUkxfUkVHTlVNICh0ZGVwKSkKLSsgICAgcmVnY2xhc3MgPSB4ODc7 Ci0rICBlbHNlCi0rICAgIHJlZ2NsYXNzID0gbm9uZTsKLSsKLSsgIGlmIChyZWdzICE9IE5VTEwg JiYgcmVnY2xhc3MgIT0gbm9uZSkKLSsgICAgewotKyAgICAgIC8qIEdldCBgeHN0YXRfYnYnLiAg Ki8KLSsgICAgICBjb25zdCBnZGJfYnl0ZSAqeHN0YXRlX2J2X3AgPSBYU0FWRV9YU1RBVEVfQlZf QUREUiAocmVncyk7Ci0rCi0rICAgICAgLyogVGhlIHN1cHBvcnRlZCBiaXRzIGluIGB4c3RhdF9i dicgYXJlIDEgYnl0ZS4gIENsZWFyIHBhcnQgaW4KLSsJIHZlY3RvciByZWdpc3RlcnMgaWYgaXRz IGJpdCBpbiB4c3RhdF9idiBpcyB6ZXJvLiAgKi8KLSsgICAgICBjbGVhcl9idiA9ICh+KCp4c3Rh dGVfYnZfcCkpICYgdGRlcC0+eGNyMDsKLSsgICAgfQotKyAgZWxzZQotKyAgICBjbGVhcl9idiA9 IEkzODZfWFNUQVRFX0FWWF9NQVNLOwotKwotKyAgc3dpdGNoIChyZWdjbGFzcykKLSsgICAgewot KyAgICBjYXNlIG5vbmU6Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgYXZ4aDoKLSsgICAg ICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJcCA9IE5VTEw7Ci0rICAgICAg ZWxzZQotKwlwID0gWFNBVkVfQVZYSF9BRERSICh0ZGVwLCByZWdzLCByZWdudW0pOwotKyAgICAg IHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCByZWdudW0sIHApOwotKyAgICAgIHJldHVy bjsKLSsKLSsgICAgY2FzZSBzc2U6Ci0rICAgICAgaWYgKChjbGVhcl9idiAmIEkzODZfWFNUQVRF X1NTRSkpCi0rCXAgPSBOVUxMOwotKyAgICAgIGVsc2UKLSsJcCA9IEZYU0FWRV9BRERSICh0ZGVw LCByZWdzLCByZWdudW0pOwotKyAgICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBy ZWdudW0sIHApOwotKyAgICAgIHJldHVybjsKLSsKLSsgICAgY2FzZSB4ODc6Ci0rICAgICAgaWYg KChjbGVhcl9idiAmIEkzODZfWFNUQVRFX1g4NykpCi0rCXAgPSBOVUxMOwotKyAgICAgIGVsc2UK LSsJcCA9IEZYU0FWRV9BRERSICh0ZGVwLCByZWdzLCByZWdudW0pOwotKyAgICAgIHJlZ2NhY2hl X3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCByZWdudW0sIHApOwotKyAgICAgIHJldHVybjsKLSsKLSsg ICAgY2FzZSBhbGw6Ci0rICAgICAgLyogSGFubGUgdGhlIHVwcGVyIFlNTSByZWdpc3RlcnMuICAq LwotKyAgICAgIGlmICgodGRlcC0+eGNyMCAmIEkzODZfWFNUQVRFX0FWWCkpCi0rCXsKLSsJICBp ZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJICAgIHAgPSBOVUxMOwotKwkgIGVs c2UKLSsJICAgIHAgPSByZWdzOwotKwotKwkgIGZvciAoaSA9IEkzODdfWU1NMEhfUkVHTlVNICh0 ZGVwKTsKLSsJICAgICAgIGkgPCBJMzg3X1lNTUVOREhfUkVHTlVNICh0ZGVwKTsgaSsrKQotKwkg ICAgewotKwkgICAgICBpZiAocCAhPSBOVUxMKQotKwkJcCA9IFhTQVZFX0FWWEhfQUREUiAodGRl cCwgcmVncywgaSk7Ci0rCSAgICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpLCBw KTsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIC8qIEhhbmRsZSB0aGUgWE1NIHJlZ2lzdGVycy4g ICovCi0rICAgICAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4Nl9YU1RBVEVfU1NFKSkKLSsJewotKwkg IGlmICgoY2xlYXJfYnYgJiBJMzg2X1hTVEFURV9TU0UpKQotKwkgICAgcCA9IE5VTEw7Ci0rCSAg ZWxzZQotKwkgICAgcCA9IHJlZ3M7Ci0rCi0rCSAgZm9yIChpID0gSTM4N19YTU0wX1JFR05VTSAo dGRlcCk7Ci0rCSAgICAgICBpIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApOyBpKyspCi0rCSAg ICB7Ci0rCSAgICAgIGlmIChwICE9IE5VTEwpCi0rCQlwID0gRlhTQVZFX0FERFIgKHRkZXAsIHJl Z3MsIGkpOwotKwkgICAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSwgcCk7Ci0r CSAgICB9Ci0rCX0KLSsKLSsgICAgICAvKiBIYW5kbGUgdGhlIHg4NyByZWdpc3RlcnMuICAqLwot KyAgICAgIGlmICgodGRlcC0+eGNyMCAmIEkzODZfWFNUQVRFX1g4NykpCi0rCXsKLSsJICBpZiAo KGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfWDg3KSkKLSsJICAgIHAgPSBOVUxMOwotKwkgIGVsc2UK LSsJICAgIHAgPSByZWdzOwotKwotKwkgIGZvciAoaSA9IEkzODdfU1QwX1JFR05VTSAodGRlcCk7 Ci0rCSAgICAgICBpIDwgSTM4N19GQ1RSTF9SRUdOVU0gKHRkZXApOyBpKyspCi0rCSAgICB7Ci0r CSAgICAgIGlmIChwICE9IE5VTEwpCi0rCQlwID0gRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIGkp OwotKwkgICAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSwgcCk7Ci0rCSAgICB9 Ci0rCX0KLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgLyogT25seSBoYW5kbGUgeDg3IGNv bnRyb2wgcmVnaXN0ZXJzLiAgKi8KLSsgIGZvciAoaSA9IEkzODdfRkNUUkxfUkVHTlVNICh0ZGVw KTsgaSA8IEkzODdfWE1NMF9SRUdOVU0gKHRkZXApOyBpKyspCi0rICAgIGlmIChyZWdudW0gPT0g LTEgfHwgcmVnbnVtID09IGkpCi0rICAgICAgewotKwlpZiAocmVncyA9PSBOVUxMKQotKwkgIHsK LSsJICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpLCBOVUxMKTsKLSsJICAgIGNv bnRpbnVlOwotKwkgIH0KLSsKLSsJLyogTW9zdCBvZiB0aGUgRlBVIGNvbnRyb2wgcmVnaXN0ZXJz IG9jY3VweSBvbmx5IDE2IGJpdHMgaW4KLSsJICAgdGhlIHhzYXZlIGV4dGVuZGVkIHN0YXRlLiAg R2l2ZSB0aG9zZSBhIHNwZWNpYWwgdHJlYXRtZW50LiAgKi8KLSsJaWYgKGkgIT0gSTM4N19GSU9G Rl9SRUdOVU0gKHRkZXApCi0rCSAgICAmJiBpICE9IEkzODdfRk9PRkZfUkVHTlVNICh0ZGVwKSkK LSsJICB7Ci0rCSAgICBnZGJfYnl0ZSB2YWxbNF07Ci0rCi0rCSAgICBtZW1jcHkgKHZhbCwgRlhT QVZFX0FERFIgKHRkZXAsIHJlZ3MsIGkpLCAyKTsKLSsJICAgIHZhbFsyXSA9IHZhbFszXSA9IDA7 Ci0rCSAgICBpZiAoaSA9PSBJMzg3X0ZPUF9SRUdOVU0gKHRkZXApKQotKwkgICAgICB2YWxbMV0g Jj0gKCgxIDw8IDMpIC0gMSk7Ci0rCSAgICBlbHNlIGlmIChpPT0gSTM4N19GVEFHX1JFR05VTSAo dGRlcCkpCi0rCSAgICAgIHsKLSsJCS8qIFRoZSBmeHNhdmUgYXJlYSBjb250YWlucyBhIHNpbXBs aWZpZWQgdmVyc2lvbiBvZgotKwkJICAgdGhlIHRhZyB3b3JkLiAgV2UgaGF2ZSB0byBsb29rIGF0 IHRoZSBhY3R1YWwgODAtYml0Ci0rCQkgICBGUCBkYXRhIHRvIHJlY3JlYXRlIHRoZSB0cmFkaXRp b25hbCBpMzg3IHRhZyB3b3JkLiAgKi8KLSsKLSsJCXVuc2lnbmVkIGxvbmcgZnRhZyA9IDA7Ci0r CQlpbnQgZnByZWc7Ci0rCQlpbnQgdG9wOwotKwotKwkJdG9wID0gKChGWFNBVkVfQUREUiAodGRl cCwgcmVncywKLSsJCQkJICAgICBJMzg3X0ZTVEFUX1JFR05VTSAodGRlcCkpKVsxXSA+PiAzKTsK LSsJCXRvcCAmPSAweDc7Ci0rCi0rCQlmb3IgKGZwcmVnID0gNzsgZnByZWcgPj0gMDsgZnByZWct LSkKLSsJCSAgewotKwkJICAgIGludCB0YWc7Ci0rCi0rCQkgICAgaWYgKHZhbFswXSAmICgxIDw8 IGZwcmVnKSkKLSsJCSAgICAgIHsKLSsJCQlpbnQgcmVnbnVtID0gKGZwcmVnICsgOCAtIHRvcCkg JSA4IAotKwkJCQkgICAgICAgKyBJMzg3X1NUMF9SRUdOVU0gKHRkZXApOwotKwkJCXRhZyA9IGkz ODdfdGFnIChGWFNBVkVfQUREUiAodGRlcCwgcmVncywgcmVnbnVtKSk7Ci0rCQkgICAgICB9Ci0r CQkgICAgZWxzZQotKwkJICAgICAgdGFnID0gMzsJCS8qIEVtcHR5ICovCi0rCi0rCQkgICAgZnRh ZyB8PSB0YWcgPDwgKDIgKiBmcHJlZyk7Ci0rCQkgIH0KLSsJCXZhbFswXSA9IGZ0YWcgJiAweGZm OwotKwkJdmFsWzFdID0gKGZ0YWcgPj4gOCkgJiAweGZmOwotKwkgICAgICB9Ci0rCSAgICByZWdj YWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSwgdmFsKTsKLSsJICB9Ci0rCWVsc2UgCi0rCSAg cmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGksIEZYU0FWRV9BRERSICh0ZGVwLCByZWdz LCBpKSk7Ci0rICAgICAgfQotKwotKyAgaWYgKHJlZ251bSA9PSBJMzg3X01YQ1NSX1JFR05VTSAo dGRlcCkgfHwgcmVnbnVtID09IC0xKQotKyAgICB7Ci0rICAgICAgcCA9IHJlZ3MgPT0gTlVMTCA/ IE5VTEwgOiBGWFNBVkVfTVhDU1JfQUREUiAocmVncyk7Ci0rICAgICAgcmVnY2FjaGVfcmF3X3N1 cHBseSAocmVnY2FjaGUsIEkzODdfTVhDU1JfUkVHTlVNICh0ZGVwKSwgcCk7Ci0rICAgIH0KLSt9 Ci0rCi0rLyogU2ltaWxhciB0byBpMzg3X2NvbGxlY3RfZnhzYXZlLCBidXQgdXNlIFhTQVZFIGV4 dGVuZGVkIHN0YXRlLiAgKi8KLSsKLSt2b2lkCi0raTM4N19jb2xsZWN0X3hzYXZlIChjb25zdCBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotKwkJICAgIHZvaWQgKnhzYXZl LCBpbnQgZ2NvcmUpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hf dGRlcCAoZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKSk7Ci0rICBnZGJfYnl0ZSAqcmVncyA9 IHhzYXZlOwotKyAgaW50IGk7Ci0rICBlbnVtCi0rICAgIHsKLSsgICAgICBub25lID0gMHgwLAot KyAgICAgIGNoZWNrID0gMHgxLAotKyAgICAgIHg4NyA9IDB4MiB8IGNoZWNrLAotKyAgICAgIHNz ZSA9IDB4NCB8IGNoZWNrLAotKyAgICAgIGF2eGggPSAweDggfCBjaGVjaywKLSsgICAgICBhbGwg PSB4ODcgfCBzc2UgfCBhdnhoCi0rICAgIH0gcmVnY2xhc3M7Ci0rCi0rICBnZGJfYXNzZXJ0ICh0 ZGVwLT5zdDBfcmVnbnVtID49IEkzODZfU1QwX1JFR05VTSk7Ci0rICBnZGJfYXNzZXJ0ICh0ZGVw LT5udW1feG1tX3JlZ3MgPiAwKTsKLSsKLSsgIGlmIChyZWdudW0gPT0gLTEpCi0rICAgIHJlZ2Ns YXNzID0gYWxsOwotKyAgZWxzZSBpZiAocmVnbnVtID49IEkzODdfWU1NMEhfUkVHTlVNICh0ZGVw KQotKwkgICAmJiByZWdudW0gPCBJMzg3X1lNTUVOREhfUkVHTlVNICh0ZGVwKSkKLSsgICAgcmVn Y2xhc3MgPSBhdnhoOwotKyAgZWxzZSBpZiAocmVnbnVtID49IEkzODdfWE1NMF9SRUdOVU0odGRl cCkKLSsJICAgJiYgcmVnbnVtIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApKQotKyAgICByZWdj bGFzcyA9IHNzZTsKLSsgIGVsc2UgaWYgKHJlZ251bSA+PSBJMzg3X1NUMF9SRUdOVU0gKHRkZXAp Ci0rCSAgICYmIHJlZ251bSA8IEkzODdfRkNUUkxfUkVHTlVNICh0ZGVwKSkKLSsgICAgcmVnY2xh c3MgPSB4ODc7Ci0rICBlbHNlCi0rICAgIHJlZ2NsYXNzID0gbm9uZTsKLSsKLSsgIGlmIChnY29y ZSkKLSsgICAgewotKyAgICAgIC8qIFVwZGF0ZSBYQ1IwIGFuZCBgeHN0YXRlX2J2JyB3aXRoIFhD UjAgZm9yIGdjb3JlLiAgKi8KLSsgICAgICBpZiAodGRlcC0+eHNhdmVfeGNyMF9vZmZzZXQgIT0g LTEpCi0rCW1lbWNweSAocmVncyArIHRkZXAtPnhzYXZlX3hjcjBfb2Zmc2V0LCAmdGRlcC0+eGNy MCwgOCk7Ci0rICAgICAgbWVtY3B5IChYU0FWRV9YU1RBVEVfQlZfQUREUiAocmVncyksICZ0ZGVw LT54Y3IwLCA4KTsKLSsKLSsgICAgICBzd2l0Y2ggKHJlZ2NsYXNzKQotKwl7Ci0rCWRlZmF1bHQ6 Ci0rCSAgYWJvcnQgKCk7Ci0rCi0rCWNhc2UgYWxsOgotKwkgIC8qIEhhbmRsZSB0aGUgdXBwZXIg WU1NIHJlZ2lzdGVycy4gICovCi0rCSAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4Nl9YU1RBVEVfQVZY KSkKLSsJICAgIGZvciAoaSA9IEkzODdfWU1NMEhfUkVHTlVNICh0ZGVwKTsKLSsJCSBpIDwgSTM4 N19ZTU1FTkRIX1JFR05VTSAodGRlcCk7IGkrKykKLSsJICAgICAgcmVnY2FjaGVfcmF3X2NvbGxl Y3QgKHJlZ2NhY2hlLCBpLAotKwkJCQkgICAgWFNBVkVfQVZYSF9BRERSICh0ZGVwLCByZWdzLCBp KSk7Ci0rCi0rCSAgLyogSGFuZGxlIHRoZSBYTU0gcmVnaXN0ZXJzLiAgKi8KLSsJICBpZiAoKHRk ZXAtPnhjcjAgJiBJMzg2X1hTVEFURV9TU0UpKQotKwkgICAgZm9yIChpID0gSTM4N19YTU0wX1JF R05VTSAodGRlcCk7Ci0rCQkgaSA8IEkzODdfTVhDU1JfUkVHTlVNICh0ZGVwKTsgaSsrKQotKwkg ICAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksCi0rCQkJCSAgICBGWFNBVkVf QUREUiAodGRlcCwgcmVncywgaSkpOwotKwotKwkgIC8qIEhhbmRsZSB0aGUgeDg3IHJlZ2lzdGVy cy4gICovCi0rCSAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4Nl9YU1RBVEVfWDg3KSkKLSsJICAgIGZv ciAoaSA9IEkzODdfU1QwX1JFR05VTSAodGRlcCk7Ci0rCQkgaSA8IEkzODdfRkNUUkxfUkVHTlVN ICh0ZGVwKTsgaSsrKQotKwkgICAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGks Ci0rCQkJCSAgICBGWFNBVkVfQUREUiAodGRlcCwgcmVncywgaSkpOwotKwkgIGJyZWFrOwotKwot KwljYXNlIHg4NzoKLSsJICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIHJlZ251bSwK LSsJCQkJRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIHJlZ251bSkpOwotKwkgIHJldHVybjsKLSsK LSsJY2FzZSBzc2U6Ci0rCSAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCByZWdudW0s Ci0rCQkJCUZYU0FWRV9BRERSICh0ZGVwLCByZWdzLCByZWdudW0pKTsKLSsJICByZXR1cm47Ci0r Ci0rCWNhc2UgYXZ4aDoKLSsJICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIHJlZ251 bSwKLSsJCQkJWFNBVkVfQVZYSF9BRERSICh0ZGVwLCByZWdzLCByZWdudW0pKTsKLSsJICByZXR1 cm47Ci0rCX0KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYgKChyZWdjbGFzcyAm IGNoZWNrKSkKLSsJewotKwkgIGdkYl9ieXRlIHJhd1tJMzg2X01BWF9SRUdJU1RFUl9TSVpFXTsK LSsJICBnZGJfYnl0ZSAqeHN0YXRlX2J2X3AgPSBYU0FWRV9YU1RBVEVfQlZfQUREUiAocmVncyk7 Ci0rCSAgdW5zaWduZWQgaW50IHhzdGF0ZV9idiA9IDA7Ci0rCSAgLyogVGhlIHN1cHBvcnRlZCBi aXRzIGluIGB4c3RhdF9idicgYXJlIDEgYnl0ZS4gKi8KLSsJICB1bnNpZ25lZCBpbnQgY2xlYXJf YnYgPSAofigqeHN0YXRlX2J2X3ApKSAmIHRkZXAtPnhjcjA7Ci0rCSAgZ2RiX2J5dGUgKnA7Ci0r Ci0rCSAgLyogQ2xlYXIgcmVnaXN0ZXIgc2V0IGlmIGl0cyBiaXQgaW4geHN0YXRfYnYgaXMgemVy by4gICovCi0rCSAgaWYgKGNsZWFyX2J2KQotKwkgICAgewotKwkgICAgICBpZiAoKGNsZWFyX2J2 ICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJCWZvciAoaSA9IEkzODdfWU1NMEhfUkVHTlVNICh0ZGVw KTsKLSsJCSAgICAgaSA8IEkzODdfWU1NRU5ESF9SRUdOVU0gKHRkZXApOyBpKyspCi0rCQkgIG1l bXNldCAoWFNBVkVfQVZYSF9BRERSICh0ZGVwLCByZWdzLCBpKSwgMCwgMTYpOwotKwotKwkgICAg ICBpZiAoKGNsZWFyX2J2ICYgSTM4Nl9YU1RBVEVfU1NFKSkKLSsJCWZvciAoaSA9IEkzODdfWE1N MF9SRUdOVU0gKHRkZXApOwotKwkJICAgICBpIDwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApOyBp KyspCi0rCQkgIG1lbXNldCAoRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIGkpLCAwLCAxNik7Ci0r Ci0rCSAgICAgIGlmICgoY2xlYXJfYnYgJiBJMzg2X1hTVEFURV9YODcpKQotKwkJZm9yIChpID0g STM4N19TVDBfUkVHTlVNICh0ZGVwKTsKLSsJCSAgICAgaSA8IEkzODdfRkNUUkxfUkVHTlVNICh0 ZGVwKTsgaSsrKQotKwkJICBtZW1zZXQgKEZYU0FWRV9BRERSICh0ZGVwLCByZWdzLCBpKSwgMCwg MTApOwotKwkgICAgfQotKwotKwkgIGlmIChyZWdjbGFzcyA9PSBhbGwpCi0rCSAgICB7Ci0rCSAg ICAgIC8qIENoZWNrIGlmIGFueSB1cHBlciBZTU0gcmVnaXN0ZXJzIGFyZSBjaGFuZ2VkLiAgKi8K LSsJICAgICAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4Nl9YU1RBVEVfQVZYKSkKLSsJCWZvciAoaSA9 IEkzODdfWU1NMEhfUkVHTlVNICh0ZGVwKTsKLSsJCSAgICAgaSA8IEkzODdfWU1NRU5ESF9SRUdO VU0gKHRkZXApOyBpKyspCi0rCQkgIHsKLSsJCSAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVn Y2FjaGUsIGksIHJhdyk7Ci0rCQkgICAgcCA9IFhTQVZFX0FWWEhfQUREUiAodGRlcCwgcmVncywg aSk7Ci0rCQkgICAgaWYgKG1lbWNtcCAocmF3LCBwLCAxNikpCi0rCQkgICAgICB7Ci0rCQkJeHN0 YXRlX2J2IHw9IEkzODZfWFNUQVRFX0FWWDsKLSsJCQltZW1jcHkgKHAsIHJhdywgMTYpOwotKwkJ ICAgICAgfQotKwkJICB9Ci0rCi0rCSAgICAgIC8qIENoZWNrIGlmIGFueSBTU0UgcmVnaXN0ZXJz IGFyZSBjaGFuZ2VkLiAgKi8KLSsJICAgICAgaWYgKCh0ZGVwLT54Y3IwICYgSTM4Nl9YU1RBVEVf U1NFKSkKLSsJCWZvciAoaSA9IEkzODdfWE1NMF9SRUdOVU0gKHRkZXApOwotKwkJICAgICBpIDwg STM4N19NWENTUl9SRUdOVU0gKHRkZXApOyBpKyspCi0rCQkgIHsKLSsJCSAgICByZWdjYWNoZV9y YXdfY29sbGVjdCAocmVnY2FjaGUsIGksIHJhdyk7Ci0rCQkgICAgcCA9IEZYU0FWRV9BRERSICh0 ZGVwLCByZWdzLCBpKTsKLSsJCSAgICBpZiAobWVtY21wIChyYXcsIHAsIDE2KSkKLSsJCSAgICAg IHsKLSsJCQl4c3RhdGVfYnYgfD0gSTM4Nl9YU1RBVEVfU1NFOwotKwkJCW1lbWNweSAocCwgcmF3 LCAxNik7Ci0rCQkgICAgICB9Ci0rCQkgIH0KLSsKLSsJICAgICAgLyogQ2hlY2sgaWYgYW55IFg4 NyByZWdpc3RlcnMgYXJlIGNoYW5nZWQuICAqLwotKwkgICAgICBpZiAoKHRkZXAtPnhjcjAgJiBJ Mzg2X1hTVEFURV9YODcpKQotKwkJZm9yIChpID0gSTM4N19TVDBfUkVHTlVNICh0ZGVwKTsKLSsJ CSAgICAgaSA8IEkzODdfRkNUUkxfUkVHTlVNICh0ZGVwKTsgaSsrKQotKwkJICB7Ci0rCQkgICAg cmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpLCByYXcpOwotKwkJICAgIHAgPSBGWFNB VkVfQUREUiAodGRlcCwgcmVncywgaSk7Ci0rCQkgICAgaWYgKG1lbWNtcCAocmF3LCBwLCAxMCkp Ci0rCQkgICAgICB7Ci0rCQkJeHN0YXRlX2J2IHw9IEkzODZfWFNUQVRFX1g4NzsKLSsJCQltZW1j cHkgKHAsIHJhdywgMTApOwotKwkJICAgICAgfQotKwkJICB9Ci0rCSAgICB9Ci0rCSAgZWxzZQot KwkgICAgewotKwkgICAgICAvKiBDaGVjayBpZiBSRUdOVU0gaXMgY2hhbmdlZC4gICovCi0rCSAg ICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgcmVnbnVtLCByYXcpOwotKwotKwkg ICAgICBzd2l0Y2ggKHJlZ2NsYXNzKQotKwkJewotKwkJZGVmYXVsdDoKLSsJCSAgYWJvcnQgKCk7 Ci0rCi0rCQljYXNlIGF2eGg6Ci0rCQkgIC8qIFRoaXMgaXMgYW4gdXBwZXIgWU1NIHJlZ2lzdGVy LiAgKi8KLSsJCSAgcCA9IFhTQVZFX0FWWEhfQUREUiAodGRlcCwgcmVncywgcmVnbnVtKTsKLSsJ CSAgaWYgKG1lbWNtcCAocmF3LCBwLCAxNikpCi0rCQkgICAgewotKwkJICAgICAgeHN0YXRlX2J2 IHw9IEkzODZfWFNUQVRFX0FWWDsKLSsJCSAgICAgIG1lbWNweSAocCwgcmF3LCAxNik7Ci0rCQkg ICAgfQotKwkJICBicmVhazsKLSsKLSsJCWNhc2Ugc3NlOgotKwkJICAvKiBUaGlzIGlzIGFuIFNT RSByZWdpc3Rlci4gICovCi0rCQkgIHAgPSBGWFNBVkVfQUREUiAodGRlcCwgcmVncywgcmVnbnVt KTsKLSsJCSAgaWYgKG1lbWNtcCAocmF3LCBwLCAxNikpCi0rCQkgICAgewotKwkJICAgICAgeHN0 YXRlX2J2IHw9IEkzODZfWFNUQVRFX1NTRTsKLSsJCSAgICAgIG1lbWNweSAocCwgcmF3LCAxNik7 Ci0rCQkgICAgfQotKwkJICBicmVhazsKLSsKLSsJCWNhc2UgeDg3OgotKwkJICAvKiBUaGlzIGlz IGFuIHg4NyByZWdpc3Rlci4gICovCi0rCQkgIHAgPSBGWFNBVkVfQUREUiAodGRlcCwgcmVncywg cmVnbnVtKTsKLSsJCSAgaWYgKG1lbWNtcCAocmF3LCBwLCAxMCkpCi0rCQkgICAgewotKwkJICAg ICAgeHN0YXRlX2J2IHw9IEkzODZfWFNUQVRFX1g4NzsKLSsJCSAgICAgIG1lbWNweSAocCwgcmF3 LCAxMCk7Ci0rCQkgICAgfQotKwkJICBicmVhazsKLSsJCX0KLSsJICAgIH0KLSsKLSsJICAvKiBV cGRhdGUgdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiBgeHN0YXRlX2J2JyBpZiBhbnkgU1NFL0FW WAotKwkgICAgIHJlZ2lzdGVycyBhcmUgY2hhbmdlZC4gICovCi0rCSAgaWYgKHhzdGF0ZV9idikK LSsJICAgIHsKLSsJICAgICAgLyogVGhlIHN1cHBvcnRlZCBiaXRzIGluIGB4c3RhdF9idicgYXJl IDEgYnl0ZS4gICovCi0rCSAgICAgICp4c3RhdGVfYnZfcCB8PSAoZ2RiX2J5dGUpIHhzdGF0ZV9i djsKLSsKLSsJICAgICAgc3dpdGNoIChyZWdjbGFzcykKLSsJCXsKLSsJCWRlZmF1bHQ6Ci0rCQkg IGFib3J0ICgpOwotKwotKwkJY2FzZSBhbGw6Ci0rCQkgIGJyZWFrOwotKwotKwkJY2FzZSB4ODc6 Ci0rCQljYXNlIHNzZToKLSsJCWNhc2UgYXZ4aDoKLSsJCSAgLyogUmVnaXN0ZXIgUkVHTlVNIGhh cyBiZWVuIHVwZGF0ZWQuICBSZXR1cm4uICAqLwotKwkJICByZXR1cm47Ci0rCQl9Ci0rCSAgICB9 Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAvKiBSZXR1cm4gaWYgUkVHTlVNIGlzbid0IGNo YW5nZWQuICAqLwotKwkgICAgICBpZiAocmVnY2xhc3MgIT0gYWxsKQotKwkJcmV0dXJuOwotKwkg ICAgfQotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIE9ubHkgaGFuZGxlIHg4NyBjb250cm9sIHJlZ2lz dGVycy4gICovCi0rICBmb3IgKGkgPSBJMzg3X0ZDVFJMX1JFR05VTSAodGRlcCk7IGkgPCBJMzg3 X1hNTTBfUkVHTlVNICh0ZGVwKTsgaSsrKQotKyAgICBpZiAocmVnbnVtID09IC0xIHx8IHJlZ251 bSA9PSBpKQotKyAgICAgIHsKLSsJLyogTW9zdCBvZiB0aGUgRlBVIGNvbnRyb2wgcmVnaXN0ZXJz IG9jY3VweSBvbmx5IDE2IGJpdHMgaW4KLSsJICAgdGhlIHhzYXZlIGV4dGVuZGVkIHN0YXRlLiAg R2l2ZSB0aG9zZSBhIHNwZWNpYWwgdHJlYXRtZW50LiAgKi8KLSsJaWYgKGkgIT0gSTM4N19GSU9G Rl9SRUdOVU0gKHRkZXApCi0rCSAgICAmJiBpICE9IEkzODdfRk9PRkZfUkVHTlVNICh0ZGVwKSkK LSsJICB7Ci0rCSAgICBnZGJfYnl0ZSBidWZbNF07Ci0rCi0rCSAgICByZWdjYWNoZV9yYXdfY29s bGVjdCAocmVnY2FjaGUsIGksIGJ1Zik7Ci0rCi0rCSAgICBpZiAoaSA9PSBJMzg3X0ZPUF9SRUdO VU0gKHRkZXApKQotKwkgICAgICB7Ci0rCQkvKiBUaGUgb3Bjb2RlIG9jY3VwaWVzIG9ubHkgMTEg Yml0cy4gIE1ha2Ugc3VyZSB3ZQotKyAgICAgICAgICAgICAgICAgICBkb24ndCB0b3VjaCB0aGUg b3RoZXIgYml0cy4gICovCi0rCQlidWZbMV0gJj0gKCgxIDw8IDMpIC0gMSk7Ci0rCQlidWZbMV0g fD0gKChGWFNBVkVfQUREUiAodGRlcCwgcmVncywgaSkpWzFdICYgfigoMSA8PCAzKSAtIDEpKTsK LSsJICAgICAgfQotKwkgICAgZWxzZSBpZiAoaSA9PSBJMzg3X0ZUQUdfUkVHTlVNICh0ZGVwKSkK LSsJICAgICAgewotKwkJLyogQ29udmVydGluZyBiYWNrIGlzIG11Y2ggZWFzaWVyLiAgKi8KLSsK LSsJCXVuc2lnbmVkIHNob3J0IGZ0YWc7Ci0rCQlpbnQgZnByZWc7Ci0rCi0rCQlmdGFnID0gKGJ1 ZlsxXSA8PCA4KSB8IGJ1ZlswXTsKLSsJCWJ1ZlswXSA9IDA7Ci0rCQlidWZbMV0gPSAwOwotKwot KwkJZm9yIChmcHJlZyA9IDc7IGZwcmVnID49IDA7IGZwcmVnLS0pCi0rCQkgIHsKLSsJCSAgICBp bnQgdGFnID0gKGZ0YWcgPj4gKGZwcmVnICogMikpICYgMzsKLSsKLSsJCSAgICBpZiAodGFnICE9 IDMpCi0rCQkgICAgICBidWZbMF0gfD0gKDEgPDwgZnByZWcpOwotKwkJICB9Ci0rCSAgICAgIH0K LSsJICAgIG1lbWNweSAoRlhTQVZFX0FERFIgKHRkZXAsIHJlZ3MsIGkpLCBidWYsIDIpOwotKwkg IH0KLSsJZWxzZQotKwkgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgaSwgRlhTQVZF X0FERFIgKHRkZXAsIHJlZ3MsIGkpKTsKLSsgICAgICB9Ci0rCi0rICBpZiAocmVnbnVtID09IEkz ODdfTVhDU1JfUkVHTlVNICh0ZGVwKSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jh d19jb2xsZWN0IChyZWdjYWNoZSwgSTM4N19NWENTUl9SRUdOVU0gKHRkZXApLAotKwkJCSAgRlhT QVZFX01YQ1NSX0FERFIgKHJlZ3MpKTsKLSt9Ci0rCi0gLyogUmVjcmVhdGUgdGhlIEZUVyAodGFn IHdvcmQpIHZhbGlkIGJpdHMgZnJvbSB0aGUgODAtYml0IEZQIGRhdGEgaW4KLSAgICAqUkFXLiAg Ki8KLSAKLS0tLSAuL2dkYi9pMzg3LXRkZXAuaAkyMDEwLTA0LTAzIDIwOjU5OjUyLjAwMDAwMDAw MCArMDIwMAotKysrIC4vZ2RiL2kzODctdGRlcC5oCTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAw MDAwICswMjAwCi1AQCAtMzMsNiArMzMsOCBAQCBzdHJ1Y3QgdWlfZmlsZTsKLSAjZGVmaW5lIEkz ODdfU1QwX1JFR05VTSh0ZGVwKSAoKHRkZXApLT5zdDBfcmVnbnVtKQotICNkZWZpbmUgSTM4N19O VU1fWE1NX1JFR1ModGRlcCkgKCh0ZGVwKS0+bnVtX3htbV9yZWdzKQotICNkZWZpbmUgSTM4N19N TTBfUkVHTlVNKHRkZXApICgodGRlcCktPm1tMF9yZWdudW0pCi0rI2RlZmluZSBJMzg3X05VTV9Z TU1fUkVHUyh0ZGVwKSAoKHRkZXApLT5udW1feW1tX3JlZ3MpCi0rI2RlZmluZSBJMzg3X1lNTTBI X1JFR05VTSh0ZGVwKSAoKHRkZXApLT55bW0waF9yZWdudW0pCi0gCi0gI2RlZmluZSBJMzg3X0ZD VFJMX1JFR05VTSh0ZGVwKSAoSTM4N19TVDBfUkVHTlVNICh0ZGVwKSArIDgpCi0gI2RlZmluZSBJ Mzg3X0ZTVEFUX1JFR05VTSh0ZGVwKSAoSTM4N19GQ1RSTF9SRUdOVU0gKHRkZXApICsgMSkKLUBA IC00NSw2ICs0Nyw4IEBAIHN0cnVjdCB1aV9maWxlOwotICNkZWZpbmUgSTM4N19YTU0wX1JFR05V TSh0ZGVwKSAoSTM4N19TVDBfUkVHTlVNICh0ZGVwKSArIDE2KQotICNkZWZpbmUgSTM4N19NWENT Ul9SRUdOVU0odGRlcCkgXAotICAgKEkzODdfWE1NMF9SRUdOVU0gKHRkZXApICsgSTM4N19OVU1f WE1NX1JFR1MgKHRkZXApKQotKyNkZWZpbmUgSTM4N19ZTU1FTkRIX1JFR05VTSh0ZGVwKSBcCi0r ICAoSTM4N19ZTU0wSF9SRUdOVU0gKHRkZXApICsgSTM4N19OVU1fWU1NX1JFR1MgKHRkZXApKQot IAotIC8qIFByaW50IG91dCB0aGUgaTM4NyBmbG9hdGluZyBwb2ludCBzdGF0ZS4gICovCi0gCi1A QCAtOTksNiArMTAzLDExIEBAIGV4dGVybiB2b2lkIGkzODdfY29sbGVjdF9mc2F2ZSAoY29uc3Qg c3QKLSBleHRlcm4gdm9pZCBpMzg3X3N1cHBseV9meHNhdmUgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCByZWdudW0sCi0gCQkJCWNvbnN0IHZvaWQgKmZ4c2F2ZSk7Ci0gCi0rLyogU2lt aWxhciB0byBpMzg3X3N1cHBseV9meHNhdmUsIGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQgc3RhdGUu ICAqLwotKwotK2V4dGVybiB2b2lkIGkzODdfc3VwcGx5X3hzYXZlIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAotKwkJCSAgICAgICBjb25zdCB2b2lkICp4c2F2ZSk7Ci0r Ci0gLyogRmlsbCByZWdpc3RlciBSRUdOVU0gKGlmIGl0IGlzIGEgZmxvYXRpbmctcG9pbnQgb3Ig U1NFIHJlZ2lzdGVyKSBpbgotICAgICpGWFNBVkUgd2l0aCB0aGUgdmFsdWUgZnJvbSBSRUdDQUNI RS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSAgICBhbGwgcmVnaXN0ZXJzLiAgVGhp cyBmdW5jdGlvbiBkb2Vzbid0IHRvdWNoIGFueSBvZiB0aGUgcmVzZXJ2ZWQKLUBAIC0xMDcsNiAr MTE2LDExIEBAIGV4dGVybiB2b2lkIGkzODdfc3VwcGx5X2Z4c2F2ZSAoc3RydWN0IHIKLSBleHRl cm4gdm9pZCBpMzg3X2NvbGxlY3RfZnhzYXZlIChjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBpbnQgcmVnbnVtLAotIAkJCQkgdm9pZCAqZnhzYXZlKTsKLSAKLSsvKiBTaW1pbGFyIHRv IGkzODdfY29sbGVjdF9meHNhdmUsIGJ1dCB1c2UgWFNBVkUgZXh0ZW5kZWQgc3RhdGUuICAqLwot KwotK2V4dGVybiB2b2lkIGkzODdfY29sbGVjdF94c2F2ZSAoY29uc3Qgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwKLSsJCQkJaW50IHJlZ251bSwgdm9pZCAqeHNhdmUsIGludCBnY29yZSk7Ci0r Ci0gLyogUHJlcGFyZSB0aGUgRlBVIHN0YWNrIGluIFJFR0NBQ0hFIGZvciBhIGZ1bmN0aW9uIHJl dHVybi4gICovCi0gCi0gZXh0ZXJuIHZvaWQgaTM4N19yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1hdngtbGludXgu ZGF0CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVnZm9y bWF0cy9pMzg2L2FtZDY0LWF2eC1saW51eC5kYXQJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAw MDAgKzAyMDAKLUBAIC0wLDAgKzEsNzggQEAKLSsjIERPIE5PVCBFRElUOiBnZW5lcmF0ZWQgZnJv bSBpMzg2L2FtZDY0LWF2eC1saW51eC54bWwKLStuYW1lOmFtZDY0X2F2eF9saW51eAotK3htbHRh cmdldDphbWQ2NC1hdngtbGludXgueG1sCi0rZXhwZWRpdGU6cmJwLHJzcCxyaXAKLSs2NDpyYXgK LSs2NDpyYngKLSs2NDpyY3gKLSs2NDpyZHgKLSs2NDpyc2kKLSs2NDpyZGkKLSs2NDpyYnAKLSs2 NDpyc3AKLSs2NDpyOAotKzY0OnI5Ci0rNjQ6cjEwCi0rNjQ6cjExCi0rNjQ6cjEyCi0rNjQ6cjEz Ci0rNjQ6cjE0Ci0rNjQ6cjE1Ci0rNjQ6cmlwCi0rMzI6ZWZsYWdzCi0rMzI6Y3MKLSszMjpzcwot KzMyOmRzCi0rMzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3QwCi0rODA6c3QxCi0rODA6c3Qy Ci0rODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0rMzI6ZmN0cmwK LSszMjpmc3RhdAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZpb2ZmCi0rMzI6Zm9zZWcKLSsz Mjpmb29mZgotKzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6eG1tMgotKzEyODp4 bW0zCi0rMTI4OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0rMTI4OnhtbTcKLSsxMjg6eG1t OAotKzEyODp4bW05Ci0rMTI4OnhtbTEwCi0rMTI4OnhtbTExCi0rMTI4OnhtbTEyCi0rMTI4Onht bTEzCi0rMTI4OnhtbTE0Ci0rMTI4OnhtbTE1Ci0rMzI6bXhjc3IKLSs2NDpvcmlnX3JheAotKzEy ODp5bW0waAotKzEyODp5bW0xaAotKzEyODp5bW0yaAotKzEyODp5bW0zaAotKzEyODp5bW00aAot KzEyODp5bW01aAotKzEyODp5bW02aAotKzEyODp5bW03aAotKzEyODp5bW04aAotKzEyODp5bW05 aAotKzEyODp5bW0xMGgKLSsxMjg6eW1tMTFoCi0rMTI4OnltbTEyaAotKzEyODp5bW0xM2gKLSsx Mjg6eW1tMTRoCi0rMTI4OnltbTE1aAotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9hbWQ2NC1h dnguZGF0CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVn Zm9ybWF0cy9pMzg2L2FtZDY0LWF2eC5kYXQJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAg KzAyMDAKLUBAIC0wLDAgKzEsNzcgQEAKLSsjIERPIE5PVCBFRElUOiBnZW5lcmF0ZWQgZnJvbSBp Mzg2L2FtZDY0LWF2eC54bWwKLStuYW1lOmFtZDY0X2F2eAotK3htbHRhcmdldDphbWQ2NC1hdngu eG1sCi0rZXhwZWRpdGU6cmJwLHJzcCxyaXAKLSs2NDpyYXgKLSs2NDpyYngKLSs2NDpyY3gKLSs2 NDpyZHgKLSs2NDpyc2kKLSs2NDpyZGkKLSs2NDpyYnAKLSs2NDpyc3AKLSs2NDpyOAotKzY0OnI5 Ci0rNjQ6cjEwCi0rNjQ6cjExCi0rNjQ6cjEyCi0rNjQ6cjEzCi0rNjQ6cjE0Ci0rNjQ6cjE1Ci0r NjQ6cmlwCi0rMzI6ZWZsYWdzCi0rMzI6Y3MKLSszMjpzcwotKzMyOmRzCi0rMzI6ZXMKLSszMjpm cwotKzMyOmdzCi0rODA6c3QwCi0rODA6c3QxCi0rODA6c3QyCi0rODA6c3QzCi0rODA6c3Q0Ci0r ODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0rMzI6ZmN0cmwKLSszMjpmc3RhdAotKzMyOmZ0YWcK LSszMjpmaXNlZwotKzMyOmZpb2ZmCi0rMzI6Zm9zZWcKLSszMjpmb29mZgotKzMyOmZvcAotKzEy ODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6eG1tMgotKzEyODp4bW0zCi0rMTI4OnhtbTQKLSsxMjg6 eG1tNQotKzEyODp4bW02Ci0rMTI4OnhtbTcKLSsxMjg6eG1tOAotKzEyODp4bW05Ci0rMTI4Onht bTEwCi0rMTI4OnhtbTExCi0rMTI4OnhtbTEyCi0rMTI4OnhtbTEzCi0rMTI4OnhtbTE0Ci0rMTI4 OnhtbTE1Ci0rMzI6bXhjc3IKLSsxMjg6eW1tMGgKLSsxMjg6eW1tMWgKLSsxMjg6eW1tMmgKLSsx Mjg6eW1tM2gKLSsxMjg6eW1tNGgKLSsxMjg6eW1tNWgKLSsxMjg6eW1tNmgKLSsxMjg6eW1tN2gK LSsxMjg6eW1tOGgKLSsxMjg6eW1tOWgKLSsxMjg6eW1tMTBoCi0rMTI4OnltbTExaAotKzEyODp5 bW0xMmgKLSsxMjg6eW1tMTNoCi0rMTI4OnltbTE0aAotKzEyODp5bW0xNWgKLS0tLSAuL2dkYi9y ZWdmb3JtYXRzL2kzODYvaTM4Ni1hdngtbGludXguZGF0CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAw MDAwMDAwICswMTAwCi0rKysgLi9nZGIvcmVnZm9ybWF0cy9pMzg2L2kzODYtYXZ4LWxpbnV4LmRh dAkyMDEwLTA0LTAzIDIxOjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1NCBAQAot KyMgRE8gTk9UIEVESVQ6IGdlbmVyYXRlZCBmcm9tIGkzODYvaTM4Ni1hdngtbGludXgueG1sCi0r bmFtZTppMzg2X2F2eF9saW51eAotK3htbHRhcmdldDppMzg2LWF2eC1saW51eC54bWwKLStleHBl ZGl0ZTplYnAsZXNwLGVpcAotKzMyOmVheAotKzMyOmVjeAotKzMyOmVkeAotKzMyOmVieAotKzMy OmVzcAotKzMyOmVicAotKzMyOmVzaQotKzMyOmVkaQotKzMyOmVpcAotKzMyOmVmbGFncwotKzMy OmNzCi0rMzI6c3MKLSszMjpkcwotKzMyOmVzCi0rMzI6ZnMKLSszMjpncwotKzgwOnN0MAotKzgw OnN0MQotKzgwOnN0MgotKzgwOnN0MwotKzgwOnN0NAotKzgwOnN0NQotKzgwOnN0NgotKzgwOnN0 NwotKzMyOmZjdHJsCi0rMzI6ZnN0YXQKLSszMjpmdGFnCi0rMzI6ZmlzZWcKLSszMjpmaW9mZgot KzMyOmZvc2VnCi0rMzI6Zm9vZmYKLSszMjpmb3AKLSsxMjg6eG1tMAotKzEyODp4bW0xCi0rMTI4 OnhtbTIKLSsxMjg6eG1tMwotKzEyODp4bW00Ci0rMTI4OnhtbTUKLSsxMjg6eG1tNgotKzEyODp4 bW03Ci0rMzI6bXhjc3IKLSszMjpvcmlnX2VheAotKzEyODp5bW0waAotKzEyODp5bW0xaAotKzEy ODp5bW0yaAotKzEyODp5bW0zaAotKzEyODp5bW00aAotKzEyODp5bW01aAotKzEyODp5bW02aAot KzEyODp5bW03aAotLS0tIC4vZ2RiL3JlZ2Zvcm1hdHMvaTM4Ni9pMzg2LWF2eC5kYXQJMTk3MC0w MS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9yZWdmb3JtYXRzL2kzODYv aTM4Ni1hdnguZGF0CTIwMTAtMDQtMDMgMjE6MTI6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCww ICsxLDUzIEBACi0rIyBETyBOT1QgRURJVDogZ2VuZXJhdGVkIGZyb20gaTM4Ni9pMzg2LWF2eC54 bWwKLStuYW1lOmkzODZfYXZ4Ci0reG1sdGFyZ2V0OmkzODYtYXZ4LnhtbAotK2V4cGVkaXRlOmVi cCxlc3AsZWlwCi0rMzI6ZWF4Ci0rMzI6ZWN4Ci0rMzI6ZWR4Ci0rMzI6ZWJ4Ci0rMzI6ZXNwCi0r MzI6ZWJwCi0rMzI6ZXNpCi0rMzI6ZWRpCi0rMzI6ZWlwCi0rMzI6ZWZsYWdzCi0rMzI6Y3MKLSsz MjpzcwotKzMyOmRzCi0rMzI6ZXMKLSszMjpmcwotKzMyOmdzCi0rODA6c3QwCi0rODA6c3QxCi0r ODA6c3QyCi0rODA6c3QzCi0rODA6c3Q0Ci0rODA6c3Q1Ci0rODA6c3Q2Ci0rODA6c3Q3Ci0rMzI6 ZmN0cmwKLSszMjpmc3RhdAotKzMyOmZ0YWcKLSszMjpmaXNlZwotKzMyOmZpb2ZmCi0rMzI6Zm9z ZWcKLSszMjpmb29mZgotKzMyOmZvcAotKzEyODp4bW0wCi0rMTI4OnhtbTEKLSsxMjg6eG1tMgot KzEyODp4bW0zCi0rMTI4OnhtbTQKLSsxMjg6eG1tNQotKzEyODp4bW02Ci0rMTI4OnhtbTcKLSsz MjpteGNzcgotKzEyODp5bW0waAotKzEyODp5bW0xaAotKzEyODp5bW0yaAotKzEyODp5bW0zaAot KzEyODp5bW00aAotKzEyODp5bW01aAotKzEyODp5bW02aAotKzEyODp5bW03aAotLS0tIC4vZ2Ri L3Rlc3RzdWl0ZS9DaGFuZ2VMb2cucHNldWRvCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAw ICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZy5wc2V1ZG8JMjAxMC0wNC0wMyAy MToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMjYgQEAKLSsyMDEwLTAyLTE4ICBI LkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogZ2RiLmFyY2gvYW1kNjQtZHdv cmQuZXhwOiBOZXcuCi0rCi0rCSogZ2RiLmFyY2gvYW1kNjQtd29yZC5leHA6IFNpbXBsaWZpZWQu Ci0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKwkq IGdkYi5hcmNoL2FtZDY0LXdvcmQuZXhwOiBOZXcuCi0rCSogZ2RiLmFyY2gvaTM4Ni13b3JkLmV4 cDogTGlrZXdpc2UuCi0rCi0rCSogZ2RiLmFyY2gvaTM4Ni1ieXRlLmV4cCAobnJfcmVncyk6IFJl bW92ZWQuCi0rCi0rMjAxMC0wMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgot KwotKwkqIGdkYi5hcmNoL2FtZDY0LXBzZXVkby5jOiBOZXcuCi0rCSogZ2RiLmFyY2gvaTM4Ni1i eXRlLmV4cDogTGlrZXdpc2UuCi0rCi0rCSogZ2RiLmFyY2gvYW1kNjQtYnl0ZS5leHA6IFVwZGF0 ZWQuCi0rCi0rCSogZ2RiLmFyY2gvaTM4Ni1wc2V1ZG8uYzogTWFrZSBpdCAzMmJpdCBvbmx5Lgot KwotKzIwMTAtMDItMTggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBn ZGIuYXJjaC9hbWQ2NC1ieXRlLmV4cDogTmV3LgotKwkqIGdkYi5hcmNoL2kzODYtcHNldWRvLmM6 IExpa2V3aXNlLgotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cueGNyCTE5NzAtMDEtMDEg MDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZy54 Y3IJMjAxMC0wNC0wMyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNiBAQAot KzIwMTAtMDMtMjggIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBnZGIu YXJjaC9pMzg2LWF2eC5jOiBOZXcuCi0rCSogZ2RiLmFyY2gvaTM4Ni1hdnguZXhwOiBMaWtld2lz ZS4KLSsKLSsJKiBnZGIuYXJjaC9pMzg2LWNwdWlkLmg6IFVwZGF0ZWQgZnJvbSBnY2MgNC40Lgot LS0tIC4vZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cueG1sCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAw MDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZy54bWwJMjAxMC0wNC0w MyAyMToxMjozMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNCBAQAotKzIwMTAtMDItMjIg IEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBnZGIueG1sL3RkZXNjLXJl Z3MuZXhwIChhcmNoaXRlY3R1cmUpOiBOZXcuICBTZXQgaXQgZm9yIHg4Ni4KLSsJKGxvYWRfZGVz Y3JpcHRpb24pOiBTZXQgYXJjaGl0ZWN0dXJlIGlmIGRlZmluZWQuCi0tLS0gLi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL2kzODYtYXZ4LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1hdnguYwkyMDEwLTA0LTAzIDIx OjEyOjMyLjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwxMjggQEAKLSsvKiBUZXN0IHByb2dy YW0gZm9yIEFWWCByZWdpc3RlcnMuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8 c3RkaW8uaD4KLSsjaW5jbHVkZSAiaTM4Ni1jcHVpZC5oIgotKwotK3R5cGVkZWYgc3RydWN0IHsK LSsgIGZsb2F0IGZbOF07Ci0rfSB2OHNmX3Q7Ci0rCi0rCi0rdjhzZl90IGRhdGFbXSA9Ci0rICB7 Ci0rICAgIHsgeyAgMC4wLCAgMC4xMjUsICAwLjI1LCAgMC4zNzUsICAwLjUwLCAgMC42MjUsICAw Ljc1LCAgMC44NzUgfSB9LAotKyAgICB7IHsgIDEuMCwgIDEuMTI1LCAgMS4yNSwgIDEuMzc1LCAg MS41MCwgIDEuNjI1LCAgMS43NSwgIDEuODc1IH0gfSwKLSsgICAgeyB7ICAyLjAsICAyLjEyNSwg IDIuMjUsICAyLjM3NSwgIDIuNTAsICAyLjYyNSwgIDIuNzUsICAyLjg3NSB9IH0sCi0rICAgIHsg eyAgMy4wLCAgMy4xMjUsICAzLjI1LCAgMy4zNzUsICAzLjUwLCAgMy42MjUsICAzLjc1LCAgMy44 NzUgfSB9LAotKyAgICB7IHsgIDQuMCwgIDQuMTI1LCAgNC4yNSwgIDQuMzc1LCAgNC41MCwgIDQu NjI1LCAgNC43NSwgIDQuODc1IH0gfSwKLSsgICAgeyB7ICA1LjAsICA1LjEyNSwgIDUuMjUsICA1 LjM3NSwgIDUuNTAsICA1LjYyNSwgIDUuNzUsICA1Ljg3NSB9IH0sCi0rICAgIHsgeyAgNi4wLCAg Ni4xMjUsICA2LjI1LCAgNi4zNzUsICA2LjUwLCAgNi42MjUsICA2Ljc1LCAgNi44NzUgfSB9LAot KyAgICB7IHsgIDcuMCwgIDcuMTI1LCAgNy4yNSwgIDcuMzc1LCAgNy41MCwgIDcuNjI1LCAgNy43 NSwgIDcuODc1IH0gfSwKLSsjaWZkZWYgX194ODZfNjRfXwotKyAgICB7IHsgIDguMCwgIDguMTI1 LCAgOC4yNSwgIDguMzc1LCAgOC41MCwgIDguNjI1LCAgOC43NSwgIDguODc1IH0gfSwKLSsgICAg eyB7ICA5LjAsICA5LjEyNSwgIDkuMjUsICA5LjM3NSwgIDkuNTAsICA5LjYyNSwgIDkuNzUsICA5 Ljg3NSB9IH0sCi0rICAgIHsgeyAxMC4wLCAxMC4xMjUsIDEwLjI1LCAxMC4zNzUsIDEwLjUwLCAx MC42MjUsIDEwLjc1LCAxMC44NzUgfSB9LAotKyAgICB7IHsgMTEuMCwgMTEuMTI1LCAxMS4yNSwg MTEuMzc1LCAxMS41MCwgMTEuNjI1LCAxMS43NSwgMTEuODc1IH0gfSwKLSsgICAgeyB7IDEyLjAs IDEyLjEyNSwgMTIuMjUsIDEyLjM3NSwgMTIuNTAsIDEyLjYyNSwgMTIuNzUsIDEyLjg3NSB9IH0s Ci0rICAgIHsgeyAxMy4wLCAxMy4xMjUsIDEzLjI1LCAxMy4zNzUsIDEzLjUwLCAxMy42MjUsIDEz Ljc1LCAxMy44NzUgfSB9LAotKyAgICB7IHsgMTQuMCwgMTQuMTI1LCAxNC4yNSwgMTQuMzc1LCAx NC41MCwgMTQuNjI1LCAxNC43NSwgMTQuODc1IH0gfSwKLSsgICAgeyB7IDE1LjAsIDE1LjEyNSwg MTUuMjUsIDE1LjM3NSwgMTUuNTAsIDE1LjYyNSwgMTUuNzUsIDE1Ljg3NSB9IH0sCi0rI2VuZGlm Ci0rICB9OwotKwotKwotK2ludAotK2hhdmVfYXZ4ICh2b2lkKQotK3sKLSsgIHVuc2lnbmVkIGlu dCBlYXgsIGVieCwgZWN4LCBlZHg7Ci0rCi0rICBpZiAoIV9fZ2V0X2NwdWlkICgxLCAmZWF4LCAm ZWJ4LCAmZWN4LCAmZWR4KSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoKGVjeCAmIChiaXRf QVZYIHwgYml0X09TWFNBVkUpKSA9PSAoYml0X0FWWCB8IGJpdF9PU1hTQVZFKSkKLSsgICAgcmV0 dXJuIDE7Ci0rICBlbHNlCi0rICAgIHJldHVybiAwOwotK30KLSsKLStpbnQKLSttYWluIChpbnQg YXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgaWYgKGhhdmVfYXZ4ICgpKQotKyAgICB7Ci0rICAg ICAgYXNtICgidm1vdmFwcyAwKCUwKSwgJSV5bW0wXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBz IDMyKCUwKSwgJSV5bW0xXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzIDY0KCUwKSwgJSV5bW0y XG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzIDk2KCUwKSwgJSV5bW0zXG5cdCIKLSsgICAgICAg ICAgICJ2bW92YXBzIDEyOCglMCksICUleW1tNFxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAx NjAoJTApLCAlJXltbTVcblx0IgotKyAgICAgICAgICAgInZtb3ZhcHMgMTkyKCUwKSwgJSV5bW02 XG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzIDIyNCglMCksICUleW1tN1xuXHQiCi0rICAgICAg ICAgICA6IC8qIG5vIG91dHB1dCBvcGVyYW5kcyAqLwotKyAgICAgICAgICAgOiAiciIgKGRhdGEp IAotKyAgICAgICAgICAgOiAieG1tMCIsICJ4bW0xIiwgInhtbTIiLCAieG1tMyIsICJ4bW00Iiwg InhtbTUiLCAieG1tNiIsICJ4bW03Iik7Ci0rI2lmZGVmIF9feDg2XzY0X18KLSsgICAgICBhc20g KCJ2bW92YXBzIDI1NiglMCksICUleW1tOFxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAyODgo JTApLCAlJXltbTlcblx0IgotKyAgICAgICAgICAgInZtb3ZhcHMgMzIwKCUwKSwgJSV5bW0xMFxu XHQiCi0rICAgICAgICAgICAidm1vdmFwcyAzNTIoJTApLCAlJXltbTExXG5cdCIKLSsgICAgICAg ICAgICJ2bW92YXBzIDM4NCglMCksICUleW1tMTJcblx0IgotKyAgICAgICAgICAgInZtb3ZhcHMg NDE2KCUwKSwgJSV5bW0xM1xuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyA0NDgoJTApLCAlJXlt bTE0XG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzIDQ4MCglMCksICUleW1tMTVcblx0IgotKyAg ICAgICAgICAgOiAvKiBubyBvdXRwdXQgb3BlcmFuZHMgKi8KLSsgICAgICAgICAgIDogInIiIChk YXRhKSAKLSsgICAgICAgICAgIDogInhtbTgiLCAieG1tOSIsICJ4bW0xMCIsICJ4bW0xMSIsICJ4 bW0xMiIsICJ4bW0xMyIsICJ4bW0xNCIsICJ4bW0xNSIpOwotKyNlbmRpZgotKwotKyAgICAgIGFz bSAoIm5vcCIpOyAvKiBmaXJzdCBicmVha3BvaW50IGhlcmUgKi8KLSsKLSsgICAgICBhc20gKAot KyAgICAgICAgICAgInZtb3ZhcHMgJSV5bW0wLCAwKCUwKVxuXHQiCi0rICAgICAgICAgICAidm1v dmFwcyAlJXltbTEsIDMyKCUwKVxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAlJXltbTIsIDY0 KCUwKVxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAlJXltbTMsIDk2KCUwKVxuXHQiCi0rICAg ICAgICAgICAidm1vdmFwcyAlJXltbTQsIDEyOCglMClcblx0IgotKyAgICAgICAgICAgInZtb3Zh cHMgJSV5bW01LCAxNjAoJTApXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzICUleW1tNiwgMTky KCUwKVxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAlJXltbTcsIDIyNCglMClcblx0IgotKyAg ICAgICAgICAgOiAvKiBubyBvdXRwdXQgb3BlcmFuZHMgKi8KLSsgICAgICAgICAgIDogInIiIChk YXRhKSAKLSsgICAgICAgICAgIDogInhtbTAiLCAieG1tMSIsICJ4bW0yIiwgInhtbTMiLCAieG1t NCIsICJ4bW01IiwgInhtbTYiLCAieG1tNyIpOwotKyNpZmRlZiBfX3g4Nl82NF9fCi0rICAgICAg YXNtICgKLSsgICAgICAgICAgICJ2bW92YXBzICUleW1tOCwgMjU2KCUwKVxuXHQiCi0rICAgICAg ICAgICAidm1vdmFwcyAlJXltbTksIDI4OCglMClcblx0IgotKyAgICAgICAgICAgInZtb3ZhcHMg JSV5bW0xMCwgMzIwKCUwKVxuXHQiCi0rICAgICAgICAgICAidm1vdmFwcyAlJXltbTExLCAzNTIo JTApXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzICUleW1tMTIsIDM4NCglMClcblx0IgotKyAg ICAgICAgICAgInZtb3ZhcHMgJSV5bW0xMywgNDE2KCUwKVxuXHQiCi0rICAgICAgICAgICAidm1v dmFwcyAlJXltbTE0LCA0NDgoJTApXG5cdCIKLSsgICAgICAgICAgICJ2bW92YXBzICUleW1tMTUs IDQ4MCglMClcblx0IgotKyAgICAgICAgICAgOiAvKiBubyBvdXRwdXQgb3BlcmFuZHMgKi8KLSsg ICAgICAgICAgIDogInIiIChkYXRhKSAKLSsgICAgICAgICAgIDogInhtbTgiLCAieG1tOSIsICJ4 bW0xMCIsICJ4bW0xMSIsICJ4bW0xMiIsICJ4bW0xMyIsICJ4bW0xNCIsICJ4bW0xNSIpOwotKyNl bmRpZgotKwotKyAgICAgIHB1dHMgKCJCeWUhIik7IC8qIHNlY29uZCBicmVha3BvaW50IGhlcmUg Ki8KLSsgICAgfQotKwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC9pMzg2LWF2eC5leHAJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKLSsr KyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1hdnguZXhwCTIwMTAtMDQtMDMgMjE6MTI6 MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDExMCBAQAotKyMgQ29weXJpZ2h0IDIwMTAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotKwotKyMgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFk ZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86Ci0rIyBidWctZ2RiQGdudS5vcmcKLSsKLSsjIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgotKwotK2lmICR0cmFjZWxldmVsIHsK LSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVn X2lkIDAKLSsKLStpZiB7ICFbaXN0YXJnZXQgaT84Ni0qLSpdICYmICFbaXN0YXJnZXQgeDg2XzY0 LSotKiBdIH0gewotKyAgICB2ZXJib3NlICJTa2lwcGluZyB4ODYgQVZYIHRlc3RzLiIKLSsgICAg cmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiaTM4Ni1hdngiCi0rc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K LSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTEK LSt9Ci0rCi0rc2V0IGFkZGl0aW9uYWxfZmxhZ3MgIiIKLStpZiBbdGVzdF9jb21waWxlcl9pbmZv IGdjYypdIHsKLSsgICAgc2V0IGFkZGl0aW9uYWxfZmxhZ3MgImFkZGl0aW9uYWxfZmxhZ3M9LW1h dngiCi0rfQotKwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICRhZGRpdGlvbmFsX2Zs YWdzXV0gIT0gIiIgfSB7Ci0rICAgIHVuc3VwcG9ydGVkICJjb21waWxlciBkb2VzIG5vdCBzdXBw b3J0IEFWWCIKLSsgICAgcmV0dXJuCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQot KwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIGdkYl9zdXBwcmVzc190ZXN0cwotK30K LSsKLStzZW5kX2dkYiAicHJpbnQgaGF2ZV9hdnggKClcciIKLStnZGJfZXhwZWN0IHsKLSsgICAg LXJlICIuLiA9IDFcclxuJGdkYl9wcm9tcHQgIiB7Ci0rICAgICAgICBwYXNzICJjaGVjayB3aGV0 aGVyIHByb2Nlc3NvciBzdXBwb3J0cyBBVlgiCi0rICAgIH0KLSsgICAgLXJlICIuLiA9IDBcclxu JGdkYl9wcm9tcHQgIiB7Ci0rICAgICAgICB2ZXJib3NlICJwcm9jZXNzb3IgZG9lcyBub3Qgc3Vw cG9ydCBBVlg7IHNraXBwaW5nIEFWWCB0ZXN0cyIKLSsgICAgICAgIHJldHVybgotKyAgICB9Ci0r ICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAgICBmYWlsICJjaGVjayB3aGV0aGVy IHByb2Nlc3NvciBzdXBwb3J0cyBBVlgiCi0rICAgIH0KLSsgICAgdGltZW91dCB7Ci0rICAgICAg ICBmYWlsICJjaGVjayB3aGV0aGVyIHByb2Nlc3NvciBzdXBwb3J0cyBBVlggKHRpbWVvdXQpIgot KyAgICB9Ci0rfQotKwotK2dkYl90ZXN0ICJicmVhayBbZ2RiX2dldF9saW5lX251bWJlciAiZmly c3QgYnJlYWtwb2ludCBoZXJlIl0iIFwKLSsgICAgICAgICAiQnJlYWtwb2ludCAuKiBhdCAuKmkz ODYtYXZ4LmMuKiIgXAotKyAgICAgICAgICJzZXQgZmlyc3QgYnJlYWtwb2ludCBpbiBtYWluIgot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBmaXJzdCBicmVha3BvaW50 IGluIG1haW4iCi0rCi0raWYgW2lzdGFyZ2V0IGk/ODYtKi0qXSB7Ci0rICAgIHNldCBucl9yZWdz IDgKLSt9IGVsc2UgewotKyAgICBzZXQgbnJfcmVncyAxNgotK30KLSsKLStmb3IgeyBzZXQgciAw IH0geyAkciA8ICRucl9yZWdzIH0geyBpbmNyIHIgfSB7Ci0rICAgIGdkYl90ZXN0ICJwcmludCBc JHltbSRyLnY4X2Zsb2F0IiBcCi0rICAgICAgICAiLi4gPSBcXHskciwgJHIuMTI1LCAkci4yNSwg JHIuMzc1LCAkci41LCAkci42MjUsICRyLjc1LCAkci44NzVcXH0uKiIgXAotKyAgICAgICAgImNo ZWNrIGZsb2F0IGNvbnRlbnRzIG9mICV5bW0kciIKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkeW1t JHIudjMyX2ludDgiIFwKLSsgICAgICAgICIuLiA9IFxceygtP1xbMC05XF0rLCApezMxfS0/XFsw LTlcXStcXH0uKiIgXAotKyAgICAgICAgImNoZWNrIGludDggY29udGVudHMgb2YgJXltbSRyIgot K30KLSsKLStmb3IgeyBzZXQgciAwIH0geyAkciA8ICRucl9yZWdzIH0geyBpbmNyIHIgfSB7Ci0r ICAgIGdkYl90ZXN0ICJzZXQgdmFyIFwkeW1tJHIudjhfZmxvYXRcWzBcXSA9ICRyICsgMTAiICIi ICJzZXQgJXltbSRyIgotK30KLSsKLStnZGJfdGVzdCAiYnJlYWsgW2dkYl9nZXRfbGluZV9udW1i ZXIgInNlY29uZCBicmVha3BvaW50IGhlcmUiXSIgXAotKyAgICAgICAgICJCcmVha3BvaW50IC4q IGF0IC4qaTM4Ni1hdnguYy4qIiBcCi0rICAgICAgICAgInNldCBzZWNvbmQgYnJlYWtwb2ludCBp biBtYWluIgotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBzZWNvbmQg YnJlYWtwb2ludCBpbiBtYWluIgotKwotK2ZvciB7IHNldCByIDAgfSB7ICRyIDwgJG5yX3JlZ3Mg fSB7IGluY3IgciB9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50IGRhdGFcWyRyXF0iIFwKLSsgICAg ICAgICIuLiA9IFxce2YgPSBcXHtbZXhwciAkciArIDEwXSwgJHIuMTI1LCAkci4yNSwgJHIuMzc1 LCAkci41LCAkci42MjUsICRyLjc1LCAkci44NzVcXH1cXH0uKiIgXAotKyAgICAgICAgImNoZWNr IGNvbnRlbnRzIG9mIGRhdGFcWyRyXF0iCi0rfQotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC9pMzg2LWNwdWlkLmgJMjAxMC0wMS0wMSAwODozMjowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAu L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1jcHVpZC5oCTIwMTAtMDQtMDMgMjE6MTI6MzIu MDAwMDAwMDAwICswMjAwCi1AQCAtMSwzMCArMSwxODYgQEAKLS0vKiBIZWxwZXIgZmlsZSBmb3Ig aTM4NiBwbGF0Zm9ybS4gIFJ1bnRpbWUgY2hlY2sgZm9yIE1NWC9TU0UvU1NFMiBzdXBwb3J0Lgot Ky8qIEhlbHBlciBmaWxlIGZvciBpMzg2IHBsYXRmb3JtLiAgUnVudGltZSBjaGVjayBmb3IgTU1Y L1NTRS9TU0UyL0FWWAotKyAqIHN1cHBvcnQuIENvcGllZCBmcm9tIGdjYyA0LjQuCi0rICoKLSsg KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rICoKLSsgKiBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAqIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkKLSsgKiBsYXRlciB2ZXJzaW9uLgotKyAqIAotKyAqIFRoaXMgZmlsZSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgKiBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICog TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUKLSsgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r ICogCi0rICogVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRl ZCBhZGRpdGlvbmFsCi0rICogcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRoZSBHQ0MgUnVudGlt ZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgotKyAqIDMuMSwgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0rICogCi0rICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCi0rICog YSBjb3B5IG9mIHRoZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsKLSsgKiBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJ TUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSsgKiA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rICovCi0rCi0rLyogJWVjeCAqLwotKyNkZWZpbmUgYml0X1NTRTMJKDEgPDwg MCkKLSsjZGVmaW5lIGJpdF9QQ0xNVUwJKDEgPDwgMSkKLSsjZGVmaW5lIGJpdF9TU1NFMwkoMSA8 PCA5KQotKyNkZWZpbmUgYml0X0ZNQQkJKDEgPDwgMTIpCi0rI2RlZmluZSBiaXRfQ01QWENIRzE2 QgkoMSA8PCAxMykKLSsjZGVmaW5lIGJpdF9TU0U0XzEJKDEgPDwgMTkpCi0rI2RlZmluZSBiaXRf U1NFNF8yCSgxIDw8IDIwKQotKyNkZWZpbmUgYml0X01PVkJFCSgxIDw8IDIyKQotKyNkZWZpbmUg Yml0X1BPUENOVAkoMSA8PCAyMykKLSsjZGVmaW5lIGJpdF9BRVMJCSgxIDw8IDI1KQotKyNkZWZp bmUgYml0X1hTQVZFCSgxIDw8IDI2KQotKyNkZWZpbmUgYml0X09TWFNBVkUJKDEgPDwgMjcpCi0r I2RlZmluZSBiaXRfQVZYCQkoMSA8PCAyOCkKLSsKLSsvKiAlZWR4ICovCi0rI2RlZmluZSBiaXRf Q01QWENIRzhCCSgxIDw8IDgpCi0rI2RlZmluZSBiaXRfQ01PVgkoMSA8PCAxNSkKLSsjZGVmaW5l IGJpdF9NTVgJCSgxIDw8IDIzKQotKyNkZWZpbmUgYml0X0ZYU0FWRQkoMSA8PCAyNCkKLSsjZGVm aW5lIGJpdF9TU0UJCSgxIDw8IDI1KQotKyNkZWZpbmUgYml0X1NTRTIJKDEgPDwgMjYpCi0rCi0r LyogRXh0ZW5kZWQgRmVhdHVyZXMgKi8KLSsvKiAlZWN4ICovCi0rI2RlZmluZSBiaXRfTEFIRl9M TQkoMSA8PCAwKQotKyNkZWZpbmUgYml0X0FCTQkJKDEgPDwgNSkKLSsjZGVmaW5lIGJpdF9TU0U0 YQkoMSA8PCA2KQotKyNkZWZpbmUgYml0X1hPUCAgICAgICAgICgxIDw8IDExKQotKyNkZWZpbmUg Yml0X0xXUCAJKDEgPDwgMTUpCi0rI2RlZmluZSBiaXRfRk1BNCAgICAgICAgKDEgPDwgMTYpCi0r Ci0rLyogJWVkeCAqLwotKyNkZWZpbmUgYml0X0xNCQkoMSA8PCAyOSkKLSsjZGVmaW5lIGJpdF8z RE5PV1AJKDEgPDwgMzApCi0rI2RlZmluZSBiaXRfM0ROT1cJKDEgPDwgMzEpCi0rCi0rCi0rI2lm IGRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX19QSUNfXykKLSsvKiAlZWJ4IG1heSBiZSB0 aGUgUElDIHJlZ2lzdGVyLiAgKi8KLSsjaWYgX19HTlVDX18gPj0gMwotKyNkZWZpbmUgX19jcHVp ZChsZXZlbCwgYSwgYiwgYywgZCkJCQlcCi0rICBfX2FzbV9fICgieGNoZ3tsfVx0eyUlfWVieCwg JTFcblx0IgkJCVwKLSsJICAgImNwdWlkXG5cdCIJCQkJCVwKLSsJICAgInhjaGd7bH1cdHslJX1l YngsICUxXG5cdCIJCQlcCi0rCSAgIDogIj1hIiAoYSksICI9ciIgKGIpLCAiPWMiIChjKSwgIj1k IiAoZCkJXAotKwkgICA6ICIwIiAobGV2ZWwpKQotKwotKyNkZWZpbmUgX19jcHVpZF9jb3VudChs ZXZlbCwgY291bnQsIGEsIGIsIGMsIGQpCQlcCi0rICBfX2FzbV9fICgieGNoZ3tsfVx0eyUlfWVi eCwgJTFcblx0IgkJCVwKLSsJICAgImNwdWlkXG5cdCIJCQkJCVwKLSsJICAgInhjaGd7bH1cdHsl JX1lYngsICUxXG5cdCIJCQlcCi0rCSAgIDogIj1hIiAoYSksICI9ciIgKGIpLCAiPWMiIChjKSwg Ij1kIiAoZCkJXAotKwkgICA6ICIwIiAobGV2ZWwpLCAiMiIgKGNvdW50KSkKLSsjZWxzZQotKy8q IEhvc3QgR0NDcyBvbGRlciB0aGFuIDMuMCB3ZXJlbid0IHN1cHBvcnRpbmcgSW50ZWwgYXNtIHN5 bnRheAotKyAgIG5vciBhbHRlcm5hdGl2ZXMgaW4gaTM4NiBjb2RlLiAgKi8KLSsjZGVmaW5lIF9f Y3B1aWQobGV2ZWwsIGEsIGIsIGMsIGQpCQkJXAotKyAgX19hc21fXyAoInhjaGdsXHQlJWVieCwg JTFcblx0IgkJCVwKLSsJICAgImNwdWlkXG5cdCIJCQkJCVwKLSsJICAgInhjaGdsXHQlJWVieCwg JTFcblx0IgkJCVwKLSsJICAgOiAiPWEiIChhKSwgIj1yIiAoYiksICI9YyIgKGMpLCAiPWQiIChk KQlcCi0rCSAgIDogIjAiIChsZXZlbCkpCi0rCi0rI2RlZmluZSBfX2NwdWlkX2NvdW50KGxldmVs LCBjb3VudCwgYSwgYiwgYywgZCkJCVwKLSsgIF9fYXNtX18gKCJ4Y2hnbFx0JSVlYngsICUxXG5c dCIJCQlcCi0rCSAgICJjcHVpZFxuXHQiCQkJCQlcCi0rCSAgICJ4Y2hnbFx0JSVlYngsICUxXG5c dCIJCQlcCi0rCSAgIDogIj1hIiAoYSksICI9ciIgKGIpLCAiPWMiIChjKSwgIj1kIiAoZCkJXAot KwkgICA6ICIwIiAobGV2ZWwpLCAiMiIgKGNvdW50KSkKLSsjZW5kaWYKLSsjZWxzZQotKyNkZWZp bmUgX19jcHVpZChsZXZlbCwgYSwgYiwgYywgZCkJCQlcCi0rICBfX2FzbV9fICgiY3B1aWRcblx0 IgkJCQkJXAotKwkgICA6ICI9YSIgKGEpLCAiPWIiIChiKSwgIj1jIiAoYyksICI9ZCIgKGQpCVwK LSsJICAgOiAiMCIgKGxldmVsKSkKLSsKLSsjZGVmaW5lIF9fY3B1aWRfY291bnQobGV2ZWwsIGNv dW50LCBhLCBiLCBjLCBkKQkJXAotKyAgX19hc21fXyAoImNwdWlkXG5cdCIJCQkJCVwKLSsJICAg OiAiPWEiIChhKSwgIj1iIiAoYiksICI9YyIgKGMpLCAiPWQiIChkKQlcCi0rCSAgIDogIjAiIChs ZXZlbCksICIyIiAoY291bnQpKQotKyNlbmRpZgotKwotKy8qIFJldHVybiBoaWdoZXN0IHN1cHBv cnRlZCBpbnB1dCB2YWx1ZSBmb3IgY3B1aWQgaW5zdHJ1Y3Rpb24uICBleHQgY2FuCi0rICAgYmUg ZWl0aGVyIDB4MCBvciAweDgwMDAwMDAgdG8gcmV0dXJuIGhpZ2hlc3Qgc3VwcG9ydGVkIHZhbHVl IGZvcgotKyAgIGJhc2ljIG9yIGV4dGVuZGVkIGNwdWlkIGluZm9ybWF0aW9uLiAgRnVuY3Rpb24g cmV0dXJucyAwIGlmIGNwdWlkCi0rICAgaXMgbm90IHN1cHBvcnRlZCBvciB3aGF0ZXZlciBjcHVp ZCByZXR1cm5zIGluIGVheCByZWdpc3Rlci4gIElmIHNpZwotKyAgIHBvaW50ZXIgaXMgbm9uLW51 bGwsIHRoZW4gZmlyc3QgZm91ciBieXRlcyBvZiB0aGUgc2lnbmF0dXJlCi0rICAgKGFzIGZvdW5k IGluIGVieCByZWdpc3RlcikgYXJlIHJldHVybmVkIGluIGxvY2F0aW9uIHBvaW50ZWQgYnkgc2ln LiAgKi8KLSsKLStzdGF0aWMgX19pbmxpbmUgdW5zaWduZWQgaW50Ci0rX19nZXRfY3B1aWRfbWF4 ICh1bnNpZ25lZCBpbnQgX19leHQsIHVuc2lnbmVkIGludCAqX19zaWcpCi0rewotKyAgdW5zaWdu ZWQgaW50IF9fZWF4LCBfX2VieCwgX19lY3gsIF9fZWR4OwotKwotKyNpZm5kZWYgX194ODZfNjRf XwotKyNpZiBfX0dOVUNfXyA+PSAzCi0rICAvKiBTZWUgaWYgd2UgY2FuIHVzZSBjcHVpZC4gIE9u IEFNRDY0IHdlIGFsd2F5cyBjYW4uICAqLwotKyAgX19hc21fXyAoInB1c2hme2x8ZH1cblx0Igot KwkgICAicHVzaGZ7bHxkfVxuXHQiCi0rCSAgICJwb3B7bH1cdCUwXG5cdCIKLSsJICAgIm1vdnts fVx0eyUwLCAlMXwlMSwgJTB9XG5cdCIKLSsJICAgInhvcntsfVx0eyUyLCAlMHwlMCwgJTJ9XG5c dCIKLSsJICAgInB1c2h7bH1cdCUwXG5cdCIKLSsJICAgInBvcGZ7bHxkfVxuXHQiCi0rCSAgICJw dXNoZntsfGR9XG5cdCIKLSsJICAgInBvcHtsfVx0JTBcblx0IgotKwkgICAicG9wZntsfGR9XG5c dCIKLSsJICAgOiAiPSZyIiAoX19lYXgpLCAiPSZyIiAoX19lYngpCi0rCSAgIDogImkiICgweDAw MjAwMDAwKSk7Ci0rI2Vsc2UKLSsvKiBIb3N0IEdDQ3Mgb2xkZXIgdGhhbiAzLjAgd2VyZW4ndCBz dXBwb3J0aW5nIEludGVsIGFzbSBzeW50YXgKLSsgICBub3IgYWx0ZXJuYXRpdmVzIGluIGkzODYg Y29kZS4gICovCi0rICBfX2FzbV9fICgicHVzaGZsXG5cdCIKLSsJICAgInB1c2hmbFxuXHQiCi0r CSAgICJwb3BsXHQlMFxuXHQiCi0rCSAgICJtb3ZsXHQlMCwgJTFcblx0IgotKwkgICAieG9ybFx0 JTIsICUwXG5cdCIKLSsJICAgInB1c2hsXHQlMFxuXHQiCi0rCSAgICJwb3BmbFxuXHQiCi0rCSAg ICJwdXNoZmxcblx0IgotKwkgICAicG9wbFx0JTBcblx0IgotKwkgICAicG9wZmxcblx0IgotKwkg ICA6ICI9JnIiIChfX2VheCksICI9JnIiIChfX2VieCkKLSsJICAgOiAiaSIgKDB4MDAyMDAwMDAp KTsKLSsjZW5kaWYKLSAKLS0gICBDb3B5cmlnaHQgMjAwNCwgMjAwNywgMjAwOCwgMjAwOSwgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgIGlmICghKChfX2VheCBeIF9fZWJ4 KSAmIDB4MDAyMDAwMDApKQotKyAgICByZXR1cm4gMDsKLSsjZW5kaWYKLSAKLS0gICBUaGlzIGZp bGUgaXMgcGFydCBvZiBHREIuCi0rICAvKiBIb3N0IHN1cHBvcnRzIGNwdWlkLiAgUmV0dXJuIGhp Z2hlc3Qgc3VwcG9ydGVkIGNwdWlkIGlucHV0IHZhbHVlLiAgKi8KLSsgIF9fY3B1aWQgKF9fZXh0 LCBfX2VheCwgX19lYngsIF9fZWN4LCBfX2VkeCk7Ci0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsgIGlmIChfX3NpZykKLSsgICAgKl9fc2lnID0gX19lYng7Ci0gCi0tICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsgIHJldHVybiBfX2VheDsKLSt9Ci0gCi0tICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCi0rLyogUmV0dXJuIGNwdWlkIGRhdGEgZm9yIHJlcXVlc3Rl ZCBjcHVpZCBsZXZlbCwgYXMgZm91bmQgaW4gcmV0dXJuZWQKLSsgICBlYXgsIGVieCwgZWN4IGFu ZCBlZHggcmVnaXN0ZXJzLiAgVGhlIGZ1bmN0aW9uIGNoZWNrcyBpZiBjcHVpZCBpcwotKyAgIHN1 cHBvcnRlZCBhbmQgcmV0dXJucyAxIGZvciB2YWxpZCBjcHVpZCBpbmZvcm1hdGlvbiBvciAwIGZv cgotKyAgIHVuc3VwcG9ydGVkIGNwdWlkIGxldmVsLiAgQWxsIHBvaW50ZXJzIGFyZSByZXF1aXJl ZCB0byBiZSBub24tbnVsbC4gICovCi0rCi0rc3RhdGljIF9faW5saW5lIGludAotK19fZ2V0X2Nw dWlkICh1bnNpZ25lZCBpbnQgX19sZXZlbCwKLSsJICAgICB1bnNpZ25lZCBpbnQgKl9fZWF4LCB1 bnNpZ25lZCBpbnQgKl9fZWJ4LAotKwkgICAgIHVuc2lnbmVkIGludCAqX19lY3gsIHVuc2lnbmVk IGludCAqX19lZHgpCi0rewotKyAgdW5zaWduZWQgaW50IF9fZXh0ID0gX19sZXZlbCAmIDB4ODAw MDAwMDA7Ci0gCi0tLyogVXNlZCBieSAyMDAyMDUyMy0yLmMgYW5kIGkzODYtc3NlLTYuYywgYW5k IHBvc3NpYmx5IG90aGVycy4gICovCi0tLyogUGxhZ2FyaXplZCBmcm9tIDIwMDIwNTIzLTIuYy4g ICovCi0tLyogUGxhZ2FyaXplZCBmcm9tIGdjYy4gICovCi0rICBpZiAoX19nZXRfY3B1aWRfbWF4 IChfX2V4dCwgMCkgPCBfX2xldmVsKQotKyAgICByZXR1cm4gMDsKLSAKLS0jZGVmaW5lIGJpdF9D TU9WICgxIDw8IDE1KQotLSNkZWZpbmUgYml0X01NWCAoMSA8PCAyMykKLS0jZGVmaW5lIGJpdF9T U0UgKDEgPDwgMjUpCi0tI2RlZmluZSBiaXRfU1NFMiAoMSA8PCAyNikKLSsgIF9fY3B1aWQgKF9f bGV2ZWwsICpfX2VheCwgKl9fZWJ4LCAqX19lY3gsICpfX2VkeCk7Ci0rICByZXR1cm4gMTsKLSt9 Ci0gCi0gI2lmbmRlZiBOT0lOTElORQotICNkZWZpbmUgTk9JTkxJTkUgX19hdHRyaWJ1dGVfXyAo KG5vaW5saW5lKSkKLUBAIC0zNSw0MSArMTkxLDEwIEBAIHVuc2lnbmVkIGludCBpMzg2X2NwdWlk ICh2b2lkKSBOT0lOTElORTsKLSB1bnNpZ25lZCBpbnQgTk9JTkxJTkUKLSBpMzg2X2NwdWlkICh2 b2lkKQotIHsKLS0gIGludCBmbDEsIGZsMjsKLS0KLS0jaWZuZGVmIF9feDg2XzY0X18KLS0gIC8q IFNlZSBpZiB3ZSBjYW4gdXNlIGNwdWlkLiAgT24gQU1ENjQgd2UgYWx3YXlzIGNhbi4gICovCi0t ICBfX2FzbV9fICgicHVzaGZsOyBwdXNoZmw7IHBvcGwgJTA7IG1vdmwgJTAsJTE7IHhvcmwgJTIs JTA7IgotLQkgICAicHVzaGwgJTA7IHBvcGZsOyBwdXNoZmw7IHBvcGwgJTA7IHBvcGZsIgotLQkg ICA6ICI9JnIiIChmbDEpLCAiPSZyIiAoZmwyKQotLQkgICA6ICJpIiAoMHgwMDIwMDAwMCkpOwot LSAgaWYgKCgoZmwxIF4gZmwyKSAmIDB4MDAyMDAwMDApID09IDApCi0tICAgIHJldHVybiAoMCk7 Ci0tI2VuZGlmCi0rICB1bnNpZ25lZCBpbnQgZWF4LCBlYngsIGVjeCwgZWR4OwotIAotLSAgLyog SG9zdCBzdXBwb3J0cyBjcHVpZC4gIFNlZSBpZiBjcHVpZCBnaXZlcyBjYXBhYmlsaXRpZXMsIHRy eQotLSAgICAgQ1BVSUQoMCkuICBQcmVzZXJ2ZSAlZWJ4IGFuZCAlZWN4OyBjcHVpZCBpbnNuIGNs b2JiZXJzIHRoZXNlLCB3ZQotLSAgICAgZG9uJ3QgbmVlZCB0aGVpciBDUFVJRCB2YWx1ZXMgaGVy ZSwgYW5kICVlYnggbWF5IGJlIHRoZSBQSUMKLS0gICAgIHJlZ2lzdGVyLiAgKi8KLS0jaWZkZWYg X194ODZfNjRfXwotLSAgX19hc21fXyAoInB1c2hxICUlcmN4OyBwdXNocSAlJXJieDsgY3B1aWQ7 IHBvcHEgJSVyYng7IHBvcHEgJSVyY3giCi0tCSAgIDogIj1hIiAoZmwxKSA6ICIwIiAoMCkgOiAi cmR4IiwgImNjIik7Ci0tI2Vsc2UKLS0gIF9fYXNtX18gKCJwdXNobCAlJWVjeDsgcHVzaGwgJSVl Yng7IGNwdWlkOyBwb3BsICUlZWJ4OyBwb3BsICUlZWN4IgotLQkgICA6ICI9YSIgKGZsMSkgOiAi MCIgKDApIDogImVkeCIsICJjYyIpOwotLSNlbmRpZgotLSAgaWYgKGZsMSA9PSAwKQotLSAgICBy ZXR1cm4gKDApOwotLQotLSAgLyogSW52b2tlIENQVUlEKDEpLCByZXR1cm4gJWVkeDsgY2FsbGVy IGNhbiBleGFtaW5lIGJpdHMgdG8KLS0gICAgIGRldGVybWluZSB3aGF0J3Mgc3VwcG9ydGVkLiAg Ki8KLS0jaWZkZWYgX194ODZfNjRfXwotLSAgX19hc21fXyAoInB1c2hxICUlcmN4OyBwdXNocSAl JXJieDsgY3B1aWQ7IHBvcHEgJSVyYng7IHBvcHEgJSVyY3giCi0tCSAgIDogIj1kIiAoZmwyKSwg Ij1hIiAoZmwxKSA6ICIxIiAoMSkgOiAiY2MiKTsKLS0jZWxzZQotLSAgX19hc21fXyAoInB1c2hs ICUlZWN4OyBwdXNobCAlJWVieDsgY3B1aWQ7IHBvcGwgJSVlYng7IHBvcGwgJSVlY3giCi0tCSAg IDogIj1kIiAoZmwyKSwgIj1hIiAoZmwxKSA6ICIxIiAoMSkgOiAiY2MiKTsKLS0jZW5kaWYKLSsg IGlmICghX19nZXRfY3B1aWQgKDEsICZlYXgsICZlYngsICZlY3gsICZlZHgpKQotKyAgICByZXR1 cm4gMDsKLSAKLS0gIHJldHVybiBmbDI7Ci0rICByZXR1cm4gZWR4OwotIH0KLS0tLSAuL2luY2x1 ZGUvZWxmL0NoYW5nZUxvZy54c3RhdGUJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyAuL2luY2x1ZGUvZWxmL0NoYW5nZUxvZy54c3RhdGUJMjAxMC0wNC0wMyAyMToxMjoz Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsOCBAQAotKzIwMTAtMDEtMjcgIEguSi4gTHUg IDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsJKiBjb21tb24uaCAoTlRfMzg2X1hTVEFURSk6 IFJlbmFtZWQgdG8gLi4uCi0rCShOVF9YODZfWFNUQVRFKTogVGhpcy4KLSsKLSsyMDEwLTAxLTI3 ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCSogY29tbW9uLmggKE5UXzM4 Nl9YU1RBVEUpOiBOZXcuCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTg5NDY3LXBpZWNlcy12bGEtY29t cGF0LnBhdGNoIGIvZ2RiLWJ6NTg5NDY3LXBpZWNlcy12bGEtY29tcGF0LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTU3NjJkLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU4OTQ2 Ny1waWVjZXMtdmxhLWNvbXBhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAK LTA2ZTM1N2Y1MzRhYmNmODkxMmU0ZmQ1OTdkYWFlOGYxMzg3ZDYzMWMKLQotRml4IGNvbXBhdGli aWxpdHkgd2l0aDogRllJOiBmaXggQklOT1BfU1VCU0NSSVBUIHdpdGggcGllY2VkIGFycmF5cwot IAlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wNS9tc2cwMDI4MS5o dG1sCi0KLTIwMTAtMDUtMzAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KLQotCSogdmFsYXJpdGguYyAoYmlub3BfdXNlcl9kZWZpbmVkX3ApOiBSZXR1cm4gMCBv biBBUkcxIG9yIEFSRzIgYmVpbmcKLQlUWVBFX0RZTkFNSUMuCi0JKiB2YWx1ZS5jIChjb2VyY2Vf cmVmKTogVXNlIG9iamVjdF9hZGRyZXNzX2dldF9kYXRhIHJlc29sdXRpb24gZm9yCi0JVFlQRV9E WU5BTUlDIEFSRy4KLQotWyBCYWNrcG9ydGVkLiAgXQotCi1JbmRleDogZ2RiLTcuMS9nZGIvdmFs YXJpdGguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvdmFsYXJpdGguYwkyMDEw LTA1LTMwIDE4OjU0OjI4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL3ZhbGFyaXRo LmMJMjAxMC0wNS0zMCAxODo1NDo0My4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMDksNiArMzA5LDEw IEBAIGludAotIGJpbm9wX3VzZXJfZGVmaW5lZF9wIChlbnVtIGV4cF9vcGNvZGUgb3AsCi0gCQkg ICAgICBzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJnMikKLSB7Ci0rICAvKiBG SVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgdXNlciBkZWZpbmVkIG9wcyBmb3IgZHluYW1pYyB0eXBl cy4gICovCi0rICBpZiAoVFlQRV9EWU5BTUlDICh2YWx1ZV90eXBlIChhcmcxKSkgfHwgVFlQRV9E WU5BTUlDICh2YWx1ZV90eXBlIChhcmcyKSkpCi0rICAgIHJldHVybiAwOwotKwotICAgcmV0dXJu IGJpbm9wX3R5cGVzX3VzZXJfZGVmaW5lZF9wIChvcCwgdmFsdWVfdHlwZSAoYXJnMSksIHZhbHVl X3R5cGUgKGFyZzIpKTsKLSB9Ci0gCi1JbmRleDogZ2RiLTcuMS9nZGIvdmFsdWUuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjEub3JpZy9nZGIvdmFsdWUuYwkyMDEwLTA1LTMwIDE4OjU0OjM2LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL3ZhbHVlLmMJMjAxMC0wNS0zMCAxODo1NTo1 Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNDAwLDcgKzI0MDAsMjQgQEAgdmFsdWVfZnJvbV9kZWNm bG9hdCAoc3RydWN0IHR5cGUgKnR5cGUsIAotIHN0cnVjdCB2YWx1ZSAqCi0gY29lcmNlX3JlZiAo c3RydWN0IHZhbHVlICphcmcpCi0gewotLSAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGVfYXJnX3Rt cCA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwotKyAgc3RydWN0IHR5cGUgKnZh bHVlX3R5cGVfYXJnX3RtcDsKLSsKLSsgIGlmIChUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFy ZykpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVh bnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwotKyAgICAgIENPUkVfQUREUiBhZGRyZXNzOwotKwot KyAgICAgIHZhbHVlX3R5cGVfYXJnX3RtcCA9IHZhbHVlX3R5cGUgKGFyZyk7Ci0rICAgICAgYWRk cmVzcyA9IHZhbHVlX3Jhd19hZGRyZXNzIChhcmcpOwotKyAgICAgIGlmICghIG9iamVjdF9hZGRy ZXNzX2dldF9kYXRhICh2YWx1ZV90eXBlX2FyZ190bXAsICZhZGRyZXNzKSkKLSsJZXJyb3IgKF8o IkF0dGVtcHQgdG8gY29lcmNlIG5vbi12YWxpZCB2YWx1ZS4iKSk7Ci0rICAgICAgQ0hFQ0tfVFlQ RURFRiAodmFsdWVfdHlwZV9hcmdfdG1wKTsKLSsgICAgICBhcmcgPSB2YWx1ZV9hdF9sYXp5ICh2 YWx1ZV90eXBlX2FyZ190bXAsIGFkZHJlc3MpOwotKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVw cyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgdmFsdWVfdHlwZV9hcmdfdG1wID0gY2hlY2tfdHlw ZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7Ci0rCi0gICBpZiAoVFlQRV9DT0RFICh2YWx1ZV90eXBl X2FyZ190bXApID09IFRZUEVfQ09ERV9SRUYpCi0gICAgIGFyZyA9IHZhbHVlX2F0X2xhenkgKFRZ UEVfVEFSR0VUX1RZUEUgKHZhbHVlX3R5cGVfYXJnX3RtcCksCi0gCQkJIHVucGFja19wb2ludGVy ICh2YWx1ZV90eXBlIChhcmcpLAkJCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTg5NDY3LXBpZWNlczAx b2Y0LnBhdGNoIGIvZ2RiLWJ6NTg5NDY3LXBpZWNlczAxb2Y0LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBmMDc3ZDE5Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU4OTQ2Ny1waWVj ZXMwMW9mNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLWNvbW1pdCA5NmMy M2JmZDI4NjNiY2NhNzM4ODY1M2E3YmM0YzlmOGE2NGEwM2JlCi1BdXRob3I6IFVscmljaCBXZWln YW5kIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTogICBGcmkgRmViIDI2IDEyOjQ4OjE3IDIw MTAgKzAwMDAKLQotICAgIAkqIGR3YXJmMmxvYy5jIChzdHJ1Y3QgcGllY2VfY2xvc3VyZSk6IFJl bW92ZSBBUkNIIG1lbWJlciwKLSAgICAJYWRkIEFERFJfU0laRSBtZW1iZXIuCi0gICAgCShhbGxv Y2F0ZV9waWVjZV9jbG9zdXJlKTogVXBkYXRlLgotICAgIAkoY29weV9waWVjZWRfdmFsdWVfY2xv c3VyZSk6IExpa2V3aXNlLgotICAgIAkoZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjKTogTGlrZXdp c2UuCi0gICAgCShyZWFkX3BpZWNlZF92YWx1ZSk6IFVzZSBEV0FSRiBhZGRyZXNzIHNpemUgaW5z dGVhZCBvZgotICAgIAlHREIncyBnZGJhcmNoX2FkZHJfYml0IGFzIHNpemUgb2YgdmFsdWVzIG9u IHRoZSBEV0FSRiBzdGFjay4KLQotZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9k d2FyZjJsb2MuYwotaW5kZXggMWM0ZDA1Ny4uMjBlZGUzZSAxMDA2NDQKLS0tLSBhL2dkYi9kd2Fy ZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJmMmxvYy5jCi1AQCAtMjMyLDggKzIzMiw4IEBAIHN0cnVj dCBwaWVjZV9jbG9zdXJlCi0gICAvKiBUaGUgbnVtYmVyIG9mIHBpZWNlcyB1c2VkIHRvIGRlc2Ny aWJlIHRoaXMgdmFyaWFibGUuICAqLwotICAgaW50IG5fcGllY2VzOwotIAotLSAgLyogVGhlIGFy Y2hpdGVjdHVyZSwgdXNlZCBvbmx5IGZvciBEV0FSRl9WQUxVRV9TVEFDSy4gICovCi0tICBzdHJ1 Y3QgZ2RiYXJjaCAqYXJjaDsKLSsgIC8qIFRoZSB0YXJnZXQgYWRkcmVzcyBzaXplLCB1c2VkIG9u bHkgZm9yIERXQVJGX1ZBTFVFX1NUQUNLLiAgKi8KLSsgIGludCBhZGRyX3NpemU7Ci0gCi0gICAv KiBUaGUgcGllY2VzIHRoZW1zZWx2ZXMuICAqLwotICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2Ug KnBpZWNlczsKLUBAIC0yNDQsMTIgKzI0NCwxMiBAQCBzdHJ1Y3QgcGllY2VfY2xvc3VyZQotIAot IHN0YXRpYyBzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqCi0gYWxsb2NhdGVfcGllY2VfY2xvc3VyZSAo aW50IG5fcGllY2VzLCBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcGllY2VzLAotLQkJCXN0cnVj dCBnZGJhcmNoICphcmNoKQotKwkJCWludCBhZGRyX3NpemUpCi0gewotICAgc3RydWN0IHBpZWNl X2Nsb3N1cmUgKmMgPSBYWkFMTE9DIChzdHJ1Y3QgcGllY2VfY2xvc3VyZSk7Ci0gCi0gICBjLT5u X3BpZWNlcyA9IG5fcGllY2VzOwotLSAgYy0+YXJjaCA9IGFyY2g7Ci0rICBjLT5hZGRyX3NpemUg PSBhZGRyX3NpemU7Ci0gICBjLT5waWVjZXMgPSBYQ0FMTE9DIChuX3BpZWNlcywgc3RydWN0IGR3 YXJmX2V4cHJfcGllY2UpOwotIAotICAgbWVtY3B5IChjLT5waWVjZXMsIHBpZWNlcywgbl9waWVj ZXMgKiBzaXplb2YgKHN0cnVjdCBkd2FyZl9leHByX3BpZWNlKSk7Ci1AQCAtMjk4LDEzICsyOTgs MTIgQEAgcmVhZF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdikKLSAKLSAJY2FzZSBEV0FS Rl9WQUxVRV9TVEFDSzoKLSAJICB7Ci0tCSAgICBzaXplX3QgbjsKLS0JICAgIGludCBhZGRyX3Np emUgPSBnZGJhcmNoX2FkZHJfYml0IChjLT5hcmNoKSAvIDg7Ci0tCSAgICBuID0gcC0+c2l6ZTsK LS0JICAgIGlmIChuID4gYWRkcl9zaXplKQotLQkgICAgICBuID0gYWRkcl9zaXplOwotKwkgICAg c3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh2YWx1ZV90eXBlICh2KSk7 Ci0rCSAgICBzaXplX3QgbiA9IHAtPnNpemU7Ci0rCSAgICBpZiAobiA+IGMtPmFkZHJfc2l6ZSkK LSsJICAgICAgbiA9IGMtPmFkZHJfc2l6ZTsKLSAJICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIg KGNvbnRlbnRzICsgb2Zmc2V0LCBuLAotLQkJCQkgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChjLT5h cmNoKSwKLSsJCQkJICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCksCi0gCQkJCSAgICBw LT52LmV4cHIudmFsdWUpOwotIAkgIH0KLSAJICBicmVhazsKLUBAIC0zNzcsNyArMzc2LDcgQEAg Y29weV9waWVjZWRfdmFsdWVfY2xvc3VyZSAoc3RydWN0IHZhbHVlICp2KQotIHsKLSAgIHN0cnVj dCBwaWVjZV9jbG9zdXJlICpjID0gKHN0cnVjdCBwaWVjZV9jbG9zdXJlICopIHZhbHVlX2NvbXB1 dGVkX2Nsb3N1cmUgKHYpOwotICAgCi0tICByZXR1cm4gYWxsb2NhdGVfcGllY2VfY2xvc3VyZSAo Yy0+bl9waWVjZXMsIGMtPnBpZWNlcywgYy0+YXJjaCk7Ci0rICByZXR1cm4gYWxsb2NhdGVfcGll Y2VfY2xvc3VyZSAoYy0+bl9waWVjZXMsIGMtPnBpZWNlcywgYy0+YWRkcl9zaXplKTsKLSB9Ci0g Ci0gc3RhdGljIHZvaWQKLUBAIC00MzksNyArNDM4LDggQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAgICAg ICBzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqYzsKLSAgICAgICBzdHJ1Y3QgZnJhbWVfaWQgZnJhbWVf aWQgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSAKLS0gICAgICBjID0gYWxsb2NhdGVfcGllY2Vf Y2xvc3VyZSAoY3R4LT5udW1fcGllY2VzLCBjdHgtPnBpZWNlcywgY3R4LT5nZGJhcmNoKTsKLSsg ICAgICBjID0gYWxsb2NhdGVfcGllY2VfY2xvc3VyZSAoY3R4LT5udW1fcGllY2VzLCBjdHgtPnBp ZWNlcywKLSsJCQkJICBjdHgtPmFkZHJfc2l6ZSk7Ci0gICAgICAgcmV0dmFsID0gYWxsb2NhdGVf Y29tcHV0ZWRfdmFsdWUgKHR5cGUsICZwaWVjZWRfdmFsdWVfZnVuY3MsIGMpOwotICAgICAgIFZB TFVFX0ZSQU1FX0lEIChyZXR2YWwpID0gZnJhbWVfaWQ7Ci0gICAgIH0KCmRpZmYgLS1naXQgYS9n ZGItYno1ODk0NjctcGllY2VzMDJvZjQucGF0Y2ggYi9nZGItYno1ODk0NjctcGllY2VzMDJvZjQu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5OTg2ZjAuLjAwMDAwMDAKLS0t IGEvZ2RiLWJ6NTg5NDY3LXBpZWNlczAyb2Y0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjgg KzAsMCBAQAotY29tbWl0IDYwZDE1ZmY2ZDc4OTIxZDA4MGFlZTY4MWU2MDM3MmFiZTY2Mjc1NzAK LUF1dGhvcjogbWdyZXR0b24gPG1ncmV0dG9uPgotRGF0ZTogICBUdWUgTWF5IDQgMDk6NTQ6MTcg MjAxMCArMDAwMAotCi0gICAgCSogZ2RiL2R3YXJmMmxvYy5jIChyZWFkX3BpZWNlZF92YWx1ZSwg d3JpdGVfcGllY2VkX3ZhbHVlLAotICAgIAlkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MpOiBIYW5k bGUgbm90IGJlaW5nIGFibGUgdG8gYWNjZXNzIERXQVJGCi0gICAgCXJlZ2lzdGVycyBncmFjZWZ1 bGx5LgotCi1JbmRleDogZ2RiLTcuMS9nZGIvZHdhcmYybG9jLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4xLm9yaWcvZ2RiL2R3YXJmMmxvYy5jCTIwMTAtMDUtMjUgMjE6MzU6MTAuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvZHdhcmYybG9jLmMJMjAxMC0wNS0yNSAyMTozNzozMi4w MDAwMDAwMDAgKzAyMDAKLUBAIC00NTgsOCArNDU4LDE2IEBAIHJlYWRfcGllY2VkX3ZhbHVlIChz dHJ1Y3QgdmFsdWUgKnYpCi0gCSAgICAgIC8qIEJpZy1lbmRpYW4sIGFuZCB3ZSB3YW50IGxlc3Mg dGhhbiBmdWxsIHNpemUuICAqLwotIAkgICAgICByZWdfb2Zmc2V0ID0gcmVnaXN0ZXJfc2l6ZSAo YXJjaCwgZ2RiX3JlZ251bSkgLSBwLT5zaXplOwotIAotLQkgICAgZ2V0X2ZyYW1lX3JlZ2lzdGVy X2J5dGVzIChmcmFtZSwgZ2RiX3JlZ251bSwgcmVnX29mZnNldCwgcC0+c2l6ZSwKLS0JCQkJICAg ICAgY29udGVudHMgKyBvZmZzZXQpOwotKwkgICAgaWYgKGdkYl9yZWdudW0gIT0gLTEpCi0rCSAg ICAgIHsKLSsJCWdldF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoZnJhbWUsIGdkYl9yZWdudW0sIHJl Z19vZmZzZXQsIAotKwkJCQkJICBwLT5zaXplLCBjb250ZW50cyArIG9mZnNldCk7Ci0rCSAgICAg IH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJZXJyb3IgKF8oIlVuYWJsZSB0byBhY2Nlc3Mg RFdBUkYgcmVnaXN0ZXIgbnVtYmVyICVzIiksCi0rCQkgICAgICAgcGFkZHJlc3MgKGFyY2gsIHAt PnYuZXhwci52YWx1ZSkpOwotKwkgICAgICB9Ci0gCSAgfQotIAkgIGJyZWFrOwotIAotQEAgLTUz MSw4ICs1MzksMTYgQEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRvLCBzdAot IAkgICAgICAvKiBCaWctZW5kaWFuLCBhbmQgd2Ugd2FudCBsZXNzIHRoYW4gZnVsbCBzaXplLiAg Ki8KLSAJICAgICAgcmVnX29mZnNldCA9IHJlZ2lzdGVyX3NpemUgKGFyY2gsIGdkYl9yZWdudW0p IC0gcC0+c2l6ZTsKLSAKLS0JICAgIHB1dF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoZnJhbWUsIGdk Yl9yZWdudW0sIHJlZ19vZmZzZXQsIHAtPnNpemUsCi0tCQkJCSAgICAgIGNvbnRlbnRzICsgb2Zm c2V0KTsKLSsJICAgIGlmIChnZGJfcmVnbnVtICE9IC0xKQotKwkgICAgICB7Ci0rCQlwdXRfZnJh bWVfcmVnaXN0ZXJfYnl0ZXMgKGZyYW1lLCBnZGJfcmVnbnVtLCByZWdfb2Zmc2V0LCAKLSsJCQkJ CSAgcC0+c2l6ZSwgY29udGVudHMgKyBvZmZzZXQpOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0r CSAgICAgIHsKLSsJCWVycm9yIChfKCJVbmFibGUgdG8gd3JpdGUgdG8gRFdBUkYgcmVnaXN0ZXIg bnVtYmVyICVzIiksCi0rCQkgICAgICAgcGFkZHJlc3MgKGFyY2gsIHAtPnYuZXhwci52YWx1ZSkp OwotKwkgICAgICB9Ci0gCSAgfQotIAkgIGJyZWFrOwotIAljYXNlIERXQVJGX1ZBTFVFX01FTU9S WToKLUBAIC02MTEsNyArNjI3LDE2IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0 IHR5cGUgKnQKLSAJICAgIHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZy YW1lKTsKLSAJICAgIENPUkVfQUREUiBkd2FyZl9yZWdudW0gPSBkd2FyZl9leHByX2ZldGNoIChj dHgsIDApOwotIAkgICAgaW50IGdkYl9yZWdudW0gPSBnZGJhcmNoX2R3YXJmMl9yZWdfdG9fcmVn bnVtIChhcmNoLCBkd2FyZl9yZWdudW0pOwotLQkgICAgcmV0dmFsID0gdmFsdWVfZnJvbV9yZWdp c3RlciAodHlwZSwgZ2RiX3JlZ251bSwgZnJhbWUpOwotKwkgICAgaWYgKGdkYl9yZWdudW0gIT0g LTEpCi0rCSAgICAgIHsKLSsJCXJldHZhbCA9IHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHR5cGUsCi0r CQkJCQkgICAgICBnZGJfcmVnbnVtLCBmcmFtZSk7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJ ICAgICAgewotKwkJZXJyb3IgKF8oIlVuYWJsZSB0byBhY2Nlc3MgRFdBUkYgcmVnaXN0ZXIgbnVt YmVyICVzIiksCi0rCQkgICAgICAgcGFkZHJlc3MgKGFyY2gsIGR3YXJmX3JlZ251bSkpOwotKwkg ICAgICB9Ci0gCSAgfQotIAkgIGJyZWFrOwotIAoKZGlmZiAtLWdpdCBhL2dkYi1iejU4OTQ2Ny1w aWVjZXMwM29mNC5wYXRjaCBiL2dkYi1iejU4OTQ2Ny1waWVjZXMwM29mNC5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZjNzNmOS4uMDAwMDAwMAotLS0gYS9nZGItYno1ODk0 NjctcGllY2VzMDNvZjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1jb21t aXQgZGFjZDY2YTUzYjU1OWJlOWMyNmQyYzUyM2YxNjhmMWVmMDI2MWY0ZAotQXV0aG9yOiBNaWNo YWVsIFNueWRlciA8bXNueWRlckBzcGVjaWZpeC5jb20+Ci1EYXRlOiAgIEZyaSBNYXkgMTQgMTc6 NTM6MTEgMjAxMCArMDAwMAotCi0gICAgMjAxMC0wNS0xNCAgTWljaGFlbCBTbnlkZXIgIDxtc255 ZGVyQHZtd2FyZS5jb20+Ci0gICAgCi0gICAgCSogZGJ4cmVhZC5jOiBXaGl0ZSBzcGFjZS4KLSAg ICAJKiBkY2FjaGUuYzogV2hpdGUgc3BhY2UuCi0gICAgCSogZGlzYXNtLmM6IFdoaXRlIHNwYWNl LgotICAgIAkqIGRvdWJsZXN0LmM6IFdoaXRlIHNwYWNlLgotICAgIAkqIGRzcmVjLmM6IFdoaXRl IHNwYWNlLgotICAgIAkqIGR1bW15LWZyYW1lLmM6IFdoaXRlIHNwYWNlLgotICAgIAkqIGR3YXJm MmV4cHIuYzogV2hpdGUgc3BhY2UuCi0gICAgCSogZHdhcmYyLWZyYW1lLmM6IFdoaXRlIHNwYWNl LgotICAgIAkqIGR3YXJmMmxvYy5jOiBXaGl0ZSBzcGFjZS4KLSAgICAJKiBkd2FyZjJyZWFkLmM6 IFdoaXRlIHNwYWNlLgotCi0tLS0gZ2RiLTcuMS9nZGIvZHdhcmYybG9jLmMub3JpZwkyMDEwLTA1 LTI1IDIzOjA2OjQ2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2RiL2R3YXJmMmxvYy5j CTIwMTAtMDUtMjUgMjM6MDY6NDYuMDAwMDAwMDAwICswMjAwCi1AQCAtMjM2LDYgKzIzNiw3IEBA IHN0YXRpYyBDT1JFX0FERFIKLSBkd2FyZl9leHByX2ZyYW1lX2NmYSAodm9pZCAqYmF0b24pCi0g ewotICAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24gKmRlYmF0b24gPSAoc3RydWN0IGR3YXJmX2V4 cHJfYmF0b24gKikgYmF0b247Ci0rCi0gICByZXR1cm4gZHdhcmYyX2ZyYW1lX2NmYSAoZGViYXRv bi0+ZnJhbWUpOwotIH0KLSAKLUBAIC00NDQsNiArNDQ1LDcgQEAgcmVhZF9waWVjZWRfdmFsdWUg KHN0cnVjdCB2YWx1ZSAqdikKLSAgIGZvciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlczsgaSsrKQot ICAgICB7Ci0gICAgICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UgKnAgPSAmYy0+cGllY2VzW2ld OwotKwotICAgICAgIHN3aXRjaCAocC0+bG9jYXRpb24pCi0gCXsKLSAJY2FzZSBEV0FSRl9WQUxV RV9SRUdJU1RFUjoKLUBAIC00ODIsNiArNDg0LDcgQEAgcmVhZF9waWVjZWRfdmFsdWUgKHN0cnVj dCB2YWx1ZSAqdikKLSAJICB7Ci0gCSAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF90 eXBlX2FyY2ggKHZhbHVlX3R5cGUgKHYpKTsKLSAJICAgIHNpemVfdCBuID0gcC0+c2l6ZTsKLSsK LSAJICAgIGlmIChuID4gYy0+YWRkcl9zaXplKQotIAkgICAgICBuID0gYy0+YWRkcl9zaXplOwot IAkgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoY29udGVudHMgKyBvZmZzZXQsIG4sCi1AQCAt NDkzLDYgKzQ5Niw3IEBAIHJlYWRfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnYpCi0gCWNh c2UgRFdBUkZfVkFMVUVfTElURVJBTDoKLSAJICB7Ci0gCSAgICBzaXplX3QgbiA9IHAtPnNpemU7 Ci0rCi0gCSAgICBpZiAobiA+IHAtPnYubGl0ZXJhbC5sZW5ndGgpCi0gCSAgICAgIG4gPSBwLT52 LmxpdGVyYWwubGVuZ3RoOwotIAkgICAgbWVtY3B5IChjb250ZW50cyArIG9mZnNldCwgcC0+di5s aXRlcmFsLmRhdGEsIG4pOwotQEAgLTUyNSw2ICs1MjksNyBAQCB3cml0ZV9waWVjZWRfdmFsdWUg KHN0cnVjdCB2YWx1ZSAqdG8sIHN0Ci0gICBmb3IgKGkgPSAwOyBpIDwgYy0+bl9waWVjZXM7IGkr KykKLSAgICAgewotICAgICAgIHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpwID0gJmMtPnBpZWNl c1tpXTsKLSsKLSAgICAgICBzd2l0Y2ggKHAtPmxvY2F0aW9uKQotIAl7Ci0gCWNhc2UgRFdBUkZf VkFMVUVfUkVHSVNURVI6Ci1AQCAtNzEyLDYgKzcxNyw3IEBAIHN0YXRpYyBDT1JFX0FERFIKLSBu ZWVkc19mcmFtZV9yZWFkX3JlZyAodm9pZCAqYmF0b24sIGludCByZWdudW0pCi0gewotICAgc3Ry dWN0IG5lZWRzX2ZyYW1lX2JhdG9uICpuZl9iYXRvbiA9IGJhdG9uOwotKwotICAgbmZfYmF0b24t Pm5lZWRzX2ZyYW1lID0gMTsKLSAgIHJldHVybiAxOwotIH0KLUBAIC03NDIsNiArNzQ4LDcgQEAg c3RhdGljIENPUkVfQUREUgotIG5lZWRzX2ZyYW1lX2ZyYW1lX2NmYSAodm9pZCAqYmF0b24pCi0g ewotICAgc3RydWN0IG5lZWRzX2ZyYW1lX2JhdG9uICpuZl9iYXRvbiA9IGJhdG9uOwotKwotICAg bmZfYmF0b24tPm5lZWRzX2ZyYW1lID0gMTsKLSAgIHJldHVybiAxOwotIH0KLUBAIC03NTEsNiAr NzU4LDcgQEAgc3RhdGljIENPUkVfQUREUgotIG5lZWRzX2ZyYW1lX3Rsc19hZGRyZXNzICh2b2lk ICpiYXRvbiwgQ09SRV9BRERSIG9mZnNldCkKLSB7Ci0gICBzdHJ1Y3QgbmVlZHNfZnJhbWVfYmF0 b24gKm5mX2JhdG9uID0gYmF0b247Ci0rCi0gICBuZl9iYXRvbi0+bmVlZHNfZnJhbWUgPSAxOwot ICAgcmV0dXJuIDE7Ci0gfQotQEAgLTkwNyw2ICs5MTUsNyBAQCBsb2NleHByX3JlYWRfdmFyaWFi bGUgKHN0cnVjdCBzeW1ib2wgKnN5Ci0gewotICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICpkbGJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW1ib2wpOwotICAgc3RydWN0IHZh bHVlICp2YWw7Ci0rCi0gICB2YWwgPSBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKFNZTUJPTF9U WVBFIChzeW1ib2wpLCBmcmFtZSwgZGxiYXRvbi0+ZGF0YSwKLSAJCQkJICBkbGJhdG9uLT5zaXpl LCBkbGJhdG9uLT5wZXJfY3UpOwotIAotQEAgLTkxOCw2ICs5MjcsNyBAQCBzdGF0aWMgaW50Ci0g bG9jZXhwcl9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCi0gewotICAg c3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkbGJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JB VE9OIChzeW1ib2wpOwotKwotICAgcmV0dXJuIGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZSAo ZGxiYXRvbi0+ZGF0YSwgZGxiYXRvbi0+c2l6ZSwKLSAJCQkJICAgICAgZGxiYXRvbi0+cGVyX2N1 KTsKLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTg5NDY3LXBpZWNlczFvZjQucGF0Y2ggYi9nZGIt Yno1ODk0NjctcGllY2VzMW9mNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg NTIxNjNjNi4uMDAwMDAwMAotLS0gYS9nZGItYno1ODk0NjctcGllY2VzMW9mNC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDIwNzUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1jdnMvMjAxMC0wNS9tc2cwMDE4Ni5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEw LzA1LzIxIDIwOjM0OjQ1CTEuMTE4MjgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA1LzIx IDIwOjM5OjUwCTEuMTE4MjkKLSMjIC0xLDMgKzEsOSBAQAotKzIwMTAtMDUtMjEgIFRvbSBUcm9t ZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiBkd2FyZjJsb2MuYyAocmVhZF9waWVjZWRf dmFsdWUpOiBXb3JrIHByb3Blcmx5IHdoZW4gJ3YnIGhhcyBhbgotKwlvZmZzZXQuCi0rCSh3cml0 ZV9waWVjZWRfdmFsdWUpOiBMaWtld2lzZS4KLSsKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cJMjAxMC8wNS8yMCAxOToxODo1NwkxLjIyNzIKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cJMjAxMC8wNS8yMSAyMDozOTo1MAkxLjIyNzMKLSMjIC0xLDMgKzEsOSBAQAotKzIw MTAtMDUtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIuZHdh cmYyLnBpZWNlcy5leHA6IE5ldyBmaWxlLgotKwkqIGdkYi5kd2FyZjIucGllY2VzLlM6IE5ldyBm aWxlLgotKwkqIGdkYi5kd2FyZjIucGllY2VzLmM6IE5ldyBmaWxlLgotKwotLS0tIHNyYy9nZGIv ZHdhcmYybG9jLmMJMjAxMC8wNS8xNCAxNzo1MzoxNgkxLjc4Ci0rKysgc3JjL2dkYi9kd2FyZjJs b2MuYwkyMDEwLzA1LzIxIDIwOjM5OjUwCTEuNzkKLUBAIC0yNjQsMTQgKzI2NCw0NiBAQAotIHsK LSAgIGludCBpOwotICAgbG9uZyBvZmZzZXQgPSAwOwotKyAgVUxPTkdFU1QgYnl0ZXNfdG9fc2tp cDsKLSAgIGdkYl9ieXRlICpjb250ZW50czsKLSAgIHN0cnVjdCBwaWVjZV9jbG9zdXJlICpjID0g KHN0cnVjdCBwaWVjZV9jbG9zdXJlICopIHZhbHVlX2NvbXB1dGVkX2Nsb3N1cmUgKHYpOwotICAg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lID0gZnJhbWVfZmluZF9ieV9pZCAoVkFMVUVfRlJBTUVf SUQgKHYpKTsKLSsgIHNpemVfdCB0eXBlX2xlbjsKLSsKLSsgIGlmICh2YWx1ZV90eXBlICh2KSAh PSB2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodikpCi0rICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sCi0rCQkgICAgXygiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIGNyZWF0ZSBhIGxh enkgdmFsdWUgd2l0aCAiCi0rCQkgICAgICAiYW4gZW5jbG9zaW5nIHR5cGUiKSk7Ci0gCi0gICBj b250ZW50cyA9IHZhbHVlX2NvbnRlbnRzX3JhdyAodik7Ci0tICBmb3IgKGkgPSAwOyBpIDwgYy0+ bl9waWVjZXM7IGkrKykKLSsgIGJ5dGVzX3RvX3NraXAgPSB2YWx1ZV9vZmZzZXQgKHYpOwotKyAg dHlwZV9sZW4gPSBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAodikpOwotKyAgZm9yIChpID0gMDsg aSA8IGMtPm5fcGllY2VzICYmIG9mZnNldCA8IHR5cGVfbGVuOyBpKyspCi0gICAgIHsKLSAgICAg ICBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcCA9ICZjLT5waWVjZXNbaV07Ci0rICAgICAgc2l6 ZV90IHRoaXNfc2l6ZTsKLSsgICAgICBsb25nIGRlc3Rfb2Zmc2V0LCBzb3VyY2Vfb2Zmc2V0Owot KwotKyAgICAgIGlmIChieXRlc190b19za2lwID4gMCAmJiBieXRlc190b19za2lwID49IHAtPnNp emUpCi0rCXsKLSsJICBieXRlc190b19za2lwIC09IHAtPnNpemU7Ci0rCSAgY29udGludWU7Ci0r CX0KLSsgICAgICB0aGlzX3NpemUgPSBwLT5zaXplOwotKyAgICAgIGlmICh0aGlzX3NpemUgPiB0 eXBlX2xlbiAtIG9mZnNldCkKLSsJdGhpc19zaXplID0gdHlwZV9sZW4gLSBvZmZzZXQ7Ci0rICAg ICAgaWYgKGJ5dGVzX3RvX3NraXAgPiAwKQotKwl7Ci0rCSAgZGVzdF9vZmZzZXQgPSAwOwotKwkg IHNvdXJjZV9vZmZzZXQgPSBieXRlc190b19za2lwOwotKwkgIHRoaXNfc2l6ZSAtPSBieXRlc190 b19za2lwOwotKwkgIGJ5dGVzX3RvX3NraXAgPSAwOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0r CSAgZGVzdF9vZmZzZXQgPSBvZmZzZXQ7Ci0rCSAgc291cmNlX29mZnNldCA9IDA7Ci0rCX0KLSAK LSAgICAgICBzd2l0Y2ggKHAtPmxvY2F0aW9uKQotIAl7Ci1AQCAtMjgwLDE3ICszMTIsMTcgQEAK LSAJICAgIHN0cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKLSAJ ICAgIGludCBnZGJfcmVnbnVtID0gZ2RiYXJjaF9kd2FyZjJfcmVnX3RvX3JlZ251bSAoYXJjaCwK LSAJCQkJCQkJICAgcC0+di5leHByLnZhbHVlKTsKLS0JICAgIGludCByZWdfb2Zmc2V0ID0gMDsK LSsJICAgIGludCByZWdfb2Zmc2V0ID0gc291cmNlX29mZnNldDsKLSAKLSAJICAgIGlmIChnZGJh cmNoX2J5dGVfb3JkZXIgKGFyY2gpID09IEJGRF9FTkRJQU5fQklHCi0tCQkmJiBwLT5zaXplIDwg cmVnaXN0ZXJfc2l6ZSAoYXJjaCwgZ2RiX3JlZ251bSkpCi0rCQkmJiB0aGlzX3NpemUgPCByZWdp c3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSkKLSAJICAgICAgLyogQmlnLWVuZGlhbiwgYW5k IHdlIHdhbnQgbGVzcyB0aGFuIGZ1bGwgc2l6ZS4gICovCi0tCSAgICAgIHJlZ19vZmZzZXQgPSBy ZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSAtIHAtPnNpemU7Ci0rCSAgICAgIHJlZ19v ZmZzZXQgPSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSAtIHRoaXNfc2l6ZTsKLSAK LSAJICAgIGlmIChnZGJfcmVnbnVtICE9IC0xKQotIAkgICAgICB7Ci0gCQlnZXRfZnJhbWVfcmVn aXN0ZXJfYnl0ZXMgKGZyYW1lLCBnZGJfcmVnbnVtLCByZWdfb2Zmc2V0LCAKLS0JCQkJCSAgcC0+ c2l6ZSwgY29udGVudHMgKyBvZmZzZXQpOwotKwkJCQkJICB0aGlzX3NpemUsIGNvbnRlbnRzICsg ZGVzdF9vZmZzZXQpOwotIAkgICAgICB9Ci0gCSAgICBlbHNlCi0gCSAgICAgIHsKLUBAIC0zMDIs MzggKzMzNCw2MCBAQAotIAotIAljYXNlIERXQVJGX1ZBTFVFX01FTU9SWToKLSAJICBpZiAocC0+ di5leHByLmluX3N0YWNrX21lbW9yeSkKLS0JICAgIHJlYWRfc3RhY2sgKHAtPnYuZXhwci52YWx1 ZSwgY29udGVudHMgKyBvZmZzZXQsIHAtPnNpemUpOwotKwkgICAgcmVhZF9zdGFjayAocC0+di5l eHByLnZhbHVlICsgc291cmNlX29mZnNldCwKLSsJCQljb250ZW50cyArIGRlc3Rfb2Zmc2V0LCB0 aGlzX3NpemUpOwotIAkgIGVsc2UKLS0JICAgIHJlYWRfbWVtb3J5IChwLT52LmV4cHIudmFsdWUs IGNvbnRlbnRzICsgb2Zmc2V0LCBwLT5zaXplKTsKLSsJICAgIHJlYWRfbWVtb3J5IChwLT52LmV4 cHIudmFsdWUgKyBzb3VyY2Vfb2Zmc2V0LAotKwkJCSBjb250ZW50cyArIGRlc3Rfb2Zmc2V0LCB0 aGlzX3NpemUpOwotIAkgIGJyZWFrOwotIAotIAljYXNlIERXQVJGX1ZBTFVFX1NUQUNLOgotIAkg IHsKLSAJICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodmFsdWVf dHlwZSAodikpOwotLQkgICAgc2l6ZV90IG4gPSBwLT5zaXplOwotKwkgICAgc2l6ZV90IG4gPSB0 aGlzX3NpemU7Ci0rCi0rCSAgICBpZiAobiA+IGMtPmFkZHJfc2l6ZSAtIHNvdXJjZV9vZmZzZXQp Ci0rCSAgICAgIG4gPSAoYy0+YWRkcl9zaXplID49IHNvdXJjZV9vZmZzZXQKLSsJCSAgID8gYy0+ YWRkcl9zaXplIC0gc291cmNlX29mZnNldAotKwkJICAgOiAwKTsKLSsJICAgIGlmIChuID09IDAp Ci0rCSAgICAgIHsKLSsJCS8qIE5vdGhpbmcuICAqLwotKwkgICAgICB9Ci0rCSAgICBlbHNlIGlm IChzb3VyY2Vfb2Zmc2V0ID09IDApCi0rCSAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGNv bnRlbnRzICsgZGVzdF9vZmZzZXQsIG4sCi0rCQkJCSAgICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAo Z2RiYXJjaCksCi0rCQkJCSAgICAgIHAtPnYuZXhwci52YWx1ZSk7Ci0rCSAgICBlbHNlCi0rCSAg ICAgIHsKLSsJCWdkYl9ieXRlIGJ5dGVzW3NpemVvZiAoVUxPTkdFU1QpXTsKLSAKLS0JICAgIGlm IChuID4gYy0+YWRkcl9zaXplKQotLQkgICAgICBuID0gYy0+YWRkcl9zaXplOwotLQkgICAgc3Rv cmVfdW5zaWduZWRfaW50ZWdlciAoY29udGVudHMgKyBvZmZzZXQsIG4sCi0tCQkJCSAgICBnZGJh cmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpLAotLQkJCQkgICAgcC0+di5leHByLnZhbHVlKTsKLSsJ CXN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzLCBuICsgc291cmNlX29mZnNldCwKLSsJCQkJ CWdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCksCi0rCQkJCQlwLT52LmV4cHIudmFsdWUpOwot KwkJbWVtY3B5IChjb250ZW50cyArIGRlc3Rfb2Zmc2V0LCBieXRlcyArIHNvdXJjZV9vZmZzZXQs IG4pOwotKwkgICAgICB9Ci0gCSAgfQotIAkgIGJyZWFrOwotIAotIAljYXNlIERXQVJGX1ZBTFVF X0xJVEVSQUw6Ci0gCSAgewotLQkgICAgc2l6ZV90IG4gPSBwLT5zaXplOwotKwkgICAgc2l6ZV90 IG4gPSB0aGlzX3NpemU7Ci0gCi0tCSAgICBpZiAobiA+IHAtPnYubGl0ZXJhbC5sZW5ndGgpCi0t CSAgICAgIG4gPSBwLT52LmxpdGVyYWwubGVuZ3RoOwotLQkgICAgbWVtY3B5IChjb250ZW50cyAr IG9mZnNldCwgcC0+di5saXRlcmFsLmRhdGEsIG4pOwotKwkgICAgaWYgKG4gPiBwLT52LmxpdGVy YWwubGVuZ3RoIC0gc291cmNlX29mZnNldCkKLSsJICAgICAgbiA9IChwLT52LmxpdGVyYWwubGVu Z3RoID49IHNvdXJjZV9vZmZzZXQKLSsJCSAgID8gcC0+di5saXRlcmFsLmxlbmd0aCAtIHNvdXJj ZV9vZmZzZXQKLSsJCSAgIDogMCk7Ci0rCSAgICBpZiAobiAhPSAwKQotKwkgICAgICBtZW1jcHkg KGNvbnRlbnRzICsgZGVzdF9vZmZzZXQsCi0rCQkgICAgICBwLT52LmxpdGVyYWwuZGF0YSArIHNv dXJjZV9vZmZzZXQsIG4pOwotIAkgIH0KLSAJICBicmVhazsKLSAKLSAJZGVmYXVsdDoKLSAJICBp bnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJpbnZhbGlkIGxvY2F0aW9uIHR5 cGUiKSk7Ci0gCX0KLS0gICAgICBvZmZzZXQgKz0gcC0+c2l6ZTsKLSsgICAgICBvZmZzZXQgKz0g dGhpc19zaXplOwotICAgICB9Ci0gfQotIAotQEAgLTM0Miw5ICszOTYsMTEgQEAKLSB7Ci0gICBp bnQgaTsKLSAgIGxvbmcgb2Zmc2V0ID0gMDsKLS0gIGdkYl9ieXRlICpjb250ZW50czsKLSsgIFVM T05HRVNUIGJ5dGVzX3RvX3NraXA7Ci0rICBjb25zdCBnZGJfYnl0ZSAqY29udGVudHM7Ci0gICBz dHJ1Y3QgcGllY2VfY2xvc3VyZSAqYyA9IChzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqKSB2YWx1ZV9j b21wdXRlZF9jbG9zdXJlICh0byk7Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBmcmFt ZV9maW5kX2J5X2lkIChWQUxVRV9GUkFNRV9JRCAodG8pKTsKLSsgIHNpemVfdCB0eXBlX2xlbjsK LSAKLSAgIGlmIChmcmFtZSA9PSBOVUxMKQotICAgICB7Ci1AQCAtMzUyLDEwICs0MDgsMzUgQEAK LSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLS0gIGNvbnRlbnRzID0gdmFsdWVfY29udGVudHNf cmF3IChmcm9tKTsKLS0gIGZvciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlczsgaSsrKQotKyAgY29u dGVudHMgPSB2YWx1ZV9jb250ZW50cyAoZnJvbSk7Ci0rICBieXRlc190b19za2lwID0gdmFsdWVf b2Zmc2V0ICh0byk7Ci0rICB0eXBlX2xlbiA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlICh0bykp OwotKyAgZm9yIChpID0gMDsgaSA8IGMtPm5fcGllY2VzICYmIG9mZnNldCA8IHR5cGVfbGVuOyBp KyspCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcCA9ICZjLT5waWVj ZXNbaV07Ci0rICAgICAgc2l6ZV90IHRoaXNfc2l6ZTsKLSsgICAgICBsb25nIGRlc3Rfb2Zmc2V0 LCBzb3VyY2Vfb2Zmc2V0OwotKwotKyAgICAgIGlmIChieXRlc190b19za2lwID4gMCAmJiBieXRl c190b19za2lwID49IHAtPnNpemUpCi0rCXsKLSsJICBieXRlc190b19za2lwIC09IHAtPnNpemU7 Ci0rCSAgY29udGludWU7Ci0rCX0KLSsgICAgICB0aGlzX3NpemUgPSBwLT5zaXplOwotKyAgICAg IGlmICh0aGlzX3NpemUgPiB0eXBlX2xlbiAtIG9mZnNldCkKLSsJdGhpc19zaXplID0gdHlwZV9s ZW4gLSBvZmZzZXQ7Ci0rICAgICAgaWYgKGJ5dGVzX3RvX3NraXAgPiAwKQotKwl7Ci0rCSAgZGVz dF9vZmZzZXQgPSBieXRlc190b19za2lwOwotKwkgIHNvdXJjZV9vZmZzZXQgPSAwOwotKwkgIHRo aXNfc2l6ZSAtPSBieXRlc190b19za2lwOwotKwkgIGJ5dGVzX3RvX3NraXAgPSAwOwotKwl9Ci0r ICAgICAgZWxzZQotKwl7Ci0rCSAgZGVzdF9vZmZzZXQgPSAwOwotKwkgIHNvdXJjZV9vZmZzZXQg PSBvZmZzZXQ7Ci0rCX0KLSAKLSAgICAgICBzd2l0Y2ggKHAtPmxvY2F0aW9uKQotIAl7Ci1AQCAt MzYzLDE3ICs0NDQsMTcgQEAKLSAJICB7Ci0gCSAgICBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdl dF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0gCSAgICBpbnQgZ2RiX3JlZ251bSA9IGdkYmFyY2hfZHdh cmYyX3JlZ190b19yZWdudW0gKGFyY2gsIHAtPnYuZXhwci52YWx1ZSk7Ci0tCSAgICBpbnQgcmVn X29mZnNldCA9IDA7Ci0rCSAgICBpbnQgcmVnX29mZnNldCA9IGRlc3Rfb2Zmc2V0OwotIAotIAkg ICAgaWYgKGdkYmFyY2hfYnl0ZV9vcmRlciAoYXJjaCkgPT0gQkZEX0VORElBTl9CSUcKLS0JCSYm IHAtPnNpemUgPCByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSkKLSsJCSYmIHRoaXNf c2l6ZSA8PSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSkKLSAJICAgICAgLyogQmln LWVuZGlhbiwgYW5kIHdlIHdhbnQgbGVzcyB0aGFuIGZ1bGwgc2l6ZS4gICovCi0tCSAgICAgIHJl Z19vZmZzZXQgPSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSAtIHAtPnNpemU7Ci0r CSAgICAgIHJlZ19vZmZzZXQgPSByZWdpc3Rlcl9zaXplIChhcmNoLCBnZGJfcmVnbnVtKSAtIHRo aXNfc2l6ZTsKLSAKLSAJICAgIGlmIChnZGJfcmVnbnVtICE9IC0xKQotIAkgICAgICB7Ci0gCQlw dXRfZnJhbWVfcmVnaXN0ZXJfYnl0ZXMgKGZyYW1lLCBnZGJfcmVnbnVtLCByZWdfb2Zmc2V0LCAK LS0JCQkJCSAgcC0+c2l6ZSwgY29udGVudHMgKyBvZmZzZXQpOwotKwkJCQkJICB0aGlzX3NpemUs IGNvbnRlbnRzICsgc291cmNlX29mZnNldCk7Ci0gCSAgICAgIH0KLSAJICAgIGVsc2UKLSAJICAg ICAgewotQEAgLTM4MywxMyArNDY0LDE0IEBACi0gCSAgfQotIAkgIGJyZWFrOwotIAljYXNlIERX QVJGX1ZBTFVFX01FTU9SWToKLS0JICB3cml0ZV9tZW1vcnkgKHAtPnYuZXhwci52YWx1ZSwgY29u dGVudHMgKyBvZmZzZXQsIHAtPnNpemUpOwotKwkgIHdyaXRlX21lbW9yeSAocC0+di5leHByLnZh bHVlICsgZGVzdF9vZmZzZXQsCi0rCQkJY29udGVudHMgKyBzb3VyY2Vfb2Zmc2V0LCB0aGlzX3Np emUpOwotIAkgIGJyZWFrOwotIAlkZWZhdWx0OgotIAkgIHNldF92YWx1ZV9vcHRpbWl6ZWRfb3V0 ICh0bywgMSk7Ci0gCSAgcmV0dXJuOwotIAl9Ci0tICAgICAgb2Zmc2V0ICs9IHAtPnNpemU7Ci0r ICAgICAgb2Zmc2V0ICs9IHRoaXNfc2l6ZTsKLSAgICAgfQotIH0KLSAKLS0tLSBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL3BpZWNlcy5TCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9waWVjZXMuUwkyMDEwLTA1LTI1IDIwOjE3OjUxLjk4ODcxODAwMCArMDAwMAotQEAgLTAs MCArMSwxNjU1IEBACi0rLyoKLSsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsg Ki8KLSsKLSsvKiBUaGlzIHdhcyBjb21waWxlZCB3aXRoIGEgdmVyc2lvbiBvZiBnY2MgbW9kaWZp ZWQgdG8gZW1pdCBiZXR0ZXIKLSsgICBkZWJ1Z2luZm8gZm9yIFNSQSdkIHN0cnVjdHVyZXMuICBT ZWU6Ci0rCWh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDM5ODMK LSsJCi0rICAgIFRoZSBvcmlnaW5hbCBwcm9ncmFtIGlzICJwaWVjZXMuYyIsIGluIHRoaXMgZGly ZWN0b3J5LgotKyovCi0rCi0rCS5maWxlCSJwaWVjZXMuYyIKLSsJLnNlY3Rpb24JLmRlYnVnX2Fi YnJldiwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19p bmZvLCIiLEBwcm9nYml0cwotKy5MZGVidWdfaW5mbzA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19saW5l LCIiLEBwcm9nYml0cwotKy5MZGVidWdfbGluZTA6Ci0rCS50ZXh0Ci0rLkx0ZXh0MDoKLSsJLnAy YWxpZ24gNCwsMTUKLSsuZ2xvYmwgYmFyCi0rCS50eXBlCWJhciwgQGZ1bmN0aW9uCi0rYmFyOgot Ky5MRkIwOgotKwkuZmlsZSAxICJwaWVjZXMuYyIKLSsJIyBwaWVjZXMuYzoyOAotKwkubG9jIDEg MjggMAotKy5MVkwwOgotKwkjIGJhc2ljIGJsb2NrIDIKLSsJcHVzaGwJJWVicAotKy5MQ0ZJMDoK LSsJbW92bAklZXNwLCAlZWJwCi0rLkxDRkkxOgotKwkjIHBpZWNlcy5jOjI5Ci0rCS5sb2MgMSAy OSAwCi0rCW1vdmwJOCglZWJwKSwgJWVheAotKwkjIHBpZWNlcy5jOjMwCi0rCS5sb2MgMSAzMCAw Ci0rCXBvcGwJJWVicAotKy5MQ0ZJMjoKLSsJcmV0Ci0rLkxGRTA6Ci0rCS5zaXplCWJhciwgLi1i YXIKLSsJLnAyYWxpZ24gNCwsMTUKLSsuZ2xvYmwgZjEKLSsJLnR5cGUJZjEsIEBmdW5jdGlvbgot K2YxOgotKy5MRkIxOgotKwkjIHBpZWNlcy5jOjM0Ci0rCS5sb2MgMSAzNCAwCi0rLkxWTDE6Ci0r CSMgYmFzaWMgYmxvY2sgMgotKwlwdXNobAklZWJwCi0rLkxDRkkzOgotKwltb3ZsCSVlc3AsICVl YnAKLSsuTENGSTQ6Ci0rLkxWTDI6Ci0rCXN1YmwJJDEyLCAlZXNwCi0rLkxDRkk1OgotKwltb3Zs CSVlc2ksIC00KCVlYnApCi0rLkxDRkk2OgotKwkjIHBpZWNlcy5jOjM3Ci0rCS5sb2MgMSAzNyAw Ci0rCW1vdmwJOCglZWJwKSwgJWVzaQotKwkjIHBpZWNlcy5jOjM0Ci0rCS5sb2MgMSAzNCAwCi0r CW1vdmwJJWVieCwgLTgoJWVicCkKLSsuTENGSTc6Ci0rCSMgcGllY2VzLmM6MzYKLSsJLmxvYyAx IDM2IDAKLSsJbW92bAkkNCwgJWVieAotKy5MVkwzOgotKwkjIHBpZWNlcy5jOjM4Ci0rCS5sb2Mg MSAzOCAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCSMgcGllY2VzLmM6MzcKLSsJLmxvYyAxIDM3 IDAKLSsJYWRkbAkkNywgJWVzaQotKy5MVkw0OgotKwkjIHBpZWNlcy5jOjM4Ci0rCS5sb2MgMSAz OCAwCi0rCWNhbGwJYmFyCi0rCSMgcGllY2VzLmM6MzkKLSsJLmxvYyAxIDM5IDAKLSsJbW92bAkl ZXNpLCAoJWVzcCkKLSsJY2FsbAliYXIKLSsJIyBwaWVjZXMuYzo0MAotKwkubG9jIDEgNDAgMAot KwlsZWFsCSglZWJ4LCVlc2kpLCAlZWF4Ci0rCSMgcGllY2VzLmM6NDEKLSsJLmxvYyAxIDQxIDAK LSsJbW92bAktOCglZWJwKSwgJWVieAotKy5MVkw1OgotKwltb3ZsCS00KCVlYnApLCAlZXNpCi0r LkxWTDY6Ci0rCW1vdmwJJWVicCwgJWVzcAotKy5MQ0ZJODoKLSsJcG9wbAklZWJwCi0rLkxDRkk5 OgotKwlyZXQKLSsuTEZFMToKLSsJLnNpemUJZjEsIC4tZjEKLSsJLnAyYWxpZ24gNCwsMTUKLSsu Z2xvYmwgZjIKLSsJLnR5cGUJZjIsIEBmdW5jdGlvbgotK2YyOgotKy5MRkIyOgotKwkjIHBpZWNl cy5jOjQ1Ci0rCS5sb2MgMSA0NSAwCi0rLkxWTDc6Ci0rCSMgYmFzaWMgYmxvY2sgMgotKwlwdXNo bAklZWJwCi0rLkxDRkkxMDoKLSsJbW92bAklZXNwLCAlZWJwCi0rLkxDRkkxMToKLSsuTFZMODoK LSsJc3VibAkkMTIsICVlc3AKLSsuTENGSTEyOgotKwltb3ZsCSVlc2ksIC00KCVlYnApCi0rLkxD RkkxMzoKLSsJIyBwaWVjZXMuYzo0OAotKwkubG9jIDEgNDggMAotKwltb3ZsCTgoJWVicCksICVl c2kKLSsJIyBwaWVjZXMuYzo0NQotKwkubG9jIDEgNDUgMAotKwltb3ZsCSVlYngsIC04KCVlYnAp Ci0rLkxDRkkxNDoKLSsJIyBwaWVjZXMuYzo0NwotKwkubG9jIDEgNDcgMAotKwltb3ZsCSQ0LCAl ZWJ4Ci0rLkxWTDk6Ci0rCSMgcGllY2VzLmM6NDkKLSsJLmxvYyAxIDQ5IDAKLSsJbW92bAklZWJ4 LCAoJWVzcCkKLSsJIyBwaWVjZXMuYzo0OAotKwkubG9jIDEgNDggMAotKwlhZGRsCSQ3LCAlZXNp Ci0rLkxWTDEwOgotKwkjIHBpZWNlcy5jOjQ5Ci0rCS5sb2MgMSA0OSAwCi0rCWNhbGwJYmFyCi0r CSMgcGllY2VzLmM6NTAKLSsJLmxvYyAxIDUwIDAKLSsJbW92bAklZXNpLCAoJWVzcCkKLSsJY2Fs bAliYXIKLSsJIyBwaWVjZXMuYzo1MQotKwkubG9jIDEgNTEgMAotKwlsZWFsCSglZWJ4LCVlc2kp LCAlZWF4Ci0rCSMgcGllY2VzLmM6NTIKLSsJLmxvYyAxIDUyIDAKLSsJbW92bAktOCglZWJwKSwg JWVieAotKy5MVkwxMToKLSsJbW92bAktNCglZWJwKSwgJWVzaQotKy5MVkwxMjoKLSsJbW92bAkl ZWJwLCAlZXNwCi0rLkxDRkkxNToKLSsJcG9wbAklZWJwCi0rLkxDRkkxNjoKLSsJcmV0Ci0rLkxG RTI6Ci0rCS5zaXplCWYyLCAuLWYyCi0rCS5wMmFsaWduIDQsLDE1Ci0rLmdsb2JsIGYzCi0rCS50 eXBlCWYzLCBAZnVuY3Rpb24KLStmMzoKLSsuTEZCMzoKLSsJIyBwaWVjZXMuYzo1NgotKwkubG9j IDEgNTYgMAotKy5MVkwxMzoKLSsJIyBiYXNpYyBibG9jayAyCi0rCXB1c2hsCSVlYnAKLSsuTENG STE3OgotKwkjIHBpZWNlcy5jOjU4Ci0rCS5sb2MgMSA1OCAwCi0rCW1vdmwJJDQsICVlZHgKLSsJ IyBwaWVjZXMuYzo1NgotKwkubG9jIDEgNTYgMAotKwltb3ZsCSVlc3AsICVlYnAKLSsuTENGSTE4 OgotKy5MVkwxNDoKLSsJc3VibAkkMTIsICVlc3AKLSsuTENGSTE5OgotKwkjIHBpZWNlcy5jOjU4 Ci0rCS5sb2MgMSA1OCAwCi0rLkxWTDE1OgotKwkjIHBpZWNlcy5jOjU2Ci0rCS5sb2MgMSA1NiAw Ci0rCW1vdmwJJWVzaSwgLTQoJWVicCkKLSsuTENGSTIwOgotKwkjIHBpZWNlcy5jOjYwCi0rCS5s b2MgMSA2MCAwCi0rCW1vdnN3bAklZHgsICVlc2kKLSsJIyBwaWVjZXMuYzo1NgotKwkubG9jIDEg NTYgMAotKwltb3ZsCSVlYngsIC04KCVlYnApCi0rLkxDRkkyMToKLSsJIyBwaWVjZXMuYzo2MAot KwkubG9jIDEgNjAgMAotKwltb3ZsCSVlc2ksICglZXNwKQotKwljYWxsCWJhcgotKy5MVkwxNjoK LSsJIyBwaWVjZXMuYzo1NwotKwkubG9jIDEgNTcgMAotKwltb3ZsCTgoJWVicCksICVlZHgKLSsJ c2FsbAkkNCwgJWVkeAotKwkjIHBpZWNlcy5jOjU5Ci0rCS5sb2MgMSA1OSAwCi0rCWFkZGwJJDEx MiwgJWVkeAotKwlzYXJ3CSQ0LCAlZHgKLSsJIyBwaWVjZXMuYzo2MQotKwkubG9jIDEgNjEgMAot Kwltb3Zzd2wJJWR4LCAlZWJ4Ci0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJYmFyCi0rCSMg cGllY2VzLmM6NjIKLSsJLmxvYyAxIDYyIDAKLSsJbGVhbAkoJWVzaSwlZWJ4KSwgJWVheAotKwkj IHBpZWNlcy5jOjYzCi0rCS5sb2MgMSA2MyAwCi0rCW1vdmwJLTgoJWVicCksICVlYngKLSsJbW92 bAktNCglZWJwKSwgJWVzaQotKy5MVkwxNzoKLSsJbW92bAklZWJwLCAlZXNwCi0rLkxDRkkyMjoK LSsJcG9wbAklZWJwCi0rLkxDRkkyMzoKLSsJcmV0Ci0rLkxGRTM6Ci0rCS5zaXplCWYzLCAuLWYz Ci0rCS5wMmFsaWduIDQsLDE1Ci0rLmdsb2JsIGY0Ci0rCS50eXBlCWY0LCBAZnVuY3Rpb24KLStm NDoKLSsuTEZCNDoKLSsJIyBwaWVjZXMuYzo2NwotKwkubG9jIDEgNjcgMAotKy5MVkwxODoKLSsJ IyBiYXNpYyBibG9jayAyCi0rCXB1c2hsCSVlYnAKLSsuTENGSTI0OgotKwltb3ZsCSVlc3AsICVl YnAKLSsuTENGSTI1OgotKwlzdWJsCSQxMiwgJWVzcAotKy5MQ0ZJMjY6Ci0rCW1vdmwJJWVzaSwg LTQoJWVicCkKLSsuTENGSTI3OgotKwltb3ZsCTgoJWVicCksICVlc2kKLSsuTFZMMTk6Ci0rCW1v dmwJJWVieCwgLTgoJWVicCkKLSsuTENGSTI4OgotKwkjIHBpZWNlcy5jOjY5Ci0rCS5sb2MgMSA2 OSAwCi0rCW1vdmwJJWVzaSwgJWVieAotKwkjIHBpZWNlcy5jOjcwCi0rCS5sb2MgMSA3MCAwCi0r CWFkZGwJJDEsICVlc2kKLSsJIyBwaWVjZXMuYzo2OQotKwkubG9jIDEgNjkgMAotKy5MVkwyMDoK LSsJIyBwaWVjZXMuYzo3MQotKwkubG9jIDEgNzEgMAotKwltb3ZsCSVlYngsICglZXNwKQotKwlj YWxsCWJhcgotKwkjIHBpZWNlcy5jOjcyCi0rCS5sb2MgMSA3MiAwCi0rCW1vdmwJJWVzaSwgKCVl c3ApCi0rCWNhbGwJYmFyCi0rCSMgcGllY2VzLmM6NzMKLSsJLmxvYyAxIDczIDAKLSsJbGVhbAko JWVieCwlZXNpKSwgJWVheAotKwkjIHBpZWNlcy5jOjc0Ci0rCS5sb2MgMSA3NCAwCi0rCW1vdmwJ LTgoJWVicCksICVlYngKLSsuTFZMMjE6Ci0rCW1vdmwJLTQoJWVicCksICVlc2kKLSsuTFZMMjI6 Ci0rCW1vdmwJJWVicCwgJWVzcAotKy5MQ0ZJMjk6Ci0rCXBvcGwJJWVicAotKy5MQ0ZJMzA6Ci0r CXJldAotKy5MRkU0OgotKwkuc2l6ZQlmNCwgLi1mNAotKwkucDJhbGlnbiA0LCwxNQotKy5nbG9i bCBmNQotKwkudHlwZQlmNSwgQGZ1bmN0aW9uCi0rZjU6Ci0rLkxGQjU6Ci0rCSMgcGllY2VzLmM6 NzgKLSsJLmxvYyAxIDc4IDAKLSsuTFZMMjM6Ci0rCSMgYmFzaWMgYmxvY2sgMgotKwlwdXNobAkl ZWJwCi0rLkxDRkkzMToKLSsJbW92bAklZXNwLCAlZWJwCi0rLkxDRkkzMjoKLSsJc3VibAkkMTIs ICVlc3AKLSsuTENGSTMzOgotKwltb3ZsCSVlc2ksIC00KCVlYnApCi0rLkxDRkkzNDoKLSsJbW92 bAk4KCVlYnApLCAlZXNpCi0rLkxWTDI0OgotKwltb3ZsCSVlYngsIC04KCVlYnApCi0rLkxDRkkz NToKLSsJIyBwaWVjZXMuYzo4MAotKwkubG9jIDEgODAgMAotKwltb3ZsCSVlc2ksICVlYngKLSsJ IyBwaWVjZXMuYzo4MQotKwkubG9jIDEgODEgMAotKwlhZGRsCSQxLCAlZXNpCi0rCSMgcGllY2Vz LmM6ODAKLSsJLmxvYyAxIDgwIDAKLSsuTFZMMjU6Ci0rCSMgcGllY2VzLmM6ODIKLSsJLmxvYyAx IDgyIDAKLSsJbW92bAklZWJ4LCAoJWVzcCkKLSsJY2FsbAliYXIKLSsJIyBwaWVjZXMuYzo4Mwot KwkubG9jIDEgODMgMAotKwltb3ZsCSVlc2ksICglZXNwKQotKwljYWxsCWJhcgotKwkjIHBpZWNl cy5jOjg0Ci0rCS5sb2MgMSA4NCAwCi0rCWxlYWwJKCVlYngsJWVzaSksICVlYXgKLSsJIyBwaWVj ZXMuYzo4NQotKwkubG9jIDEgODUgMAotKwltb3ZsCS04KCVlYnApLCAlZWJ4Ci0rLkxWTDI2Ogot Kwltb3ZsCS00KCVlYnApLCAlZXNpCi0rLkxWTDI3OgotKwltb3ZsCSVlYnAsICVlc3AKLSsuTENG STM2OgotKwlwb3BsCSVlYnAKLSsuTENGSTM3OgotKwlyZXQKLSsuTEZFNToKLSsJLnNpemUJZjUs IC4tZjUKLSsJLnAyYWxpZ24gNCwsMTUKLSsuZ2xvYmwgbWFpbgotKwkudHlwZQltYWluLCBAZnVu Y3Rpb24KLSttYWluOgotKy5MRkI2OgotKwkjIHBpZWNlcy5jOjg5Ci0rCS5sb2MgMSA4OSAwCi0r CSMgYmFzaWMgYmxvY2sgMgotKwlwdXNobAklZWJwCi0rLkxDRkkzODoKLSsJbW92bAklZXNwLCAl ZWJwCi0rLkxDRkkzOToKLSsJcHVzaGwJJWVieAotKy5MQ0ZJNDA6Ci0rCSMgcGllY2VzLmM6OTEK LSsJLmxvYyAxIDkxIDAKLSsJbW92bAkkNywgJWVieAotKwkjIHBpZWNlcy5jOjg5Ci0rCS5sb2Mg MSA4OSAwCi0rCXN1YmwJJDQsICVlc3AKLSsuTENGSTQxOgotKwkjIHBpZWNlcy5jOjkxCi0rCS5s b2MgMSA5MSAwCi0rLkxWTDI4OgotKwkjIHBpZWNlcy5jOjkyCi0rCS5sb2MgMSA5MiAwCi0rCW1v dmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjEKLSsJIyBwaWVjZXMuYzo5MwotKwkubG9jIDEgOTMg MAotKwltb3ZsCSVlYngsICglZXNwKQotKwljYWxsCWYyCi0rCSMgcGllY2VzLmM6OTQKLSsJLmxv YyAxIDk0IDAKLSsJbW92bAklZWJ4LCAoJWVzcCkKLSsJY2FsbAlmMwotKwkjIHBpZWNlcy5jOjk1 Ci0rCS5sb2MgMSA5NSAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjQKLSsJIyBwaWVj ZXMuYzo5NgotKwkubG9jIDEgOTYgMAotKwltb3ZsCSVlYngsICglZXNwKQotKwljYWxsCWY1Ci0r CSMgcGllY2VzLmM6OTgKLSsJLmxvYyAxIDk4IDAKLSsJYWRkbAkkNCwgJWVzcAotKwl4b3JsCSVl YXgsICVlYXgKLSsJcG9wbAklZWJ4Ci0rLkxDRkk0MjoKLSsuTFZMMjk6Ci0rCXBvcGwJJWVicAot Ky5MQ0ZJNDM6Ci0rCXJldAotKy5MRkU2OgotKwkuc2l6ZQltYWluLCAuLW1haW4KLSsjQVBQCi0r CS5zZWN0aW9uCS5kZWJ1Z19mcmFtZSwiIixAcHJvZ2JpdHMKLSsuTGZyYW1lMDoKLSsJLmxvbmcJ LkxFQ0lFMC0uTFNDSUUwCSMgTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeQotKy5M U0NJRTA6Ci0rCS5sb25nCTB4ZmZmZmZmZmYJIyBDSUUgSWRlbnRpZmllciBUYWcKLSsJLmJ5dGUJ MHgxCSMgQ0lFIFZlcnNpb24KLSsJLmFzY2lpICJcMCIJIyBDSUUgQXVnbWVudGF0aW9uCi0rCS51 bGViMTI4IDB4MQkjIENJRSBDb2RlIEFsaWdubWVudCBGYWN0b3IKLSsJLnNsZWIxMjggLTQJIyBD SUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCi0rCS5ieXRlCTB4OAkjIENJRSBSQSBDb2x1bW4KLSsJ LmJ5dGUJMHhjCSMgRFdfQ0ZBX2RlZl9jZmEKLSsJLnVsZWIxMjggMHg0Ci0rCS51bGViMTI4IDB4 NAotKwkuYnl0ZQkweDg4CSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4OAotKwkudWxlYjEyOCAw eDEKLSsJLmFsaWduIDQKLSsuTEVDSUUwOgotKy5MU0ZERTA6Ci0rCS5sb25nCS5MRUZERTAtLkxB U0ZERTAJIyBGREUgTGVuZ3RoCi0rLkxBU0ZERTA6Ci0rCS5sb25nCS5MZnJhbWUwCSMgRkRFIENJ RSBvZmZzZXQKLSsJLmxvbmcJLkxGQjAJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgotKwkubG9uZwku TEZFMC0uTEZCMAkjIEZERSBhZGRyZXNzIHJhbmdlCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZh bmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkwLS5MRkIwCi0rCS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZf Y2ZhX29mZnNldAotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg4NQkjIERXX0NGQV9vZmZzZXQs IGNvbHVtbiAweDUKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNl X2xvYzQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQJIyBEV19DRkFfZGVmX2Nm YV9yZWdpc3RlcgotKwkudWxlYjEyOCAweDUKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2Vf bG9jNAotKwkubG9uZwkuTENGSTItLkxDRkkxCi0rCS5ieXRlCTB4YzUJIyBEV19DRkFfcmVzdG9y ZSwgY29sdW1uIDB4NQotKwkuYnl0ZQkweGMJIyBEV19DRkFfZGVmX2NmYQotKwkudWxlYjEyOCAw eDQKLSsJLnVsZWIxMjggMHg0Ci0rCS5hbGlnbiA0Ci0rLkxFRkRFMDoKLSsuTFNGREUyOgotKwku bG9uZwkuTEVGREUyLS5MQVNGREUyCSMgRkRFIExlbmd0aAotKy5MQVNGREUyOgotKwkubG9uZwku TGZyYW1lMAkjIEZERSBDSUUgb2Zmc2V0Ci0rCS5sb25nCS5MRkIxCSMgRkRFIGluaXRpYWwgbG9j YXRpb24KLSsJLmxvbmcJLkxGRTEtLkxGQjEJIyBGREUgYWRkcmVzcyByYW5nZQotKwkuYnl0ZQkw eDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMy0uTEZCMQotKwkuYnl0ZQkw eGUJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4ODUJ IyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMHg1Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQJ IyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJNC0uTENGSTMKLSsJLmJ5dGUJMHhk CSMgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4NAkj IERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkk2LS5MQ0ZJNAotKwkuYnl0ZQkweDg2 CSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4NgotKwkudWxlYjEyOCAweDMKLSsJLmJ5dGUJMHg0 CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTctLkxDRkk2Ci0rCS5ieXRlCTB4 ODMJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMHgzCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkw eDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJOC0uTENGSTcKLSsJLmJ5dGUJ MHhkCSMgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4 YzYJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NgotKwkuYnl0ZQkweGMzCSMgRFdfQ0ZBX3Jl c3RvcmUsIGNvbHVtbiAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwku bG9uZwkuTENGSTktLkxDRkk4Ci0rCS5ieXRlCTB4YzUJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1u IDB4NQotKwkuYnl0ZQkweGUJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIxMjggMHg0 Ci0rCS5hbGlnbiA0Ci0rLkxFRkRFMjoKLSsuTFNGREU0OgotKwkubG9uZwkuTEVGREU0LS5MQVNG REU0CSMgRkRFIExlbmd0aAotKy5MQVNGREU0OgotKwkubG9uZwkuTGZyYW1lMAkjIEZERSBDSUUg b2Zmc2V0Ci0rCS5sb25nCS5MRkIyCSMgRkRFIGluaXRpYWwgbG9jYXRpb24KLSsJLmxvbmcJLkxG RTItLkxGQjIJIyBGREUgYWRkcmVzcyByYW5nZQotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5j ZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMTAtLkxGQjIKLSsJLmJ5dGUJMHhlCSMgRFdfQ0ZBX2RlZl9j ZmFfb2Zmc2V0Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkweDg1CSMgRFdfQ0ZBX29mZnNldCwg Y29sdW1uIDB4NQotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2Vf bG9jNAotKwkubG9uZwkuTENGSTExLS5MQ0ZJMTAKLSsJLmJ5dGUJMHhkCSMgRFdfQ0ZBX2RlZl9j ZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNl X2xvYzQKLSsJLmxvbmcJLkxDRkkxMy0uTENGSTExCi0rCS5ieXRlCTB4ODYJIyBEV19DRkFfb2Zm c2V0LCBjb2x1bW4gMHg2Ci0rCS51bGViMTI4IDB4MwotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2 YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMTQtLkxDRkkxMwotKwkuYnl0ZQkweDgzCSMgRFdfQ0ZB X29mZnNldCwgY29sdW1uIDB4MwotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZB X2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTE1LS5MQ0ZJMTQKLSsJLmJ5dGUJMHhkCSMgRFdf Q0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4YzYJIyBEV19D RkFfcmVzdG9yZSwgY29sdW1uIDB4NgotKwkuYnl0ZQkweGMzCSMgRFdfQ0ZBX3Jlc3RvcmUsIGNv bHVtbiAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENG STE2LS5MQ0ZJMTUKLSsJLmJ5dGUJMHhjNQkjIERXX0NGQV9yZXN0b3JlLCBjb2x1bW4gMHg1Ci0r CS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAotKwkudWxlYjEyOCAweDQKLSsJLmFs aWduIDQKLSsuTEVGREU0OgotKy5MU0ZERTY6Ci0rCS5sb25nCS5MRUZERTYtLkxBU0ZERTYJIyBG REUgTGVuZ3RoCi0rLkxBU0ZERTY6Ci0rCS5sb25nCS5MZnJhbWUwCSMgRkRFIENJRSBvZmZzZXQK LSsJLmxvbmcJLkxGQjMJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgotKwkubG9uZwkuTEZFMy0uTEZC MwkjIEZERSBhZGRyZXNzIHJhbmdlCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQK LSsJLmxvbmcJLkxDRkkxNy0uTEZCMwotKwkuYnl0ZQkweGUJIyBEV19DRkFfZGVmX2NmYV9vZmZz ZXQKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4ODUJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4g MHg1Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0r CS5sb25nCS5MQ0ZJMTgtLkxDRkkxNwotKwkuYnl0ZQkweGQJIyBEV19DRkFfZGVmX2NmYV9yZWdp c3RlcgotKwkudWxlYjEyOCAweDUKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAot KwkubG9uZwkuTENGSTIwLS5MQ0ZJMTgKLSsJLmJ5dGUJMHg4NgkjIERXX0NGQV9vZmZzZXQsIGNv bHVtbiAweDYKLSsJLnVsZWIxMjggMHgzCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xv YzQKLSsJLmxvbmcJLkxDRkkyMS0uTENGSTIwCi0rCS5ieXRlCTB4ODMJIyBEV19DRkFfb2Zmc2V0 LCBjb2x1bW4gMHgzCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5j ZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMjItLkxDRkkyMQotKwkuYnl0ZQkweGQJIyBEV19DRkFfZGVm X2NmYV9yZWdpc3RlcgotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHhjNgkjIERXX0NGQV9yZXN0 b3JlLCBjb2x1bW4gMHg2Ci0rCS5ieXRlCTB4YzMJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4 MwotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJMjMtLkxD RkkyMgotKwkuYnl0ZQkweGM1CSMgRFdfQ0ZBX3Jlc3RvcmUsIGNvbHVtbiAweDUKLSsJLmJ5dGUJ MHhlCSMgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0Ci0rCS51bGViMTI4IDB4NAotKwkuYWxpZ24gNAot Ky5MRUZERTY6Ci0rLkxTRkRFODoKLSsJLmxvbmcJLkxFRkRFOC0uTEFTRkRFOAkjIEZERSBMZW5n dGgKLSsuTEFTRkRFODoKLSsJLmxvbmcJLkxmcmFtZTAJIyBGREUgQ0lFIG9mZnNldAotKwkubG9u ZwkuTEZCNAkjIEZERSBpbml0aWFsIGxvY2F0aW9uCi0rCS5sb25nCS5MRkU0LS5MRkI0CSMgRkRF IGFkZHJlc3MgcmFuZ2UKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9u ZwkuTENGSTI0LS5MRkI0Ci0rCS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAotKwku dWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg4NQkjIERXX0NGQV9vZmZzZXQsIGNvbHVtbiAweDUKLSsJ LnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJ LkxDRkkyNS0uTENGSTI0Ci0rCS5ieXRlCTB4ZAkjIERXX0NGQV9kZWZfY2ZhX3JlZ2lzdGVyCi0r CS51bGViMTI4IDB4NQotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25n CS5MQ0ZJMjctLkxDRkkyNQotKwkuYnl0ZQkweDg2CSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4 NgotKwkudWxlYjEyOCAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwku bG9uZwkuTENGSTI4LS5MQ0ZJMjcKLSsJLmJ5dGUJMHg4MwkjIERXX0NGQV9vZmZzZXQsIGNvbHVt biAweDMKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQK LSsJLmxvbmcJLkxDRkkyOS0uTENGSTI4Ci0rCS5ieXRlCTB4ZAkjIERXX0NGQV9kZWZfY2ZhX3Jl Z2lzdGVyCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweGM2CSMgRFdfQ0ZBX3Jlc3RvcmUsIGNv bHVtbiAweDYKLSsJLmJ5dGUJMHhjMwkjIERXX0NGQV9yZXN0b3JlLCBjb2x1bW4gMHgzCi0rCS5i eXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkzMC0uTENGSTI5Ci0r CS5ieXRlCTB4YzUJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NQotKwkuYnl0ZQkweGUJIyBE V19DRkFfZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIxMjggMHg0Ci0rCS5hbGlnbiA0Ci0rLkxFRkRF ODoKLSsuTFNGREUxMDoKLSsJLmxvbmcJLkxFRkRFMTAtLkxBU0ZERTEwCSMgRkRFIExlbmd0aAot Ky5MQVNGREUxMDoKLSsJLmxvbmcJLkxmcmFtZTAJIyBGREUgQ0lFIG9mZnNldAotKwkubG9uZwku TEZCNQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCi0rCS5sb25nCS5MRkU1LS5MRkI1CSMgRkRFIGFk ZHJlc3MgcmFuZ2UKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwku TENGSTMxLS5MRkI1Ci0rCS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAotKwkudWxl YjEyOCAweDgKLSsJLmJ5dGUJMHg4NQkjIERXX0NGQV9vZmZzZXQsIGNvbHVtbiAweDUKLSsJLnVs ZWIxMjggMHgyCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxD RkkzMi0uTENGSTMxCi0rCS5ieXRlCTB4ZAkjIERXX0NGQV9kZWZfY2ZhX3JlZ2lzdGVyCi0rCS51 bGViMTI4IDB4NQotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5M Q0ZJMzQtLkxDRkkzMgotKwkuYnl0ZQkweDg2CSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4Ngot KwkudWxlYjEyOCAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9u ZwkuTENGSTM1LS5MQ0ZJMzQKLSsJLmJ5dGUJMHg4MwkjIERXX0NGQV9vZmZzZXQsIGNvbHVtbiAw eDMKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJ LmxvbmcJLkxDRkkzNi0uTENGSTM1Ci0rCS5ieXRlCTB4ZAkjIERXX0NGQV9kZWZfY2ZhX3JlZ2lz dGVyCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweGM2CSMgRFdfQ0ZBX3Jlc3RvcmUsIGNvbHVt biAweDYKLSsJLmJ5dGUJMHhjMwkjIERXX0NGQV9yZXN0b3JlLCBjb2x1bW4gMHgzCi0rCS5ieXRl CTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxDRkkzNy0uTENGSTM2Ci0rCS5i eXRlCTB4YzUJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NQotKwkuYnl0ZQkweGUJIyBEV19D RkFfZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIxMjggMHg0Ci0rCS5hbGlnbiA0Ci0rLkxFRkRFMTA6 Ci0rLkxTRkRFMTI6Ci0rCS5sb25nCS5MRUZERTEyLS5MQVNGREUxMgkjIEZERSBMZW5ndGgKLSsu TEFTRkRFMTI6Ci0rCS5sb25nCS5MZnJhbWUwCSMgRkRFIENJRSBvZmZzZXQKLSsJLmxvbmcJLkxG QjYJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgotKwkubG9uZwkuTEZFNi0uTEZCNgkjIEZERSBhZGRy ZXNzIHJhbmdlCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJLkxD RkkzOC0uTEZCNgotKwkuYnl0ZQkweGUJIyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKLSsJLnVsZWIx MjggMHg4Ci0rCS5ieXRlCTB4ODUJIyBEV19DRkFfb2Zmc2V0LCBjb2x1bW4gMHg1Ci0rCS51bGVi MTI4IDB4MgotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJ MzktLkxDRkkzOAotKwkuYnl0ZQkweGQJIyBEV19DRkFfZGVmX2NmYV9yZWdpc3RlcgotKwkudWxl YjEyOCAweDUKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENG STQwLS5MQ0ZJMzkKLSsJLmJ5dGUJMHg4MwkjIERXX0NGQV9vZmZzZXQsIGNvbHVtbiAweDMKLSsJ LnVsZWIxMjggMHgzCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLSsJLmxvbmcJ LkxDRkk0Mi0uTENGSTQwCi0rCS5ieXRlCTB4YzMJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4 MwotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJNDMtLkxD Rkk0MgotKwkuYnl0ZQkweGM1CSMgRFdfQ0ZBX3Jlc3RvcmUsIGNvbHVtbiAweDUKLSsJLmJ5dGUJ MHhjCSMgRFdfQ0ZBX2RlZl9jZmEKLSsJLnVsZWIxMjggMHg0Ci0rCS51bGViMTI4IDB4NAotKwku YWxpZ24gNAotKy5MRUZERTEyOgotKyNOT19BUFAKLSsJLnRleHQKLSsuTGV0ZXh0MDoKLSsJLnNl Y3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgot KwkubG9uZwkuTEZCMC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxM U1QwKQotKwkubG9uZwkuTENGSTAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3Mg KCouTExTVDApCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5 dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDQKLSsJLmxvbmcJLkxDRkkwLS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDApCi0rCS5sb25nCS5MQ0ZJ MS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMCkKLSsJLnZhbHVl CTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJl ZzQKLSsJLnNsZWIxMjggOAotKwkubG9uZwkuTENGSTEtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg YmVnaW4gYWRkcmVzcyAoKi5MTFNUMCkKLSsJLmxvbmcJLkxDRkkyLS5MdGV4dDAJIyBMb2NhdGlv biBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QwKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhw cmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzUJIyBEV19PUF9icmVnNQotKwkuc2xlYjEyOCA4Ci0r CS5sb25nCS5MQ0ZJMi0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxM U1QwKQotKwkubG9uZwkuTEZFMC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAo Ki5MTFNUMCkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0 ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9uZwkwCSMgTG9jYXRpb24g bGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QwKQotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlz dCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUMCkKLSsuTExTVDE6Ci0rCS5sb25nCS5MRkIxLS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDEpCi0rCS5sb25nCS5MQ0ZJ My0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMSkKLSsJLnZhbHVl CTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJl ZzQKLSsJLnNsZWIxMjggNAotKwkubG9uZwkuTENGSTMtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg YmVnaW4gYWRkcmVzcyAoKi5MTFNUMSkKLSsJLmxvbmcJLkxDRkk0LS5MdGV4dDAJIyBMb2NhdGlv biBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhw cmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0r CS5sb25nCS5MQ0ZJNC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxM U1QxKQotKwkubG9uZwkuTENGSTgtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3Mg KCouTExTVDEpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5 dGUJMHg3NQkjIERXX09QX2JyZWc1Ci0rCS5zbGViMTI4IDgKLSsJLmxvbmcJLkxDRkk4LS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDEpCi0rCS5sb25nCS5MQ0ZJ OS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMSkKLSsJLnZhbHVl CTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJl ZzQKLSsJLnNsZWIxMjggOAotKwkubG9uZwkuTENGSTktLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg YmVnaW4gYWRkcmVzcyAoKi5MTFNUMSkKLSsJLmxvbmcJLkxGRTEtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHBy ZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDQKLSsJ LmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBiZWdpbiAoKi5MTFNUMSkKLSsJLmxv bmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDEpCi0rLkxMU1QyOgot KwkubG9uZwkuTFZMMS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxM U1QyKQotKwkubG9uZwkuTFZMMi0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAo Ki5MTFNUMikKLSsJLnZhbHVlCTB4NgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0 ZQkweDM0CSMgRFdfT1BfbGl0NAotKwkuYnl0ZQkweDlmCSMgRFdfT1Bfc3RhY2tfdmFsdWUKLSsJ LmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDkzCSMg RFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5sb25nCS5MVkwyLS5MdGV4dDAJIyBMb2Nh dGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDIpCi0rCS5sb25nCS5MVkwzLS5MdGV4dDAJ IyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QyKQotKwkudmFsdWUJMHhjCSMgTG9j YXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4MzQJIyBEV19PUF9saXQ0Ci0rCS5ieXRl CTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJ LnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAwCi0r CS5ieXRlCTB4NgkjIERXX09QX2RlcmVmCi0rCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vjb25z dAotKwkudWxlYjEyOCAweDYKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rCS5i eXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJLkxWTDMtLkx0 ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMikKLSsJLmxvbmcJLkxW TDQtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDIpCi0rCS52YWx1 ZQkweGIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1MwkjIERXX09QX3Jl ZzMKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkw eDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNsZWIxMjggMAotKwkuYnl0ZQkweDYJIyBEV19PUF9kZXJl ZgotKwkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191Y29uc3QKLSsJLnVsZWIxMjggMHg2Ci0rCS5i eXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UK LSsJLnVsZWIxMjggMHg0Ci0rCS5sb25nCS5MVkw0LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJl Z2luIGFkZHJlc3MgKCouTExTVDIpCi0rCS5sb25nCS5MVkw1LS5MdGV4dDAJIyBMb2NhdGlvbiBs aXN0IGVuZCBhZGRyZXNzICgqLkxMU1QyKQotKwkudmFsdWUJMHg2CSMgTG9jYXRpb24gZXhwcmVz c2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJIyBEV19PUF9yZWczCi0rCS5ieXRlCTB4OTMJIyBEV19P UF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg1NgkjIERXX09QX3JlZzYKLSsJLmJ5 dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkubG9uZwkuTFZMNS0uTHRl eHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QyKQotKwkubG9uZwkuTFZM Ni0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMikKLSsJLnZhbHVl CTB4NQkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGll Y2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4NTYJIyBEV19PUF9yZWc2Ci0rCS5ieXRlCTB4 OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxp c3QgdGVybWluYXRvciBiZWdpbiAoKi5MTFNUMikKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3Qg dGVybWluYXRvciBlbmQgKCouTExTVDIpCi0rLkxMU1QzOgotKwkubG9uZwkuTEZCMi0uTHRleHQw CSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QzKQotKwkubG9uZwkuTENGSTEw LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QzKQotKwkudmFsdWUJ MHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVn NAotKwkuc2xlYjEyOCA0Ci0rCS5sb25nCS5MQ0ZJMTAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg YmVnaW4gYWRkcmVzcyAoKi5MTFNUMykKLSsJLmxvbmcJLkxDRkkxMS0uTHRleHQwCSMgTG9jYXRp b24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMykKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4 cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggOAot KwkubG9uZwkuTENGSTExLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCou TExTVDMpCi0rCS5sb25nCS5MQ0ZJMTUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJl c3MgKCouTExTVDMpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJ LmJ5dGUJMHg3NQkjIERXX09QX2JyZWc1Ci0rCS5zbGViMTI4IDgKLSsJLmxvbmcJLkxDRkkxNS0u THRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QzKQotKwkubG9uZwku TENGSTE2LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QzKQotKwku dmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19P UF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMTYtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMykKLSsJLmxvbmcJLkxGRTItLkx0ZXh0MAkjIExv Y2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDMpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlv biBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4 IDQKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBiZWdpbiAoKi5MTFNUMykK LSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDMpCi0rLkxM U1Q0OgotKwkubG9uZwkuTFZMNy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNz ICgqLkxMU1Q0KQotKwkubG9uZwkuTFZMOC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRk cmVzcyAoKi5MTFNUNCkKLSsJLnZhbHVlCTB4NgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQot KwkuYnl0ZQkweDM0CSMgRFdfT1BfbGl0NAotKwkuYnl0ZQkweDlmCSMgRFdfT1Bfc3RhY2tfdmFs dWUKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkw eDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5sb25nCS5MVkw4LS5MdGV4dDAJ IyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDQpCi0rCS5sb25nCS5MVkw5LS5M dGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q0KQotKwkudmFsdWUJMHhj CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4MzQJIyBEV19PUF9saXQ0Ci0r CS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGll Y2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEy OCAwCi0rCS5ieXRlCTB4NgkjIERXX09QX2RlcmVmCi0rCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVz X3Vjb25zdAotKwkudWxlYjEyOCAweDYKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVl Ci0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJLkxW TDktLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNCkKLSsJLmxv bmcJLkxWTDEwLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q0KQot KwkudmFsdWUJMHhiCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJIyBE V19PUF9yZWczCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJ LmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLmJ5dGUJMHg2CSMgRFdf T1BfZGVyZWYKLSsJLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDB4 NgotKwkuYnl0ZQkweDlmCSMgRFdfT1Bfc3RhY2tfdmFsdWUKLSsJLmJ5dGUJMHg5MwkjIERXX09Q X3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkubG9uZwkuTFZMMTAtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNCkKLSsJLmxvbmcJLkxWTDExLS5MdGV4dDAJIyBM b2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q0KQotKwkudmFsdWUJMHg2CSMgTG9jYXRp b24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJIyBEV19PUF9yZWczCi0rCS5ieXRlCTB4 OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg1NgkjIERXX09QX3Jl ZzYKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkubG9uZwku TFZMMTEtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNCkKLSsJ LmxvbmcJLkxWTDEyLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q0 KQotKwkudmFsdWUJMHg1CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4OTMJ IyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg1NgkjIERXX09QX3JlZzYK LSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkubG9uZwkwCSMg TG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1Q0KQotKwkubG9uZwkwCSMgTG9j YXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUNCkKLSsuTExTVDU6Ci0rCS5sb25nCS5M RkIzLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDUpCi0rCS5s b25nCS5MQ0ZJMTctLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDUp Ci0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkj IERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDQKLSsJLmxvbmcJLkxDRkkxNy0uTHRleHQwCSMgTG9j YXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q1KQotKwkubG9uZwkuTENGSTE4LS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q1KQotKwkudmFsdWUJMHgyCSMg TG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwku c2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMTgtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4g YWRkcmVzcyAoKi5MTFNUNSkKLSsJLmxvbmcJLkxDRkkyMi0uTHRleHQwCSMgTG9jYXRpb24gbGlz dCBlbmQgYWRkcmVzcyAoKi5MTFNUNSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Np b24gc2l6ZQotKwkuYnl0ZQkweDc1CSMgRFdfT1BfYnJlZzUKLSsJLnNsZWIxMjggOAotKwkubG9u ZwkuTENGSTIyLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDUp Ci0rCS5sb25nCS5MQ0ZJMjMtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCou TExTVDUpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJ MHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDgKLSsJLmxvbmcJLkxDRkkyMy0uTHRleHQw CSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q1KQotKwkubG9uZwkuTEZFMy0u THRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNSkKLSsJLnZhbHVlCTB4 MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQK LSsJLnNsZWIxMjggNAotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2lu ICgqLkxMU1Q1KQotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5M TFNUNSkKLSsuTExTVDY6Ci0rCS5sb25nCS5MVkwxMy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBi ZWdpbiBhZGRyZXNzICgqLkxMU1Q2KQotKwkubG9uZwkuTFZMMTQtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0rCS52YWx1ZQkweGEJIyBMb2NhdGlvbiBleHBy ZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwkudWxlYjEyOCAw eDQKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDM0CSMgRFdfT1BfbGl0NAotKwkuYnl0ZQkweDlm CSMgRFdfT1Bfc3RhY2tfdmFsdWUKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwku dWxlYjEyOCAweGMKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJ LnVsZWIxMjggMHgyCi0rCS5sb25nCS5MVkwxNC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdp biBhZGRyZXNzICgqLkxMU1Q2KQotKwkubG9uZwkuTFZMMTUtLkx0ZXh0MAkjIExvY2F0aW9uIGxp c3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0rCS52YWx1ZQkweDE1CSMgTG9jYXRpb24gZXhwcmVz c2lvbiBzaXplCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSsJLnVsZWIxMjggMHg0 Ci0rCS51bGViMTI4IDAKLSsJLmJ5dGUJMHgzNAkjIERXX09QX2xpdDQKLSsJLmJ5dGUJMHg5Zgkj IERXX09QX3N0YWNrX3ZhbHVlCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSsJLnVs ZWIxMjggMHhjCi0rCS51bGViMTI4IDAKLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5z bGViMTI4IDAKLSsJLmJ5dGUJMHg5NAkjIERXX09QX2RlcmVmX3NpemUKLSsJLmJ5dGUJMHgyCi0r CS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAweDYKLSsJLmJ5dGUJ MHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UK LSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDAKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9w aWVjZQotKwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMAotKwkubG9uZwkuTFZMMTUtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNikKLSsJLmxvbmcJLkxWTDE2 LTEtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0rCS52YWx1 ZQkweDE0CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9i aXRfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS51bGViMTI4IDAKLSsJLmJ5dGUJMHg1MgkjIERX X09QX3JlZzIKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwkudWxlYjEyOCAweGMK LSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNsZWIxMjggMAot KwkuYnl0ZQkweDk0CSMgRFdfT1BfZGVyZWZfc2l6ZQotKwkuYnl0ZQkweDIKLSsJLmJ5dGUJMHgy MwkjIERXX09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDB4NwotKwkuYnl0ZQkweDlmCSMgRFdf T1Bfc3RhY2tfdmFsdWUKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwkudWxlYjEy OCAweGMKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNlCi0rCS51 bGViMTI4IDB4NAotKwkudWxlYjEyOCAwCi0rCS5sb25nCS5MVkwxNi0xLS5MdGV4dDAJIyBMb2Nh dGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDYpCi0rCS5sb25nCS5MVkwxNy0uTHRleHQw CSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNikKLSsJLnZhbHVlCTB4MTQJIyBM b2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQot KwkudWxlYjEyOCAweDQKLSsJLnVsZWIxMjggMAotKwkuYnl0ZQkweDU2CSMgRFdfT1BfcmVnNgot KwkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNlCi0rCS51bGViMTI4IDB4YwotKwkudWxlYjEy OCAwCi0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAwCi0rCS5ieXRlCTB4 OTQJIyBEV19PUF9kZXJlZl9zaXplCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDIzCSMgRFdfT1Bf cGx1c191Y29uc3QKLSsJLnVsZWIxMjggMHg3Ci0rCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192 YWx1ZQotKwkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNlCi0rCS51bGViMTI4IDB4YwotKwku dWxlYjEyOCAwCi0rCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSsJLnVsZWIxMjggMHg0 Ci0rCS51bGViMTI4IDAKLSsJLmxvbmcJLkxWTDE3LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJl Z2luIGFkZHJlc3MgKCouTExTVDYpCi0rCS5sb25nCS5MRkUzLS5MdGV4dDAJIyBMb2NhdGlvbiBs aXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q2KQotKwkudmFsdWUJMHhmCSMgTG9jYXRpb24gZXhwcmVz c2lvbiBzaXplCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDIKLSsJ LmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLmJ5dGUJMHg5NAkjIERX X09QX2RlcmVmX3NpemUKLSsJLmJ5dGUJMHgyCi0rCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vj b25zdAotKwkudWxlYjEyOCAweDcKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0r CS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4 IDAKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLnVs ZWIxMjggMAotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxM U1Q2KQotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUNikK LSsuTExTVDc6Ci0rCS5sb25nCS5MRkI0LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFk ZHJlc3MgKCouTExTVDcpCi0rCS5sb25nCS5MQ0ZJMjQtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg ZW5kIGFkZHJlc3MgKCouTExTVDcpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9u IHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDQKLSsJLmxvbmcJ LkxDRkkyNC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q3KQot KwkubG9uZwkuTENGSTI1LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxM U1Q3KQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4 NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMjUtLkx0ZXh0MAkj IExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNykKLSsJLmxvbmcJLkxDRkkyOS0u THRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUNykKLSsJLnZhbHVlCTB4 MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDc1CSMgRFdfT1BfYnJlZzUK LSsJLnNsZWIxMjggOAotKwkubG9uZwkuTENGSTI5LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJl Z2luIGFkZHJlc3MgKCouTExTVDcpCi0rCS5sb25nCS5MQ0ZJMzAtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDcpCi0rCS52YWx1ZQkweDIJIyBMb2NhdGlvbiBleHBy ZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09QX2JyZWc0Ci0rCS5zbGViMTI4IDgKLSsJ LmxvbmcJLkxDRkkzMC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxM U1Q3KQotKwkubG9uZwkuTEZFNC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAo Ki5MTFNUNykKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0 ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9uZwkwCSMgTG9jYXRpb24g bGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1Q3KQotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlz dCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUNykKLSsuTExTVDg6Ci0rCS5sb25nCS5MVkwxOS0uTHRl eHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q4KQotKwkubG9uZwkuTFZM MjAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDgpCi0rCS52YWx1 ZQkweDgJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg5MQkjIERXX09QX2Zi cmVnCi0rCS5zbGViMTI4IDAKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4 IDB4NAotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNsZWIxMjggMAotKwkuYnl0ZQkw eDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5sb25nCS5MVkwyMC0uTHRleHQw CSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q4KQotKwkubG9uZwkuTFZMMjEt Lkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDgpCi0rCS52YWx1ZQkw eDYJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1MwkjIERXX09QX3JlZzMK LSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDU2 CSMgRFdfT1BfcmVnNgotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0 Ci0rCS5sb25nCS5MVkwyMS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgq LkxMU1Q4KQotKwkubG9uZwkuTFZMMjItLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJl c3MgKCouTExTVDgpCi0rCS52YWx1ZQkweDUJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJ LmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDU2CSMg RFdfT1BfcmVnNgotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0r CS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCouTExTVDgpCi0rCS5s b25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1Q4KQotKy5MTFNUOToK LSsJLmxvbmcJLkxGQjUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5M TFNUOSkKLSsJLmxvbmcJLkxDRkkzMS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVz cyAoKi5MTFNUOSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwku Ynl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9uZwkuTENGSTMxLS5M dGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDkpCi0rCS5sb25nCS5M Q0ZJMzItLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDkpCi0rCS52 YWx1ZQkweDIJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg3NAkjIERXX09Q X2JyZWc0Ci0rCS5zbGViMTI4IDgKLSsJLmxvbmcJLkxDRkkzMi0uTHRleHQwCSMgTG9jYXRpb24g bGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q5KQotKwkubG9uZwkuTENGSTM2LS5MdGV4dDAJIyBM b2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q5KQotKwkudmFsdWUJMHgyCSMgTG9jYXRp b24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzUJIyBEV19PUF9icmVnNQotKwkuc2xlYjEy OCA4Ci0rCS5sb25nCS5MQ0ZJMzYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVz cyAoKi5MTFNUOSkKLSsJLmxvbmcJLkxDRkkzNy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQg YWRkcmVzcyAoKi5MTFNUOSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6 ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggOAotKwkubG9uZwkuTENG STM3LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDkpCi0rCS5s b25nCS5MRkU1LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q5KQot KwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBE V19PUF9icmVnNAotKwkuc2xlYjEyOCA0Ci0rCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1p bmF0b3IgYmVnaW4gKCouTExTVDkpCi0rCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0 b3IgZW5kICgqLkxMU1Q5KQotKy5MTFNUMTA6Ci0rCS5sb25nCS5MVkwyNC0uTHRleHQwCSMgTG9j YXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QxMCkKLSsJLmxvbmcJLkxWTDI1LS5MdGV4 dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMCkKLSsJLnZhbHVlCTB4OAkj IExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJ LnNsZWIxMjggMAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0r CS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAwCi0rCS5ieXRlCTB4OTMJIyBE V19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJLkxWTDI1LS5MdGV4dDAJIyBMb2Nh dGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDEwKQotKwkubG9uZwkuTFZMMjYtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEwKQotKwkudmFsdWUJMHg2CSMg TG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJIyBEV19PUF9yZWczCi0rCS5i eXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg1NgkjIERX X09QX3JlZzYKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwku bG9uZwkuTFZMMjYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNU MTApCi0rCS5sb25nCS5MVkwyNy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAo Ki5MTFNUMTApCi0rCS52YWx1ZQkweDUJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5 dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDU2CSMgRFdf T1BfcmVnNgotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5s b25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCouTExTVDEwKQotKwkubG9u ZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUMTApCi0rLkxMU1QxMToK LSsJLmxvbmcJLkxGQjYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5M TFNUMTEpCi0rCS5sb25nCS5MQ0ZJMzgtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJl c3MgKCouTExTVDExKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0r CS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA0Ci0rCS5sb25nCS5MQ0ZJMzgt Lkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTEpCi0rCS5sb25n CS5MQ0ZJMzktLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDExKQot KwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBE V19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJMzktLkx0ZXh0MAkjIExvY2F0 aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTEpCi0rCS5sb25nCS5MQ0ZJNDMtLkx0ZXh0 MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDExKQotKwkudmFsdWUJMHgyCSMg TG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzUJIyBEV19PUF9icmVnNQotKwku c2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNDMtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4g YWRkcmVzcyAoKi5MTFNUMTEpCi0rCS5sb25nCS5MRkU2LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0 IGVuZCBhZGRyZXNzICgqLkxMU1QxMSkKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJlc3Np b24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwkubG9u ZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QxMSkKLSsJLmxvbmcJ MAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDExKQotKy5MTFNUMTI6Ci0r CS5sb25nCS5MVkwyOC0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxM U1QxMikKLSsJLmxvbmcJLkxWTDI5LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNz ICgqLkxMU1QxMikKLSsJLnZhbHVlCTB4MQkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwku Ynl0ZQkweDUzCSMgRFdfT1BfcmVnMwotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5h dG9yIGJlZ2luICgqLkxMU1QxMikKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRv ciBlbmQgKCouTExTVDEyKQotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotKwkubG9uZwkweDFlMwkj IExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLnZhbHVlCTB4MgkjIERXQVJGIHZl cnNpb24gbnVtYmVyCi0rCS5sb25nCS5MZGVidWdfYWJicmV2MAkjIE9mZnNldCBJbnRvIEFiYnJl di4gU2VjdGlvbgotKwkuYnl0ZQkweDQJIyBQb2ludGVyIFNpemUgKGluIGJ5dGVzKQotKwkudWxl YjEyOCAweDEJIyAoRElFICgweGIpIERXX1RBR19jb21waWxlX3VuaXQpCi0rCS5sb25nCS5MQVNG MQkjIERXX0FUX3Byb2R1Y2VyOiAiR05VIEMgNC42LjAgMjAxMDA1MDYgKGV4cGVyaW1lbnRhbCkg W3RydW5rIHJldmlzaW9uIDE1OTExN10iCi0rCS5ieXRlCTB4MQkjIERXX0FUX2xhbmd1YWdlCi0r CS5sb25nCS5MQVNGMgkjIERXX0FUX25hbWU6ICJwaWVjZXMuYyIKLSsJLmxvbmcJLkxBU0YzCSMg RFdfQVRfY29tcF9kaXI6ICIvaG9tZS90cm9tZXkvZ251L2FyY2hlci9hcmNoZXIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyIgotKwkubG9uZwkuTHRleHQwCSMgRFdfQVRfbG93X3BjCi0rCS5sb25n CS5MZXRleHQwCSMgRFdfQVRfaGlnaF9wYwotKwkubG9uZwkuTGRlYnVnX2xpbmUwCSMgRFdfQVRf c3RtdF9saXN0Ci0rCS51bGViMTI4IDB4MgkjIChESUUgKDB4MjUpIERXX1RBR19zdHJ1Y3R1cmVf dHlwZSkKLSsJLmFzY2lpICJBXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDgJIyBEV19BVF9i eXRlX3NpemUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5 dGUJMHgxNwkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweDQ4CSMgRFdfQVRfc2libGluZwot KwkudWxlYjEyOCAweDMJIyAoRElFICgweDJmKSBEV19UQUdfbWVtYmVyKQotKwkuYXNjaWkgImlc MCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMp Ci0rCS5ieXRlCTB4MTcJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5 cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24KLSsJLmJ5dGUJMHgy MwkjIERXX09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDAKLSsJLnVsZWIxMjggMHgzCSMgKERJ RSAoMHgzYikgRFdfVEFHX21lbWJlcikKLSsJLmFzY2lpICJqXDAiCSMgRFdfQVRfbmFtZQotKwku Ynl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDE3CSMgRFdf QVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0rCS5ieXRlCTB4MgkjIERX X0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uCi0rCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vjb25z dAotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgy NQotKwkudWxlYjEyOCAweDQJIyAoRElFICgweDQ4KSBEV19UQUdfYmFzZV90eXBlKQotKwkuYnl0 ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHg1CSMgRFdfQVRfZW5jb2RpbmcKLSsJ LmFzY2lpICJpbnRcMCIJIyBEV19BVF9uYW1lCi0rCS51bGViMTI4IDB4MgkjIChESUUgKDB4NGYp IERXX1RBR19zdHJ1Y3R1cmVfdHlwZSkKLSsJLmFzY2lpICJCXDAiCSMgRFdfQVRfbmFtZQotKwku Ynl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxl IChwaWVjZXMuYykKLSsJLmJ5dGUJMHgxOAkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweDc4 CSMgRFdfQVRfc2libGluZwotKwkudWxlYjEyOCAweDUJIyAoRElFICgweDU5KSBEV19UQUdfbWVt YmVyKQotKwkuYXNjaWkgImlcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2Rl Y2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4MTgJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxv bmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHg0CSMgRFdfQVRfYnl0ZV9zaXplCi0rCS5i eXRlCTB4YwkjIERXX0FUX2JpdF9zaXplCi0rCS5ieXRlCTB4MTAJIyBEV19BVF9iaXRfb2Zmc2V0 Ci0rCS5ieXRlCTB4MgkjIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uCi0rCS5ieXRlCTB4MjMJ IyBEV19PUF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAwCi0rCS51bGViMTI4IDB4NQkjIChESUUg KDB4NjgpIERXX1RBR19tZW1iZXIpCi0rCS5hc2NpaSAialwwIgkjIERXX0FUX25hbWUKLSsJLmJ5 dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgxOAkjIERXX0FU X2RlY2xfbGluZQotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotKwkuYnl0ZQkweDQJIyBEV19B VF9ieXRlX3NpemUKLSsJLmJ5dGUJMHhjCSMgRFdfQVRfYml0X3NpemUKLSsJLmJ5dGUJMHg0CSMg RFdfQVRfYml0X29mZnNldAotKwkuYnl0ZQkweDIJIyBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlv bgotKwkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191Y29uc3QKLSsJLnVsZWIxMjggMAotKwkuYnl0 ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDRmCi0rCS51bGViMTI4IDB4NgkjIChESUUg KDB4NzgpIERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5hbAot KwkuYXNjaWkgImJhclwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9m aWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgxYgkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkw eDEJIyBEV19BVF9wcm90b3R5cGVkCi0rCS5sb25nCS5MRkIwCSMgRFdfQVRfbG93X3BjCi0rCS5s b25nCS5MRkUwCSMgRFdfQVRfaGlnaF9wYwotKwkubG9uZwkuTExTVDAJIyBEV19BVF9mcmFtZV9i YXNlCi0rCS5sb25nCTB4OWUJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUg KDB4OTEpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgInhcMCIJIyBEV19BVF9u YW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4 MWIJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJ MHgyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGVi MTI4IDAKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg3OAotKwkudWxlYjEy OCAweDgJIyAoRElFICgweDllKSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdf QVRfZXh0ZXJuYWwKLSsJLmFzY2lpICJmMVwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMg RFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgyMQkjIERXX0FUX2RlY2xfbGlu ZQotKwkuYnl0ZQkweDEJIyBEV19BVF9wcm90b3R5cGVkCi0rCS5sb25nCTB4NDgJIyBEV19BVF90 eXBlCi0rCS5sb25nCS5MRkIxCSMgRFdfQVRfbG93X3BjCi0rCS5sb25nCS5MRkUxCSMgRFdfQVRf aGlnaF9wYwotKwkubG9uZwkuTExTVDEJIyBEV19BVF9mcmFtZV9iYXNlCi0rCS5sb25nCTB4ZDQJ IyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUgKDB4YmEpIERXX1RBR19mb3Jt YWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgImtcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkj IERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4MjEJIyBEV19BVF9kZWNsX2xp bmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfbG9jYXRp b24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLnVsZWIxMjgg MHg5CSMgKERJRSAoMHhjNikgRFdfVEFHX3ZhcmlhYmxlKQotKwkuYXNjaWkgImFcMCIJIyBEV19B VF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRl CTB4MjMJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHgyNQkjIERXX0FUX3R5cGUKLSsJLmxv bmcJLkxMU1QyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBv ZiBESUUgMHg5ZQotKwkudWxlYjEyOCAweDgJIyAoRElFICgweGQ0KSBEV19UQUdfc3VicHJvZ3Jh bSkKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZXh0ZXJuYWwKLSsJLmFzY2lpICJmMlwwIgkjIERXX0FU X25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJ MHgyYwkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDEJIyBEV19BVF9wcm90b3R5cGVkCi0r CS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0rCS5sb25nCS5MRkIyCSMgRFdfQVRfbG93X3BjCi0r CS5sb25nCS5MRkUyCSMgRFdfQVRfaGlnaF9wYwotKwkubG9uZwkuTExTVDMJIyBEV19BVF9mcmFt ZV9iYXNlCi0rCS5sb25nCTB4MTBhCSMgRFdfQVRfc2libGluZwotKwkudWxlYjEyOCAweDcJIyAo RElFICgweGYwKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmFzY2lpICJrXDAiCSMgRFdf QVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0 ZQkweDJjCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0rCS5i eXRlCTB4MgkjIERXX0FUX2xvY2F0aW9uCi0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwku c2xlYjEyOCAwCi0rCS51bGViMTI4IDB4OQkjIChESUUgKDB4ZmMpIERXX1RBR192YXJpYWJsZSkK LSsJLmFzY2lpICJhXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2Zp bGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDJlCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4 MTBhCSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTExTVDQJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0 ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweGQ0Ci0rCS51bGViMTI4IDB4YQkjIChESUUg KDB4MTBhKSBEV19UQUdfYXJyYXlfdHlwZSkKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJ LmxvbmcJMHgxMWEJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4YgkjIChESUUgKDB4MTEz KSBEV19UQUdfc3VicmFuZ2VfdHlwZSkKLSsJLmxvbmcJMHgxMWEJIyBEV19BVF90eXBlCi0rCS5i eXRlCTB4MQkjIERXX0FUX3VwcGVyX2JvdW5kCi0rCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4g b2YgRElFIDB4MTBhCi0rCS51bGViMTI4IDB4YwkjIChESUUgKDB4MTFhKSBEV19UQUdfYmFzZV90 eXBlKQotKwkuYnl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHg3CSMgRFdfQVRf ZW5jb2RpbmcKLSsJLnVsZWIxMjggMHg4CSMgKERJRSAoMHgxMWQpIERXX1RBR19zdWJwcm9ncmFt KQotKwkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5hbAotKwkuYXNjaWkgImYzXDAiCSMgRFdfQVRf bmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkw eDM3CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRlCTB4MQkjIERXX0FUX3Byb3RvdHlwZWQKLSsJ LmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmxvbmcJLkxGQjMJIyBEV19BVF9sb3dfcGMKLSsJ LmxvbmcJLkxGRTMJIyBEV19BVF9oaWdoX3BjCi0rCS5sb25nCS5MTFNUNQkjIERXX0FUX2ZyYW1l X2Jhc2UKLSsJLmxvbmcJMHgxNTMJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChE SUUgKDB4MTM5KSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmFzY2lpICJrXDAiCSMgRFdf QVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0 ZQkweDM3CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0rCS5i eXRlCTB4MgkjIERXX0FUX2xvY2F0aW9uCi0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwku c2xlYjEyOCAwCi0rCS51bGViMTI4IDB4OQkjIChESUUgKDB4MTQ1KSBEV19UQUdfdmFyaWFibGUp Ci0rCS5hc2NpaSAiYVwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9m aWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgzOQkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkw eDRmCSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTExTVDYJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0 ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDExZAotKwkudWxlYjEyOCAweDgJIyAoRElF ICgweDE1MykgRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFs Ci0rCS5hc2NpaSAiZjRcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xf ZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NDIJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJ MHgxCSMgRFdfQVRfcHJvdG90eXBlZAotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotKwkubG9u ZwkuTEZCNAkjIERXX0FUX2xvd19wYwotKwkubG9uZwkuTEZFNAkjIERXX0FUX2hpZ2hfcGMKLSsJ LmxvbmcJLkxMU1Q3CSMgRFdfQVRfZnJhbWVfYmFzZQotKwkubG9uZwkweDE4OQkjIERXX0FUX3Np YmxpbmcKLSsJLnVsZWIxMjggMHg3CSMgKERJRSAoMHgxNmYpIERXX1RBR19mb3JtYWxfcGFyYW1l dGVyKQotKwkuYXNjaWkgImtcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2Rl Y2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NDIJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxv bmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5 dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLnVsZWIxMjggMHg5CSMgKERJ RSAoMHgxN2IpIERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lpICJhXDAiCSMgRFdfQVRfbmFtZQot KwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDQ0CSMg RFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4MTBhCSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTExT VDgJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAw eDE1MwotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDE4OSkgRFdfVEFHX3N1YnByb2dyYW0pCi0r CS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFsCi0rCS5hc2NpaSAiZjVcMCIJIyBEV19BVF9uYW1l Ci0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NGQJ IyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90eXBlZAotKwkubG9u ZwkweDQ4CSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTEZCNQkjIERXX0FUX2xvd19wYwotKwkubG9u ZwkuTEZFNQkjIERXX0FUX2hpZ2hfcGMKLSsJLmxvbmcJLkxMU1Q5CSMgRFdfQVRfZnJhbWVfYmFz ZQotKwkubG9uZwkweDFiZgkjIERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHg3CSMgKERJRSAo MHgxYTUpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgImtcMCIJIyBEV19BVF9u YW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4 NGQJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJ MHgyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGVi MTI4IDAKLSsJLnVsZWIxMjggMHg5CSMgKERJRSAoMHgxYjEpIERXX1RBR192YXJpYWJsZSkKLSsJ LmFzY2lpICJhXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUg KHBpZWNlcy5jKQotKwkuYnl0ZQkweDRmCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4MjUJ IyBEV19BVF90eXBlCi0rCS5sb25nCS5MTFNUMTAJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkw CSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDE4OQotKwkudWxlYjEyOCAweGQJIyAoRElFICgw eDFiZikgRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFsCi0r CS5sb25nCS5MQVNGMAkjIERXX0FUX25hbWU6ICJtYWluIgotKwkuYnl0ZQkweDEJIyBEV19BVF9k ZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDU4CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5i eXRlCTB4MQkjIERXX0FUX3Byb3RvdHlwZWQKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJ LmxvbmcJLkxGQjYJIyBEV19BVF9sb3dfcGMKLSsJLmxvbmcJLkxGRTYJIyBEV19BVF9oaWdoX3Bj Ci0rCS5sb25nCS5MTFNUMTEJIyBEV19BVF9mcmFtZV9iYXNlCi0rCS51bGViMTI4IDB4OQkjIChE SUUgKDB4MWQ4KSBEV19UQUdfdmFyaWFibGUpCi0rCS5hc2NpaSAia1wwIgkjIERXX0FUX25hbWUK LSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHg1YQkj IERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotKwkubG9uZwkuTExT VDEyCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUg MHgxYmYKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhiCi0rCS5zZWN0aW9u CS5kZWJ1Z19hYmJyZXYKLSsJLnVsZWIxMjggMHgxCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEy OCAweDExCSMgKFRBRzogRFdfVEFHX2NvbXBpbGVfdW5pdCkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hp bGRyZW5feWVzCi0rCS51bGViMTI4IDB4MjUJIyAoRFdfQVRfcHJvZHVjZXIpCi0rCS51bGViMTI4 IDB4ZQkjIChEV19GT1JNX3N0cnApCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfQVRfbGFuZ3VhZ2Up Ci0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDMJIyAoRFdf QVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjggMHgx YgkjIChEV19BVF9jb21wX2RpcikKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJ LnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JN X2FkZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHgx CSMgKERXX0ZPUk1fYWRkcikKLSsJLnVsZWIxMjggMHgxMAkjIChEV19BVF9zdG10X2xpc3QpCi0r CS51bGViMTI4IDB4NgkjIChEV19GT1JNX2RhdGE0KQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJ LnVsZWIxMjggMHgyCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDEzCSMgKFRBRzogRFdf VEFHX3N0cnVjdHVyZV90eXBlKQotKwkuYnl0ZQkweDEJIyBEV19jaGlsZHJlbl95ZXMKLSsJLnVs ZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmlu ZykKLSsJLnVsZWIxMjggMHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLSsJLnVsZWIxMjggMHhiCSMg KERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwku dWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9k ZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAw eDEJIyAoRFdfQVRfc2libGluZykKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0r CS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDMJIyAoYWJicmV2IGNvZGUpCi0rCS51 bGViMTI4IDB4ZAkjIChUQUc6IERXX1RBR19tZW1iZXIpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJl bl9ubwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4CSMgKERX X0ZPUk1fc3RyaW5nKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVs ZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVj bF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0 OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVs ZWIxMjggMHgzOAkjIChEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbikKLSsJLnVsZWIxMjggMHhh CSMgKERXX0ZPUk1fYmxvY2sxKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHg0 CSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDI0CSMgKFRBRzogRFdfVEFHX2Jhc2VfdHlw ZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4YgkjIChEV19BVF9i eXRlX3NpemUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAw eDNlCSMgKERXX0FUX2VuY29kaW5nKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkK LSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19GT1JN X3N0cmluZykKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NQkjIChhYmJyZXYg Y29kZSkKLSsJLnVsZWIxMjggMHhkCSMgKFRBRzogRFdfVEFHX21lbWJlcikKLSsJLmJ5dGUJMAkj IERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEy OCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9m aWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkj IChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwku dWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9y ZWY0KQotKwkudWxlYjEyOCAweGIJIyAoRFdfQVRfYnl0ZV9zaXplKQotKwkudWxlYjEyOCAweGIJ IyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHhkCSMgKERXX0FUX2JpdF9zaXplKQotKwku dWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHhjCSMgKERXX0FUX2Jp dF9vZmZzZXQpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAw eDM4CSMgKERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uKQotKwkudWxlYjEyOCAweGEJIyAoRFdf Rk9STV9ibG9jazEpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDYJIyAoYWJi cmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKLSsJ LmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4M2YJIyAoRFdfQVRfZXh0 ZXJuYWwpCi0rCS51bGViMTI4IDB4YwkjIChEV19GT1JNX2ZsYWcpCi0rCS51bGViMTI4IDB4Mwkj IChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGVi MTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9k YXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4 YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDI3CSMgKERXX0FUX3Byb3RvdHlwZWQp Ci0rCS51bGViMTI4IDB4YwkjIChEV19GT1JNX2ZsYWcpCi0rCS51bGViMTI4IDB4MTEJIyAoRFdf QVRfbG93X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAw eDEyCSMgKERXX0FUX2hpZ2hfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0r CS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKLSsJLnVsZWIxMjggMHg2CSMgKERX X0ZPUk1fZGF0YTQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEy OCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4 IDB4NwkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHg1CSMgKFRBRzogRFdfVEFHX2Zvcm1h bF9wYXJhbWV0ZXIpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJ IyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxl YjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1f ZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAw eGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwku dWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgyCSMgKERXX0FUX2xv Y2F0aW9uKQotKwkudWxlYjEyOCAweGEJIyAoRFdfRk9STV9ibG9jazEpCi0rCS5ieXRlCTAKLSsJ LmJ5dGUJMAotKwkudWxlYjEyOCAweDgJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MmUJ IyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVz Ci0rCS51bGViMTI4IDB4M2YJIyAoRFdfQVRfZXh0ZXJuYWwpCi0rCS51bGViMTI4IDB4YwkjIChE V19GT1JNX2ZsYWcpCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAw eDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxl KQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChE V19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxl YjEyOCAweDI3CSMgKERXX0FUX3Byb3RvdHlwZWQpCi0rCS51bGViMTI4IDB4YwkjIChEV19GT1JN X2ZsYWcpCi0rCS51bGViMTI4IDB4NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkj IChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotKwkudWxl YjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hf cGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGViMTI4IDB4NDAJIyAo RFdfQVRfZnJhbWVfYmFzZSkKLSsJLnVsZWIxMjggMHg2CSMgKERXX0ZPUk1fZGF0YTQpCi0rCS51 bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1f cmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OQkjIChhYmJyZXYgY29k ZSkKLSsJLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJsZSkKLSsJLmJ5dGUJMAkj IERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEy OCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9m aWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkj IChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwku dWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9y ZWY0KQotKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0rCS51bGViMTI4IDB4Ngkj IChEV19GT1JNX2RhdGE0KQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhhCSMg KGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDEJIyAoVEFHOiBEV19UQUdfYXJyYXlfdHlwZSkK LSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4NDkJIyAoRFdfQVRf dHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MQkj IChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5 dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4YgkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIx MjggMHgyMQkjIChUQUc6IERXX1RBR19zdWJyYW5nZV90eXBlKQotKwkuYnl0ZQkwCSMgRFdfY2hp bGRyZW5fbm8KLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEz CSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgyZgkjIChEV19BVF91cHBlcl9ib3VuZCkK LSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAot KwkudWxlYjEyOCAweGMJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MjQJIyAoVEFHOiBE V19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIxMjgg MHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEp Ci0rCS51bGViMTI4IDB4M2UJIyAoRFdfQVRfZW5jb2RpbmcpCi0rCS51bGViMTI4IDB4YgkjIChE V19GT1JNX2RhdGExKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhkCSMgKGFi YnJldiBjb2RlKQotKwkudWxlYjEyOCAweDJlCSMgKFRBRzogRFdfVEFHX3N1YnByb2dyYW0pCi0r CS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3llcwotKwkudWxlYjEyOCAweDNmCSMgKERXX0FUX2V4 dGVybmFsKQotKwkudWxlYjEyOCAweGMJIyAoRFdfRk9STV9mbGFnKQotKwkudWxlYjEyOCAweDMJ IyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIx MjggMHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2Rh dGExKQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhi CSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJvdG90eXBlZCkK LSsJLnVsZWIxMjggMHhjCSMgKERXX0ZPUk1fZmxhZykKLSsJLnVsZWIxMjggMHg0OQkjIChEV19B VF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgx MQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51 bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1f YWRkcikKLSsJLnVsZWIxMjggMHg0MAkjIChEV19BVF9mcmFtZV9iYXNlKQotKwkudWxlYjEyOCAw eDYJIyAoRFdfRk9STV9kYXRhNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJ LnNlY3Rpb24JLmRlYnVnX3B1Ym5hbWVzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDQyCSMgTGVu Z3RoIG9mIFB1YmxpYyBOYW1lcyBJbmZvCi0rCS52YWx1ZQkweDIJIyBEV0FSRiBWZXJzaW9uCi0r CS5sb25nCS5MZGVidWdfaW5mbzAJIyBPZmZzZXQgb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0r CS5sb25nCTB4MWU3CSMgQ29tcGlsYXRpb24gVW5pdCBMZW5ndGgKLSsJLmxvbmcJMHg3OAkjIERJ RSBvZmZzZXQKLSsJLmFzY2lpICJiYXJcMCIJIyBleHRlcm5hbCBuYW1lCi0rCS5sb25nCTB4OWUJ IyBESUUgb2Zmc2V0Ci0rCS5hc2NpaSAiZjFcMCIJIyBleHRlcm5hbCBuYW1lCi0rCS5sb25nCTB4 ZDQJIyBESUUgb2Zmc2V0Ci0rCS5hc2NpaSAiZjJcMCIJIyBleHRlcm5hbCBuYW1lCi0rCS5sb25n CTB4MTFkCSMgRElFIG9mZnNldAotKwkuYXNjaWkgImYzXDAiCSMgZXh0ZXJuYWwgbmFtZQotKwku bG9uZwkweDE1MwkjIERJRSBvZmZzZXQKLSsJLmFzY2lpICJmNFwwIgkjIGV4dGVybmFsIG5hbWUK LSsJLmxvbmcJMHgxODkJIyBESUUgb2Zmc2V0Ci0rCS5hc2NpaSAiZjVcMCIJIyBleHRlcm5hbCBu YW1lCi0rCS5sb25nCTB4MWJmCSMgRElFIG9mZnNldAotKwkuYXNjaWkgIm1haW5cMCIJIyBleHRl cm5hbCBuYW1lCi0rCS5sb25nCTAKLSsJLnNlY3Rpb24JLmRlYnVnX3B1YnR5cGVzLCIiLEBwcm9n Yml0cwotKwkubG9uZwkweDFhCSMgTGVuZ3RoIG9mIFB1YmxpYyBUeXBlIE5hbWVzIEluZm8KLSsJ LnZhbHVlCTB4MgkjIERXQVJGIFZlcnNpb24KLSsJLmxvbmcJLkxkZWJ1Z19pbmZvMAkjIE9mZnNl dCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLmxvbmcJMHgxZTcJIyBDb21waWxhdGlvbiBV bml0IExlbmd0aAotKwkubG9uZwkweDI1CSMgRElFIG9mZnNldAotKwkuYXNjaWkgIkFcMCIJIyBl eHRlcm5hbCBuYW1lCi0rCS5sb25nCTB4NGYJIyBESUUgb2Zmc2V0Ci0rCS5hc2NpaSAiQlwwIgkj IGV4dGVybmFsIG5hbWUKLSsJLmxvbmcJMAotKwkuc2VjdGlvbgkuZGVidWdfYXJhbmdlcywiIixA cHJvZ2JpdHMKLSsJLmxvbmcJMHgxYwkjIExlbmd0aCBvZiBBZGRyZXNzIFJhbmdlcyBJbmZvCi0r CS52YWx1ZQkweDIJIyBEV0FSRiBWZXJzaW9uCi0rCS5sb25nCS5MZGVidWdfaW5mbzAJIyBPZmZz ZXQgb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0rCS5ieXRlCTB4NAkjIFNpemUgb2YgQWRkcmVz cwotKwkuYnl0ZQkwCSMgU2l6ZSBvZiBTZWdtZW50IERlc2NyaXB0b3IKLSsJLnZhbHVlCTAJIyBQ YWQgdG8gOCBieXRlIGJvdW5kYXJ5Ci0rCS52YWx1ZQkwCi0rCS5sb25nCS5MdGV4dDAJIyBBZGRy ZXNzCi0rCS5sb25nCS5MZXRleHQwLS5MdGV4dDAJIyBMZW5ndGgKLSsJLmxvbmcJMAotKwkubG9u ZwkwCi0rCS5zZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQotKy5MQVNGMjoKLSsJ LnN0cmluZwkicGllY2VzLmMiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSIvaG9tZS90cm9tZXkvZ251 L2FyY2hlci9hcmNoZXIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyIgotKy5MQVNGMToKLSsJLnN0 cmluZwkiR05VIEMgNC42LjAgMjAxMDA1MDYgKGV4cGVyaW1lbnRhbCkgW3RydW5rIHJldmlzaW9u IDE1OTExN10iCi0rLkxBU0YwOgotKwkuc3RyaW5nCSJtYWluIgotKwkuaWRlbnQJIkdDQzogKEdO VSkgNC42LjAgMjAxMDA1MDYgKGV4cGVyaW1lbnRhbCkgW3RydW5rIHJldmlzaW9uIDE1OTExN10i Ci0rCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLS0tLSBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL3BpZWNlcy5jCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9waWVjZXMuYwkyMDEwLTA1LTI1IDIwOjE4OjAwLjYyNzYyMjAwMCArMDAwMAotQEAgLTAs MCArMSw5OCBAQAotKy8qIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIFRoZSBvcmlnaW5hbCBwcm9n cmFtIGNvcnJlc3BvbmRpbmcgdG8gcGllY2VzLlMuCi0rICAgVGhpcyBjYW1lIGZyb20gaHR0cHM6 Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD01ODk0NjcKLSsgICBOb3RlIHRo YXQgaXQgaXMgbm90IGV2ZXIgY29tcGlsZWQsIHBpZWNlcy5TIGlzIHVzZWQgaW5zdGVhZC4KLSsg ICBIb3dldmVyLCBpdCBpcyB1c2VkIHRvIGV4dHJhY3QgYnJlYWtwb2ludCBsaW5lIG51bWJlcnMu ICAqLwotKwotK3N0cnVjdCBBIHsgaW50IGk7IGludCBqOyB9OwotK3N0cnVjdCBCIHsgaW50IDog NDsgaW50IGkgOiAxMjsgaW50IGogOiAxMjsgaW50IDogNDsgfTsKLSsKLStfX2F0dHJpYnV0ZV9f KChub2lubGluZSkpIHZvaWQKLStiYXIgKGludCB4KQotK3sKLSsgIGFzbSB2b2xhdGlsZSAoIiIg OiA6ICJyIiAoeCkgOiAibWVtb3J5Iik7Ci0rfQotKwotK19fYXR0cmlidXRlX18oKG5vaW5saW5l KSkgaW50Ci0rZjEgKGludCBrKQotK3sKLSsgIHN0cnVjdCBBIGEgPSB7IDQsIGsgKyA2IH07Ci0r ICBhc20gKCIiIDogIityIiAoYS5pKSk7Ci0rICBhLmorKzsKLSsgIGJhciAoYS5pKTsJCS8qIHsg ZGctZmluYWwgeyBnZGItdGVzdCAyMCAiYS5pIiAiNCIgfSB9ICovCi0rICBiYXIgKGEuaik7CQkv KiB7IGRnLWZpbmFsIHsgZ2RiLXRlc3QgMjAgImEuaiIgIjE0IiB9IH0gKi8KLSsgIHJldHVybiBh LmkgKyBhLmo7CS8qIGYxIGJyZWFrcG9pbnQgKi8KLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9p bmxpbmUpKSBpbnQKLStmMiAoaW50IGspCi0rewotKyAgaW50IGFbMl0gPSB7IDQsIGsgKyA2IH07 Ci0rICBhc20gKCIiIDogIityIiAoYVswXSkpOwotKyAgYVsxXSsrOwotKyAgYmFyIChhWzBdKTsJ CS8qIHsgZGctZmluYWwgeyBnZGItdGVzdCAzMSAiYVxbMFxdIiAiNCIgfSB9ICovCi0rICBiYXIg KGFbMV0pOwkJLyogeyBkZy1maW5hbCB7IGdkYi10ZXN0IDMxICJhXFsxXF0iICIxNCIgfSB9ICov Ci0rICByZXR1cm4gYVswXSArIGFbMV07CS8qIGYyIGJyZWFrcG9pbnQgKi8KLSt9Ci0rCi0rX19h dHRyaWJ1dGVfXygobm9pbmxpbmUpKSBpbnQKLStmMyAoaW50IGspCi0rewotKyAgc3RydWN0IEIg YSA9IHsgNCwgayArIDYgfTsKLSsgIGFzbSAoIiIgOiAiK3IiIChhLmkpKTsKLSsgIGEuaisrOwot KyAgYmFyIChhLmkpOwkJLyogeyBkZy1maW5hbCB7IGdkYi10ZXN0IDQyICJhLmkiICI0IiB9IH0g Ki8KLSsgIGJhciAoYS5qKTsJCS8qIHsgZGctZmluYWwgeyBnZGItdGVzdCA0MiAiYS5qIiAiMTQi IH0gfSAqLwotKyAgcmV0dXJuIGEuaSArIGEuajsJLyogZjMgYnJlYWtwb2ludCAqLwotK30KLSsK LStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGludAotK2Y0IChpbnQgaykKLSt7Ci0rICBpbnQg YVsyXSA9IHsgaywgayB9OwotKyAgYXNtICgiIiA6ICIrciIgKGFbMF0pKTsKLSsgIGFbMV0rKzsK LSsgIGJhciAoYVswXSk7Ci0rICBiYXIgKGFbMV0pOwotKyAgcmV0dXJuIGFbMF0gKyBhWzFdOwkJ LyogZjQgYnJlYWtwb2ludCAqLwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGlu dAotK2Y1IChpbnQgaykKLSt7Ci0rICBzdHJ1Y3QgQSBhID0geyBrLCBrIH07Ci0rICBhc20gKCIi IDogIityIiAoYS5pKSk7Ci0rICBhLmorKzsKLSsgIGJhciAoYS5pKTsKLSsgIGJhciAoYS5qKTsK LSsgIHJldHVybiBhLmkgKyBhLmo7CQkvKiBmNSBicmVha3BvaW50ICovCi0rfQotKwotK2ludAot K21haW4gKHZvaWQpCi0rewotKyAgaW50IGs7Ci0rICBhc20gKCIiIDogIj1yIiAoaykgOiAiMCIg KDcpKTsKLSsgIGYxIChrKTsKLSsgIGYyIChrKTsKLSsgIGYzIChrKTsKLSsgIGY0IChrKTsKLSsg IGY1IChrKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL3BpZWNlcy5leHAKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3BpZWNlcy5l eHAJMjAxMC0wNS0yNSAyMDoxODowMy45NjExMTEwMDAgKzAwMDAKLUBAIC0wLDAgKzEsNTcgQEAK LSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRlc3Qgc29tZSBEV0FSRiBwaWVjZSBv cGVyYXRvcnMuCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hp Y2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxp bmcgb2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAg JiYgIVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsg ICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSot ZWFiaSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1 cm4gMCAgCi0rfQotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB4ODYgdGFyZ2V0cy4K LStpZiB7IVtpc3RhcmdldCBpPzg2LSpdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9Ci0rCi0rc2V0 IHRlc3RmaWxlICJwaWVjZXMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUwotK3NldCBjc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfS54Ci0rCi0raWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfS54ICRzcmNmaWxlXX0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVty dW50b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEZ1bmN0aW9uIGYxIHRlc3Rz IGEgcGFydGljdWxhciBnZGIgYnVnIGludm9sdmluZyBEV19PUF9waWVjZS4KLStwcm9jIHBpZWNl c190ZXN0X2YxIHt9IHsKLSsgICAgZ2xvYmFsIGNzcmNmaWxlCi0rICAgIHNldCBsaW5lIFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJmMSBicmVha3BvaW50IiAkY3NyY2ZpbGVdCi0rICAgIGdkYl90ZXN0 ICJicmVhayBwaWVjZXMuYzokbGluZSIgIkJyZWFrcG9pbnQgMi4qIiBcCi0rCSJzZXQgZjEgYnJl YWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29u dGludWUgdG8gZjEgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfdGVzdCAicHJpbnQg YSIgIiA9IHtpID0gNCwgaiA9IDE0fSIgInByaW50IGEgaW4gcGllY2VzOmYxIgotKyAgICBnZGJf dGVzdCAicHJpbnQgYS5qIiAiID0gMTQiICJwcmludCBhLmogaW4gcGllY2VzOmYxIgotK30KLSsK LStwaWVjZXNfdGVzdF9mMQoKZGlmZiAtLWdpdCBhL2dkYi1iejU4OTQ2Ny1waWVjZXMyb2Y0LnBh dGNoIGIvZ2RiLWJ6NTg5NDY3LXBpZWNlczJvZjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDRjMjcwMzkuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTg5NDY3LXBpZWNlczJvZjQu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDEwLTA1L21zZzAwMTg4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMTAtMDUvbXNnMDAxODkuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMC8wNS8yMSAyMDo0NToxOAkxLjExODMwCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx MC8wNS8yMSAyMDo1Njo0OAkxLjExODMxCi0jIyAtMSwzICsxLDggQEAKLSsyMDEwLTA1LTIxICBU b20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogZXZhbC5jIChldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQpIDxCSU5PUF9TVUJTQ1JJUFQ+OiBDYWxsCi0rCWV2YWx1YXRlX3N1YmV4 cCwgbm90IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uLgotKwotIyMjIHNyYy9nZGIvdGVz dHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIwOjM5OjUwCTEuMjI3MwotIyMjIHNyYy9nZGIv dGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIwOjU2OjQ5CTEuMjI3NAotIyMgLTEsNSAr MSwxMCBAQAotIDIwMTAtMDUtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAK LSsJKiBnZGIuZHdhcmYyL3BpZWNlcy5leHAgKHBpZWNlc190ZXN0X2YyKTogTmV3IHByb2MuCi0r CUNhbGwgaXQuCi0rCi0tLS0gc3JjL2dkYi9ldmFsLmMJMjAxMC8wNS8xNCAxODozNToxMQkxLjEz NAotKysrIHNyYy9nZGIvZXZhbC5jCTIwMTAvMDUvMjEgMjA6NTY6NDkJMS4xMzUKLUBAIC0yMDU5 LDggKzIwNTksOCBAQAotICAgICAgIGVycm9yIChfKCInOicgb3BlcmF0b3IgdXNlZCBpbiBpbnZh bGlkIGNvbnRleHQiKSk7Ci0gCi0gICAgIGNhc2UgQklOT1BfU1VCU0NSSVBUOgotLSAgICAgIGFy ZzEgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0t ICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9z aWRlKTsKLSsgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9z LCBub3NpZGUpOwotKyAgICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhw LCBwb3MsIG5vc2lkZSk7Ci0gICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi0gCWdvdG8g bm9zaWRlcmV0OwotICAgICAgIGlmIChiaW5vcF91c2VyX2RlZmluZWRfcCAob3AsIGFyZzEsIGFy ZzIpKQotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcGllY2VzLmV4cAkyMDEwLzA1 LzIxIDIwOjM5OjUwCTEuMQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcGllY2Vz LmV4cAkyMDEwLzA1LzIxIDIxOjAwOjI3CTEuMgotQEAgLTU0LDQgKzU0LDE4IEBACi0gICAgIGdk Yl90ZXN0ICJwcmludCBhLmoiICIgPSAxNCIgInByaW50IGEuaiBpbiBwaWVjZXM6ZjEiCi0gfQot IAotKyMgRnVuY3Rpb24gZjIgdGVzdHMgZm9yIGEgYnVnIHdoZW4gaW5kZXhpbmcgaW50byBhbiBh cnJheSBjcmVhdGVkCi0rIyB1c2luZyBEV19PUF9waWVjZS4KLStwcm9jIHBpZWNlc190ZXN0X2Yy IHt9IHsKLSsgICAgZ2xvYmFsIGNzcmNmaWxlCi0rICAgIHNldCBsaW5lIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJmMiBicmVha3BvaW50IiAkY3NyY2ZpbGVdCi0rICAgIGdkYl90ZXN0ICJicmVhayBw aWVjZXMuYzokbGluZSIgIkJyZWFrcG9pbnQgMy4qIiBcCi0rICAgICAgICJzZXQgZjIgYnJlYWtw b2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGlu dWUgdG8gZjIgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfdGVzdCAicHJpbnQgYSIg IiA9IC40LCAxNC4iICJwcmludCBhIGluIHBpZWNlczpmMiIKLSsgICAgZ2RiX3Rlc3QgInByaW50 IGFcWzBcXSIgIiA9IDQiICJwcmludCBhXFswXF0gaW4gcGllY2VzOmYyIgotKyAgICBnZGJfdGVz dCAicHJpbnQgYVxbMVxdIiAiID0gMTQiICJwcmludCBhXFsxXF0gaW4gcGllY2VzOmYyIgotK30K LSsKLSBwaWVjZXNfdGVzdF9mMQotK3BpZWNlc190ZXN0X2YyCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6 NTg5NDY3LXBpZWNlczNvZjQucGF0Y2ggYi9nZGItYno1ODk0NjctcGllY2VzM29mNC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q3N2ZjZi4uMDAwMDAwMAotLS0gYS9nZGIt Yno1ODk0NjctcGllY2VzM29mNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOTggKzAsMCBA QAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wNS9tc2cwMDE5MC5odG1s Ci0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIwOjU2OjQ4CTEuMTE4MzEKLSMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMTE4MzIKLSMjIC0xLDUg KzEsMTYgQEAKLSAyMDEwLTA1LTIxICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0g Ci0rCSogZHdhcmYybG9jLmMgKHJlYWRfcGllY2VkX3ZhbHVlKTogRXhpdCBsb29wIHdoZW4gcmVz dWx0IGlzIGZ1bGwuCi0rCTxEV0FSRl9WQUxVRV9PUFRJTUlaRURfT1VUPjogTmV3IGNhc2UuCi0r CSogZHdhcmYyZXhwci5oIChlbnVtIGR3YXJmX3ZhbHVlX2xvY2F0aW9uKQotKwk8RFdBUkZfVkFM VUVfT1BUSU1JWkVEX09VVD46IE5ldyBjb25zdGFudC4KLSsJKiBkd2FyZjJleHByLmMgKGR3YXJm X2V4cHJfc3RhY2tfZW1wdHlfcCk6IE5ldyBmdW5jdGlvbi4KLSsJKGFkZF9waWVjZSk6IEhhbmRs ZSBlbXB0eSBwaWVjZS4KLSsJKGV4ZWN1dGVfc3RhY2tfb3ApIDxEV19PUF9waWVjZT46IEhhbmRs ZQotKwlEV0FSRl9WQUxVRV9PUFRJTUlaRURfT1VULgotKwotIyMjIHNyYy9nZGIvdGVzdHN1aXRl L0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIwOjU2OjQ5CTEuMjI3NAotIyMjIHNyYy9nZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMjI3NQotIyMgLTEsNSArMSwxMyBA QAotIDIwMTAtMDUtMjEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSsJKiBn ZGIuZHdhcmYyL3BpZWNlcy5leHAgKHBpZWNlc190ZXN0X2Y2KTogTmV3IHByb2MuCi0rCUNhbGwg aXQuCi0rCSogZ2RiLmR3YXJmMi9waWVjZXMuYyAoc3RydWN0IEMpOiBOZXcuCi0rCShmNik6IE5l dyBmdW5jdGlvbi4KLSsJKiBnZGIuZHdhcmYyL3BpZWNlcy5TOiBSZXBsYWNlLgotKwotLS0tIHNy Yy9nZGIvZHdhcmYyZXhwci5jCTIwMTAvMDUvMTQgMTc6NTM6MTYJMS40MgotKysrIHNyYy9nZGIv ZHdhcmYyZXhwci5jCTIwMTAvMDUvMjEgMjE6MDE6NDYJMS40MwotQEAgLTE0Myw2ICsxNDMsMTQg QEAKLSAKLSB9Ci0gCi0rLyogUmV0dXJuIHRydWUgaWYgdGhlIGV4cHJlc3Npb24gc3RhY2sgaXMg ZW1wdHkuICAqLwotKwotK3N0YXRpYyBpbnQKLStkd2FyZl9leHByX3N0YWNrX2VtcHR5X3AgKHN0 cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCkKLSt7Ci0rICByZXR1cm4gY3R4LT5zdGFja19s ZW4gPT0gMDsKLSt9Ci0rCi0gLyogQWRkIGEgbmV3IHBpZWNlIHRvIENUWCdzIHBpZWNlIGxpc3Qu ICAqLwotIHN0YXRpYyB2b2lkCi0gYWRkX3BpZWNlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0 ICpjdHgsIFVMT05HRVNUIHNpemUpCi1AQCAtMTY3LDYgKzE3NSwxNSBAQAotICAgICAgIHAtPnYu bGl0ZXJhbC5kYXRhID0gY3R4LT5kYXRhOwotICAgICAgIHAtPnYubGl0ZXJhbC5sZW5ndGggPSBj dHgtPmxlbjsKLSAgICAgfQotKyAgZWxzZSBpZiAoZHdhcmZfZXhwcl9zdGFja19lbXB0eV9wIChj dHgpKQotKyAgICB7Ci0rICAgICAgcC0+bG9jYXRpb24gPSBEV0FSRl9WQUxVRV9PUFRJTUlaRURf T1VUOwotKyAgICAgIC8qIEFsc28gcmVzZXQgdGhlIGNvbnRleHQncyBsb2NhdGlvbiwgZm9yIG91 ciBjYWxsZXJzLiAgVGhpcyBpcwotKwkgYSBzb21ld2hhdCBzdHJhbmdlIGFwcHJvYWNoLCBidXQg dGhpcyBsZXRzIHVzIGF2b2lkIHNldHRpbmcKLSsJIHRoZSBsb2NhdGlvbiB0byBEV0FSRl9WQUxV RV9NRU1PUlkgaW4gYWxsIHRoZSBpbmRpdmlkdWFsCi0rCSBjYXNlcyBpbiB0aGUgZXZhbHVhdG9y LiAgKi8KLSsgICAgICBjdHgtPmxvY2F0aW9uID0gRFdBUkZfVkFMVUVfT1BUSU1JWkVEX09VVDsK LSsgICAgfQotICAgZWxzZQotICAgICB7Ci0gICAgICAgcC0+di5leHByLnZhbHVlID0gZHdhcmZf ZXhwcl9mZXRjaCAoY3R4LCAwKTsKLUBAIC04NTksNyArODc2LDggQEAKLSAKLSAgICAgICAgICAg ICAvKiBQb3Agb2ZmIHRoZSBhZGRyZXNzL3JlZ251bSwgYW5kIHJlc2V0IHRoZSBsb2NhdGlvbgot IAkgICAgICAgdHlwZS4gICovCi0tCSAgICBpZiAoY3R4LT5sb2NhdGlvbiAhPSBEV0FSRl9WQUxV RV9MSVRFUkFMKQotKwkgICAgaWYgKGN0eC0+bG9jYXRpb24gIT0gRFdBUkZfVkFMVUVfTElURVJB TAotKwkJJiYgY3R4LT5sb2NhdGlvbiAhPSBEV0FSRl9WQUxVRV9PUFRJTUlaRURfT1VUKQotIAkg ICAgICBkd2FyZl9leHByX3BvcCAoY3R4KTsKLSAgICAgICAgICAgICBjdHgtPmxvY2F0aW9uID0g RFdBUkZfVkFMVUVfTUVNT1JZOwotICAgICAgICAgICB9Ci0tLS0gc3JjL2dkYi9kd2FyZjJleHBy LmgJMjAxMC8wMS8wMSAwNzozMTozMAkxLjIwCi0rKysgc3JjL2dkYi9kd2FyZjJleHByLmgJMjAx MC8wNS8yMSAyMTowMTo0NgkxLjIxCi1AQCAtMzgsNyArMzgsMTAgQEAKLSAgIERXQVJGX1ZBTFVF X1NUQUNLLAotIAotICAgLyogVGhlIHBpZWNlIGlzIGEgbGl0ZXJhbC4gICovCi0tICBEV0FSRl9W QUxVRV9MSVRFUkFMCi0rICBEV0FSRl9WQUxVRV9MSVRFUkFMLAotKwotKyAgLyogVGhlIHBpZWNl IHdhcyBvcHRpbWl6ZWQgb3V0LiAgKi8KLSsgIERXQVJGX1ZBTFVFX09QVElNSVpFRF9PVVQKLSB9 OwotIAotIC8qIFRoZSBkd2FyZiBleHByZXNzaW9uIHN0YWNrLiAgKi8KLS0tLSBzcmMvZ2RiL2R3 YXJmMmxvYy5jCTIwMTAvMDUvMjEgMjA6Mzk6NTAJMS43OQotKysrIHNyYy9nZGIvZHdhcmYybG9j LmMJMjAxMC8wNS8yMSAyMTowMTo0NgkxLjgwCi1AQCAtMzg0LDYgKzM4NCwxNiBAQAotIAkgIH0K LSAJICBicmVhazsKLSAKLSsJY2FzZSBEV0FSRl9WQUxVRV9PUFRJTUlaRURfT1VUOgotKwkgIC8q IFdlIGp1c3QgbGVhdmUgdGhlIGJpdHMgZW1wdHkgZm9yIG5vdy4gIFRoaXMgaXMgbm90IGlkZWFs Ci0rCSAgICAgYnV0IGdkYiBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBhIG5pY2Ugd2F5IHRvIHJl cHJlc2VudAotKwkgICAgIG9wdGltaXplZC1vdXQgcGllY2VzLiAgKi8KLSsJICB3YXJuaW5nIChf KCJieXRlcyAlbGQtJWxkIGluIGNvbXB1dGVkIG9iamVjdCB3ZXJlIG9wdGltaXplZCBvdXQ7ICIK LSsJCSAgICAgInJlcGxhY2luZyB3aXRoIHplcm9lcyIpLAotKwkJICAgb2Zmc2V0LAotKwkJICAg b2Zmc2V0ICsgKGxvbmcpIHRoaXNfc2l6ZSk7Ci0rCSAgYnJlYWs7Ci0rCi0gCWRlZmF1bHQ6Ci0g CSAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygiaW52YWxpZCBsb2NhdGlv biB0eXBlIikpOwotIAl9Ci1AQCAtNjA5LDYgKzYxOSw5IEBACi0gCSAgfQotIAkgIGJyZWFrOwot IAotKwkgIC8qIERXQVJGX1ZBTFVFX09QVElNSVpFRF9PVVQgY2FuJ3Qgb2NjdXIgaW4gdGhpcyBj b250ZXh0IC0tCi0rCSAgICAgaXQgY2FuIG9ubHkgYmUgZW5jb3VudGVyZWQgd2hlbiBtYWtpbmcg YSBwaWVjZS4gICovCi0rCWNhc2UgRFdBUkZfVkFMVUVfT1BUSU1JWkVEX09VVDoKLSAJZGVmYXVs dDoKLSAJICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJpbnZhbGlkIGxv Y2F0aW9uIHR5cGUiKSk7Ci0gCX0KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3Bp ZWNlcy5TCTIwMTAvMDUvMjEgMjA6Mzk6NTAJMS4xCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9waWVjZXMuUwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMgotQEAgLTM3LDE5ICszNywx OSBAQAotIGJhcjoKLSAuTEZCMDoKLSAJLmZpbGUgMSAicGllY2VzLmMiCi0tCSMgcGllY2VzLmM6 MjgKLS0JLmxvYyAxIDI4IDAKLSsJIyBwaWVjZXMuYzoyOQotKwkubG9jIDEgMjkgMAotIC5MVkww OgotIAkjIGJhc2ljIGJsb2NrIDIKLSAJcHVzaGwJJWVicAotIC5MQ0ZJMDoKLSAJbW92bAklZXNw LCAlZWJwCi0gLkxDRkkxOgotLQkjIHBpZWNlcy5jOjI5Ci0tCS5sb2MgMSAyOSAwCi0tCW1vdmwJ OCglZWJwKSwgJWVheAotIAkjIHBpZWNlcy5jOjMwCi0gCS5sb2MgMSAzMCAwCi0rCW1vdmwJOCgl ZWJwKSwgJWVheAotKwkjIHBpZWNlcy5jOjMxCi0rCS5sb2MgMSAzMSAwCi0gCXBvcGwJJWVicAot IC5MQ0ZJMjoKLSAJcmV0Ci1AQCAtNjAsOCArNjAsOCBAQAotIAkudHlwZQlmMSwgQGZ1bmN0aW9u Ci0gZjE6Ci0gLkxGQjE6Ci0tCSMgcGllY2VzLmM6MzQKLS0JLmxvYyAxIDM0IDAKLSsJIyBwaWVj ZXMuYzozNQotKwkubG9jIDEgMzUgMAotIC5MVkwxOgotIAkjIGJhc2ljIGJsb2NrIDIKLSAJcHVz aGwJJWVicAotQEAgLTczLDM2ICs3MywzNiBAQAotIC5MQ0ZJNToKLSAJbW92bAklZXNpLCAtNCgl ZWJwKQotIC5MQ0ZJNjoKLS0JIyBwaWVjZXMuYzozNwotLQkubG9jIDEgMzcgMAotKwkjIHBpZWNl cy5jOjM4Ci0rCS5sb2MgMSAzOCAwCi0gCW1vdmwJOCglZWJwKSwgJWVzaQotLQkjIHBpZWNlcy5j OjM0Ci0tCS5sb2MgMSAzNCAwCi0rCSMgcGllY2VzLmM6MzUKLSsJLmxvYyAxIDM1IDAKLSAJbW92 bAklZWJ4LCAtOCglZWJwKQotIC5MQ0ZJNzoKLS0JIyBwaWVjZXMuYzozNgotLQkubG9jIDEgMzYg MAotKwkjIHBpZWNlcy5jOjM3Ci0rCS5sb2MgMSAzNyAwCi0gCW1vdmwJJDQsICVlYngKLSAuTFZM MzoKLSsJIyBwaWVjZXMuYzozOQotKwkubG9jIDEgMzkgMAotKwltb3ZsCSVlYngsICglZXNwKQot IAkjIHBpZWNlcy5jOjM4Ci0gCS5sb2MgMSAzOCAwCi0tCW1vdmwJJWVieCwgKCVlc3ApCi0tCSMg cGllY2VzLmM6MzcKLS0JLmxvYyAxIDM3IDAKLSAJYWRkbAkkNywgJWVzaQotIC5MVkw0OgotLQkj IHBpZWNlcy5jOjM4Ci0tCS5sb2MgMSAzOCAwCi0tCWNhbGwJYmFyCi0gCSMgcGllY2VzLmM6MzkK LSAJLmxvYyAxIDM5IDAKLS0JbW92bAklZXNpLCAoJWVzcCkKLSAJY2FsbAliYXIKLSAJIyBwaWVj ZXMuYzo0MAotIAkubG9jIDEgNDAgMAotLQlsZWFsCSglZWJ4LCVlc2kpLCAlZWF4Ci0rCW1vdmwJ JWVzaSwgKCVlc3ApCi0rCWNhbGwJYmFyCi0gCSMgcGllY2VzLmM6NDEKLSAJLmxvYyAxIDQxIDAK LSsJbGVhbAkoJWVieCwlZXNpKSwgJWVheAotKwkjIHBpZWNlcy5jOjQyCi0rCS5sb2MgMSA0MiAw Ci0gCW1vdmwJLTgoJWVicCksICVlYngKLSAuTFZMNToKLSAJbW92bAktNCglZWJwKSwgJWVzaQot QEAgLTExOSw4ICsxMTksOCBAQAotIAkudHlwZQlmMiwgQGZ1bmN0aW9uCi0gZjI6Ci0gLkxGQjI6 Ci0tCSMgcGllY2VzLmM6NDUKLS0JLmxvYyAxIDQ1IDAKLSsJIyBwaWVjZXMuYzo0NgotKwkubG9j IDEgNDYgMAotIC5MVkw3OgotIAkjIGJhc2ljIGJsb2NrIDIKLSAJcHVzaGwJJWVicAotQEAgLTEz MiwzNiArMTMyLDM2IEBACi0gLkxDRkkxMjoKLSAJbW92bAklZXNpLCAtNCglZWJwKQotIC5MQ0ZJ MTM6Ci0tCSMgcGllY2VzLmM6NDgKLS0JLmxvYyAxIDQ4IDAKLSsJIyBwaWVjZXMuYzo0OQotKwku bG9jIDEgNDkgMAotIAltb3ZsCTgoJWVicCksICVlc2kKLS0JIyBwaWVjZXMuYzo0NQotLQkubG9j IDEgNDUgMAotKwkjIHBpZWNlcy5jOjQ2Ci0rCS5sb2MgMSA0NiAwCi0gCW1vdmwJJWVieCwgLTgo JWVicCkKLSAuTENGSTE0OgotLQkjIHBpZWNlcy5jOjQ3Ci0tCS5sb2MgMSA0NyAwCi0rCSMgcGll Y2VzLmM6NDgKLSsJLmxvYyAxIDQ4IDAKLSAJbW92bAkkNCwgJWVieAotIC5MVkw5OgotKwkjIHBp ZWNlcy5jOjUwCi0rCS5sb2MgMSA1MCAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0gCSMgcGllY2Vz LmM6NDkKLSAJLmxvYyAxIDQ5IDAKLS0JbW92bAklZWJ4LCAoJWVzcCkKLS0JIyBwaWVjZXMuYzo0 OAotLQkubG9jIDEgNDggMAotIAlhZGRsCSQ3LCAlZXNpCi0gLkxWTDEwOgotLQkjIHBpZWNlcy5j OjQ5Ci0tCS5sb2MgMSA0OSAwCi0tCWNhbGwJYmFyCi0gCSMgcGllY2VzLmM6NTAKLSAJLmxvYyAx IDUwIDAKLS0JbW92bAklZXNpLCAoJWVzcCkKLSAJY2FsbAliYXIKLSAJIyBwaWVjZXMuYzo1MQot IAkubG9jIDEgNTEgMAotLQlsZWFsCSglZWJ4LCVlc2kpLCAlZWF4Ci0rCW1vdmwJJWVzaSwgKCVl c3ApCi0rCWNhbGwJYmFyCi0gCSMgcGllY2VzLmM6NTIKLSAJLmxvYyAxIDUyIDAKLSsJbGVhbAko JWVieCwlZXNpKSwgJWVheAotKwkjIHBpZWNlcy5jOjUzCi0rCS5sb2MgMSA1MyAwCi0gCW1vdmwJ LTgoJWVicCksICVlYngKLSAuTFZMMTE6Ci0gCW1vdmwJLTQoJWVicCksICVlc2kKLUBAIC0xNzgs NTkgKzE3OCw1OSBAQAotIAkudHlwZQlmMywgQGZ1bmN0aW9uCi0gZjM6Ci0gLkxGQjM6Ci0tCSMg cGllY2VzLmM6NTYKLS0JLmxvYyAxIDU2IDAKLSsJIyBwaWVjZXMuYzo1NwotKwkubG9jIDEgNTcg MAotIC5MVkwxMzoKLSAJIyBiYXNpYyBibG9jayAyCi0gCXB1c2hsCSVlYnAKLSAuTENGSTE3Ogot LQkjIHBpZWNlcy5jOjU4Ci0tCS5sb2MgMSA1OCAwCi0rCSMgcGllY2VzLmM6NTkKLSsJLmxvYyAx IDU5IDAKLSAJbW92bAkkNCwgJWVkeAotLQkjIHBpZWNlcy5jOjU2Ci0tCS5sb2MgMSA1NiAwCi0r CSMgcGllY2VzLmM6NTcKLSsJLmxvYyAxIDU3IDAKLSAJbW92bAklZXNwLCAlZWJwCi0gLkxDRkkx ODoKLSAuTFZMMTQ6Ci0gCXN1YmwJJDEyLCAlZXNwCi0gLkxDRkkxOToKLS0JIyBwaWVjZXMuYzo1 OAotLQkubG9jIDEgNTggMAotKwkjIHBpZWNlcy5jOjU5Ci0rCS5sb2MgMSA1OSAwCi0gLkxWTDE1 OgotLQkjIHBpZWNlcy5jOjU2Ci0tCS5sb2MgMSA1NiAwCi0rCSMgcGllY2VzLmM6NTcKLSsJLmxv YyAxIDU3IDAKLSAJbW92bAklZXNpLCAtNCglZWJwKQotIC5MQ0ZJMjA6Ci0tCSMgcGllY2VzLmM6 NjAKLS0JLmxvYyAxIDYwIDAKLSsJIyBwaWVjZXMuYzo2MQotKwkubG9jIDEgNjEgMAotIAltb3Zz d2wJJWR4LCAlZXNpCi0tCSMgcGllY2VzLmM6NTYKLS0JLmxvYyAxIDU2IDAKLSsJIyBwaWVjZXMu Yzo1NwotKwkubG9jIDEgNTcgMAotIAltb3ZsCSVlYngsIC04KCVlYnApCi0gLkxDRkkyMToKLS0J IyBwaWVjZXMuYzo2MAotLQkubG9jIDEgNjAgMAotKwkjIHBpZWNlcy5jOjYxCi0rCS5sb2MgMSA2 MSAwCi0gCW1vdmwJJWVzaSwgKCVlc3ApCi0gCWNhbGwJYmFyCi0gLkxWTDE2OgotLQkjIHBpZWNl cy5jOjU3Ci0tCS5sb2MgMSA1NyAwCi0rCSMgcGllY2VzLmM6NTgKLSsJLmxvYyAxIDU4IDAKLSAJ bW92bAk4KCVlYnApLCAlZWR4Ci0gCXNhbGwJJDQsICVlZHgKLS0JIyBwaWVjZXMuYzo1OQotLQku bG9jIDEgNTkgMAotKwkjIHBpZWNlcy5jOjYwCi0rCS5sb2MgMSA2MCAwCi0gCWFkZGwJJDExMiwg JWVkeAotIAlzYXJ3CSQ0LCAlZHgKLS0JIyBwaWVjZXMuYzo2MQotLQkubG9jIDEgNjEgMAotKwkj IHBpZWNlcy5jOjYyCi0rCS5sb2MgMSA2MiAwCi0gCW1vdnN3bAklZHgsICVlYngKLSAJbW92bAkl ZWJ4LCAoJWVzcCkKLSAJY2FsbAliYXIKLS0JIyBwaWVjZXMuYzo2MgotLQkubG9jIDEgNjIgMAot LQlsZWFsCSglZXNpLCVlYngpLCAlZWF4Ci0gCSMgcGllY2VzLmM6NjMKLSAJLmxvYyAxIDYzIDAK LSsJbGVhbAkoJWVzaSwlZWJ4KSwgJWVheAotKwkjIHBpZWNlcy5jOjY0Ci0rCS5sb2MgMSA2NCAw Ci0gCW1vdmwJLTgoJWVicCksICVlYngKLSAJbW92bAktNCglZWJwKSwgJWVzaQotIC5MVkwxNzoK LUBAIC0yNDYsOCArMjQ2LDggQEAKLSAJLnR5cGUJZjQsIEBmdW5jdGlvbgotIGY0OgotIC5MRkI0 OgotLQkjIHBpZWNlcy5jOjY3Ci0tCS5sb2MgMSA2NyAwCi0rCSMgcGllY2VzLmM6NjgKLSsJLmxv YyAxIDY4IDAKLSAuTFZMMTg6Ci0gCSMgYmFzaWMgYmxvY2sgMgotIAlwdXNobAklZWJwCi1AQCAt MjYyLDI4ICsyNjIsMjggQEAKLSAuTFZMMTk6Ci0gCW1vdmwJJWVieCwgLTgoJWVicCkKLSAuTENG STI4OgotLQkjIHBpZWNlcy5jOjY5Ci0tCS5sb2MgMSA2OSAwCi0tCW1vdmwJJWVzaSwgJWVieAot IAkjIHBpZWNlcy5jOjcwCi0gCS5sb2MgMSA3MCAwCi0tCWFkZGwJJDEsICVlc2kKLS0JIyBwaWVj ZXMuYzo2OQotLQkubG9jIDEgNjkgMAotLS5MVkwyMDoKLSsJbW92bAklZXNpLCAlZWJ4Ci0gCSMg cGllY2VzLmM6NzEKLSAJLmxvYyAxIDcxIDAKLS0JbW92bAklZWJ4LCAoJWVzcCkKLS0JY2FsbAli YXIKLSsJYWRkbAkkMSwgJWVzaQotKwkjIHBpZWNlcy5jOjcwCi0rCS5sb2MgMSA3MCAwCi0rLkxW TDIwOgotIAkjIHBpZWNlcy5jOjcyCi0gCS5sb2MgMSA3MiAwCi0tCW1vdmwJJWVzaSwgKCVlc3Ap Ci0rCW1vdmwJJWVieCwgKCVlc3ApCi0gCWNhbGwJYmFyCi0gCSMgcGllY2VzLmM6NzMKLSAJLmxv YyAxIDczIDAKLS0JbGVhbAkoJWVieCwlZXNpKSwgJWVheAotKwltb3ZsCSVlc2ksICglZXNwKQot KwljYWxsCWJhcgotIAkjIHBpZWNlcy5jOjc0Ci0gCS5sb2MgMSA3NCAwCi0rCWxlYWwJKCVlYngs JWVzaSksICVlYXgKLSsJIyBwaWVjZXMuYzo3NQotKwkubG9jIDEgNzUgMAotIAltb3ZsCS04KCVl YnApLCAlZWJ4Ci0gLkxWTDIxOgotIAltb3ZsCS00KCVlYnApLCAlZXNpCi1AQCAtMzAwLDggKzMw MCw4IEBACi0gCS50eXBlCWY1LCBAZnVuY3Rpb24KLSBmNToKLSAuTEZCNToKLS0JIyBwaWVjZXMu Yzo3OAotLQkubG9jIDEgNzggMAotKwkjIHBpZWNlcy5jOjc5Ci0rCS5sb2MgMSA3OSAwCi0gLkxW TDIzOgotIAkjIGJhc2ljIGJsb2NrIDIKLSAJcHVzaGwJJWVicAotQEAgLTMxNiwyOCArMzE2LDI4 IEBACi0gLkxWTDI0OgotIAltb3ZsCSVlYngsIC04KCVlYnApCi0gLkxDRkkzNToKLS0JIyBwaWVj ZXMuYzo4MAotLQkubG9jIDEgODAgMAotLQltb3ZsCSVlc2ksICVlYngKLSAJIyBwaWVjZXMuYzo4 MQotIAkubG9jIDEgODEgMAotLQlhZGRsCSQxLCAlZXNpCi0tCSMgcGllY2VzLmM6ODAKLS0JLmxv YyAxIDgwIDAKLS0uTFZMMjU6Ci0rCW1vdmwJJWVzaSwgJWVieAotIAkjIHBpZWNlcy5jOjgyCi0g CS5sb2MgMSA4MiAwCi0tCW1vdmwJJWVieCwgKCVlc3ApCi0tCWNhbGwJYmFyCi0rCWFkZGwJJDEs ICVlc2kKLSsJIyBwaWVjZXMuYzo4MQotKwkubG9jIDEgODEgMAotKy5MVkwyNToKLSAJIyBwaWVj ZXMuYzo4MwotIAkubG9jIDEgODMgMAotLQltb3ZsCSVlc2ksICglZXNwKQotKwltb3ZsCSVlYngs ICglZXNwKQotIAljYWxsCWJhcgotIAkjIHBpZWNlcy5jOjg0Ci0gCS5sb2MgMSA4NCAwCi0tCWxl YWwJKCVlYngsJWVzaSksICVlYXgKLSsJbW92bAklZXNpLCAoJWVzcCkKLSsJY2FsbAliYXIKLSAJ IyBwaWVjZXMuYzo4NQotIAkubG9jIDEgODUgMAotKwlsZWFsCSglZWJ4LCVlc2kpLCAlZWF4Ci0r CSMgcGllY2VzLmM6ODYKLSsJLmxvYyAxIDg2IDAKLSAJbW92bAktOCglZWJwKSwgJWVieAotIC5M VkwyNjoKLSAJbW92bAktNCglZWJwKSwgJWVzaQotQEAgLTM1MCw2MCArMzUwLDExOCBAQAotIC5M RkU1OgotIAkuc2l6ZQlmNSwgLi1mNQotIAkucDJhbGlnbiA0LCwxNQotLS5nbG9ibCBtYWluCi0t CS50eXBlCW1haW4sIEBmdW5jdGlvbgotLW1haW46Ci0rLmdsb2JsIGY2Ci0rCS50eXBlCWY2LCBA ZnVuY3Rpb24KLStmNjoKLSAuTEZCNjoKLS0JIyBwaWVjZXMuYzo4OQotLQkubG9jIDEgODkgMAot KwkjIHBpZWNlcy5jOjkwCi0rCS5sb2MgMSA5MCAwCi0rLkxWTDI4OgotIAkjIGJhc2ljIGJsb2Nr IDIKLSAJcHVzaGwJJWVicAotIC5MQ0ZJMzg6Ci0gCW1vdmwJJWVzcCwgJWVicAotIC5MQ0ZJMzk6 Ci0tCXB1c2hsCSVlYngKLSsJc3VibAkkMTIsICVlc3AKLSAuTENGSTQwOgotLQkjIHBpZWNlcy5j OjkxCi0tCS5sb2MgMSA5MSAwCi0tCW1vdmwJJDcsICVlYngKLS0JIyBwaWVjZXMuYzo4OQotLQku bG9jIDEgODkgMAotLQlzdWJsCSQ0LCAlZXNwCi0rCW1vdmwJJWVzaSwgLTQoJWVicCkKLSAuTENG STQxOgotLQkjIHBpZWNlcy5jOjkxCi0tCS5sb2MgMSA5MSAwCi0tLkxWTDI4OgotLQkjIHBpZWNl cy5jOjkyCi0tCS5sb2MgMSA5MiAwCi0tCW1vdmwJJWVieCwgKCVlc3ApCi0tCWNhbGwJZjEKLSsJ bW92bAk4KCVlYnApLCAlZXNpCi0rLkxWTDI5OgotKwltb3ZsCSVlYngsIC04KCVlYnApCi0rLkxD Rkk0MjoKLSAJIyBwaWVjZXMuYzo5MwotIAkubG9jIDEgOTMgMAotLQltb3ZsCSVlYngsICglZXNw KQotLQljYWxsCWYyCi0rCW1vdmwJJWVzaSwgJWVieAotIAkjIHBpZWNlcy5jOjk0Ci0gCS5sb2Mg MSA5NCAwCi0tCW1vdmwJJWVieCwgKCVlc3ApCi0tCWNhbGwJZjMKLSsJYWRkbAkkMSwgJWVzaQot KwkjIHBpZWNlcy5jOjkzCi0rCS5sb2MgMSA5MyAwCi0rLkxWTDMwOgotIAkjIHBpZWNlcy5jOjk1 Ci0gCS5sb2MgMSA5NSAwCi0gCW1vdmwJJWVieCwgKCVlc3ApCi0tCWNhbGwJZjQKLSsJY2FsbAli YXIKLSAJIyBwaWVjZXMuYzo5NgotIAkubG9jIDEgOTYgMAotLQltb3ZsCSVlYngsICglZXNwKQot LQljYWxsCWY1Ci0rCW1vdmwJJWVzaSwgKCVlc3ApCi0rCWNhbGwJYmFyCi0rCSMgcGllY2VzLmM6 OTcKLSsJLmxvYyAxIDk3IDAKLSsJbGVhbAkoJWVieCwlZXNpKSwgJWVheAotIAkjIHBpZWNlcy5j Ojk4Ci0gCS5sb2MgMSA5OCAwCi0rCW1vdmwJLTgoJWVicCksICVlYngKLSsuTFZMMzE6Ci0rCW1v dmwJLTQoJWVicCksICVlc2kKLSsuTFZMMzI6Ci0rCW1vdmwJJWVicCwgJWVzcAotKy5MQ0ZJNDM6 Ci0rCXBvcGwJJWVicAotKy5MQ0ZJNDQ6Ci0rCXJldAotKy5MRkU2OgotKwkuc2l6ZQlmNiwgLi1m NgotKwkucDJhbGlnbiA0LCwxNQotKy5nbG9ibCBtYWluCi0rCS50eXBlCW1haW4sIEBmdW5jdGlv bgotK21haW46Ci0rLkxGQjc6Ci0rCSMgcGllY2VzLmM6MTAyCi0rCS5sb2MgMSAxMDIgMAotKwkj IGJhc2ljIGJsb2NrIDIKLSsJcHVzaGwJJWVicAotKy5MQ0ZJNDU6Ci0rCW1vdmwJJWVzcCwgJWVi cAotKy5MQ0ZJNDY6Ci0rCXB1c2hsCSVlYngKLSsuTENGSTQ3OgotKwkjIHBpZWNlcy5jOjEwNAot KwkubG9jIDEgMTA0IDAKLSsJbW92bAkkNywgJWVieAotKwkjIHBpZWNlcy5jOjEwMgotKwkubG9j IDEgMTAyIDAKLSsJc3VibAkkNCwgJWVzcAotKy5MQ0ZJNDg6Ci0rCSMgcGllY2VzLmM6MTA0Ci0r CS5sb2MgMSAxMDQgMAotKy5MVkwzMzoKLSsJIyBwaWVjZXMuYzoxMDUKLSsJLmxvYyAxIDEwNSAw Ci0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjEKLSsJIyBwaWVjZXMuYzoxMDYKLSsJLmxv YyAxIDEwNiAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjIKLSsJIyBwaWVjZXMuYzox MDcKLSsJLmxvYyAxIDEwNyAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJZjMKLSsJIyBw aWVjZXMuYzoxMDgKLSsJLmxvYyAxIDEwOCAwCi0rCW1vdmwJJWVieCwgKCVlc3ApCi0rCWNhbGwJ ZjQKLSsJIyBwaWVjZXMuYzoxMDkKLSsJLmxvYyAxIDEwOSAwCi0rCW1vdmwJJWVieCwgKCVlc3Ap Ci0rCWNhbGwJZjUKLSsJIyBwaWVjZXMuYzoxMTAKLSsJLmxvYyAxIDExMCAwCi0rCW1vdmwJJWVi eCwgKCVlc3ApCi0rCWNhbGwJZjYKLSsJIyBwaWVjZXMuYzoxMTIKLSsJLmxvYyAxIDExMiAwCi0g CWFkZGwJJDQsICVlc3AKLSAJeG9ybAklZWF4LCAlZWF4Ci0gCXBvcGwJJWVieAotLS5MQ0ZJNDI6 Ci0tLkxWTDI5OgotKy5MQ0ZJNDk6Ci0rLkxWTDM0OgotIAlwb3BsCSVlYnAKLS0uTENGSTQzOgot Ky5MQ0ZJNTA6Ci0gCXJldAotLS5MRkU2OgotKy5MRkU3OgotIAkuc2l6ZQltYWluLCAuLW1haW4K LSAjQVBQCi0gCS5zZWN0aW9uCS5kZWJ1Z19mcmFtZSwiIixAcHJvZ2JpdHMKLUBAIC02NDksMjAg KzcwNyw1NyBAQAotIAkuYnl0ZQkweGQJIyBEV19DRkFfZGVmX2NmYV9yZWdpc3RlcgotIAkudWxl YjEyOCAweDUKLSAJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotLQkubG9uZwkuTENG STQwLS5MQ0ZJMzkKLSsJLmxvbmcJLkxDRkk0MS0uTENGSTM5Ci0rCS5ieXRlCTB4ODYJIyBEV19D RkFfb2Zmc2V0LCBjb2x1bW4gMHg2Ci0rCS51bGViMTI4IDB4MwotKwkuYnl0ZQkweDQJIyBEV19D RkFfYWR2YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJNDItLkxDRkk0MQotKwkuYnl0ZQkweDgzCSMg RFdfQ0ZBX29mZnNldCwgY29sdW1uIDB4MwotKwkudWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg0CSMg RFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTQzLS5MQ0ZJNDIKLSsJLmJ5dGUJMHhk CSMgRFdfQ0ZBX2RlZl9jZmFfcmVnaXN0ZXIKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4YzYJ IyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4NgotKwkuYnl0ZQkweGMzCSMgRFdfQ0ZBX3Jlc3Rv cmUsIGNvbHVtbiAweDMKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotKwkubG9u ZwkuTENGSTQ0LS5MQ0ZJNDMKLSsJLmJ5dGUJMHhjNQkjIERXX0NGQV9yZXN0b3JlLCBjb2x1bW4g MHg1Ci0rCS5ieXRlCTB4ZQkjIERXX0NGQV9kZWZfY2ZhX29mZnNldAotKwkudWxlYjEyOCAweDQK LSsJLmFsaWduIDQKLSsuTEVGREUxMjoKLSsuTFNGREUxNDoKLSsJLmxvbmcJLkxFRkRFMTQtLkxB U0ZERTE0CSMgRkRFIExlbmd0aAotKy5MQVNGREUxNDoKLSsJLmxvbmcJLkxmcmFtZTAJIyBGREUg Q0lFIG9mZnNldAotKwkubG9uZwkuTEZCNwkjIEZERSBpbml0aWFsIGxvY2F0aW9uCi0rCS5sb25n CS5MRkU3LS5MRkI3CSMgRkRFIGFkZHJlc3MgcmFuZ2UKLSsJLmJ5dGUJMHg0CSMgRFdfQ0ZBX2Fk dmFuY2VfbG9jNAotKwkubG9uZwkuTENGSTQ1LS5MRkI3Ci0rCS5ieXRlCTB4ZQkjIERXX0NGQV9k ZWZfY2ZhX29mZnNldAotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg4NQkjIERXX0NGQV9vZmZz ZXQsIGNvbHVtbiAweDUKLSsJLnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4NAkjIERXX0NGQV9hZHZh bmNlX2xvYzQKLSsJLmxvbmcJLkxDRkk0Ni0uTENGSTQ1Ci0rCS5ieXRlCTB4ZAkjIERXX0NGQV9k ZWZfY2ZhX3JlZ2lzdGVyCi0rCS51bGViMTI4IDB4NQotKwkuYnl0ZQkweDQJIyBEV19DRkFfYWR2 YW5jZV9sb2M0Ci0rCS5sb25nCS5MQ0ZJNDctLkxDRkk0NgotIAkuYnl0ZQkweDgzCSMgRFdfQ0ZB X29mZnNldCwgY29sdW1uIDB4MwotIAkudWxlYjEyOCAweDMKLSAJLmJ5dGUJMHg0CSMgRFdfQ0ZB X2FkdmFuY2VfbG9jNAotLQkubG9uZwkuTENGSTQyLS5MQ0ZJNDAKLSsJLmxvbmcJLkxDRkk0OS0u TENGSTQ3Ci0gCS5ieXRlCTB4YzMJIyBEV19DRkFfcmVzdG9yZSwgY29sdW1uIDB4MwotIAkuYnl0 ZQkweDQJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0tCS5sb25nCS5MQ0ZJNDMtLkxDRkk0MgotKwku bG9uZwkuTENGSTUwLS5MQ0ZJNDkKLSAJLmJ5dGUJMHhjNQkjIERXX0NGQV9yZXN0b3JlLCBjb2x1 bW4gMHg1Ci0gCS5ieXRlCTB4YwkjIERXX0NGQV9kZWZfY2ZhCi0gCS51bGViMTI4IDB4NAotIAku dWxlYjEyOCAweDQKLSAJLmFsaWduIDQKLS0uTEVGREUxMjoKLSsuTEVGREUxNDoKLSAjTk9fQVBQ Ci0gCS50ZXh0Ci0gLkxldGV4dDA6Ci1AQCAtMTEzMCw2ICsxMjI1LDExIEBACi0gCS5ieXRlCTB4 NzUJIyBEV19PUF9icmVnNQotIAkuc2xlYjEyOCA4Ci0gCS5sb25nCS5MQ0ZJNDMtLkx0ZXh0MAkj IExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTEpCi0rCS5sb25nCS5MQ0ZJNDQt Lkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDExKQotKwkudmFsdWUJ MHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVn NAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNDQtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3Qg YmVnaW4gYWRkcmVzcyAoKi5MTFNUMTEpCi0gCS5sb25nCS5MRkU2LS5MdGV4dDAJIyBMb2NhdGlv biBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMSkKLSAJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4 cHJlc3Npb24gc2l6ZQotIAkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLUBAIC0xMTM3LDE0ICsx MjM3LDc0IEBACi0gCS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCou TExTVDExKQotIAkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNU MTEpCi0gLkxMU1QxMjoKLS0JLmxvbmcJLkxWTDI4LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJl Z2luIGFkZHJlc3MgKCouTExTVDEyKQotLQkubG9uZwkuTFZMMjktLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEyKQotLQkudmFsdWUJMHgxCSMgTG9jYXRpb24gZXhw cmVzc2lvbiBzaXplCi0rCS5sb25nCS5MVkwyOS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdp biBhZGRyZXNzICgqLkxMU1QxMikKLSsJLmxvbmcJLkxWTDMwLS5MdGV4dDAJIyBMb2NhdGlvbiBs aXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMikKLSsJLnZhbHVlCTB4YQkjIExvY2F0aW9uIGV4cHJl c3Npb24gc2l6ZQotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNsZWIxMjggMAotKwku Ynl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OTEJIyBE V19PUF9mYnJlZwotKwkuc2xlYjEyOCAwCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwku dWxlYjEyOCAweDQKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51bGViMTI4IDB4NAot KwkubG9uZwkuTFZMMzAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5M TFNUMTIpCi0rCS5sb25nCS5MVkwzMS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVz cyAoKi5MTFNUMTIpCi0rCS52YWx1ZQkweDgJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSAJ LmJ5dGUJMHg1MwkjIERXX09QX3JlZzMKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51 bGViMTI4IDB4NAotKwkuYnl0ZQkweDU2CSMgRFdfT1BfcmVnNgotKwkuYnl0ZQkweDkzCSMgRFdf T1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwku dWxlYjEyOCAweDQKLSsJLmxvbmcJLkxWTDMxLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2lu IGFkZHJlc3MgKCouTExTVDEyKQotKwkubG9uZwkuTFZMMzItLkx0ZXh0MAkjIExvY2F0aW9uIGxp c3QgZW5kIGFkZHJlc3MgKCouTExTVDEyKQotKwkudmFsdWUJMHg3CSMgTG9jYXRpb24gZXhwcmVz c2lvbiBzaXplCi0rCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotKwkudWxlYjEyOCAweDQKLSsJ LmJ5dGUJMHg1NgkjIERXX09QX3JlZzYKLSsJLmJ5dGUJMHg5MwkjIERXX09QX3BpZWNlCi0rCS51 bGViMTI4IDB4NAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHg0Ci0g CS5sb25nCTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCouTExTVDEyKQotIAku bG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUMTIpCi0rLkxMU1Qx MzoKLSsJLmxvbmcJLkxGQjctLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAo Ki5MTFNUMTMpCi0rCS5sb25nCS5MQ0ZJNDUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFk ZHJlc3MgKCouTExTVDEzKQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXpl Ci0rCS5ieXRlCTB4NzQJIyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA0Ci0rCS5sb25nCS5MQ0ZJ NDUtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTMpCi0rCS5s b25nCS5MQ0ZJNDYtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEz KQotKwkudmFsdWUJMHgyCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzQJ IyBEV19PUF9icmVnNAotKwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNDYtLkx0ZXh0MAkjIExv Y2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMTMpCi0rCS5sb25nCS5MQ0ZJNTAtLkx0 ZXh0MAkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDEzKQotKwkudmFsdWUJMHgy CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzUJIyBEV19PUF9icmVnNQot Kwkuc2xlYjEyOCA4Ci0rCS5sb25nCS5MQ0ZJNTAtLkx0ZXh0MAkjIExvY2F0aW9uIGxpc3QgYmVn aW4gYWRkcmVzcyAoKi5MTFNUMTMpCi0rCS5sb25nCS5MRkU3LS5MdGV4dDAJIyBMb2NhdGlvbiBs aXN0IGVuZCBhZGRyZXNzICgqLkxMU1QxMykKLSsJLnZhbHVlCTB4MgkjIExvY2F0aW9uIGV4cHJl c3Npb24gc2l6ZQotKwkuYnl0ZQkweDc0CSMgRFdfT1BfYnJlZzQKLSsJLnNsZWIxMjggNAotKwku bG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QxMykKLSsJLmxv bmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDEzKQotKy5MTFNUMTQ6 Ci0rCS5sb25nCS5MVkwzMy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgq LkxMU1QxNCkKLSsJLmxvbmcJLkxWTDM0LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRy ZXNzICgqLkxMU1QxNCkKLSsJLnZhbHVlCTB4MQkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQot KwkuYnl0ZQkweDUzCSMgRFdfT1BfcmVnMwotKwkubG9uZwkwCSMgTG9jYXRpb24gbGlzdCB0ZXJt aW5hdG9yIGJlZ2luICgqLkxMU1QxNCkKLSsJLmxvbmcJMAkjIExvY2F0aW9uIGxpc3QgdGVybWlu YXRvciBlbmQgKCouTExTVDE0KQotIAkuc2VjdGlvbgkuZGVidWdfaW5mbwotLQkubG9uZwkweDFl MwkjIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLmxvbmcJMHgyNTIJIyBMZW5n dGggb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0gCS52YWx1ZQkweDIJIyBEV0FSRiB2ZXJzaW9u IG51bWJlcgotIAkubG9uZwkuTGRlYnVnX2FiYnJldjAJIyBPZmZzZXQgSW50byBBYmJyZXYuIFNl Y3Rpb24KLSAJLmJ5dGUJMHg0CSMgUG9pbnRlciBTaXplIChpbiBieXRlcykKLUBAIC0xMjEyLDE4 MiArMTM3MiwyNDUgQEAKLSAJLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0gCS51bGVi MTI4IDAKLSAJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg0ZgotLQkudWxlYjEy OCAweDYJIyAoRElFICgweDc4KSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLnVsZWIxMjggMHgyCSMg KERJRSAoMHg3OCkgRFdfVEFHX3N0cnVjdHVyZV90eXBlKQotKwkuYXNjaWkgIkNcMCIJIyBEV19B VF9uYW1lCi0rCS5ieXRlCTB4YwkjIERXX0FUX2J5dGVfc2l6ZQotKwkuYnl0ZQkweDEJIyBEV19B VF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkweDE5CSMgRFdfQVRfZGVjbF9saW5lCi0r CS5sb25nCTB4YTcJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4MwkjIChESUUgKDB4ODIp IERXX1RBR19tZW1iZXIpCi0rCS5hc2NpaSAiaVwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgx CSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLSsJLmJ5dGUJMHgxOQkjIERXX0FUX2RlY2xf bGluZQotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotKwkuYnl0ZQkweDIJIyBEV19BVF9kYXRh X21lbWJlcl9sb2NhdGlvbgotKwkuYnl0ZQkweDIzCSMgRFdfT1BfcGx1c191Y29uc3QKLSsJLnVs ZWIxMjggMAotKwkudWxlYjEyOCAweDMJIyAoRElFICgweDhlKSBEV19UQUdfbWVtYmVyKQotKwku YXNjaWkgImpcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAo cGllY2VzLmMpCi0rCS5ieXRlCTB4MTkJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkj IERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24KLSsJ LmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDB4NAotKwkudWxlYjEy OCAweDMJIyAoRElFICgweDlhKSBEV19UQUdfbWVtYmVyKQotKwkuYXNjaWkgInFcMCIJIyBEV19B VF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRl CTB4MTkJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5 dGUJMHgyCSMgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24KLSsJLmJ5dGUJMHgyMwkjIERXX09Q X3BsdXNfdWNvbnN0Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVu IG9mIERJRSAweDc4Ci0rCS51bGViMTI4IDB4NgkjIChESUUgKDB4YTcpIERXX1RBR19zdWJwcm9n cmFtKQotIAkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5hbAotIAkuYXNjaWkgImJhclwwIgkjIERX X0FUX25hbWUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLS0JLmJ5 dGUJMHgxYgkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDFjCSMgRFdfQVRfZGVjbF9saW5l Ci0gCS5ieXRlCTB4MQkjIERXX0FUX3Byb3RvdHlwZWQKLSAJLmxvbmcJLkxGQjAJIyBEV19BVF9s b3dfcGMKLSAJLmxvbmcJLkxGRTAJIyBEV19BVF9oaWdoX3BjCi0gCS5sb25nCS5MTFNUMAkjIERX X0FUX2ZyYW1lX2Jhc2UKLS0JLmxvbmcJMHg5ZQkjIERXX0FUX3NpYmxpbmcKLS0JLnVsZWIxMjgg MHg3CSMgKERJRSAoMHg5MSkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5sb25nCTB4Y2QJ IyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUgKDB4YzApIERXX1RBR19mb3Jt YWxfcGFyYW1ldGVyKQotIAkuYXNjaWkgInhcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkj IERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4MWIJIyBEV19BVF9kZWNsX2xp bmUKLSsJLmJ5dGUJMHgxYwkjIERXX0FUX2RlY2xfbGluZQotIAkubG9uZwkweDQ4CSMgRFdfQVRf dHlwZQotIAkuYnl0ZQkweDIJIyBEV19BVF9sb2NhdGlvbgotIAkuYnl0ZQkweDkxCSMgRFdfT1Bf ZmJyZWcKLSAJLnNsZWIxMjggMAotLQkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAw eDc4Ci0tCS51bGViMTI4IDB4OAkjIChESUUgKDB4OWUpIERXX1RBR19zdWJwcm9ncmFtKQotKwku Ynl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweGE3Ci0rCS51bGViMTI4IDB4OAkjIChE SUUgKDB4Y2QpIERXX1RBR19zdWJwcm9ncmFtKQotIAkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5h bAotIAkuYXNjaWkgImYxXDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19BVF9kZWNs X2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkweDIxCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRl CTB4MjIJIyBEV19BVF9kZWNsX2xpbmUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90eXBlZAot IAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkubG9uZwkuTEZCMQkjIERXX0FUX2xvd19wYwot IAkubG9uZwkuTEZFMQkjIERXX0FUX2hpZ2hfcGMKLSAJLmxvbmcJLkxMU1QxCSMgRFdfQVRfZnJh bWVfYmFzZQotLQkubG9uZwkweGQ0CSMgRFdfQVRfc2libGluZwotLQkudWxlYjEyOCAweDcJIyAo RElFICgweGJhKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmxvbmcJMHgxMDMJIyBEV19B VF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUgKDB4ZTkpIERXX1RBR19mb3JtYWxfcGFy YW1ldGVyKQotIAkuYXNjaWkgImtcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FU X2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4MjEJIyBEV19BVF9kZWNsX2xpbmUKLSsJ LmJ5dGUJMHgyMgkjIERXX0FUX2RlY2xfbGluZQotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQot IAkuYnl0ZQkweDIJIyBEV19BVF9sb2NhdGlvbgotIAkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcK LSAJLnNsZWIxMjggMAotLQkudWxlYjEyOCAweDkJIyAoRElFICgweGM2KSBEV19UQUdfdmFyaWFi bGUpCi0rCS51bGViMTI4IDB4OQkjIChESUUgKDB4ZjUpIERXX1RBR192YXJpYWJsZSkKLSAJLmFz Y2lpICJhXDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBp ZWNlcy5jKQotLQkuYnl0ZQkweDIzCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRlCTB4MjQJIyBE V19BVF9kZWNsX2xpbmUKLSAJLmxvbmcJMHgyNQkjIERXX0FUX3R5cGUKLSAJLmxvbmcJLkxMU1Qy CSMgRFdfQVRfbG9jYXRpb24KLS0JLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg5 ZQotLQkudWxlYjEyOCAweDgJIyAoRElFICgweGQ0KSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5 dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhjZAotKwkudWxlYjEyOCAweDgJIyAoRElF ICgweDEwMykgRFdfVEFHX3N1YnByb2dyYW0pCi0gCS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFs Ci0gCS5hc2NpaSAiZjJcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xf ZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4MmMJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJ MHgyZAkjIERXX0FUX2RlY2xfbGluZQotIAkuYnl0ZQkweDEJIyBEV19BVF9wcm90b3R5cGVkCi0g CS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0gCS5sb25nCS5MRkIyCSMgRFdfQVRfbG93X3BjCi0g CS5sb25nCS5MRkUyCSMgRFdfQVRfaGlnaF9wYwotIAkubG9uZwkuTExTVDMJIyBEV19BVF9mcmFt ZV9iYXNlCi0tCS5sb25nCTB4MTBhCSMgRFdfQVRfc2libGluZwotLQkudWxlYjEyOCAweDcJIyAo RElFICgweGYwKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmxvbmcJMHgxMzkJIyBEV19B VF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChESUUgKDB4MTFmKSBEV19UQUdfZm9ybWFsX3Bh cmFtZXRlcikKLSAJLmFzY2lpICJrXDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19B VF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkweDJjCSMgRFdfQVRfZGVjbF9saW5lCi0r CS5ieXRlCTB4MmQJIyBEV19BVF9kZWNsX2xpbmUKLSAJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUK LSAJLmJ5dGUJMHgyCSMgRFdfQVRfbG9jYXRpb24KLSAJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVn Ci0gCS5zbGViMTI4IDAKLS0JLnVsZWIxMjggMHg5CSMgKERJRSAoMHhmYykgRFdfVEFHX3Zhcmlh YmxlKQotKwkudWxlYjEyOCAweDkJIyAoRElFICgweDEyYikgRFdfVEFHX3ZhcmlhYmxlKQotIAku YXNjaWkgImFcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAo cGllY2VzLmMpCi0tCS5ieXRlCTB4MmUJIyBEV19BVF9kZWNsX2xpbmUKLS0JLmxvbmcJMHgxMGEJ IyBEV19BVF90eXBlCi0rCS5ieXRlCTB4MmYJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHgx MzkJIyBEV19BVF90eXBlCi0gCS5sb25nCS5MTFNUNAkjIERXX0FUX2xvY2F0aW9uCi0tCS5ieXRl CTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4ZDQKLS0JLnVsZWIxMjggMHhhCSMgKERJRSAo MHgxMGEpIERXX1RBR19hcnJheV90eXBlKQotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9m IERJRSAweDEwMwotKwkudWxlYjEyOCAweGEJIyAoRElFICgweDEzOSkgRFdfVEFHX2FycmF5X3R5 cGUpCi0gCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0tCS5sb25nCTB4MTFhCSMgRFdfQVRfc2li bGluZwotLQkudWxlYjEyOCAweGIJIyAoRElFICgweDExMykgRFdfVEFHX3N1YnJhbmdlX3R5cGUp Ci0tCS5sb25nCTB4MTFhCSMgRFdfQVRfdHlwZQotKwkubG9uZwkweDE0OQkjIERXX0FUX3NpYmxp bmcKLSsJLnVsZWIxMjggMHhiCSMgKERJRSAoMHgxNDIpIERXX1RBR19zdWJyYW5nZV90eXBlKQot KwkubG9uZwkweDE0OQkjIERXX0FUX3R5cGUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfdXBwZXJfYm91 bmQKLS0JLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxMGEKLS0JLnVsZWIxMjgg MHhjCSMgKERJRSAoMHgxMWEpIERXX1RBR19iYXNlX3R5cGUpCi0rCS5ieXRlCTAJIyBlbmQgb2Yg Y2hpbGRyZW4gb2YgRElFIDB4MTM5Ci0rCS51bGViMTI4IDB4YwkjIChESUUgKDB4MTQ5KSBEV19U QUdfYmFzZV90eXBlKQotIAkuYnl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUKLSAJLmJ5dGUJMHg3 CSMgRFdfQVRfZW5jb2RpbmcKLS0JLnVsZWIxMjggMHg4CSMgKERJRSAoMHgxMWQpIERXX1RBR19z dWJwcm9ncmFtKQotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDE0YykgRFdfVEFHX3N1YnByb2dy YW0pCi0gCS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFsCi0gCS5hc2NpaSAiZjNcMCIJIyBEV19B VF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRl CTB4MzcJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHgzOAkjIERXX0FUX2RlY2xfbGluZQot IAkuYnl0ZQkweDEJIyBEV19BVF9wcm90b3R5cGVkCi0gCS5sb25nCTB4NDgJIyBEV19BVF90eXBl Ci0gCS5sb25nCS5MRkIzCSMgRFdfQVRfbG93X3BjCi0gCS5sb25nCS5MRkUzCSMgRFdfQVRfaGln aF9wYwotIAkubG9uZwkuTExTVDUJIyBEV19BVF9mcmFtZV9iYXNlCi0tCS5sb25nCTB4MTUzCSMg RFdfQVRfc2libGluZwotLQkudWxlYjEyOCAweDcJIyAoRElFICgweDEzOSkgRFdfVEFHX2Zvcm1h bF9wYXJhbWV0ZXIpCi0rCS5sb25nCTB4MTgyCSMgRFdfQVRfc2libGluZwotKwkudWxlYjEyOCAw eDcJIyAoRElFICgweDE2OCkgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0gCS5hc2NpaSAia1ww IgkjIERXX0FUX25hbWUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykK LS0JLmJ5dGUJMHgzNwkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDM4CSMgRFdfQVRfZGVj bF9saW5lCi0gCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0gCS5ieXRlCTB4MgkjIERXX0FUX2xv Y2F0aW9uCi0gCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotIAkuc2xlYjEyOCAwCi0tCS51bGVi MTI4IDB4OQkjIChESUUgKDB4MTQ1KSBEV19UQUdfdmFyaWFibGUpCi0rCS51bGViMTI4IDB4OQkj IChESUUgKDB4MTc0KSBEV19UQUdfdmFyaWFibGUpCi0gCS5hc2NpaSAiYVwwIgkjIERXX0FUX25h bWUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChwaWVjZXMuYykKLS0JLmJ5dGUJMHgz OQkjIERXX0FUX2RlY2xfbGluZQotKwkuYnl0ZQkweDNhCSMgRFdfQVRfZGVjbF9saW5lCi0gCS5s b25nCTB4NGYJIyBEV19BVF90eXBlCi0gCS5sb25nCS5MTFNUNgkjIERXX0FUX2xvY2F0aW9uCi0t CS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MTFkCi0tCS51bGViMTI4IDB4OAkj IChESUUgKDB4MTUzKSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGls ZHJlbiBvZiBESUUgMHgxNGMKLSsJLnVsZWIxMjggMHg4CSMgKERJRSAoMHgxODIpIERXX1RBR19z dWJwcm9ncmFtKQotIAkuYnl0ZQkweDEJIyBEV19BVF9leHRlcm5hbAotIAkuYXNjaWkgImY0XDAi CSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQot LQkuYnl0ZQkweDQyCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRlCTB4NDMJIyBEV19BVF9kZWNs X2xpbmUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90eXBlZAotIAkubG9uZwkweDQ4CSMgRFdf QVRfdHlwZQotIAkubG9uZwkuTEZCNAkjIERXX0FUX2xvd19wYwotIAkubG9uZwkuTEZFNAkjIERX X0FUX2hpZ2hfcGMKLSAJLmxvbmcJLkxMU1Q3CSMgRFdfQVRfZnJhbWVfYmFzZQotLQkubG9uZwkw eDE4OQkjIERXX0FUX3NpYmxpbmcKLS0JLnVsZWIxMjggMHg3CSMgKERJRSAoMHgxNmYpIERXX1RB R19mb3JtYWxfcGFyYW1ldGVyKQotKwkubG9uZwkweDFiOAkjIERXX0FUX3NpYmxpbmcKLSsJLnVs ZWIxMjggMHg3CSMgKERJRSAoMHgxOWUpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotIAkuYXNj aWkgImtcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGll Y2VzLmMpCi0tCS5ieXRlCTB4NDIJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHg0MwkjIERX X0FUX2RlY2xfbGluZQotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkuYnl0ZQkweDIJIyBE V19BVF9sb2NhdGlvbgotIAkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSAJLnNsZWIxMjggMAot LQkudWxlYjEyOCAweDkJIyAoRElFICgweDE3YikgRFdfVEFHX3ZhcmlhYmxlKQotKwkudWxlYjEy OCAweDkJIyAoRElFICgweDFhYSkgRFdfVEFHX3ZhcmlhYmxlKQotIAkuYXNjaWkgImFcMCIJIyBE V19BVF9uYW1lCi0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5i eXRlCTB4NDQJIyBEV19BVF9kZWNsX2xpbmUKLS0JLmxvbmcJMHgxMGEJIyBEV19BVF90eXBlCi0r CS5ieXRlCTB4NDUJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHgxMzkJIyBEV19BVF90eXBl Ci0gCS5sb25nCS5MTFNUOAkjIERXX0FUX2xvY2F0aW9uCi0tCS5ieXRlCTAJIyBlbmQgb2YgY2hp bGRyZW4gb2YgRElFIDB4MTUzCi0tCS51bGViMTI4IDB4OAkjIChESUUgKDB4MTg5KSBEV19UQUdf c3VicHJvZ3JhbSkKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxODIKLSsJ LnVsZWIxMjggMHg4CSMgKERJRSAoMHgxYjgpIERXX1RBR19zdWJwcm9ncmFtKQotIAkuYnl0ZQkw eDEJIyBEV19BVF9leHRlcm5hbAotIAkuYXNjaWkgImY1XDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0 ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkweDRkCSMgRFdfQVRf ZGVjbF9saW5lCi0rCS5ieXRlCTB4NGUJIyBEV19BVF9kZWNsX2xpbmUKLSAJLmJ5dGUJMHgxCSMg RFdfQVRfcHJvdG90eXBlZAotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkubG9uZwkuTEZC NQkjIERXX0FUX2xvd19wYwotIAkubG9uZwkuTEZFNQkjIERXX0FUX2hpZ2hfcGMKLSAJLmxvbmcJ LkxMU1Q5CSMgRFdfQVRfZnJhbWVfYmFzZQotLQkubG9uZwkweDFiZgkjIERXX0FUX3NpYmxpbmcK LS0JLnVsZWIxMjggMHg3CSMgKERJRSAoMHgxYTUpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQot KwkubG9uZwkweDFlZQkjIERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHg3CSMgKERJRSAoMHgx ZDQpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotIAkuYXNjaWkgImtcMCIJIyBEV19BVF9uYW1l Ci0gCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4NGQJ IyBEV19BVF9kZWNsX2xpbmUKLSsJLmJ5dGUJMHg0ZQkjIERXX0FUX2RlY2xfbGluZQotIAkubG9u ZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkuYnl0ZQkweDIJIyBEV19BVF9sb2NhdGlvbgotIAkuYnl0 ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSAJLnNsZWIxMjggMAotLQkudWxlYjEyOCAweDkJIyAoRElF ICgweDFiMSkgRFdfVEFHX3ZhcmlhYmxlKQotKwkudWxlYjEyOCAweDkJIyAoRElFICgweDFlMCkg RFdfVEFHX3ZhcmlhYmxlKQotIAkuYXNjaWkgImFcMCIJIyBEV19BVF9uYW1lCi0gCS5ieXRlCTB4 MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0tCS5ieXRlCTB4NGYJIyBEV19BVF9kZWNs X2xpbmUKLSsJLmJ5dGUJMHg1MAkjIERXX0FUX2RlY2xfbGluZQotIAkubG9uZwkweDI1CSMgRFdf QVRfdHlwZQotIAkubG9uZwkuTExTVDEwCSMgRFdfQVRfbG9jYXRpb24KLS0JLmJ5dGUJMAkjIGVu ZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxODkKLS0JLnVsZWIxMjggMHhkCSMgKERJRSAoMHgxYmYp IERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAw eDFiOAotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDFlZSkgRFdfVEFHX3N1YnByb2dyYW0pCi0g CS5ieXRlCTB4MQkjIERXX0FUX2V4dGVybmFsCi0tCS5sb25nCS5MQVNGMAkjIERXX0FUX25hbWU6 ICJtYWluIgotKwkuYXNjaWkgImY2XDAiCSMgRFdfQVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19B VF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0ZQkweDU4CSMgRFdfQVRfZGVjbF9saW5lCi0r CS5ieXRlCTB4NTkJIyBEV19BVF9kZWNsX2xpbmUKLSAJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90 eXBlZAotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkubG9uZwkuTEZCNgkjIERXX0FUX2xv d19wYwotIAkubG9uZwkuTEZFNgkjIERXX0FUX2hpZ2hfcGMKLSAJLmxvbmcJLkxMU1QxMQkjIERX X0FUX2ZyYW1lX2Jhc2UKLS0JLnVsZWIxMjggMHg5CSMgKERJRSAoMHgxZDgpIERXX1RBR192YXJp YWJsZSkKLSsJLmxvbmcJMHgyMmUJIyBEV19BVF9zaWJsaW5nCi0rCS51bGViMTI4IDB4NwkjIChE SUUgKDB4MjBhKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSAJLmFzY2lpICJrXDAiCSMgRFdf QVRfbmFtZQotIAkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotLQkuYnl0 ZQkweDVhCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5ieXRlCTB4NTkJIyBEV19BVF9kZWNsX2xpbmUK LSAJLmxvbmcJMHg0OAkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMHgyCSMgRFdfQVRfbG9jYXRpb24K LSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IDAKLSsJLnVsZWIxMjggMHhk CSMgKERJRSAoMHgyMTYpIERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lpICJ6XDAiCSMgRFdfQVRf bmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkw eDViCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0rCS5ieXRl CTB4MTcJIyBEV19BVF9jb25zdF92YWx1ZQotKwkudWxlYjEyOCAweDkJIyAoRElFICgweDIyMCkg RFdfVEFHX3ZhcmlhYmxlKQotKwkuYXNjaWkgImFcMCIJIyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4 MQkjIERXX0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NWMJIyBEV19BVF9kZWNs X2xpbmUKLSsJLmxvbmcJMHg3OAkjIERXX0FUX3R5cGUKLSAJLmxvbmcJLkxMU1QxMgkjIERXX0FU X2xvY2F0aW9uCi0tCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MWJmCi0rCS5i eXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MWVlCi0rCS51bGViMTI4IDB4ZQkjIChE SUUgKDB4MjJlKSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZXh0ZXJu YWwKLSsJLmxvbmcJLkxBU0YwCSMgRFdfQVRfbmFtZTogIm1haW4iCi0rCS5ieXRlCTB4MQkjIERX X0FUX2RlY2xfZmlsZSAocGllY2VzLmMpCi0rCS5ieXRlCTB4NjUJIyBEV19BVF9kZWNsX2xpbmUK LSsJLmJ5dGUJMHgxCSMgRFdfQVRfcHJvdG90eXBlZAotKwkubG9uZwkweDQ4CSMgRFdfQVRfdHlw ZQotKwkubG9uZwkuTEZCNwkjIERXX0FUX2xvd19wYwotKwkubG9uZwkuTEZFNwkjIERXX0FUX2hp Z2hfcGMKLSsJLmxvbmcJLkxMU1QxMwkjIERXX0FUX2ZyYW1lX2Jhc2UKLSsJLnVsZWIxMjggMHg5 CSMgKERJRSAoMHgyNDcpIERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lpICJrXDAiCSMgRFdfQVRf bmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKHBpZWNlcy5jKQotKwkuYnl0ZQkw eDY3CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NDgJIyBEV19BVF90eXBlCi0rCS5sb25n CS5MTFNUMTQJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9m IERJRSAweDIyZQotIAkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweGIKLSAJLnNl Y3Rpb24JLmRlYnVnX2FiYnJldgotIAkudWxlYjEyOCAweDEJIyAoYWJicmV2IGNvZGUpCi1AQCAt MTU3Nyw2ICsxODAwLDIxIEBACi0gCS5ieXRlCTAKLSAJLmJ5dGUJMAotIAkudWxlYjEyOCAweGQJ IyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MzQJIyAoVEFHOiBEV19UQUdfdmFyaWFibGUp Ci0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFt ZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxlYjEyOCAweDNhCSMg KERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51 bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9S TV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEz CSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgxYwkjIChEV19BVF9jb25zdF92YWx1ZSkK LSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAot KwkudWxlYjEyOCAweGUJIyAoYWJicmV2IGNvZGUpCi0gCS51bGViMTI4IDB4MmUJIyAoVEFHOiBE V19UQUdfc3VicHJvZ3JhbSkKLSAJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0gCS51bGVi MTI4IDB4M2YJIyAoRFdfQVRfZXh0ZXJuYWwpCi1AQCAtMTYwMSwzNCArMTgzOSwzOCBAQAotIAku Ynl0ZQkwCi0gCS5ieXRlCTAKLSAJLnNlY3Rpb24JLmRlYnVnX3B1Ym5hbWVzLCIiLEBwcm9nYml0 cwotLQkubG9uZwkweDQyCSMgTGVuZ3RoIG9mIFB1YmxpYyBOYW1lcyBJbmZvCi0rCS5sb25nCTB4 NDkJIyBMZW5ndGggb2YgUHVibGljIE5hbWVzIEluZm8KLSAJLnZhbHVlCTB4MgkjIERXQVJGIFZl cnNpb24KLSAJLmxvbmcJLkxkZWJ1Z19pbmZvMAkjIE9mZnNldCBvZiBDb21waWxhdGlvbiBVbml0 IEluZm8KLS0JLmxvbmcJMHgxZTcJIyBDb21waWxhdGlvbiBVbml0IExlbmd0aAotLQkubG9uZwkw eDc4CSMgRElFIG9mZnNldAotKwkubG9uZwkweDI1NgkjIENvbXBpbGF0aW9uIFVuaXQgTGVuZ3Ro Ci0rCS5sb25nCTB4YTcJIyBESUUgb2Zmc2V0Ci0gCS5hc2NpaSAiYmFyXDAiCSMgZXh0ZXJuYWwg bmFtZQotLQkubG9uZwkweDllCSMgRElFIG9mZnNldAotKwkubG9uZwkweGNkCSMgRElFIG9mZnNl dAotIAkuYXNjaWkgImYxXDAiCSMgZXh0ZXJuYWwgbmFtZQotLQkubG9uZwkweGQ0CSMgRElFIG9m ZnNldAotKwkubG9uZwkweDEwMwkjIERJRSBvZmZzZXQKLSAJLmFzY2lpICJmMlwwIgkjIGV4dGVy bmFsIG5hbWUKLS0JLmxvbmcJMHgxMWQJIyBESUUgb2Zmc2V0Ci0rCS5sb25nCTB4MTRjCSMgRElF IG9mZnNldAotIAkuYXNjaWkgImYzXDAiCSMgZXh0ZXJuYWwgbmFtZQotLQkubG9uZwkweDE1Mwkj IERJRSBvZmZzZXQKLSsJLmxvbmcJMHgxODIJIyBESUUgb2Zmc2V0Ci0gCS5hc2NpaSAiZjRcMCIJ IyBleHRlcm5hbCBuYW1lCi0tCS5sb25nCTB4MTg5CSMgRElFIG9mZnNldAotKwkubG9uZwkweDFi OAkjIERJRSBvZmZzZXQKLSAJLmFzY2lpICJmNVwwIgkjIGV4dGVybmFsIG5hbWUKLS0JLmxvbmcJ MHgxYmYJIyBESUUgb2Zmc2V0Ci0rCS5sb25nCTB4MWVlCSMgRElFIG9mZnNldAotKwkuYXNjaWkg ImY2XDAiCSMgZXh0ZXJuYWwgbmFtZQotKwkubG9uZwkweDIyZQkjIERJRSBvZmZzZXQKLSAJLmFz Y2lpICJtYWluXDAiCSMgZXh0ZXJuYWwgbmFtZQotIAkubG9uZwkwCi0gCS5zZWN0aW9uCS5kZWJ1 Z19wdWJ0eXBlcywiIixAcHJvZ2JpdHMKLS0JLmxvbmcJMHgxYQkjIExlbmd0aCBvZiBQdWJsaWMg VHlwZSBOYW1lcyBJbmZvCi0rCS5sb25nCTB4MjAJIyBMZW5ndGggb2YgUHVibGljIFR5cGUgTmFt ZXMgSW5mbwotIAkudmFsdWUJMHgyCSMgRFdBUkYgVmVyc2lvbgotIAkubG9uZwkuTGRlYnVnX2lu Zm8wCSMgT2Zmc2V0IG9mIENvbXBpbGF0aW9uIFVuaXQgSW5mbwotLQkubG9uZwkweDFlNwkjIENv bXBpbGF0aW9uIFVuaXQgTGVuZ3RoCi0rCS5sb25nCTB4MjU2CSMgQ29tcGlsYXRpb24gVW5pdCBM ZW5ndGgKLSAJLmxvbmcJMHgyNQkjIERJRSBvZmZzZXQKLSAJLmFzY2lpICJBXDAiCSMgZXh0ZXJu YWwgbmFtZQotIAkubG9uZwkweDRmCSMgRElFIG9mZnNldAotIAkuYXNjaWkgIkJcMCIJIyBleHRl cm5hbCBuYW1lCi0rCS5sb25nCTB4NzgJIyBESUUgb2Zmc2V0Ci0rCS5hc2NpaSAiQ1wwIgkjIGV4 dGVybmFsIG5hbWUKLSAJLmxvbmcJMAotIAkuc2VjdGlvbgkuZGVidWdfYXJhbmdlcywiIixAcHJv Z2JpdHMKLSAJLmxvbmcJMHgxYwkjIExlbmd0aCBvZiBBZGRyZXNzIFJhbmdlcyBJbmZvCi0tLS0g c3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuYwkyMDEwLzA1LzIxIDIwOjM5OjUw CTEuMQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcGllY2VzLmMJMjAxMC8wNS8y MSAyMTowMTo0NgkxLjIKLUBAIC0yMiw2ICsyMiw3IEBACi0gCi0gc3RydWN0IEEgeyBpbnQgaTsg aW50IGo7IH07Ci0gc3RydWN0IEIgeyBpbnQgOiA0OyBpbnQgaSA6IDEyOyBpbnQgaiA6IDEyOyBp bnQgOiA0OyB9OwotK3N0cnVjdCBDIHsgaW50IGk7IGludCBqOyBpbnQgcTsgfTsKLSAKLSBfX2F0 dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLSBiYXIgKGludCB4KQotQEAgLTg0LDYgKzg1LDE4 IEBACi0gICByZXR1cm4gYS5pICsgYS5qOwkJLyogZjUgYnJlYWtwb2ludCAqLwotIH0KLSAKLStf X2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGludAotK2Y2IChpbnQgaykKLSt7Ci0rICBpbnQgeiA9 IDIzOwotKyAgc3RydWN0IEMgYSA9IHsgaywgaywgen07Ci0rICBhc20gKCIiIDogIityIiAoYS5p KSk7Ci0rICBhLmorKzsKLSsgIGJhciAoYS5pKTsKLSsgIGJhciAoYS5qKTsKLSsgIHJldHVybiBh LmkgKyBhLmo7CQkvKiBmNiBicmVha3BvaW50ICovCi0rfQotKwotIGludAotIG1haW4gKHZvaWQp Ci0gewotQEAgLTk0LDUgKzEwNyw2IEBACi0gICBmMyAoayk7Ci0gICBmNCAoayk7Ci0gICBmNSAo ayk7Ci0rICBmNiAoayk7Ci0gICByZXR1cm4gMDsKLSB9Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9waWVjZXMuZXhwCTIwMTAvMDUvMjEgMjE6MDA6MjcJMS4yCi0rKysgc3JjL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuZXhwCTIwMTAvMDUvMjEgMjE6MDE6NDYJMS4z Ci1AQCAtNjcsNSArNjcsMjggQEAKLSAgICAgZ2RiX3Rlc3QgInByaW50IGFcWzFcXSIgIiA9IDE0 IiAicHJpbnQgYVxbMVxdIGluIHBpZWNlczpmMiIKLSB9Ci0gCi0rIyBGdW5jdGlvbiBmNiB0ZXN0 cyBmb3IgYW4gZW1wdHkgRFdfT1BfcGllY2UuCi0rcHJvYyBwaWVjZXNfdGVzdF9mNiB7fSB7Ci0r ICAgIGdsb2JhbCBjc3JjZmlsZQotKyAgICBzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAi ZjYgYnJlYWtwb2ludCIgJGNzcmNmaWxlXQotKyAgICBnZGJfdGVzdCAiYnJlYWsgcGllY2VzLmM6 JGxpbmUiICJCcmVha3BvaW50IDQuKiIgXAotKyAgICAgICAic2V0IGY2IGJyZWFrcG9pbnQgZm9y IHBpZWNlcyIKLSsgICAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIGY2 IGJyZWFrcG9pbnQgZm9yIHBpZWNlcyIKLSsgICAgZ2RiX3Rlc3QgInByaW50IGEiIFwKLSsJIndh cm5pbmc6IGJ5dGVzIC4qIGluIGNvbXB1dGVkIG9iamVjdCB3ZXJlLiogPSB7aSA9IDcsIGogPSA4 LCBxID0gMH0iIFwKLSsJInByaW50IGEgd2l0aCBvcHRpbWl6ZWQgb3V0IHBpZWNlIgotKyAgICAj IE5vdGU6IG5vIHdhcm5pbmcgZm9yIHRoaXMgY2FzZS4KLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUg InByaW50IGEuaSIgXAotKwkicHJpbnQgYS5pIHdpdGggb3B0aW1pemVkIG91dCBwaWVjZSIgewot KwkgICAgLXJlICJ3YXJuaW5nOiBzb21lIGJpdHMgaW4gY29tcHV0ZWQgb2JqZWN0IiB7Ci0rCQlm YWlsICJwcmludCBhLmkgd2l0aCBvcHRpbWl6ZWQgb3V0IHBpZWNlIgotKwkgICAgfQotKwkgICAg LXJlICIgPSA3IiB7Ci0rCQlwYXNzICJwcmludCBhLmkgd2l0aCBvcHRpbWl6ZWQgb3V0IHBpZWNl IgotKwkgICAgfQotKwl9Ci0rfQotKwotIHBpZWNlc190ZXN0X2YxCi0gcGllY2VzX3Rlc3RfZjIK LStwaWVjZXNfdGVzdF9mNgoKZGlmZiAtLWdpdCBhL2dkYi1iejU4OTQ2Ny1waWVjZXM0b2Y0LnBh dGNoIGIvZ2RiLWJ6NTg5NDY3LXBpZWNlczRvZjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDQyZmZiNDEuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTg5NDY3LXBpZWNlczRvZjQu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MjAgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMC0wNS9tc2cwMDE5MS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMTE4MzIKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEwLzA1LzIxIDIxOjEzOjEwCTEuMTE4MzMKLSMjIC0xLDUgKzEsMjAgQEAKLSAyMDEwLTA1LTIx ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0rCSogZHdhcmYybG9jLmMgKGV4 dHJhY3RfYml0c19wcmltaXRpdmUpOiBOZXcgZnVuY3Rpb24uCi0rCShleHRyYWN0X2JpdHMpOiBM aWtld2lzZS4KLSsJKGluc2VydF9iaXRzKTogTGlrZXdpc2UuCi0rCShjb3B5X2JpdHdpc2UpOiBM aWtld2lzZS4KLSsJKHJlYWRfcGllY2VkX3ZhbHVlKTogRG8gYWxsIG9wZXJhdGlvbnMgaW4gYml0 cy4KLSsJKHdyaXRlX3BpZWNlZF92YWx1ZSk6IExpa2V3aXNlLgotKwkqIGR3YXJmMmV4cHIuaCAo c3RydWN0IGR3YXJmX2V4cHJfcGllY2UpIDxvZmZzZXQ+OiBOZXcgZmllbGQuCi0rCSogZHdhcmYy ZXhwci5jIChhZGRfcGllY2UpOiBOZXcgYXJndW1lbnRzIGJpdF9waWVjZSwgb2Zmc2V0LgotKwlB bHdheXMgdXNlIHhyZWFsbG9jIHRvIHJlc2l6ZSBwaWVjZSBhcnJheS4KLSsJKGV4ZWN1dGVfc3Rh Y2tfb3ApIDxEV19PUF9yZWcwPjogSGFuZGxlIERXX09QX2JpdF9waWVjZS4KLSsJPERXX09QX3Bp ZWNlPjogVXBkYXRlLgotKwk8RFdfT1BfYml0X3BpZWNlPjogTmV3IGNhc2UuCi0rCi0jIyMgc3Jj L2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMDUvMjEgMjE6MDE6NDYJMS4yMjc1Ci0jIyMg c3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTAvMDUvMjEgMjE6MTM6MTMJMS4yMjc2Ci0j IyAtMSw1ICsxLDEyIEBACi0gMjAxMC0wNS0yMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQu Y29tPgotIAotKwkqIGdkYi5kd2FyZjIvcGllY2VzLmV4cCAocGllY2VzX3Rlc3RfZjMpOiBOZXcg cHJvYy4KLSsJQ2FsbCBpdC4KLSsJKiBnZGIuZHdhcmYyL3BpZWNlcy5TOiBVcGRhdGUuCi0rCSog Z2RiLmR3YXJmMi9waWVjZXMuYyAoc3RydWN0IEIpOiBSZW1vdmUgaW5pdGlhbCBmaWVsZC4KLSsK LS0tLSBzcmMvZ2RiL2R3YXJmMmV4cHIuYwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuNDMKLSsrKyBz cmMvZ2RiL2R3YXJmMmV4cHIuYwkyMDEwLzA1LzIxIDIxOjEzOjEwCTEuNDQKLUBAIC0xNTMsMjMg KzE1MywyMSBAQAotIAotIC8qIEFkZCBhIG5ldyBwaWVjZSB0byBDVFgncyBwaWVjZSBsaXN0LiAg Ki8KLSBzdGF0aWMgdm9pZAotLWFkZF9waWVjZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAq Y3R4LCBVTE9OR0VTVCBzaXplKQotK2FkZF9waWVjZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4 dCAqY3R4LCBVTE9OR0VTVCBzaXplLCBVTE9OR0VTVCBvZmZzZXQpCi0gewotICAgc3RydWN0IGR3 YXJmX2V4cHJfcGllY2UgKnA7Ci0gCi0gICBjdHgtPm51bV9waWVjZXMrKzsKLSAKLS0gIGlmIChj dHgtPnBpZWNlcykKLS0gICAgY3R4LT5waWVjZXMgPSB4cmVhbGxvYyAoY3R4LT5waWVjZXMsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgtPm51bV9waWVjZXMKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSkpKTsK LS0gIGVsc2UKLS0gICAgY3R4LT5waWVjZXMgPSB4bWFsbG9jIChjdHgtPm51bV9waWVjZXMKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemVvZiAoc3RydWN0IGR3YXJmX2V4cHJfcGll Y2UpKTsKLSsgIGN0eC0+cGllY2VzID0geHJlYWxsb2MgKGN0eC0+cGllY2VzLAotKwkJCSAgKGN0 eC0+bnVtX3BpZWNlcwotKwkJCSAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSkp KTsKLSAKLSAgIHAgPSAmY3R4LT5waWVjZXNbY3R4LT5udW1fcGllY2VzIC0gMV07Ci0gICBwLT5s b2NhdGlvbiA9IGN0eC0+bG9jYXRpb247Ci0gICBwLT5zaXplID0gc2l6ZTsKLSsgIHAtPm9mZnNl dCA9IG9mZnNldDsKLSsKLSAgIGlmIChwLT5sb2NhdGlvbiA9PSBEV0FSRl9WQUxVRV9MSVRFUkFM KQotICAgICB7Ci0gICAgICAgcC0+di5saXRlcmFsLmRhdGEgPSBjdHgtPmRhdGE7Ci1AQCAtNDk5 LDkgKzQ5NywxMSBAQAotIAljYXNlIERXX09QX3JlZzMxOgotIAkgIGlmIChvcF9wdHIgIT0gb3Bf ZW5kIAotIAkgICAgICAmJiAqb3BfcHRyICE9IERXX09QX3BpZWNlCi0rCSAgICAgICYmICpvcF9w dHIgIT0gRFdfT1BfYml0X3BpZWNlCi0gCSAgICAgICYmICpvcF9wdHIgIT0gRFdfT1BfR05VX3Vu aW5pdCkKLSAJICAgIGVycm9yIChfKCJEV0FSRi0yIGV4cHJlc3Npb24gZXJyb3I6IERXX09QX3Jl ZyBvcGVyYXRpb25zIG11c3QgYmUgIgotLQkJICAgInVzZWQgZWl0aGVyIGFsb25lIG9yIGluIGNv bmp1Y3Rpb24gd2l0aCBEV19PUF9waWVjZS4iKSk7Ci0rCQkgICAgICJ1c2VkIGVpdGhlciBhbG9u ZSBvciBpbiBjb25qdWN0aW9uIHdpdGggRFdfT1BfcGllY2UgIgotKwkJICAgICAib3IgRFdfT1Bf Yml0X3BpZWNlLiIpKTsKLSAKLSAJICByZXN1bHQgPSBvcCAtIERXX09QX3JlZzA7Ci0gCSAgY3R4 LT5sb2NhdGlvbiA9IERXQVJGX1ZBTFVFX1JFR0lTVEVSOwotQEAgLTg3Miw3ICs4NzIsNyBAQAot IAotICAgICAgICAgICAgIC8qIFJlY29yZCB0aGUgcGllY2UuICAqLwotICAgICAgICAgICAgIG9w X3B0ciA9IHJlYWRfdWxlYjEyOCAob3BfcHRyLCBvcF9lbmQsICZzaXplKTsKLS0JICAgIGFkZF9w aWVjZSAoY3R4LCBzaXplKTsKLSsJICAgIGFkZF9waWVjZSAoY3R4LCA4ICogc2l6ZSwgMCk7Ci0g Ci0gICAgICAgICAgICAgLyogUG9wIG9mZiB0aGUgYWRkcmVzcy9yZWdudW0sIGFuZCByZXNldCB0 aGUgbG9jYXRpb24KLSAJICAgICAgIHR5cGUuICAqLwotQEAgLTg4Myw2ICs4ODMsMjQgQEAKLSAg ICAgICAgICAgfQotICAgICAgICAgICBnb3RvIG5vX3B1c2g7Ci0gCi0rCWNhc2UgRFdfT1BfYml0 X3BpZWNlOgotKwkgIHsKLSsJICAgIFVMT05HRVNUIHNpemUsIG9mZnNldDsKLSsKLSsgICAgICAg ICAgICAvKiBSZWNvcmQgdGhlIHBpZWNlLiAgKi8KLSsJICAgIG9wX3B0ciA9IHJlYWRfdWxlYjEy OCAob3BfcHRyLCBvcF9lbmQsICZzaXplKTsKLSsJICAgIG9wX3B0ciA9IHJlYWRfdWxlYjEyOCAo b3BfcHRyLCBvcF9lbmQsICZvZmZzZXQpOwotKwkgICAgYWRkX3BpZWNlIChjdHgsIHNpemUsIG9m ZnNldCk7Ci0rCi0rICAgICAgICAgICAgLyogUG9wIG9mZiB0aGUgYWRkcmVzcy9yZWdudW0sIGFu ZCByZXNldCB0aGUgbG9jYXRpb24KLSsJICAgICAgIHR5cGUuICAqLwotKwkgICAgaWYgKGN0eC0+ bG9jYXRpb24gIT0gRFdBUkZfVkFMVUVfTElURVJBTAotKwkJJiYgY3R4LT5sb2NhdGlvbiAhPSBE V0FSRl9WQUxVRV9PUFRJTUlaRURfT1VUKQotKwkgICAgICBkd2FyZl9leHByX3BvcCAoY3R4KTsK LSsgICAgICAgICAgICBjdHgtPmxvY2F0aW9uID0gRFdBUkZfVkFMVUVfTUVNT1JZOwotKwkgIH0K LSsJICBnb3RvIG5vX3B1c2g7Ci0rCi0gCWNhc2UgRFdfT1BfR05VX3VuaW5pdDoKLSAJICBpZiAo b3BfcHRyICE9IG9wX2VuZCkKLSAJICAgIGVycm9yIChfKCJEV0FSRi0yIGV4cHJlc3Npb24gZXJy b3I6IERXX09QX0dOVV91bmluaXQgbXVzdCBhbHdheXMgIgotLS0tIHNyYy9nZGIvZHdhcmYyZXhw ci5oCTIwMTAvMDUvMjEgMjE6MDE6NDYJMS4yMQotKysrIHNyYy9nZGIvZHdhcmYyZXhwci5oCTIw MTAvMDUvMjEgMjE6MTM6MTEJMS4yMgotQEAgLTE1NSw3ICsxNTUsNyBAQAotIH07Ci0gCi0gCi0t LyogQSBwaWVjZSBvZiBhbiBvYmplY3QsIGFzIHJlY29yZGVkIGJ5IERXX09QX3BpZWNlLiAgKi8K LSsvKiBBIHBpZWNlIG9mIGFuIG9iamVjdCwgYXMgcmVjb3JkZWQgYnkgRFdfT1BfcGllY2Ugb3Ig RFdfT1BfYml0X3BpZWNlLiAgKi8KLSBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZQotIHsKLSAgIGVu dW0gZHdhcmZfdmFsdWVfbG9jYXRpb24gbG9jYXRpb247Ci1AQCAtMTgxLDggKzE4MSwxMCBAQAot ICAgICB9IGxpdGVyYWw7Ci0gICB9IHY7Ci0gCi0tICAvKiBUaGUgbGVuZ3RoIG9mIHRoZSBwaWVj ZSwgaW4gYnl0ZXMuICAqLwotKyAgLyogVGhlIGxlbmd0aCBvZiB0aGUgcGllY2UsIGluIGJpdHMu ICAqLwotICAgVUxPTkdFU1Qgc2l6ZTsKLSsgIC8qIFRoZSBwaWVjZSBvZmZzZXQsIGluIGJpdHMu ICAqLwotKyAgVUxPTkdFU1Qgb2Zmc2V0OwotIH07Ci0gCi0gc3RydWN0IGR3YXJmX2V4cHJfY29u dGV4dCAqbmV3X2R3YXJmX2V4cHJfY29udGV4dCAodm9pZCk7Ci0tLS0gc3JjL2dkYi9kd2FyZjJs b2MuYwkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuODAKLSsrKyBzcmMvZ2RiL2R3YXJmMmxvYy5jCTIw MTAvMDUvMjEgMjE6MTM6MTEJMS44MQotQEAgLTI1OSw1MiArMjU5LDI0NSBAQAotICAgcmV0dXJu IGM7Ci0gfQotIAotKy8qIFRoZSBsb3dlc3QtbGV2ZWwgZnVuY3Rpb24gdG8gZXh0cmFjdCBiaXRz IGZyb20gYSBieXRlIGJ1ZmZlci4KLSsgICBTT1VSQ0UgaXMgdGhlIGJ1ZmZlci4gIEl0IGlzIHVw ZGF0ZWQgaWYgd2UgcmVhZCB0byB0aGUgZW5kIG9mIGEKLSsgICBieXRlLgotKyAgIFNPVVJDRV9P RkZTRVRfQklUUyBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBiaXQgdG8gcmVhZC4gIEl0IGlz Ci0rICAgdXBkYXRlZCB0byByZWZsZWN0IHRoZSBudW1iZXIgb2YgYml0cyBhY3R1YWxseSByZWFk LgotKyAgIE5CSVRTIGlzIHRoZSBudW1iZXIgb2YgYml0cyB3ZSB3YW50IHRvIHJlYWQuICBJdCBp cyB1cGRhdGVkIHRvCi0rICAgcmVmbGVjdCB0aGUgbnVtYmVyIG9mIGJpdHMgYWN0dWFsbHkgcmVh ZC4gIFRoaXMgZnVuY3Rpb24gbWF5IHJlYWQKLSsgICBmZXdlciBiaXRzLgotKyAgIEJJVFNfQklH X0VORElBTiBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIGdkYmFyY2guCi0rICAgVGhpcyBmdW5jdGlv biByZXR1cm5zIHRoZSBleHRyYWN0ZWQgYml0cy4gICovCi0rCi0rc3RhdGljIHVuc2lnbmVkIGlu dAotK2V4dHJhY3RfYml0c19wcmltaXRpdmUgKGNvbnN0IGdkYl9ieXRlICoqc291cmNlLAotKwkJ CXVuc2lnbmVkIGludCAqc291cmNlX29mZnNldF9iaXRzLAotKwkJCWludCAqbmJpdHMsIGludCBi aXRzX2JpZ19lbmRpYW4pCi0rewotKyAgdW5zaWduZWQgaW50IGF2YWlsLCBtYXNrLCBkYXR1bTsK LSsKLSsgIGdkYl9hc3NlcnQgKCpzb3VyY2Vfb2Zmc2V0X2JpdHMgPCA4KTsKLSsKLSsgIGF2YWls ID0gOCAtICpzb3VyY2Vfb2Zmc2V0X2JpdHM7Ci0rICBpZiAoYXZhaWwgPiAqbmJpdHMpCi0rICAg IGF2YWlsID0gKm5iaXRzOwotKwotKyAgbWFzayA9ICgxIDw8IGF2YWlsKSAtIDE7Ci0rICBkYXR1 bSA9ICoqc291cmNlOwotKyAgaWYgKGJpdHNfYmlnX2VuZGlhbikKLSsgICAgZGF0dW0gPj49IDgg LSAoKnNvdXJjZV9vZmZzZXRfYml0cyArICpuYml0cyk7Ci0rICBlbHNlCi0rICAgIGRhdHVtID4+ PSAqc291cmNlX29mZnNldF9iaXRzOwotKyAgZGF0dW0gJj0gbWFzazsKLSsKLSsgICpuYml0cyAt PSBhdmFpbDsKLSsgICpzb3VyY2Vfb2Zmc2V0X2JpdHMgKz0gYXZhaWw7Ci0rICBpZiAoKnNvdXJj ZV9vZmZzZXRfYml0cyA+PSA4KQotKyAgICB7Ci0rICAgICAgKnNvdXJjZV9vZmZzZXRfYml0cyAt PSA4OwotKyAgICAgICsrKnNvdXJjZTsKLSsgICAgfQotKwotKyAgcmV0dXJuIGRhdHVtOwotK30K LSsKLSsvKiBFeHRyYWN0IHNvbWUgYml0cyBmcm9tIGEgc291cmNlIGJ1ZmZlciBhbmQgbW92ZSBm b3J3YXJkIGluIHRoZQotKyAgIGJ1ZmZlci4KLSsgICAKLSsgICBTT1VSQ0UgaXMgdGhlIHNvdXJj ZSBidWZmZXIuICBJdCBpcyB1cGRhdGVkIGFzIGJ5dGVzIGFyZSByZWFkLgotKyAgIFNPVVJDRV9P RkZTRVRfQklUUyBpcyB0aGUgb2Zmc2V0IGludG8gU09VUkNFLiAgSXQgaXMgdXBkYXRlZCBhcwot KyAgIGJpdHMgYXJlIHJlYWQuCi0rICAgTkJJVFMgaXMgdGhlIG51bWJlciBvZiBiaXRzIHRvIHJl YWQuCi0rICAgQklUU19CSUdfRU5ESUFOIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gZ2RiYXJjaC4K LSsgICAKLSsgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGJpdHMgdGhhdCB3ZXJlIHJlYWQu ICAqLwotKwotK3N0YXRpYyB1bnNpZ25lZCBpbnQKLStleHRyYWN0X2JpdHMgKGNvbnN0IGdkYl9i eXRlICoqc291cmNlLCB1bnNpZ25lZCBpbnQgKnNvdXJjZV9vZmZzZXRfYml0cywKLSsJICAgICAg aW50IG5iaXRzLCBpbnQgYml0c19iaWdfZW5kaWFuKQotK3sKLSsgIHVuc2lnbmVkIGludCBkYXR1 bTsKLSsKLSsgIGdkYl9hc3NlcnQgKG5iaXRzID4gMCAmJiBuYml0cyA8PSA4KTsKLSsKLSsgIGRh dHVtID0gZXh0cmFjdF9iaXRzX3ByaW1pdGl2ZSAoc291cmNlLCBzb3VyY2Vfb2Zmc2V0X2JpdHMs ICZuYml0cywKLSsJCQkJICBiaXRzX2JpZ19lbmRpYW4pOwotKyAgaWYgKG5iaXRzID4gMCkKLSsg ICAgewotKyAgICAgIHVuc2lnbmVkIGludCBtb3JlOwotKwotKyAgICAgIG1vcmUgPSBleHRyYWN0 X2JpdHNfcHJpbWl0aXZlIChzb3VyY2UsIHNvdXJjZV9vZmZzZXRfYml0cywgJm5iaXRzLAotKwkJ CQkgICAgIGJpdHNfYmlnX2VuZGlhbik7Ci0rICAgICAgaWYgKGJpdHNfYmlnX2VuZGlhbikKLSsJ ZGF0dW0gPDw9IG5iaXRzOwotKyAgICAgIGVsc2UKLSsJbW9yZSA8PD0gbmJpdHM7Ci0rICAgICAg ZGF0dW0gfD0gbW9yZTsKLSsgICAgfQotKwotKyAgcmV0dXJuIGRhdHVtOwotK30KLSsKLSsvKiBX cml0ZSBzb21lIGJpdHMgaW50byBhIGJ1ZmZlciBhbmQgbW92ZSBmb3J3YXJkIGluIHRoZSBidWZm ZXIuCi0rICAgCi0rICAgREFUVU0gaXMgdGhlIGJpdHMgdG8gd3JpdGUuICBUaGUgbG93LW9yZGVy IGJpdHMgb2YgREFUVU0gYXJlIHVzZWQuCi0rICAgREVTVCBpcyB0aGUgZGVzdGluYXRpb24gYnVm ZmVyLiAgSXQgaXMgdXBkYXRlZCBhcyBieXRlcyBhcmUKLSsgICB3cml0dGVuLgotKyAgIERFU1Rf T0ZGU0VUX0JJVFMgaXMgdGhlIGJpdCBvZmZzZXQgaW4gREVTVCBhdCB3aGljaCB3cml0aW5nIGlz Ci0rICAgZG9uZS4KLSsgICBOQklUUyBpcyB0aGUgbnVtYmVyIG9mIHZhbGlkIGJpdHMgaW4gREFU VU0uCi0rICAgQklUU19CSUdfRU5ESUFOIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gZ2RiYXJjaC4g ICovCi0rCi0rc3RhdGljIHZvaWQKLStpbnNlcnRfYml0cyAodW5zaWduZWQgaW50IGRhdHVtLAot KwkgICAgIGdkYl9ieXRlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVzdF9vZmZzZXRfYml0cywKLSsJ ICAgICBpbnQgbmJpdHMsIGludCBiaXRzX2JpZ19lbmRpYW4pCi0rewotKyAgdW5zaWduZWQgaW50 IG1hc2s7Ci0rCi0rICBnZGJfYXNzZXJ0IChkZXN0X29mZnNldF9iaXRzID49IDAgJiYgZGVzdF9v ZmZzZXRfYml0cyArIG5iaXRzIDw9IDgpOwotKwotKyAgbWFzayA9ICgxIDw8IG5iaXRzKSAtIDE7 Ci0rICBpZiAoYml0c19iaWdfZW5kaWFuKQotKyAgICB7Ci0rICAgICAgZGF0dW0gPDw9IDggLSAo ZGVzdF9vZmZzZXRfYml0cyArIG5iaXRzKTsKLSsgICAgICBtYXNrIDw8PSA4IC0gKGRlc3Rfb2Zm c2V0X2JpdHMgKyBuYml0cyk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGRhdHVt IDw8PSBkZXN0X29mZnNldF9iaXRzOwotKyAgICAgIG1hc2sgPDw9IGRlc3Rfb2Zmc2V0X2JpdHM7 Ci0rICAgIH0KLSsKLSsgIGdkYl9hc3NlcnQgKChkYXR1bSAmIH5tYXNrKSA9PSAwKTsKLSsKLSsg ICpkZXN0ID0gKCpkZXN0ICYgfm1hc2spIHwgZGF0dW07Ci0rfQotKwotKy8qIENvcHkgYml0cyBm cm9tIGEgc291cmNlIHRvIGEgZGVzdGluYXRpb24uCi0rICAgCi0rICAgREVTVCBpcyB3aGVyZSB0 aGUgYml0cyBzaG91bGQgYmUgd3JpdHRlbi4KLSsgICBERVNUX09GRlNFVF9CSVRTIGlzIHRoZSBi aXQgb2Zmc2V0IGludG8gREVTVC4KLSsgICBTT1VSQ0UgaXMgdGhlIHNvdXJjZSBvZiBiaXRzLgot KyAgIFNPVVJDRV9PRkZTRVRfQklUUyBpcyB0aGUgYml0IG9mZnNldCBpbnRvIFNPVVJDRS4KLSsg ICBCSVRfQ09VTlQgaXMgdGhlIG51bWJlciBvZiBiaXRzIHRvIGNvcHkuCi0rICAgQklUU19CSUdf RU5ESUFOIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gZ2RiYXJjaC4gICovCi0rCi0rc3RhdGljIHZv aWQKLStjb3B5X2JpdHdpc2UgKGdkYl9ieXRlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVzdF9vZmZz ZXRfYml0cywKLSsJICAgICAgY29uc3QgZ2RiX2J5dGUgKnNvdXJjZSwgdW5zaWduZWQgaW50IHNv dXJjZV9vZmZzZXRfYml0cywKLSsJICAgICAgdW5zaWduZWQgaW50IGJpdF9jb3VudCwKLSsJICAg ICAgaW50IGJpdHNfYmlnX2VuZGlhbikKLSt7Ci0rICB1bnNpZ25lZCBpbnQgZGVzdF9hdmFpbDsK LSsgIGludCBkYXR1bTsKLSsKLSsgIC8qIFJlZHVjZSBldmVyeXRoaW5nIHRvIGJ5dGUtc2l6ZSBw aWVjZXMuICAqLwotKyAgZGVzdCArPSBkZXN0X29mZnNldF9iaXRzIC8gODsKLSsgIGRlc3Rfb2Zm c2V0X2JpdHMgJT0gODsKLSsgIHNvdXJjZSArPSBzb3VyY2Vfb2Zmc2V0X2JpdHMgLyA4OwotKyAg c291cmNlX29mZnNldF9iaXRzICU9IDg7Ci0rCi0rICBkZXN0X2F2YWlsID0gOCAtIGRlc3Rfb2Zm c2V0X2JpdHMgJSA4OwotKwotKyAgLyogU2VlIGlmIHdlIGNhbiBmaWxsIHRoZSBmaXJzdCBkZXN0 aW5hdGlvbiBieXRlLiAgKi8KLSsgIGlmIChkZXN0X2F2YWlsIDwgYml0X2NvdW50KQotKyAgICB7 Ci0rICAgICAgZGF0dW0gPSBleHRyYWN0X2JpdHMgKCZzb3VyY2UsICZzb3VyY2Vfb2Zmc2V0X2Jp dHMsIGRlc3RfYXZhaWwsCi0rCQkJICAgIGJpdHNfYmlnX2VuZGlhbik7Ci0rICAgICAgaW5zZXJ0 X2JpdHMgKGRhdHVtLCBkZXN0LCBkZXN0X29mZnNldF9iaXRzLCBkZXN0X2F2YWlsLCBiaXRzX2Jp Z19lbmRpYW4pOwotKyAgICAgICsrZGVzdDsKLSsgICAgICBkZXN0X29mZnNldF9iaXRzID0gMDsK LSsgICAgICBiaXRfY291bnQgLT0gZGVzdF9hdmFpbDsKLSsgICAgfQotKwotKyAgLyogTm93LCBl aXRoZXIgREVTVF9PRkZTRVRfQklUUyBpcyBieXRlLWFsaWduZWQsIG9yIHdlIGhhdmUgZmV3ZXIK LSsgICAgIHRoYW4gOCBiaXRzIHJlbWFpbmluZy4gICovCi0rICBnZGJfYXNzZXJ0IChkZXN0X29m ZnNldF9iaXRzICUgOCA9PSAwIHx8IGJpdF9jb3VudCA8IDgpOwotKyAgZm9yICg7IGJpdF9jb3Vu dCA+PSA4OyBiaXRfY291bnQgLT0gOCkKLSsgICAgewotKyAgICAgIGRhdHVtID0gZXh0cmFjdF9i aXRzICgmc291cmNlLCAmc291cmNlX29mZnNldF9iaXRzLCA4LCBiaXRzX2JpZ19lbmRpYW4pOwot KyAgICAgICpkZXN0KysgPSAoZ2RiX2J5dGUpIGRhdHVtOwotKyAgICB9Ci0rCi0rICAvKiBGaW5h bGx5LCB3ZSBtYXkgaGF2ZSBhIGZldyBsZWZ0b3ZlciBiaXRzLiAgKi8KLSsgIGdkYl9hc3NlcnQg KGJpdF9jb3VudCA8PSA4IC0gZGVzdF9vZmZzZXRfYml0cyAlIDgpOwotKyAgaWYgKGJpdF9jb3Vu dCA+IDApCi0rICAgIHsKLSsgICAgICBkYXR1bSA9IGV4dHJhY3RfYml0cyAoJnNvdXJjZSwgJnNv dXJjZV9vZmZzZXRfYml0cywgYml0X2NvdW50LAotKwkJCSAgICBiaXRzX2JpZ19lbmRpYW4pOwot KyAgICAgIGluc2VydF9iaXRzIChkYXR1bSwgZGVzdCwgZGVzdF9vZmZzZXRfYml0cywgYml0X2Nv dW50LCBiaXRzX2JpZ19lbmRpYW4pOwotKyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gcmVh ZF9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdikKLSB7Ci0gICBpbnQgaTsKLSAgIGxvbmcg b2Zmc2V0ID0gMDsKLS0gIFVMT05HRVNUIGJ5dGVzX3RvX3NraXA7Ci0rICBVTE9OR0VTVCBiaXRz X3RvX3NraXA7Ci0gICBnZGJfYnl0ZSAqY29udGVudHM7Ci0gICBzdHJ1Y3QgcGllY2VfY2xvc3Vy ZSAqYyA9IChzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqKSB2YWx1ZV9jb21wdXRlZF9jbG9zdXJlICh2 KTsKLSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGZyYW1lX2ZpbmRfYnlfaWQgKFZBTFVF X0ZSQU1FX0lEICh2KSk7Ci0gICBzaXplX3QgdHlwZV9sZW47Ci0rICBzaXplX3QgYnVmZmVyX3Np emUgPSAwOwotKyAgY2hhciAqYnVmZmVyID0gTlVMTDsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVh bnVwOwotKyAgaW50IGJpdHNfYmlnX2VuZGlhbgotKyAgICA9IGdkYmFyY2hfYml0c19iaWdfZW5k aWFuIChnZXRfdHlwZV9hcmNoICh2YWx1ZV90eXBlICh2KSkpOwotIAotICAgaWYgKHZhbHVlX3R5 cGUgKHYpICE9IHZhbHVlX2VuY2xvc2luZ190eXBlICh2KSkKLSAgICAgaW50ZXJuYWxfZXJyb3Ig KF9fRklMRV9fLCBfX0xJTkVfXywKLSAJCSAgICBfKCJTaG91bGQgbm90IGJlIGFibGUgdG8gY3Jl YXRlIGEgbGF6eSB2YWx1ZSB3aXRoICIKLSAJCSAgICAgICJhbiBlbmNsb3NpbmcgdHlwZSIpKTsK LSAKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmJ1 ZmZlcik7Ci0rCi0gICBjb250ZW50cyA9IHZhbHVlX2NvbnRlbnRzX3JhdyAodik7Ci0tICBieXRl c190b19za2lwID0gdmFsdWVfb2Zmc2V0ICh2KTsKLS0gIHR5cGVfbGVuID0gVFlQRV9MRU5HVEgg KHZhbHVlX3R5cGUgKHYpKTsKLSsgIGJpdHNfdG9fc2tpcCA9IDggKiB2YWx1ZV9vZmZzZXQgKHYp OwotKyAgdHlwZV9sZW4gPSA4ICogVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUgKHYpKTsKLSsKLSAg IGZvciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlcyAmJiBvZmZzZXQgPCB0eXBlX2xlbjsgaSsrKQot ICAgICB7Ci0gICAgICAgc3RydWN0IGR3YXJmX2V4cHJfcGllY2UgKnAgPSAmYy0+cGllY2VzW2ld OwotLSAgICAgIHNpemVfdCB0aGlzX3NpemU7Ci0tICAgICAgbG9uZyBkZXN0X29mZnNldCwgc291 cmNlX29mZnNldDsKLS0KLS0gICAgICBpZiAoYnl0ZXNfdG9fc2tpcCA+IDAgJiYgYnl0ZXNfdG9f c2tpcCA+PSBwLT5zaXplKQotKyAgICAgIHNpemVfdCB0aGlzX3NpemUsIHRoaXNfc2l6ZV9iaXRz OwotKyAgICAgIGxvbmcgZGVzdF9vZmZzZXRfYml0cywgc291cmNlX29mZnNldF9iaXRzLCBzb3Vy Y2Vfb2Zmc2V0OwotKyAgICAgIGdkYl9ieXRlICppbnRlcm1lZGlhdGVfYnVmZmVyOwotKwotKyAg ICAgIC8qIENvbXB1dGUgc2l6ZSwgc291cmNlLCBhbmQgZGVzdGluYXRpb24gb2Zmc2V0cyBmb3Ig Y29weWluZywgaW4KLSsJIGJpdHMuICAqLwotKyAgICAgIHRoaXNfc2l6ZV9iaXRzID0gcC0+c2l6 ZTsKLSsgICAgICBpZiAoYml0c190b19za2lwID4gMCAmJiBiaXRzX3RvX3NraXAgPj0gdGhpc19z aXplX2JpdHMpCi0gCXsKLS0JICBieXRlc190b19za2lwIC09IHAtPnNpemU7Ci0rCSAgYml0c190 b19za2lwIC09IHRoaXNfc2l6ZV9iaXRzOwotIAkgIGNvbnRpbnVlOwotIAl9Ci0tICAgICAgdGhp c19zaXplID0gcC0+c2l6ZTsKLS0gICAgICBpZiAodGhpc19zaXplID4gdHlwZV9sZW4gLSBvZmZz ZXQpCi0tCXRoaXNfc2l6ZSA9IHR5cGVfbGVuIC0gb2Zmc2V0OwotLSAgICAgIGlmIChieXRlc190 b19za2lwID4gMCkKLS0JewotLQkgIGRlc3Rfb2Zmc2V0ID0gMDsKLS0JICBzb3VyY2Vfb2Zmc2V0 ID0gYnl0ZXNfdG9fc2tpcDsKLS0JICB0aGlzX3NpemUgLT0gYnl0ZXNfdG9fc2tpcDsKLS0JICBi eXRlc190b19za2lwID0gMDsKLSsgICAgICBpZiAodGhpc19zaXplX2JpdHMgPiB0eXBlX2xlbiAt IG9mZnNldCkKLSsJdGhpc19zaXplX2JpdHMgPSB0eXBlX2xlbiAtIG9mZnNldDsKLSsgICAgICBp ZiAoYml0c190b19za2lwID4gMCkKLSsJewotKwkgIGRlc3Rfb2Zmc2V0X2JpdHMgPSAwOwotKwkg IHNvdXJjZV9vZmZzZXRfYml0cyA9IGJpdHNfdG9fc2tpcDsKLSsJICB0aGlzX3NpemVfYml0cyAt PSBiaXRzX3RvX3NraXA7Ci0rCSAgYml0c190b19za2lwID0gMDsKLSAJfQotICAgICAgIGVsc2UK LSAJewotLQkgIGRlc3Rfb2Zmc2V0ID0gb2Zmc2V0OwotLQkgIHNvdXJjZV9vZmZzZXQgPSAwOwot KwkgIGRlc3Rfb2Zmc2V0X2JpdHMgPSBvZmZzZXQ7Ci0rCSAgc291cmNlX29mZnNldF9iaXRzID0g MDsKLSsJfQotKwotKyAgICAgIHRoaXNfc2l6ZSA9ICh0aGlzX3NpemVfYml0cyArIHNvdXJjZV9v ZmZzZXRfYml0cyAlIDggKyA3KSAvIDg7Ci0rICAgICAgc291cmNlX29mZnNldCA9IHNvdXJjZV9v ZmZzZXRfYml0cyAvIDg7Ci0rICAgICAgaWYgKGJ1ZmZlcl9zaXplIDwgdGhpc19zaXplKQotKwl7 Ci0rCSAgYnVmZmVyX3NpemUgPSB0aGlzX3NpemU7Ci0rCSAgYnVmZmVyID0geHJlYWxsb2MgKGJ1 ZmZlciwgYnVmZmVyX3NpemUpOwotIAl9Ci0rICAgICAgaW50ZXJtZWRpYXRlX2J1ZmZlciA9IGJ1 ZmZlcjsKLSAKLSsgICAgICAvKiBDb3B5IGZyb20gdGhlIHNvdXJjZSB0byBERVNUX0JVRkZFUi4g ICovCi0gICAgICAgc3dpdGNoIChwLT5sb2NhdGlvbikKLSAJewotIAljYXNlIERXQVJGX1ZBTFVF X1JFR0lTVEVSOgotQEAgLTMxNiwxMyArNTA5LDE4IEBACi0gCi0gCSAgICBpZiAoZ2RiYXJjaF9i eXRlX29yZGVyIChhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRwotIAkJJiYgdGhpc19zaXplIDwgcmVn aXN0ZXJfc2l6ZSAoYXJjaCwgZ2RiX3JlZ251bSkpCi0tCSAgICAgIC8qIEJpZy1lbmRpYW4sIGFu ZCB3ZSB3YW50IGxlc3MgdGhhbiBmdWxsIHNpemUuICAqLwotLQkgICAgICByZWdfb2Zmc2V0ID0g cmVnaXN0ZXJfc2l6ZSAoYXJjaCwgZ2RiX3JlZ251bSkgLSB0aGlzX3NpemU7Ci0rCSAgICAgIHsK LSsJCS8qIEJpZy1lbmRpYW4sIGFuZCB3ZSB3YW50IGxlc3MgdGhhbiBmdWxsIHNpemUuICAqLwot KwkJcmVnX29mZnNldCA9IHJlZ2lzdGVyX3NpemUgKGFyY2gsIGdkYl9yZWdudW0pIC0gdGhpc19z aXplOwotKwkJLyogV2Ugd2FudCB0aGUgbG93ZXItb3JkZXIgVEhJU19TSVpFX0JJVFMgb2YgdGhl IGJ5dGVzCi0rCQkgICB3ZSBleHRyYWN0IGZyb20gdGhlIHJlZ2lzdGVyLiAgKi8KLSsJCXNvdXJj ZV9vZmZzZXRfYml0cyArPSA4ICogdGhpc19zaXplIC0gdGhpc19zaXplX2JpdHM7Ci0rCSAgICAg IH0KLSAKLSAJICAgIGlmIChnZGJfcmVnbnVtICE9IC0xKQotIAkgICAgICB7Ci0gCQlnZXRfZnJh bWVfcmVnaXN0ZXJfYnl0ZXMgKGZyYW1lLCBnZGJfcmVnbnVtLCByZWdfb2Zmc2V0LCAKLS0JCQkJ CSAgdGhpc19zaXplLCBjb250ZW50cyArIGRlc3Rfb2Zmc2V0KTsKLSsJCQkJCSAgdGhpc19zaXpl LCBidWZmZXIpOwotIAkgICAgICB9Ci0gCSAgICBlbHNlCi0gCSAgICAgIHsKLUBAIC0zMzQsMTEg KzUzMiw5IEBACi0gCi0gCWNhc2UgRFdBUkZfVkFMVUVfTUVNT1JZOgotIAkgIGlmIChwLT52LmV4 cHIuaW5fc3RhY2tfbWVtb3J5KQotLQkgICAgcmVhZF9zdGFjayAocC0+di5leHByLnZhbHVlICsg c291cmNlX29mZnNldCwKLS0JCQljb250ZW50cyArIGRlc3Rfb2Zmc2V0LCB0aGlzX3NpemUpOwot KwkgICAgcmVhZF9zdGFjayAocC0+di5leHByLnZhbHVlICsgc291cmNlX29mZnNldCwgYnVmZmVy LCB0aGlzX3NpemUpOwotIAkgIGVsc2UKLS0JICAgIHJlYWRfbWVtb3J5IChwLT52LmV4cHIudmFs dWUgKyBzb3VyY2Vfb2Zmc2V0LAotLQkJCSBjb250ZW50cyArIGRlc3Rfb2Zmc2V0LCB0aGlzX3Np emUpOwotKwkgICAgcmVhZF9tZW1vcnkgKHAtPnYuZXhwci52YWx1ZSArIHNvdXJjZV9vZmZzZXQs IGJ1ZmZlciwgdGhpc19zaXplKTsKLSAJICBicmVhazsKLSAKLSAJY2FzZSBEV0FSRl9WQUxVRV9T VEFDSzoKLUBAIC0zNTUsNyArNTUxLDcgQEAKLSAJCS8qIE5vdGhpbmcuICAqLwotIAkgICAgICB9 Ci0gCSAgICBlbHNlIGlmIChzb3VyY2Vfb2Zmc2V0ID09IDApCi0tCSAgICAgIHN0b3JlX3Vuc2ln bmVkX2ludGVnZXIgKGNvbnRlbnRzICsgZGVzdF9vZmZzZXQsIG4sCi0rCSAgICAgIHN0b3JlX3Vu c2lnbmVkX2ludGVnZXIgKGJ1ZmZlciwgbiwKLSAJCQkJICAgICAgZ2RiYXJjaF9ieXRlX29yZGVy IChnZGJhcmNoKSwKLSAJCQkJICAgICAgcC0+di5leHByLnZhbHVlKTsKLSAJICAgIGVsc2UKLUBA IC0zNjUsNyArNTYxLDcgQEAKLSAJCXN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzLCBuICsg c291cmNlX29mZnNldCwKLSAJCQkJCWdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCksCi0gCQkJ CQlwLT52LmV4cHIudmFsdWUpOwotLQkJbWVtY3B5IChjb250ZW50cyArIGRlc3Rfb2Zmc2V0LCBi eXRlcyArIHNvdXJjZV9vZmZzZXQsIG4pOwotKwkJbWVtY3B5IChidWZmZXIsIGJ5dGVzICsgc291 cmNlX29mZnNldCwgbik7Ci0gCSAgICAgIH0KLSAJICB9Ci0gCSAgYnJlYWs7Ci1AQCAtMzc5LDgg KzU3NSw3IEBACi0gCQkgICA/IHAtPnYubGl0ZXJhbC5sZW5ndGggLSBzb3VyY2Vfb2Zmc2V0Ci0g CQkgICA6IDApOwotIAkgICAgaWYgKG4gIT0gMCkKLS0JICAgICAgbWVtY3B5IChjb250ZW50cyAr IGRlc3Rfb2Zmc2V0LAotLQkJICAgICAgcC0+di5saXRlcmFsLmRhdGEgKyBzb3VyY2Vfb2Zmc2V0 LCBuKTsKLSsJICAgICAgaW50ZXJtZWRpYXRlX2J1ZmZlciA9IHAtPnYubGl0ZXJhbC5kYXRhICsg c291cmNlX29mZnNldDsKLSAJICB9Ci0gCSAgYnJlYWs7Ci0gCi1AQCAtMzg4LDE3ICs1ODMsMjUg QEAKLSAJICAvKiBXZSBqdXN0IGxlYXZlIHRoZSBiaXRzIGVtcHR5IGZvciBub3cuICBUaGlzIGlz IG5vdCBpZGVhbAotIAkgICAgIGJ1dCBnZGIgY3VycmVudGx5IGRvZXMgbm90IGhhdmUgYSBuaWNl IHdheSB0byByZXByZXNlbnQKLSAJICAgICBvcHRpbWl6ZWQtb3V0IHBpZWNlcy4gICovCi0tCSAg d2FybmluZyAoXygiYnl0ZXMgJWxkLSVsZCBpbiBjb21wdXRlZCBvYmplY3Qgd2VyZSBvcHRpbWl6 ZWQgb3V0OyAiCi0rCSAgd2FybmluZyAoXygiYml0cyAlbGQtJWxkIGluIGNvbXB1dGVkIG9iamVj dCB3ZXJlIG9wdGltaXplZCBvdXQ7ICIKLSAJCSAgICAgInJlcGxhY2luZyB3aXRoIHplcm9lcyIp LAotIAkJICAgb2Zmc2V0LAotLQkJICAgb2Zmc2V0ICsgKGxvbmcpIHRoaXNfc2l6ZSk7Ci0rCQkg ICBvZmZzZXQgKyAobG9uZykgdGhpc19zaXplX2JpdHMpOwotIAkgIGJyZWFrOwotIAotIAlkZWZh dWx0OgotIAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oImludmFsaWQg bG9jYXRpb24gdHlwZSIpKTsKLSAJfQotLSAgICAgIG9mZnNldCArPSB0aGlzX3NpemU7Ci0rCi0r ICAgICAgaWYgKHAtPmxvY2F0aW9uICE9IERXQVJGX1ZBTFVFX09QVElNSVpFRF9PVVQpCi0rCWNv cHlfYml0d2lzZSAoY29udGVudHMsIGRlc3Rfb2Zmc2V0X2JpdHMsCi0rCQkgICAgICBpbnRlcm1l ZGlhdGVfYnVmZmVyLCBzb3VyY2Vfb2Zmc2V0X2JpdHMgJSA4LAotKwkJICAgICAgdGhpc19zaXpl X2JpdHMsIGJpdHNfYmlnX2VuZGlhbik7Ci0rCi0rICAgICAgb2Zmc2V0ICs9IHRoaXNfc2l6ZV9i aXRzOwotICAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gfQotIAotIHN0YXRp YyB2b2lkCi1AQCAtNDA2LDExICs2MDksMTYgQEAKLSB7Ci0gICBpbnQgaTsKLSAgIGxvbmcgb2Zm c2V0ID0gMDsKLS0gIFVMT05HRVNUIGJ5dGVzX3RvX3NraXA7Ci0rICBVTE9OR0VTVCBiaXRzX3Rv X3NraXA7Ci0gICBjb25zdCBnZGJfYnl0ZSAqY29udGVudHM7Ci0gICBzdHJ1Y3QgcGllY2VfY2xv c3VyZSAqYyA9IChzdHJ1Y3QgcGllY2VfY2xvc3VyZSAqKSB2YWx1ZV9jb21wdXRlZF9jbG9zdXJl ICh0byk7Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBmcmFtZV9maW5kX2J5X2lkIChW QUxVRV9GUkFNRV9JRCAodG8pKTsKLSAgIHNpemVfdCB0eXBlX2xlbjsKLSsgIHNpemVfdCBidWZm ZXJfc2l6ZSA9IDA7Ci0rICBjaGFyICpidWZmZXIgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAg KmNsZWFudXA7Ci0rICBpbnQgYml0c19iaWdfZW5kaWFuCi0rICAgID0gZ2RiYXJjaF9iaXRzX2Jp Z19lbmRpYW4gKGdldF90eXBlX2FyY2ggKHZhbHVlX3R5cGUgKHRvKSkpOwotIAotICAgaWYgKGZy YW1lID09IE5VTEwpCi0gICAgIHsKLUBAIC00MTgsMzQgKzYyNiw1NyBAQAotICAgICAgIHJldHVy bjsKLSAgICAgfQotIAotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2Nv bnRlbnRzLCAmYnVmZmVyKTsKLSsKLSAgIGNvbnRlbnRzID0gdmFsdWVfY29udGVudHMgKGZyb20p OwotLSAgYnl0ZXNfdG9fc2tpcCA9IHZhbHVlX29mZnNldCAodG8pOwotLSAgdHlwZV9sZW4gPSBU WVBFX0xFTkdUSCAodmFsdWVfdHlwZSAodG8pKTsKLSsgIGJpdHNfdG9fc2tpcCA9IDggKiB2YWx1 ZV9vZmZzZXQgKHRvKTsKLSsgIHR5cGVfbGVuID0gOCAqIFRZUEVfTEVOR1RIICh2YWx1ZV90eXBl ICh0bykpOwotICAgZm9yIChpID0gMDsgaSA8IGMtPm5fcGllY2VzICYmIG9mZnNldCA8IHR5cGVf bGVuOyBpKyspCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcCA9ICZj LT5waWVjZXNbaV07Ci0tICAgICAgc2l6ZV90IHRoaXNfc2l6ZTsKLS0gICAgICBsb25nIGRlc3Rf b2Zmc2V0LCBzb3VyY2Vfb2Zmc2V0OwotKyAgICAgIHNpemVfdCB0aGlzX3NpemVfYml0cywgdGhp c19zaXplOwotKyAgICAgIGxvbmcgZGVzdF9vZmZzZXRfYml0cywgc291cmNlX29mZnNldF9iaXRz LCBkZXN0X29mZnNldCwgc291cmNlX29mZnNldDsKLSsgICAgICBpbnQgbmVlZF9iaXR3aXNlOwot KyAgICAgIGNvbnN0IGdkYl9ieXRlICpzb3VyY2VfYnVmZmVyOwotIAotLSAgICAgIGlmIChieXRl c190b19za2lwID4gMCAmJiBieXRlc190b19za2lwID49IHAtPnNpemUpCi0rICAgICAgdGhpc19z aXplX2JpdHMgPSBwLT5zaXplOwotKyAgICAgIGlmIChiaXRzX3RvX3NraXAgPiAwICYmIGJpdHNf dG9fc2tpcCA+PSB0aGlzX3NpemVfYml0cykKLSAJewotLQkgIGJ5dGVzX3RvX3NraXAgLT0gcC0+ c2l6ZTsKLSsJICBiaXRzX3RvX3NraXAgLT0gdGhpc19zaXplX2JpdHM7Ci0gCSAgY29udGludWU7 Ci0gCX0KLS0gICAgICB0aGlzX3NpemUgPSBwLT5zaXplOwotLSAgICAgIGlmICh0aGlzX3NpemUg PiB0eXBlX2xlbiAtIG9mZnNldCkKLS0JdGhpc19zaXplID0gdHlwZV9sZW4gLSBvZmZzZXQ7Ci0t ICAgICAgaWYgKGJ5dGVzX3RvX3NraXAgPiAwKQotLQl7Ci0tCSAgZGVzdF9vZmZzZXQgPSBieXRl c190b19za2lwOwotLQkgIHNvdXJjZV9vZmZzZXQgPSAwOwotLQkgIHRoaXNfc2l6ZSAtPSBieXRl c190b19za2lwOwotLQkgIGJ5dGVzX3RvX3NraXAgPSAwOwotKyAgICAgIGlmICh0aGlzX3NpemVf Yml0cyA+IHR5cGVfbGVuIC0gb2Zmc2V0KQotKwl0aGlzX3NpemVfYml0cyA9IHR5cGVfbGVuIC0g b2Zmc2V0OwotKyAgICAgIGlmIChiaXRzX3RvX3NraXAgPiAwKQotKwl7Ci0rCSAgZGVzdF9vZmZz ZXRfYml0cyA9IGJpdHNfdG9fc2tpcDsKLSsJICBzb3VyY2Vfb2Zmc2V0X2JpdHMgPSAwOwotKwkg IHRoaXNfc2l6ZV9iaXRzIC09IGJpdHNfdG9fc2tpcDsKLSsJICBiaXRzX3RvX3NraXAgPSAwOwot Kwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgZGVzdF9vZmZzZXRfYml0cyA9IDA7Ci0rCSAgc291 cmNlX29mZnNldF9iaXRzID0gb2Zmc2V0OwotKwl9Ci0rCi0rICAgICAgdGhpc19zaXplID0gKHRo aXNfc2l6ZV9iaXRzICsgc291cmNlX29mZnNldF9iaXRzICUgOCArIDcpIC8gODsKLSsgICAgICBz b3VyY2Vfb2Zmc2V0ID0gc291cmNlX29mZnNldF9iaXRzIC8gODsKLSsgICAgICBkZXN0X29mZnNl dCA9IGRlc3Rfb2Zmc2V0X2JpdHMgLyA4OwotKyAgICAgIGlmIChkZXN0X29mZnNldF9iaXRzICUg OCA9PSAwICYmIHNvdXJjZV9vZmZzZXRfYml0cyAlIDggPT0gMCkKLSsJewotKwkgIHNvdXJjZV9i dWZmZXIgPSBjb250ZW50cyArIHNvdXJjZV9vZmZzZXQ7Ci0rCSAgbmVlZF9iaXR3aXNlID0gMDsK LSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIGRlc3Rfb2Zmc2V0ID0gMDsKLS0JICBzb3VyY2Vf b2Zmc2V0ID0gb2Zmc2V0OwotKwkgIGlmIChidWZmZXJfc2l6ZSA8IHRoaXNfc2l6ZSkKLSsJICAg IHsKLSsJICAgICAgYnVmZmVyX3NpemUgPSB0aGlzX3NpemU7Ci0rCSAgICAgIGJ1ZmZlciA9IHhy ZWFsbG9jIChidWZmZXIsIGJ1ZmZlcl9zaXplKTsKLSsJICAgIH0KLSsJICBzb3VyY2VfYnVmZmVy ID0gYnVmZmVyOwotKwkgIG5lZWRfYml0d2lzZSA9IDE7Ci0gCX0KLSAKLSAgICAgICBzd2l0Y2gg KHAtPmxvY2F0aW9uKQotQEAgLTQ2Myw4ICs2OTQsMTggQEAKLSAKLSAJICAgIGlmIChnZGJfcmVn bnVtICE9IC0xKQotIAkgICAgICB7Ci0rCQlpZiAobmVlZF9iaXR3aXNlKQotKwkJICB7Ci0rCQkg ICAgZ2V0X2ZyYW1lX3JlZ2lzdGVyX2J5dGVzIChmcmFtZSwgZ2RiX3JlZ251bSwgcmVnX29mZnNl dCwKLSsJCQkJCSAgICAgIHRoaXNfc2l6ZSwgYnVmZmVyKTsKLSsJCSAgICBjb3B5X2JpdHdpc2Ug KGJ1ZmZlciwgZGVzdF9vZmZzZXRfYml0cywKLSsJCQkJICBjb250ZW50cywgc291cmNlX29mZnNl dF9iaXRzLAotKwkJCQkgIHRoaXNfc2l6ZV9iaXRzLAotKwkJCQkgIGJpdHNfYmlnX2VuZGlhbik7 Ci0rCQkgIH0KLSsKLSAJCXB1dF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoZnJhbWUsIGdkYl9yZWdu dW0sIHJlZ19vZmZzZXQsIAotLQkJCQkJICB0aGlzX3NpemUsIGNvbnRlbnRzICsgc291cmNlX29m ZnNldCk7Ci0rCQkJCQkgIHRoaXNfc2l6ZSwgc291cmNlX2J1ZmZlcik7Ci0gCSAgICAgIH0KLSAJ ICAgIGVsc2UKLSAJICAgICAgewotQEAgLTQ3NCwxNSArNzE1LDMxIEBACi0gCSAgfQotIAkgIGJy ZWFrOwotIAljYXNlIERXQVJGX1ZBTFVFX01FTU9SWToKLSsJICBpZiAobmVlZF9iaXR3aXNlKQot KwkgICAgewotKwkgICAgICAvKiBPbmx5IHRoZSBmaXJzdCBhbmQgbGFzdCBieXRlcyBjYW4gcG9z c2libHkgaGF2ZSBhbnkKLSsJCSBiaXRzIHJldXNlZC4gICovCi0rCSAgICAgIHJlYWRfbWVtb3J5 IChwLT52LmV4cHIudmFsdWUgKyBkZXN0X29mZnNldCwgYnVmZmVyLCAxKTsKLSsJICAgICAgcmVh ZF9tZW1vcnkgKHAtPnYuZXhwci52YWx1ZSArIGRlc3Rfb2Zmc2V0ICsgdGhpc19zaXplIC0gMSwK LSsJCQkgICBidWZmZXIgKyB0aGlzX3NpemUgLSAxLCAxKTsKLSsJICAgICAgY29weV9iaXR3aXNl IChidWZmZXIsIGRlc3Rfb2Zmc2V0X2JpdHMsCi0rCQkJICAgIGNvbnRlbnRzLCBzb3VyY2Vfb2Zm c2V0X2JpdHMsCi0rCQkJICAgIHRoaXNfc2l6ZV9iaXRzLAotKwkJCSAgICBiaXRzX2JpZ19lbmRp YW4pOwotKwkgICAgfQotKwotIAkgIHdyaXRlX21lbW9yeSAocC0+di5leHByLnZhbHVlICsgZGVz dF9vZmZzZXQsCi0tCQkJY29udGVudHMgKyBzb3VyY2Vfb2Zmc2V0LCB0aGlzX3NpemUpOwotKwkJ CXNvdXJjZV9idWZmZXIsIHRoaXNfc2l6ZSk7Ci0gCSAgYnJlYWs7Ci0gCWRlZmF1bHQ6Ci0gCSAg c2V0X3ZhbHVlX29wdGltaXplZF9vdXQgKHRvLCAxKTsKLS0JICByZXR1cm47Ci0rCSAgZ290byBk b25lOwotIAl9Ci0tICAgICAgb2Zmc2V0ICs9IHRoaXNfc2l6ZTsKLSsgICAgICBvZmZzZXQgKz0g dGhpc19zaXplX2JpdHM7Ci0gICAgIH0KLSsKLSsgZG9uZToKLSsgIGRvX2NsZWFudXBzIChjbGVh bnVwKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgKgotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvcGllY2VzLlMJMjAxMC8wNS8yMSAyMTowMTo0NgkxLjIKLSsrKyBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL3BpZWNlcy5TCTIwMTAvMDUvMjEgMjE6MTM6MTMJMS4zCi1AQCAtOTg5 LDIzICs5ODksMTggQEAKLSAuTExTVDY6Ci0gCS5sb25nCS5MVkwxMy0uTHRleHQwCSMgTG9jYXRp b24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q2KQotIAkubG9uZwkuTFZMMTQtLkx0ZXh0MAkj IExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0tCS52YWx1ZQkweGEJIyBMb2Nh dGlvbiBleHByZXNzaW9uIHNpemUKLS0JLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQku dWxlYjEyOCAweDQKLS0JLnVsZWIxMjggMAotKwkudmFsdWUJMHg4CSMgTG9jYXRpb24gZXhwcmVz c2lvbiBzaXplCi0gCS5ieXRlCTB4MzQJIyBEV19PUF9saXQ0Ci0gCS5ieXRlCTB4OWYJIyBEV19P UF9zdGFja192YWx1ZQotIAkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNlCi0gCS51bGViMTI4 IDB4YwotIAkudWxlYjEyOCAwCi0tCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotLQkudWxlYjEy OCAweDIKLS0JLmxvbmcJLkxWTDE0LS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJl c3MgKCouTExTVDYpCi0tCS5sb25nCS5MVkwxNS0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQg YWRkcmVzcyAoKi5MTFNUNikKLS0JLnZhbHVlCTB4MTUJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNp emUKLSAJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQkudWxlYjEyOCAweDQKLSsJLnVs ZWIxMjggMHgxNAotIAkudWxlYjEyOCAwCi0rCS5sb25nCS5MVkwxNC0uTHRleHQwCSMgTG9jYXRp b24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1Q2KQotKwkubG9uZwkuTFZMMTUtLkx0ZXh0MAkj IExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0rCS52YWx1ZQkweDExCSMgTG9j YXRpb24gZXhwcmVzc2lvbiBzaXplCi0gCS5ieXRlCTB4MzQJIyBEV19PUF9saXQ0Ci0gCS5ieXRl CTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotIAkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNl Ci1AQCAtMTAyMSwxNSArMTAxNiwxMSBAQAotIAkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNl Ci0gCS51bGViMTI4IDB4YwotIAkudWxlYjEyOCAwCi0tCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRf cGllY2UKLS0JLnVsZWIxMjggMHg0Ci0tCS51bGViMTI4IDAKLSsJLmJ5dGUJMHg5MwkjIERXX09Q X3BpZWNlCi0rCS51bGViMTI4IDB4MQotIAkubG9uZwkuTFZMMTUtLkx0ZXh0MAkjIExvY2F0aW9u IGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUNikKLSAJLmxvbmcJLkxWTDE2LTEtLkx0ZXh0MAkj IExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDYpCi0tCS52YWx1ZQkweDE0CSMgTG9j YXRpb24gZXhwcmVzc2lvbiBzaXplCi0tCS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLS0J LnVsZWIxMjggMHg0Ci0tCS51bGViMTI4IDAKLSsJLnZhbHVlCTB4MTAJIyBMb2NhdGlvbiBleHBy ZXNzaW9uIHNpemUKLSAJLmJ5dGUJMHg1MgkjIERXX09QX3JlZzIKLSAJLmJ5dGUJMHg5ZAkjIERX X09QX2JpdF9waWVjZQotIAkudWxlYjEyOCAweGMKLUBAIC0xMDQ0LDE1ICsxMDM1LDExIEBACi0g CS5ieXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSAJLnVsZWIxMjggMHhjCi0gCS51bGViMTI4 IDAKLS0JLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQkudWxlYjEyOCAweDQKLS0JLnVs ZWIxMjggMAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHgxCi0gCS5s b25nCS5MVkwxNi0xLS5MdGV4dDAJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExT VDYpCi0gCS5sb25nCS5MVkwxNy0uTHRleHQwCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAo Ki5MTFNUNikKLS0JLnZhbHVlCTB4MTQJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLS0JLmJ5 dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQkudWxlYjEyOCAweDQKLS0JLnVsZWIxMjggMAot KwkudmFsdWUJMHgxMAkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotIAkuYnl0ZQkweDU2CSMg RFdfT1BfcmVnNgotIAkuYnl0ZQkweDlkCSMgRFdfT1BfYml0X3BpZWNlCi0gCS51bGViMTI4IDB4 YwotQEAgLTEwNjcsMTQgKzEwNTQsMTQgQEAKLSAJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVj ZQotIAkudWxlYjEyOCAweGMKLSAJLnVsZWIxMjggMAotLQkuYnl0ZQkweDlkCSMgRFdfT1BfYml0 X3BpZWNlCi0tCS51bGViMTI4IDB4NAotLQkudWxlYjEyOCAwCi0rCS5ieXRlCTB4OTMJIyBEV19P UF9waWVjZQotKwkudWxlYjEyOCAweDEKLSAJLmxvbmcJLkxWTDE3LS5MdGV4dDAJIyBMb2NhdGlv biBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDYpCi0gCS5sb25nCS5MRkUzLS5MdGV4dDAJIyBM b2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Q2KQotIAkudmFsdWUJMHhmCSMgTG9jYXRp b24gZXhwcmVzc2lvbiBzaXplCi0tCS5ieXRlCTB4OTMJIyBEV19PUF9waWVjZQotLQkudWxlYjEy OCAweDIKLSsJLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotKwkudWxlYjEyOCAweGMKLSsJ LnVsZWIxMjggMAotIAkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSAJLnNsZWIxMjggMAotIAku Ynl0ZQkweDk0CSMgRFdfT1BfZGVyZWZfc2l6ZQotQEAgLTEwODUsOSArMTA3Miw4IEBACi0gCS5i eXRlCTB4OWQJIyBEV19PUF9iaXRfcGllY2UKLSAJLnVsZWIxMjggMHhjCi0gCS51bGViMTI4IDAK LS0JLmJ5dGUJMHg5ZAkjIERXX09QX2JpdF9waWVjZQotLQkudWxlYjEyOCAweDQKLS0JLnVsZWIx MjggMAotKwkuYnl0ZQkweDkzCSMgRFdfT1BfcGllY2UKLSsJLnVsZWIxMjggMHgxCi0gCS5sb25n CTAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgYmVnaW4gKCouTExTVDYpCi0gCS5sb25nCTAJ IyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1Q2KQotIC5MTFNUNzoKLUBAIC0x MzU2LDcgKzEzNDIsNyBAQAotIAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkuYnl0ZQkweDQJ IyBEV19BVF9ieXRlX3NpemUKLSAJLmJ5dGUJMHhjCSMgRFdfQVRfYml0X3NpemUKLS0JLmJ5dGUJ MHgxMAkjIERXX0FUX2JpdF9vZmZzZXQKLSsJLmJ5dGUJMHgxNAkjIERXX0FUX2JpdF9vZmZzZXQK LSAJLmJ5dGUJMHgyCSMgRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24KLSAJLmJ5dGUJMHgyMwkj IERXX09QX3BsdXNfdWNvbnN0Ci0gCS51bGViMTI4IDAKLUBAIC0xMzY3LDcgKzEzNTMsNyBAQAot IAkubG9uZwkweDQ4CSMgRFdfQVRfdHlwZQotIAkuYnl0ZQkweDQJIyBEV19BVF9ieXRlX3NpemUK LSAJLmJ5dGUJMHhjCSMgRFdfQVRfYml0X3NpemUKLS0JLmJ5dGUJMHg0CSMgRFdfQVRfYml0X29m ZnNldAotKwkuYnl0ZQkweDgJIyBEV19BVF9iaXRfb2Zmc2V0Ci0gCS5ieXRlCTB4MgkjIERXX0FU X2RhdGFfbWVtYmVyX2xvY2F0aW9uCi0gCS5ieXRlCTB4MjMJIyBEV19PUF9wbHVzX3Vjb25zdAot IAkudWxlYjEyOCAwCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9waWVjZXMuYwky MDEwLzA1LzIxIDIxOjAxOjQ2CTEuMgotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv cGllY2VzLmMJMjAxMC8wNS8yMSAyMToxMzoxMwkxLjMKLUBAIC0yMSw3ICsyMSw3IEBACi0gICAg SG93ZXZlciwgaXQgaXMgdXNlZCB0byBleHRyYWN0IGJyZWFrcG9pbnQgbGluZSBudW1iZXJzLiAg Ki8KLSAKLSBzdHJ1Y3QgQSB7IGludCBpOyBpbnQgajsgfTsKLS1zdHJ1Y3QgQiB7IGludCA6IDQ7 IGludCBpIDogMTI7IGludCBqIDogMTI7IGludCA6IDQ7IH07Ci0rc3RydWN0IEIgeyBpbnQgaSA6 IDEyOyBpbnQgaiA6IDEyOyBpbnQgOiA0OyB9OwotIHN0cnVjdCBDIHsgaW50IGk7IGludCBqOyBp bnQgcTsgfTsKLSAKLSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKLUBAIC04OSw3ICs4 OSw3IEBACi0gZjYgKGludCBrKQotIHsKLSAgIGludCB6ID0gMjM7Ci0tICBzdHJ1Y3QgQyBhID0g eyBrLCBrLCB6fTsKLSsgIHN0cnVjdCBDIGEgPSB7IGssIGssIHogfTsKLSAgIGFzbSAoIiIgOiAi K3IiIChhLmkpKTsKLSAgIGEuaisrOwotICAgYmFyIChhLmkpOwotLS0tIHNyYy9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvcGllY2VzLmV4cAkyMDEwLzA1LzIxIDIxOjAxOjQ2CTEuMwotKysrIHNy Yy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcGllY2VzLmV4cAkyMDEwLzA1LzIxIDIxOjEzOjEz CTEuNAotQEAgLTY3LDE1ICs2NywzMCBAQAotICAgICBnZGJfdGVzdCAicHJpbnQgYVxbMVxdIiAi ID0gMTQiICJwcmludCBhXFsxXF0gaW4gcGllY2VzOmYyIgotIH0KLSAKLSsjIEZ1bmN0aW9uIGYz IHRlc3RzIERXX09QX2JpdF9waWVjZS4KLStwcm9jIHBpZWNlc190ZXN0X2YzIHt9IHsKLSsgICAg Z2xvYmFsIGNzcmNmaWxlCi0rICAgIHNldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmMyBi cmVha3BvaW50IiAkY3NyY2ZpbGVdCi0rICAgIGdkYl90ZXN0ICJicmVhayBwaWVjZXMuYzokbGlu ZSIgIkJyZWFrcG9pbnQgNC4qIiBcCi0rICAgICAgICJzZXQgZjMgYnJlYWtwb2ludCBmb3IgcGll Y2VzIgotKyAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gZjMgYnJl YWtwb2ludCBmb3IgcGllY2VzIgotKyAgICBnZGJfdGVzdCAicHJpbnQgYS5pIiAiID0gNCIgInBy aW50IGEuaSBpbiBwaWVjZXM6ZjMiCi0rICAgIGdkYl90ZXN0ICJwcmludCBhLmoiICIgPSAxNCIg InByaW50IGEuaiBpbiBwaWVjZXM6ZjMiCi0rICAgICMgUmlnaHQgbm93IGdkYiBzYXlzICJ2YWx1 ZSBvcHRpbWl6ZWQgb3V0IiBoZXJlLCBidXQgdGhhdCBpcyB3cm9uZy4KLSsgICAgc2V0dXBfa2Zh aWwgIm5vIGJ1ZyB5ZXQiICotKi0qCi0rICAgIGdkYl90ZXN0ICJwcmludCBhLmkgPSA3IiAiID0g NyIgInNldCBhLmkgaW4gcGllY2VzOmYzIgotKyAgICBnZGJfdGVzdCAicHJpbnQgYS5pIiAiID0g NyIgInByaW50IG5ldyBhLmkgaW4gcGllY2VzOmYzIgotK30KLSsKLSAjIEZ1bmN0aW9uIGY2IHRl c3RzIGZvciBhbiBlbXB0eSBEV19PUF9waWVjZS4KLSBwcm9jIHBpZWNlc190ZXN0X2Y2IHt9IHsK LSAgICAgZ2xvYmFsIGNzcmNmaWxlCi0gICAgIHNldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJmNiBicmVha3BvaW50IiAkY3NyY2ZpbGVdCi0tICAgIGdkYl90ZXN0ICJicmVhayBwaWVjZXMu YzokbGluZSIgIkJyZWFrcG9pbnQgNC4qIiBcCi0rICAgIGdkYl90ZXN0ICJicmVhayBwaWVjZXMu YzokbGluZSIgIkJyZWFrcG9pbnQgNS4qIiBcCi0gICAgICAgICJzZXQgZjYgYnJlYWtwb2ludCBm b3IgcGllY2VzIgotICAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8g ZjYgYnJlYWtwb2ludCBmb3IgcGllY2VzIgotICAgICBnZGJfdGVzdCAicHJpbnQgYSIgXAotLQki d2FybmluZzogYnl0ZXMgLiogaW4gY29tcHV0ZWQgb2JqZWN0IHdlcmUuKiA9IHtpID0gNywgaiA9 IDgsIHEgPSAwfSIgXAotKwkid2FybmluZzogYml0cyAuKiBpbiBjb21wdXRlZCBvYmplY3Qgd2Vy ZS4qID0ge2kgPSA3LCBqID0gOCwgcSA9IDB9IiBcCi0gCSJwcmludCBhIHdpdGggb3B0aW1pemVk IG91dCBwaWVjZSIKLSAgICAgIyBOb3RlOiBubyB3YXJuaW5nIGZvciB0aGlzIGNhc2UuCi0gICAg IGdkYl90ZXN0X211bHRpcGxlICJwcmludCBhLmkiIFwKLUBAIC05MSw0ICsxMDYsNSBAQAotIAot IHBpZWNlc190ZXN0X2YxCi0gcGllY2VzX3Rlc3RfZjIKLStwaWVjZXNfdGVzdF9mMwotIHBpZWNl c190ZXN0X2Y2CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTk1NDc1LXR1aS1sYXlvdXQucGF0Y2ggYi9n ZGItYno1OTU0NzUtdHVpLWxheW91dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggNzE3NDJmOC4uMDAwMDAwMAotLS0gYS9nZGItYno1OTU0NzUtdHVpLWxheW91dC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9zaG93X2J1Zy5jZ2k/aWQ9NTg2NTY2Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBh dGNoZXMvMjAxMC0wMy9tc2cwMDc0Ni5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAxMC0wNS9tc2cwMDU1MS5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLWN2cy8yMDEwLTAzL21zZzAwMTk0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTAvMDMvMTkgMjI6MDA6MTYJMS4xMTUwOAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDMv MjAgMDU6MTc6MTAJMS4xMTUwOQotIyMgLTEsMyArMSw5IEBACi0rMjAxMC0wMy0yMCAgRGFuaWVs IEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsJKiB0dWkvdHVpLWRpc2Fz bS5jICh0dWlfZ2V0X2JlZ2luX2FzbV9hZGRyZXNzKTogRGVmYXVsdCB0bwotKwlnZXRfY3VycmVu dF9hcmNoLgotKwkqIHR1aS90dWktbGF5b3V0LmMgKGV4dHJhY3RfZGlzcGxheV9zdGFydF9hZGRy KTogTGlrZXdpc2UuCi0rCi0gMjAxMC0wMy0xOSAgU3RhbiBTaGVicyAgPHN0YW5AY29kZXNvdXJj ZXJ5LmNvbT4KLSAKLSAJKiBheC1nZGIuYyAoZ2VuX2ZldGNoKTogSGFuZGxlIGJvb2wuCi0tLS0g c3JjL2dkYi90dWkvdHVpLWRpc2FzbS5jCTIwMTAvMDEvMDEgMDc6MzI6MDcJMS4zMwotKysrIHNy Yy9nZGIvdHVpL3R1aS1kaXNhc20uYwkyMDEwLzAzLzIwIDA1OjE3OjEwCTEuMzQKLUBAIC0yMSw2 ICsyMSw3IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNpbmNsdWRlICJkZWZzLmgiCi0r I2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSAjaW5jbHVkZSAic3ltdGFiLmgiCi0gI2luY2x1ZGUg ImJyZWFrcG9pbnQuaCIKLSAjaW5jbHVkZSAiZnJhbWUuaCIKLUBAIC0zMzAsNyArMzMxLDcgQEAK LSB7Ci0gICBzdHJ1Y3QgdHVpX2dlbl93aW5faW5mbyAqbG9jYXRvcjsKLSAgIHN0cnVjdCB0dWlf bG9jYXRvcl9lbGVtZW50ICplbGVtZW50OwotLSAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBO VUxMOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfY3VycmVudF9hcmNoICgpOwot ICAgQ09SRV9BRERSIGFkZHI7Ci0gCi0gICBsb2NhdG9yID0gdHVpX2xvY2F0b3Jfd2luX2luZm9f cHRyICgpOwotLS0tIHNyYy9nZGIvdHVpL3R1aS1sYXlvdXQuYwkyMDEwLzAxLzAxIDA3OjMyOjA3 CTEuMzYKLSsrKyBzcmMvZ2RiL3R1aS90dWktbGF5b3V0LmMJMjAxMC8wMy8yMCAwNToxNzoxMAkx LjM3Ci1AQCAtMjEsNiArMjEsNyBAQAotICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjaW5jbHVk ZSAiZGVmcy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0gI2luY2x1ZGUgImNvbW1hbmQu aCIKLSAjaW5jbHVkZSAic3ltdGFiLmgiCi0gI2luY2x1ZGUgImZyYW1lLmgiCi1AQCAtNTIyLDcg KzUyMyw3IEBACi0gZXh0cmFjdF9kaXNwbGF5X3N0YXJ0X2FkZHIgKHN0cnVjdCBnZGJhcmNoICoq Z2RiYXJjaF9wLCBDT1JFX0FERFIgKmFkZHJfcCkKLSB7Ci0gICBlbnVtIHR1aV9sYXlvdXRfdHlw ZSBjdXJfbGF5b3V0ID0gdHVpX2N1cnJlbnRfbGF5b3V0ICgpOwotLSAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBOVUxMOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfY3VycmVu dF9hcmNoICgpOwotICAgQ09SRV9BRERSIGFkZHI7Ci0gICBDT1JFX0FERFIgcGM7Ci0gICBzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lIGN1cnNhbCA9IGdldF9jdXJyZW50X3NvdXJjZV9zeW10YWJfYW5k X2xpbmUgKCk7Ci0tLS0gL2Rldi9udWxsCTIwMTAtMDUtMjQgMDQ6NDM6MzIuNjMyNzk0MDIxICsw MjAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3R1aS1sYXlvdXQuZXhwCTIw MTAtMDUtMjQgMjA6MTM6MzAuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDIxIEBACi0rIyBD b3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxlIHR1aS1sYXlvdXQKLStpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBzdGFydC5j XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl90ZXN0ICJsYXlvdXQgYXNtIgoKZGlm ZiAtLWdpdCBhL2dkYi1iejYwMDc0Ni1rb2VuaWctY3Jhc2gucGF0Y2ggYi9nZGItYno2MDA3NDYt a29lbmlnLWNyYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjZlMjA5 Li4wMDAwMDAwCi0tLSBhL2dkYi1iejYwMDc0Ni1rb2VuaWctY3Jhc2gucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw2NiArMCwwIEBACi1bcGF0Y2hdIEZpeCBBREwgYW5vbnltb3VzIHR5cGUgY3Jh c2gKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA2L21zZzAwMDA0 Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDYvbXNnMDAwMTIu aHRtbAotCi1bIEJhY2twb3J0ZWQgdGhlIHRlc3RjYXNlLiAgXQotCi0jIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMC8wNi8wMiAwNjoyNDowMAkxLjExODYyCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMC8wNi8wMiAxNTozMToyOQkxLjExODYzCi0jIyAtMSwzICsxLDggQEAKLSsyMDEwLTA2LTAy ICBTYW1pIFdhZ2lhYWxsYSAgPHN3YWdpYWFsQHJlZGhhdC5jb20+Ci0rCi0rCSogY3Atc3VwcG9y dC5jIChtYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0X2FkbF9uYW1lc3BhY2UpOiBIYW5kbGUKLSsJ YW5vbnltb3VzIHR5cGUgY2FzZS4KLSsKLSAyMDEwLTA2LTAyICBQaWVycmUgTXVsbGVyICA8bXVs bGVyQGljcy51LXN0cmFzYmcuZnI+Ci0gCi0gCSogZHdhcmYycmVhZC5jIChyZWFkX3N1YnJhbmdl X3R5cGUpOiBIYW5kbGUgbWlzc2luZyBiYXNlIHR5cGUKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cJMjAxMC8wNi8wMSAyMToyOToyMQkxLjIyOTgKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cJMjAxMC8wNi8wMiAxNTozMTozMAkxLjIyOTkKLSMjIC0xLDMgKzEsOCBAQAot KzIwMTAtMDYtMDIgIFNhbWkgV2FnaWFhbGxhICA8c3dhZ2lhYWxAcmVkaGF0LmNvbT4KLSsKLSsJ KiBnZGIuY3AvbmFtZXNwYWNlLWtvZW5pZy5leHA6IEFkZGVkIG5ldyB0ZXN0IGNhc2UuCi0rCSog Z2RiLmNwL25hbWVzcGFjZS1rb2VuaWcuY2M6IERpdHRvLgotKwotIDIwMTAtMDYtMDEgIE1pY2hh ZWwgU255ZGVyICA8bXNueWRlckB2bXdhcmUuY29tPgotIAotIAkqIGdkYi5iYXNlL2FyaXRobWV0 LmV4cDogVXNlIGdkYl90ZXN0X25vX291dHB1dC4KLS0tLSBzcmMvZ2RiL2NwLXN1cHBvcnQuYwky MDEwLzA1LzEzIDIzOjUzOjMyCTEuNDAKLSsrKyBzcmMvZ2RiL2NwLXN1cHBvcnQuYwkyMDEwLzA2 LzAyIDE1OjMxOjMwCTEuNDEKLUBAIC03NTIsNiArNzUyLDkgQEAKLSAKLSAgIHR5cGVfbmFtZSA9 IFRZUEVfTkFNRSAodHlwZSk7Ci0gCi0rICBpZiAodHlwZV9uYW1lID09IE5VTEwpCi0rICAgIHJl dHVybjsKLSsKLSAgIHByZWZpeF9sZW4gPSBjcF9lbnRpcmVfcHJlZml4X2xlbiAodHlwZV9uYW1l KTsKLSAKLSAgIGlmIChwcmVmaXhfbGVuICE9IDApCi0tLS0gZ2RiLTcuMS9nZGIvdGVzdHN1aXRl L2dkYi5jcC9uYW1lc3BhY2Uta29lbmlnLmNjLm9yaWcJMjAxMC0wNi0wOSAwODoyMDoxNC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1r b2VuaWcuY2MJMjAxMC0wNi0wOSAxMTowOToyOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNjUsNiAr MTY1LDEzIEBAIG5hbWVzcGFjZSBNIHsKLSAKLSB9Ci0gLy8tLS0tLS0tLS0tLS0KLStzdGF0aWMg dW5pb24gewotKyAgICBpbnQgIGE7Ci0rICAgIGNoYXIgYjsKLSt9cF91bmlvbjsKLSsKLSsvLy0t LS0tLS0tLS0tLQotKwotIGludAotIG1haW4gKCkKLSB7Ci0tLS0gZ2RiLTcuMS9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9uYW1lc3BhY2Uta29lbmlnLmV4cC5vcmlnCTIwMTAtMDYtMDkgMDg6MjA6MTQu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3Bh Y2Uta29lbmlnLmV4cAkyMDEwLTA2LTA5IDExOjA5OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEx MCwzICsxMTEsNyBAQCBnZGJfdGVzdCAicCBvICsgNS4wZiIgIj0gMjIiCi0gZ2RiX3Rlc3QgInAg byArIDUiICI9IDIzIgotIAotIGdkYl90ZXN0ICJwIG8rKyIgIj0gMjQiCi0rCi0rI3Rlc3QgdGhh dCBsb29rdXAgaXMgbm90IHRod2FydGVkIGJ5IGFub255bW91cyB0eXBlcwotK2dkYl90ZXN0ICJw IGZvbyAocF91bmlvbikiIFwKLSsgICJDYW5ub3QgcmVzb2x2ZSBmdW5jdGlvbiBmb28gdG8gYW55 IG92ZXJsb2FkZWQgaW5zdGFuY2UiCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjAxODg3LWR3YXJmNC0x b2YyLnBhdGNoIGIvZ2RiLWJ6NjAxODg3LWR3YXJmNC0xb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAyMjcwOGRmLi4wMDAwMDAwCi0tLSBhL2dkYi1iejYwMTg4Ny1kd2Fy ZjQtMW9mMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyOSArMCwwIEBACi1jb21taXQgYmUx ZjU3YzkwYmRmODY0NzdiOWJjNjljYzk4MjE3MWQ2YWQ1ZGY1NgotQXV0aG9yOiBUb20gVHJvbWV5 IDx0cm9tZXlAcmVkaGF0LmNvbT4KLURhdGU6ICAgVHVlIEFwciAyMCAxNzozMzoxMyAyMDEwICsw MDAwCi0KLSAgICAJKiBkd2FyZjItZnJhbWUuYyAoZGVjb2RlX2ZyYW1lX2VudHJ5XzEpOiBIYW5k bGUgQ0lFIHZlcnNpb24gNC4KLSAgICAJKHN0cnVjdCBkd2FyZjJfY2llKSA8c2VnbWVudF9zaXpl PjogTmV3IGZpZWxkLgotICAgIAkqIGR3YXJmMnJlYWQuYyAocGFydGlhbF9yZWFkX2NvbXBfdW5p dF9oZWFkKTogQWNjZXB0IERXQVJGIDQuCi0gICAgCShza2lwX29uZV9kaWUpOiBIYW5kbGUgRFdf Rk9STV9mbGFnX3ByZXNlbnQsIERXX0ZPUk1fc2VjX29mZnNldCwKLSAgICAJRFdfRk9STV9leHBy bG9jLgotICAgIAkocmVhZF9hdHRyaWJ1dGVfdmFsdWUpOiBIYW5kbGUgRFdfRk9STV9mbGFnX3By ZXNlbnQsCi0gICAgCURXX0ZPUk1fc2VjX29mZnNldCwgRFdfRk9STV9leHBybG9jLgotICAgIAko ZHVtcF9kaWVfc2hhbGxvdyk6IExpa2V3aXNlLgotICAgIAkoYXR0cl9mb3JtX2lzX3NlY3Rpb25f b2Zmc2V0KTogSGFuZGxlIERXX0ZPUk1fc2VjX29mZnNldC4KLSAgICAJKGR3YXJmMl9jb25zdF92 YWx1ZSk6IEhhbmRsZSBEV19GT1JNX2V4cHJsb2MuCi0gICAgCShhdHRyX2Zvcm1faXNfYmxvY2sp OiBMaWtld2lzZS4KLSAgICAJKHN0cnVjdCBsaW5lX2hlYWRlcikgPG1heGltdW1fb3BzX3Blcl9p bnN0cnVjdGlvbj46IE5ldyBmaWVsZC4KLSAgICAJKGR3YXJmX2RlY29kZV9saW5lX2hlYWRlcik6 IFNldCBuZXcgZmllbGQuCi0gICAgCShkd2FyZl9kZWNvZGVfbGluZXMpOiBIYW5kbGUgbmV3IGZp ZWxkLgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hhbmdlTG9nCi0jIyAtMSwz ICsxLDIwIEBACi0rMjAxMC0wNC0yMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgot KwotKwkqIGR3YXJmMi1mcmFtZS5jIChkZWNvZGVfZnJhbWVfZW50cnlfMSk6IEhhbmRsZSBDSUUg dmVyc2lvbiA0LgotKwkoc3RydWN0IGR3YXJmMl9jaWUpIDxzZWdtZW50X3NpemU+OiBOZXcgZmll bGQuCi0rCSogZHdhcmYycmVhZC5jIChwYXJ0aWFsX3JlYWRfY29tcF91bml0X2hlYWQpOiBBY2Nl cHQgRFdBUkYgNC4KLSsJKHNraXBfb25lX2RpZSk6IEhhbmRsZSBEV19GT1JNX2ZsYWdfcHJlc2Vu dCwgRFdfRk9STV9zZWNfb2Zmc2V0LAotKwlEV19GT1JNX2V4cHJsb2MuCi0rCShyZWFkX2F0dHJp YnV0ZV92YWx1ZSk6IEhhbmRsZSBEV19GT1JNX2ZsYWdfcHJlc2VudCwKLSsJRFdfRk9STV9zZWNf b2Zmc2V0LCBEV19GT1JNX2V4cHJsb2MuCi0rCShkdW1wX2RpZV9zaGFsbG93KTogTGlrZXdpc2Uu Ci0rCShhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQpOiBIYW5kbGUgRFdfRk9STV9zZWNfb2Zm c2V0LgotKwkoZHdhcmYyX2NvbnN0X3ZhbHVlKTogSGFuZGxlIERXX0ZPUk1fZXhwcmxvYy4KLSsJ KGF0dHJfZm9ybV9pc19ibG9jayk6IExpa2V3aXNlLgotKwkoc3RydWN0IGxpbmVfaGVhZGVyKSA8 bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uPjogTmV3IGZpZWxkLgotKwkoZHdhcmZfZGVjb2Rl X2xpbmVfaGVhZGVyKTogU2V0IG5ldyBmaWVsZC4KLSsJKGR3YXJmX2RlY29kZV9saW5lcyk6IEhh bmRsZSBuZXcgZmllbGQuCi0rCi0gMjAxMC0wNC0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotIAotIAkqIGYtZXhwLnk6IEFkZCBuZXcgcHJvZHVjdGlvbiB0 byByZWNvZ25pemUgdGhlIGBsb2dpY2FsKjgnIHR5cGUuCi0tLS0gYS9nZGIvZHdhcmYyLWZyYW1l LmMKLSsrKyBiL2dkYi9kd2FyZjItZnJhbWUuYwotQEAgLTg1LDYgKzg1LDkgQEAgc3RydWN0IGR3 YXJmMl9jaWUKLSAKLSAgIC8qIFRoZSB2ZXJzaW9uIHJlY29yZGVkIGluIHRoZSBDSUUuICAqLwot ICAgdW5zaWduZWQgY2hhciB2ZXJzaW9uOwotKwotKyAgLyogVGhlIHNlZ21lbnQgc2l6ZS4gICov Ci0rICB1bnNpZ25lZCBjaGFyIHNlZ21lbnRfc2l6ZTsKLSB9OwotIAotIHN0cnVjdCBkd2FyZjJf Y2llX3RhYmxlCi1AQCAtMTcxNCw3ICsxNzE3LDcgQEAgZGVjb2RlX2ZyYW1lX2VudHJ5XzEgKHN0 cnVjdCBjb21wX3VuaXQgKnVuaXQsIGdkYl9ieXRlICpzdGFydCwgaW50IGVoX2ZyYW1lX3AsCi0g Ci0gICAgICAgLyogQ2hlY2sgdmVyc2lvbiBudW1iZXIuICAqLwotICAgICAgIGNpZV92ZXJzaW9u ID0gcmVhZF8xX2J5dGUgKHVuaXQtPmFiZmQsIGJ1Zik7Ci0tICAgICAgaWYgKGNpZV92ZXJzaW9u ICE9IDEgJiYgY2llX3ZlcnNpb24gIT0gMykKLSsgICAgICBpZiAoY2llX3ZlcnNpb24gIT0gMSAm JiBjaWVfdmVyc2lvbiAhPSAzICYmIGNpZV92ZXJzaW9uICE9IDQpCi0gCXJldHVybiBOVUxMOwot ICAgICAgIGNpZS0+dmVyc2lvbiA9IGNpZV92ZXJzaW9uOwotICAgICAgIGJ1ZiArPSAxOwotQEAg LTE3MzgsNiArMTc0MSwyMCBAQCBkZWNvZGVfZnJhbWVfZW50cnlfMSAoc3RydWN0IGNvbXBfdW5p dCAqdW5pdCwgZ2RiX2J5dGUgKnN0YXJ0LCBpbnQgZWhfZnJhbWVfcCwKLSAJICBhdWdtZW50YXRp b24gKz0gMjsKLSAJfQotIAotKyAgICAgIGlmIChjaWUtPnZlcnNpb24gPj0gNCkKLSsJewotKwkg IC8qIEZJWE1FOiBjaGVjayB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXMgZnJvbSB0aGUgQ1UgaGVh ZGVyLiAgKi8KLSsJICBjaWUtPmFkZHJfc2l6ZSA9IHJlYWRfMV9ieXRlICh1bml0LT5hYmZkLCBi dWYpOwotKwkgICsrYnVmOwotKwkgIGNpZS0+c2VnbWVudF9zaXplID0gcmVhZF8xX2J5dGUgKHVu aXQtPmFiZmQsIGJ1Zik7Ci0rCSAgKytidWY7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBj aWUtPmFkZHJfc2l6ZSA9IGdkYmFyY2hfcHRyX2JpdCAoZ2RiYXJjaCkgLyBUQVJHRVRfQ0hBUl9C SVQ7Ci0rCSAgY2llLT5zZWdtZW50X3NpemUgPSAwOwotKwl9Ci0rCi0gICAgICAgY2llLT5jb2Rl X2FsaWdubWVudF9mYWN0b3IgPQotIAlyZWFkX3Vuc2lnbmVkX2xlYjEyOCAodW5pdC0+YWJmZCwg YnVmLCAmYnl0ZXNfcmVhZCk7Ci0gICAgICAgYnVmICs9IGJ5dGVzX3JlYWQ7Ci0tLS0gYS9nZGIv ZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtMzk2LDYgKzM5Niw3IEBA IHN0cnVjdCBsaW5lX2hlYWRlcgotICAgdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsKLSAgIHVuc2ln bmVkIGludCBoZWFkZXJfbGVuZ3RoOwotICAgdW5zaWduZWQgY2hhciBtaW5pbXVtX2luc3RydWN0 aW9uX2xlbmd0aDsKLSsgIHVuc2lnbmVkIGNoYXIgbWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9u OwotICAgdW5zaWduZWQgY2hhciBkZWZhdWx0X2lzX3N0bXQ7Ci0gICBpbnQgbGluZV9iYXNlOwot ICAgdW5zaWduZWQgY2hhciBsaW5lX3JhbmdlOwotQEAgLTE0ODgsMTAgKzE0ODksMTAgQEAgcGFy dGlhbF9yZWFkX2NvbXBfdW5pdF9oZWFkIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKmhlYWRlciwg Z2RiX2J5dGUgKmluZm9fcHRyLAotIAotICAgaW5mb19wdHIgPSByZWFkX2NvbXBfdW5pdF9oZWFk IChoZWFkZXIsIGluZm9fcHRyLCBhYmZkKTsKLSAKLS0gIGlmIChoZWFkZXItPnZlcnNpb24gIT0g MiAmJiBoZWFkZXItPnZlcnNpb24gIT0gMykKLSsgIGlmIChoZWFkZXItPnZlcnNpb24gIT0gMiAm JiBoZWFkZXItPnZlcnNpb24gIT0gMyAmJiBoZWFkZXItPnZlcnNpb24gIT0gNCkKLSAgICAgZXJy b3IgKF8oIkR3YXJmIEVycm9yOiB3cm9uZyB2ZXJzaW9uIGluIGNvbXBpbGF0aW9uIHVuaXQgaGVh ZGVyICIKLS0JICAgIihpcyAlZCwgc2hvdWxkIGJlICVkKSBbaW4gbW9kdWxlICVzXSIpLCBoZWFk ZXItPnZlcnNpb24sCi0tCSAgIDIsIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKLSsJICAgIihp cyAlZCwgc2hvdWxkIGJlIDIsIDMsIG9yIDQpIFtpbiBtb2R1bGUgJXNdIiksIGhlYWRlci0+dmVy c2lvbiwKLSsJICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotIAotICAgaWYgKGhlYWRlci0+ YWJicmV2X29mZnNldCA+PSBkd2FyZjJfcGVyX29iamZpbGUtPmFiYnJldi5zaXplKQotICAgICBl cnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBvZmZzZXQgKDB4JWx4KSBpbiBjb21waWxhdGlvbiB1 bml0IGhlYWRlciAiCi1AQCAtMjc3Niw2ICsyNzc3LDggQEAgc2tpcF9vbmVfZGllIChnZGJfYnl0 ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCi0gCWNhc2UgRFdfRk9STV9mbGFnOgotIAkg IGluZm9fcHRyICs9IDE7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfRk9STV9mbGFnX3ByZXNlbnQ6 Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgRFdfRk9STV9kYXRhMjoKLSAJY2FzZSBEV19GT1JNX3JlZjI6 Ci0gCSAgaW5mb19wdHIgKz0gMjsKLUBAIC0yNzkzLDkgKzI3OTYsMTEgQEAgc2tpcF9vbmVfZGll IChnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5mb19wdHIsCi0gCSAgcmVhZF9zdHJpbmcg KGFiZmQsIGluZm9fcHRyLCAmYnl0ZXNfcmVhZCk7Ci0gCSAgaW5mb19wdHIgKz0gYnl0ZXNfcmVh ZDsKLSAJICBicmVhazsKLSsJY2FzZSBEV19GT1JNX3NlY19vZmZzZXQ6Ci0gCWNhc2UgRFdfRk9S TV9zdHJwOgotIAkgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7Ci0gCSAgYnJl YWs7Ci0rCWNhc2UgRFdfRk9STV9leHBybG9jOgotIAljYXNlIERXX0ZPUk1fYmxvY2s6Ci0gCSAg aW5mb19wdHIgKz0gcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIGluZm9fcHRyLCAmYnl0ZXNf cmVhZCk7Ci0gCSAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKLUBAIC03MTI5LDYgKzcxMzQsMTAg QEAgcmVhZF9hdHRyaWJ1dGVfdmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHVuc2lnbmVk IGZvcm0sCi0gICAgICAgRFdfVU5TTkQgKGF0dHIpID0gcmVhZF84X2J5dGVzIChhYmZkLCBpbmZv X3B0cik7Ci0gICAgICAgaW5mb19wdHIgKz0gODsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBE V19GT1JNX3NlY19vZmZzZXQ6Ci0rICAgICAgRFdfVU5TTkQgKGF0dHIpID0gcmVhZF9vZmZzZXQg KGFiZmQsIGluZm9fcHRyLCAmY3UtPmhlYWRlciwgJmJ5dGVzX3JlYWQpOwotKyAgICAgIGluZm9f cHRyICs9IGJ5dGVzX3JlYWQ7Ci0rICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRFdfRk9STV9zdHJp bmc6Ci0gICAgICAgRFdfU1RSSU5HIChhdHRyKSA9IHJlYWRfc3RyaW5nIChhYmZkLCBpbmZvX3B0 ciwgJmJ5dGVzX3JlYWQpOwotICAgICAgIERXX1NUUklOR19JU19DQU5PTklDQUwgKGF0dHIpID0g MDsKLUBAIC03MTQwLDYgKzcxNDksNyBAQCByZWFkX2F0dHJpYnV0ZV92YWx1ZSAoc3RydWN0IGF0 dHJpYnV0ZSAqYXR0ciwgdW5zaWduZWQgZm9ybSwKLSAgICAgICBEV19TVFJJTkdfSVNfQ0FOT05J Q0FMIChhdHRyKSA9IDA7Ci0gICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKLSAgICAgICBi cmVhazsKLSsgICAgY2FzZSBEV19GT1JNX2V4cHJsb2M6Ci0gICAgIGNhc2UgRFdfRk9STV9ibG9j azoKLSAgICAgICBibGsgPSBkd2FyZl9hbGxvY19ibG9jayAoY3UpOwotICAgICAgIGJsay0+c2l6 ZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBpbmZvX3B0ciwgJmJ5dGVzX3JlYWQpOwot QEAgLTcxNjQsNiArNzE3NCw5IEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChzdHJ1Y3QgYXR0cmli dXRlICphdHRyLCB1bnNpZ25lZCBmb3JtLAotICAgICAgIERXX1VOU05EIChhdHRyKSA9IHJlYWRf MV9ieXRlIChhYmZkLCBpbmZvX3B0cik7Ci0gICAgICAgaW5mb19wdHIgKz0gMTsKLSAgICAgICBi cmVhazsKLSsgICAgY2FzZSBEV19GT1JNX2ZsYWdfcHJlc2VudDoKLSsgICAgICBEV19VTlNORCAo YXR0cikgPSAxOwotKyAgICAgIGJyZWFrOwotICAgICBjYXNlIERXX0ZPUk1fc2RhdGE6Ci0gICAg ICAgRFdfU05EIChhdHRyKSA9IHJlYWRfc2lnbmVkX2xlYjEyOCAoYWJmZCwgaW5mb19wdHIsICZi eXRlc19yZWFkKTsKLSAgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOwotQEAgLTc2ODAsNyAr NzY5Myw3IEBAIGR3YXJmMl9hdHRyX25vX2ZvbGxvdyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHVu c2lnbmVkIGludCBuYW1lLAotIAotIC8qIFJldHVybiBub24temVybyBpZmYgdGhlIGF0dHJpYnV0 ZSBOQU1FIGlzIGRlZmluZWQgZm9yIHRoZSBnaXZlbiBESUUsCi0gICAgYW5kIGhvbGRzIGEgbm9u LXplcm8gdmFsdWUuICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yCi0tICAg RFdfRk9STV9mbGFnIGF0dHJpYnV0ZXMuICAqLwotKyAgIERXX0ZPUk1fZmxhZyBvciBEV19GT1JN X2ZsYWdfcHJlc2VudCBhdHRyaWJ1dGVzLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0gZHdhcmYyX2Zs YWdfdHJ1ZV9wIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgdW5zaWduZWQgbmFtZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCi1AQCAtNzg2Miw2ICs3ODc1LDIxIEBAIGR3YXJmX2RlY29kZV9saW5lX2hl YWRlciAodW5zaWduZWQgaW50IG9mZnNldCwgYmZkICphYmZkLAotICAgbGluZV9wdHIgKz0gb2Zm c2V0X3NpemU7Ci0gICBsaC0+bWluaW11bV9pbnN0cnVjdGlvbl9sZW5ndGggPSByZWFkXzFfYnl0 ZSAoYWJmZCwgbGluZV9wdHIpOwotICAgbGluZV9wdHIgKz0gMTsKLSsgIGlmIChsaC0+dmVyc2lv biA+PSA0KQotKyAgICB7Ci0rICAgICAgbGgtPm1heGltdW1fb3BzX3Blcl9pbnN0cnVjdGlvbiA9 IHJlYWRfMV9ieXRlIChhYmZkLCBsaW5lX3B0cik7Ci0rICAgICAgbGluZV9wdHIgKz0gMTsKLSsg ICAgfQotKyAgZWxzZQotKyAgICBsaC0+bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uID0gMTsK LSsKLSsgIGlmIChsaC0+bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uID09IDApCi0rICAgIHsK LSsgICAgICBsaC0+bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uID0gMTsKLSsgICAgICBjb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkgXygiaW52YWxpZCBtYXhpbXVtX29wc19w ZXJfaW5zdHJ1Y3Rpb24gaW4gYC5kZWJ1Z19saW5lJyBzZWN0aW9uIikpOwotKyAgICB9Ci0rCi0g ICBsaC0+ZGVmYXVsdF9pc19zdG10ID0gcmVhZF8xX2J5dGUgKGFiZmQsIGxpbmVfcHRyKTsKLSAg IGxpbmVfcHRyICs9IDE7Ci0gICBsaC0+bGluZV9iYXNlID0gcmVhZF8xX3NpZ25lZF9ieXRlIChh YmZkLCBsaW5lX3B0cik7Ci1AQCAtODAxMCw2ICs4MDM4LDcgQEAgZHdhcmZfZGVjb2RlX2xpbmVz IChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjaGFyICpjb21wX2RpciwgYmZkICphYmZkLAotICAg ICAgIGludCBiYXNpY19ibG9jayA9IDA7Ci0gICAgICAgaW50IGVuZF9zZXF1ZW5jZSA9IDA7Ci0g ICAgICAgQ09SRV9BRERSIGFkZHI7Ci0rICAgICAgdW5zaWduZWQgY2hhciBvcF9pbmRleCA9IDA7 Ci0gCi0gICAgICAgaWYgKCFkZWNvZGVfZm9yX3BzdF9wICYmIGxoLT5udW1fZmlsZV9uYW1lcyA+ PSBmaWxlKQotIAl7Ci1AQCAtODA0MSwxMiArODA3MCwxNyBAQCBkd2FyZl9kZWNvZGVfbGluZXMg KHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNoYXIgKmNvbXBfZGlyLCBiZmQgKmFiZmQsCi0gCSAg ICB7CQkKLSAJICAgICAgLyogU3BlY2lhbCBvcGVyYW5kLiAgKi8KLSAJICAgICAgYWRqX29wY29k ZSA9IG9wX2NvZGUgLSBsaC0+b3Bjb2RlX2Jhc2U7Ci0tCSAgICAgIGFkZHJlc3MgKz0gKGFkal9v cGNvZGUgLyBsaC0+bGluZV9yYW5nZSkKLS0JCSogbGgtPm1pbmltdW1faW5zdHJ1Y3Rpb25fbGVu Z3RoOwotKwkgICAgICBhZGRyZXNzICs9ICgoKG9wX2luZGV4ICsgKGFkal9vcGNvZGUgLyBsaC0+ bGluZV9yYW5nZSkpCi0rCQkJICAgLyBsaC0+bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uKQot KwkJCSAgKiBsaC0+bWluaW11bV9pbnN0cnVjdGlvbl9sZW5ndGgpOwotKwkgICAgICBvcF9pbmRl eCA9ICgob3BfaW5kZXggKyAoYWRqX29wY29kZSAvIGxoLT5saW5lX3JhbmdlKSkKLSsJCQkgICUg bGgtPm1heGltdW1fb3BzX3Blcl9pbnN0cnVjdGlvbik7Ci0gCSAgICAgIGxpbmUgKz0gbGgtPmxp bmVfYmFzZSArIChhZGpfb3Bjb2RlICUgbGgtPmxpbmVfcmFuZ2UpOwotIAkgICAgICBpZiAobGgt Pm51bV9maWxlX25hbWVzIDwgZmlsZSB8fCBmaWxlID09IDApCi0gCQlkd2FyZjJfZGVidWdfbGlu ZV9taXNzaW5nX2ZpbGVfY29tcGxhaW50ICgpOwotLQkgICAgICBlbHNlCi0rCSAgICAgIC8qIEZv ciBub3cgd2UgaWdub3JlIGxpbmVzIG5vdCBzdGFydGluZyBvbiBhbgotKwkJIGluc3RydWN0aW9u IGJvdW5kYXJ5LiAgKi8KLSsJICAgICAgZWxzZSBpZiAob3BfaW5kZXggPT0gMCkKLSAJCXsKLSAJ CSAgbGgtPmZpbGVfbmFtZXNbZmlsZSAtIDFdLmluY2x1ZGVkX3AgPSAxOwotIAkJICBpZiAoIWRl Y29kZV9mb3JfcHN0X3AgJiYgaXNfc3RtdCkKLUBAIC04MDgxLDYgKzgxMTUsNyBAQCBkd2FyZl9k ZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNoYXIgKmNvbXBfZGlyLCBiZmQg KmFiZmQsCi0gCQkgIGJyZWFrOwotIAkJY2FzZSBEV19MTkVfc2V0X2FkZHJlc3M6Ci0gCQkgIGFk ZHJlc3MgPSByZWFkX2FkZHJlc3MgKGFiZmQsIGxpbmVfcHRyLCBjdSwgJmJ5dGVzX3JlYWQpOwot KwkJICBvcF9pbmRleCA9IDA7Ci0gCQkgIGxpbmVfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0gCQkgIGFk ZHJlc3MgKz0gYmFzZWFkZHI7Ci0gCQkgIGJyZWFrOwotQEAgLTgxNDYsOSArODE4MSwxNyBAQCBk d2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIGNoYXIgKmNvbXBfZGly LCBiZmQgKmFiZmQsCi0gCSAgICAgIGJhc2ljX2Jsb2NrID0gMDsKLSAJICAgICAgYnJlYWs7Ci0g CSAgICBjYXNlIERXX0xOU19hZHZhbmNlX3BjOgotLQkgICAgICBhZGRyZXNzICs9IGxoLT5taW5p bXVtX2luc3RydWN0aW9uX2xlbmd0aAotLQkJKiByZWFkX3Vuc2lnbmVkX2xlYjEyOCAoYWJmZCwg bGluZV9wdHIsICZieXRlc19yZWFkKTsKLS0JICAgICAgbGluZV9wdHIgKz0gYnl0ZXNfcmVhZDsK LSsJICAgICAgewotKwkJQ09SRV9BRERSIGFkanVzdAotKwkJICA9IHJlYWRfdW5zaWduZWRfbGVi MTI4IChhYmZkLCBsaW5lX3B0ciwgJmJ5dGVzX3JlYWQpOwotKwotKwkJYWRkcmVzcyArPSAoKChv cF9pbmRleCArIGFkanVzdCkKLSsJCQkgICAgIC8gbGgtPm1heGltdW1fb3BzX3Blcl9pbnN0cnVj dGlvbikKLSsJCQkgICAgKiBsaC0+bWluaW11bV9pbnN0cnVjdGlvbl9sZW5ndGgpOwotKwkJb3Bf aW5kZXggPSAoKG9wX2luZGV4ICsgYWRqdXN0KQotKwkJCSAgICAlIGxoLT5tYXhpbXVtX29wc19w ZXJfaW5zdHJ1Y3Rpb24pOwotKwkJbGluZV9wdHIgKz0gYnl0ZXNfcmVhZDsKLSsJICAgICAgfQot IAkgICAgICBicmVhazsKLSAJICAgIGNhc2UgRFdfTE5TX2FkdmFuY2VfbGluZToKLSAJICAgICAg bGluZSArPSByZWFkX3NpZ25lZF9sZWIxMjggKGFiZmQsIGxpbmVfcHRyLCAmYnl0ZXNfcmVhZCk7 Ci1AQCAtODE5NSwxMSArODIzOCwxOSBAQCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5l X2hlYWRlciAqbGgsIGNoYXIgKmNvbXBfZGlyLCBiZmQgKmFiZmQsCi0gCSAgICAgICBpbnN0cnVj dGlvbiBsZW5ndGggc2luY2Ugc3BlY2lhbCBvcGNvZGUgMjU1IHdvdWxkIGhhdmUKLSAJICAgICAg IHNjYWxlZCB0aGUgdGhlIGluY3JlbWVudC4gICovCi0gCSAgICBjYXNlIERXX0xOU19jb25zdF9h ZGRfcGM6Ci0tCSAgICAgIGFkZHJlc3MgKz0gKGxoLT5taW5pbXVtX2luc3RydWN0aW9uX2xlbmd0 aAotLQkJCSAgKiAoKDI1NSAtIGxoLT5vcGNvZGVfYmFzZSkgLyBsaC0+bGluZV9yYW5nZSkpOwot KwkgICAgICB7Ci0rCQlDT1JFX0FERFIgYWRqdXN0ID0gKDI1NSAtIGxoLT5vcGNvZGVfYmFzZSkg LyBsaC0+bGluZV9yYW5nZTsKLSsKLSsJCWFkZHJlc3MgKz0gKCgob3BfaW5kZXggKyBhZGp1c3Qp Ci0rCQkJICAgICAvIGxoLT5tYXhpbXVtX29wc19wZXJfaW5zdHJ1Y3Rpb24pCi0rCQkJICAgICog bGgtPm1pbmltdW1faW5zdHJ1Y3Rpb25fbGVuZ3RoKTsKLSsJCW9wX2luZGV4ID0gKChvcF9pbmRl eCArIGFkanVzdCkKLSsJCQkgICAgJSBsaC0+bWF4aW11bV9vcHNfcGVyX2luc3RydWN0aW9uKTsK LSsJICAgICAgfQotIAkgICAgICBicmVhazsKLSAJICAgIGNhc2UgRFdfTE5TX2ZpeGVkX2FkdmFu Y2VfcGM6Ci0gCSAgICAgIGFkZHJlc3MgKz0gcmVhZF8yX2J5dGVzIChhYmZkLCBsaW5lX3B0cik7 Ci0rCSAgICAgIG9wX2luZGV4ID0gMDsKLSAJICAgICAgbGluZV9wdHIgKz0gMjsKLSAJICAgICAg YnJlYWs7Ci0gCSAgICBkZWZhdWx0OgotQEAgLTg3NjEsNiArODgxMiw3IEBAIGR3YXJmMl9jb25z dF92YWx1ZSAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAotICAg ICBjYXNlIERXX0ZPUk1fYmxvY2syOgotICAgICBjYXNlIERXX0ZPUk1fYmxvY2s0OgotICAgICBj YXNlIERXX0ZPUk1fYmxvY2s6Ci0rICAgIGNhc2UgRFdfRk9STV9leHBybG9jOgotICAgICAgIGJs ayA9IERXX0JMT0NLIChhdHRyKTsKLSAgICAgICBpZiAoVFlQRV9MRU5HVEggKFNZTUJPTF9UWVBF IChzeW0pKSAhPSBibGstPnNpemUpCi0gCWR3YXJmMl9jb25zdF92YWx1ZV9sZW5ndGhfbWlzbWF0 Y2hfY29tcGxhaW50IChTWU1CT0xfUFJJTlRfTkFNRSAoc3ltKSwKLUBAIC0xMDMwOCw2ICsxMDM2 MCwxMCBAQCBkdW1wX2RpZV9zaGFsbG93IChzdHJ1Y3QgdWlfZmlsZSAqZiwgaW50IGluZGVudCwg c3RydWN0IGRpZV9pbmZvICpkaWUpCi0gCWNhc2UgRFdfRk9STV9ibG9jazE6Ci0gCSAgZnByaW50 Zl91bmZpbHRlcmVkIChmLCAiYmxvY2s6IHNpemUgJWQiLCBEV19CTE9DSyAoJmRpZS0+YXR0cnNb aV0pLT5zaXplKTsKLSAJICBicmVhazsKLSsJY2FzZSBEV19GT1JNX2V4cHJsb2M6Ci0rCSAgZnBy aW50Zl91bmZpbHRlcmVkIChmLCAiZXhwcmVzc2lvbjogc2l6ZSAldSIsCi0rCQkJICAgICAgRFdf QkxPQ0sgKCZkaWUtPmF0dHJzW2ldKS0+c2l6ZSk7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgRFdfRk9S TV9yZWYxOgotIAljYXNlIERXX0ZPUk1fcmVmMjoKLSAJY2FzZSBEV19GT1JNX3JlZjQ6Ci1AQCAt MTAzMjMsNiArMTAzNzksMTAgQEAgZHVtcF9kaWVfc2hhbGxvdyAoc3RydWN0IHVpX2ZpbGUgKmYs IGludCBpbmRlbnQsIHN0cnVjdCBkaWVfaW5mbyAqZGllKQotIAkgIGZwcmludGZfdW5maWx0ZXJl ZCAoZiwgImNvbnN0YW50OiAlcyIsCi0gCQkJICAgICAgcHVsb25nZXN0IChEV19VTlNORCAoJmRp ZS0+YXR0cnNbaV0pKSk7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfRk9STV9zZWNfb2Zmc2V0Ogot KwkgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgInNlY3Rpb24gb2Zmc2V0OiAlcyIsCi0rCQkJICAg ICAgcHVsb25nZXN0IChEV19VTlNORCAoJmRpZS0+YXR0cnNbaV0pKSk7Ci0rCSAgYnJlYWs7Ci0g CWNhc2UgRFdfRk9STV9zaWc4OgotIAkgIGlmIChEV19TSUdOQVRVUkVEX1RZUEUgKCZkaWUtPmF0 dHJzW2ldKSAhPSBOVUxMKQotIAkgICAgZnByaW50Zl91bmZpbHRlcmVkIChmLCAic2lnbmF0dXJl ZCB0eXBlLCBvZmZzZXQ6IDB4JXgiLAotQEAgLTEwMzQzLDYgKzEwNDAzLDkgQEAgZHVtcF9kaWVf c2hhbGxvdyAoc3RydWN0IHVpX2ZpbGUgKmYsIGludCBpbmRlbnQsIHN0cnVjdCBkaWVfaW5mbyAq ZGllKQotIAkgIGVsc2UKLSAJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgImZsYWc6IEZBTFNF Iik7Ci0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfRk9STV9mbGFnX3ByZXNlbnQ6Ci0rCSAgZnByaW50 Zl91bmZpbHRlcmVkIChmLCAiZmxhZzogVFJVRSIpOwotKwkgIGJyZWFrOwotIAljYXNlIERXX0ZP Uk1faW5kaXJlY3Q6Ci0gCSAgLyogdGhlIHJlYWRlciB3aWxsIGhhdmUgcmVkdWNlZCB0aGUgaW5k aXJlY3QgZm9ybSB0bwotIAkgICAgIHRoZSAiYmFzZSBmb3JtIiBzbyB0aGlzIGZvcm0gc2hvdWxk IG5vdCBvY2N1ciAqLwotQEAgLTExNTIwLDcgKzExNTgzLDggQEAgYXR0cl9mb3JtX2lzX2Jsb2Nr IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQotICAgICAgIGF0dHItPmZvcm0gPT0gRFdfRk9STV9i bG9jazEKLSAgICAgICB8fCBhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2syCi0gICAgICAgfHwg YXR0ci0+Zm9ybSA9PSBEV19GT1JNX2Jsb2NrNAotLSAgICAgIHx8IGF0dHItPmZvcm0gPT0gRFdf Rk9STV9ibG9jayk7Ci0rICAgICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2Jsb2NrCi0rICAg ICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2V4cHJsb2MpOwotIH0KLSAKLSAvKiBSZXR1cm4g bm9uLXplcm8gaWYgQVRUUidzIHZhbHVlIGlzIGEgc2VjdGlvbiBvZmZzZXQgLS0tIGNsYXNzZXMK LUBAIC0xMTUzNSw3ICsxMTU5OSw4IEBAIHN0YXRpYyBpbnQKLSBhdHRyX2Zvcm1faXNfc2VjdGlv bl9vZmZzZXQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCi0gewotICAgcmV0dXJuIChhdHRyLT5m b3JtID09IERXX0ZPUk1fZGF0YTQKLS0gICAgICAgICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JN X2RhdGE4KTsKLSsgICAgICAgICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2RhdGE4Ci0rCSAg fHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX3NlY19vZmZzZXQpOwotIH0KLSAKLSAKCmRpZmYgLS1n aXQgYS9nZGItYno2MDE4ODctZHdhcmY0LTJvZjIucGF0Y2ggYi9nZGItYno2MDE4ODctZHdhcmY0 LTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3Zjg4YjAuLjAwMDAw MDAKLS0tIGEvZ2RiLWJ6NjAxODg3LWR3YXJmNC0yb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNTYgKzAsMCBAQAotY29tbWl0IDY2OTkwN2JkNmQ1NGFlOGU4NWIxMjc4ZjBmMTZmODY0MWNl NjgwMmQKLUF1dGhvcjogVG9tIFRyb21leSA8dHJvbWV5QHJlZGhhdC5jb20+Ci1EYXRlOiAgIFR1 ZSBBcHIgMjAgMjE6MTk6MDcgMjAxMCArMDAwMAotCi0gICAgCSogZHdhcmYycmVhZC5jIChkd2Fy ZjJfY29tcHV0ZV9uYW1lKTogSGFuZGxlIERXX0FUX2xpbmthZ2VfbmFtZS4KLSAgICAJKHJlYWRf cGFydGlhbF9kaWUpOiBMaWtld2lzZS4KLSAgICAJKGR3YXJmX2F0dHJfbmFtZSk6IExpa2V3aXNl LgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hhbmdlTG9nCi0jIyAtMSwzICsx LDkgQEAKLSsyMDEwLTA0LTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0r CSogZHdhcmYycmVhZC5jIChkd2FyZjJfY29tcHV0ZV9uYW1lKTogSGFuZGxlIERXX0FUX2xpbmth Z2VfbmFtZS4KLSsJKHJlYWRfcGFydGlhbF9kaWUpOiBMaWtld2lzZS4KLSsJKGR3YXJmX2F0dHJf bmFtZSk6IExpa2V3aXNlLgotKwotIDIwMTAtMDQtMjAgIENocmlzIE1vbGxlciAgPGNtb2xsZXJA cmVkaGF0LmNvbT4KLSAJCi0gCVBSIDEwODY3Ci0tLS0gZ2RiLTcuMS9nZGIvZHdhcmYycmVhZC5j Lm9yaWcJMjAxMC0wNi0wOSAxNDozODowMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dk Yi9kd2FyZjJyZWFkLmMJMjAxMC0wNi0wOSAxNDo0OTo1My4wMDAwMDAwMDAgKzAyMDAKLUBAIC03 Njc1LDcgKzc2NzUsMTEgQEAgcmVhZF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2lu ZgotIAkgICAgICBicmVhazsKLSAJICAgIH0KLSAJICBicmVhazsKLSsJY2FzZSBEV19BVF9saW5r YWdlX25hbWU6Ci0gCWNhc2UgRFdfQVRfTUlQU19saW5rYWdlX25hbWU6Ci0rCSAgLyogTm90ZSB0 aGF0IGJvdGggZm9ybXMgb2YgbGlua2FnZSBuYW1lIG1pZ2h0IGFwcGVhci4gIFdlCi0rCSAgICAg YXNzdW1lIHRoZXkgd2lsbCBiZSB0aGUgc2FtZSwgYW5kIHdlIG9ubHkgc3RvcmUgdGhlIGxhc3QK LSsJICAgICBvbmUgd2Ugc2VlLiAgKi8KLSAJICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdl X2FkYSkKLSAJICAgIHBhcnRfZGllLT5uYW1lID0gRFdfU1RSSU5HICgmYXR0cik7Ci0gCSAgYnJl YWs7Ci1AQCAtMTAxNjcsNyArMTAxNzEsMTEgQEAgZHdhcmYyX25hbWUgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1YwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciA9IE5VTEw7Ci0gCi0gICBp ZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2FkYSkKLS0gICAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0rICAgIHsKLSsgICAgICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbGlua2FnZV9uYW1lLCBjdSk7Ci0rICAgICAgaWYg KGF0dHIgPT0gTlVMTCkKLSsJYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlu a2FnZV9uYW1lLCBjdSk7Ci0rICAgIH0KLSAKLSAgIGlmICghYXR0cikKLSAgICAgYXR0ciA9IGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX25hbWUsIGN1KTsKLUBAIC0xMDU1NSw2ICsxMDU2Myw4IEBA IGR3YXJmX2F0dHJfbmFtZSAodW5zaWduZWQgYXR0cikKLSAgICAgLyogRFdBUkYgNCB2YWx1ZXMu ICAqLwotICAgICBjYXNlIERXX0FUX3NpZ25hdHVyZToKLSAgICAgICByZXR1cm4gIkRXX0FUX3Np Z25hdHVyZSI7Ci0rICAgIGNhc2UgRFdfQVRfbGlua2FnZV9uYW1lOgotKyAgICAgIHJldHVybiAi RFdfQVRfbGlua2FnZV9uYW1lIjsKLSAgICAgLyogU0dJL01JUFMgZXh0ZW5zaW9ucy4gICovCi0g I2lmZGVmIE1JUFMgLyogY29sbGlkZXMgd2l0aCBEV19BVF9IUF9ibG9ja19pbmRleCAqLwotICAg ICBjYXNlIERXX0FUX01JUFNfZmRlOgoKZGlmZiAtLWdpdCBhL2dkYi1iejYwMjMxNC1wdHlwZS1j bGFzcy10eXBlZGVmLTFvZjMucGF0Y2ggYi9nZGItYno2MDIzMTQtcHR5cGUtY2xhc3MtdHlwZWRl Zi0xb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDMxYmYyLi4wMDAw MDAwCi0tLSBhL2dkYi1iejYwMjMxNC1wdHlwZS1jbGFzcy10eXBlZGVmLTFvZjMucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwyNzQgKzAsMCBAQAotY29tbWl0IGY0OWY5MWU5YzNlYWJhODQ3Zjc1 ZjVjNDZlNzdlMjYxYTc2ZDlhOWIKLUF1dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci1EYXRlOiAgIE1vbiBKdW4gMjggMjA6MzU6NTEgMjAxMCArMDAwMAot Ci0gICAgZ2RiLwotICAgIAkqIGNwLW5hbWVzcGFjZS5jIChjcF9sb29rdXBfbmVzdGVkX3R5cGUp OiBOZXcgdmFyaWFibGUKLSAgICAJY29uY2F0ZW5hdGVkX25hbWUuICBUdXJuIHRoZSBjdXJyZW50 IHJldHVybiBjb25kaXRpb24gaW50byBhIHJldmVyc2UKLSAgICAJb25lLiAgQ2FsbCBhbHNvIGxv b2t1cF9zdGF0aWNfc3ltYm9sX2F1eCBvbiB0aGUgY29uc3RydWN0ZWQgcXVhbGlmaWVkCi0gICAg CW5hbWUuCi0gICAgCSogc3ltdGFiLmMgKGxvb2t1cF9zeW1ib2xfYXV4KTogTW92ZSB2YXJpYWJs ZSBvYmpmaWxlIGFuZCBzZWFyY2hpbmcgaW4KLSAgICAJb3RoZXIgZmlsZXMgaW50byBhIGNhbGxl ZCAuLi4KLSAgICAJKGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCk6IC4uLiBuZXcgZnVuY3Rpb24g aGVyZS4KLSAgICAJKiBzeW10YWIuaCAobG9va3VwX3N0YXRpY19zeW1ib2xfYXV4KTogTmV3IHBy b3RvdHlwZS4KLSAgICAJKiB2YWxvcHMuYyAodmFsdWVfbWF5YmVfbmFtZXNwYWNlX2VsdCk6IENh bGwgYWxzbwotICAgIAlsb29rdXBfc3RhdGljX3N5bWJvbF9hdXggaWYgd2UgZmFpbGVkIG90aGVy d2lzZS4KLSAgICAKLSAgICBnZGIvdGVzdHN1aXRlLwotICAgIAkqIGdkYi5jcC9uYW1lc3BhY2Uu ZXhwICh3aGF0aXMgQzo6Y090aGVyRmlsZVR5cGUpCi0gICAgCSh3aGF0aXMgOjpDOjpjT3RoZXJG aWxlVHlwZSwgd2hhdGlzIEM6OmNPdGhlckZpbGVWYXIpCi0gICAgCSh3aGF0aXMgOjpDOjpjT3Ro ZXJGaWxlVmFyLCBwcmludCBDOjpjT3RoZXJGaWxlVmFyKQotICAgIAkocHJpbnQgOjpDOjpjT3Ro ZXJGaWxlVmFyKQotICAgIAkod2hhdGlzIEM6Ok90aGVyRmlsZUNsYXNzOjpjT3RoZXJGaWxlQ2xh c3NUeXBlKQotICAgIAkod2hhdGlzIDo6Qzo6T3RoZXJGaWxlQ2xhc3M6OmNPdGhlckZpbGVDbGFz c1R5cGUpCi0gICAgCShwcmludCBDOjpPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFy KQotICAgIAkocHJpbnQgOjpjT3RoZXJGaWxlQ2xhc3NWYXIpCi0gICAgCShwcmludCA6OkM6Ok90 aGVyRmlsZUNsYXNzOjpjT3RoZXJGaWxlQ2xhc3NWYXIpOiBOZXcgdGVzdHMuCi0gICAgCShwdHlw ZSBPdGhlckZpbGVDbGFzcywgcHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyk6IFBlcm1pdCBhcmJp dHJhcnkKLSAgICAJdHJhaWxpbmcgY29udGVudC4KLSAgICAJKiBnZGIuY3AvbmFtZXNwYWNlMS5j YyAoQzo6T3RoZXJGaWxlQ2xhc3M6OmNPdGhlckZpbGVDbGFzc1R5cGUpCi0gICAgCShDOjpPdGhl ckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFyKQotICAgIAkoQzo6T3RoZXJGaWxlQ2xhc3M6 OmNPdGhlckZpbGVDbGFzc1Zhcl91c2UsIEM6OmNPdGhlckZpbGVUeXBlKQotICAgIAkoQzo6Y090 aGVyRmlsZVZhciwgQzo6Y090aGVyRmlsZVZhcl91c2UpOiBOZXcuCi0KLSMjIyBhL2dkYi9DaGFu Z2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTggQEAKLSAyMDEwLTA2LTI4 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCSogY3At bmFtZXNwYWNlLmMgKGNwX2xvb2t1cF9uZXN0ZWRfdHlwZSk6IE5ldyB2YXJpYWJsZQotKwljb25j YXRlbmF0ZWRfbmFtZS4gIFR1cm4gdGhlIGN1cnJlbnQgcmV0dXJuIGNvbmRpdGlvbiBpbnRvIGEg cmV2ZXJzZQotKwlvbmUuICBDYWxsIGFsc28gbG9va3VwX3N0YXRpY19zeW1ib2xfYXV4IG9uIHRo ZSBjb25zdHJ1Y3RlZCBxdWFsaWZpZWQKLSsJbmFtZS4KLSsJKiBzeW10YWIuYyAobG9va3VwX3N5 bWJvbF9hdXgpOiBNb3ZlIHZhcmlhYmxlIG9iamZpbGUgYW5kIHNlYXJjaGluZyBpbgotKwlvdGhl ciBmaWxlcyBpbnRvIGEgY2FsbGVkIC4uLgotKwkobG9va3VwX3N0YXRpY19zeW1ib2xfYXV4KTog Li4uIG5ldyBmdW5jdGlvbiBoZXJlLgotKwkqIHN5bXRhYi5oIChsb29rdXBfc3RhdGljX3N5bWJv bF9hdXgpOiBOZXcgcHJvdG90eXBlLgotKwkqIHZhbG9wcy5jICh2YWx1ZV9tYXliZV9uYW1lc3Bh Y2VfZWx0KTogQ2FsbCBhbHNvCi0rCWxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCBpZiB3ZSBmYWls ZWQgb3RoZXJ3aXNlLgotKwotKzIwMTAtMDYtMjggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJRml4IFBSIGMrKy8xMTcwMyBhbmQgUFIgZ2RiLzE0NDgu Ci0gCSogYy1leHAueSAoeXlsZXgpIDxsYXN0X3dhc19jb2xvbmNvbG9uICYmIGZpcnN0X3dhc19j b2xvbmNvbG9uPjogQWRkCi0gCUZJUlNUX0lURVIgY2hlY2suCi1JbmRleDogZ2RiLTcuMS9nZGIv Y3AtbmFtZXNwYWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL2NwLW5hbWVz cGFjZS5jCTIwMTAtMDYtMjkgMTc6NTQ6MTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9n ZGIvY3AtbmFtZXNwYWNlLmMJMjAxMC0wNi0yOSAxNzo1OTozMi4wMDAwMDAwMDAgKzAyMDAKLUBA IC01ODUsMTAgKzU4NSwyNCBAQCBjcF9sb29rdXBfbmVzdGVkX3R5cGUgKHN0cnVjdCB0eXBlICpw YXJlCi0gCQkJCQkJCSBuZXN0ZWRfbmFtZSwKLSAJCQkJCQkJIGJsb2NrLAotIAkJCQkJCQkgVkFS X0RPTUFJTik7Ci0tCWlmIChzeW0gPT0gTlVMTCB8fCBTWU1CT0xfQ0xBU1MgKHN5bSkgIT0gTE9D X1RZUEVERUYpCi0tCSAgcmV0dXJuIE5VTEw7Ci0tCWVsc2UKLSsJY2hhciAqY29uY2F0ZW5hdGVk X25hbWU7Ci0rCi0rCWlmIChzeW0gIT0gTlVMTCAmJiBTWU1CT0xfQ0xBU1MgKHN5bSkgPT0gTE9D X1RZUEVERUYpCi0rCSAgcmV0dXJuIFNZTUJPTF9UWVBFIChzeW0pOwotKwotKwkvKiBOb3cgc2Vh cmNoIGFsbCBzdGF0aWMgZmlsZS1sZXZlbCBzeW1ib2xzLiAgTm90IHN0cmljdGx5IGNvcnJlY3Qs Ci0rCSAgIGJ1dCBtb3JlIHVzZWZ1bCB0aGFuIGFuIGVycm9yLiAgV2UgZG8gbm90IHRyeSB0byBn dWVzcyBhbnkgaW1wb3J0ZWQKLSsJICAgbmFtZXNwYWNlIGFzIGV2ZW4gdGhlIGZ1bGx5IHNwZWNp ZmllZCBuYW1lc3BhY2Ugc2VhY2ggaXMgaXMgYWxyZWFkeQotKwkgICBub3QgQysrIGNvbXBsaWFu dCBhbmQgbW9yZSBhc3N1bXB0aW9ucyBjb3VsZCBtYWtlIGl0IHRvbyBtYWdpYy4gICovCi0rCi0r CWNvbmNhdGVuYXRlZF9uYW1lID0gYWxsb2NhIChzdHJsZW4gKHBhcmVudF9uYW1lKSArIDIKLSsJ CQkJICAgICsgc3RybGVuIChuZXN0ZWRfbmFtZSkgKyAxKTsKLSsJc3ByaW50ZiAoY29uY2F0ZW5h dGVkX25hbWUsICIlczo6JXMiLCBwYXJlbnRfbmFtZSwgbmVzdGVkX25hbWUpOwotKwlzeW0gPSBs b29rdXBfc3RhdGljX3N5bWJvbF9hdXggKGNvbmNhdGVuYXRlZF9uYW1lLCBWQVJfRE9NQUlOKTsK LSsJaWYgKHN5bSAhPSBOVUxMICYmIFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfVFlQRURFRikK LSAJICByZXR1cm4gU1lNQk9MX1RZUEUgKHN5bSk7Ci0rCi0rCXJldHVybiBOVUxMOwotICAgICAg IH0KLSAgICAgZGVmYXVsdDoKLSAgICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElO RV9fLAotSW5kZXg6IGdkYi03LjEvZ2RiL3N5bXRhYi5oCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu MS5vcmlnL2dkYi9zeW10YWIuaAkyMDEwLTA2LTI5IDE3OjU0OjE2LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEvZ2RiL3N5bXRhYi5oCTIwMTAtMDYtMjkgMTg6MDA6MzcuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTAzNiw2ICsxMDM2LDEyIEBAIGV4dGVybiBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wg Kmxvb2t1cF9wYXIKLSAJCQkJCQkgICAgIGNvbnN0IGNoYXIgKiwgaW50LAotIAkJCQkJCSAgICAg ZG9tYWluX2VudW0pOwotIAotKy8qIExvb2t1cCBhIHN5bWJvbCBvbmx5IGluIHRoZSBmaWxlIHN0 YXRpYyBzY29wZSBvZiBhbGwgdGhlIG9iamZpbGVzLiAgKi8KLSsKLStzdHJ1Y3Qgc3ltYm9sICps b29rdXBfc3RhdGljX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJCQkgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluKTsKLSsKLSsKLSAvKiBsb29rdXAgYSBzeW1ib2wgYnkgbmFtZSwg d2l0aGluIGEgc3BlY2lmaWVkIGJsb2NrICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxv b2t1cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0cnVjdCBibG9jayAqLCBjb25zdCBjaGFyICosCi1J bmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAJ MjAxMC0wNi0yOSAxNzo1NDoxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAJMjAxMC0wNi0yOSAxODoxNzoxNy4wMDAwMDAwMDAg KzAyMDAKLUBAIC0yMTcsNiArMjE3LDcwIEBAIGdkYl9leHBlY3QgewotIGdkYl90ZXN0ICJicmVh ayBCQkI6OkNsYXNzOjp4eXpxIiBcCi0gICAgICJCcmVha3BvaW50LiphdCAkaGV4OiBmaWxlLipu YW1lc3BhY2UuY2MsIGxpbmUgNjhcXC4iCi0gCi0rIyBUZXN0cyBhY2Nlc3Npbmcgc3RhdGljIGVs ZW1lbnRzIGluIG5hbWVzcGFjZSBvZiBvdGhlciBmaWxlLgotKwotK2dkYl90ZXN0ICJ3aGF0aXMg Qzo6Y090aGVyRmlsZVR5cGUiICJ0eXBlID0gc2hvcnQiCi0rZ2RiX3Rlc3QgIndoYXRpcyA6OkM6 OmNPdGhlckZpbGVUeXBlIiAidHlwZSA9IHNob3J0IgotK2dkYl90ZXN0ICJ3aGF0aXMgQzo6Y090 aGVyRmlsZVZhciIgInR5cGUgPSBjb25zdCBDOjpjT3RoZXJGaWxlVHlwZSIKLStnZGJfdGVzdCAi d2hhdGlzIDo6Qzo6Y090aGVyRmlsZVZhciIgInR5cGUgPSBjb25zdCBDOjpjT3RoZXJGaWxlVHlw ZSIKLStnZGJfdGVzdCAicHJpbnQgQzo6Y090aGVyRmlsZVZhciIgIlxcJFxbMC05XF0uKiA9IDMx OSIKLStnZGJfdGVzdCAicHJpbnQgOjpDOjpjT3RoZXJGaWxlVmFyIiAiXFwkXFswLTlcXS4qID0g MzE5IgotKwotK2lmIHtbdGVzdF9jb21waWxlcl9pbmZvIHtnY2MtWzAtM10tKn1dCi0rICAgIHx8 IFt0ZXN0X2NvbXBpbGVyX2luZm8ge2djYy00LVswLTRdLSp9XX0gewotKyAgICAjIFRoZSB0eXBl IGluIGNsYXNzIGlzIG1pc3NpbmcgaW4gb2xkZXIgR0NDcy4KLSsgICAgc2V0dXBfeGZhaWwgKi0q LSogCi0rfQotK2dkYl90ZXN0ICJ3aGF0aXMgQzo6T3RoZXJGaWxlQ2xhc3M6OmNPdGhlckZpbGVD bGFzc1R5cGUiICJ0eXBlID0gc2hvcnQiCi0raWYge1t0ZXN0X2NvbXBpbGVyX2luZm8ge2djYy1b MC0zXS0qfV0KLSsgICAgfHwgW3Rlc3RfY29tcGlsZXJfaW5mbyB7Z2NjLTQtWzAtNF0tKn1dfSB7 Ci0rICAgICMgVGhlIHR5cGUgaW4gY2xhc3MgaXMgbWlzc2luZyBpbiBvbGRlciBHQ0NzLgotKyAg ICBzZXR1cF94ZmFpbCAqLSotKiAKLSt9Ci0rZ2RiX3Rlc3QgIndoYXRpcyA6OkM6Ok90aGVyRmls ZUNsYXNzOjpjT3RoZXJGaWxlQ2xhc3NUeXBlIiAidHlwZSA9IHNob3J0IgotKwotK3NldCB0ZXN0 ICJwcmludCBDOjpPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFyIgotK2dkYl90ZXN0 X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJcXCRcWzAtOVxdLiogPSAzMThcclxu JGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJzdGF0aWMg ZmllbGQgY090aGVyRmlsZUNsYXNzVmFyIGhhcyBiZWVuIG9wdGltaXplZCBvdXRcclxuJGdkYl9w cm9tcHQgJCIgewotKwlzZXR1cF9rZmFpbCAiYysrLzExNzAyIiAiKi0qLSoiCi0rCWZhaWwgJHRl c3QKLSsgICAgfQotK30KLSsKLSsjIEZTRiBHQ0MgPD00LjQgY3JlYXRlcyB1bnF1YWxpZmllZCBE SUUgImNPdGhlckZpbGVDbGFzc1ZhciIgaWdub3JpbmcgdGhlCi0rIyBuYW1lc3BhY2UgdGhlIHNh bWUgd2F5IG9sZGVyIEdEQiBkaWQuCi0rc2V0IHRlc3QgInByaW50IDo6Y090aGVyRmlsZUNsYXNz VmFyIgotK3NldCB0ZXN0MiAicHJpbnQgOjpDOjpPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNs YXNzVmFyIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJObyBz eW1ib2wgXCJjT3RoZXJGaWxlQ2xhc3NWYXJcIiBpbiBjdXJyZW50IGNvbnRleHRcXC5cclxuJGdk Yl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rCi0rCWdkYl90ZXN0X211bHRpcGxlICR0ZXN0 MiAkdGVzdDIgewotKwkgICAgLXJlICJcXCRcWzAtOVxdLiogPSAzMThcclxuJGdkYl9wcm9tcHQg JCIgewotKwkJcGFzcyAkdGVzdDIKLSsJICAgIH0KLSsJICAgIC1yZSAic3RhdGljIGZpZWxkIGNP dGhlckZpbGVDbGFzc1ZhciBoYXMgYmVlbiBvcHRpbWl6ZWQgb3V0XHJcbiRnZGJfcHJvbXB0ICQi IHsKLSsJCXNldHVwX2tmYWlsICJjKysvMTE3MDIiICIqLSotKiIKLSsJCWZhaWwgJHRlc3QyCi0r CSAgICB9Ci0rCX0KLSsKLSsgICAgfQotKyAgICAtcmUgIlxcJFxbMC05XF0uKiA9IDMxOFxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rCWlmIHtbdGVzdF9jb21waWxlcl9pbmZvIHtnY2MtWzAtM10tKn1d Ci0rCSAgICB8fCBbdGVzdF9jb21waWxlcl9pbmZvIHtnY2MtNC1bMC00XS0qfV19IHsKLSsJICAg ICMgRG8gbm90IHBlcm1pdCB0byBYRkFJTCBvbiByZWNlbnQgR0NDcy4KLSsJICAgIHNldHVwX3hm YWlsICotKi0qIAotKwl9Ci0rCWZhaWwgJHRlc3QKLSsKLSsJdW5yZXNvbHZlZCAkdGVzdDIKLSsg ICAgfQotK30KLSsKLSAjIFRlc3QgdG8gc2VlIGlmIHRoZSBhcHByb3ByaWF0ZSBuYW1lc3BhY2Vz IGFyZSBpbiBzY29wZSB3aGVuIHRyeWluZwotICMgdG8gcHJpbnQgb3V0IHN0dWZmIGZyb20gd2l0 aGluIGEgZnVuY3Rpb24gZGVmaW5lZCB3aXRoaW4gYQotICMgbmFtZXNwYWNlLgotQEAgLTI2MCw3 ICszMjQsNyBAQCBnZGJfdGVzdCAicHR5cGUgQzo6TmVzdGVkQ2xhc3MiICJObyBzeW1iCi0gIyBU ZXN0cyBpbnZvbHZpbmcgbXVsdGlwbGUgZmlsZXMKLSAKLSBnZGJfdGVzdCAicHJpbnQgY090aGVy RmlsZSIgIlxcJFxbMC05XF0uKiA9IDMxNiIKLS1nZGJfdGVzdCAicHR5cGUgT3RoZXJGaWxlQ2xh c3MiICJ0eXBlID0gKGNsYXNzIEM6Ok90aGVyRmlsZUNsYXNzIFx7XHJcbiAgcHVibGljOnxzdHJ1 Y3QgQzo6T3RoZXJGaWxlQ2xhc3MgXHspXHJcbiAgICBpbnQgejtcclxuXH0iCi0rZ2RiX3Rlc3Qg InB0eXBlIE90aGVyRmlsZUNsYXNzIiAidHlwZSA9IChjbGFzcyBDOjpPdGhlckZpbGVDbGFzcyBc e1xyXG4gIHB1YmxpYzp8c3RydWN0IEM6Ok90aGVyRmlsZUNsYXNzIFx7KVxyXG4gICAgaW50IHo7 XHJcbi4qXH0iCi0gY3BfdGVzdF9wdHlwZV9jbGFzcyBcCi0gCSJwdHlwZSA6OkM6Ok90aGVyRmls ZUNsYXNzIiAiIiAiY2xhc3MiICJDOjpPdGhlckZpbGVDbGFzcyIgXAotIAl7Ci1JbmRleDogZ2Ri LTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UxLmNjCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZTEuY2MJMjAxMC0wMS0w MSAwODozMjowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL25hbWVzcGFjZTEuY2MJMjAxMC0wNi0yOSAxNzo1Njo0Mi4wMDAwMDAwMDAgKzAyMDAKLUBA IC0yMSw3ICsyMSwxNSBAQCBuYW1lc3BhY2UgQwotICAgY2xhc3MgT3RoZXJGaWxlQ2xhc3Mgewot ICAgcHVibGljOgotICAgICBpbnQgejsKLSsKLSsgICAgdHlwZWRlZiBzaG9ydCBjT3RoZXJGaWxl Q2xhc3NUeXBlOwotKyAgICBzdGF0aWMgY29uc3QgY090aGVyRmlsZUNsYXNzVHlwZSBjT3RoZXJG aWxlQ2xhc3NWYXIgPSAzMTg7Ci0rICAgIGNPdGhlckZpbGVDbGFzc1R5cGUgY090aGVyRmlsZUNs YXNzVmFyX3VzZSAoKTsKLSAgIH07Ci0rICBPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNz VHlwZSBPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVmFyX3VzZSAoKQotKyAgewotKyAg ICByZXR1cm4gY090aGVyRmlsZUNsYXNzVmFyOwotKyAgfQotIAotICAgbmFtZXNwYWNlIHsKLSAg ICAgaW50IGNYT3RoZXJGaWxlID0gMjk7Ci1AQCAtMzUsNiArNDMsMTMgQEAgbmFtZXNwYWNlIEMK LSAgICAgc3RhdGljIE90aGVyRmlsZUNsYXNzICpjID0gbmV3IE90aGVyRmlsZUNsYXNzKCk7Ci0g ICAgIGMtPnogPSBjT3RoZXJGaWxlICsgY1hPdGhlckZpbGU7Ci0gICB9Ci0rCi0rICB0eXBlZGVm IHNob3J0IGNPdGhlckZpbGVUeXBlOwotKyAgc3RhdGljIGNvbnN0IGNPdGhlckZpbGVUeXBlIGNP dGhlckZpbGVWYXIgPSAzMTk7Ci0rICBjT3RoZXJGaWxlVHlwZSBjT3RoZXJGaWxlVmFyX3VzZSAo KQotKyAgewotKyAgICByZXR1cm4gY090aGVyRmlsZVZhcjsKLSsgIH0KLSB9Ci0gCi0gbmFtZXNw YWNlIHsKLUluZGV4OiBnZGItNy4xL2dkYi92YWxvcHMuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjEub3JpZy9nZGIvdmFsb3BzLmMJMjAxMC0wNi0yOSAxNzo1NDoxNi4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4xL2dkYi92YWxvcHMuYwkyMDEwLTA2LTI5IDE4OjE1OjAwLjAwMDAwMDAwMCAr MDIwMAotQEAgLTMyNTMsOSArMzI1MywxNyBAQCB2YWx1ZV9tYXliZV9uYW1lc3BhY2VfZWx0IChj b25zdCBzdHJ1Y3QgCi0gICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gICBzdHJ1Y3QgdmFsdWUgKnJl c3VsdDsKLSAKLS0gIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlKG5hbWVzcGFjZV9u YW1lLCBuYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NlbGVj dGVkX2Jsb2NrICgwKSwgCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQVJf RE9NQUlOKTsKLSsgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChuYW1lc3BhY2Vf bmFtZSwgbmFtZSwKLSsJCQkJICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCksIFZBUl9ET01BSU4p OwotKwotKyAgaWYgKHN5bSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgY2hhciAqY29uY2F0ZW5h dGVkX25hbWUgPSBhbGxvY2EgKHN0cmxlbiAobmFtZXNwYWNlX25hbWUpICsgMgotKwkJCQkJKyBz dHJsZW4gKG5hbWUpICsgMSk7Ci0rCi0rICAgICAgc3ByaW50ZiAoY29uY2F0ZW5hdGVkX25hbWUs ICIlczo6JXMiLCBuYW1lc3BhY2VfbmFtZSwgbmFtZSk7Ci0rICAgICAgc3ltID0gbG9va3VwX3N0 YXRpY19zeW1ib2xfYXV4IChjb25jYXRlbmF0ZWRfbmFtZSwgVkFSX0RPTUFJTik7Ci0rICAgIH0K LSAKLSAgIGlmIChzeW0gPT0gTlVMTCkKLSAgICAgcmV0dXJuIE5VTEw7Ci0tLS0gYS9nZGIvc3lt dGFiLmMKLSsrKyBiL2dkYi9zeW10YWIuYwotQEAgLTExMjIsMTAgKzExMjEsMjEgQEAgbG9va3Vw X3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ss Ci0gICAgIHJldHVybiBzeW07Ci0gCi0gICAvKiBOb3cgc2VhcmNoIGFsbCBzdGF0aWMgZmlsZS1s ZXZlbCBzeW1ib2xzLiAgTm90IHN0cmljdGx5IGNvcnJlY3QsCi0tICAgICBidXQgbW9yZSB1c2Vm dWwgdGhhbiBhbiBlcnJvci4gIERvIHRoZSBzeW10YWJzIGZpcnN0LCB0aGVuIGNoZWNrCi0tICAg ICB0aGUgcHN5bXRhYnMuICBJZiBhIHBzeW10YWIgaW5kaWNhdGVzIHRoZSBleGlzdGVuY2Ugb2Yg dGhlCi0tICAgICBkZXNpcmVkIG5hbWUgYXMgYSBmaWxlLWxldmVsIHN0YXRpYywgdGhlbiBkbyBw c3ltdGFiLXRvLXN5bXRhYgotLSAgICAgY29udmVyc2lvbiBvbiB0aGUgZmx5IGFuZCByZXR1cm4g dGhlIGZvdW5kIHN5bWJvbC4gKi8KLSsgICAgIGJ1dCBtb3JlIHVzZWZ1bCB0aGFuIGFuIGVycm9y LiAgKi8KLSsKLSsgIHJldHVybiBsb29rdXBfc3RhdGljX3N5bWJvbF9hdXggKG5hbWUsIGRvbWFp bik7Ci0rfQotKwotKy8qIFNlYXJjaCBhbGwgc3RhdGljIGZpbGUtbGV2ZWwgc3ltYm9scyBmb3Ig TkFNRSBmcm9tIERPTUFJTi4gIERvIHRoZSBzeW10YWJzCi0rICAgZmlyc3QsIHRoZW4gY2hlY2sg dGhlIHBzeW10YWJzLiAgSWYgYSBwc3ltdGFiIGluZGljYXRlcyB0aGUgZXhpc3RlbmNlIG9mIHRo ZQotKyAgIGRlc2lyZWQgbmFtZSBhcyBhIGZpbGUtbGV2ZWwgc3RhdGljLCB0aGVuIGRvIHBzeW10 YWItdG8tc3ltdGFiIGNvbnZlcnNpb24gb24KLSsgICB0aGUgZmx5IGFuZCByZXR1cm4gdGhlIGZv dW5kIHN5bWJvbC4gKi8KLSsKLStzdHJ1Y3Qgc3ltYm9sICoKLStsb29rdXBfc3RhdGljX3N5bWJv bF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSt7Ci0r ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSAKLSAg IHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgZG9t YWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKCmRpZmYgLS1naXQgYS9nZGItYno2MDIzMTQtcHR5 cGUtY2xhc3MtdHlwZWRlZi0yb2YzLnBhdGNoIGIvZ2RiLWJ6NjAyMzE0LXB0eXBlLWNsYXNzLXR5 cGVkZWYtMm9mMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YwMWViMy4u MDAwMDAwMAotLS0gYS9nZGItYno2MDIzMTQtcHR5cGUtY2xhc3MtdHlwZWRlZi0yb2YzLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMzA4ICswLDAgQEAKLWNvbW1pdCA3NThhMWY3MTQ5Y2I3NDY5 YzdlNmJiMzBjYjU3MjcxNWVlOTBhNmU4Ci1BdXRob3I6IEphbiBLcmF0b2NodmlsIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBNb24gSnVuIDI4IDIwOjM5OjI3IDIwMTAgKzAw MDAKLQotICAgIGdkYi8KLSAgICAJKiBjLXR5cGVwcmludC5jIChjX3R5cGVfcHJpbnRfYmFzZSk6 IEZvciBubyBmaWVsZHMgY2hlY2sgaW5jbHVkZSBhbHNvCi0gICAgCVRZUEVfVFlQRURFRl9GSUVM RF9DT1VOVC4gIFByaW50IG5ldyB0eXBlZGVmcyBzZWN0aW9uLgotICAgIAkqIGR3YXJmMnJlYWQu YyAoc3RydWN0IHR5cGVkZWZfZmllbGRfbGlzdCkKLSAgICAJKHN0cnVjdCBmaWVsZF9pbmZvKSA8 dHlwZWRlZl9maWVsZF9saXN0LCB0eXBlZGVmX2ZpZWxkX2xpc3RfY291bnQ+OiBOZXcuCi0gICAg CShkd2FyZjJfYWRkX3R5cGVkZWYpOiBOZXcuCi0gICAgCShyZWFkX3N0cnVjdHVyZV90eXBlKTog Q2FsbCBkd2FyZjJfYWRkX3R5cGVkZWYgZm9yIERXX1RBR190eXBlZGVmLgotICAgIAlDb3B5IGFs c28gRkkuVFlQRURFRl9GSUVMRF9MSVNULgotICAgIAkqIGdkYnR5cGVzLmggKHN0cnVjdCB0eXBl ZGVmX2ZpZWxkKQotICAgIAkoc3RydWN0IGNwbHVzX3N0cnVjdF90eXBlKSA8dHlwZWRlZl9maWVs ZCwgdHlwZWRlZl9maWVsZF9jb3VudD4KLSAgICAJKFRZUEVfVFlQRURFRl9GSUVMRF9BUlJBWSwg VFlQRV9UWVBFREVGX0ZJRUxELCBUWVBFX1RZUEVERUZfRklFTERfTkFNRSkKLSAgICAJKFRZUEVf VFlQRURFRl9GSUVMRF9UWVBFLCBUWVBFX1RZUEVERUZfRklFTERfQ09VTlQpOiBOZXcuCi0gICAg Ci0gICAgZ2RiL3Rlc3RzdWl0ZS8KLSAgICAJKiBnZGIuY3AvbmFtZXNwYWNlLmV4cCAocHR5cGUg T3RoZXJGaWxlQ2xhc3MgdHlwZWRlZnMpCi0gICAgCShwdHlwZSA6OkM6Ok90aGVyRmlsZUNsYXNz IHR5cGVkZWZzKTogTmV3LgotICAgIAkqIGdkYi5jcC9uYW1lc3BhY2UxLmNjIChDOjpPdGhlckZp bGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVHlwZTIpCi0gICAgCShDOjpPdGhlckZpbGVDbGFzczo6 Y090aGVyRmlsZUNsYXNzVmFyMik6IE5ldy4KLSAgICAJKEM6Ok90aGVyRmlsZUNsYXNzOjpjT3Ro ZXJGaWxlQ2xhc3NWYXJfdXNlKTogVXNlIGFsc28KLSAgICAJY090aGVyRmlsZUNsYXNzVmFyMi4K LSAgICAJKEM6OmNPdGhlckZpbGVUeXBlMiwgQzo6Y090aGVyRmlsZVZhcjIpOiBOZXcuCi0gICAg CShDOjpjT3RoZXJGaWxlVmFyX3VzZSk6IHVzZSBhbHNvIGNPdGhlckZpbGVWYXIyLgotICAgIAkq IGdkYi5jcC91c2VyZGVmLmV4cCAocHR5cGUgJipjKTogUGVybWl0IGFyYml0cmFyeSB0cmFpbGlu ZyB0ZXh0LgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hhbmdlTG9nCi0jIyAt MSw1ICsxLDE5IEBACi0gMjAxMC0wNi0yOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotIAotKwkqIGMtdHlwZXByaW50LmMgKGNfdHlwZV9wcmludF9iYXNlKTog Rm9yIG5vIGZpZWxkcyBjaGVjayBpbmNsdWRlIGFsc28KLSsJVFlQRV9UWVBFREVGX0ZJRUxEX0NP VU5ULiAgUHJpbnQgbmV3IHR5cGVkZWZzIHNlY3Rpb24uCi0rCSogZHdhcmYycmVhZC5jIChzdHJ1 Y3QgdHlwZWRlZl9maWVsZF9saXN0KQotKwkoc3RydWN0IGZpZWxkX2luZm8pIDx0eXBlZGVmX2Zp ZWxkX2xpc3QsIHR5cGVkZWZfZmllbGRfbGlzdF9jb3VudD46IE5ldy4KLSsJKGR3YXJmMl9hZGRf dHlwZWRlZik6IE5ldy4KLSsJKHJlYWRfc3RydWN0dXJlX3R5cGUpOiBDYWxsIGR3YXJmMl9hZGRf dHlwZWRlZiBmb3IgRFdfVEFHX3R5cGVkZWYuCi0rCUNvcHkgYWxzbyBGSS5UWVBFREVGX0ZJRUxE X0xJU1QuCi0rCSogZ2RidHlwZXMuaCAoc3RydWN0IHR5cGVkZWZfZmllbGQpCi0rCShzdHJ1Y3Qg Y3BsdXNfc3RydWN0X3R5cGUpIDx0eXBlZGVmX2ZpZWxkLCB0eXBlZGVmX2ZpZWxkX2NvdW50Pgot KwkoVFlQRV9UWVBFREVGX0ZJRUxEX0FSUkFZLCBUWVBFX1RZUEVERUZfRklFTEQsIFRZUEVfVFlQ RURFRl9GSUVMRF9OQU1FKQotKwkoVFlQRV9UWVBFREVGX0ZJRUxEX1RZUEUsIFRZUEVfVFlQRURF Rl9GSUVMRF9DT1VOVCk6IE5ldy4KLSsKLSsyMDEwLTA2LTI4ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCSogY3AtbmFtZXNwYWNlLmMgKGNwX2xvb2t1 cF9uZXN0ZWRfdHlwZSk6IE5ldyB2YXJpYWJsZQotIAljb25jYXRlbmF0ZWRfbmFtZS4gIFR1cm4g dGhlIGN1cnJlbnQgcmV0dXJuIGNvbmRpdGlvbiBpbnRvIGEgcmV2ZXJzZQotIAlvbmUuICBDYWxs IGFsc28gbG9va3VwX3N0YXRpY19zeW1ib2xfYXV4IG9uIHRoZSBjb25zdHJ1Y3RlZCBxdWFsaWZp ZWQKLUluZGV4OiBnZGItNy4xL2dkYi9jLXR5cGVwcmludC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMS5vcmlnL2dkYi9jLXR5cGVwcmludC5jCTIwMTAtMDYtMjkgMTc6NTQ6MDkuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvYy10eXBlcHJpbnQuYwkyMDEwLTA2LTI5IDE4OjE3OjQ4 LjAwMDAwMDAwMCArMDIwMAotQEAgLTc3NCw3ICs3NzQsOCBAQCBjX3R5cGVfcHJpbnRfYmFzZSAo c3RydWN0IHR5cGUgKnR5cGUsIHN0Ci0gCSAgY3BfdHlwZV9wcmludF9kZXJpdmF0aW9uX2luZm8g KHN0cmVhbSwgdHlwZSk7Ci0gCi0gCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAie1xuIik7 Ci0tCSAgaWYgKChUWVBFX05GSUVMRFMgKHR5cGUpID09IDApICYmIChUWVBFX05GTl9GSUVMRFMg KHR5cGUpID09IDApKQotKwkgIGlmIChUWVBFX05GSUVMRFMgKHR5cGUpID09IDAgJiYgVFlQRV9O Rk5fRklFTERTICh0eXBlKSA9PSAwCi0rCSAgICAgICYmIFRZUEVfVFlQRURFRl9GSUVMRF9DT1VO VCAodHlwZSkgPT0gMCkKLSAJICAgIHsKLSAJICAgICAgaWYgKFRZUEVfU1RVQiAodHlwZSkpCi0g CQlmcHJpbnRmaV9maWx0ZXJlZCAobGV2ZWwgKyA0LCBzdHJlYW0sIF8oIjxpbmNvbXBsZXRlIHR5 cGU+XG4iKSk7Ci1AQCAtMTA2MCw2ICsxMDYxLDI5IEBAIGNfdHlwZV9wcmludF9iYXNlIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3QKLSAJCX0KLSAJICAgIH0KLSAKLSsJICAvKiBQcmludCB0eXBlZGVm cyBkZWZpbmVkIGluIHRoaXMgY2xhc3MuICAqLwotKwotKwkgIGlmIChUWVBFX1RZUEVERUZfRklF TERfQ09VTlQgKHR5cGUpICE9IDApCi0rCSAgICB7Ci0rCSAgICAgIGlmIChUWVBFX05GSUVMRFMg KHR5cGUpICE9IDAgfHwgVFlQRV9ORk5fRklFTERTICh0eXBlKSAhPSAwKQotKwkJZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAiXG4iKTsKLSsKLSsJICAgICAgZm9yIChpID0gMDsgaSA8IFRZUEVf VFlQRURFRl9GSUVMRF9DT1VOVCAodHlwZSk7IGkrKykKLSsJCXsKLSsJCSAgc3RydWN0IHR5cGUg KnRhcmdldCA9IFRZUEVfVFlQRURFRl9GSUVMRF9UWVBFICh0eXBlLCBpKTsKLSsKLSsJCSAgLyog RGVyZWZlcmVuY2UgdGhlIHR5cGVkZWYgZGVjbGFyYXRpb24gaXRzZWxmLiAgKi8KLSsJCSAgZ2Ri X2Fzc2VydCAoVFlQRV9DT0RFICh0YXJnZXQpID09IFRZUEVfQ09ERV9UWVBFREVGKTsKLSsJCSAg dGFyZ2V0ID0gVFlQRV9UQVJHRVRfVFlQRSAodGFyZ2V0KTsKLSsKLSsJCSAgcHJpbnRfc3BhY2Vz X2ZpbHRlcmVkIChsZXZlbCArIDQsIHN0cmVhbSk7Ci0rCQkgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgInR5cGVkZWYgIik7Ci0rCQkgIGNfcHJpbnRfdHlwZSAodGFyZ2V0LCAoY2hhciAqKSBU WVBFX1RZUEVERUZfRklFTERfTkFNRSAodHlwZSwgaSksCi0rCQkJCXN0cmVhbSwgc2hvdyAtIDEs IGxldmVsICsgNCk7Ci0rCQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjtcbiIpOwotKwkJ fQotKwkgICAgfQotKwotIAkgIGZwcmludGZpX2ZpbHRlcmVkIChsZXZlbCwgc3RyZWFtLCAifSIp OwotIAotIAkgIGlmIChUWVBFX0xPQ0FMVFlQRV9QVFIgKHR5cGUpICYmIHNob3cgPj0gMCkKLUlu ZGV4OiBnZGItNy4xL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9y aWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA2LTI5IDE3OjU0OjI4LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA2LTI5IDE4OjE3OjQ4LjAwMDAwMDAw MCArMDIwMAotQEAgLTcyMiw2ICs3MjIsMTYgQEAgc3RydWN0IGZpZWxkX2luZm8KLSAKLSAgICAg LyogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGZuZmllbGRsaXN0cyBhcnJheS4gICovCi0gICAg IGludCBuZm5maWVsZHM7Ci0rCi0rICAgIC8qIHR5cGVkZWZzIGRlZmluZWQgaW5zaWRlIHRoaXMg Y2xhc3MuICBUWVBFREVGX0ZJRUxEX0xJU1QgY29udGFpbnMgaGVhZCBvZgotKyAgICAgICBhIE5V TEwgdGVybWluYXRlZCBsaXN0IG9mIFRZUEVERUZfRklFTERfTElTVF9DT1VOVCBlbGVtZW50cy4g ICovCi0rICAgIHN0cnVjdCB0eXBlZGVmX2ZpZWxkX2xpc3QKLSsgICAgICB7Ci0rCXN0cnVjdCB0 eXBlZGVmX2ZpZWxkIGZpZWxkOwotKwlzdHJ1Y3QgdHlwZWRlZl9maWVsZF9saXN0ICpuZXh0Owot KyAgICAgIH0KLSsgICAgKnR5cGVkZWZfZmllbGRfbGlzdDsKLSsgICAgdW5zaWduZWQgdHlwZWRl Zl9maWVsZF9saXN0X2NvdW50OwotICAgfTsKLSAKLSAvKiBPbmUgaXRlbSBvbiB0aGUgcXVldWUg b2YgY29tcGlsYXRpb24gdW5pdHMgdG8gcmVhZCBpbiBmdWxsIHN5bWJvbHMKLUBAIC01MDc1LDYg KzUwODUsMzkgQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcAotICAg ICB9Ci0gfQotIAotKy8qIEFkZCBhIHR5cGVkZWYgZGVmaW5lZCBpbiB0aGUgc2NvcGUgb2YgdGhl IEZJUCdzIGNsYXNzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2R3YXJmMl9hZGRfdHlwZWRlZiAo c3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0rCQkgICAgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCi0reyAKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3Ut Pm9iamZpbGU7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2gg KG9iamZpbGUpOwotKyAgc3RydWN0IHR5cGVkZWZfZmllbGRfbGlzdCAqbmV3X2ZpZWxkOwotKyAg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSsgIHN0cnVjdCB0eXBlZGVmX2ZpZWxkICpmcDsKLSsg IGNoYXIgKmZpZWxkbmFtZSA9ICIiOwotKwotKyAgLyogQWxsb2NhdGUgYSBuZXcgZmllbGQgbGlz dCBlbnRyeSBhbmQgbGluayBpdCBpbi4gICovCi0rICBuZXdfZmllbGQgPSB4emFsbG9jIChzaXpl b2YgKCpuZXdfZmllbGQpKTsKLSsgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5ld19maWVsZCk7Ci0r Ci0rICBnZGJfYXNzZXJ0IChkaWUtPnRhZyA9PSBEV19UQUdfdHlwZWRlZik7Ci0rCi0rICBmcCA9 ICZuZXdfZmllbGQtPmZpZWxkOwotKwotKyAgLyogR2V0IG5hbWUgb2YgZmllbGQuICAqLwotKyAg ZnAtPm5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rICBpZiAoZnAtPm5hbWUgPT0gTlVM TCkKLSsgICAgcmV0dXJuOwotKwotKyAgZnAtPnR5cGUgPSByZWFkX3R5cGVfZGllIChkaWUsIGN1 KTsKLSsKLSsgIG5ld19maWVsZC0+bmV4dCA9IGZpcC0+dHlwZWRlZl9maWVsZF9saXN0OwotKyAg ZmlwLT50eXBlZGVmX2ZpZWxkX2xpc3QgPSBuZXdfZmllbGQ7Ci0rICBmaXAtPnR5cGVkZWZfZmll bGRfbGlzdF9jb3VudCsrOwotK30KLSsKLSAvKiBDcmVhdGUgdGhlIHZlY3RvciBvZiBmaWVsZHMs IGFuZCBhdHRhY2ggaXQgdG8gdGhlIHR5cGUuICAqLwotIAotIHN0YXRpYyB2b2lkCi1AQCAtNTYw MCw2ICs1NjQzLDggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaQot IAkgICAgICAvKiBDKysgYmFzZSBjbGFzcyBmaWVsZC4gICovCi0gCSAgICAgIGR3YXJmMl9hZGRf ZmllbGQgKCZmaSwgY2hpbGRfZGllLCBjdSk7Ci0gCSAgICB9Ci0rCSAgZWxzZSBpZiAoY2hpbGRf ZGllLT50YWcgPT0gRFdfVEFHX3R5cGVkZWYpCi0rCSAgICBkd2FyZjJfYWRkX3R5cGVkZWYgKCZm aSwgY2hpbGRfZGllLCBjdSk7Ci0gCSAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2Rp ZSk7Ci0gCX0KLSAKLUBAIC01NjczLDYgKzU3MTgsMjggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaQotIAkJfQotIAkgICAgfQotIAl9Ci0rCi0rICAgICAgLyogQ29w eSBmaS50eXBlZGVmX2ZpZWxkX2xpc3QgbGlua2VkIGxpc3QgZWxlbWVudHMgY29udGVudCBpbnRv IHRoZQotKwkgYWxsb2NhdGVkIGFycmF5IFRZUEVfVFlQRURFRl9GSUVMRF9BUlJBWSAodHlwZSku ICAqLwotKyAgICAgIGlmIChmaS50eXBlZGVmX2ZpZWxkX2xpc3QpCi0rCXsKLSsJICBpbnQgaSA9 IGZpLnR5cGVkZWZfZmllbGRfbGlzdF9jb3VudDsKLSsKLSsJICBUWVBFX1RZUEVERUZfRklFTERf QVJSQVkgKHR5cGUpCi0rCSAgICA9IFRZUEVfQUxMT0MgKHR5cGUsIHNpemVvZiAoVFlQRV9UWVBF REVGX0ZJRUxEICh0eXBlLCAwKSkgKiBpKTsKLSsJICBUWVBFX1RZUEVERUZfRklFTERfQ09VTlQg KHR5cGUpID0gaTsKLSsKLSsJICAvKiBSZXZlcnNlIHRoZSBsaXN0IG9yZGVyIHRvIGtlZXAgdGhl IGRlYnVnIGluZm8gZWxlbWVudHMgb3JkZXIuICAqLwotKwkgIHdoaWxlICgtLWkgPj0gMCkKLSsJ ICAgIHsKLSsJICAgICAgc3RydWN0IHR5cGVkZWZfZmllbGQgKmRlc3QsICpzcmM7Ci0rCSAgICAg IAotKwkgICAgICBkZXN0ID0gJlRZUEVfVFlQRURFRl9GSUVMRCAodHlwZSwgaSk7Ci0rCSAgICAg IHNyYyA9ICZmaS50eXBlZGVmX2ZpZWxkX2xpc3QtPmZpZWxkOwotKwkgICAgICBmaS50eXBlZGVm X2ZpZWxkX2xpc3QgPSBmaS50eXBlZGVmX2ZpZWxkX2xpc3QtPm5leHQ7Ci0rCSAgICAgICpkZXN0 ID0gKnNyYzsKLSsJICAgIH0KLSsJfQotICAgICB9Ci0gCi0gICBxdWlya19nY2NfbWVtYmVyX2Z1 bmN0aW9uX3BvaW50ZXIgKHR5cGUsIGN1LT5vYmpmaWxlKTsKLUluZGV4OiBnZGItNy4xL2dkYi9n ZGJ0eXBlcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIw MTAtMDYtMjkgMTc6NTQ6MTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvZ2RidHlw ZXMuaAkyMDEwLTA2LTI5IDE4OjE4OjI5LjAwMDAwMDAwMCArMDIwMAotQEAgLTk0OCw2ICs5NDgs MTkgQEAgc3RydWN0IGNwbHVzX3N0cnVjdF90eXBlCi0gICAgICAgIG1lbWJlciBmdW5jdGlvbnMg b3IgdmlydHVhbCBiYXNlIGNsYXNzZXMuICBNaW51cyBvbmUgaWYgbm90Ci0gICAgICAgIGR5bmFt aWMuICBaZXJvIGlmIG5vdCB5ZXQgY29tcHV0ZWQuICAqLwotICAgICBpbnQgaXNfZHluYW1pYyA6 IDI7Ci0rCi0rICAgIC8qIHR5cGVkZWZzIGRlZmluZWQgaW5zaWRlIHRoaXMgY2xhc3MuICBUWVBF REVGX0ZJRUxEIHBvaW50cyB0byBhbiBhcnJheSBvZgotKyAgICAgICBUWVBFREVGX0ZJRUxEX0NP VU5UIGVsZW1lbnRzLiAgKi8KLSsgICAgc3RydWN0IHR5cGVkZWZfZmllbGQKLSsgICAgICB7Ci0r CS8qIFVucXVhbGlmaWVkIG5hbWUgdG8gYmUgcHJlZml4ZWQgYnkgb3duaW5nIGNsYXNzIHF1YWxp ZmllZCBuYW1lLiAgKi8KLSsJY29uc3QgY2hhciAqbmFtZTsKLSsKLSsJLyogVHlwZSB0aGlzIHR5 cGVkZWYgbmFtZWQgTkFNRSByZXByZXNlbnRzLiAgKi8KLSsJc3RydWN0IHR5cGUgKnR5cGU7Ci0r ICAgICAgfQotKyAgICAqdHlwZWRlZl9maWVsZDsKLSsgICAgdW5zaWduZWQgdHlwZWRlZl9maWVs ZF9jb3VudDsKLSAgIH07Ci0gCi0gLyogU3RydWN0IHVzZWQgZm9yIHJhbmtpbmcgYSBmdW5jdGlv biBmb3Igb3ZlcmxvYWQgcmVzb2x1dGlvbiAqLwotQEAgLTExODIsNiArMTE5NSwxNyBAQCBleHRl cm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Ci0gI2RlZmluZSBUWVBFX0xPQ0FM VFlQRV9GSUxFKHRoaXN0eXBlKSAoVFlQRV9DUExVU19TUEVDSUZJQyh0aGlzdHlwZSktPmxvY2Fs dHlwZV9wdHItPmZpbGUpCi0gI2RlZmluZSBUWVBFX0xPQ0FMVFlQRV9MSU5FKHRoaXN0eXBlKSAo VFlQRV9DUExVU19TUEVDSUZJQyh0aGlzdHlwZSktPmxvY2FsdHlwZV9wdHItPmxpbmUpCi0gCi0r I2RlZmluZSBUWVBFX1RZUEVERUZfRklFTERfQVJSQVkodGhpc3R5cGUpIFwKLSsgIFRZUEVfQ1BM VVNfU1BFQ0lGSUMgKHRoaXN0eXBlKS0+dHlwZWRlZl9maWVsZAotKyNkZWZpbmUgVFlQRV9UWVBF REVGX0ZJRUxEKHRoaXN0eXBlLCBuKSBcCi0rICBUWVBFX0NQTFVTX1NQRUNJRklDICh0aGlzdHlw ZSktPnR5cGVkZWZfZmllbGRbbl0KLSsjZGVmaW5lIFRZUEVfVFlQRURFRl9GSUVMRF9OQU1FKHRo aXN0eXBlLCBuKSBcCi0rICBUWVBFX1RZUEVERUZfRklFTEQgKHRoaXN0eXBlLCBuKS5uYW1lCi0r I2RlZmluZSBUWVBFX1RZUEVERUZfRklFTERfVFlQRSh0aGlzdHlwZSwgbikgXAotKyAgVFlQRV9U WVBFREVGX0ZJRUxEICh0aGlzdHlwZSwgbikudHlwZQotKyNkZWZpbmUgVFlQRV9UWVBFREVGX0ZJ RUxEX0NPVU5UKHRoaXN0eXBlKSBcCi0rICBUWVBFX0NQTFVTX1NQRUNJRklDICh0aGlzdHlwZSkt PnR5cGVkZWZfZmllbGRfY291bnQKLSsKLSAjZGVmaW5lIFRZUEVfSVNfT1BBUVVFKHRoaXN0eXBl KSAoKChUWVBFX0NPREUgKHRoaXN0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUKSB8fCAgICAgICAg XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRZUEVfQ09ERSAodGhpc3R5 cGUpID09IFRZUEVfQ09ERV9VTklPTikpICAgICAgICAmJiBcCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChUWVBFX05GSUVMRFMgKHRoaXN0eXBlKSA9PSAwKSAgICAgICAgICAg ICAgICAgICAgICYmIFwKLUluZGV4OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVz cGFjZS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbmFtZXNwYWNlLmV4cAkyMDEwLTA2LTI5IDE4OjE3OjE3LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLmV4cAkyMDEwLTA2LTI5IDE4 OjE4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTMzMiw2ICszMzIsMjEgQEAgY3BfdGVzdF9wdHlw ZV9jbGFzcyBcCi0gCX0KLSBnZGJfdGVzdCAicHR5cGUgQzo6T3RoZXJGaWxlQ2xhc3MiICJObyBz eW1ib2wgXCJPdGhlckZpbGVDbGFzc1wiIGluIG5hbWVzcGFjZSBcIkM6OkNcIi4iCi0gCi0rIyBU ZXN0IGNsYXNzIHR5cGVkZWZzIHByaW50aW5nLgotK3NldCBleHBlY3QgInR5cGUgPSBjbGFzcyBD OjpPdGhlckZpbGVDbGFzcyBce1xyXG4uKlxyXG4gKnR5cGVkZWYgc2hvcnQgY090aGVyRmlsZUNs YXNzVHlwZTtcclxuICp0eXBlZGVmIGxvbmcgY090aGVyRmlsZUNsYXNzVHlwZTI7XHJcblx9Igot K2lmIHtbdGVzdF9jb21waWxlcl9pbmZvIHtnY2MtWzAtM10tKn1dCi0rICAgIHx8IFt0ZXN0X2Nv bXBpbGVyX2luZm8ge2djYy00LVswLTRdLSp9XX0gewotKyAgICAjIFRoZSB0eXBlIGluIGNsYXNz IGlzIG1pc3NpbmcgaW4gb2xkZXIgR0NDcy4KLSsgICAgc2V0dXBfeGZhaWwgKi0qLSogCi0rfQot K2dkYl90ZXN0ICJwdHlwZSBPdGhlckZpbGVDbGFzcyIgJGV4cGVjdCAicHR5cGUgT3RoZXJGaWxl Q2xhc3MgdHlwZWRlZnMiCi0raWYge1t0ZXN0X2NvbXBpbGVyX2luZm8ge2djYy1bMC0zXS0qfV0K LSsgICAgfHwgW3Rlc3RfY29tcGlsZXJfaW5mbyB7Z2NjLTQtWzAtNF0tKn1dfSB7Ci0rICAgICMg VGhlIHR5cGUgaW4gY2xhc3MgaXMgbWlzc2luZyBpbiBvbGRlciBHQ0NzLgotKyAgICBzZXR1cF94 ZmFpbCAqLSotKiAKLSt9Ci0rZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6T3RoZXJGaWxlQ2xhc3MiICRl eHBlY3QgInB0eXBlIDo6Qzo6T3RoZXJGaWxlQ2xhc3MgdHlwZWRlZnMiCi0rCi0gIyBTb21lIGFu b255bW91cyBuYW1lc3BhY2UgdGVzdHMuCi0gCi0gZ2RiX3Rlc3QgInByaW50IGNYIiAiXFwkXFsw LTlcXS4qID0gNiIKLUluZGV4OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFj ZTEuY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bmFtZXNwYWNlMS5jYwkyMDEwLTA2LTI5IDE3OjU2OjQyLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlMS5jYwkyMDEwLTA2LTI5IDE4OjE3 OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTIzLDEyICsyMywxNCBAQCBuYW1lc3BhY2UgQwotICAg ICBpbnQgejsKLSAKLSAgICAgdHlwZWRlZiBzaG9ydCBjT3RoZXJGaWxlQ2xhc3NUeXBlOwotKyAg ICB0eXBlZGVmIGxvbmcgY090aGVyRmlsZUNsYXNzVHlwZTI7Ci0gICAgIHN0YXRpYyBjb25zdCBj T3RoZXJGaWxlQ2xhc3NUeXBlIGNPdGhlckZpbGVDbGFzc1ZhciA9IDMxODsKLSsgICAgc3RhdGlj IGNvbnN0IGNPdGhlckZpbGVDbGFzc1R5cGUyIGNPdGhlckZpbGVDbGFzc1ZhcjIgPSAzMjA7Ci0g ICAgIGNPdGhlckZpbGVDbGFzc1R5cGUgY090aGVyRmlsZUNsYXNzVmFyX3VzZSAoKTsKLSAgIH07 Ci0gICBPdGhlckZpbGVDbGFzczo6Y090aGVyRmlsZUNsYXNzVHlwZSBPdGhlckZpbGVDbGFzczo6 Y090aGVyRmlsZUNsYXNzVmFyX3VzZSAoKQotICAgewotLSAgICByZXR1cm4gY090aGVyRmlsZUNs YXNzVmFyOwotKyAgICByZXR1cm4gY090aGVyRmlsZUNsYXNzVmFyICsgY090aGVyRmlsZUNsYXNz VmFyMjsKLSAgIH0KLSAKLSAgIG5hbWVzcGFjZSB7Ci1AQCAtNDUsMTAgKzQ3LDEyIEBAIG5hbWVz cGFjZSBDCi0gICB9Ci0gCi0gICB0eXBlZGVmIHNob3J0IGNPdGhlckZpbGVUeXBlOwotKyAgdHlw ZWRlZiBsb25nIGNPdGhlckZpbGVUeXBlMjsKLSAgIHN0YXRpYyBjb25zdCBjT3RoZXJGaWxlVHlw ZSBjT3RoZXJGaWxlVmFyID0gMzE5OwotKyAgc3RhdGljIGNvbnN0IGNPdGhlckZpbGVUeXBlMiBj T3RoZXJGaWxlVmFyMiA9IDMyMTsKLSAgIGNPdGhlckZpbGVUeXBlIGNPdGhlckZpbGVWYXJfdXNl ICgpCi0gICB7Ci0tICAgIHJldHVybiBjT3RoZXJGaWxlVmFyOwotKyAgICByZXR1cm4gY090aGVy RmlsZVZhciArIGNPdGhlckZpbGVWYXIyOwotICAgfQotIH0KLSAKLUluZGV4OiBnZGItNy4xL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3VzZXJkZWYuZXhwCTIwMTAtMDYtMjkgMTc6NTQ6MTEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC91c2VyZGVm LmV4cAkyMDEwLTA2LTI5IDE4OjE3OjQ4LjAwMDAwMDAwMCArMDIwMAotQEAgLTE1NCw3ICsxNTQs NyBAQCBnZGJfdGVzdCAiYnJlYWsgQTI6OidvcGVyYXRvciArJyIgIi4qQnJlCi0gZ2RiX3Rlc3Qg InByaW50IGMiICJcXFwkXFswLTlcXSogPSB7bSA9IHt6ID0gLip9fSIKLSBnZGJfdGVzdCAicHJp bnQgKmMiICJcXFwkXFswLTlcXSogPSBcXChNZW1iZXIgJlxcKSBAJGhleDoge3ogPSAuKn0iCi0g Z2RiX3Rlc3QgInByaW50ICYqYyIgIlxcXCRcWzAtOVxdKiA9IFxcKE1lbWJlciBcXCpcXCkgJGhl eCIKLS1nZGJfdGVzdCAicHR5cGUgJipjIiAidHlwZSA9IChzdHJ1Y3R8Y2xhc3MpIE1lbWJlciB7 KFxbXHJcbiBcXStwdWJsaWM6KT9cW1xyXG4gXF0raW50IHo7XFtcclxuXF0rfSAmXFwqIgotK2dk Yl90ZXN0ICJwdHlwZSAmKmMiICJ0eXBlID0gKHN0cnVjdHxjbGFzcykgTWVtYmVyIHsoXFtcclxu IFxdK3B1YmxpYzopP1xbXHJcbiBcXStpbnQgejtcW1xyXG5cXS4qfSAmXFwqIgotIAotIGdkYl90 ZXN0ICJwcmludCBvcGVyYXRvcj09IChtZW0xLCBtZW0yKSIgIiA9IGZhbHNlIgotIGdkYl90ZXN0 ICJwcmludCBvcGVyYXRvcj09IChtZW0xLCBtZW0xKSIgIiA9IHRydWUiCgpkaWZmIC0tZ2l0IGEv Z2RiLWJ6NjAyMzE0LXB0eXBlLWNsYXNzLXR5cGVkZWYtM29mMy5wYXRjaCBiL2dkYi1iejYwMjMx NC1wdHlwZS1jbGFzcy10eXBlZGVmLTNvZjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGYwYWQ1MGQuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjAyMzE0LXB0eXBlLWNsYXNzLXR5 cGVkZWYtM29mMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLWNvbW1pdCA0 NzdjMTM1OWIyMTdjZGMwNTJhN2M5ZjgzY2FlOWM4OTQzOTY4OTRjCi1BdXRob3I6IEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBNb24gSnVuIDI4IDIy OjAzOjMxIDIwMTAgKzAwMDAKLQotICAgIGdkYi8KLSAgICAJKiBkd2FyZjJyZWFkLmMgKHJlYWRf c3RydWN0dXJlX3R5cGUpIDxmaS50eXBlZGVmX2ZpZWxkX2xpc3Q+OiBDYWxsCi0gICAgCUFMTE9D QVRFX0NQTFVTX1NUUlVDVF9UWVBFLgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIv Q2hhbmdlTG9nCi0jIyAtMSwzICsxLDggQEAKLSsyMDEwLTA2LTI4ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZHdhcmYycmVhZC5jIChyZWFkX3N0 cnVjdHVyZV90eXBlKSA8ZmkudHlwZWRlZl9maWVsZF9saXN0PjogQ2FsbAotKwlBTExPQ0FURV9D UExVU19TVFJVQ1RfVFlQRS4KLSsKLSAyMDEwLTA2LTI4ICBQaGlsIE11bGRvb24gIDxwbXVsZG9v bkByZWRoYXQuY29tPgotICAgICAgICAgICAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNv bT4KLSAgICAgICAgICAgICBUaGlhZ28gSnVuZyBCYXVlcm1hbm4gIDxiYXVlcm1hbkBici5pYm0u Y29tPgotIyMgLTI3LDggKzMyLDYgQEAKLSAJKiBweXRob24vcHktaW5mZXJpb3IuYzogTmV3IEZp bGUuCi0gCSogcHl0aG9uL3B5LWluZnRocmVhZC5jOiBOZXcgRmlsZS4KLSAKLS0KLS0KLSAyMDEw LTA2LTI4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0g CSogYy10eXBlcHJpbnQuYyAoY190eXBlX3ByaW50X2Jhc2UpOiBGb3Igbm8gZmllbGRzIGNoZWNr IGluY2x1ZGUgYWxzbwotLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJl YWQuYwotQEAgLTUzMjcsNiArNTMyNyw3IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAJewotIAkgIGludCBpID0gZmku dHlwZWRlZl9maWVsZF9saXN0X2NvdW50OwotIAotKwkgIEFMTE9DQVRFX0NQTFVTX1NUUlVDVF9U WVBFICh0eXBlKTsKLSAJICBUWVBFX1RZUEVERUZfRklFTERfQVJSQVkgKHR5cGUpCi0gCSAgICA9 IFRZUEVfQUxMT0MgKHR5cGUsIHNpemVvZiAoVFlQRV9UWVBFREVGX0ZJRUxEICh0eXBlLCAwKSkg KiBpKTsKLSAJICBUWVBFX1RZUEVERUZfRklFTERfQ09VTlQgKHR5cGUpID0gaTsKCmRpZmYgLS1n aXQgYS9nZGItYno2MDYxODUtb2JzdGFjay0xb2Y1LnBhdGNoIGIvZ2RiLWJ6NjA2MTg1LW9ic3Rh Y2stMW9mNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI4NzliYi4uMDAw MDAwMAotLS0gYS9nZGItYno2MDYxODUtb2JzdGFjay0xb2Y1LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjE0ICswLDAgQEAKLWNvbW1pdCA3OGMxNDRlOGMzYWU3YmIzNmQ2MzJmNmJmYWFhYWQ5 Yzk3MTk5Y2U2Ci1BdXRob3I6IGNtb2xsZXIgPGNtb2xsZXI+Ci1EYXRlOiAgIFR1ZSBBcHIgMjAg MjA6MjI6MDkgMjAxMCArMDAwMAotCi0gICAgUFIgMTA4NjcKLSAgICAqIGNwLXZhbHByaW50LmMg KGdsb2JhbCk6IEFkZGluZyBuZXcgc3RhdGljIGFycmF5IHJlY3Vyc2lvbgotICAgIGRldGVjdGlv biBvYnN0YWNrLgotICAgIChjcF9wcmludF92YWx1ZV9maWVsZHMsIGNwX3ByaW50X3N0YXRpY19m aWVsZCk6IEFkZGVkIG5ldyBzdGF0aWMKLSAgICBhcnJheSByZWN1cnNpb24gZGV0ZWN0aW9uIGNv ZGUuCi0gICAgKiBnZGIuY3AvTWFrZWZpbGUuaW4gIChFWEVDVVRBQkxFUyk6IEFkZGVkIHByMTA2 ODcKLSAgICAqIGdkYi5jcC9wcjEwNjg3LmNjOiBOZXcgZmlsZS4KLSAgICAqIGdkYi5jcC9wcjEw Njg3LmV4cDogTmV3IGZpbGUKLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5n ZUxvZwotIyMgLTEsMyArMSwxMiBAQAotKzIwMTAtMDQtMjAgIENocmlzIE1vbGxlciAgPGNtb2xs ZXJAcmVkaGF0LmNvbT4KLSsJCi0rCVBSIDEwODY3Ci0rCi0rCSogY3AtdmFscHJpbnQuYyAoZ2xv YmFsKTogQWRkaW5nIG5ldyBzdGF0aWMgYXJyYXkgcmVjdXJzaW9uCi0rCWRldGVjdGlvbiBvYnN0 YWNrLgotKwkoY3BfcHJpbnRfdmFsdWVfZmllbGRzLCBjcF9wcmludF9zdGF0aWNfZmllbGQpOiBB ZGRlZCBuZXcgc3RhdGljCi0rCWFycmF5IHJlY3Vyc2lvbiBkZXRlY3Rpb24gY29kZS4KLSsKLSAy MDEwLTA0LTIwICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KLSAKLSAJKiBpMzg2 LWxpbnV4LXRkZXAuYyAoaTM4Nl9saW51eF9yZWdzZXRfc2VjdGlvbnMpOiBTaXplIG9mIHRoZQot SW5kZXg6IGdkYi03LjEvZ2RiL2NwLXZhbHByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4x Lm9yaWcvZ2RiL2NwLXZhbHByaW50LmMJMjAxMC0wMi0wOCAxOTowNDoxNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4xL2dkYi9jcC12YWxwcmludC5jCTIwMTAtMDYtMjggMjA6MjE6NTMuMDAw MDAwMDAwICswMjAwCi1AQCAtNzEsNiArNzEsNyBAQCBzaG93X3N0YXRpY19maWVsZF9wcmludCAo c3RydWN0IHVpX2ZpbGUgCi0gCi0gc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfdmJf b2JzdGFjazsKLSBzdGF0aWMgc3RydWN0IG9ic3RhY2sgZG9udF9wcmludF9zdGF0bWVtX29ic3Rh Y2s7Ci0rc3RhdGljIHN0cnVjdCBvYnN0YWNrIGRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNr OwotIAotIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2NwX3ZhbHByaW50ICh2b2lkKTsKLSAKLUBA IC0xNTUsMTIgKzE1NiwxNyBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0 eXBlCi0gewotICAgaW50IGksIGxlbiwgbl9iYXNlY2xhc3NlczsKLSAgIGludCBmaWVsZHNfc2Vl biA9IDA7Ci0rICBzdGF0aWMgaW50IGxhc3Rfc2V0X3JlY3Vyc2UgPSAtMTsKLSAKLSAgIENIRUNL X1RZUEVERUYgKHR5cGUpOwotICAgCi0tICBpZiAocmVjdXJzZSA9PSAwCi0tICAgICAgJiYgb2Jz dGFja19vYmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKSA+IDApCi0tICAg IG9ic3RhY2tfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBOVUxMKTsKLSsgIGlm IChyZWN1cnNlID09IDApCi0rICAgIHsKLSsgICAgICBpZiAob2JzdGFja19vYmplY3Rfc2l6ZSAo JmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKSA+IDApCi0rCW9ic3RhY2tfZnJlZSAoJmRvbnRf cHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBOVUxMKTsKLSsgICAgICBpZiAob2JzdGFja19vYmplY3Rf c2l6ZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrKSA+IDApCi0rCW9ic3RhY2tfZnJl ZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrLCBOVUxMKTsKLSsgICAgfQotIAotICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAieyIpOwotICAgbGVuID0gVFlQRV9ORklFTERTICh0 eXBlKTsKLUBAIC0xODEsMTIgKzE4NywyMCBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVj dCB0eXBlICp0eXBlCi0gICBlbHNlCi0gICAgIHsKLSAgICAgICB2b2lkICpzdGF0bWVtX29ic3Rh Y2tfdG9wID0gTlVMTDsKLSsgICAgICB2b2lkICpzdGF0X2FycmF5X29ic3RhY2tfdG9wID0gTlVM TDsKLSAgICAgICAKLSAgICAgICBpZiAoZG9udF9wcmludF9zdGF0bWVtID09IDApCi0gCXsKLSAJ ICAvKiBTZXQgdGhlIGN1cnJlbnQgcHJpbnRlZC1zdGF0aWNzIHN0YWNrIHRvcC4gICovCi0gCSAg c3RhdG1lbV9vYnN0YWNrX3RvcAotIAkgICAgPSBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJp bnRfc3RhdG1lbV9vYnN0YWNrKTsKLSsKLSsJICBpZiAobGFzdF9zZXRfcmVjdXJzZSAhPSByZWN1 cnNlKQotKwkgICAgewotKwkgICAgICBzdGF0X2FycmF5X29ic3RhY2tfdG9wCi0rCQk9IG9ic3Rh Y2tfbmV4dF9mcmVlICgmZG9udF9wcmludF9zdGF0X2FycmF5X29ic3RhY2spOwotKwkgICAgICBs YXN0X3NldF9yZWN1cnNlID0gcmVjdXJzZTsKLSsJICAgIH0KLSAJfQotIAotICAgICAgIGZvciAo aSA9IG5fYmFzZWNsYXNzZXM7IGkgPCBsZW47IGkrKykKLUBAIC0zMDcsOSArMzIxLDE2IEBAIGNw X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUKLSAKLSAgICAgICBpZiAoZG9u dF9wcmludF9zdGF0bWVtID09IDApCi0gCXsKLS0JICAvKiBJbiBlZmZlY3QsIGEgcG9wIG9mIHRo ZSBwcmludGVkLXN0YXRpY3Mgc3RhY2suICAqLwotIAkgIGlmIChvYnN0YWNrX29iamVjdF9zaXpl ICgmZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2spID4gMCkgCi0gCSAgICBvYnN0YWNrX2ZyZWUg KCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaywgc3RhdG1lbV9vYnN0YWNrX3RvcCk7Ci0rCi0r CSAgaWYgKGxhc3Rfc2V0X3JlY3Vyc2UgIT0gcmVjdXJzZSkKLSsJICAgIHsKLSsJICAgICAgaWYg KG9ic3RhY2tfb2JqZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjaykgPiAw KSAKLSsJCW9ic3RhY2tfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrLAotKwkJ CSAgICAgIHN0YXRfYXJyYXlfb2JzdGFja190b3ApOwotKwkgICAgICBsYXN0X3NldF9yZWN1cnNl ID0gLTE7Ci0rCSAgICB9Ci0gCX0KLSAKLSAgICAgICBpZiAob3B0aW9ucy0+cHJldHR5KQotQEAg LTUwOCw2ICs1MjksNyBAQCBjcF9wcmludF9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBl Ci0gCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi0g ewotICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKLSsgIAotICAgaWYgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKLSAgICAgewotICAgICAgIENPUkVfQURE UiAqZmlyc3RfZG9udF9wcmludDsKLUBAIC01NDIsNiArNTY0LDMyIEBAIGNwX3ByaW50X3N0YXRp Y19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLSsg IGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSkKLSsgICAgewotKyAgICAg IHN0cnVjdCB0eXBlICoqZmlyc3RfZG9udF9wcmludDsKLSsgICAgICBpbnQgaTsKLSsgICAgICBz dHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKLSsKLSsg ICAgICBmaXJzdF9kb250X3ByaW50Ci0rCT0gKHN0cnVjdCB0eXBlICoqKSBvYnN0YWNrX2Jhc2Ug KCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjayk7Ci0rICAgICAgaSA9IG9ic3RhY2tfb2Jq ZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjaykKLSsJLyBzaXplb2YgKENP UkVfQUREUik7Ci0rCi0rICAgICAgd2hpbGUgKC0taSA+PSAwKQotKwl7Ci0rCSAgaWYgKHRhcmdl dF90eXBlID09IGZpcnN0X2RvbnRfcHJpbnRbaV0pCi0rCSAgICB7Ci0rCSAgICAgIGZwdXRzX2Zp bHRlcmVkICgiPHNhbWUgYXMgc3RhdGljIG1lbWJlciBvZiBhbiBhbHJlYWR5IgotKwkJCSAgICAg ICIgc2VlbiB0eXBlPiIsCi0rCQkJICAgICAgc3RyZWFtKTsKLSsJICAgICAgcmV0dXJuOwotKwkg ICAgfQotKwl9Ci0rCi0rICAgICAgb2JzdGFja19ncm93ICgmZG9udF9wcmludF9zdGF0X2FycmF5 X29ic3RhY2ssIChjaGFyICopICZ0YXJnZXRfdHlwZSwKLSsJCSAgICBzaXplb2YgKHN0cnVjdCB0 eXBlICopKTsKLSsgICAgfQotKwotICAgb3B0cyA9ICpvcHRpb25zOwotICAgb3B0cy5kZXJlZl9y ZWYgPSAwOwotICAgdmFsX3ByaW50ICh0eXBlLCB2YWx1ZV9jb250ZW50c19hbGwgKHZhbCksIAot QEAgLTY3Miw2ICs3MjAsNyBAQCBTaG93IHByaW50aW5nIG9mIG9iamVjdCdzIGRlcml2ZWQgdHlw ZSBiCi0gCQkJICAgc2hvd19vYmplY3RwcmludCwKLSAJCQkgICAmc2V0cHJpbnRsaXN0LCAmc2hv d3ByaW50bGlzdCk7Ci0gCi0rICBvYnN0YWNrX2JlZ2luICgmZG9udF9wcmludF9zdGF0X2FycmF5 X29ic3RhY2ssIDMyICogc2l6ZW9mIChDT1JFX0FERFIpKTsKLSAgIG9ic3RhY2tfYmVnaW4gKCZk b250X3ByaW50X3N0YXRtZW1fb2JzdGFjaywgMzIgKiBzaXplb2YgKENPUkVfQUREUikpOwotICAg b2JzdGFja19iZWdpbiAoJmRvbnRfcHJpbnRfdmJfb2JzdGFjaywgMzIgKiBzaXplb2YgKHN0cnVj dCB0eXBlICopKTsKLSB9Ci1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjEw Njg3LmNjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjEwNjg3LmNj CTIwMTAtMDYtMjggMjA6MjE6NTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDI0IEBACi0r Y2xhc3MgdmVjMiAKLSt7Ci0rICBwdWJsaWM6Ci0rICAgIHZlYzIoKSB7IF92WzBdID0gX3ZbMV0g PSAwOyB9Ci0rICAgIHZlYzIoaW50IHgsIGludCB5KSB7IF92WzBdID0geDsgX3ZbMV0gPSB5OyB9 Ci0rICAgIHN0YXRpYyB2ZWMyIGF4aXNbMl07Ci0rICAgIHN0YXRpYyB2ZWMyIGF4aXM2WzZdOwot KyAgcHJpdmF0ZToKLSsgICAgaW50IF92WzJdOwotK307Ci0rCi0rdmVjMiB2ZWMyOjpheGlzWzJd ID0geyB2ZWMyKDEsMCksIHZlYzIoMCwxKSB9OwotK3ZlYzIgdmVjMjo6YXhpczZbNl0gPSB7IAot KyAgdmVjMigxLDApLCB2ZWMyKDAsMSksCi0rICB2ZWMyKDIsMCksIHZlYzIoMCwyKSwKLSsgIHZl YzIoMywwKSwgdmVjMigwLDMpIAotK307Ci0rCi0raW50IG1haW4oaW50IGFyZ2MsIGNoYXIqYXJn dltdKQotK3sKLSsgIHZlYzIgYTsKLSsKLSsgIHJldHVybiAwOyAgLy8gbWFya2VyCi0rfQotSW5k ZXg6IGdkYi03LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMDY4Ny5leHAKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTA2ODcuZXhwCTIwMTAtMDYtMjggMjA6MjE6 NTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDMxIEBACi0rI0NvcHlyaWdodCAyMDEwIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgcHIxMDY4NwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmNjCi0raWYgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNy Y2ZpbGUge2RlYnVnIGMrK31dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9f bWFpbl0gdGhlbiB7Ci0rICAgIGZhaWwgIkNhbid0IHJ1biB0byBtYWluIgotKyAgICByZXR1cm4K LSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1hcmtlciJdCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlciIKLSsKLStnZGJfdGVzdCAicCBhIiAi e3N0YXRpYyBheGlzID0ge3tzdGF0aWMgYXhpcyA9IDxzYW1lIGFzIHN0YXRpYyBtZW1iZXIgb2Yg YW4gYWxyZWFkeS4qIgotKwoKZGlmZiAtLWdpdCBhL2dkYi1iejYwNjE4NS1vYnN0YWNrLTJvZjUu cGF0Y2ggYi9nZGItYno2MDYxODUtb2JzdGFjay0yb2Y1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBjOGIxY2I0Li4wMDAwMDAwCi0tLSBhL2dkYi1iejYwNjE4NS1vYnN0YWNr LTJvZjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotY29tbWl0IGQ1NGY1 NjcxZTE5MGE1YzBjYThmZDFmZjA3MDM3MmJmMjBlYjQyYTgKLUF1dGhvcjogY21vbGxlciA8Y21v bGxlcj4KLURhdGU6ICAgV2VkIEFwciAyMSAxNzozMzo1MSAyMDEwICswMDAwCi0KLSAgICBQUiA5 MTY3Ci0gICAgKiBjcC12YWxwcmludC5jIChjcF9wcmludF92YWx1ZV9maWVsZHMpOiBSZXBsYWNl ZCBvYnN0YWNrX2Jhc2UoKQotICAgIG1ldGhvZCBvZiBwb3BwaW5nIHJlY3Vyc2lvbi1kZXRlY3Rp b24gc3RhY2sgd2l0aCBhIG1ldGhvZCBiYXNlZCBvbgotICAgIG9ic3RhY2tfb2JqZWN0X3NpemUo KS4KLSAgICAqIGdkYi5jcC9NYWtlZmlsZS5pbiAoRVhFQ1VUQUJMRVMpOiBBZGRlZCBwcjkxNjcu Ci0gICAgKiBnZGIuY3AvcHI5MTY3LmNjOiBOZXcgZmlsZS4KLSAgICAqIGdkYi5jcC9wcjkxNjcu ZXhwOiBOZXcgZmlsZS4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5nZUxv ZwotIyMgLTEsMyArMSwxMCBAQAotKzIwMTAtMDQtMjEgIENocmlzIE1vbGxlciAgPGNtb2xsZXJA cmVkaGF0LmNvbT4KLSsKLSsJUFIgOTE2NwotKwkqIGNwLXZhbHByaW50LmMgKGNwX3ByaW50X3Zh bHVlX2ZpZWxkcyk6IFJlcGxhY2VkIG9ic3RhY2tfYmFzZSgpCi0rICAgICAgICBtZXRob2Qgb2Yg cG9wcGluZyByZWN1cnNpb24tZGV0ZWN0aW9uIHN0YWNrIHdpdGggYSBtZXRob2QgYmFzZWQgb24K LSsgICAgICAgIG9ic3RhY2tfb2JqZWN0X3NpemUoKS4KLSsKLSAyMDEwLTA0LTIxICBQaWVycmUg TXVsbGVyICA8bXVsbGVyQGljcy51LXN0cmFzYmcuZnI+Ci0gCi0gCVBSIHBhc2NhbC8xMTQ5Mi4K LSMjIC0zMTg0LDcgKzMxOTEsNyBAQAotIAlhZGRyX2JpdC4gIEFkanVzdCBMT0FEX0FERFIgc2ln biBmb3IgY3Jvc3MtYXJjaCBpbmZlcmlvcnMuCi0gCi0gMjAxMC0wMi0xNyAgVHJpc3RhbiBHaW5n b2xkICA8Z2luZ29sZEBhZGFjb3JlLmNvbT4KLS0JICAgIFBldHIgSGx1esOtbiA8cGV0ci5obHV6 aW5AZ21haWwuY29tPgotKwkgICAgUGV0ciBIbHV677+9biA8cGV0ci5obHV6aW5AZ21haWwuY29t PgotIAotIAkqIGF2ci10ZGVwLmMgKGF2cl9zY2FuX3Byb2xvZ3VlKTogQ29udmVydCBhbiBpZiBz dGF0ZW1lbnQgdG8gYQotIAlnZGJfYXNzZXJ0LiAgRml4IGluZm8tPnNpemUgZm9yIFNJRyBwcm9s b2d1ZS4KLUluZGV4OiBnZGItNy4xL2dkYi9jcC12YWxwcmludC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMS5vcmlnL2dkYi9jcC12YWxwcmludC5jCTIwMTAtMDYtMjggMjA6MjE6NTMuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvY3AtdmFscHJpbnQuYwkyMDEwLTA2LTI4IDIwOjIy OjE2LjAwMDAwMDAwMCArMDIwMAotQEAgLTE4NiwxNCArMTg2LDEzIEBAIGNwX3ByaW50X3ZhbHVl X2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUKLSAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiPE5vIGRhdGEgZmllbGRzPiIpOwotICAgZWxzZQotICAgICB7Ci0tICAgICAgdm9pZCAqc3Rh dG1lbV9vYnN0YWNrX3RvcCA9IE5VTEw7Ci0rICAgICAgaW50IG9ic3RhY2tfaW5pdGlhbF9zaXpl ID0gMDsKLSAgICAgICB2b2lkICpzdGF0X2FycmF5X29ic3RhY2tfdG9wID0gTlVMTDsKLSAgICAg ICAKLSAgICAgICBpZiAoZG9udF9wcmludF9zdGF0bWVtID09IDApCi0gCXsKLS0JICAvKiBTZXQg dGhlIGN1cnJlbnQgcHJpbnRlZC1zdGF0aWNzIHN0YWNrIHRvcC4gICovCi0tCSAgc3RhdG1lbV9v YnN0YWNrX3RvcAotLQkgICAgPSBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1l bV9vYnN0YWNrKTsKLSsJICBvYnN0YWNrX2luaXRpYWxfc2l6ZSA9Ci0rCSAgICBvYnN0YWNrX29i amVjdF9zaXplICgmZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2spOwotIAotIAkgIGlmIChsYXN0 X3NldF9yZWN1cnNlICE9IHJlY3Vyc2UpCi0gCSAgICB7Ci1AQCAtMzIxLDggKzMyMCwxOSBAQCBj cF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlCi0gCi0gICAgICAgaWYgKGRv bnRfcHJpbnRfc3RhdG1lbSA9PSAwKQotIAl7Ci0tCSAgaWYgKG9ic3RhY2tfb2JqZWN0X3NpemUg KCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjaykgPiAwKSAKLS0JICAgIG9ic3RhY2tfZnJlZSAo JmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBzdGF0bWVtX29ic3RhY2tfdG9wKTsKLSsJICBp bnQgb2JzdGFja19maW5hbF9zaXplID0KLSsgICAgICAgICAgIG9ic3RhY2tfb2JqZWN0X3NpemUg KCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFjayk7Ci0rCi0rCSAgaWYgKG9ic3RhY2tfZmluYWxf c2l6ZSA+IG9ic3RhY2tfaW5pdGlhbF9zaXplKSB7Ci0rCSAgICAvKiBJbiBlZmZlY3QsIGEgcG9w IG9mIHRoZSBwcmludGVkLXN0YXRpY3Mgc3RhY2suICAqLwotKwotKwkgICAgdm9pZCAqZnJlZV90 b19wdHIgPQotKwkgICAgICBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9v YnN0YWNrKSAtCi0rCSAgICAgIChvYnN0YWNrX2ZpbmFsX3NpemUgLSBvYnN0YWNrX2luaXRpYWxf c2l6ZSk7Ci0rCi0rCSAgICBvYnN0YWNrX2ZyZWUgKCZkb250X3ByaW50X3N0YXRtZW1fb2JzdGFj aywKLSsJCQkgIGZyZWVfdG9fcHRyKTsKLSsJICB9Ci0gCi0gCSAgaWYgKGxhc3Rfc2V0X3JlY3Vy c2UgIT0gcmVjdXJzZSkKLSAJICAgIHsKLUBAIC01NTUsNyArNTY1LDYgQEAgY3BfcHJpbnRfc3Rh dGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZQotICAgICAgIGFkZHIgPSB2YWx1ZV9hZGRyZXNz ICh2YWwpOwotICAgICAgIG9ic3RhY2tfZ3JvdyAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNr LCAoY2hhciAqKSAmYWRkciwKLSAJCSAgICBzaXplb2YgKENPUkVfQUREUikpOwotLQotICAgICAg IENIRUNLX1RZUEVERUYgKHR5cGUpOwotICAgICAgIGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAodHlw ZSwgdmFsdWVfZW5jbG9zaW5nX3R5cGUgKHZhbCksCi0gCQkJICAgICB2YWx1ZV9jb250ZW50c19h bGwgKHZhbCksCi1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjkxNjcuY2MK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByOTE2Ny5jYwkyMDEwLTA2 LTI4IDIwOjIyOjE2LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwzNiBAQAotKyNpbmNsdWRl IDxpb3N0cmVhbT4KLSsKLSt0ZW1wbGF0ZTx0eXBlbmFtZSBEQVRBPgotK3N0cnVjdCBBVEIKLSt7 Ci0rICAgIGludCBkYXRhOwotKyAgICBBVEIoKSA6IGRhdGEoMCkge30KLSt9OwotKwotKwotK3Rl bXBsYXRlPHR5cGVuYW1lIERBVEEsCi0rCSB0eXBlbmFtZSBEZXJpdmVkVHlwZSA+Ci0rY2xhc3Mg QSA6IHB1YmxpYyBBVEI8REFUQT4KLSt7Ci0rcHVibGljOgotKyAgICBzdGF0aWMgRGVyaXZlZFR5 cGUgY29uc3QgREVGQVVMVF9JTlNUQU5DRTsKLSt9OwotKwotK3RlbXBsYXRlPHR5cGVuYW1lIERB VEEsIHR5cGVuYW1lIERlcml2ZWRUeXBlPgotK2NvbnN0IERlcml2ZWRUeXBlIEE8REFUQSwgRGVy aXZlZFR5cGU+OjpERUZBVUxUX0lOU1RBTkNFOwotKwotK2NsYXNzIEIgOiBwdWJsaWMgQTxpbnQs IEI+Ci0rewotKyAgICAKLSt9OwotKwotK2ludCBtYWluKCkKLSt7Ci0rICAgIEIgYjsKLSsgICAg Ly8gSWYgdGhpcyBpZi1ibG9jayBpcyByZW1vdmVkIHRoZW4gR0RCIHNoYWxsCi0rICAgIC8vIG5v dCBpbmZpbml0ZWx5IHJlY3Vyc2Ugd2hlbiB0cnlpbmcgdG8gcHJpbnQgYi4KLSsKLSsgICAgcmV0 dXJuIDA7CQkvLyBtYXJrZXIKLSt9Ci0rCi0rCi1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRl L2dkYi5jcC9wcjkxNjcuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9wcjkxNjcuZXhwCTIwMTAtMDYtMjggMjA6MjI6MTYuMDAwMDAwMDAwICswMjAwCi1AQCAtMCww ICsxLDMxIEBACi0rI0NvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgcHI5 MTY3Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKLStpZiBbcHJlcGFyZV9mb3JfdGVzdGlu ZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgYysrfV0gewotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgZmFpbCAiQ2Fu J3QgcnVuIHRvIG1haW4iCi0rICAgIHJldHVybgotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAibWFya2VyIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi bWFya2VyIgotKwotK2dkYl90ZXN0ICJwIGIiICJ7PEE8aW50LCBCPj4gPSB7PEFUQjxpbnQ+PiA9 IHtkYXRhID0gMH0sIHN0YXRpYyBERUZBVUxUX0lOU1RBTkNFID0gPG9wdGltaXplZCBvdXQ+fSwg PE5vIGRhdGEgZmllbGRzPn0iCi0rCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjA2MTg1LW9ic3RhY2st M29mNS5wYXRjaCBiL2dkYi1iejYwNjE4NS1vYnN0YWNrLTNvZjUucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDQwOTJjMDAuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjA2MTg1LW9i c3RhY2stM29mNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLWNvbW1pdCA0 MDdjYjE5MmRjYWMyNjAyYWViYWE3ZTI2MjQxOWFkYjU4MGVjY2E2Ci1BdXRob3I6IGNtb2xsZXIg PGNtb2xsZXI+Ci1EYXRlOiAgIFRodSBBcHIgMjIgMjA6MTI6MDYgMjAxMCArMDAwMAotCi0gICAg KiBjcC12YWxwcmludC5jIChjcF9wcmludF92YWx1ZV9maWVsZHMpOiBSZXBsYWNlZCBvYnN0YWNr X2Jhc2UoKQotICAgIG1ldGhvZCBvZiBwb3BwaW5nIHJlY3Vyc2lvbi1kZXRlY3Rpb24gc3RhY2sg d2l0aCBhIG1ldGhvZCBiYXNlZCBvbgotICAgIG9ic3RhY2tfb2JqZWN0X3NpemUoKS4gIChTaW1p bGFyIHRvIHRoZSBQUjkxNjcgcGF0Y2ggYmVsb3csIGJ1dCBmb3IKLSAgICB0aGUgc3RhdGljIGFy cmF5IG9ic3RhY2sgcmF0aGVyIHRoYW4gdGhlIHN0YXRpYyBtZW1iZXIgb2JzdGFjay4pCi0KLSMj IyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDMgKzEsMTAgQEAK LSsyMDEwLTA0LTIyICBDaHJpcyBNb2xsZXIgIDxjbW9sbGVyQHJlZGhhdC5jb20+Ci0rCi0rCSog Y3AtdmFscHJpbnQuYyAoY3BfcHJpbnRfdmFsdWVfZmllbGRzKTogUmVwbGFjZWQgb2JzdGFja19i YXNlKCkKLSsgICAgICAgIG1ldGhvZCBvZiBwb3BwaW5nIHJlY3Vyc2lvbi1kZXRlY3Rpb24gc3Rh Y2sgd2l0aCBhIG1ldGhvZCBiYXNlZCBvbgotKyAgICAgICAgb2JzdGFja19vYmplY3Rfc2l6ZSgp LiAgKFNpbWlsYXIgdG8gdGhlIFBSOTE2NyBwYXRjaCBiZWxvdywgYnV0IGZvcgotKwl0aGUgc3Rh dGljIGFycmF5IG9ic3RhY2sgcmF0aGVyIHRoYW4gdGhlIHN0YXRpYyBtZW1iZXIgb2JzdGFjay4p Ci0rCi0gMjAxMC0wNC0yMiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotIAotIAkq IGFtZDY0LWxpbnV4LW5hdC5jIChhbWQ2NF9saW51eF9ncmVnc2V0NjRfcmVnX29mZnNldCk6IFJl bW92ZWQuCi0tLS0gYS9nZGIvY3AtdmFscHJpbnQuYwotKysrIGIvZ2RiL2NwLXZhbHByaW50LmMK LUBAIC0xODYsMTggKzE4NiwxOCBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBl ICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAotICAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICI8Tm8gZGF0YSBmaWVsZHM+Iik7Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBpbnQg b2JzdGFja19pbml0aWFsX3NpemUgPSAwOwotLSAgICAgIHZvaWQgKnN0YXRfYXJyYXlfb2JzdGFj a190b3AgPSBOVUxMOwotKyAgICAgIGludCBzdGF0bWVtX29ic3RhY2tfaW5pdGlhbF9zaXplID0g MDsKLSsgICAgICBpbnQgc3RhdF9hcnJheV9vYnN0YWNrX2luaXRpYWxfc2l6ZSA9IDA7Ci0gICAg ICAgCi0gICAgICAgaWYgKGRvbnRfcHJpbnRfc3RhdG1lbSA9PSAwKQotIAl7Ci0tCSAgb2JzdGFj a19pbml0aWFsX3NpemUgPQotKwkgIHN0YXRtZW1fb2JzdGFja19pbml0aWFsX3NpemUgPQotIAkg ICAgb2JzdGFja19vYmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKTsKLSAK LSAJICBpZiAobGFzdF9zZXRfcmVjdXJzZSAhPSByZWN1cnNlKQotIAkgICAgewotLQkgICAgICBz dGF0X2FycmF5X29ic3RhY2tfdG9wCi0tCQk9IG9ic3RhY2tfbmV4dF9mcmVlICgmZG9udF9wcmlu dF9zdGF0X2FycmF5X29ic3RhY2spOwotKwkgICAgICBzdGF0X2FycmF5X29ic3RhY2tfaW5pdGlh bF9zaXplID0KLSsJCW9ic3RhY2tfb2JqZWN0X3NpemUgKCZkb250X3ByaW50X3N0YXRfYXJyYXlf b2JzdGFjayk7Ci0gCSAgICAgIGxhc3Rfc2V0X3JlY3Vyc2UgPSByZWN1cnNlOwotIAkgICAgfQot IAl9Ci1AQCAtMzIzLDEyICszMjMsMTIgQEAgY3BfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnJlYWxfdHlwZSwKLSAJICBpbnQgb2JzdGFja19maW5h bF9zaXplID0KLSAgICAgICAgICAgIG9ic3RhY2tfb2JqZWN0X3NpemUgKCZkb250X3ByaW50X3N0 YXRtZW1fb2JzdGFjayk7Ci0gCi0tCSAgaWYgKG9ic3RhY2tfZmluYWxfc2l6ZSA+IG9ic3RhY2tf aW5pdGlhbF9zaXplKSB7Ci0rCSAgaWYgKG9ic3RhY2tfZmluYWxfc2l6ZSA+IHN0YXRtZW1fb2Jz dGFja19pbml0aWFsX3NpemUpIHsKLSAJICAgIC8qIEluIGVmZmVjdCwgYSBwb3Agb2YgdGhlIHBy aW50ZWQtc3RhdGljcyBzdGFjay4gICovCi0gCi0gCSAgICB2b2lkICpmcmVlX3RvX3B0ciA9Ci0g CSAgICAgIG9ic3RhY2tfbmV4dF9mcmVlICgmZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2spIC0K LS0JICAgICAgKG9ic3RhY2tfZmluYWxfc2l6ZSAtIG9ic3RhY2tfaW5pdGlhbF9zaXplKTsKLSsJ ICAgICAgKG9ic3RhY2tfZmluYWxfc2l6ZSAtIHN0YXRtZW1fb2JzdGFja19pbml0aWFsX3NpemUp OwotIAotIAkgICAgb2JzdGFja19mcmVlICgmZG9udF9wcmludF9zdGF0bWVtX29ic3RhY2ssCi0g CQkJICBmcmVlX3RvX3B0cik7Ci1AQCAtMzM2LDkgKzMzNiwxOCBAQCBjcF9wcmludF92YWx1ZV9m aWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLAotIAotIAkg IGlmIChsYXN0X3NldF9yZWN1cnNlICE9IHJlY3Vyc2UpCi0gCSAgICB7Ci0tCSAgICAgIGlmIChv YnN0YWNrX29iamVjdF9zaXplICgmZG9udF9wcmludF9zdGF0X2FycmF5X29ic3RhY2spID4gMCkg Ci0tCQlvYnN0YWNrX2ZyZWUgKCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjaywKLS0JCQkg ICAgICBzdGF0X2FycmF5X29ic3RhY2tfdG9wKTsKLSsJICAgICAgaW50IG9ic3RhY2tfZmluYWxf c2l6ZSA9Ci0rCQlvYnN0YWNrX29iamVjdF9zaXplICgmZG9udF9wcmludF9zdGF0X2FycmF5X29i c3RhY2spOwotKwkgICAgICAKLSsJICAgICAgaWYgKG9ic3RhY2tfZmluYWxfc2l6ZSA+IHN0YXRf YXJyYXlfb2JzdGFja19pbml0aWFsX3NpemUpCi0rCQl7Ci0rCQkgIHZvaWQgKmZyZWVfdG9fcHRy ID0KLSsJCSAgICBvYnN0YWNrX25leHRfZnJlZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0 YWNrKSAtCi0rCQkgICAgKG9ic3RhY2tfZmluYWxfc2l6ZSAtIHN0YXRfYXJyYXlfb2JzdGFja19p bml0aWFsX3NpemUpOwotKwotKwkJICBvYnN0YWNrX2ZyZWUgKCZkb250X3ByaW50X3N0YXRfYXJy YXlfb2JzdGFjaywKLSsJCQkJZnJlZV90b19wdHIpOwotKwkJfQotIAkgICAgICBsYXN0X3NldF9y ZWN1cnNlID0gLTE7Ci0gCSAgICB9Ci0gCX0KCmRpZmYgLS1naXQgYS9nZGItYno2MDYxODUtb2Jz dGFjay00b2Y1LnBhdGNoIGIvZ2RiLWJ6NjA2MTg1LW9ic3RhY2stNG9mNS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE1M2EyYi4uMDAwMDAwMAotLS0gYS9nZGItYno2MDYx ODUtb2JzdGFjay00b2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotY29t bWl0IDc0NDczNTU1MGQ0YTRmZDZkNGJlNDA3NzYwNjlkNzk5ZGNhNWVlMzkKLUF1dGhvcjogVWxy aWNoIFdlaWdhbmQgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci1EYXRlOiAgIE1vbiBKdW4gMTQgMTY6 MDk6NTUgMjAxMCArMDAwMAotCi0gICAgCSogY3AtdmFscHJpbnQuYyAoY3BfcHJpbnRfc3RhdGlj X2ZpZWxkKTogTWVtYmVycyBvZgotICAgIAlkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjayBh cmUgb2YgdHlwZSAic3RydWN0IHR5cGUgKiIuCi0gICAgCShfaW5pdGlhbGl6ZV9jcF92YWxwcmlu dCk6IExpa2V3aXNlLgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hhbmdlTG9n Ci0jIyAtMSw1ICsxLDExIEBACi0gMjAxMC0wNi0xNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2Fu ZEBkZS5pYm0uY29tPgotIAotKwkqIGNwLXZhbHByaW50LmMgKGNwX3ByaW50X3N0YXRpY19maWVs ZCk6IE1lbWJlcnMgb2YKLSsJZG9udF9wcmludF9zdGF0X2FycmF5X29ic3RhY2sgYXJlIG9mIHR5 cGUgInN0cnVjdCB0eXBlICoiLgotKwkoX2luaXRpYWxpemVfY3BfdmFscHJpbnQpOiBMaWtld2lz ZS4KLSsKLSsyMDEwLTA2LTE0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+ Ci0rCi0gCSogZnJhbWUuYyAoZnJhbWVfcmVnaXN0ZXJfdW53aW5kKTogRG8gbm90IGFjY2VzcyBj b250ZW50cwotIAlvZiAib3B0aW1pemVkIG91dCIgdW53b3VuZCByZWdpc3RlciB2YWx1ZS4KLSAK LS0tLSBhL2dkYi9jcC12YWxwcmludC5jCi0rKysgYi9nZGIvY3AtdmFscHJpbnQuYwotQEAgLTYx NSw3ICs2MTUsNyBAQCBjcF9wcmludF9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLAot ICAgICAgIGZpcnN0X2RvbnRfcHJpbnQKLSAJPSAoc3RydWN0IHR5cGUgKiopIG9ic3RhY2tfYmFz ZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrKTsKLSAgICAgICBpID0gb2JzdGFja19v YmplY3Rfc2l6ZSAoJmRvbnRfcHJpbnRfc3RhdF9hcnJheV9vYnN0YWNrKQotLQkvIHNpemVvZiAo Q09SRV9BRERSKTsKLSsJLyBzaXplb2YgKHN0cnVjdCB0eXBlICopOwotIAotICAgICAgIHdoaWxl ICgtLWkgPj0gMCkKLSAJewotQEAgLTc2NCw3ICs3NjQsNyBAQCBTaG93IHByaW50aW5nIG9mIG9i amVjdCdzIGRlcml2ZWQgdHlwZSBiYXNlZCBvbiB2dGFibGUgaW5mby4iKSwgTlVMTCwKLSAJCQkg ICBzaG93X29iamVjdHByaW50LAotIAkJCSAgICZzZXRwcmludGxpc3QsICZzaG93cHJpbnRsaXN0 KTsKLSAKLS0gIG9ic3RhY2tfYmVnaW4gKCZkb250X3ByaW50X3N0YXRfYXJyYXlfb2JzdGFjaywg MzIgKiBzaXplb2YgKENPUkVfQUREUikpOwotKyAgb2JzdGFja19iZWdpbiAoJmRvbnRfcHJpbnRf c3RhdF9hcnJheV9vYnN0YWNrLCAzMiAqIHNpemVvZiAoc3RydWN0IHR5cGUgKikpOwotICAgb2Jz dGFja19iZWdpbiAoJmRvbnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrLCAzMiAqIHNpemVvZiAoQ09S RV9BRERSKSk7Ci0gICBvYnN0YWNrX2JlZ2luICgmZG9udF9wcmludF92Yl9vYnN0YWNrLCAzMiAq IHNpemVvZiAoc3RydWN0IHR5cGUgKikpOwotIH0KCmRpZmYgLS1naXQgYS9nZGItYno2MDYxODUt b2JzdGFjay01b2Y1LnBhdGNoIGIvZ2RiLWJ6NjA2MTg1LW9ic3RhY2stNW9mNS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE3MWU1Ni4uMDAwMDAwMAotLS0gYS9nZGItYno2 MDYxODUtb2JzdGFjay01b2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAK LWNvbW1pdCA0N2M4Yzc2NGE5YmU2ZDAyM2VjYTQ1MDMzNmU2ZDlkZTE2OTcwZmMwCi1BdXRob3I6 IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBNb24g SnVuIDI4IDE2OjU5OjQzIDIwMTAgKzAwMDAKLQotICAgIGdkYi8KLSAgICAJKiBjcC12YWxwcmlu dC5jIChjcF9wcmludF92YWx1ZV9maWVsZHMpIDxyZWN1cnNlID09IDA+OiBDYWxsCi0gICAgCW9i c3RhY2tfYmVnaW4gYWZ0ZXIgZWFjaCBvYnN0YWNrX2ZyZWUuCi0gICAgCi0gICAgZ2RiL3Rlc3Rz dWl0ZS8KLSAgICAJKiBnZGIuY3Avc3RhdGljLXByaW50LXF1aXQuZXhwLCBnZGIuY3Avc3RhdGlj LXByaW50LXF1aXQuY2M6IE5ldy4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0No YW5nZUxvZwotIyMgLTEsMyArMSw4IEBACi0rMjAxMC0wNi0yOCAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGNwLXZhbHByaW50LmMgKGNwX3ByaW50 X3ZhbHVlX2ZpZWxkcykgPHJlY3Vyc2UgPT0gMD46IENhbGwKLSsJb2JzdGFja19iZWdpbiBhZnRl ciBlYWNoIG9ic3RhY2tfZnJlZS4KLSsKLSAyMDEwLTA2LTI3ICBEb3VnIEV2YW5zICA8ZGplQGdv b2dsZS5jb20+Ci0gCi0gCSogdmFsdWUuYyAodmFsdWVfc3RhdGljX2ZpZWxkKTogVXNlIGBzd2l0 Y2gnIGluc3RlYWQgb2YgYGlmJy4KLSMjIC0xMiwyNyArMTcsMjcgQEAKLSAKLSAyMDEwLTA2LTI1 ICBQYXVsIEhpbGZpbmdlciAgPGhpbGZpbmdlckBhZGFjb3JlLmNvbT4KLSAKLS0gICAgICAgICog ZGVmcy5oIChtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCk6IERlY2xhcmUuCi0tICAgICAgICAo c2V0X2Rpc3BsYXlfdGltZSk6IERlY2xhcmUuCi0tICAgICAgICAoc2V0X2Rpc3BsYXlfc3BhY2Up OiBEZWNsYXJlLgotLSAgICAgICAgKiBldmVudC10b3AuYyAoY29tbWFuZF9oYW5kbGVyKTogVXNl IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLgotLSAgICAgICAgKiBtYWluLmMgKGRpc3BsYXlf dGltZSwgZGlzcGxheV9zcGFjZSk6IE1vdmUgZGVmaW5pdGlvbnMgdG8gdXRpbHMuYy4KLS0gICAg ICAgIChjYXB0dXJlZF9tYWluKTogVXNlIG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwIHRvIGdl dCBzdGFydC11cAotLSAgICAgICAgc3RhdGlzdGljcy4KLS0gICAgICAgIFVzZSBzZXRfZGlzcGxh eV90aW1lIGFuZCBzZXRfZGlzcGxheV9zcGFjZSBmb3IgcHJvY2Vzc2luZyBPUFRfU1RBVElTVElD UwotLSAgICAgICAgY2FzZS4KLS0gICAgICAgICogbWFpbnQuYyAobWFpbnRlbmFuY2VfdGltZV9k aXNwbGF5KTogVXNlIHNldF9kaXNwbGF5X3RpbWUuCi0tICAgICAgICAobWFpbnRlbmFuY2Vfc3Bh Y2VfZGlzcGxheSk6IFVzZSBzZXRfZGlzcGxheV9zcGFjZS4KLS0gICAgICAgICogdG9wLmMgKGV4 ZWN1dGVfY29tbWFuZCk6IFJlbW92ZSBvYnNvbGV0ZSAnbWFpbnQgdGltZScgY29kZS4KLS0gICAg ICAgIChjb21tYW5kX2xvb3ApOiBVc2UgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAuCi0tICAg ICAgICAqIHV0aWxzLmMgKHN0cnVjdCBjbWRfc3RhdHMpOiBTdHJ1Y3R1cmUgZm9yIHN0b3Jpbmcg aW5pdGlhbCB0aW1lCi0tICAgICAgICBhbmQgc3BhY2UgdXNhZ2UuCi0tICAgICAgICAoZGlzcGxh eV90aW1lLCBkaXNwbGF5X3NwYWNlKTogTW92ZSBkZWZpbml0aW9ucyBoZXJlIGZyb20gdXRpbHMu Yy4KLS0gICAgICAgIChzZXRfZGlzcGxheV90aW1lKTogTmV3IGZ1bmN0aW9uLgotLSAgICAgICAg KHNldF9kaXNwbGF5X3NwYWNlKTogTmV3IGZ1bmN0aW9uLgotLSAgICAgICAgKG1ha2VfY29tbWFu ZF9zdGF0c19jbGVhbnVwKTogTmV3IGZ1bmN0aW9uLgotLSAgICAgICAgKHJlcG9ydF9jb21tYW5k X3N0YXRzKTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbiBmb3IKLS0gICAgICAgIG1ha2VfY29tbWFu ZF9zdGF0c19jbGVhbnVwLgotKwkqIGRlZnMuaCAobWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAp OiBEZWNsYXJlLgotKwkoc2V0X2Rpc3BsYXlfdGltZSk6IERlY2xhcmUuCi0rCShzZXRfZGlzcGxh eV9zcGFjZSk6IERlY2xhcmUuCi0rCSogZXZlbnQtdG9wLmMgKGNvbW1hbmRfaGFuZGxlcik6IFVz ZSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4KLSsJKiBtYWluLmMgKGRpc3BsYXlfdGltZSwg ZGlzcGxheV9zcGFjZSk6IE1vdmUgZGVmaW5pdGlvbnMgdG8gdXRpbHMuYy4KLSsJKGNhcHR1cmVk X21haW4pOiBVc2UgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAgdG8gZ2V0IHN0YXJ0LXVwCi0r CXN0YXRpc3RpY3MuCi0rCVVzZSBzZXRfZGlzcGxheV90aW1lIGFuZCBzZXRfZGlzcGxheV9zcGFj ZSBmb3IgcHJvY2Vzc2luZyBPUFRfU1RBVElTVElDUwotKwljYXNlLgotKwkqIG1haW50LmMgKG1h aW50ZW5hbmNlX3RpbWVfZGlzcGxheSk6IFVzZSBzZXRfZGlzcGxheV90aW1lLgotKwkobWFpbnRl bmFuY2Vfc3BhY2VfZGlzcGxheSk6IFVzZSBzZXRfZGlzcGxheV9zcGFjZS4KLSsJKiB0b3AuYyAo ZXhlY3V0ZV9jb21tYW5kKTogUmVtb3ZlIG9ic29sZXRlICdtYWludCB0aW1lJyBjb2RlLgotKwko Y29tbWFuZF9sb29wKTogVXNlIG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLgotKwkqIHV0aWxz LmMgKHN0cnVjdCBjbWRfc3RhdHMpOiBTdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgaW5pdGlhbCB0aW1l Ci0rCWFuZCBzcGFjZSB1c2FnZS4KLSsJKGRpc3BsYXlfdGltZSwgZGlzcGxheV9zcGFjZSk6IE1v dmUgZGVmaW5pdGlvbnMgaGVyZSBmcm9tIHV0aWxzLmMuCi0rCShzZXRfZGlzcGxheV90aW1lKTog TmV3IGZ1bmN0aW9uLgotKwkoc2V0X2Rpc3BsYXlfc3BhY2UpOiBOZXcgZnVuY3Rpb24uCi0rCSht YWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCk6IE5ldyBmdW5jdGlvbi4KLSsJKHJlcG9ydF9jb21t YW5kX3N0YXRzKTogTmV3IGF1eGlsaWFyeSBmdW5jdGlvbiBmb3IKLSsJbWFrZV9jb21tYW5kX3N0 YXRzX2NsZWFudXAuCi0gCi0gMjAxMC0wNi0yNSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBk ZS5pYm0uY29tPgotIAotIyMgLTYxMDMsNyArNjEwOCw3IEBACi0gCi0gCVBSIGdkYi85MDY3Ci0g CSogY3AtdmFscHJpbnQuYyAoY3BfcHJpbnRfdmFsdWVfZmllbGRzKSBGaXggdXNlIG9mIG9ic3Rh Y2tzLgotLQljcF9wcmludF9zdGF0aWNfZmllbGQpICBGaXggdXNlIG9mIG9ic3RhY2tzLgotKwko Y3BfcHJpbnRfc3RhdGljX2ZpZWxkKSAgRml4IHVzZSBvZiBvYnN0YWNrcy4KLSAKLSAyMDEwLTAy LTA4ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0tLS0gYS9nZGIv Y3AtdmFscHJpbnQuYwotKysrIGIvZ2RiL2NwLXZhbHByaW50LmMKLUBAIC0xNjQsMTAgKzE2NCwx OSBAQCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlw ZSAqcmVhbF90eXBlLAotICAgCi0gICBpZiAocmVjdXJzZSA9PSAwKQotICAgICB7Ci0rICAgICAg LyogQW55IG9iamVjdCBjYW4gYmUgbGVmdCBvbiBvYnN0YWNrcyBvbmx5IGR1cmluZyBhbiB1bmV4 cGVjdGVkIGVycm9yLiAgKi8KLSsKLSAgICAgICBpZiAob2JzdGFja19vYmplY3Rfc2l6ZSAoJmRv bnRfcHJpbnRfc3RhdG1lbV9vYnN0YWNrKSA+IDApCi0tCW9ic3RhY2tfZnJlZSAoJmRvbnRfcHJp bnRfc3RhdG1lbV9vYnN0YWNrLCBOVUxMKTsKLSsJewotKwkgIG9ic3RhY2tfZnJlZSAoJmRvbnRf cHJpbnRfc3RhdG1lbV9vYnN0YWNrLCBOVUxMKTsKLSsJICBvYnN0YWNrX2JlZ2luICgmZG9udF9w cmludF9zdGF0bWVtX29ic3RhY2ssIDMyICogc2l6ZW9mIChDT1JFX0FERFIpKTsKLSsJfQotICAg ICAgIGlmIChvYnN0YWNrX29iamVjdF9zaXplICgmZG9udF9wcmludF9zdGF0X2FycmF5X29ic3Rh Y2spID4gMCkKLS0Jb2JzdGFja19mcmVlICgmZG9udF9wcmludF9zdGF0X2FycmF5X29ic3RhY2ss IE5VTEwpOwotKwl7Ci0rCSAgb2JzdGFja19mcmVlICgmZG9udF9wcmludF9zdGF0X2FycmF5X29i c3RhY2ssIE5VTEwpOwotKwkgIG9ic3RhY2tfYmVnaW4gKCZkb250X3ByaW50X3N0YXRfYXJyYXlf b2JzdGFjaywKLSsJCQkgMzIgKiBzaXplb2YgKHN0cnVjdCB0eXBlICopKTsKLSsJfQotICAgICB9 Ci0gCi0gICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ7Iik7Ci0jIyMgYS9nZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZwotIyMjIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLSMjIC0xLDMgKzEs NyBAQAotKzIwMTAtMDYtMjggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KLSsKLSsJKiBnZGIuY3Avc3RhdGljLXByaW50LXF1aXQuZXhwLCBnZGIuY3Avc3RhdGlj LXByaW50LXF1aXQuY2M6IE5ldy4KLSsKLSAyMDEwLTA2LTI4ICBEb3VnIEV2YW5zICA8ZGplQGdv b2dsZS5jb20+Ci0gCi0gCSogZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cCAocmVhY2gpOiBSZWxh eCBleHBlY3RlZCBvdXRwdXQgYSBiaXQuCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5jcC9zdGF0aWMtcHJpbnQtcXVpdC5jYwotQEAgLTAsMCArMSwzMiBAQAotKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29w eXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2NsYXNzIEQKLSsgIHsKLSsgIHB1 YmxpYzoKLSsgICAgaW50IGxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v b29vb29vbmc7Ci0rICB9OwotKwotK2NsYXNzIEMKLSsgIHsKLSsgIHB1YmxpYzoKLSsgICAgaW50 IGxvb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vbmc7Ci0rICAg IHN0YXRpYyBEIGZpZWxkOwotKyAgfTsKLSsKLStEIEM6OmZpZWxkOwotK0MgYzsKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0YXRpYy1wcmludC1xdWl0LmV4cAot QEAgLTAsMCArMSw1MCBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmIHsgW3Nr aXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IHRlc3RmaWxlIHN0YXRpYy1w cmludC1xdWl0Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKLStzZXQgZXhlY3V0YWJsZSAk dGVzdGZpbGUubwotK3NldCBvYmpmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxl fQotKwotK2lmIHsgW2dkYl9jb21waWxlICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAkb2JqZmls ZSBvYmplY3Qge2RlYnVnIGMrK31dICE9ICIifSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdGZpbGV9 LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQot KwotK2dkYl90ZXN0ICJzZXQgd2lkdGggODAiCi0rZ2RiX3Rlc3QgInNldCBoZWlnaHQgMiIKLSsK LStzZXQgdGVzdCAicHJpbnQgYyIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0r ICAgIC1yZSAiID0gXHtsb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v b29vb25nID0gMCwgc3RhdGljIGZpZWxkID0gXHtcclxuLS0tVHlwZSA8cmV0dXJuPiB0byBjb250 aW51ZSwgb3IgcSA8cmV0dXJuPiB0byBxdWl0LS0tJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0K LSsgICAgLXJlICIgdG8gcXVpdC0tLSQiIHsKLSsJZmFpbCAkdGVzdAotKwlyZXR1cm4gLTEKLSsg ICAgfQotK30KLSsKLStnZGJfdGVzdCAicSIgIi4qIgotKwotKyMgTm93IHRoZSBvYnN0YWNrIGlz IHVuaW5pdGlhbGl6ZWQuICBFeGNlcmNpc2UgaXQuCi0rCi0rZ2RiX3Rlc3QgInNldCBwYWdpbmF0 aW9uIG9mZiIKLStnZGJfdGVzdCAicHJpbnQgYyIgIi4qIiAiZmlyc3QgcHJpbnQiCi0rZ2RiX3Rl c3QgInByaW50IGMiICIuKiIgInNlY29uZCBwcmludCIKCmRpZmYgLS1naXQgYS9nZGItYno2MDY2 NjAtcHJpbnQtb2JqZWN0LW5vbnZpcnR1YWwucGF0Y2ggYi9nZGItYno2MDY2NjAtcHJpbnQtb2Jq ZWN0LW5vbnZpcnR1YWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNTIw MzguLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjA2NjYwLXByaW50LW9iamVjdC1ub252aXJ0dWFsLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLWNvbW1pdCBiYjYwNGY5ZTcwZGU1 MTViMTNlMmE5MzVkOGFkOWQyZmIwMjkwODQ5Ci1BdXRob3I6IEphbiBLcmF0b2NodmlsIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBNb24gSnVuIDI4IDIwOjEyOjUyIDIwMTAg KzAwMDAKLQotICAgIGdkYi8KLSAgICAJRml4IG1vZGlmaWNhdGlvbiBvZiBjcGx1c19zdHJ1Y3Rf ZGVmYXVsdC4KLSAgICAJKiBkd2FyZjJyZWFkLmMgKGR3YXJmMl9hZGRfbWVtYmVyX2ZuKSA8bm8g RFdfQVRfdnRhYmxlX2VsZW1fbG9jYXRpb24+OgotICAgIAlDYWxsIEFMTE9DQVRFX0NQTFVTX1NU UlVDVF9UWVBFLgotPHJlbW92ZWQ+Ci0gICAgCSogZ2RidHlwZXMuYyAoY3BsdXNfc3RydWN0X2Rl ZmF1bHQpOiBOZXcgZW1wdHkgaW5pdGlhbGl6ZXIsIGNvbW1lbnQgaXQuCi08L3JlbW92ZWQ+Ci0g ICAgCi0gICAgZ2RiL3Rlc3RzdWl0ZS8KLSAgICAJKiBnZGIuY3AvdmlydGJhc2UuY2MgKGNsYXNz IFJUVElfYmFzZSwgY2xhc3MgUlRUSV9kYXRhKQotICAgIAkobWFpbikgPHJ0dGlfZGF0YT46IE5l dy4KLSAgICAJKiBnZGIuY3AvdmlydGJhc2UuZXhwIChwcmludCBydHRpX2RhdGEpOiBOZXcuCi0K LSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDMgKzEsMTAg QEAKLSsyMDEwLTA2LTI4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0rCi0rCUZpeCBtb2RpZmljYXRpb24gb2YgY3BsdXNfc3RydWN0X2RlZmF1bHQuCi0rCSog ZHdhcmYycmVhZC5jIChkd2FyZjJfYWRkX21lbWJlcl9mbikgPG5vIERXX0FUX3Z0YWJsZV9lbGVt X2xvY2F0aW9uPjoKLSsJQ2FsbCBBTExPQ0FURV9DUExVU19TVFJVQ1RfVFlQRS4KLSsJKiBnZGJ0 eXBlcy5jIChjcGx1c19zdHJ1Y3RfZGVmYXVsdCk6IE5ldyBlbXB0eSBpbml0aWFsaXplciwgY29t bWVudCBpdC4KLSsKLSMjIyBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvdGVz dHN1aXRlL0NoYW5nZUxvZwotIyMgLTEsNCArMSwxMCBAQAotKzIwMTAtMDYtMjggIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIuY3AvdmlydGJh c2UuY2MgKGNsYXNzIFJUVElfYmFzZSwgY2xhc3MgUlRUSV9kYXRhKQotKwkobWFpbikgPHJ0dGlf ZGF0YT46IE5ldy4KLSsJKiBnZGIuY3AvdmlydGJhc2UuZXhwIChwcmludCBydHRpX2RhdGEpOiBO ZXcuCi0rCi0jIyMtLS0gYS9nZGIvZ2RidHlwZXMuYwotIyMjKysrIGIvZ2RiL2dkYnR5cGVzLmMK LSMjI0BAIC0xNzMzLDcgKzE3MzMsOCBAQCBjaGVja19zdHViX21ldGhvZF9ncm91cCAoc3RydWN0 IHR5cGUgKnR5cGUsIGludCBtZXRob2RfaWQpCi0jIyMgICAgIH0KLSMjIyB9Ci0jIyMgCi0jIyMt Y29uc3Qgc3RydWN0IGNwbHVzX3N0cnVjdF90eXBlIGNwbHVzX3N0cnVjdF9kZWZhdWx0OwotIyMj Ky8qIEVuc3VyZSBpdCBpcyBpbiAucm9kYXRhIChpZiBhdmFpbGFibGUpIGJ5IHdvcmthcm91bmRp bmcgR0NDIFBSIDQ0NjkwLiAgKi8KLSMjIytjb25zdCBzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUg Y3BsdXNfc3RydWN0X2RlZmF1bHQgPSB7IH07Ci0jIyMgCi0jIyMgdm9pZAotIyMjIGFsbG9jYXRl X2NwbHVzX3N0cnVjdF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLUluZGV4OiBnZGItNy4xL2dk Yi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2RiL2R3YXJmMnJl YWQuYwkyMDEwLTA2LTI5IDE4OjI2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEvZ2Ri L2R3YXJmMnJlYWQuYwkyMDEwLTA2LTI5IDE4OjM5OjQzLjAwMDAwMDAwMCArMDIwMAotQEAgLTU0 MDQsNiArNTQwNCw3IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAK LSAJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0gCQkgICAgIF8oIk1lbWJlciBm dW5jdGlvbiBcIiVzXCIgKG9mZnNldCAlZCkgaXMgdmlydHVhbCBidXQgdGhlIHZ0YWJsZSBvZmZz ZXQgaXMgbm90IHNwZWNpZmllZCIpLAotIAkJICAgICBmaWVsZG5hbWUsIGRpZS0+b2Zmc2V0KTsK LSsJICBBTExPQ0FURV9DUExVU19TVFJVQ1RfVFlQRSAodHlwZSk7Ci0gCSAgVFlQRV9DUExVU19E WU5BTUlDICh0eXBlKSA9IDE7Ci0gCX0KLSAgICAgfQotSW5kZXg6IGdkYi03LjEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvdmlydGJhc2UuY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvdmlydGJhc2UuY2MJMjAxMC0wMi0wMyAwMDo0MDoyOC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ZpcnRiYXNlLmNjCTIw MTAtMDYtMjkgMTg6Mzk6NDMuMDAwMDAwMDAwICswMjAwCi1AQCAtNzQsOCArNzQsMTkgQEAgcHVi bGljOgotICAgdmlydHVhbCB2b2lkIGIoKSB7fQotIH07Ci0gCi0rY2xhc3MgUlRUSV9iYXNlCi0r ewotK3B1YmxpYzoKLSsgIHZpcnR1YWwgflJUVElfYmFzZSgpIHt9Ci0rfTsKLSAKLS0KLStjbGFz cyBSVFRJX2RhdGEKLSt7Ci0rcHVibGljOgotKyAgUlRUSV9iYXNlIGJhc2U7Ci0rICBpbnQgZGF0 YTsKLSsgIFJUVElfZGF0YSgpIDogZGF0YSgxKSB7fQotK307Ci0gCi0gaW50IG1haW4oKSB7Ci0g ICBwaDo6RGVyaXZlZCB0c3Q7Ci1AQCAtODQsNiArOTUsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSAg IEUgKmUgPSBuZXcgRTsKLSAgIFJIQiAqYiA9IG5ldyBSSEMoKTsKLSsgIFJUVElfZGF0YSBydHRp X2RhdGE7Ci0gCi0gICByZXR1cm4gMDsJCQkvLyBicmVha3BvaW50IDMKLSB9Ci1JbmRleDogZ2Ri LTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5jcC92aXJ0YmFzZS5leHAKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4xLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvdmlydGJhc2UuZXhwCTIwMTAtMDItMDQg MjI6MDQ6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dkYi5j cC92aXJ0YmFzZS5leHAJMjAxMC0wNi0yOSAxODozOTo1Ni4wMDAwMDAwMDAgKzAyMDAKLUBAIC02 MCwzICs2MCw4IEBAIGdkYl90ZXN0ICJwcmludCAqKEQgKikgZSIgIiA9IHs8Qz4gPSB7diAKLSAj IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTYwNzQxCi0gZ2Ri X3Rlc3QgInNldCBwcmludCBvYmplY3Qgb24iICIiCi0gZ2RiX3Rlc3QgInByaW50L3ggYi0+bUEi ICIgPSAweGFhYWFhYWFhIgotKwotKyMgQSByZWdyZXNzaW9uIHRlc3QgcmVwb3J0ZWQgdG8gUmVk IEhhdCBidWd6aWxsYSwgc2VlOgotKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD02MDY2NjAKLSsjIGBzZXQgcHJpbnQgb2JqZWN0IG9uJyBpcyBleHBlY3RlZC4K LStnZGJfdGVzdCAicHJpbnQgcnR0aV9kYXRhIiAiID0gLiosIGRhdGEgPSAxXH0iCgpkaWZmIC0t Z2l0IGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2ggYi9nZGItY29yZS1vcGVuLXZk c28td2FybmluZy5wYXRjaAppbmRleCBkMDVlNzJiLi4wNTZhMjhjIDEwMDY0NAotLS0gYS9nZGIt Y29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAorKysgYi9nZGItY29yZS1vcGVuLXZkc28td2Fy bmluZy5wYXRjaApAQCAtMzMsOSArMzMsMTEgQEAgZ2RiLwogCiBbIENvbnRleHQgYmFja3BvcnQu ICBdCiAKLS0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKLSsrKyBiL2dkYi9zb2xpYi1zdnI0LmMKLUBA IC0xMDk3LDggKzEwOTcsMTggQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKK0luZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi1zdnI0LmMKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEwLTA3LTEyIDIzOjA3OjM1LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3NvbGliLXN2cjQuYwky MDEwLTA3LTEzIDAwOjE5OjAzLjAwMDAwMDAwMCArMDIwMAorQEAgLTExNzcsOCArMTE3NywxOCBA QCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQogIAkgIHRhcmdldF9yZWFkX3N0cmluZyAoTE1fTkFN RSAobmV3KSwgJmJ1ZmZlciwKICAJCQkgICAgICBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxLCAm ZXJyY29kZSk7CiAgCSAgaWYgKGVycmNvZGUgIT0gMCkKQEAgLTU2LDkgKzU4LDExIEBAIGdkYi8K ICAJICBlbHNlCiAgCSAgICB7CiAgCSAgICAgIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQ7Ci0t LS0gYS9nZGIvc29saWIuYwotKysrIGIvZ2RiL3NvbGliLmMKLUBAIC01MzgsNiArNTM4LDcgQEAg dXBkYXRlX3NvbGliX2xpc3QgKGludCBmcm9tX3R0eSwgc3RydWN0IHRhcmdldF9vcHMgKnRhcmdl dCkKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zb2xpYi5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9zb2xpYi5jCTIwMTAtMDUtMTcgMDE6NDk6 NTguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc29saWIuYwky MDEwLTA3LTEzIDAwOjIxOjAxLjAwMDAwMDAwMCArMDIwMAorQEAgLTcwNSw2ICs3MDUsNyBAQCB1 cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QgCiAgICBzdHJ1Y3QgdGFyZ2V0 X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7CiAgICBzdHJ1Y3Qgc29f bGlzdCAqaW5mZXJpb3IgPSBvcHMtPmN1cnJlbnRfc29zKCk7CiAgICBzdHJ1Y3Qgc29fbGlzdCAq Z2RiLCAqKmdkYl9saW5rOwpAQCAtNjYsMTcgKzcwLDE2IEBAIGdkYi8KICAKICAgIC8qIFdlIGNh biByZWFjaCBoZXJlIGR1ZSB0byBjaGFuZ2luZyBzb2xpYi1zZWFyY2gtcGF0aCBvciB0aGUKICAg ICAgIHN5c3Jvb3QsIGJlZm9yZSBoYXZpbmcgYW55IGluZmVyaW9yLiAgKi8KLUBAIC02NjgsNiAr NjY5LDEyIEBAIHVwZGF0ZV9zb2xpYl9saXN0IChpbnQgZnJvbV90dHksIHN0cnVjdCB0YXJnZXRf b3BzICp0YXJnZXQpCitAQCAtODQ0LDYgKzg0NSwxMiBAQCBFcnJvciB3aGlsZSBtYXBwaW5nIHNo YXJlZCBsaWJyYXJ5IHNlY3RpCiAgCSAgb2JzZXJ2ZXJfbm90aWZ5X3NvbGliX2xvYWRlZCAoaSk7 CiAgCX0KLSAgICAgfQorIAorKyAgICAgIC8qIElmIHRoaXMgd2FzIHRoZSB2ZXJ5IGZpcnN0IERT TyBsaXN0IHNjYW4gYW5kIHdlIHBvc3NpYmx5IHJlYWQgaW4gbGQuc28KKysJIHJlY2hlY2sgYWxs IHRoZSBmb3JtZXJseSB1bnJlYWRhYmxlIERTTyBuYW1lcyBzdHJpbmdzLiAgKi8KICsKLSsgIC8q IElmIHRoaXMgd2FzIHRoZSB2ZXJ5IGZpcnN0IERTTyBsaXN0IHNjYW4gYW5kIHdlIHBvc3NpYmx5 IHJlYWQgaW4gbGQuc28KLSsgICAgIHJlY2hlY2sgYWxsIHRoZSBmb3JtZXJseSB1bnJlYWRhYmxl IERTTyBuYW1lcyBzdHJpbmdzLiAgKi8KKysgICAgICBpZiAoc2F2ZWRfc29fbGlzdF9oZWFkID09 IE5VTEwgJiYgc29fbGlzdF9oZWFkICE9IE5VTEwpCisrCXJldHVybiB1cGRhdGVfc29saWJfbGlz dCAoZnJvbV90dHksIHRhcmdldCk7CiArCi0rICBpZiAoc2F2ZWRfc29fbGlzdF9oZWFkID09IE5V TEwgJiYgc29fbGlzdF9oZWFkICE9IE5VTEwpCi0rICAgIHVwZGF0ZV9zb2xpYl9saXN0IChmcm9t X3R0eSwgdGFyZ2V0KTsKLSB9Ci0gCi0gCi0KKyAgICAgICAvKiBJZiBhIGxpYnJhcnkgd2FzIG5v dCBmb3VuZCwgaXNzdWUgYW4gYXBwcm9wcmlhdGUgd2FybmluZworIAkgbWVzc2FnZS4gIFdlIGhh dmUgdG8gdXNlIGEgc2luZ2xlIGNhbGwgdG8gd2FybmluZyBpbiBjYXNlIHRoZQorIAkgZnJvbnQg ZW5kIGRvZXMgc29tZXRoaW5nIHNwZWNpYWwgd2l0aCB3YXJuaW5ncywgZS5nLiwgcG9wIHVwCgpk aWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRjaCBiL2dkYi1mb3J0cmFu LWNvbW1vbi1yZWR1Y2UucGF0Y2gKaW5kZXggMWUxMzE4My4uM2I4NDNiOCAxMDA2NDQKLS0tIGEv Z2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRjaAorKysgYi9nZGItZm9ydHJhbi1jb21tb24t cmVkdWNlLnBhdGNoCkBAIC0xLDYgKzEsOCBAQAotLS0tIGEvZ2RiL2YtbGFuZy5jCi0rKysgYi9n ZGIvZi1sYW5nLmMKLUBAIC01NSwyMCArNTUsNiBAQCB0eXBlZGVmIHN0cnVjdCBzYXZlZF9iZl9z eW1udW0gU0FWRURfQkYsICpTQVZFRF9CRl9QVFI7CitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvZi1sYW5nLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcv Z2RiL2YtbGFuZy5jCTIwMTAtMDYtMDMgMDA6NDE6NTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvZi1sYW5nLmMJMjAxMC0wNy0xMyAwMDoyNDowNC4wMDAwMDAw MDAgKzAyMDAKK0BAIC01NiwyMCArNTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBzYXZlZF9iZl9zeW1u dW0gU0FWRURfQkYsCiAgLyogTG9jYWwgZnVuY3Rpb25zICovCiAgCiAgZXh0ZXJuIHZvaWQgX2lu aXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCk7CkBAIC0yMSw3ICsyMyw3IEBACiAgCiAgc3RhdGlj IHZvaWQgZl9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2Zp bGUgKiBzdHJlYW0pOwogIHN0YXRpYyB2b2lkIGZfZW1pdF9jaGFyIChpbnQgYywgc3RydWN0IHR5 cGUgKnR5cGUsCi1AQCAtNDE5LDE4NSArNDA1LDcgQEAgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAo dm9pZCkKK0BAIC00NTgsMTg1ICs0NDQsNyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lk KQogICAgYWRkX2xhbmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsKICB9CiAgCkBAIC0yMDcsNyAr MjA5LDcgQEAKICAKICAvKiBUaGlzIHJvdXRpbmUgZmluZHMgdGhlIGZpcnN0IGVuY291bnRyZWQg Q09NTU9OIGJsb2NrIG5hbWVkICJuYW1lIiAKICAgICB0aGF0IGJlbG9uZ3MgdG8gZnVuY3Rpb24g ZnVuY25hbWUgKi8KLUBAIC02MjAsMTkzICs0MjgsMyBAQCBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rp b24gKGNoYXIgKm5hbWUsIGNoYXIgKmZ1bmNuYW1lKQorQEAgLTY1OSwxOTMgKzQ2NywzIEBAIGZp bmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY2hhciAqbmFtZSwgY2gKICAgICAgfQogICAgcmV0dXJu IChOVUxMKTsKICB9CkBAIC00MDEsOSArNDAzLDExIEBACiAtICBzYXZlZF9mdW5jdGlvbl9saXN0 ID0gTlVMTDsKIC19CiAtI2VuZGlmCi0tLS0gYS9nZGIvZi1sYW5nLmgKLSsrKyBiL2dkYi9mLWxh bmcuaAotQEAgLTcxLDE0ICs3MSw5IEBAIHR5cGVkZWYgc3RydWN0IHNhdmVkX2Y3N19jb21tb24g U0FWRURfRjc3X0NPTU1PTiwgKlNBVkVEX0Y3N19DT01NT05fUFRSOworSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2YtbGFuZy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMS45MC4yMDEw MDcxMS5vcmlnL2dkYi9mLWxhbmcuaAkyMDEwLTA3LTEyIDIzOjA3OjMzLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2YtbGFuZy5oCTIwMTAtMDctMTMgMDA6MjQ6 MDQuMDAwMDAwMDAwICswMjAwCitAQCAtNzYsMTQgKzc2LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qgc2F2 ZWRfZjc3X2NvbW1vbiBTQVZFRF9GNwogIHR5cGVkZWYgc3RydWN0IGNvbW1vbl9lbnRyeSBDT01N T05fRU5UUlksICpDT01NT05fRU5UUllfUFRSOwogIAogIGV4dGVybiBTQVZFRF9GNzdfQ09NTU9O X1BUUiBoZWFkX2NvbW1vbl9saXN0OwkvKiBQdHIgdG8gMXN0IHNhdmVkIENPTU1PTiAgKi8KQEAg LTQxOCw4ICs0MjIsMTAgQEAKICAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX09SSUdJTkFMICIj QkxOS19DT00iCS8qIFhMRiBhc3NpZ25lZCAgKi8KICAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1F X01GNzcgICAgICJfX0JMTktfXyIJLyogTUY3NyBhc3NpZ25lZCAgKi8KICAjZGVmaW5lIEJMQU5L X0NPTU1PTl9OQU1FX0xPQ0FMICAgICJfX0JMQU5LIgkvKiBMb2NhbCBHREIgKi8KLS0tLSBhL2dk Yi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9mLXZhbHByaW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4xLjkwLjIw MTAwNzExLm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTA3LTEyIDIzOjA3OjMzLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTA3 LTEzIDAwOjI0OjI1LjAwMDAwMDAwMCArMDIwMAogQEAgLTM1LDEwICszNSw2IEBACiAgI2luY2x1 ZGUgImNvbW1hbmQuaCIKICAjaW5jbHVkZSAiYmxvY2suaCIKQEAgLTQzMSw3ICs0MzcsNyBAQAog IGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2ZfdmFscHJpbnQgKHZvaWQpOwogIHN0YXRpYyB2b2lk IGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKICBzdGF0aWMgdm9pZCBsaXN0X2Fs bF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKik7Ci1AQCAtNTc4LDY3ICs1NzQsNiBAQCBpbmZvX2Nv bW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgZnJvbV90dHkpCitAQCAtNjAxLDY3ICs1 OTcsNiBAQCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgCiAgCQkgICAg IGNvbW5hbWUsIGZ1bm5hbWUpOwogIH0KICAKQEAgLTQ4NCw3ICs0OTAsNyBAQAogLSAgZWxzZQog LSAgICB7CiAtICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0KLS0gICAgICBs b29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKGZpLT5wYyk7CistCWxvb2t1cF9taW5pbWFsX3N5 bWJvbF9ieV9wYyAoZmktPnBjKTsKIC0KIC0gICAgICBpZiAobXN5bWJvbCAhPSBOVUxMKQogLQlm dW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbCk7CgpkaWZmIC0tZ2l0IGEvZ2Ri LWZvcnRyYW4tY29tbW9uLnBhdGNoIGIvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoCmluZGV4IDNi OTA3OWYuLjYzZmE4MWMgMTAwNjQ0Ci0tLSBhL2dkYi1mb3J0cmFuLWNvbW1vbi5wYXRjaAorKysg Yi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcu MC41MC4yMDEwMDEyOC9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0yOCAxMjo1MzozNy4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wMS0yOCAxMjo1 NDozNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC01ODE4LDEyICs1ODE4LDE0IEBAIHJlYWRfc2V0X3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHIKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9y aWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjEzOjAyLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjI2 OjI1LjAwMDAwMDAwMCArMDIwMAorQEAgLTU3MjcsMTIgKzU3MjcsMTQgQEAgcmVhZF9zZXRfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cgogICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGll LCBzZXRfdHlwZSwgY3UpOwogIH0KICAKQEAgLTE5LDcgKzE5LDcgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMjgvZ2RiL2R3YXJmMnJlYWQuYwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsK ICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKICAgIENPUkVfQUREUiBiYXNlID0gKENPUkVfQUREUikg MDsKLUBAIC01ODQ4LDEwICs1ODUwLDQwIEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwKK0BAIC01NzU3LDEwICs1NzU5LDQwIEBAIHJlYWRfY29tbW9uX2Jsb2NrIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgICAgfQogICAgaWYgKGRpZS0+Y2hpbGQgIT0gTlVMTCkK ICAgICAgewpAQCAtNjAsNyArNjAsNyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIv ZHdhcmYycmVhZC5jCiAgCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChjaGlsZF9kaWUsIERXX0FUX2Rh dGFfbWVtYmVyX2xvY2F0aW9uLCBjdSk7CiAgCSAgaWYgKGF0dHIpCiAgCSAgICB7Ci1AQCAtNTg2 OSw4ICs1OTAxLDI1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwK K0BAIC01Nzc4LDggKzU4MTAsMjUgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5m byAqZGllLAogIAkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSA9IGJhc2UgKyBieXRl X29mZnNldDsKICAJICAgICAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9s cyk7CiAgCSAgICB9CkBAIC04Niw3ICs4Niw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4 L2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQogIH0KICAKLUBAIC05MDYxLDYgKzkxMTAsMTMgQEAg bmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorQEAgLTkxMDYsNiArOTE1 NSwxMyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0CiAgCSAgICB7 CiAgCSAgICAgIHZhcl9kZWNvZGVfbG9jYXRpb24gKGF0dHIsIHN5bSwgY3UpOwogIAkgICAgICBh dHRyMiA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2V4dGVybmFsLCBjdSk7CkBAIC0xMDAsOCAr MTAwLDggQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2R3YXJmMnJlYWQuYwogIAkg ICAgICBpZiAoYXR0cjIgJiYgKERXX1VOU05EIChhdHRyMikgIT0gMCkpCiAgCQl7CiAgCQkgIHN0 cnVjdCBwZW5kaW5nICoqbGlzdF90b19hZGQ7Ci1AQCAtOTI0NSw2ICs5MzAxLDExIEBAIG5ld19z eW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QKLSAJICBTWU1CT0xfRE9NQUlOIChz eW0pID0gTU9EVUxFX0RPTUFJTjsKK0BAIC05Mjc3LDYgKzkzMzMsMTEgQEAgbmV3X3N5bWJvbCAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorIAkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExP Q19UWVBFREVGOwogIAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMp OwogIAkgIGJyZWFrOwogKwljYXNlIERXX1RBR19jb21tb25fYmxvY2s6CkBAIC0xMTIsMTEgKzEx MiwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZHdhcmYycmVhZC5jCiAgCWRl ZmF1bHQ6CiAgCSAgLyogTm90IGEgdGFnIHdlIHJlY29nbml6ZS4gIEhvcGVmdWxseSB3ZSBhcmVu J3QgcHJvY2Vzc2luZwogIAkgICAgIHRyYXNoIGRhdGEsIGJ1dCBzaW5jZSB3ZSBtdXN0IHNwZWNp ZmljYWxseSBpZ25vcmUgdGhpbmdzCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvZi1s YW5nLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mLWxhbmcuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvZi1sYW5nLmMJMjAxMC0wMS0yOCAx Mjo1MzozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLWxh bmcuYwkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAotQEAgLTQ0NiwyNyArNDQ2 LDMgQEAgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCkKKy0tLSBnZGItNy4xLjkwLjIwMTAw NzExLm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTAtMDctMTMgMDA6MjQ6MDQuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZi1sYW5nLmMJMjAxMC0wNy0xMyAwMDoyNTo1 Ni4wMDAwMDAwMDAgKzAyMDAKK0BAIC00NDMsMjcgKzQ0MywzIEBAIF9pbml0aWFsaXplX2ZfbGFu Z3VhZ2UgKHZvaWQpCiAgCiAgICBhZGRfbGFuZ3VhZ2UgKCZmX2xhbmd1YWdlX2RlZm4pOwogIH0K QEAgLTE0NCwxMSArMTQ0LDExIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLWxh bmcuYwogLSAgICB9CiAtICByZXR1cm4gKE5VTEwpOwogLX0KLUluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTI4L2dkYi9mLWxhbmcuaAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2YtbGFu Zy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmlnL2dkYi9mLWxhbmcu aAkyMDEwLTAxLTI4IDEyOjUzOjM4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAx MDAxMjgvZ2RiL2YtbGFuZy5oCTIwMTAtMDEtMjggMTI6NTM6NDYuMDAwMDAwMDAwICswMTAwCi1A QCAtNTEsMzYgKzUxLDggQEAgZW51bSBmOTBfcmFuZ2VfdHlwZQorLS0tIGdkYi03LjEuOTAuMjAx MDA3MTEub3JpZy9nZGIvZi1sYW5nLmgJMjAxMC0wNy0xMyAwMDoyNDowNC4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mLWxhbmcuaAkyMDEwLTA3LTEzIDAwOjI1 OjU2LjAwMDAwMDAwMCArMDIwMAorQEAgLTUyLDM2ICs1Miw4IEBAIGVudW0gZjkwX3JhbmdlX3R5 cGUKICAgICAgTk9ORV9CT1VORF9ERUZBVUxUCQkvKiAiKGxvdzpoaWdoKSIgICovCiAgICB9Owog IApAQCAtMTg1LDEwICsxODUsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2Yt bGFuZy5oCiAgCiAgLyogV2hlbiByZWFzb25hYmxlIGFycmF5IGJvdW5kcyBjYW5ub3QgYmUgZmV0 Y2hlZCwgc3VjaCBhcyB3aGVuIAogICAgIHlvdSBhc2sgdG8gJ210IHByaW50IHN5bWJvbHMnIGFu ZCB0aGVyZSBpcyBubyBzdGFjayBmcmFtZSBhbmQgCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEy OC9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZi12YWxw cmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmlnL2dkYi9mLXZh bHByaW50LmMJMjAxMC0wMS0yOCAxMjo1MzozOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4w LjUwLjIwMTAwMTI4L2dkYi9mLXZhbHByaW50LmMJMjAxMC0wMS0yOCAxMjo1Mzo0Ni4wMDAwMDAw MDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2YtdmFscHJpbnQuYwky MDEwLTA3LTEzIDAwOjI0OjI1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTA3LTEzIDAwOjMyOjA1LjAwMDAwMDAwMCArMDIwMAog QEAgLTM0LDYgKzM0LDggQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJjb21t YW5kLmgiCkBAIC0xOTgsNyArMTk4LDcgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2Ri L2YtdmFscHJpbnQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2ZfdmFscHJpbnQgKHZv aWQpOwogIHN0YXRpYyB2b2lkIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKLUBA IC00NzYsMjIgKzQ3OCw1NCBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkCitAQCAtNDg2LDIyICs0ODgsNTQgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZAogICAgcmV0dXJuIDA7CiAgfQogIApAQCAtMjY2LDcgKzI2Niw3IEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLXZhbHByaW50LmMKICB9CiAgCiAgLyogVGhpcyBm dW5jdGlvbiBpcyB1c2VkIHRvIHByaW50IG91dCB0aGUgdmFsdWVzIGluIGEgZ2l2ZW4gQ09NTU9O IAotQEAgLTUwMSwxMSArNTM1LDkgQEAgbGlzdF9hbGxfdmlzaWJsZV9jb21tb25zIChjaGFyICpm dW5uYW1lKQorQEAgLTUxMSwxMSArNTQ1LDkgQEAgbGlzdF9hbGxfdmlzaWJsZV9jb21tb25zIChj aGFyICpmdW5uYW1lKQogIHN0YXRpYyB2b2lkCiAgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAq Y29tbmFtZSwgaW50IGZyb21fdHR5KQogIHsKQEAgLTI4MCw3ICsyODAsNyBAQCBJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDEyOC9nZGIvZi12YWxwcmludC5jCiAgCiAgICAvKiBXZSBoYXZlIGJlZW4g dG9sZCB0byBkaXNwbGF5IHRoZSBjb250ZW50cyBvZiBGNzcgQ09NTU9OIAogICAgICAgYmxvY2sg c3VwcG9zZWRseSB2aXNpYmxlIGluIHRoaXMgZnVuY3Rpb24uICBMZXQgdXMgCi1AQCAtNTE3LDc0 ICs1NDksMzEgQEAgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50IAorQEAg LTUyNyw3NCArNTU5LDMxIEBAIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKmNvbW5hbWUsIGlu dCAKICAgIC8qIFRoZSBmb2xsb3dpbmcgaXMgZ2VuZXJhbGx5IHJpcHBlZCBvZmYgZnJvbSBzdGFj ay5jJ3Mgcm91dGluZSAKICAgICAgIHByaW50X2ZyYW1lX2luZm8oKSAqLwogIApAQCAtMzE2LDcg KzMxNiw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9mLXZhbHByaW50LmMKIC0g IGVsc2UKIC0gICAgewogLSAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9Ci0t ICAgICAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChnZXRfZnJhbWVfcGMgKGZpKSk7Cist CWxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmaSkpOwogLQogLSAg ICAgIGlmIChtc3ltYm9sICE9IE5VTEwpCiAtCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1F IChtc3ltYm9sKTsKQEAgLTM3MSwzOSArMzcxLDM5IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTI4L2dkYi9mLXZhbHByaW50LmMKICB9CiAgCiAgdm9pZAotSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMjgvZ2RiL3N0YWNrLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zdGFjay5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDEyOC5vcmlnL2dkYi9zdGFjay5jCTIw MTAtMDEtMjggMTI6NTI6MTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEy OC9nZGIvc3RhY2suYwkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAotQEAgLTE0 NzQsNiArMTQ3NCw4IEBAIHByaW50X2Jsb2NrX2ZyYW1lX2xvY2FscyAoc3RydWN0IGJsb2NrICoK Ky0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3N0YWNrLmMJMjAxMC0wNy0wMSAxNzoz NjoxNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zdGFjay5j CTIwMTAtMDctMTMgMDA6Mjk6NDkuMDAwMDAwMDAwICswMjAwCitAQCAtMTQ4NCw2ICsxNDg0LDgg QEAgaXRlcmF0ZV9vdmVyX2Jsb2NrX2xvY2FscyAoc3RydWN0IGJsb2NrIAogIAljYXNlIExPQ19D T01QVVRFRDoKICAJICBpZiAoU1lNQk9MX0lTX0FSR1VNRU5UIChzeW0pKQogIAkgICAgYnJlYWs7 CiArCSAgaWYgKFNZTUJPTF9ET01BSU4gKHN5bSkgPT0gQ09NTU9OX0JMT0NLX0RPTUFJTikKICsJ ICAgIGJyZWFrOwotIAkgIHZhbHVlc19wcmludGVkID0gMTsKLSAJICBwcmludF92YXJpYWJsZV9h bmRfdmFsdWUgKE5VTEwsIHN5bSwgZnJhbWUsIHN0cmVhbSwgNCAqIG51bV90YWJzKTsKKyAJICAo KmNiKSAoU1lNQk9MX1BSSU5UX05BTUUgKHN5bSksIHN5bSwgY2JfZGF0YSk7CiAgCSAgYnJlYWs7 Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvc3ltdGFiLmgKKyAKK0luZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9zeW10YWIuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAu MjAxMDAxMjgub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0wMS0yOCAxMjo1MjoyMC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9zeW10YWIuaAkyMDEwLTAxLTI4IDEy OjUzOjQ2LjAwMDAwMDAwMCArMDEwMAotQEAgLTQwMSw3ICs0MDEsMTAgQEAgdHlwZWRlZiBlbnVt IGRvbWFpbl9lbnVtX3RhZwotICAgVFlQRVNfRE9NQUlOLAorLS0tIGdkYi03LjEuOTAuMjAxMDA3 MTEub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0wNy0xMiAyMzowNzozMy4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW10YWIuaAkyMDEwLTA3LTEzIDAwOjI3OjAy LjAwMDAwMDAwMCArMDIwMAorQEAgLTM5Niw3ICszOTYsMTAgQEAgdHlwZWRlZiBlbnVtIGRvbWFp bl9lbnVtX3RhZworICAgRlVOQ1RJT05TX0RPTUFJTiwKICAKLSAgIC8qIEZvcnRyYW4gbW9kdWxl LiAgVGhlaXIgbmFtaW5nIG11c3QgYmUgc2VwYXJhdGUuICAqLwotLSAgTU9EVUxFX0RPTUFJTgot KyAgTU9EVUxFX0RPTUFJTiwKKyAgIC8qIEFsbCBkZWZpbmVkIHR5cGVzICovCistICBUWVBFU19E T01BSU4KKysgIFRZUEVTX0RPTUFJTiwKICsKICsgIC8qIEZvcnRyYW4gY29tbW9uIGJsb2Nrcy4g IFRoZWlyIG5hbWluZyBtdXN0IGJlIHNlcGFyYXRlIGZyb20gVkFSX0RPTUFJTi4gICovCiArICBD T01NT05fQkxPQ0tfRE9NQUlOCiAgfQogIGRvbWFpbl9lbnVtOwogIAotSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCitJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1v bi1ibG9jay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEwLTAxLTI4IDEyOjUzOjQ2LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9jb21tb24tYmxvY2suZXhwCTIwMTAtMDctMTMgMDA6MjU6NTYuMDAwMDAwMDAwICswMjAwCiBA QCAtMCwwICsxLDEwMSBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCkBAIC01MDYsMTAgKzUwNiwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEw MDEyOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAKICtnZGJfdGVz dCAicCBpeF94IiAiID0gMSAqIiAicCBpeF94IGluIgogK2dkYl90ZXN0ICJwIGl5X3kiICIgPSAy ICoiICJwIGl5X3kgaW4iCiArZ2RiX3Rlc3QgInAgaXpfejIiICIgPSAzICoiICJwIGl6X3oyIGlu IgotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9j b21tb24tYmxvY2suZjkwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmY5MAkyMDEwLTAxLTI4 IDEyOjUzOjQ2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCTIwMTAtMDctMTMgMDA6MjU6NTYu MDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDY3IEBACiArISBDb3B5cmlnaHQgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICshCgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4t bG9naWNhbDgucGF0Y2ggYi9nZGItZm9ydHJhbi1sb2dpY2FsOC5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggYWFkYjY1YS4uMDAwMDAwMAotLS0gYS9nZGItZm9ydHJhbi1sb2dp Y2FsOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0tLS0gYS9nZGIvZi1l eHAueQotKysrIGIvZ2RiL2YtZXhwLnkKLUBAIC0xOTYsNiArMTk2LDcgQEAgc3RhdGljIGludCBw YXJzZV9udW1iZXIgKGNoYXIgKiwgaW50LCBpbnQsIFlZU1RZUEUgKik7Ci0gLyogU3BlY2lhbCB0 eXBlIGNhc2VzLCBwdXQgaW4gdG8gYWxsb3cgdGhlIHBhcnNlciB0byBkaXN0aW5ndWlzaCBkaWZm ZXJlbnQKLSAgICBsZWdhbCBiYXNldHlwZXMuICAqLwotICV0b2tlbiBJTlRfS0VZV09SRCBJTlRf UzJfS0VZV09SRCBMT0dJQ0FMX1MxX0tFWVdPUkQgTE9HSUNBTF9TMl9LRVlXT1JEIAotKyV0b2tl biBMT0dJQ0FMX1M4X0tFWVdPUkQgCi0gJXRva2VuIExPR0lDQUxfS0VZV09SRCBSRUFMX0tFWVdP UkQgUkVBTF9TOF9LRVlXT1JEIFJFQUxfUzE2X0tFWVdPUkQgCi0gJXRva2VuIENPTVBMRVhfUzhf S0VZV09SRCBDT01QTEVYX1MxNl9LRVlXT1JEIENPTVBMRVhfUzMyX0tFWVdPUkQgCi0gJXRva2Vu IEJPT0xfQU5EIEJPT0xfT1IgQk9PTF9OT1QgICAKLUBAIC02MDYsNiArNjA3LDggQEAgdHlwZWJh c2UgIC8qIEltcGxlbWVudHMgKGFwcHJveGltYXRlbHkpOiAodHlwZS1xdWFsaWZpZXIpKiB0eXBl LXNwZWNpZmllciAqLwotIAkJCXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5faW50ZWdlcl9z MjsgfQotIAl8CUNIQVJBQ1RFUiAKLSAJCQl7ICQkID0gcGFyc2VfZl90eXBlLT5idWlsdGluX2No YXJhY3RlcjsgfQotKwl8CUxPR0lDQUxfUzhfS0VZV09SRAotKwkJCXsgJCQgPSBwYXJzZV9mX3R5 cGUtPmJ1aWx0aW5fbG9naWNhbF9zODt9Ci0gCXwJTE9HSUNBTF9LRVlXT1JEIAotIAkJCXsgJCQg PSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fbG9naWNhbDsgfQotIAl8CUxPR0lDQUxfUzJfS0VZV09S RAotQEAgLTg1OCw2ICs4NjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHRva2VuIGY3N19rZXl3 b3Jkc1tdID0KLSAgIHsgImludGVnZXJfMiIsIElOVF9TMl9LRVlXT1JELCBCSU5PUF9FTkQgfSwK LSAgIHsgImxvZ2ljYWxfMSIsIExPR0lDQUxfUzFfS0VZV09SRCwgQklOT1BfRU5EIH0sCi0gICB7 ICJsb2dpY2FsXzIiLCBMT0dJQ0FMX1MyX0tFWVdPUkQsIEJJTk9QX0VORCB9LAotKyAgeyAibG9n aWNhbF84IiwgTE9HSUNBTF9TOF9LRVlXT1JELCBCSU5PUF9FTkQgfSwKLSAgIHsgImNvbXBsZXhf OCIsIENPTVBMRVhfUzhfS0VZV09SRCwgQklOT1BfRU5EIH0sCi0gICB7ICJpbnRlZ2VyIiwgSU5U X0tFWVdPUkQsIEJJTk9QX0VORCB9LAotICAgeyAibG9naWNhbCIsIExPR0lDQUxfS0VZV09SRCwg QklOT1BfRU5EIH0sCi0tLS0gYS9nZGIvZi1sYW5nLmMKLSsrKyBiL2dkYi9mLWxhbmcuYwotQEAg LTI1OSw2ICsyNDUsNyBAQCBlbnVtIGZfcHJpbWl0aXZlX3R5cGVzIHsKLSAgIGZfcHJpbWl0aXZl X3R5cGVfbG9naWNhbCwKLSAgIGZfcHJpbWl0aXZlX3R5cGVfbG9naWNhbF9zMSwKLSAgIGZfcHJp bWl0aXZlX3R5cGVfbG9naWNhbF9zMiwKLSsgIGZfcHJpbWl0aXZlX3R5cGVfbG9naWNhbF9zOCwK LSAgIGZfcHJpbWl0aXZlX3R5cGVfaW50ZWdlciwKLSAgIGZfcHJpbWl0aXZlX3R5cGVfaW50ZWdl cl9zMiwKLSAgIGZfcHJpbWl0aXZlX3R5cGVfcmVhbCwKLUBAIC0yODksNiArMjc2LDggQEAgZl9s YW5ndWFnZV9hcmNoX2luZm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICA9IGJ1aWx0 aW4tPmJ1aWx0aW5fbG9naWNhbF9zMTsKLSAgIGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtm X3ByaW1pdGl2ZV90eXBlX2xvZ2ljYWxfczJdCi0gICAgID0gYnVpbHRpbi0+YnVpbHRpbl9sb2dp Y2FsX3MyOwotKyAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2ZfcHJpbWl0aXZlX3R5cGVf bG9naWNhbF9zOF0KLSsgICAgPSBidWlsdGluLT5idWlsdGluX2xvZ2ljYWxfczg7Ci0gICBsYWkt PnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZl9wcmltaXRpdmVfdHlwZV9yZWFsXQotICAgICA9IGJ1 aWx0aW4tPmJ1aWx0aW5fcmVhbDsKLSAgIGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtmX3By aW1pdGl2ZV90eXBlX3JlYWxfczhdCi1AQCAtMzcyLDYgKzM2MSwxMCBAQCBidWlsZF9mb3J0cmFu X3R5cGVzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSAgICAgPSBhcmNoX2Jvb2xlYW5fdHlw ZSAoZ2RiYXJjaCwgZ2RiYXJjaF9zaG9ydF9iaXQgKGdkYmFyY2gpLCAxLAotIAkJCSAibG9naWNh bCoyIik7Ci0gCi0rICBidWlsdGluX2ZfdHlwZS0+YnVpbHRpbl9sb2dpY2FsX3M4Ci0rICAgID0g YXJjaF9ib29sZWFuX3R5cGUgKGdkYmFyY2gsIGdkYmFyY2hfbG9uZ19sb25nX2JpdCAoZ2RiYXJj aCksIDEsCi0rCQkJICJsb2dpY2FsKjgiKTsKLSsKLSAgIGJ1aWx0aW5fZl90eXBlLT5idWlsdGlu X2ludGVnZXIKLSAgICAgPSBhcmNoX2ludGVnZXJfdHlwZSAoZ2RiYXJjaCwgZ2RiYXJjaF9pbnRf Yml0IChnZGJhcmNoKSwgMCwKLSAJCQkgImludGVnZXIiKTsKLS0tLSBhL2dkYi9mLWxhbmcuaAot KysrIGIvZ2RiL2YtbGFuZy5oCi1AQCAtMTEzLDYgKzgwLDcgQEAgc3RydWN0IGJ1aWx0aW5fZl90 eXBlCi0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9sb2dpY2FsOwotICAgc3RydWN0IHR5cGUgKmJ1 aWx0aW5fbG9naWNhbF9zMTsKLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX2xvZ2ljYWxfczI7Ci0r ICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9sb2dpY2FsX3M4OwotICAgc3RydWN0IHR5cGUgKmJ1aWx0 aW5fcmVhbDsKLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX3JlYWxfczg7Ci0gICBzdHJ1Y3QgdHlw ZSAqYnVpbHRpbl9yZWFsX3MxNjsKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbG9naWNhbC5leHAKLUBAIC0wLDAgKzEsNDQgQEAKLSsjIENvcHlyaWdodCAy MDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsjIAotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIAotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCi0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4g YnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3NldCB0 ZXN0ZmlsZSAibG9naWNhbCIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgIHsgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRh YmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0r Z2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xv YWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQot KwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdG9wLWhlcmUiXQotK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJzdG9wLWhlcmUiCi0rZ2RiX3Rlc3QgInAgbCIgIiA9 IFxcLlRSVUVcXC4iCi0rZ2RiX3Rlc3QgInAgbDEiICIgPSBcXC5UUlVFXFwuIgotK2dkYl90ZXN0 ICJwIGwyIiAiID0gXFwuVFJVRVxcLiIKLStnZGJfdGVzdCAicCBsNCIgIiA9IFxcLlRSVUVcXC4i Ci0rZ2RiX3Rlc3QgInAgbDgiICIgPSBcXC5UUlVFXFwuIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vbG9naWNhbC5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2xvZ2ljYWwuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDIyOTMw NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9sb2dpY2Fs LmY5MAotQEAgLTAsMCArMSwzMyBAQAotKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5 bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGph a3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFu IEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3Byb2dyYW0gdGVz dAotKyAgbG9naWNhbCA6OiBsCi0rICBsb2dpY2FsIChraW5kPTEpIDo6IGwxCi0rICBsb2dpY2Fs IChraW5kPTIpIDo6IGwyCi0rICBsb2dpY2FsIChraW5kPTQpIDo6IGw0Ci0rICBsb2dpY2FsIChr aW5kPTgpIDo6IGw4Ci0rICBsID0gLlRSVUUuCi0rICBsMSA9IC5UUlVFLgotKyAgbDIgPSAuVFJV RS4KLSsgIGw0ID0gLlRSVUUuCi0rICBsOCA9IC5UUlVFLgotKyAgbCA9IC5GQUxTRS4JCQkJCSEg c3RvcC1oZXJlCi0rZW5kCgpkaWZmIC0tZ2l0IGEvZ2RiLWluZmNhbGwtc3AtdW5kZXJmbG93LnBh dGNoIGIvZ2RiLWluZmNhbGwtc3AtdW5kZXJmbG93LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBkNjAyYTRmLi4wMDAwMDAwCi0tLSBhL2dkYi1pbmZjYWxsLXNwLXVuZGVyZmxv dy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAyL21zZzAwNTE1Lmh0bWwKLVN1YmplY3Q6IFtwYXRj aF0gaW5mY2FsbDogUmVtb3ZlIGdkYl9hc3NlcnQgKCRzcCBvdmVyZmxvdykKLQotSGksCi0KLXNl dCAkc3A9MAotY2FsbCBzb21ldGhpbmcoKQotLT4KLS4uLy4uL2dkYi9pbmZjYWxsLmM6NTIxOiBp bnRlcm5hbC1lcnJvcjogY2FsbF9mdW5jdGlvbl9ieV9oYW5kOiBBc3NlcnRpb24KLWAoZ2RiYXJj aF9pbm5lcl90aGFuIChnZGJhcmNoLCAxLCAyKSAmJiBzcCA8PSBvbGRfc3ApIHx8IChnZGJhcmNo X2lubmVyX3RoYW4KLShnZGJhcmNoLCAyLCAxKSAmJiBzcCA+PSBvbGRfc3ApJyBmYWlsZWQuCi0K LWFzICRzcCAtIGZyYW1lID09IDB4ZmZmZnNtdGggd2hpY2ggaXMgbm90IGxvd2VyIHRoYW4gJHNw LgotCi1JdCBtdXN0IG5vdCBiZSBnZGJfYXNzZXJ0KCkuICBJdCBjYW4gYmUgYW4gZXJyb3IoKSBi dXQgSSBsZWZ0IGl0IGp1c3QgdG8gZG86Ci0JKGdkYikgc2V0ICRzcD0wCi0JKGdkYikgY2FsbCBk b3VibGVpdCAoMSkKLQlDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4ZmZmZmZmZmZm ZmZmZmY3OAotCShnZGIpIHNldCAkc3A9LTEKLQkoZ2RiKSBjYWxsIGRvdWJsZWl0ICgxKQotCUNh bm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJlc3MgMHhmZmZmZmZmZmZmZmZmZjY4Ci0KLVVuYXdh cmUgaG93IGluY29udmVuaWVudCBpcyBhbiBpbnRlbnRpb25hbCBjcmFzaCBvZiB0aGUgdGVzdGNh c2Ugb24gc29tZQotZW1iZWRkZWQvbm9uLU1NVSBzeXN0ZW1zLgotTm8gcmVncmVzc2lvbnMgb24g e3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi1nZGIvCi0yMDEwLTAyLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQkqIGluZmNhbGwuYyAoY2FsbF9mdW5jdGlvbl9ieV9oYW5kKTog UmVtb3ZlIGdkYl9hc3NlcnQgb24gc3AgYW5kIG9sZF9zcC4KLQlOZXcgY29tbWVudC4KLQotZ2Ri L3Rlc3RzdWl0ZS8KLTIwMTAtMDItMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2UvY2FsbGZ1bmNzLmV4cDogTmV3IHRlc3RzIGZvciAk c3B2YWwgMCBhbmQgLTEuICBSZW1vdmUgcmV0dXJuLgotCi0tLS0gYS9nZGIvaW5mY2FsbC5jCi0r KysgYi9nZGIvaW5mY2FsbC5jCi1AQCAtNTE4LDEwICs1MTgsOSBAQCBjYWxsX2Z1bmN0aW9uX2J5 X2hhbmQgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIGludCBuYXJncywgc3RydWN0IHZhbHVlICoq YXJncykKLSAJICAgICAgLyogU3RhY2sgZ3Jvd3MgdXAuICAqLwotIAkgICAgICBzcCA9IGdkYmFy Y2hfZnJhbWVfYWxpZ24gKGdkYmFyY2gsIG9sZF9zcCArIDEpOwotIAkgIH0KLS0JZ2RiX2Fzc2Vy dCAoKGdkYmFyY2hfaW5uZXJfdGhhbiAoZ2RiYXJjaCwgMSwgMikKLS0JCSAgICAmJiBzcCA8PSBv bGRfc3ApCi0tCQkgICAgfHwgKGdkYmFyY2hfaW5uZXJfdGhhbiAoZ2RiYXJjaCwgMiwgMSkKLS0J CSAgICAgICAmJiBzcCA+PSBvbGRfc3ApKTsKLSsJLyogU1AgbWF5IGhhdmUgb3ZlcmZsb3duIGFk ZHJlc3MgemVybyBoZXJlIGZyb20gT0xEX1NQLiAgTWVtb3J5IGFjY2VzcwotKwkgICBmdW5jdGlv bnMgd2lsbCBwcm9iYWJseSBmYWlsIGluIHN1Y2ggY2FzZSBidXQgdGhhdCBpcyBhIHRhcmdldCdz Ci0rCSAgIHByb2JsZW0uICAqLwotICAgICAgIH0KLSAgICAgZWxzZQotICAgICAgIC8qIEZJWE1F OiBjYWduZXkvMjAwMi0wOS0xODogSGV5LCB5b3UgbG9vc2UhCi0tLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2NhbGxmdW5jcy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY2Fs bGZ1bmNzLmV4cAotQEAgLTQ2OSw1ICs0NjksMTggQEAgaWYgeyRvbGRfcmVnX2NvbnRlbnQgPT0g JG5ld19yZWdfY29udGVudH0gdGhlbiB7Ci0gICAgIGZhaWwgIm5lc3RlZCBjYWxsIGR1bW1pZXMg cHJlc2VydmUgcmVnaXN0ZXIgY29udGVudHMiCi0gfQotIAotLXJldHVybiAwCi0rIyBHREIgc2hv dWxkIG5vdCBjcmFzaCBieSBpbnRlcm5hbCBlcnJvciBvbiAkc3Agb3ZlcmZsb3cgZHVyaW5nIHRo ZSBpbmZlcmlvcgotKyMgY2FsbC4gIEl0IGlzIE9LIGl0IHdpbGwgc3RvcCBvbiBzb21lOiBDYW5u b3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4JGhleC4KLSAKLStmb3JlYWNoIHNwdmFsIHsw IC0xfSB7Ci0rICAgIHNldCBvbGRfbGRwcmVmaXggJHBmX3ByZWZpeAotKyAgICBsYXBwZW5kIHBm X3ByZWZpeCAic3A9JHNwdmFsOiIKLSsKLSsgICAgZ2RiX3Rlc3Qge3NldCAkb2xkX3NwID0gJHNw fQotKyAgICBnZGJfdGVzdCAic2V0IFwkc3AgPSAkc3B2YWwiCi0rCi0rICAgIGdkYl90ZXN0ICJj YWxsIGRvdWJsZWl0ICgxKSIKLSsKLSsgICAgZ2RiX3Rlc3Qge3NldCAkc3AgPSAkb2xkX3NwfQot KyAgICBzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKLSt9Ci0KCmRpZmYgLS1naXQgYS9nZGIt cGllLTFvZjYtcmVwcmVsaW5rZWQtYmluLnBhdGNoIGIvZ2RiLXBpZS0xb2Y2LXJlcHJlbGlua2Vk LWJpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc3YmM3Ny4uMDAwMDAw MAotLS0gYS9nZGItcGllLTFvZjYtcmVwcmVsaW5rZWQtYmluLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsNDQzICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEwLTAzL21zZzAxMDA4Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaCAxLzZdOiBQSUU6IEF0dGFjaCBi aW5hcnkgZXZlbiBhZnRlciByZS1wcmVsaW5rZWQgdW5kZXJuZWF0aAotCi1IaSwKLQotdGhlcmUg aXMgYSByZWdyZXNzaW9uIChhZ2FpbnN0IHByZXZpb3VzIHVucmVsZWFzZWQgY29tbWl0cykgYnk6 Ci0JUmU6IFJGQzogVmVyaWZ5IEFUX0VOVFJZIGJlZm9yZSB1c2luZyBpdAotCWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMzk1Lmh0bWwKLQotZm9yIGxv YWRpbmcgUElFIGV4ZWN1dGFibGVzIHdoaWNoIGhhdmUgY2hhbmdlZCBvbiB0aGUgZGlzayBzaW5j ZSBzdGFydGVkLgotVGhlcmUgYXJlIGluIGZhY3QgMyBkaWZmZXJlbnQgYWRkcmVzc2VzIG9uZSBo YXMgdG8gcHJvcGVybHkgZGVhbCB3aXRoLgotCi1UaGlzIHBhdGNoIHVzZXMgZXhwbGljaXQgImZp bGUiIHNvIGl0IGlzIG5vdCBkZXBlbmRlbnQgb24gcGVuZGluZzoKLQlbcGF0Y2hdIEF0dGFjaCB0 byBydW5uaW5nIGJ1dCBkZWxldGVkIGV4ZWN1dGFibGUKLQlodHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAxMC0wMy9tc2cwMDk1MC5odG1sCi0KLVRoZSB0d28gY29weS1wYXN0 ZWQgYmxvY2tzIGZvciBlbGYzMiBhbmQgZWxmNjQgYXJlICJub3QgbmljZSIgYnV0IHRoaXMgaXMg dGhlCi1jdXJyZW50IHN0eWxlIGluIEdEQi4KLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4 ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudSBmb3IgdGhlIHdob2xlCi1wYXRjaCBz ZXJpZXMgdG9nZXRoZXIuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0wMy0yOSAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JRml4IGF0dGFj aGluZyB0byBQSUVzIHByZWxpbmtlZCBvbiB0aGUgZGlzayBzaW5jZSB0aGVpciBzdGFydC4KLQkq IHNvbGliLXN2cjQuYyAoc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCk6IE5ldyB2YXJpYWJsZSBhcmNo X3NpemUuCi0JVmVyaWZ5IGl0IGFnYWluc3QgYmZkX2dldF9hcmNoX3NpemUuICBUcnkgdG8gbWF0 Y2ggYXJiaXRyYXJ5Ci0JZGlzcGxhY2VtZW50IGZvciB0aGUgcGhkcnMgY29tcGFyaXNvbi4KLQot Z2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMDMtMjkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cDogUnVuICRiaW5w aWUgd2l0aCBuZXcgdmFsdWUgIkFUVEFDSCIsIG5ldwotCWNvZGUgZm9yIGl0LiAgTmV3IHZhcmlh YmxlIHJlbGlua19hcmdzLgotCShwcmVsaW5rWUVTKTogQ2FsbCBwcmVsaW5rTk8uCi0JKHRlc3Rf YXR0YWNoKTogQWNjZXB0IG5ldyBwYXJhbWV0ZXIgcmVsaW5rX2FyZ3MuICBSZS1wcmVsaW5rIHRo ZSBiaW5hcnkKLQlpbiBzdWNoIGNhc2UuICBNb3ZlIHRoZSBjb3JlIGNvZGUgdG8gLi4uCi0JKHRl c3RfYXR0YWNoX2dkYik6IC4uLiBhIG5ldyBmdW5jdGlvbi4gIFNlbmQgR0RCIGNvbW1hbmQgImZp bGUiLgotCUV4dGVuZCBleHBlY3RlZCAiQXR0YWNoaW5nIHRvICIgc3RyaW5nLgotCi0tLS0gYS9n ZGIvc29saWItc3ZyNC5jCi0rKysgYi9nZGIvc29saWItc3ZyNC5jCi1AQCAtMTc1MCwxMyArMTc1 MCwxODMgQEAgc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAoQ09SRV9BRERSICpkaXNwbGFjZW1lbnRw KQotIAkgcmVhbGx5IGRvIG5vdCBtYXRjaC4gICovCi0gICAgICAgaW50IHBoZHJzX3NpemUsIHBo ZHJzMl9zaXplLCBvayA9IDE7Ci0gICAgICAgZ2RiX2J5dGUgKmJ1ZiwgKmJ1ZjI7Ci0rICAgICAg aW50IGFyY2hfc2l6ZTsKLSAKLS0gICAgICBidWYgPSByZWFkX3Byb2dyYW1faGVhZGVyICgtMSwg JnBoZHJzX3NpemUsIE5VTEwpOwotKyAgICAgIGJ1ZiA9IHJlYWRfcHJvZ3JhbV9oZWFkZXIgKC0x LCAmcGhkcnNfc2l6ZSwgJmFyY2hfc2l6ZSk7Ci0gICAgICAgYnVmMiA9IHJlYWRfcHJvZ3JhbV9o ZWFkZXJzX2Zyb21fYmZkIChleGVjX2JmZCwgJnBoZHJzMl9zaXplKTsKLS0gICAgICBpZiAoYnVm ICE9IE5VTEwgJiYgYnVmMiAhPSBOVUxMCi0tCSAgJiYgKHBoZHJzX3NpemUgIT0gcGhkcnMyX3Np emUKLS0JICAgICAgfHwgbWVtY21wIChidWYsIGJ1ZjIsIHBoZHJzX3NpemUpICE9IDApKQotLQlv ayA9IDA7Ci0rICAgICAgaWYgKGJ1ZiAhPSBOVUxMICYmIGJ1ZjIgIT0gTlVMTCkKLSsJewotKwkg IGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyICh0YXJnZXRf Z2RiYXJjaCk7Ci0rCi0rCSAgLyogV2UgYXJlIGRlYWxpbmcgd2l0aCB0aHJlZSBkaWZmZXJlbnQg YWRkcmVzc2VzLiAgRVhFQ19CRkQKLSsJICAgICByZXByZXNlbnRzIGN1cnJlbnQgYWRkcmVzcyBp biBvbi1kaXNrIGZpbGUuICB0YXJnZXQgbWVtb3J5IGNvbnRlbnQKLSsJICAgICBtYXkgYmUgZGlm ZmVyZW50IGZyb20gRVhFQ19CRkQgYXMgdGhlIGZpbGUgbWF5IGhhdmUgYmVlbiBwcmVsaW5rZWQK LSsJICAgICB0byBhIGRpZmZlcmVudCBhZGRyZXNzIHNpbmNlIHRoZSBleGVjdXRhYmxlIGhhcyBi ZWVuIGxvYWRlZC4KLSsJICAgICBNb3Jlb3ZlciB0aGUgYWRkcmVzcyBvZiBwbGFjZW1lbnQgaW4g dGFyZ2V0IG1lbW9yeSBjYW4gYmUKLSsJICAgICBkaWZmZXJlbnQgZnJvbSB3aGF0IHNheSB0aGUg dGFyZ2V0IG1lbW9yeSBwcm9ncmFtIGhlYWRlcnMgLSB0aGlzCi0rCSAgICAgaXMgdGhlIGdvYWwg b2YgUElFLgotKwotKwkgICAgIERldGVjdGVkIERJU1BMQUNFTUVOVCBjb3ZlcnMgYm90aCB0aGUg b2Zmc2V0cyBvZiBQSUUgcGxhY2VtZW50IGFuZAotKwkgICAgIHBvc3NpYmxlIG5ldyBwcmVsaW5r IHNpbmNlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtLiAgSGVyZSByZWxvY2F0ZQotKwkgICAgIEJVRiBh bmQgQlVGMiBqdXN0IGJ5IHRoZSBFWEVDX0JGRCB2cy4gdGFyZ2V0IG1lbW9yeSBjb250ZW50IG9m ZnNldAotKwkgICAgIGZvciB0aGUgdmVyaWZpY2F0aW9uIHB1cnBvc2UuICAqLwotKwotKwkgIGlm IChwaGRyc19zaXplICE9IHBoZHJzMl9zaXplCi0rCSAgICAgIHx8IGJmZF9nZXRfYXJjaF9zaXpl IChleGVjX2JmZCkgIT0gYXJjaF9zaXplKQotKwkgICAgb2sgPSAwOwotKwkgIGVsc2UgaWYgKGFy Y2hfc2l6ZSA9PSAzMiAmJiBwaGRyc19zaXplID49IHNpemVvZiAoRWxmMzJfRXh0ZXJuYWxfUGhk cikKLSsJICAgICAgICAgICAmJiBwaGRyc19zaXplICUgc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9Q aGRyKSA9PSAwKQotKwkgICAgewotKwkgICAgICBFbGZfSW50ZXJuYWxfRWhkciAqZWhkcjIgPSBl bGZfdGRhdGEgKGV4ZWNfYmZkKS0+ZWxmX2hlYWRlcjsKLSsJICAgICAgRWxmX0ludGVybmFsX1Bo ZHIgKnBoZHIyID0gZWxmX3RkYXRhIChleGVjX2JmZCktPnBoZHI7Ci0rCSAgICAgIENPUkVfQURE UiBkaXNwbGFjZW1lbnQgPSAwOwotKwkgICAgICBpbnQgaTsKLSsKLSsJICAgICAgLyogRElTUExB Q0VNRU5UIGNvdWxkIGJlIGZvdW5kIGVhc2llciBieSB0aGUgZGlmZmVyZW5jZSBvZgotKwkgICAg ICAgICBlaGRyMi0+ZV9lbnRyeSBidXQgYWxyZWFkeSByZWFkIEJVRiBkb2VzIG5vdCBjb250YWlu IGVoZHIuICAqLwotKwotKwkgICAgICBmb3IgKGkgPSAwOyBpIDwgZWhkcjItPmVfcGhudW07IGkr KykKLSsJCWlmIChwaGRyMltpXS5wX3R5cGUgPT0gUFRfTE9BRCkKLSsJCSAgewotKwkJICAgIEVs ZjMyX0V4dGVybmFsX1BoZHIgKnBoZHJwOwotKwkJICAgIGdkYl9ieXRlICpidWZfdmFkZHJfcCwg KmJ1Zl9wYWRkcl9wOwotKwkJICAgIENPUkVfQUREUiB2YWRkciwgcGFkZHI7Ci0rCQkgICAgQ09S RV9BRERSIGRpc3BsYWNlbWVudF92YWRkciA9IDA7Ci0rCQkgICAgQ09SRV9BRERSIGRpc3BsYWNl bWVudF9wYWRkciA9IDA7Ci0rCi0rCQkgICAgcGhkcnAgPSAmKChFbGYzMl9FeHRlcm5hbF9QaGRy ICopIGJ1ZilbaV07Ci0rCQkgICAgYnVmX3ZhZGRyX3AgPSAoZ2RiX2J5dGUgKikgJnBoZHJwLT5w X3ZhZGRyOwotKwkJICAgIGJ1Zl9wYWRkcl9wID0gKGdkYl9ieXRlICopICZwaGRycC0+cF9wYWRk cjsKLSsKLSsJCSAgICB2YWRkciA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmX3ZhZGRy X3AsIDQsCi0rCQkJCQkJICAgICAgYnl0ZV9vcmRlcik7Ci0rCQkgICAgZGlzcGxhY2VtZW50X3Zh ZGRyID0gdmFkZHIgLSBwaGRyMltpXS5wX3ZhZGRyOwotKwotKwkJICAgIHBhZGRyID0gZXh0cmFj dF91bnNpZ25lZF9pbnRlZ2VyIChidWZfcGFkZHJfcCwgNCwKLSsJCQkJCQkgICAgICBieXRlX29y ZGVyKTsKLSsJCSAgICBkaXNwbGFjZW1lbnRfcGFkZHIgPSBwYWRkciAtIHBoZHIyW2ldLnBfcGFk ZHI7Ci0rCi0rCQkgICAgaWYgKGRpc3BsYWNlbWVudF92YWRkciA9PSBkaXNwbGFjZW1lbnRfcGFk ZHIpCi0rCQkgICAgICBkaXNwbGFjZW1lbnQgPSBkaXNwbGFjZW1lbnRfdmFkZHI7Ci0rCi0rCQkg ICAgYnJlYWs7Ci0rCQkgIH0KLSsKLSsJICAgICAgLyogTm93IGNvbXBhcmUgQlVGIGFuZCBCVUYy IHdpdGggb3B0aW9uYWwgRElTUExBQ0VNRU5ULiAgKi8KLSsKLSsJICAgICAgZm9yIChpID0gMDsg aSA8IHBoZHJzX3NpemUgLyBzaXplb2YgKEVsZjMyX0V4dGVybmFsX1BoZHIpOyBpKyspCi0rCQl7 Ci0rCQkgIEVsZjMyX0V4dGVybmFsX1BoZHIgKnBoZHJwOwotKwkJICBFbGYzMl9FeHRlcm5hbF9Q aGRyICpwaGRyMnA7Ci0rCQkgIGdkYl9ieXRlICpidWZfdmFkZHJfcCwgKmJ1Zl9wYWRkcl9wOwot KwkJICBDT1JFX0FERFIgdmFkZHIsIHBhZGRyOwotKwotKwkJICBwaGRycCA9ICYoKEVsZjMyX0V4 dGVybmFsX1BoZHIgKikgYnVmKVtpXTsKLSsJCSAgYnVmX3ZhZGRyX3AgPSAoZ2RiX2J5dGUgKikg JnBoZHJwLT5wX3ZhZGRyOwotKwkJICBidWZfcGFkZHJfcCA9IChnZGJfYnl0ZSAqKSAmcGhkcnAt PnBfcGFkZHI7Ci0rCQkgIHBoZHIycCA9ICYoKEVsZjMyX0V4dGVybmFsX1BoZHIgKikgYnVmMilb aV07Ci0rCi0rCQkgIC8qIFBUX0dOVV9TVEFDSyBhZGRyZXNzZXMgYXJlIGxlZnQgYXMgemVybyBu b3QgYmVpbmcKLSsJCSAgICAgcmVsb2NhdGVkIGJ5IHByZWxpbmssIHRoZWlyIGRpc3BsYWNpbmcg d291bGQgY3JlYXRlIGZhbHNlCi0rCQkgICAgIHZlcmlmaWNhdGlvbiBmYWlsdXJlLiAgRmVlbCBm cmVlIHRvIHRlc3QgdGhlIHVucmVsb2NhdGVkCi0rCQkgICAgIGNvbXBhcmlzb24gZm9yIGFueSBz ZWdtZW50IHR5cGUuICAqLwotKwotKwkJICBpZiAobWVtY21wIChwaGRycCwgcGhkcjJwLCBzaXpl b2YgKCpwaGRycCkpID09IDApCi0rCQkgICAgY29udGludWU7Ci0rCi0rCQkgIHZhZGRyID0gZXh0 cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWZfdmFkZHJfcCwgNCwgYnl0ZV9vcmRlcik7Ci0rCQkg IHZhZGRyIC09IGRpc3BsYWNlbWVudDsKLSsJCSAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVm X3ZhZGRyX3AsIDQsIGJ5dGVfb3JkZXIsIHZhZGRyKTsKLSsKLSsJCSAgcGFkZHIgPSBleHRyYWN0 X3Vuc2lnbmVkX2ludGVnZXIgKGJ1Zl9wYWRkcl9wLCA0LCBieXRlX29yZGVyKTsKLSsJCSAgcGFk ZHIgLT0gZGlzcGxhY2VtZW50OwotKwkJICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChidWZfcGFk ZHJfcCwgNCwgYnl0ZV9vcmRlciwgcGFkZHIpOwotKwotKwkJICBpZiAobWVtY21wIChwaGRycCwg cGhkcjJwLCBzaXplb2YgKCpwaGRycCkpID09IDApCi0rCQkgICAgY29udGludWU7Ci0rCi0rCQkg IG9rID0gMDsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICB9Ci0rCSAgZWxzZSBpZiAoYXJjaF9z aXplID09IDY0ICYmIHBoZHJzX3NpemUgPj0gc2l6ZW9mIChFbGY2NF9FeHRlcm5hbF9QaGRyKQot KwkgICAgICAgICAgICYmIHBoZHJzX3NpemUgJSBzaXplb2YgKEVsZjY0X0V4dGVybmFsX1BoZHIp ID09IDApCi0rCSAgICB7Ci0rCSAgICAgIEVsZl9JbnRlcm5hbF9FaGRyICplaGRyMiA9IGVsZl90 ZGF0YSAoZXhlY19iZmQpLT5lbGZfaGVhZGVyOwotKwkgICAgICBFbGZfSW50ZXJuYWxfUGhkciAq cGhkcjIgPSBlbGZfdGRhdGEgKGV4ZWNfYmZkKS0+cGhkcjsKLSsJICAgICAgQ09SRV9BRERSIGRp c3BsYWNlbWVudCA9IDA7Ci0rCSAgICAgIGludCBpOwotKwotKwkgICAgICAvKiBESVNQTEFDRU1F TlQgY291bGQgYmUgZm91bmQgZWFzaWVyIGJ5IHRoZSBkaWZmZXJlbmNlIG9mCi0rCSAgICAgICAg IGVoZHIyLT5lX2VudHJ5IGJ1dCBhbHJlYWR5IHJlYWQgQlVGIGRvZXMgbm90IGNvbnRhaW4gZWhk ci4gICovCi0rCi0rCSAgICAgIGZvciAoaSA9IDA7IGkgPCBlaGRyMi0+ZV9waG51bTsgaSsrKQot KwkJaWYgKHBoZHIyW2ldLnBfdHlwZSA9PSBQVF9MT0FEKQotKwkJICB7Ci0rCQkgICAgRWxmNjRf RXh0ZXJuYWxfUGhkciAqcGhkcnA7Ci0rCQkgICAgZ2RiX2J5dGUgKmJ1Zl92YWRkcl9wLCAqYnVm X3BhZGRyX3A7Ci0rCQkgICAgQ09SRV9BRERSIHZhZGRyLCBwYWRkcjsKLSsJCSAgICBDT1JFX0FE RFIgZGlzcGxhY2VtZW50X3ZhZGRyID0gMDsKLSsJCSAgICBDT1JFX0FERFIgZGlzcGxhY2VtZW50 X3BhZGRyID0gMDsKLSsKLSsJCSAgICBwaGRycCA9ICYoKEVsZjY0X0V4dGVybmFsX1BoZHIgKikg YnVmKVtpXTsKLSsJCSAgICBidWZfdmFkZHJfcCA9IChnZGJfYnl0ZSAqKSAmcGhkcnAtPnBfdmFk ZHI7Ci0rCQkgICAgYnVmX3BhZGRyX3AgPSAoZ2RiX2J5dGUgKikgJnBoZHJwLT5wX3BhZGRyOwot KwotKwkJICAgIHZhZGRyID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWZfdmFkZHJfcCwg OCwKLSsJCQkJCQkgICAgICBieXRlX29yZGVyKTsKLSsJCSAgICBkaXNwbGFjZW1lbnRfdmFkZHIg PSB2YWRkciAtIHBoZHIyW2ldLnBfdmFkZHI7Ci0rCi0rCQkgICAgcGFkZHIgPSBleHRyYWN0X3Vu c2lnbmVkX2ludGVnZXIgKGJ1Zl9wYWRkcl9wLCA4LAotKwkJCQkJCSAgICAgIGJ5dGVfb3JkZXIp OwotKwkJICAgIGRpc3BsYWNlbWVudF9wYWRkciA9IHBhZGRyIC0gcGhkcjJbaV0ucF9wYWRkcjsK LSsKLSsJCSAgICBpZiAoZGlzcGxhY2VtZW50X3ZhZGRyID09IGRpc3BsYWNlbWVudF9wYWRkcikK LSsJCSAgICAgIGRpc3BsYWNlbWVudCA9IGRpc3BsYWNlbWVudF92YWRkcjsKLSsKLSsJCSAgICBi cmVhazsKLSsJCSAgfQotKwotKwkgICAgICAvKiBOb3cgY29tcGFyZSBCVUYgYW5kIEJVRjIgd2l0 aCBvcHRpb25hbCBESVNQTEFDRU1FTlQuICAqLwotKwotKwkgICAgICBmb3IgKGkgPSAwOyBpIDwg cGhkcnNfc2l6ZSAvIHNpemVvZiAoRWxmNjRfRXh0ZXJuYWxfUGhkcik7IGkrKykKLSsJCXsKLSsJ CSAgRWxmNjRfRXh0ZXJuYWxfUGhkciAqcGhkcnA7Ci0rCQkgIEVsZjY0X0V4dGVybmFsX1BoZHIg KnBoZHIycDsKLSsJCSAgZ2RiX2J5dGUgKmJ1Zl92YWRkcl9wLCAqYnVmX3BhZGRyX3A7Ci0rCQkg IENPUkVfQUREUiB2YWRkciwgcGFkZHI7Ci0rCi0rCQkgIHBoZHJwID0gJigoRWxmNjRfRXh0ZXJu YWxfUGhkciAqKSBidWYpW2ldOwotKwkJICBidWZfdmFkZHJfcCA9IChnZGJfYnl0ZSAqKSAmcGhk cnAtPnBfdmFkZHI7Ci0rCQkgIGJ1Zl9wYWRkcl9wID0gKGdkYl9ieXRlICopICZwaGRycC0+cF9w YWRkcjsKLSsJCSAgcGhkcjJwID0gJigoRWxmNjRfRXh0ZXJuYWxfUGhkciAqKSBidWYyKVtpXTsK LSsKLSsJCSAgLyogUFRfR05VX1NUQUNLIGFkZHJlc3NlcyBhcmUgbGVmdCBhcyB6ZXJvIG5vdCBi ZWluZwotKwkJICAgICByZWxvY2F0ZWQgYnkgcHJlbGluaywgdGhlaXIgZGlzcGxhY2luZyB3b3Vs ZCBjcmVhdGUgZmFsc2UKLSsJCSAgICAgdmVyaWZpY2F0aW9uIGZhaWx1cmUuICBGZWVsIGZyZWUg dG8gdGVzdCB0aGUgdW5yZWxvY2F0ZWQKLSsJCSAgICAgY29tcGFyaXNvbiBmb3IgYW55IHNlZ21l bnQgdHlwZS4gICovCi0rCi0rCQkgIGlmIChtZW1jbXAgKHBoZHJwLCBwaGRyMnAsIHNpemVvZiAo KnBoZHJwKSkgPT0gMCkKLSsJCSAgICBjb250aW51ZTsKLSsKLSsJCSAgdmFkZHIgPSBleHRyYWN0 X3Vuc2lnbmVkX2ludGVnZXIgKGJ1Zl92YWRkcl9wLCA4LCBieXRlX29yZGVyKTsKLSsJCSAgdmFk ZHIgLT0gZGlzcGxhY2VtZW50OwotKwkJICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChidWZfdmFk ZHJfcCwgOCwgYnl0ZV9vcmRlciwgdmFkZHIpOwotKwotKwkJICBwYWRkciA9IGV4dHJhY3RfdW5z aWduZWRfaW50ZWdlciAoYnVmX3BhZGRyX3AsIDgsIGJ5dGVfb3JkZXIpOwotKwkJICBwYWRkciAt PSBkaXNwbGFjZW1lbnQ7Ci0rCQkgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ1Zl9wYWRkcl9w LCA4LCBieXRlX29yZGVyLCBwYWRkcik7Ci0rCi0rCQkgIGlmIChtZW1jbXAgKHBoZHJwLCBwaGRy MnAsIHNpemVvZiAoKnBoZHJwKSkgPT0gMCkKLSsJCSAgICBjb250aW51ZTsKLSsKLSsJCSAgb2sg PSAwOwotKwkJICBicmVhazsKLSsJCX0KLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICBvayA9IDA7 Ci0rCX0KLSAKLSAgICAgICB4ZnJlZSAoYnVmKTsKLSAgICAgICB4ZnJlZSAoYnVmMik7Ci0tLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAotQEAgLTE1NCw2ICsxNTQsMTIgQEAgcHJv YyBwcmVsaW5rWUVTIHthcmcge25hbWUgIiJ9fSB7Ci0gICAgIGlmIHskbmFtZSA9PSAiIn0gewot IAlzZXQgbmFtZSBbZmlsZSB0YWlsICRhcmddCi0gICAgIH0KLSsKLSsgICAgIyBUcnkgdG8gdW5w cmVsaW5rIGl0IGZpcnN0IHNvIHRoYXQgaWYgaXQgaGFzIGJlZW4gYWxyZWFkeSBwcmVsaW5rZWQg YmVmb3JlCi0rICAgICMgd2UgZ2V0IGRpZmZlcmVudCBhZGRyZXNzIG5vdyBhbmQgdGhlIHJlc3Vs dCBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlCi0rICAgICMgcHJldmlvdXMgJGFyZyBzdGF0ZS4uCi0r ICAgIHByZWxpbmtOTyAkYXJnICIkbmFtZSBwcmUtdW5wcmVsaW5rIgotKwotICAgICBzZXQgdGVz dCAicHJlbGluayAkbmFtZSIKLSAgICAgc2V0IGNvbW1hbmQgImV4ZWMgL3Vzci9zYmluL3ByZWxp bmsgLXFOUiAtLW5vLWV4ZWMtc2hpZWxkICRhcmciCi0gICAgIHZlcmJvc2UgLWxvZyAiY29tbWFu ZCBpcyAkY29tbWFuZCIKLUBAIC0zMTksMzggKzMyNSwxMiBAQCBwcm9jIHRlc3RfY29yZSB7Zmls ZSBkaXNwbGFjZW1lbnR9IHsKLSAgICAgc2V0IHBmX3ByZWZpeCAkb2xkX2xkcHJlZml4Ci0gfQot IAotLXByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxhY2VtZW50fSB7Ci0tICAgIGdsb2JhbCBi b2FyZF9pbmZvIGdkYl9wcm9tcHQgZXhwZWN0X291dAotLQotLSAgICBnZGJfZXhpdAotLQotLSAg ICBzZXQgdGVzdCAic2xlZXAgZnVuY3Rpb24gc3RhcnRlZCIKLS0KLS0gICAgc2V0IGNvbW1hbmQg IiR7ZmlsZX0gc2xlZXAiCi0tICAgIHNldCByZXMgW3JlbW90ZV9zcGF3biBob3N0ICRjb21tYW5k XTsKLS0gICAgaWYgeyAkcmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotLQlwZXJyb3IgIlNwYXdu aW5nICRjb21tYW5kIGZhaWxlZC4iCi0tCWZhaWwgJHRlc3QKLS0JcmV0dXJuCi0tICAgIH0KLS0g ICAgc2V0IHBpZCBbZXhwX3BpZCAtaSAkcmVzXQotLSAgICBnZGJfZXhwZWN0IHsKLS0JLXJlICJz bGVlcGluZ1xyXG4iIHsKLS0JICAgIHBhc3MgJHRlc3QKLS0JfQotLQllb2YgewotLQkgICAgZmFp bCAiJHRlc3QgKGVvZikiCi0tCSAgICByZXR1cm4KLS0JfQotLQl0aW1lb3V0IHsKLS0JICAgIGZh aWwgIiR0ZXN0ICh0aW1lb3V0KSIKLS0JICAgIHJldHVybgotLQl9Ci0tICAgIH0KLStwcm9jIHRl c3RfYXR0YWNoX2dkYiB7ZmlsZSBwaWQgZGlzcGxhY2VtZW50IHByZWZpeH0gewotKyAgICBnbG9i YWwgZ2RiX3Byb21wdCBleHBlY3Rfb3V0Ci0gCi0gICAgIGdsb2JhbCBwZl9wcmVmaXgKLSAgICAg c2V0IG9sZF9sZHByZWZpeCAkcGZfcHJlZml4Ci0tICAgIGxhcHBlbmQgcGZfcHJlZml4ICJhdHRh Y2g6IgotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJHByZWZpeDoiCi0gCi0gICAgIGdkYl9leGl0 Ci0gICAgIGdkYl9zdGFydAotQEAgLTM1OCw5ICszMzgsMTMgQEAgcHJvYyB0ZXN0X2F0dGFjaCB7 ZmlsZSBkaXNwbGFjZW1lbnR9IHsKLSAgICAgIyBQcmludCB0aGUgIlBJRSAoUG9zaXRpb24gSW5k ZXBlbmRlbnQgRXhlY3V0YWJsZSkgZGlzcGxhY2VtZW50IiBtZXNzYWdlLgotICAgICBnZGJfdGVz dCAic2V0IHZlcmJvc2Ugb24iCi0gCi0rICAgIGlmIHskZmlsZSAhPSAiIn0gewotKwlnZGJfdGVz dCAiZmlsZSAkZmlsZSIgIlJlYWRpbmcgc3ltYm9scyBmcm9tIC4qZG9uZVxcLiIgImZpbGUiCi0r ICAgIH0KLSsKLSAgICAgc2V0IHRlc3QgImF0dGFjaCIKLSAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUg ImF0dGFjaCAkcGlkIiAkdGVzdCB7Ci0tCS1yZSAiQXR0YWNoaW5nIHRvIHByb2Nlc3MgJHBpZFxy XG4iIHsKLSsJLXJlICJBdHRhY2hpbmcgdG8gKHByb2dyYW06IC4qLCApP3Byb2Nlc3MgJHBpZFxy XG4iIHsKLSAJICAgICMgTWlzc2luZyAiJGdkYl9wcm9tcHQgJCIgaXMgaW50ZW50aW9uYWwuCi0g CSAgICBwYXNzICR0ZXN0Ci0gCX0KLUBAIC0zOTYsMTEgKzM4MCw1NiBAQCBwcm9jIHRlc3RfYXR0 YWNoIHtmaWxlIGRpc3BsYWNlbWVudH0gewotICAgICBnZGJfdGVzdCAiYnQiICIjXFswLTlcXSsg K1xbXlxyXG5cXSpcXG1saWJmdW5jXFxNXFteXHJcblxdKlxyXG4jXFswLTlcXSsgK1xbXlxyXG5c XSpcXG1tYWluXFxNLioiICJhdHRhY2ggbWFpbiBidCIKLSAgICAgZ2RiX2V4aXQKLSAKLS0gICAg cmVtb3RlX2V4ZWMgaG9zdCAia2lsbCAtOSAkcGlkIgotLQotICAgICBzZXQgcGZfcHJlZml4ICRv bGRfbGRwcmVmaXgKLSB9Ci0gCi0rcHJvYyB0ZXN0X2F0dGFjaCB7ZmlsZSBkaXNwbGFjZW1lbnQg e3JlbGlua19hcmdzICIifX0gewotKyAgICBnbG9iYWwgYm9hcmRfaW5mbwotKwotKyAgICBnZGJf ZXhpdAotKwotKyAgICBzZXQgdGVzdCAic2xlZXAgZnVuY3Rpb24gc3RhcnRlZCIKLSsKLSsgICAg c2V0IGNvbW1hbmQgIiR7ZmlsZX0gc2xlZXAiCi0rICAgIHNldCByZXMgW3JlbW90ZV9zcGF3biBo b3N0ICRjb21tYW5kXTsKLSsgICAgaWYgeyAkcmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotKwlw ZXJyb3IgIlNwYXduaW5nICRjb21tYW5kIGZhaWxlZC4iCi0rCWZhaWwgJHRlc3QKLSsJcmV0dXJu Ci0rICAgIH0KLSsgICAgc2V0IHBpZCBbZXhwX3BpZCAtaSAkcmVzXQotKyAgICBnZGJfZXhwZWN0 IHsKLSsJLXJlICJzbGVlcGluZ1xyXG4iIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQotKwllb2Yg ewotKwkgICAgZmFpbCAiJHRlc3QgKGVvZikiCi0rCSAgICByZXR1cm4KLSsJfQotKwl0aW1lb3V0 IHsKLSsJICAgIGZhaWwgIiR0ZXN0ICh0aW1lb3V0KSIKLSsJICAgIHJldHVybgotKwl9Ci0rICAg IH0KLSsKLSsgICAgaWYgeyRyZWxpbmtfYXJncyA9PSAiIn0gewotKwl0ZXN0X2F0dGFjaF9nZGIg IiIgJHBpZCAkZGlzcGxhY2VtZW50ICJhdHRhY2giCi0rICAgIH0gZWxzZSB7Ci0rCSMgVGhlc2Ug Y291bGQgYmUgcmF0aGVyIHBhc3NlZCBhcyBhcmd1bWVudHMuCi0rCWdsb2JhbCBleGVjIGludGVy cF9zYXZlZCBpbnRlcnAKLSsKLSsJZm9yZWFjaCByZWxpbmsge1lFUyBOT30gewotKwkgICAgaWYg e1twcmVsaW5rJHJlbGluayAkcmVsaW5rX2FyZ3MgW2ZpbGUgdGFpbCAkZXhlY11dCi0rCSAgICAg ICAgJiYgW2NvcHkgJGludGVycF9zYXZlZCAkaW50ZXJwXX0gewotKwkJIyAvcHJvYy9QSUQvZXhl IGNhbm5vdCBiZSBsb2FkZWQgYXMgaXQgaXMgIkVYRUNOQU1FIChkZWxldGVkKSIuCi0rCQl0ZXN0 X2F0dGFjaF9nZGIgJGV4ZWMgJHBpZCAkZGlzcGxhY2VtZW50ICJhdHRhY2gtcmVsaW5rJHJlbGlu ayIKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAgIHJlbW90ZV9leGVjIGhvc3QgImtpbGwg LTkgJHBpZCIKLSt9Ci0rCi0gcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNw bGFjZW1lbnR9IHsKLSAgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rf b3V0Ci0gCi1AQCAtNjA5LDcgKzYzOCwxMCBAQCBmb3JlYWNoIGxkcHJlbGluayB7Tk8gWUVTfSB7 Ci0gCXNldCBvbGRfYmlucHJlZml4ICRwZl9wcmVmaXgKLSAJZm9yZWFjaCBiaW5wcmVsaW5rIHtO TyBZRVN9IHsKLSAJICAgIGZvcmVhY2ggYmluc2VwZGVidWcge05PIElOIFNFUH0gewotLQkJZm9y ZWFjaCBiaW5waWUge05PIFlFU30gewotKwkJIyAiQVRUQUNIIiBpcyBsaWtlICJZRVMiIGJ1dCBp dCBpcyBtb2RpZmllZCBkdXJpbmcgcnVuLgotKwkJIyBJdCBjYW5ub3QgYmUgdXNlZCBmb3IgcHJv YmxlbSByZXByb2R1Y2liaWxpdHkgYWZ0ZXIgdGhlCi0rCQkjIHRlc3RjYXNlIGVuZHMuCi0rCQlm b3JlYWNoIGJpbnBpZSB7Tk8gWUVTIEFUVEFDSH0gewotIAkJICAgICMgVGhpcyBjb21iaW5hdGlv biBpcyBub3QgcG9zc2libGUsIG5vbi1QSUUgKGZpeGVkIGFkZHJlc3MpCi0gCQkgICAgIyBiaW5h cnkgY2Fubm90IGJlIHByZWxpbmtlZCB0byBhbnkgKG90aGVyKSBhZGRyZXNzLgotIAkJICAgIGlm IHskYmlucHJlbGluayA9PSAiWUVTIiAmJiAkYmlucGllID09ICJOTyJ9IHsKLUBAIC02MjgsNyAr NjYwLDcgQEAgZm9yZWFjaCBsZHByZWxpbmsge05PIFlFU30gewotIAkJICAgIGlmIHskYmluc2Vw ZGVidWcgIT0gIk5PIn0gewotIAkJCWxhcHBlbmQgb3B0cyB7ZGVidWd9Ci0gCQkgICAgfQotLQkJ ICAgIGlmIHskYmlucGllID09ICJZRVMifSB7Ci0rCQkgICAgaWYgeyRiaW5waWUgIT0gIk5PIn0g ewotIAkJCWxhcHBlbmQgb3B0cyB7YWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGllfQotIAkJICAg IH0KLSAJCSAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgW2ZpbGUgdGFpbCAk ZXhlY10gJHNyY2ZpbGUgJG9wdHNdID09IC0xfSB7Ci1AQCAtNjgwLDE2ICs3MTIsNDUgQEAgZm9y ZWFjaCBsZHByZWxpbmsge05PIFlFU30gewotIAkJCWxhcHBlbmQgZGVzdHMgJGRlc3QKLSAJCSAg ICB9Ci0gCi0tCQkgICAgaWYge1twcmVsaW5rJGJpbnByZWxpbmsgIi0tZHluYW1pYy1saW5rZXI9 JGludGVycCAtLWxkLWxpYnJhcnktcGF0aD0kZGlyICRleGVjICRpbnRlcnAgW2NvbmNhdCAkZGVz dHNdIiBbZmlsZSB0YWlsICRleGVjXV0KLSsJCSAgICBpZiB7JGJpbnBpZSA9PSAiTk8ifSB7Ci0r CQkJc2V0IGRpc3BsYWNlbWVudCAiTk9ORSIKLSsJCSAgICB9IGVsc2VpZiB7JGJpbnByZWxpbmsg PT0gIk5PIn0gewotKwkJCXNldCBkaXNwbGFjZW1lbnQgIk5PTlpFUk8iCi0rCQkgICAgfSBlbHNl IHsKLSsJCQlzZXQgZGlzcGxhY2VtZW50ICJaRVJPIgotKwkJICAgIH0KLSsKLSsJCSAgICBzZXQg cmVsaW5rX2FyZ3MgIi0tZHluYW1pYy1saW5rZXI9JGludGVycCAtLWxkLWxpYnJhcnktcGF0aD0k ZGlyICRleGVjICRpbnRlcnAgW2NvbmNhdCAkZGVzdHNdIgotKwkJICAgIGlmIHtbcHJlbGluayRi aW5wcmVsaW5rICRyZWxpbmtfYXJncyBbZmlsZSB0YWlsICRleGVjXV0KLSAJCSAgICAgICAgJiYg W2NvcHkgJGludGVycF9zYXZlZCAkaW50ZXJwXX0gewotLQkJCWlmIHskYmlucGllID09ICJOTyJ9 IHsKLS0JCQkgICAgc2V0IGRpc3BsYWNlbWVudCAiTk9ORSIKLS0JCQl9IGVsc2VpZiB7JGJpbnBy ZWxpbmsgPT0gIk5PIn0gewotLQkJCSAgICBzZXQgZGlzcGxhY2VtZW50ICJOT05aRVJPIgotKwkJ CWlmIHskYmlucGllICE9ICJBVFRBQ0gifSB7Ci0rCQkJICAgIHRlc3RfbGQgJGV4ZWMgMSBbZXhw ciB7JGJpbnNlcGRlYnVnID09ICJOTyJ9XSAkZGlzcGxhY2VtZW50Ci0gCQkJfSBlbHNlIHsKLS0J CQkgICAgc2V0IGRpc3BsYWNlbWVudCAiWkVSTyIKLSsJCQkgICAgIyBJZiB0aGUgZmlsZSBoYXMg YmVlbiByYW5kb21seSBwcmVsaW5rZWQgaXQgbXVzdAotKwkJCSAgICAjIGJlICJOT05aRVJPIi4g IFdlIGNvdWxkIHNlZSAiWkVSTyIgb25seSBpZiBpdCB3YXMKLSsJCQkgICAgIyB1bnByZWxpbmtl ZCBuYSBpdCBpcyBub3cgcnVubmluZyBhdCB0aGUgc2FtZQotKwkJCSAgICAjIGFkZHJlc3MgLSB3 aGljaCBpcyAwIGJ1dCBleGVjdXRhYmxlIGNhbiBuZXZlciBydW4KLSsJCQkgICAgIyBhdCBhZGRy ZXNzIDAuCi0rCi0rCQkJICAgIHNldCBkaXNwbGFjZW1lbnQgIk5PTlpFUk8iCi0rCQkJICAgIHRl c3RfYXR0YWNoICRleGVjICRkaXNwbGFjZW1lbnQgJHJlbGlua19hcmdzCi0rCi0rCQkJICAgICMg QVRUQUNIIGV4ZWN1dGFibGVzICsgbGlicmFyaWVzIGdldCBtb2RpZmllZCBzaW5jZQotKwkJCSAg ICAjIHRoZXkgaGF2ZSBiZWVuIHJ1bi4gIFRoZXkgY2Fubm90IGJlIHVzZWQgZm9yCi0rCQkJICAg ICMgcHJvYmxlbSByZXByb2R1Y2liaWxpdHkgYWZ0ZXIgdGhlIHRlc3RjYXNlIGVuZHMuCi0rCQkJ ICAgIHNldCBleGVjX2RlYnVnIFtzeXN0ZW1fZGVidWdfZ2V0ICRleGVjXQotKwkJCSAgICBpZiB7 JGV4ZWNfZGVidWcgIT0gIiJ9IHsKLSsJCQkJIyBgZmlsZSBkZWxldGUgW2dsb2IgIiR7ZXhlY19k ZWJ1Z30qIl0nIGRvZXMgbm90IHdvcmsuCi0rCQkJCWZvcmVhY2ggZiBbZ2xvYiAiJHtleGVjX2Rl YnVnfSoiXSB7Ci0rCQkJCSAgICBmaWxlIGRlbGV0ZSAkZgotKwkJCQl9Ci0rCQkJICAgIH0KLSsJ CQkgICAgZmlsZSBkZWxldGUgLWZvcmNlICRkaXIKLSsJCQkgICAgIyBgZmlsZSBkZWxldGUgW2ds b2IgIiR7ZXhlY30qIl0nIGRvZXMgbm90IHdvcmsuCi0rCQkJICAgIGZvcmVhY2ggZiBbZ2xvYiAi JHtleGVjfSoiXSB7Ci0rCQkJCWZpbGUgZGVsZXRlICRmCi0rCQkJICAgIH0KLSAJCQl9Ci0tCQkJ dGVzdF9sZCAkZXhlYyAxIFtleHByIHskYmluc2VwZGVidWcgPT0gIk5PIn1dICRkaXNwbGFjZW1l bnQKLSAJCSAgICB9Ci0gCQl9Ci0gCSAgICB9Ci0KCmRpZmYgLS1naXQgYS9nZGItcGllLTJvZjYt cmVwcmVsaW5rZWQtbGQucGF0Y2ggYi9nZGItcGllLTJvZjYtcmVwcmVsaW5rZWQtbGQucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMDU0YTguLjAwMDAwMDAKLS0tIGEvZ2Ri LXBpZS0yb2Y2LXJlcHJlbGlua2VkLWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAs MCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDMvbXNnMDEw MDAuaHRtbAotU3ViamVjdDogW3BhdGNoIDIvNl0gUElFOiBBdHRhY2ggYmluYXJ5IGV2ZW4gYWZ0 ZXIgbGQuc28gcmUtcHJlbGlua2VkICB1bmRlcm5lYXRoCi0KLUhpLAotCi13aGVuIEkgaGF2ZSBz ZWVuIHRoZSBQSUUtYmluYXJ5LWNoYW5nZWQtc2ljZS1zdGFydCB0ZXN0ZWQgYWxzbwotbGQuc28t Y2hhbmdlZC1zaW5jZS1zdGFydCBhbmQgaXQgZGlkIG5vdCB3b3JrLgotCi1UaGVyZSBpcyBxdWVz dGlvbmFibGUgd2hlbiB0byBwcmludCBhbmQgd2hlbiB0byBub3QgdG8gcHJpbnQgbm9uLWZhdGFs IG1lbW9yeQotcmVhZCBlcnJvcnMuICBTaW1pbGFyIGNoYW5nZSBJIHJlcXVlc3RlZCBpbgotCVJl OiBbUkZDL2lhNjRdIG1lbW9yeSBlcnJvciB3aGVuIHJlYWRpbmcgd3JvbmcgY29yZSBmaWxlCi0J aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDIvbXNnMDAwMDEuaHRt bAotc28gdGhhdCBHREIgcHJpbnRzIGF0IGxlYXN0IGFzIGEgd2FybmluZwotCUNhbm5vdCBhY2Nl c3MgbWVtb3J5IGF0IGFkZHJlc3MgLi4uCi13aGVuIHNvbWUgdW5leHBlY3RlZCBlcnJvciBoYXBw ZW5zLgotCi1Db250cmFyeSB0byBpdCB0aGVyZSBpcyBub3Qgc3VjaCB3YXJuaW5nIHByZXNlbnQg aW4gdGhlIGNvZGUgYmVsb3cgYXMgaW4gdGhlCi1jYXNlIG9mIG5vbi12YWxncmluZCBQSUUgd2l0 aCByZS1wcmVsaW5rZWQgbGQuc28gdGhlIG1lbW9yeSByZWFkIGVycm9yIGhhcHBlbnMKLXRoZXJl LiAgU29tZSBHREIgY29kZSByZXdvcmsgY291bGQgcHJvYmFibHkgYXZvaWQgaXQuCi0KLUp1c3Qg Zm9yIGV4YW1wbGUgYWxsIHRoZSBtZW1vcnkgcmVhZCBlcnJvcnMgaW4gcmVhZF9wcm9ncmFtX2hl YWRlciBvciBldmVuCi0tIHByaW1hcmlseSAtIHNjYW5fZHludGFnIGFyZSBjdXJyZW50bHkgSU1P LWluY29ycmVjdGx5IHNpbGVudCBhbmQgb3RoZXJzLgotVGhlcmVmb3JlIHBvc3RlZCB0aGUgcGF0 Y2ggdGhpcyB3YXksIG1ha2luZyBhbGwgdGhlc2Ugd2FybmluZ3MgcHJpbnRlZCBhbmQKLXBvc3Np Ymx5IGZpeGluZyBjb2RlIGF0dGVtcHRpbmcgaW5jb3JyZWN0IHJlYWRzIGFsb25nIHRoZSB3YXkg Y291bGQgYmUgZG9uZSBieQotYSBkaWZmZXJlbnQgcGF0Y2guCi0KLU5vIHJlZ3Jlc3Npb25zIG9u IHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExMi1saW51eC1nbnUgZm9yIHRoZSB3aG9s ZQotcGF0Y2ggc2VyaWVzIHRvZ2V0aGVyLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIw MTAtMDMtMjkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQot CSogYXV4di5jIChsZF9zb194ZmVyX2F1eHYpOiBEbyBub3QgZXJyb3Igb24gZmFpbGVkIHJlYWQg b2YgZGF0YV9hZGRyZXNzLgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMC0wMy0yOSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9icmVhay1p bnRlcnAuZXhwICh0ZXN0X2F0dGFjaCk6IEtlZXAgJGludGVycCBjaGFuZ2VkLiAgTW92ZQotCWl0 cyByZXN0b3JlIGFmdGVyIHRoZSA8JHJlbGlua19hcmdzICE9ICIiPiBsb29wLiAgbmV3IGNvbW1l bnQuCi0KLS0tLSBhL2dkYi9hdXh2LmMKLSsrKyBiL2dkYi9hdXh2LmMKLUBAIC05Niw3ICs5Niwx NiBAQCBsZF9zb194ZmVyX2F1eHYgKGdkYl9ieXRlICpyZWFkYnVmLAotIAotICAgcG9pbnRlcl9h ZGRyZXNzID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOwotIAotLSAgZGF0YV9hZGRyZXNz ID0gcmVhZF9tZW1vcnlfdHlwZWRfYWRkcmVzcyAocG9pbnRlcl9hZGRyZXNzLCBwdHJfdHlwZSk7 Ci0rICAvKiBXaGlsZSBpdCBpcyBhbiBlcnJvciBJIGFtIG5vdCBhd2FyZSBob3cgdG8gc29sdmUg YXR0YWNoaW5nIHRvIFBJRSB1bmRlcgotKyAgICAgdmFsZ3JpbmQgLS1kYi1hdHRhY2g9eWVzIGRp ZmZlcmVudCB3YXkgd2hlbiBsZC5zbyBvbi1kaXNrIGZpbGUgaGFzIHByZWxpbmsKLSsgICAgIGNo YW5nZSBpbiB0aGUgbWVhbnRpbWUuICBDdXJyZW50bHkgR0RCIHdpbGwgZHJvcCBiYWNrIHRvIHBy b2Nmc194ZmVyX2F1eHYKLSsgICAgIChzbyB0aGF0IGF0IGxlYXN0IG5vbi12YWxncmluZCBQSUUg YXR0YWNobWVudHMgd2l0aCBwcmVsaW5rIGNoYW5nZSBvZgotKyAgICAgbGQuc28gd29yaykuICBU byBtYWtlIGl0IHdvcmtpbmcgZXZlbiB3aXRoIHZhbGdyaW5kIGlzIFBSIDExNDQwIHJlcXVpcmlu ZwotKyAgICAgYSB2YWxncmluZCBleHRlbnNpb24uICAqLwotKyAgaWYgKHRhcmdldF9yZWFkX21l bW9yeSAocG9pbnRlcl9hZGRyZXNzLCBwdHJfYnVmLCBwdHJfc2l6ZSkgIT0gMCkKLSsgICAgcmV0 dXJuIC0xOwotKwotKyAgZGF0YV9hZGRyZXNzID0gZXh0cmFjdF90eXBlZF9hZGRyZXNzIChwdHJf YnVmLCBwdHJfdHlwZSk7Ci0gCi0gICAvKiBQb3NzaWJseSBzdGlsbCBub3QgaW5pdGlhbGl6ZWQg c3VjaCBhcyBkdXJpbmcgYW4gaW5mZXJpb3Igc3RhcnR1cC4gICovCi0gICBpZiAoZGF0YV9hZGRy ZXNzID09IDApCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAotQEAgLTQxOSwx MiArNDE5LDE2IEBAIHByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxhY2VtZW50IHtyZWxpbmtf YXJncyAiIn19IHsKLSAJZ2xvYmFsIGV4ZWMgaW50ZXJwX3NhdmVkIGludGVycAotIAotIAlmb3Jl YWNoIHJlbGluayB7WUVTIE5PfSB7Ci0tCSAgICBpZiB7W3ByZWxpbmskcmVsaW5rICRyZWxpbmtf YXJncyBbZmlsZSB0YWlsICRleGVjXV0KLS0JICAgICAgICAmJiBbY29weSAkaW50ZXJwX3NhdmVk ICRpbnRlcnBdfSB7Ci0rCSAgICAjIEl0IHdvdWxkIGJlIG1vcmUgY29ycmVjdCB0byBhbHNvIFtj b3B5ICRpbnRlcnBfc2F2ZWQgJGludGVycF0KLSsJICAgICMgaGVyZSB0byByZWFsbHkgdGVzdCBq dXN0IGRpZmZlcmVudCBwcmVsaW5rIG9mICRleGVjLgotKwkgICAgIyBCdXQgd2Ugd291bGQgbmVl ZCBhIHNlcGFyYXRlIHRlc3QgZm9yIGRpZmZlcmVudCBwcmVsaW5rIG9mIGxkLnNvCi0rCSAgICAj IHdoZXJlIGEgYnVnIG9jY3VyZWQuICBJdCBpcyBub3cgYWxsIG1lcmdlZCBpbnRvIHRoaXMgc2lu Z2xlIHRlc3QuCi0rCSAgICBpZiBbcHJlbGluayRyZWxpbmsgJHJlbGlua19hcmdzIFtmaWxlIHRh aWwgJGV4ZWNdXSB7Ci0gCQkjIC9wcm9jL1BJRC9leGUgY2Fubm90IGJlIGxvYWRlZCBhcyBpdCBp cyAiRVhFQ05BTUUgKGRlbGV0ZWQpIi4KLSAJCXRlc3RfYXR0YWNoX2dkYiAkZXhlYyAkcGlkICRk aXNwbGFjZW1lbnQgImF0dGFjaC1yZWxpbmskcmVsaW5rIgotIAkgICAgfQotIAl9Ci0rCWNvcHkg JGludGVycF9zYXZlZCAkaW50ZXJwCi0gICAgIH0KLSAKLSAgICAgcmVtb3RlX2V4ZWMgaG9zdCAi a2lsbCAtOSAkcGlkIgotCgpkaWZmIC0tZ2l0IGEvZ2RiLXBpZS0zb2Y2LXJlbG9jYXRlLW9uY2Uu cGF0Y2ggYi9nZGItcGllLTNvZjYtcmVsb2NhdGUtb25jZS5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMzk3YTVkYi4uMDAwMDAwMAotLS0gYS9nZGItcGllLTNvZjYtcmVsb2Nh dGUtb25jZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxMiArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMy9tc2cwMTAwMS5odG1sCi1TdWJqZWN0 OiBbcGF0Y2ggMy82XSBQSUU6IEZpeCBvY2Nhc2lvbmFsIGVycm9yIGF0dGFjaGluZyBpNjg2IGJp bmFyeQotCi1bIFRlc3RjYXNlIGRpZmYgYmFja3BvcnRlZC4gIF0KLQotSGksCi0KLXRoaXMgaXMg dGhlIHJlYWwgYnVncmVwb3J0IHdoaWNoIHN0YXJ0ZWQgdGhpcyBwYXRjaCBzZXJpZXMuCi0JZ2Ri ICJDYW5ub3QgYWNjZXNzIG1lbW9yeSIgb24gYSBydW5uaW5nIHByb2Nlc3MKLQlodHRwczovL2J1 Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTU3Njc0MgotCi1PZmZzZXRzIG9uIGk2 ODYgY2F1c2UgdGhhdCB3aGlsZSBhdHRhY2hpbmcgdG8gYW4gdW5wcmVsaW5rZWQgcnVubmluZyBQ SUUKLXNjYW5fZHludGFnIHdpbGwgaW5jb3JyZWN0bHkgZ2V0IGEgc3VjY2Vzc2Z1bCByZWFkIGlu IHNjYW5fZHludGFnIGZyb20gRFRfREVCVUcKLWl0IGV4cGVjdHMgaXMgZnJvbSB0aGUgbWFuaSBl eGVjdXRhYmxlIGJ1dCBpbiBmYWN0IGl0IGlzIGZyb20gc29tZSBsZC5zbyBvcgotbGliYy5zbyAo bG9jYXRlZCBsb3cgZm9yIC0tZXhlYy1zaGllbGQpLiAgQW5vdGhlciBpc3N1ZSBpcyB0aGF0IHNj YW5fZHludGFnCi1jb3VsZCB2ZXJpZnkgbW9yZSB0aGF0IHRoZSB0YXJnZXQgbWVtb3J5IG1hdGNo ZXMgdGhlIC5keW5hbWljIHNlY3Rpb24gaXQgaXMKLXJlYWRpbmcgZnJvbSBleGVjX2JmZC4gIEl0 IGNvdWxkIGFsc28gY29tcGxhaW4gd2hlbiB0aGUgcmVhZCBmYWlsZWQgKGFzIGFsd2F5cwotZmFp bGVkIHNvIGZvciBmb3IgUElFIGF0dGFjaGVzIGZpcnN0LCBzdWNjZWVkZWQgbGF0ZXIgc28gbm9i b2R5IGhhcyBub3RpY2VkCi1hbnl0aGluZykuCi0KLVRoZSBzdWNjZXNzZnVsIHJlYWQgcmVhZHMg YSBib2d1cyBEVF9ERUJVRyB2YWx1ZSBhbmQgR0RCIGVycm9ycyBvbiBpdCBsYXRlci4KLVRoaXMg aXMgYWdhaW4gYSBub24tZmF0YWwgZXJyb3IgYWZ0ZXIgdGhlIHBhdGNoIGJ5IEpvZWwgQnJvYmVj a2VyIGFib3ZlIGJ1dCBpdAotd2FzIG5vdCBzbyBiZWZvcmUgYW5kIGl0IGlzIGluY29ycmVjdCBh bnl3YXkuCi0KLVRoZSBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSBjYWxsIGluIHN2cjRf c3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcgd2FzCi10aGVyZSBiZWZvcmUgZGVsYXllZCB0aGF0IHdh eSBmb3Igc3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFjZW1lbnQuCi1CdXQgc3ZyNF9zdGF0aWNfZXhl Y19kaXNwbGFjZW1lbnQgaGFzIGJlZW4gcmVtb3ZlZCBpbiB0aGUgbWVhbnRpbWUgYnk6Ci0JUmU6 IFJGQzogVmVyaWZ5IEFUX0VOVFJZIGJlZm9yZSB1c2luZyBpdAotCWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMDMwLmh0bWwKLQotU28gaXQgY2FuIGJl IHNpbXBsaWZpZWQgKyBjb3JyZWN0ZWQgbm93LiAgTW9yZW92ZXIgR0RCIHdpbGwgbm93IGZpbmFs bHkgcHJpbnQKLWV4YWN0bHkgIlVzaW5nIFBJRSAoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0 YWJsZSkgZGlzcGxhY2VtZW50IiBleGFjdGx5Ci1vbmNlLgotCi1UaGUgcmVwcm9kdWNlciBkZXBl bmRzIG9uIHZhcmlvdXMgb2Zmc2V0cyB3aGljaCBtYXkgYmUgZGlzdHJvIGRlcGVuZGVudCBidXQg aXQKLXdhcyBtYWRlIHNvIHRoYXQgaXQgaXMgaG9wZWZ1bGx5IHJlcHJvZHVjaWJsZSBldmVyeXdo ZXJlLiAgUmVwcm9kdWNlZCArIGZpeGVkCi1vbiBGZWRvcmEgMTIgeDg2XzY0IGFuZCBpNjg2Lgot Ci1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGlu dXgtZ251IGZvciB0aGUgd2hvbGUKLXBhdGNoIHNlcmllcyB0b2dldGhlci4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi1nZGIvCi0yMDEwLTAzLTI5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQkqIGF1eHYuYyAobWVtb3J5X3hmZXJfYXV4dik6IFVwZGF0ZSBh dHRhY2ggY29tbWVudC4KLQkqIHNvbGliLXN2cjQuYyAoc3ZyNF9zcGVjaWFsX3N5bWJvbF9oYW5k bGluZyk6IFJlbW92ZSB0aGUgY2FsbCB0bwotCXN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxl LgotCShzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rKTogTWFrZSB0aGUgY2FsbCB0bwot CXN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlIHVuY29uZGl0aW9uYWwuCi0KLWdkYi90ZXN0 c3VpdGUvCi0yMDEwLTAzLTI5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0KLQkqIGdkYi5iYXNlL2F0dGFjaC1waWUtbWlzcmVhZC5leHAsIGdkYi5iYXNlL2F0 dGFjaC1waWUtbWlzcmVhZC5jOiBOZXcuCi0KLS0tLSBhL2dkYi9hdXh2LmMKLSsrKyBiL2dkYi9h dXh2LmMKLUBAIC0xOTgsNyArMTk4LDggQEAgbWVtb3J5X3hmZXJfYXV4diAoc3RydWN0IHRhcmdl dF9vcHMgKm9wcywKLSAKLSAgICAvKiBsZF9zb194ZmVyX2F1eHYgaXMgdGhlIG9ubHkgZnVuY3Rp b24gc2FmZSBmb3IgdmlydHVhbCBleGVjdXRhYmxlcyBiZWluZwotICAgICAgIGV4ZWN1dGVkIGJ5 IHZhbGdyaW5kJ3MgbWVtY2hlY2suICBBcyB1c2luZyBsZF9zb194ZmVyX2F1eHYgaXMgcHJvYmxl bWF0aWMKLS0gICAgICBkdXJpbmcgaW5mZXJpb3Igc3RhcnR1cCBHREIgZG9lcyBjYWxsIGl0IG9u bHkgZm9yIGF0dGFjaGVkIHByb2Nlc3Nlcy4gICovCi0rICAgICAgZHVyaW5nIGluZmVyaW9yIHN0 YXJ0dXAgYXMgbGQuc28gc3ltYm9sIHRhYmxlcyBhcmUgbm90IHlldCByZWxvY2F0ZWQgR0RCCi0r ICAgICAgY2FsbHMgbGRfc29feGZlcl9hdXh2IG9ubHkgZm9yIGF0dGFjaGVkIHByb2Nlc3Nlcy4g ICovCi0gCi0gICBpZiAoY3VycmVudF9pbmZlcmlvciAoKS0+YXR0YWNoX2ZsYWcgIT0gMCkKLSAg ICAgewotLS0tIGEvZ2RiL3NvbGliLXN2cjQuYwotKysrIGIvZ2RiL3NvbGliLXN2cjQuYwotQEAg LTE2MjgsNyArMTYyOCw2IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywg aW50IGZyb21fdHR5KQotIHN0YXRpYyB2b2lkCi0gc3ZyNF9zcGVjaWFsX3N5bWJvbF9oYW5kbGlu ZyAodm9pZCkKLSB7Ci0tICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKLSB9Ci0g Ci0gLyogUmVhZCB0aGUgRUxGIHByb2dyYW0gaGVhZGVycyBmcm9tIEFCRkQuICBSZXR1cm4gdGhl IGNvbnRlbnRzIGFuZAotQEAgLTIwNjUsOCArMjA2NCw3IEBAIHN2cjRfc29saWJfY3JlYXRlX2lu ZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSAgIGluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOwot IAotICAgLyogUmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkuICAqLwot LSAgaWYgKGN1cnJlbnRfaW5mZXJpb3IgKCktPmF0dGFjaF9mbGFnID09IDApCi0tICAgIHN2cjRf cmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICgpOwotKyAgc3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1 dGFibGUgKCk7Ci0gCi0gICBpZiAoIXN2cjRfaGF2ZV9saW5rX21hcF9vZmZzZXRzICgpKQotICAg ICByZXR1cm47Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0 dGFjaC1waWUtbWlzcmVhZC5jCi1AQCAtMCwwICsxLDQ3IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHVu aXN0ZC5oPgotKwotK2NvbnN0IGNoYXIgc3R1YltdID0gewotKyNpZmRlZiBHRU4KLSsjIGluY2x1 ZGUgR0VOCi0rI2VuZGlmCi0rfTsKLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFy Z3YpCi0rewotKyAgLyogR2VuZXJhdG9yIG9mIEdFTiB3cml0dGVuIGluIFB5dGhvbiB0YWtlcyBh Ym91dCAxNXMgZm9yIHg4Nl82NCdzIDRNQi4gICovCi0rICBpZiAoYXJnYyA9PSAyKQotKyAgICB7 Ci0rICAgICAgbG9uZyBjb3VudCA9IHN0cnRvbCAoYXJndlsxXSwgTlVMTCwgMCk7Ci0rCi0rICAg ICAgd2hpbGUgKGNvdW50LS0gPiAwKQotKwlwdXRzICgiMHg1NSwiKTsKLSsKLSsgICAgICByZXR1 cm4gMDsKLSsgICAgfQotKyAgaWYgKGFyZ2MgIT0gMSkKLSsgICAgcmV0dXJuIDE7Ci0rCi0rICBw dXRzICgic2xlZXBpbmciKTsKLSsgIGZmbHVzaCAoc3Rkb3V0KTsKLSsKLSsgIHJldHVybiBzbGVl cCAoNjApOwotK30KLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YXR0YWNoLXBpZS1taXNyZWFkLmV4cAotQEAgLTAsMCArMSwyMDkgQEAKLSsjIENvcHlyaWdodCAy MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgdGVzdCBvbmx5IHdvcmtzIG9uIEdOVS9MaW51eC4KLStp ZiB7ICFbaXNuYXRpdmVdIHx8IFtpc19yZW1vdGUgaG9zdF0gfHwgIVtpc3RhcmdldCAqLWxpbnV4 Kl0gfHwgW3NraXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIGNvbnRpbnVlCi0rfQotKwotK3NldCB0 ZXN0ICJhdHRhY2gtcGllLW1pc3JlYWQiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0fS5jCi0rc2V0IGdl bmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9LWdlbi5oCi0rc2V0IGV4ZWN1dGFibGUg JHt0ZXN0fQotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQot KwotK2lmIHtbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3R9LmV4cCAkZXhlY3V0YWJsZSAkc3JjZmls ZSBbbGlzdCAiYWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGllIl1dID09IC0xfSB7Ci0rICAgIHJl dHVybiAtMQotK30KLSsKLSsjIFByb2dyYW0gSGVhZGVyczoKLSsjICAgVHlwZSAgICAgICAgICAg T2Zmc2V0ICAgVmlydEFkZHIgICAgICAgICAgIFBoeXNBZGRyICAgICAgICAgICBGaWxlU2l6ICBN ZW1TaXogICBGbGcgQWxpZ24KLSsjICAgTE9BRCAgICAgICAgICAgMHgwMDAwMDAgMHgwMDAwMDAw MDAwNDAwMDAwIDB4MDAwMDAwMDAwMDQwMDAwMCAweDEzNGY1ZWMgMHgxMzRmNWVjIFIgRSAweDIw MDAwMAotKyMgICBMT0FEICAgICAgICAgICAweDEzNGY1ZjAgMHgwMDAwMDAwMDAxOTRmNWYwIDB4 MDAwMDAwMDAwMTk0ZjVmMCAweDFkYmM2MCAweDIxNDA4OCBSVyAgMHgyMDAwMDAKLSsjICAgRFlO QU1JQyAgICAgICAgMHgxMzRmNjE4IDB4MDAwMDAwMDAwMTk0ZjYxOCAweDAwMDAwMDAwMDE5NGY2 MTggMHgwMDAyMDAgMHgwMDAyMDAgUlcgIDB4OAotKyMKLStwcm9jIHJlYWRfcGhkciB7YmluZmls ZSB0ZXN0fSB7Ci0rICAgIHNldCByZWFkZWxmX3Byb2dyYW0gW3RyYW5zZm9ybSByZWFkZWxmXQot KyAgICBzZXQgY29tbWFuZCAiZXhlYyAkcmVhZGVsZl9wcm9ncmFtIC1XbCAkYmluZmlsZSIKLSsg ICAgdmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgotKyAgICBzZXQgcmVzdWx0IFtj YXRjaCAkY29tbWFuZCBvdXRwdXRdCi0rICAgIHZlcmJvc2UgLWxvZyAicmVzdWx0IGlzICRyZXN1 bHQiCi0rICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCi0rICAgIGlmIHskcmVz dWx0ICE9IDB9IHsKLSsJZmFpbCAkdGVzdAotKwlyZXR1cm4KLSsgICAgfQotKyAgICBpZiAhW3Jl Z2V4cCB7XG5Qcm9ncmFtIEhlYWRlcnM6XG4gKlR5cGUgW15cbl0qIEFsaWduXG4oLio/KVxuXG59 ICRvdXRwdXQgdHJhc2ggcGhkcl0gewotKwlmYWlsICIkdGVzdCAobm8gUHJvZ3JhbSBIZWFkZXJz KSIKLSsJcmV0dXJuCi0rICAgIH0KLSsgICAgaWYgIVtyZWdleHAgLWxpbmUge14gKkRZTkFNSUMg KzB4WzAtOWEtZl0rICsoMHhbMC05YS1mXSspIH0gJHBoZHIgdHJhc2ggZHluYW1pY192YWRkcl0g ewotKwlmYWlsICIkdGVzdCAobm8gRFlOQU1JQyBmb3VuZCkiCi0rCXJldHVybgotKyAgICB9Ci0r ICAgIHZlcmJvc2UgLWxvZyAiZHluYW1pY192YWRkciBpcyAkZHluYW1pY192YWRkciIKLSsgICAg c2V0IGFsaWduX21heCAtMQotKyAgICBmb3JlYWNoIHt0cmFzaCBhbGlnbn0gW3JlZ2V4cCAtbGlu ZSAtYWxsIC1pbmxpbmUge14gKkxPQUQgLiogKDB4WzAtOV0rKSR9ICRwaGRyXSB7Ci0rCWlmIHsk YWxpZ25fbWF4IDwgJGFsaWdufSB7Ci0rCSAgICBzZXQgYWxpZ25fbWF4ICRhbGlnbgotKwl9Ci0r ICAgIH0KLSsgICAgdmVyYm9zZSAtbG9nICJhbGlnbl9tYXggaXMgJGFsaWduX21heCIKLSsgICAg aWYgeyRhbGlnbl9tYXggPT0gLTF9IHsKLSsJZmFpbCAiJHRlc3QgKG5vIExPQUQgZm91bmQpIgot KwlyZXR1cm4KLSsgICAgfQotKyAgICBwYXNzICR0ZXN0Ci0rICAgIHJldHVybiBbbGlzdCAkZHlu YW1pY192YWRkciAkYWxpZ25fbWF4XQotK30KLSsKLStzZXQgcGhkciBbcmVhZF9waGRyICRiaW5m aWxlICJyZWFkZWxmIGluaXRpYWwgc2NhbiJdCi0rc2V0IGR5bmFtaWNfdmFkZHIgW2xpbmRleCAk cGhkciAwXQotK3NldCBhbGlnbl9tYXggW2xpbmRleCAkcGhkciAxXQotKwotK3NldCBzdHViX3Np emUgW2Zvcm1hdCAweCV4IFtleHByICIyICogJGFsaWduX21heCAtICgkZHluYW1pY192YWRkciAm ICgkYWxpZ25fbWF4IC0gMSkpIl1dCi0rdmVyYm9zZSAtbG9nICJzdHViX3NpemUgaXMgJHN0dWJf c2l6ZSIKLSsKLSsjIE9uIHg4Nl82NCBpdCBpcyBjb21tb25seSBhYm91dCA0TUIuCi0raWYgeyRz dHViX3NpemUgPiAyNTAwMDAwMH0gewotKyAgICB4ZmFpbCAic3R1YiBzaXplICRzdHViX3NpemUg aXMgdG9vIGxhcmdlIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3QgImdlbmVyYXRlIHN0 dWIiCi0rc2V0IGNvbW1hbmQgImV4ZWMgJGJpbmZpbGUgJHN0dWJfc2l6ZSA+JGdlbmZpbGUiCi0r dmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgotK3NldCByZXN1bHQgW2NhdGNoICRj b21tYW5kIG91dHB1dF0KLSt2ZXJib3NlIC1sb2cgInJlc3VsdCBpcyAkcmVzdWx0IgotK3ZlcmJv c2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCi0raWYgeyRyZXN1bHQgPT0gMH0gewotKyAgICBw YXNzICR0ZXN0Ci0rfSBlbHNlIHsKLSsgICAgZmFpbCAkdGVzdAotK30KLSsKLStpZiB7W2J1aWxk X2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgJGV4ZWN1dGFibGUgJHNyY2ZpbGUgW2xpc3QgImFkZGl0 aW9uYWxfZmxhZ3M9LWZQSUUgLXBpZSAtREdFTj1cIiRnZW5maWxlXCIiXV0gPT0gLTF9IHsKLSsg ICAgcmV0dXJuIC0xCi0rfQotKwotKyMgeDg2XzY0IGZpbGUgaGFzIDI1TUIsIG5vIG5lZWQgdG8g a2VlcCBpdC4KLStmaWxlIGRlbGV0ZSAtLSAkZ2VuZmlsZQotKwotK3NldCBwaGRyIFtyZWFkX3Bo ZHIgJGJpbmZpbGUgInJlYWRlbGYgcmVidWlsdCB3aXRoIHN0dWJfc2l6ZSJdCi0rc2V0IGR5bmFt aWNfdmFkZHJfcHJlbGlua25vIFtsaW5kZXggJHBoZHIgMF0KLSsKLStzZXQgY29tbWFuZCAiZXhl YyAvdXNyL3NiaW4vcHJlbGluayAtcSAtTiAtLW5vLWV4ZWMtc2hpZWxkIC1SICRiaW5maWxlIgot K3ZlcmJvc2UgLWxvZyAiY29tbWFuZCBpcyAkY29tbWFuZCIKLStzZXQgcmVzdWx0IFtjYXRjaCAk Y29tbWFuZCBvdXRwdXRdCi0rdmVyYm9zZSAtbG9nICJyZXN1bHQgaXMgJHJlc3VsdCIKLSt2ZXJi b3NlIC1sb2cgIm91dHB1dCBpcyAkb3V0cHV0IgotKwotK3NldCB0ZXN0ICJwcmVsaW5rIC1SIgot K2lmIHskcmVzdWx0ID09IDAgJiYgJG91dHB1dCA9PSAiIn0gewotKyAgICBwYXNzICR0ZXN0Ci0r fSBlbHNlaWYgeyRyZXN1bHQgPT0gMSAmJiBbcmVnZXhwIHteKGNvdWxkbid0IGV4ZWN1dGUgIi91 c3Ivc2Jpbi9wcmVsaW5rW15cclxuXSoiOiBubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XG4/KSok fSAkb3V0cHV0XX0gewotKyAgICB1bnRlc3RlZCBhdHRhY2gtcGllLW1pc3JlYWQuZXhwCi0rICAg IHJldHVybiAtMQotK30gZWxzZSB7Ci0rICAgIGZhaWwgJHRlc3QKLSt9Ci0rCi0rc2V0IHBoZHIg W3JlYWRfcGhkciAkYmluZmlsZSAicmVhZGVsZiB3aXRoIHByZWxpbmsgLVIiXQotK3NldCBkeW5h bWljX3ZhZGRyX3ByZWxpbmt5ZXMgW2xpbmRleCAkcGhkciAwXQotKwotK3NldCBmaXJzdF9vZmZz ZXQgW2Zvcm1hdCAweCV4IFtleHByICRkeW5hbWljX3ZhZGRyX3ByZWxpbmt5ZXMgLSAkZHluYW1p Y192YWRkcl9wcmVsaW5rbm9dXQotK3ZlcmJvc2UgLWxvZyAiZmlyc3Rfb2Zmc2V0IGlzICRmaXJz dF9vZmZzZXQiCi0rCi0rc2V0IHRlc3QgImZpcnN0IG9mZnNldCBpcyBub24temVybyIKLStpZiB7 JGZpcnN0X29mZnNldCA9PSAwfSB7Ci0rICAgIGZhaWwgIiR0ZXN0ICgtZlBJRSAtcGllIGluIGVm ZmVjdD8pIgotK30gZWxzZSB7Ci0rICAgIHBhc3MgJHRlc3QKLSt9Ci0rCi0rc2V0IHRlc3QgInN0 YXJ0IGluZmVyaW9yIgotK2dkYl9leGl0Ci0rCi0rc2V0IHJlcyBbcmVtb3RlX3NwYXduIGhvc3Qg JGJpbmZpbGVdOwotK2lmIHsgJHJlcyA8IDAgfHwgJHJlcyA9PSAiIiB9IHsKLSsgICAgcGVycm9y ICJTcGF3bmluZyAkYmluZmlsZSBmYWlsZWQuIgotKyAgICBmYWlsICR0ZXN0Ci0rICAgIHJldHVy bgotK30KLStzZXQgcGlkIFtleHBfcGlkIC1pICRyZXNdCi0rZ2RiX2V4cGVjdCB7Ci0rICAgIC1y ZSAic2xlZXBpbmdcclxuIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICBlb2YgewotKwlm YWlsICIkdGVzdCAoZW9mKSIKLSsJcmVtb3RlX2V4ZWMgaG9zdCAia2lsbCAtOSAkcGlkIgotKwly ZXR1cm4KLSsgICAgfQotKyAgICB0aW1lb3V0IHsKLSsJZmFpbCAiJHRlc3QgKHRpbWVvdXQpIgot KwlyZW1vdGVfZXhlYyBob3N0ICJraWxsIC05ICRwaWQiCi0rCXJldHVybgotKyAgICB9Ci0rfQot KwotKyMgRHVlIHRvIGFsaWdubWVudHMgaXQgd2FzIHJlcHJvZHVjaWJsZSB3aXRoIDEgb24geDg2 XzY0IGJ1dCAyIG9uIGk2ODYuCi0rZm9yZWFjaCBhbGlnbl9tdWx0IHsxIDJ9IHsKLSsgICAgc2V0 IG9sZF9sZHByZWZpeCAkcGZfcHJlZml4Ci0rICAgIGxhcHBlbmQgcGZfcHJlZml4ICJzaGlmdC1i eS0kYWxpZ25fbXVsdDoiCi0rCi0rICAgICMgRklYTUU6IFdlIGJlbGlldmUgdGhlcmUgaXMgZW5v dWdoIHJvb20gdW5kZXIgRklSU1RfT0ZGU0VULgotKyAgICBzZXQgc2hpZnRlZF9vZmZzZXQgW2Zv cm1hdCAweCV4IFtleHByICIkZmlyc3Rfb2Zmc2V0IC0gJGFsaWduX211bHQgKiAkYWxpZ25fbWF4 Il1dCi0rICAgIHZlcmJvc2UgLWxvZyAic2hpZnRlZF9vZmZzZXQgaXMgJHNoaWZ0ZWRfb2Zmc2V0 IgotKwotKyAgICBzZXQgY29tbWFuZCAiZXhlYyAvdXNyL3NiaW4vcHJlbGluayAtcSAtTiAtLW5v LWV4ZWMtc2hpZWxkIC1yICRzaGlmdGVkX29mZnNldCAkYmluZmlsZSIKLSsgICAgdmVyYm9zZSAt bG9nICJjb21tYW5kIGlzICRjb21tYW5kIgotKyAgICBzZXQgcmVzdWx0IFtjYXRjaCAkY29tbWFu ZCBvdXRwdXRdCi0rICAgIHZlcmJvc2UgLWxvZyAicmVzdWx0IGlzICRyZXN1bHQiCi0rICAgIHZl cmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCi0rCi0rICAgIHNldCB0ZXN0ICJwcmVsaW5r IC1yIgotKyAgICBpZiB7JHJlc3VsdCA9PSAwICYmICRvdXRwdXQgPT0gIiJ9IHsKLSsJcGFzcyAk dGVzdAotKyAgICB9IGVsc2UgewotKwlmYWlsICR0ZXN0Ci0rICAgIH0KLSsKLSsgICAgY2xlYW5f cmVzdGFydCAkZXhlY3V0YWJsZQotKwotKyAgICBzZXQgdGVzdCAiYXR0YWNoIgotKyAgICBnZGJf dGVzdF9tdWx0aXBsZSAiYXR0YWNoICRwaWQiICR0ZXN0IHsKLSsJLXJlICJBdHRhY2hpbmcgdG8g cHJvZ3JhbTogLiosIHByb2Nlc3MgJHBpZFxyXG4iIHsKLSsJICAgICMgTWlzc2luZyAiJGdkYl9w cm9tcHQgJCIgaXMgaW50ZW50aW9uYWwuCi0rCSAgICBwYXNzICR0ZXN0Ci0rCX0KLSsgICAgfQot KwotKyAgICBzZXQgdGVzdCAiZXJyb3Igb24gQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVz cyIKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKwktcmUgIlxyXG5DYW5ub3Qg YWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIC4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAk dGVzdAotKwl9Ci0rCS1yZSAiJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAkdGVzdAotKwl9 Ci0rICAgIH0KLSsKLSsgICAgZ2RiX3Rlc3QgImRldGFjaCIgIkRldGFjaGluZyBmcm9tIHByb2dy YW06IC4qIgotKwotKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKLSt9Ci0rCi0rcmVt b3RlX2V4ZWMgaG9zdCAia2lsbCAtOSAkcGlkIgotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9icmVhay1pbnRlcnAuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWlu dGVycC5leHAKLUBAIC0yNDgsOSArMjQ4LDggQEAgcHJvYyByZWFjaCB7ZnVuYyBjb21tYW5kIGRp c3BsYWNlbWVudH0gewotIAkJfQotIAkJaWYgeyRkaXNwbGFjZW1lbnQgPT0gJGNhc2V9IHsKLSAJ CSAgICBwYXNzICR0ZXN0X2Rpc3BsYWNlbWVudAotLQkJICAgICMgUGVybWl0IG11bHRpcGxlIHN1 Y2ggbWVzc2FnZXMuCi0gCQkgICAgc2V0IGRpc3BsYWNlbWVudCAiRk9VTkQtJGRpc3BsYWNlbWVu dCIKLS0JCX0gZWxzZWlmIHskZGlzcGxhY2VtZW50ICE9ICJGT1VORC0kY2FzZSJ9IHsKLSsJCX0g ZWxzZSB7Ci0gCQkgICAgZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSAJCX0KLSAJCWV4cF9jb250 aW51ZQotQEAgLTMwNCw5ICszMDMsOCBAQCBwcm9jIHRlc3RfY29yZSB7ZmlsZSBkaXNwbGFjZW1l bnR9IHsKLSAJICAgIH0KLSAJICAgIGlmIHskZGlzcGxhY2VtZW50ID09ICRjYXNlfSB7Ci0gCQlw YXNzICR0ZXN0X2Rpc3BsYWNlbWVudAotLQkJIyBQZXJtaXQgbXVsdGlwbGUgc3VjaCBtZXNzYWdl cy4KLSAJCXNldCBkaXNwbGFjZW1lbnQgIkZPVU5ELSRkaXNwbGFjZW1lbnQiCi0tCSAgICB9IGVs c2VpZiB7JGRpc3BsYWNlbWVudCAhPSAiRk9VTkQtJGNhc2UifSB7Ci0rCSAgICB9IGVsc2Ugewot IAkJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSAJICAgIH0KLSAJICAgIGV4cF9jb250aW51ZQot QEAgLTM2Miw5ICszNjAsOCBAQCBwcm9jIHRlc3RfYXR0YWNoX2dkYiB7ZmlsZSBwaWQgZGlzcGxh Y2VtZW50IHByZWZpeH0gewotIAkgICAgfQotIAkgICAgaWYgeyRkaXNwbGFjZW1lbnQgPT0gJGNh c2V9IHsKLSAJCXBhc3MgJHRlc3RfZGlzcGxhY2VtZW50Ci0tCQkjIFBlcm1pdCBtdWx0aXBsZSBz dWNoIG1lc3NhZ2VzLgotIAkJc2V0IGRpc3BsYWNlbWVudCAiRk9VTkQtJGRpc3BsYWNlbWVudCIK LS0JICAgIH0gZWxzZWlmIHskZGlzcGxhY2VtZW50ICE9ICJGT1VORC0kY2FzZSJ9IHsKLSsJICAg IH0gZWxzZSB7Ci0gCQlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAotIAkgICAgfQotIAkgICAgZXhw X2NvbnRpbnVlCi1AQCAtNDUxLDkgKzQ0OCw3IEBACi0gICAgIGdkYl90ZXN0ICJidCIgIiMwICtc W15cclxuXF0qXFxtZGxfbWFpblxcTS4qIiAiZGwgYnQiCi0gCi0gICAgIGlmICRpZm1haW4gewot LQkjIERpc3BsYWNlbWVudCBtZXNzYWdlIHdpbGwgYmUgcHJpbnRlZCB0aGUgc2Vjb25kIHRpbWUg b24gaW5pdGlhbGl6aW5nCi0tCSMgdGhlIGxpbmtlciBmcm9tIHN2cjRfc3BlY2lhbF9zeW1ib2xf aGFuZGxpbmcuCi0tCXJlYWNoICJtYWluIiBjb250aW51ZSAkZGlzcGxhY2VtZW50Ci0rCXJlYWNo ICJtYWluIiBjb250aW51ZSAiTk9ORSIKLSAKLSAJcmVhY2ggImxpYmZ1bmMiIGNvbnRpbnVlICJO T05FIgotIAotQEAgLTUyOCw5ICs1MTcsOCBAQCBwcm9jIHRlc3RfbGQge2ZpbGUgaWZtYWluIHRy eW5vc3ltIGRpc3BsYWNlbWVudH0gewotIAkJfQotIAkJaWYgeyRkaXNwbGFjZW1lbnQgPT0gJGNh c2V9IHsKLSAJCSAgICBwYXNzICR0ZXN0X2Rpc3BsYWNlbWVudAotLQkJICAgICMgUGVybWl0IG11 bHRpcGxlIHN1Y2ggbWVzc2FnZXMuCi0gCQkgICAgc2V0IGRpc3BsYWNlbWVudCAiRk9VTkQtJGRp c3BsYWNlbWVudCIKLS0JCX0gZWxzZWlmIHskZGlzcGxhY2VtZW50ICE9ICJGT1VORC0kY2FzZSJ9 IHsKLSsJCX0gZWxzZSB7Ci0gCQkgICAgZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSAJCX0KLSAJ CWV4cF9jb250aW51ZQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXBpZS1yZXJ1bi5wYXRjaCBiL2dkYi1w aWUtcmVydW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMDY4MDUuLjAw MDAwMDAKLS0tIGEvZ2RiLXBpZS1yZXJ1bi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyAr MCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMy9tc2cw MDg2OC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFBJRTogRml4IGJhY2sgcmUtcnVuICBbUmU6IFtw YXRjaF0gc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAgc3VjY2VzcyBpbmRpY2F0b3JdCi0KLUhpLAot Ci1jdXJyZW50bHk6Ci0KLSQgZWNobyAnbWFpbigpe30nfGdjYyAtbyAxIC1mUElFIC1waWUgLXgg YyAtOyAuL2dkYiAtbnggLWV4ICdzZXQgZGlzYWJsZS1yYW5kb21pemF0aW9uIG9mZicgLWV4ICdi IG1haW4nIC1leCByIC1leCBjIC1leCByIC4vMQotQnJlYWtwb2ludCAxIGF0IDB4NmIwCi1TdGFy dGluZyBwcm9ncmFtOiAvaG9tZS9qa3JhdG9jaC9yZWRoYXQvZ2RiLWNsZWFuL2dkYi90ZXN0c3Vp dGUvMSAKLUJyZWFrcG9pbnQgMSwgMHgwMDAwN2ZiZjczZThjNmIwIGluIG1haW4gKCkKLUNvbnRp bnVpbmcuCi1Qcm9ncmFtIGV4aXRlZCB3aXRoIGNvZGUgMDE0MC4KLVN0YXJ0aW5nIHByb2dyYW06 IC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL3Rlc3RzdWl0ZS8xIAotRXJyb3Ig aW4gcmUtc2V0dGluZyBicmVha3BvaW50IDE6IENhbm5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFkZHJl c3MgMHg3ZmJmNzNlOGM2YWMKLQotSXQgaXMgc2luY2U6Ci0JW3BhdGNoXSBzdnI0X2V4ZWNfZGlz cGxhY2VtZW50IHN1Y2Nlc3MgaW5kaWNhdG9yIFtSZTogUElFIHF1ZXN0aW9uXQotCWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMzM2Lmh0bWwKLQotCi1P biBNb24sIDA4IE1hciAyMDEwIDIyOjUzOjU4ICswMTAwLCBKYW4gS3JhdG9jaHZpbCB3cm90ZToK LT4gQXR0YWNoZWQgdGhlc2UgY2hhbmdlczoKLT4gCi0+ICogc3ZyNF9leGVjX2Rpc3BsYWNlbWVu dCBjYWxsaW5nIGNvbnZlbnRpb24gc2hvdWxkIGhhdmUgc3VjY2VzcyBpbmRpY2F0b3IuCi0+IAot PiAqIFByZXNlcnZpbmcgbm93IHNlY3Rpb25fb2Zmc2V0cyBpZiB0aGV5IGFyZSBhbHJlYWR5IHNl dCwgaW5zcGlyZWQgYnkKLT4gICBpbml0X29iamZpbGVfc2VjdF9pbmRpY2VzLgotPiAKLT4gSSBi ZWxpZXZlIGVpdGhlciBvZiBwYXJ0cyB3b3VsZCBiZSBzdWZmaWNpZW50IGZvciB0aGlzIHByb2Js ZW0uCi0KLVRoZSBmaXJzdCBwYXJ0IGhhcyBjYXVzZWQgdGhlIHJlZ3Jlc3Npb24gZm9yIFBJRSBv biBuYXRpdmUgeDg2KiBHTlUvTGludXggaG9zdC4KLQotQXMgSSBiZWxpZXZlIGZvciBEYW5pZWwg Si4ncyBzZWVuIHJlZ3Jlc3Npb24gb2YgYHFPZmZzZXRzJyB0aGUgc2Vjb25kIGFscmVhZHkKLWNo ZWNrZWQtaW4gcGFydCBpcyBzdWZmaWNpZW50IC0gSSB3b3VsZCBsaWtlIHRvIHJlbW92ZSB0aGUg Zmlyc3QgcGFydC4KLQotT0sgdG8gY2hlY2sgaXQgaW4/Ci0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4 ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmExMi1saW51eC1nbnUuCi0KLShJIGRvIG5vdCB0 aGluayBvbmUgbmVlZHMgdG8gdGhpbmsgYWJvdXQgNy4xLWJyYW5jaCBhcyBpdCBpcyBub3QgYSBy ZWdyZXNzaW9uCi1hZ2FpbnN0IGFueSBGU0YgR0RCIHJlbGVhc2UuKQotCi0KLVRoYW5rcywKLUph bgotCi0KLWdkYi8KLTIwMTAtMDMtMjUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQotCUZpeCByZS1ydW4gb2YgUElFIGV4ZWN1dGFibGUuCi0JKiBzb2xpYi1z dnI0LmMgKHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlKSA8c3ltZmlsZV9vYmpmaWxlPjog UmVtb3ZlCi0JdGhlIHBhcnQgb2YgcHJlLXNldCBTWU1GSUxFX09CSkZJTEUtPlNFQ1RJT05fT0ZG U0VUUy4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMDMtMjUgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCByZS1ydW4gb2YgUElFIGV4ZWN1dGFibGUu Ci0JKiBnZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwICh0ZXN0X2xkKTogVHVybiBvZmYgImRpc2Fi bGUtcmFuZG9taXphdGlvbiIuCi0JUmVtb3ZlICRkaXNwbGFjZW1lbnRfbWFpbiB0byBtYXRjaCB0 aGUgc29saWItc3ZyNC5jIGNoYW5nZS4gIE5ldyAia2lsbCIKLQlhbmQgcmUtInJ1biIgb2YgdGhl IGluZmVyaW9yLgotCi0tLS0gYS9nZGIvc29saWItc3ZyNC5jCi0rKysgYi9nZGIvc29saWItc3Zy NC5jCi1AQCAtMTc5MSwxNyArMTc5MSwxMCBAQCBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJs ZSAodm9pZCkKLSB7Ci0gICBDT1JFX0FERFIgZGlzcGxhY2VtZW50OwotIAotLSAgaWYgKHN5bWZp bGVfb2JqZmlsZSkKLS0gICAgewotLSAgICAgIGludCBpOwotLQotLSAgICAgIC8qIFJlbW90ZSB0 YXJnZXQgbWF5IGhhdmUgYWxyZWFkeSBzZXQgc3BlY2lmaWMgb2Zmc2V0cyBieSBgcU9mZnNldHMn Ci0tCSB3aGljaCBzaG91bGQgYmUgcHJlZmVycmVkLiAgKi8KLS0KLS0gICAgICBmb3IgKGkgPSAw OyBpIDwgc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnM7IGkrKykKLS0JaWYgKEFOT0ZGU0VU IChzeW1maWxlX29iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgaSkgIT0gMCkKLS0JICByZXR1cm47 Ci0tICAgIH0KLSsgIC8qIFNZTUZJTEVfT0JKRklMRS0+U0VDVElPTl9PRkZTRVRTIG1heSBub3cg Y29udGFpbiBkaXNwbGFjZW1lbnQgZnJvbSB0aGUKLSsgICAgIHByZXZpb3VzIHJ1biBvZiB0aGUg aW5mZXJpb3IuICBSZS1zZXQgaXQgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IHZhbHVlLAotKyAg ICAgaWYgd2UgY2FuIGZpbmQgaXQgb3V0LiAgQnV0IG90aGVyd2lzZSBrZWVwIGl0IGFzIGZvciBy ZW1vdGUgdGFyZ2V0IGl0IG1heQotKyAgICAgaGF2ZSBiZWVuIHByZS1zZXQgYnkgdGhlIGBxT2Zm c2V0cycgcGFja2V0LiAgKi8KLSAKLSAgIGlmICghIHN2cjRfZXhlY19kaXNwbGFjZW1lbnQgKCZk aXNwbGFjZW1lbnQpKQotICAgICByZXR1cm47Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2JyZWFrLWludGVycC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50 ZXJwLmV4cAotQEAgLTQxNiwyNSArNDE2LDI4IEBAIHByb2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4g dHJ5bm9zeW0gZGlzcGxhY2VtZW50fSB7Ci0gICAgICMgUHJpbnQgdGhlICJQSUUgKFBvc2l0aW9u IEluZGVwZW5kZW50IEV4ZWN1dGFibGUpIGRpc3BsYWNlbWVudCIgbWVzc2FnZS4KLSAgICAgZ2Ri X3Rlc3QgInNldCB2ZXJib3NlIG9uIgotIAotKyAgICAjIEEgYml0IGJldHRlciB0ZXN0IGNvdmVy YWdlLgotKyAgICBnZGJfdGVzdCAic2V0IGRpc2FibGUtcmFuZG9taXphdGlvbiBvZmYiCi0rCi0g ICAgIHJlYWNoICJkbF9tYWluIiAicnVuIHNlZ3YiICRkaXNwbGFjZW1lbnQKLSAKLSAgICAgZ2Ri X3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpcXG1kbF9tYWluXFxNLioiICJkbCBidCIKLSAKLSAg ICAgaWYgJGlmbWFpbiB7Ci0gCSMgRGlzcGxhY2VtZW50IG1lc3NhZ2Ugd2lsbCBiZSBwcmludGVk IHRoZSBzZWNvbmQgdGltZSBvbiBpbml0aWFsaXppbmcKLS0JIyB0aGUgbGlua2VyIGZyb20gc3Zy NF9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZy4gIElmIGFueSBBTk9GRlNFVCBoYXMKLS0JIyBiZWVu IGFscmVhZHkgc2V0IGFzIG5vbi16ZXJvIHRoZSBkZXRlY3Rpb24gd2lsbCBubyBsb25nZXIgYmUg cnVuLgotLQlpZiB7JGRpc3BsYWNlbWVudCA9PSAiTk9OWkVSTyJ9IHsKLS0JICAgIHNldCBkaXNw bGFjZW1lbnRfbWFpbiAiTk9ORSIKLS0JfSBlbHNlIHsKLS0JICAgIHNldCBkaXNwbGFjZW1lbnRf bWFpbiAkZGlzcGxhY2VtZW50Ci0tCX0KLS0JcmVhY2ggIm1haW4iIGNvbnRpbnVlICRkaXNwbGFj ZW1lbnRfbWFpbgotKwkjIHRoZSBsaW5rZXIgZnJvbSBzdnI0X3NwZWNpYWxfc3ltYm9sX2hhbmRs aW5nLgotKwlyZWFjaCAibWFpbiIgY29udGludWUgJGRpc3BsYWNlbWVudAotIAotIAlyZWFjaCAi bGliZnVuYyIgY29udGludWUgIk5PTkUiCi0gCi0gCWdkYl90ZXN0ICJidCIgIiMwICtcW15cclxu XF0qXFxtbGliZnVuY1xcTVxbXlxyXG5cXSpcclxuIzEgK1xbXlxyXG5cXSpcXG1tYWluXFxNLioi ICJtYWluIGJ0IgotKyAgICB9Ci0gCi0rICAgICMgVHJ5IHJlLXJ1biBpZiB0aGUgbmV3IFBJRSBk aXNwbGFjZW1lbnQgdGFrZXMgZWZmZWN0LgotKyAgICBnZGJfdGVzdCAia2lsbCIgIiIgImtpbGwi IHtLaWxsIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkXD8gXCh5IG9yIG5cKSB9ICJ5IgotKyAg ICByZWFjaCAiZGxfbWFpbiIgInJ1biAgc2VndiIgJGRpc3BsYWNlbWVudAotKwotKyAgICBpZiAk aWZtYWluIHsKLSAJdGVzdF9jb3JlICRmaWxlICRkaXNwbGFjZW1lbnQKLSAKLSAJdGVzdF9hdHRh Y2ggJGZpbGUgJGRpc3BsYWNlbWVudAotCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBh dGNoIGIvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCmluZGV4IGQ3NjE1MzguLmUxOThkNWQgMTAwNjQ0 Ci0tLSBhL2dkYi1yaGVsNS1nY2M0NC5wYXRjaAorKysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gK QEAgLTEsMTAgKzEsMTAgQEAKIFNvbWUgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb24gUkhF TC01LjQrIG9ubHkgd2l0aCBnY2M0NCBhbmQgZ2ZvcnRyYW40NCBhcwogdGhlIGRlZmF1bHQgZ2Nj IGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogCi1JbmRleDogZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKK0luZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS5leHAJMjAxMC0wMS0xNSAyMjoxNDoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEwLTAxLTE1IDIyOjE0 OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMC0wNy0xMiAyMzowNzozMy4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4 cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCArMDIwMAogQEAgLTE2LDcgKzE2LDI1IEBA CiAgc2V0IHRlc3RmaWxlIHZsYQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKQEAgLTMyLDEx ICszMiwxMSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFt IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWludGVycC5leHAJMjAxMC0wMS0xNCAyMjoxMjowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAky MDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAotQEAgLTMxLDEwICszMSwzMCBAQCBp ZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlX2xpYn1dIHsKKy0tLSBnZGItNy4xLjkwLjIw MTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTAt MDctMDUgMjA6MDQ6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMC0wNy0xMyAyMzoxMToy Mi4wMDAwMDAwMDAgKzAyMDAKK0BAIC0zMyw5ICszMywyOSBAQCBpZiBbZ2V0X2NvbXBpbGVyX2lu Zm8gJHtiaW5maWxlX2xpYn1dIHsKICAgICAgcmV0dXJuIC0xCiAgfQogIApAQCAtNTMsOCArNTMs NyBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLWludGVycC5leHAKICt9CiArc2V0X2JvYXJkX2luZm8gY29tcGlsZXIgZ2NjNDQKICsKLSAj IFVzZSAtc29uYW1lIHNvIHRoYXQgaXQgaXMgbGlzdGVkIHdpdGggIiA9PiAiIGJ5IGxkZCBhbmQg dGhpcyB0ZXN0Y2FzZSBtYWtlcwotICMgYSBjb3B5IG9mICR7YmluZmlsZV9saWJ9IGZvciBlYWNo IHByZWxpbmsgdmFyaWFudC4KKyAjIFVzZSAtc29uYW1lIHNvIHRoYXQgdGhlIG5ldyBsaWJyYXJ5 IGdldHMgY29waWVkIGJ5IGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMuCiAgCiAtaWYge1tnZGJf Y29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9ICR7YmluZmls ZV9saWJ9IFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC1zb25hbWUsJHt0ZXN0fS5z b11dICE9ICIifSB7CiArc2V0IGVyciBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFs X2ZsYWdzPS1XbCwtc29uYW1lLCR7dGVzdH0uc29dXQpAQCAtNjgsNDYgKzY3LDEwIEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJw LmV4cAogICAgICByZXR1cm4gLTEKICB9CiAgCi1AQCAtNDgwLDkgKzUwMCwzMyBAQCBmb3JlYWNo IGxkcHJlbGluayB7Tk8gWUVTfSB7Ci0gCQkgICAgaWYgeyRiaW5waWUgIT0gIk5PIn0gewotIAkJ CWxhcHBlbmQgb3B0cyB7YWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGllfQotIAkJICAgIH0KLS0J CSAgICBpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgW2ZpbGUgdGFpbCAkZXhlY10g JHNyY2ZpbGUgJG9wdHNdID09IC0xfSB7Ci0tCQkJY29udGludWU7Ci0rCi0rCi0rCQkgICAgIyBU ZW1wb3JhcmlseSBwcm92aWRlIGNvbXBpbGVyPWdjYzQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFs dWUgYXJvdW5kLgotKwkJICAgICMgUkhFTC01IHdvcmthcm91bmQgb2YgaXRzOgotKwkJICAgICMg ICBnY2M6IC1ycGF0aDogbGlua2VyIGlucHV0IGZpbGUgdW51c2VkIGJlY2F1c2UgbGlua2luZyBu b3QgZG9uZQotKwkJICAgICMgICBnY2M6IC0tZHluYW1pYy1saW5rZXI6IGxpbmtlciBpbnB1dCBm aWxlIHVudXNlZCBiZWNhdXNlIGxpbmtpbmcgbm90IGRvbmUKLSsKLSsJCSAgICBzZXQgYm9hcmQg W3RhcmdldF9pbmZvIG5hbWVdCi0rCQkgICAgaWYgW2JvYXJkX2luZm8gJGJvYXJkIGV4aXN0cyBj b21waWxlcl0gewotKwkJCXNldCBvbGRfY29tcGlsZXIgW2JvYXJkX2luZm8gJGJvYXJkIGNvbXBp bGVyXQotKwkJCXVuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKLSsJCSAgICB9IGVsc2VpZiBbaW5m byBleGlzdHMgb2xkX2NvbXBpbGVyXSB7Ci0rCQkJdW5zZXQgb2xkX2NvbXBpbGVyCi0rCQkgICAg fQotKwkJICAgIHNldF9ib2FyZF9pbmZvIGNvbXBpbGVyIGdjYzQ0Ci0rCi0rCQkgICAgc2V0IGVy ciBbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3R9LmV4cCBbZmlsZSB0YWlsICRleGVjXSAkc3JjZmls ZSAkb3B0c10KLSsKLSsJCSAgICB1bnNldF9ib2FyZF9pbmZvIGNvbXBpbGVyCi0rCQkgICAgaWYg W2luZm8gZXhpc3RzIG9sZF9jb21waWxlcl0gewotKwkJCXNldF9ib2FyZF9pbmZvIGNvbXBpbGVy ICRvbGRfY29tcGlsZXIKLSAJCSAgICB9Ci0rCi0rCQkgICAgaWYgeyAkZXJyID09IC0xIH0gewot KwkJCWNvbnRpbnVlCi0rCQkgICAgfQotKwotIAkJICAgIGlmIHskYmluc2VwZGVidWcgPT0gIlNF UCJ9IHsKLSAJCQlnZGJfZ251X3N0cmlwX2RlYnVnICRleGVjCi0gCQkJIyBKdXN0IGEgc2FuaXR5 IGNoZWNrLiAgQXMgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB1c2VzIHRoZQotSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCitJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1v bi1ibG9jay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTAtMDEtMTUgMjI6MTQ6 MTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMC0wMS0xNSAyMjoxNDo1MS4wMDAwMDAw MDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTAtMDctMTMgMDA6MjU6NTYuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Nv bW1vbi1ibG9jay5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0y MCw3ICsyMCwyNSBAQCBzZXQgdGVzdGZpbGUgImNvbW1vbi1ibG9jayIKICBzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5mOTAKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9CkBAIC0xMzUsMTAgKzk4LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogICAgICB1bnRlc3RlZCAiQ291 bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5l eHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHdhcmYtc3RyaWRlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMC0wMS0xNSAy MjoxNDoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAw MDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMC0wNy0xMiAyMzowNzozMy4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCArMDIwMAog QEAgLTI3LDcgKzI3LDI1IEBACiAgc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQogIHNldCBzcmNm aWxlICR7dGVzdGZpbGV9LmY5MApAQCAtMTY2LDEwICsxMjksMTAgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiAg ICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LmV4cAkyMDEwLTAxLTE1IDIyOjE0OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAkyMDEwLTAxLTE1 IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTAtMDctMTIgMjM6MDc6MzMu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAwMDAwMDAwICswMjAw CiBAQCAtMjUsNyArMjUsMjUgQEAgc2V0IHRlc3RmaWxlICJkeW5hbWljIgogIHNldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0KQEAgLTE5NywxMCArMTYwLDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxk bid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5l eHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bGlicmFyeS1tb2R1bGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCTIwMTAtMDEt MTUgMjI6MTQ6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEwLTAxLTE1IDIyOjE0 OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEwLTA2LTAzIDAwOjQxOjU2 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAw MDAgKzAyMDAKIEBAIC0yNSwxNiArMjUsMzQgQEAgaWYgW2dldF9jb21waWxlcl9pbmZvIG5vdC11 c2VkXSB7CiAgICAgcmV0dXJuIC0xCiAgfQpAQCAtMjQwLDEwICsyMDMsMTAgQEAgSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVs ZS5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAg cmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9tb2R1bGUuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUw LjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMTAt MDEtMTUgMjI6MTQ6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMC0wMS0xNSAyMjoxNDo1MS4w MDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMTAtMDYtMDMgMDE6MDE6MDEuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21v ZHVsZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xNiw3ICsx NiwyNSBAQAogIHNldCB0ZXN0ZmlsZSAibW9kdWxlIgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmY5MApAQCAtMjcxLDEwICsyMzQsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAK LUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmV4cAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdHJpbmcuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjEz LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAw CistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3RyaW5nLmV4cAkyMDEwLTA3LTEyIDIzOjA3OjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTAt MDctMTMgMjM6MDU6MTQuMDAwMDAwMDAwICswMjAwCiBAQCAtMjMsNyArMjMsMjUgQEAgc2V0IHRl c3RmaWxlICJzdHJpbmciCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMzAyLDEwICsyNjUsMTAgQEAg SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJp bmcuZXhwCiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCiAgICAg IHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4 cAkyMDEwLTAxLTE1IDIyOjE0OjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMC0wMS0xNSAy MjoxNDo1MS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMC0wNy0xMyAwMDoyMTozMC4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAwMDAwMDAwICswMjAw CiBAQCAtMTUsNyArMTUsMjYgQEAKICAKICBzZXQgdGVzdGZpbGUgIm9tcC1zdGVwIgpAQCAtMzM0 LDEwICsyOTcsMTAgQEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUu ZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2Rlcml2ZWQtdHlwZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTAtMDEtMDEg MDg6MzI6MDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMC0wMS0xNSAyMjoxNjoyMC4w MDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDIuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAgKzAyMDAK IEBAIC0yOCw4ICsyOCwyNiBAQCBzZXQgdGVzdGZpbGUgImRlcml2ZWQtdHlwZSIKICBzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5mOTAKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9CkBAIC0zNjcsMTAgKzMzMCwxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKICAgICAgcmV0dXJu IC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdWJhcnJheS5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIw MTAtMDEtMDEgMDg6MzI6MDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEwLTAxLTE1IDIyOjE3 OjE4LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEwLTAxLTAxIDA4OjMyOjAyLjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdWJhcnJheS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAgKzAyMDAKIEBA IC0yOCw4ICsyOCwyNiBAQCBzZXQgdGVzdGZpbGUgInN1YmFycmF5IgogIHNldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmYKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 CkBAIC00MDAsMTAgKzM2MywxMCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAogICAgICByZXR1cm4gLTEKICB9CiAgCi1J bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1z ZXBkZWJ1Zy5leHAKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAx MDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAx MC0wMS0xNSAyMjoxNDoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDEwLTAxLTE1IDIy OjE0OjUxLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMC0wNy0xMiAyMzowNzoz NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAw MCArMDIwMAogQEAgLTMyLDcgKzMyLDI1IEBAIHNldCBiaW5zaGFyZWRkZWJ1Z2ZpbGUgJHtvYmpk aXJ9LyR7c3ViZGkKICAKICAjIEZJWE1FOiBnY2MgZGVwZW5kZW5jeSAoLVdsLC1zb25hbWUpLgpA QCAtNDMxLDMgKzM5NCw0MSBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0 IGNvbXBpbGUgdGVzdCBsaWJyYXJ5IgogICAgICByZXR1cm4gLTEKICB9CitJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL3By ZWxpbmstc3VwcG9ydC5leHAJMjAxMC0wNy0wNSAyMDowMjo1Ni4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5l eHAJMjAxMC0wNy0xMyAyMzowOTozNC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xMTgsOSArMTE4LDMx IEBAIHByb2MgZmlsZV9jb3B5IHtzcmMgZGVzdH0geworIHByb2MgYnVpbGRfZXhlY3V0YWJsZV9v d25fbGlicyB7dGVzdG5hbWUgZXhlY3V0YWJsZSBzb3VyY2VzIG9wdGlvbnMge2ludGVycCAiIn0g e2RpciAiIn19IHsKKyAgICAgZ2xvYmFsIG9iamRpciBzdWJkaXIKKyAKKy0gICAgaWYge1tidWls ZF9leGVjdXRhYmxlICR0ZXN0bmFtZSAkZXhlY3V0YWJsZSAkc291cmNlcyAkb3B0aW9uc10gPT0g LTF9IHsKKy0JcmV0dXJuICIiCisrICAgICMgVGVtcG9yYXJpbHkgcHJvdmlkZSBjb21waWxlcj1n Y2M0NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KKysgICAgIyBSSEVMLTUgd29y a2Fyb3VuZCBvZiBpdHM6CisrICAgICMgICBnY2M6IC1ycGF0aDogbGlua2VyIGlucHV0IGZpbGUg dW51c2VkIGJlY2F1c2UgbGlua2luZyBub3QgZG9uZQorKyAgICAjICAgZ2NjOiAtLWR5bmFtaWMt bGlua2VyOiBsaW5rZXIgaW5wdXQgZmlsZSB1bnVzZWQgYmVjYXVzZSBsaW5raW5nIG5vdCBkb25l CisrCisrICAgIHNldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KKysgICAgaWYgW2JvYXJkX2lu Zm8gJGJvYXJkIGV4aXN0cyBjb21waWxlcl0geworKwlzZXQgb2xkX2NvbXBpbGVyIFtib2FyZF9p bmZvICRib2FyZCBjb21waWxlcl0KKysJdW5zZXRfYm9hcmRfaW5mbyBjb21waWxlcgorKyAgICB9 IGVsc2VpZiBbaW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CisrCXVuc2V0IG9sZF9jb21waWxl cgorICAgICB9CisrICAgIHNldF9ib2FyZF9pbmZvIGNvbXBpbGVyIGdjYzQ0CisrCisrICAgIHNl dCBlcnIgW2J1aWxkX2V4ZWN1dGFibGUgJHRlc3RuYW1lICRleGVjdXRhYmxlICRzb3VyY2VzICRv cHRpb25zXQorKworKyAgICB1bnNldF9ib2FyZF9pbmZvIGNvbXBpbGVyCisrICAgIGlmIFtpbmZv IGV4aXN0cyBvbGRfY29tcGlsZXJdIHsKKysJc2V0X2JvYXJkX2luZm8gY29tcGlsZXIgJG9sZF9j b21waWxlcgorKyAgICB9CisrCisrICAgIGlmIHsgJGVyciA9PSAtMSB9IHsKKysJcmV0dXJuICIi ICAgCisrICAgIH0KKysKKyAgICAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4 ZWN1dGFibGV9CisgCisgICAgIHNldCBjb21tYW5kICJsZGQgJGJpbmZpbGUiCgpkaWZmIC0tZ2l0 IGEvZ2RiLXNvbGliLW1lbW9yeS1lcnJvci1ub25mYXRhbC5wYXRjaCBiL2dkYi1zb2xpYi1tZW1v cnktZXJyb3Itbm9uZmF0YWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4 ZDczZDguLjAwMDAwMDAKLS0tIGEvZ2RiLXNvbGliLW1lbW9yeS1lcnJvci1ub25mYXRhbC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVtSRkMvaWE2NF0gbWVtb3J5IGVycm9y IHdoZW4gcmVhZGluZyB3cm9uZyBjb3JlIGZpbGUKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNjQ1Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDEwLTAyL21zZzAwMDAxLmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAwMjk4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMTAtMDMvbXNnMDAwNjUuaHRtbAotYzk2MWE4ZGE0MjIyODM2NjJl MDllZTQ5OGMwNTk4ZDQ4ZmM5ZDcwZgotCi0tLS0gc3JjL2dkYi9zb2xpYi1zdnI0LmMJMjAxMC8w Mi8yNCAwMDoyOTowMgkxLjEyNQotKysrIHNyYy9nZGIvc29saWItc3ZyNC5jCTIwMTAvMDMvMDgg MDc6NDU6NDkJMS4xMjYKLUBAIC04NjgsOSArODY4LDE2IEBACi0gewotICAgc3RydWN0IGxpbmtf bWFwX29mZnNldHMgKmxtbyA9IHN2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAoKTsKLSAgIHN0 cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAodGFyZ2V0X2dkYmFyY2gpLT5idWls dGluX2RhdGFfcHRyOwotKyAgQ09SRV9BRERSIGFkZHIgPSAwOwotKyAgdm9sYXRpbGUgc3RydWN0 IGdkYl9leGNlcHRpb24gZXg7Ci0gCi0tICByZXR1cm4gcmVhZF9tZW1vcnlfdHlwZWRfYWRkcmVz cyAoaW5mby0+ZGVidWdfYmFzZSArIGxtby0+cl9tYXBfb2Zmc2V0LAotLQkJCQkgICAgcHRyX3R5 cGUpOwotKyAgVFJZX0NBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCi0rICAgIHsKLSsgICAg ICBhZGRyID0gcmVhZF9tZW1vcnlfdHlwZWRfYWRkcmVzcyAoaW5mby0+ZGVidWdfYmFzZSArIGxt by0+cl9tYXBfb2Zmc2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwdHJfdHlwZSk7Ci0rICAgIH0KLSsgIGV4Y2VwdGlvbl9wcmludCAoZ2RiX3N0ZGVyciwgZXgp OwotKyAgcmV0dXJuIGFkZHI7Ci0gfQotIAotIC8qIEZpbmQgcl9icmsgZnJvbSB0aGUgaW5mZXJp b3IncyBkZWJ1ZyBiYXNlLiAgKi8KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAzLzA4IDAx OjQ5OjMwCTEuMTE0NDEKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAzLzA4IDA3OjQ1OjQ5 CTEuMTE0NDIKLSMjIC0xLDMgKzEsMTAgQEAKLSsyMDEwLTAzLTA4ICBKb2VsIEJyb2JlY2tlciAg PGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KLSsKLSsJTWVtb3J5IGVycm9yIHdoZW4gcmVhZGluZyB3 cm9uZyBjb3JlIGZpbGUuCi0rCSogc29saWItc3ZyNC5jIChzb2xpYl9zdnI0X3JfbWFwKTogY2F0 Y2ggYW5kIHByaW50IGFsbCBleGNlcHRpb24KLSsJZXJyb3JzIHdoaWxlIHJlYWRpbmcgdGhlIGlu ZmVyaW9yIG1lbW9yeSwgYW5kIHJldHVybiB6ZXJvIGlmCi0rCWFuIGV4Y2VwdGlvbiB3YXMgcmFp c2VkLgotKwotIDIwMTAtMDMtMDcgIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckB2bXdhcmUuY29t PgotIAotIAkqIHJlY29yZC5jIChyZWNvcmRfcmVzdG9yZSk6IFJlbmFtZSB0bXB1OCB0byByZWN0 eXBlLgoKZGlmZiAtLWdpdCBhL2dkYi11bndpbmQtZGVidWdob29rLXNhZmUtZmFpbC5wYXRjaCBi L2dkYi11bndpbmQtZGVidWdob29rLXNhZmUtZmFpbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYzQxNmIzMy4uMDAwMDAwMAotLS0gYS9nZGItdW53aW5kLWRlYnVnaG9vay1z YWZlLWZhaWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1jb21taXQgODAy MjE0Yzk3ZDE2NjFhZDMzN2FhZDBkMDExZGRlZDQ0ZjBiNWRkZAotQXV0aG9yOiBUb20gVHJvbWV5 IDx0cm9tZXlAcmVkaGF0LmNvbT4KLURhdGU6ICAgTW9uIEFwciAyNiAxNToxNTo1NSAyMDEwIC0w NjAwCi0KLSAgICBGYWlsIGdyYWNlZnVsbHkgaWYgdGhlIF9VbndpbmRfRGVidWdIb29rIGFyZ3Vt ZW50IGlzIG9wdGltaXplZCBvdXQKLQotZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9p bmZydW4uYwotaW5kZXggMmVlYTU1MC4uOWE1YjUzNCAxMDA2NDQKLS0tLSBhL2dkYi9pbmZydW4u YwotKysrIGIvZ2RiL2luZnJ1bi5jCi1AQCAtNDkyNSwyMCArNDkyNSwyNCBAQCBpbnNlcnRfZXhj ZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAotIAotICAg ICAgIHZzeW0gPSBsb29rdXBfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pLCBiLCBW QVJfRE9NQUlOLCBOVUxMKTsKLSAgICAgICB2YWx1ZSA9IHJlYWRfdmFyX3ZhbHVlICh2c3ltLCBm cmFtZSk7Ci0tICAgICAgaGFuZGxlciA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbHVlKTsKLSsgICAg ICAvKiBJZiB0aGUgdmFsdWUgd2FzIG9wdGltaXplZCBvdXQsIHJldmVydCB0byB0aGUgb2xkIGJl aGF2aW9yLiAgKi8KLSsgICAgICBpZiAoISB2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2YWx1ZSkpCi0r CXsKLSsJICBoYW5kbGVyID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwotIAotLSAgICAgIC8q IFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUgYnJlYWtwb2lu dAotLQkgd2l0aCBhbiBleGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotLSAgICAgIGRl bGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh0cCk7Ci0rCSAgLyogV2UncmUgZ29pbmcgdG8g cmVwbGFjZSB0aGUgY3VycmVudCBzdGVwLXJlc3VtZSBicmVha3BvaW50Ci0rCSAgICAgd2l0aCBh biBleGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotKwkgIGRlbGV0ZV9zdGVwX3Jlc3Vt ZV9icmVha3BvaW50ICh0cCk7Ci0gCi0tICAgICAgaWYgKGRlYnVnX2luZnJ1bikKLS0JZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotLQkJCSAgICAiaW5mcnVuOiBleGNlcHRpb24gcmVz dW1lIGF0ICVseFxuIiwKLS0JCQkgICAgKHVuc2lnbmVkIGxvbmcpIGhhbmRsZXIpOwotKwkgIGlm IChkZWJ1Z19pbmZydW4pCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0r CQkJCSJpbmZydW46IGV4Y2VwdGlvbiByZXN1bWUgYXQgJWx4XG4iLAotKwkJCQkodW5zaWduZWQg bG9uZykgaGFuZGxlcik7Ci0gCi0tICAgICAgYnAgPSBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRf YXRfcGMgKGdldF9mcmFtZV9hcmNoIChmcmFtZSksCi0tCQkJCQkgICBoYW5kbGVyLCBicF9leGNl cHRpb25fcmVzdW1lKTsKLS0gICAgICBpbmZlcmlvcl90aHJlYWQgKCktPnN0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnQgPSBicDsKLSsJICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAo Z2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJCQkJCSAgICAgICBoYW5kbGVyLCBicF9leGNlcHRp b25fcmVzdW1lKTsKLSsJICBpbmZlcmlvcl90aHJlYWQgKCktPnN0ZXBfcmVzdW1lX2JyZWFrcG9p bnQgPSBicDsKLSsJfQotICAgICB9Ci0gfQotIAoKZGlmZiAtLWdpdCBhL2dkYi11bndpbmQtZGVi dWdob29rLXN0ZXAtaW5kZXBlbmRlbnQucGF0Y2ggYi9nZGItdW53aW5kLWRlYnVnaG9vay1zdGVw LWluZGVwZW5kZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2JkMmJh Li4wMDAwMDAwCi0tLSBhL2dkYi11bndpbmQtZGVidWdob29rLXN0ZXAtaW5kZXBlbmRlbnQucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAotY29tbWl0IGY4Y2EwM2UwMDk3YWU0 OWM2NmNmMzNhNTBlMzI0N2JjY2QzYTRhMzMKLUF1dGhvcjogVG9tIFRyb21leSA8dHJvbWV5QHJl ZGhhdC5jb20+Ci1EYXRlOiAgIFdlZCBBcHIgMjggMTQ6MTc6MzggMjAxMCAtMDYwMAotCi0gICAg UmVpbXBsZW1lbnQgaW5mcnVuIHBhcnRzIG9mIG5leHQtb3Zlci10aHJvdy4KLSAgICBQcmV2aW91 c2x5LCB3ZSByZXNldCB0aGUgc3RlcC1yZXN1bWUgYnJlYWtwb2ludC4KLSAgICBIb3dldmVyLCB0 aGlzIGNhbiBkbyB0aGUgd3JvbmcgdGhpbmcgaWYgYW4gZXhjZXB0aW9uCi0gICAgaXMgdGhyb3du IGFuZCBjYXVnaHQgYmVuZWF0aCB0aGUgbmV4dGluZyBmcmFtZS4KLSAgICBUaGUgbmV3IGFwcHJv YWNoIGlzIHRvIGhhdmUgYSBzZXBhcmF0ZSBleGNlcHRpb24tcmVzdW1lCi0gICAgYnJlYWtwb2lu dC4KLQotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0aHJlYWQuaAotaW5k ZXggNjExZGNiYi4uOTYzODM2OCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0aHJlYWQuaAotKysrIGIv Z2RiL2dkYnRocmVhZC5oCi1AQCAtNjYsNiArNjYsOSBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KLSAg IC8qIFN0ZXAtcmVzdW1lIG9yIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotICAgc3Ry dWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQ7Ci0gCi0rICAvKiBFeGNlcHRp b24tcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlv bl9yZXN1bWVfYnJlYWtwb2ludDsKLSsKLSAgIC8qIFJhbmdlIHRvIHNpbmdsZSBzdGVwIHdpdGhp bi4KLSAKLSAgICAgIElmIHRoaXMgaXMgbm9uemVybywgcmVzcG9uZCB0byBhIHNpbmdsZS1zdGVw IHNpZ25hbCBieSBjb250aW51aW5nCi1AQCAtMjI1LDYgKzIyOCw5IEBAIGV4dGVybiB2b2lkIGRl bGV0ZV90aHJlYWRfc2lsZW50IChwdGlkX3QpOwotIC8qIERlbGV0ZSBhIHN0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnQgZnJvbSB0aGUgdGhyZWFkIGRhdGFiYXNlLiAqLwotIGV4dGVybiB2b2lkIGRlbGV0 ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7Ci0gCi0rLyog RGVsZXRlIGFuIGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCBmcm9tIHRoZSB0aHJlYWQgZGF0 YWJhc2UuICovCi0rZXh0ZXJuIHZvaWQgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2lu dCAoc3RydWN0IHRocmVhZF9pbmZvICopOwotKwotIC8qIFRyYW5zbGF0ZSB0aGUgaW50ZWdlciB0 aHJlYWQgaWQgKEdEQidzIGhvbWVncm93biBpZCwgbm90IHRoZSBzeXN0ZW0ncykKLSAgICBpbnRv IGEgInBpZCIgKHdoaWNoIG1heSBiZSBvdmVybG9hZGVkIHdpdGggZXh0cmEgdGhyZWFkIGluZm9y bWF0aW9uKS4gICovCi0gZXh0ZXJuIHB0aWRfdCB0aHJlYWRfaWRfdG9fcGlkIChpbnQpOwotZGlm ZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwotaW5kZXggOWE1YjUzNC4uMzU0 NmNmMSAxMDA2NDQKLS0tLSBhL2dkYi9pbmZydW4uYwotKysrIGIvZ2RiL2luZnJ1bi5jCi1AQCAt MzAwLDYgKzMwMCw3IEBAIGZvbGxvd19mb3JrICh2b2lkKQotICAgICAgcGFyZW50IHRocmVhZCBz dHJ1Y3R1cmUncyBydW4gY29udHJvbCByZWxhdGVkIGZpZWxkcywgbm90IGp1c3QgdGhlc2UuCi0g ICAgICBJbml0aWFsaXplZCB0byBhdm9pZCAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgd2Fy bmluZ3MgZnJvbSBnY2MuICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2Jy ZWFrcG9pbnQgPSBOVUxMOwotKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1bWVf YnJlYWtwb2ludCA9IE5VTEw7Ci0gICBDT1JFX0FERFIgc3RlcF9yYW5nZV9zdGFydCA9IDA7Ci0g ICBDT1JFX0FERFIgc3RlcF9yYW5nZV9lbmQgPSAwOwotICAgc3RydWN0IGZyYW1lX2lkIHN0ZXBf ZnJhbWVfaWQgPSB7IDAgfTsKLUBAIC0zNTIsNiArMzUzLDggQEAgZm9sbG93X2ZvcmsgKHZvaWQp Ci0gCSAgICBzdGVwX3JhbmdlX3N0YXJ0ID0gdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQ7Ci0gCSAgICBz dGVwX3JhbmdlX2VuZCA9IHRwLT5zdGVwX3JhbmdlX2VuZDsKLSAJICAgIHN0ZXBfZnJhbWVfaWQg PSB0cC0+c3RlcF9mcmFtZV9pZDsKLSsJICAgIGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludAot KwkgICAgICA9IGNsb25lX21vbWVudGFyeV9icmVha3BvaW50ICh0cC0+ZXhjZXB0aW9uX3Jlc3Vt ZV9icmVha3BvaW50KTsKLSAKLSAJICAgIC8qIEZvciBub3csIGRlbGV0ZSB0aGUgcGFyZW50J3Mg c3IgYnJlYWtwb2ludCwgb3RoZXJ3aXNlLAotIAkgICAgICAgcGFyZW50L2NoaWxkIHNyIGJyZWFr cG9pbnRzIGFyZSBjb25zaWRlcmVkIGR1cGxpY2F0ZXMsCi1AQCAtMzYyLDYgKzM2NSw3IEBAIGZv bGxvd19mb3JrICh2b2lkKQotIAkgICAgdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQgPSAwOwotIAkgICAg dHAtPnN0ZXBfcmFuZ2VfZW5kID0gMDsKLSAJICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0gbnVsbF9m cmFtZV9pZDsKLSsJICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsK LSAJICB9Ci0gCi0gCXBhcmVudCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtNDAzLDYgKzQwNyw4IEBA IGZvbGxvd19mb3JrICh2b2lkKQotIAkJICAgIHRwLT5zdGVwX3JhbmdlX3N0YXJ0ID0gc3RlcF9y YW5nZV9zdGFydDsKLSAJCSAgICB0cC0+c3RlcF9yYW5nZV9lbmQgPSBzdGVwX3JhbmdlX2VuZDsK LSAJCSAgICB0cC0+c3RlcF9mcmFtZV9pZCA9IHN0ZXBfZnJhbWVfaWQ7Ci0rCQkgICAgdHAtPmV4 Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludAotKwkJICAgICAgPSBleGNlcHRpb25fcmVzdW1lX2Jy ZWFrcG9pbnQ7Ci0gCQkgIH0KLSAJCWVsc2UKLSAJCSAgewotQEAgLTQ1Niw2ICs0NjIsOSBAQCBm b2xsb3dfaW5mZXJpb3JfcmVzZXRfYnJlYWtwb2ludHMgKHZvaWQpCi0gICBpZiAodHAtPnN0ZXBf cmVzdW1lX2JyZWFrcG9pbnQpCi0gICAgIGJyZWFrcG9pbnRfcmVfc2V0X3RocmVhZCAodHAtPnN0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQpOwotIAotKyAgaWYgKHRwLT5leGNlcHRpb25fcmVzdW1lX2Jy ZWFrcG9pbnQpCi0rICAgIGJyZWFrcG9pbnRfcmVfc2V0X3RocmVhZCAodHAtPmV4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCk7Ci0rCi0gICAvKiBSZWluc2VydCBhbGwgYnJlYWtwb2ludHMgaW4g dGhlIGNoaWxkLiAgVGhlIHVzZXIgbWF5IGhhdmUgc2V0Ci0gICAgICBicmVha3BvaW50cyBhZnRl ciBjYXRjaGluZyB0aGUgZm9yaywgaW4gd2hpY2ggY2FzZSB0aG9zZQotICAgICAgd2VyZSBuZXZl ciBzZXQgaW4gdGhlIGNoaWxkLCBidXQgb25seSBpbiB0aGUgcGFyZW50LiAgVGhpcyBtYWtlcwot QEAgLTY5NCw2ICs3MDMsNyBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2Rf cGF0aG5hbWUpCi0gICAvKiBJZiB0aGVyZSB3YXMgb25lLCBpdCdzIGdvbmUgbm93LiAgV2UgY2Fu bm90IHRydWx5IHN0ZXAtdG8tbmV4dAotICAgICAgc3RhdGVtZW50IHRocm91Z2ggYW4gZXhlYygp LiAqLwotICAgdGgtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOwotKyAgdGgtPmV4Y2Vw dGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0gICB0aC0+c3RlcF9yYW5nZV9zdGFydCA9 IDA7Ci0gICB0aC0+c3RlcF9yYW5nZV9lbmQgPSAwOwotIAotQEAgLTIxNDUsNiArMjE1NSw3IEBA IGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKmluZm8sIHZvaWQgKmRhdGEpCi0gICAgIHJldHVybiAwOwotIAotICAgZGVsZXRlX3N0ZXBf cmVzdW1lX2JyZWFrcG9pbnQgKGluZm8pOwotKyAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJl YWtwb2ludCAoaW5mbyk7Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMjE2OCw2ICsyMTc5LDcg QEAgZGVsZXRlX3N0ZXBfdGhyZWFkX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHZvaWQpCi0gCSBz dGVwcGluZy4gICovCi0gICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3Ro cmVhZCAoKTsKLSAgICAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAodHApOwotKyAg ICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKLSAgICAgfQotICAg ZWxzZQotICAgICAvKiBJbiBhbGwtc3RvcCBtb2RlLCBkZWxldGUgYWxsIHN0ZXAtcmVzdW1lIGFu ZCBsb25nam1wLXJlc3VtZQotQEAgLTM4MzIsMzAgKzM4NDQsMzEgQEAgaW5mcnVuOiBCUFNUQVRf V0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClcbiIp OwotIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAJCQkgICAgICAiaW5mcnVu OiBCUFNUQVRfV0hBVF9DTEVBUl9MT05HSk1QX1JFU1VNRVxuIik7Ci0gCi0tCWdkYl9hc3NlcnQg KGVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwX3Jlc3VtZV9icmVha3BvaW50ICE9IE5VTEwpOwotLQlk ZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQpOwotLQotLQlp ZiAoIXdoYXQuaXNfbG9uZ2ptcCkKLSsJaWYgKHdoYXQuaXNfbG9uZ2ptcCkKLSsJICB7Ci0rCSAg ICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCAh PSBOVUxMKTsKLSsJICAgIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50 X3RocmVhZCk7Ci0rCSAgfQotKwllbHNlCi0gCSAgewotIAkgICAgLyogVGhlcmUgYXJlIHNldmVy YWwgY2FzZXMgdG8gY29uc2lkZXIuCi0tCSAgICAgICAKLSsKLSAJICAgICAgIDEuIFRoZSBpbml0 aWF0aW5nIGZyYW1lIG5vIGxvbmdlciBleGlzdHMuICBJbiB0aGlzIGNhc2UKLSAJICAgICAgIHdl IG11c3Qgc3RvcCwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGhhcyBnb25lIHRvbyBmYXIuCi0tCSAg ICAgICAKLSsKLSAJICAgICAgIDIuIFRoZSBpbml0aWF0aW5nIGZyYW1lIGV4aXN0cywgYW5kIGlz IHRoZSBzYW1lIGFzIHRoZQotLQkgICAgICAgY3VycmVudCBmcmFtZS4KLS0JICAgICAgIAotLQkg ICAgICAgMi4xLiBJZiB3ZSBhcmUgc3RlcHBpbmcsIGRlZmVyIHRvIHRoZSBzdGVwcGluZyBsb2dp Yy4KLS0JICAgICAgIAotLQkgICAgICAgMi4yLiBPdGhlcndpc2UsIHdlIGFyZSBub3Qgc3RlcHBp bmcsIHNvIHdlIGFyZSBkb2luZyBhCi0tCSAgICAgICAiZmluaXNoIiBhbmQgd2UgaGF2ZSByZWFj aGVkIHRoZSBjYWxsaW5nIGZyYW1lLiAgU28sCi0tCSAgICAgICBzdG9wLgotLQkgICAgICAgCi0r CSAgICAgICBjdXJyZW50IGZyYW1lLiAgV2Ugc3RvcCwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGhh cyBiZWVuCi0rCSAgICAgICBjYXVnaHQuCi0rCi0gCSAgICAgICAzLiBUaGUgaW5pdGlhdGluZyBm cmFtZSBleGlzdHMgYW5kIGlzIGRpZmZlcmVudCBmcm9tCi0gCSAgICAgICB0aGUgY3VycmVudCBm cmFtZS4gIFRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBoYXMgYmVlbgotIAkgICAgICAgY2F1Z2h0 IGJlbmVhdGggdGhlIGluaXRpYXRpbmcgZnJhbWUsIHNvIGtlZXAgZ29pbmcuICAqLwotIAkgICAg c3RydWN0IGZyYW1lX2luZm8gKmluaXRfZnJhbWUKLSAJICAgICAgPSBmcmFtZV9maW5kX2J5X2lk IChlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSk7Ci0rCi0rCSAgICBnZGJfYXNz ZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ICE9IE5V TEwpOwotKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVu dF90aHJlYWQpOwotKwotIAkgICAgaWYgKGluaXRfZnJhbWUpCi0gCSAgICAgIHsKLSAJCXN0cnVj dCBmcmFtZV9pZCBjdXJyZW50X2lkCi1AQCAtMzg2MywxNSArMzg3Niw3IEBAIGluZnJ1bjogQlBT VEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQp XG4iKTsKLSAJCWlmIChmcmFtZV9pZF9lcSAoY3VycmVudF9pZCwKLSAJCQkJIGVjcy0+ZXZlbnRf dGhyZWFkLT5pbml0aWF0aW5nX2ZyYW1lKSkKLSAJCSAgewotLQkJICAgIGlmIChlY3MtPmV2ZW50 X3RocmVhZC0+c3RlcF9yYW5nZV9zdGFydCkKLS0JCSAgICAgIHsKLS0JCQkvKiBDYXNlIDIuMS4g ICovCi0tCQkJYnJlYWs7Ci0tCQkgICAgICB9Ci0tCQkgICAgZWxzZQotLQkJICAgICAgewotLQkJ CS8qIENhc2UgMi4yOiBmYWxsIHRocm91Z2guICAqLwotLQkJICAgICAgfQotKwkJICAgIC8qIENh c2UgMi4gIEZhbGwgdGhyb3VnaC4gICovCi0gCQkgIH0KLSAJCWVsc2UKLSAJCSAgewotQEAgLTM4 ODAsNiArMzg4NSwxMCBAQCBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAo IWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7Ci0gCQkgICAgcmV0dXJuOwotIAkJICB9 Ci0gCSAgICAgIH0KLSsKLSsJICAgIC8qIEZvciBDYXNlcyAxIGFuZCAyLCByZW1vdmUgdGhlIHN0 ZXAtcmVzdW1lIGJyZWFrcG9pbnQsCi0rCSAgICAgICBpZiBpdCBleGlzdHMuICAqLwotKwkgICAg ZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKLSAJICB9 Ci0gCi0gCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3N0ZXAgPSAxOwotQEAgLTQ5MzAsMTAgKzQ5 MzksNiBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFk X2luZm8gKnRwLAotIAl7Ci0gCSAgaGFuZGxlciA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbHVlKTsK LSAKLS0JICAvKiBXZSdyZSBnb2luZyB0byByZXBsYWNlIHRoZSBjdXJyZW50IHN0ZXAtcmVzdW1l IGJyZWFrcG9pbnQKLS0JICAgICB3aXRoIGFuIGV4Y2VwdGlvbi1yZXN1bWUgYnJlYWtwb2ludC4g ICovCi0tCSAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKLS0KLSAJICBpZiAo ZGVidWdfaW5mcnVuKQotIAkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotIAkJ CQkiaW5mcnVuOiBleGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKLUBAIC00OTQxLDcgKzQ5NDYs NyBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwLAotIAotIAkgIGJwID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZXRf ZnJhbWVfYXJjaCAoZnJhbWUpLAotIAkJCQkJICAgICAgIGhhbmRsZXIsIGJwX2V4Y2VwdGlvbl9y ZXN1bWUpOwotLQkgIGluZmVyaW9yX3RocmVhZCAoKS0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9 IGJwOwotKwkgIGluZmVyaW9yX3RocmVhZCAoKS0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50 ID0gYnA7Ci0gCX0KLSAgICAgfQotIH0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9nZGI5NTkzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuZXhwCi1pbmRleCBl ZTlhZWZmLi5jNzdkYmQ4IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5 My5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuZXhwCi1AQCAtMTQ1LDcg KzE0NSw3IEBAIGdkYl90ZXN0ICJzdGVwIiBcCi0gICAic3RlcCBpbnRvIGZpbmlzaCwgZm9yIHVu dGlsIgotIAotIGdkYl90ZXN0ICJ1bnRpbCIgXAotLSAgIi4qY2F0Y2ggLmludCB4LioiIFwKLSsg ICIuKmZ1bmN0aW9uMSAoKS4qIiBcCi0gICAidW50aWwgd2l0aCBubyBhcmd1bWVudCAxIgotIAot IHNldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIgZm9yIHVudGlsIiAkdGVzdGZp bGUuY2NdCi1kaWZmIC0tZ2l0IGEvZ2RiL3RocmVhZC5jIGIvZ2RiL3RocmVhZC5jCi1pbmRleCAx NmEyMDdjLi4zYzUyYWU0IDEwMDY0NAotLS0tIGEvZ2RiL3RocmVhZC5jCi0rKysgYi9nZGIvdGhy ZWFkLmMKLUBAIC05MCw2ICs5MCwxNiBAQCBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAo c3RydWN0IHRocmVhZF9pbmZvICp0cCkKLSAgICAgfQotIH0KLSAKLSt2b2lkCi0rZGVsZXRlX2V4 Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKLSt7Ci0r ICBpZiAodHAgJiYgdHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKLSsgICAgewotKyAg ICAgIGRlbGV0ZV9icmVha3BvaW50ICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsK LSsgICAgICB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKLSsgICAgfQot K30KLSsKLSBzdGF0aWMgdm9pZAotIGNsZWFyX3RocmVhZF9pbmZlcmlvcl9yZXNvdXJjZXMgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdHApCi0gewoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS5wYXRj aCBiL2dkYi11cHN0cmVhbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0 M2FkNi4uMDAwMDAwMAotLS0gYS9nZGItdXBzdHJlYW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxMTc5ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDMv bXNnMDAxMDQuaHRtbAotNTg1NTk1NDQ1NGYxOWE4MDFmNzZiYmY3YmFhZmQxMWE2OTNjNWQzMwot Ci1JbXBvcnRlZCB0byBzeW5jIGdkYi5iYXNlL2JyZWFrLWludGVycC5leHAgZm9yIGdkYi1waWUt cmVydW4ucGF0Y2guCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAzLzExIDAzOjQ1OjQ4 CTEuMTE0NjkKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzAzLzExIDIyOjA3OjAwCTEuMTE0 NzAKLSMjIC0xLDMgKzEsOSBAQAotKzIwMTAtMDMtMTEgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBzb2xpYi1zdnI0LmMgKExNX0FERFJfQ0hFQ0sp IDxpbmZvX3ZlcmJvc2U+OiBVc2UgcHJpbnRmX3VuZmlsdGVyZWQKLSsJZm9yIHRoZSBQSUMgZGlz cGxhY2VtZW50LCBwcmludCBhbHNvIHRoZSBkaXNwbGFjZW1lbnQgdmFsdWUuCi0rCShzdnI0X2V4 ZWNfZGlzcGxhY2VtZW50KTogIFByaW50IERJU1BMQUNFTUVOVCBpZiBJTkZPX1ZFUkJPU0UuCi0r Ci0gMjAxMC0wMy0xMCAgS2V2aW4gQnVldHRuZXIgIDxrZXZpbmJAcmVkaGF0LmNvbT4KLSAKLSAJ KiByZW1vdGUtbWlwcy5jIChjbG9zZV9wb3J0cywgbWlwc19pbml0aWFsaXplX2NsZWFudXBzKQot LS0tIHNyYy9nZGIvc29saWItc3ZyNC5jCTIwMTAvMDMvMTAgMjA6NTU6NDQJMS4xMjkKLSsrKyBz cmMvZ2RiL3NvbGliLXN2cjQuYwkyMDEwLzAzLzExIDIyOjA3OjAyCTEuMTMwCi1AQCAtMjQzLDEy ICsyNDMsMTAgQEAKLSAJICAgICAgbF9hZGRyID0gbF9keW5hZGRyIC0gZHluYWRkcjsKLSAKLSAJ ICAgICAgaWYgKGluZm9fdmVyYm9zZSkKLS0JCXsKLS0JCSAgd2FybmluZyAoXygiLmR5bmFtaWMg c2VjdGlvbiBmb3IgXCIlc1wiICIKLS0JCQkgICAgICJpcyBub3QgYXQgdGhlIGV4cGVjdGVkIGFk ZHJlc3MiKSwgc28tPnNvX25hbWUpOwotLQkJICB3YXJuaW5nIChfKCJkaWZmZXJlbmNlIGFwcGVh cnMgdG8gYmUgY2F1c2VkIGJ5IHByZWxpbmssICIKLS0JCQkgICAgICJhZGp1c3RpbmcgZXhwZWN0 YXRpb25zIikpOwotLQkJfQotKwkJcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlVzaW5nIFBJQyAoUG9z aXRpb24gSW5kZXBlbmRlbnQgQ29kZSkgIgotKwkJCQkgICAgICJwcmVsaW5rIGRpc3BsYWNlbWVu dCAlcyBmb3IgXCIlc1wiLlxuIiksCi0rCQkJCSAgIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwg bF9hZGRyKSwKLSsJCQkJICAgc28tPnNvX25hbWUpOwotIAkgICAgfQotIAkgIGVsc2UKLSAJICAg IHdhcm5pbmcgKF8oIi5keW5hbWljIHNlY3Rpb24gZm9yIFwiJXNcIiAiCi1AQCAtMTc2Nyw2ICsx NzY1LDE4IEBACi0gCXJldHVybiAwOwotICAgICB9Ci0gCi0rICBpZiAoaW5mb192ZXJib3NlKQot KyAgICB7Ci0rICAgICAgLyogSXQgY2FuIGJlIHByaW50ZWQgcmVwZWF0ZWRseSBhcyB0aGVyZSBp cyBubyBlYXN5IHdheSB0byBjaGVjawotKwkgdGhlIGV4ZWN1dGFibGUgc3ltYm9scy9maWxlIGhh cyBiZWVuIGFscmVhZHkgcmVsb2NhdGVkIHRvCi0rCSBkaXNwbGFjZW1lbnQuICAqLwotKwotKyAg ICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJVc2luZyBQSUUgKFBvc2l0aW9uIEluZGVwZW5kZW50 IEV4ZWN1dGFibGUpICIKLSsJCQkgICAiZGlzcGxhY2VtZW50ICVzIGZvciBcIiVzXCIuXG4iKSwK LSsJCQkgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBkaXNwbGFjZW1lbnQpLAotKwkJCSBiZmRf Z2V0X2ZpbGVuYW1lIChleGVjX2JmZCkpOwotKyAgICB9Ci0rCi0gICAqZGlzcGxhY2VtZW50cCA9 IGRpc3BsYWNlbWVudDsKLSAgIHJldHVybiAxOwotIH0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9D aGFuZ2VMb2cJMjAxMC8wMy8xMSAwMDoyMDoyOQkxLjIxNjgKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cJMjAxMC8wMy8xMSAyMjowNzowMgkxLjIxNjkKLSMjIC0xLDMgKzEsMjAgQEAK LSsyMDEwLTAzLTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0rCi0rCSogZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cDogQ3JlYXRlIG5ldyBkaXNwbGFjZW1l bnQgcGFyYW1ldGVyIHZhbHVlCi0rCWZvciB0aGUgdGVzdF9sZCBjYWxscy4KLSsJKHJlYWNoKTog TmV3IHBhcmFtZXRlciBkaXNwbGFjZW1lbnQsIHZlcmlmeSBpdHMgY29udGVudC4gIE5ldyBwdXNo IG9mCi0rCXBmX3ByZWZpeCAicmVhY2gtJGZ1bmM6Ii4gIEltcG9ydCBnbG9iYWwgZXhwZWN0X291 dC4KLSsJKHRlc3RfY29yZSk6IE5ldyBwYXJhbWV0ZXIgZGlzcGxhY2VtZW50LCB2ZXJpZnkgaXRz IGNvbnRlbnQuICBOZXcgcHVzaAotKwlvZiBwZl9wcmVmaXggImNvcmU6Ii4gIE5ldyBjb21tYW5k ICJzZXQgdmVyYm9zZSBvbiIuICBJbXBvcnQgZ2xvYmFsCi0rCWV4cGVjdF9vdXQuCi0rCSh0ZXN0 X2F0dGFjaCk6IE5ldyBwYXJhbWV0ZXIgZGlzcGxhY2VtZW50LCB2ZXJpZnkgaXRzIGNvbnRlbnQu ICBOZXcKLSsJcHVzaCBvZiBwZl9wcmVmaXggImF0dGFjaDoiLiAgTmV3IGNvbW1hbmQgInNldCB2 ZXJib3NlIG9uIi4gIEltcG9ydAotKwlnbG9iYWwgZXhwZWN0X291dC4KLSsJKHRlc3RfbGQpOiBO ZXcgcGFyYW1ldGVyIGRpc3BsYWNlbWVudCwgcGFzcyBpdCB0byB0aGUgcmVhY2gsIHRlc3RfY29y ZQotKwlhbmQgdGVzdF9hdHRhY2ggY2FsbHMgYW5kIHZlcmlmeSBpdHMgY29udGVudCBpbiB0aGUg ImxkLnNvIGV4aXQiIHRlc3QuCi0rCSogZ2RiLmJhc2UvcHJlbGluay5leHA6IFJlbW92ZSBnZGJf ZXhpdCBhbmQgZmluYWwgcmV0dXJuLgotKwkocHJlbGluayk6IFVwZGF0ZSBleHBlY3RlZCB0ZXh0 LCB1c2UgZ2RiX3Rlc3QuCi0rCi0gMjAxMC0wMy0xMCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUu Y29tPgotIAotIAkqIGdkYi5iYXNlL2NoZWNrcG9pbnQuZXhwOiBGaXggY29tbWVudC4KLS0tLSBz cmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTAvMDEvMjcgMjA6 NTM6MjIJMS42Ci0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4 cAkyMDEwLzAzLzExIDIyOjA3OjAzCTEuNwotQEAgLTIyMSwzMCArMjIxLDYxIEBACi0gfQotIAot ICMgYHJ1bnRvJyBkb2VzIG5vdCBjaGVjayB3ZSBzdG9wcGVkIHJlYWxseSBhdCB0aGUgZnVuY3Rp b24gd2Ugc3BlY2lmaWVkLgotLXByb2MgcmVhY2gge2Z1bmMgY29tbWFuZH0gewotLSAgICBnbG9i YWwgZ2RiX3Byb21wdAotKyMgRElTUExBQ0VNRU5UIGNhbiBiZSAiTk9ORSIsICJaRVJPIiBvciAi Tk9OWkVSTyIKLStwcm9jIHJlYWNoIHtmdW5jIGNvbW1hbmQgZGlzcGxhY2VtZW50fSB7Ci0rICAg IGdsb2JhbCBnZGJfcHJvbXB0IGV4cGVjdF9vdXQKLSsKLSsgICAgZ2xvYmFsIHBmX3ByZWZpeAot KyAgICBzZXQgb2xkX2xkcHJlZml4ICRwZl9wcmVmaXgKLSsgICAgbGFwcGVuZCBwZl9wcmVmaXgg InJlYWNoLSRmdW5jOiIKLSAKLSAgICAgaWYgW2dkYl9icmVha3BvaW50ICRmdW5jIGFsbG93LXBl bmRpbmddIHsKLS0Jc2V0IHRlc3QgInJlYWNoICRmdW5jIgotKwlzZXQgdGVzdCAicmVhY2giCi0r CXNldCB0ZXN0X2Rpc3BsYWNlbWVudCAic2VlbiBkaXNwbGFjZW1lbnQgbWVzc2FnZSBhcyAkZGlz cGxhY2VtZW50IgotIAlnZGJfdGVzdF9tdWx0aXBsZSAkY29tbWFuZCAkdGVzdCB7Ci0rCSAgICAt cmUgIlVzaW5nIFBJRSBcXChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlXFwpIGRpc3Bs YWNlbWVudCAoMHhcWzAtOWEtZlxdKykgIiB7Ci0rCQkjIE1pc3NpbmcgIiRnZGJfcHJvbXB0ICQi IGlzIGludGVudGlvbmFsLgotKwkJaWYgeyRleHBlY3Rfb3V0KDEsc3RyaW5nKSA9PSAiMHgwIn0g ewotKwkJICAgIHNldCBjYXNlICJaRVJPIgotKwkJfSBlbHNlIHsKLSsJCSAgICBzZXQgY2FzZSAi Tk9OWkVSTyIKLSsJCX0KLSsJCWlmIHskZGlzcGxhY2VtZW50ID09ICRjYXNlfSB7Ci0rCQkgICAg cGFzcyAkdGVzdF9kaXNwbGFjZW1lbnQKLSsJCSAgICAjIFBlcm1pdCBtdWx0aXBsZSBzdWNoIG1l c3NhZ2VzLgotKwkJICAgIHNldCBkaXNwbGFjZW1lbnQgIkZPVU5ELSRkaXNwbGFjZW1lbnQiCi0r CQl9IGVsc2VpZiB7JGRpc3BsYWNlbWVudCAhPSAiRk9VTkQtJGNhc2UifSB7Ci0rCQkgICAgZmFp bCAkdGVzdF9kaXNwbGFjZW1lbnQKLSsJCX0KLSsJCWV4cF9jb250aW51ZQotKwkgICAgfQotIAkg ICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCAkZnVuYyBcXCguKlxcKSBhdCAuKjpcWzAtOVxd K1xyXG4uKiRnZGJfcHJvbXB0ICQiIHsKLSAJCXBhc3MgJHRlc3QKLSAJICAgIH0KLS0JICAgIC1y ZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFswLTl4YS1mXF0rIGluICRmdW5jIFxcKFxcKSggZnJv bSAuKik/XHJcbiRnZGJfcHJvbXB0ICQiIHsgCi0rCSAgICAtcmUgIkJyZWFrcG9pbnQgXFswLTlc XSssIFxbMC05eGEtZlxdKyBpbiAkZnVuYyBcXChcXCkoIGZyb20gLiopP1xyXG4kZ2RiX3Byb21w dCAkIiB7Ci0gCQlwYXNzICR0ZXN0Ci0gCSAgICB9Ci0gCX0KLSsJaWYgIVtyZWdleHAge14oTk9O RXxGT1VORC0uKikkfSAkZGlzcGxhY2VtZW50XSB7Ci0rCSAgICBmYWlsICR0ZXN0X2Rpc3BsYWNl bWVudAotKwl9Ci0gICAgIH0KLSsKLSsgICAgc2V0IHBmX3ByZWZpeCAkb2xkX2xkcHJlZml4Ci0g fQotIAotLXByb2MgdGVzdF9jb3JlIHtmaWxlfSB7Ci0tICAgIGdsb2JhbCBzcmNkaXIgc3ViZGly IGdkYl9wcm9tcHQKLStwcm9jIHRlc3RfY29yZSB7ZmlsZSBkaXNwbGFjZW1lbnR9IHsKLSsgICAg Z2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0Ci0gCi0gICAgIHNldCBj b3JlZmlsZSBbY29yZV9maW5kICRmaWxlIHt9ICJzZWd2Il0KLSAgICAgaWYgeyRjb3JlZmlsZSA9 PSAiIn0gewotIAlyZXR1cm4KLSAgICAgfQotIAotKyAgICBnbG9iYWwgcGZfcHJlZml4Ci0rICAg IHNldCBvbGRfbGRwcmVmaXggJHBmX3ByZWZpeAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiY29y ZToiCi0rCi0gICAgIGdkYl9leGl0Ci0gICAgIGdkYl9zdGFydAotICAgICAjIENsZWFyIGl0IHRv IG5ldmVyIGZpbmQgYW55IHNlcGFyYXRlIGRlYnVnIGluZm9zIGluICRkZWJ1Z19yb290LgotQEAg LTI1MiwxNCArMjgzLDQ0IEBACi0gICAgIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgotICAgICBnZGJfbG9hZCAkZmlsZQotIAotLSAgICAjIERvIG5vdCBjaGVjayB0aGUgYmlu YXJ5IGZpbGVuYW1lIGFzIGl0IG1heSBiZSB0cnVuY2F0ZWQuCi0tICAgIGdkYl90ZXN0ICJjb3Jl LWZpbGUgJGNvcmVmaWxlIiAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qXHJcbiMwIC4qIiAiY29y ZSBsb2FkZWQiCi0rICAgICMgUHJpbnQgdGhlICJQSUUgKFBvc2l0aW9uIEluZGVwZW5kZW50IEV4 ZWN1dGFibGUpIGRpc3BsYWNlbWVudCIgbWVzc2FnZS4KLSsgICAgZ2RiX3Rlc3QgInNldCB2ZXJi b3NlIG9uIgotKwotKyAgICBzZXQgdGVzdCAiY29yZSBsb2FkZWQiCi0rICAgIHNldCB0ZXN0X2Rp c3BsYWNlbWVudCAic2VlbiBkaXNwbGFjZW1lbnQgbWVzc2FnZSIKLSsgICAgZ2RiX3Rlc3RfbXVs dGlwbGUgImNvcmUtZmlsZSAkY29yZWZpbGUiICR0ZXN0IHsKLSsJLXJlICJVc2luZyBQSUUgXFwo UG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZVxcKSBkaXNwbGFjZW1lbnQgKDB4XFswLTlh LWZcXSspICIgewotKwkgICAgIyBNaXNzaW5nICIkZ2RiX3Byb21wdCAkIiBpcyBpbnRlbnRpb25h bC4KLSsJICAgIGlmIHskZXhwZWN0X291dCgxLHN0cmluZykgPT0gIjB4MCJ9IHsKLSsJCXNldCBj YXNlICJaRVJPIgotKwkgICAgfSBlbHNlIHsKLSsJCXNldCBjYXNlICJOT05aRVJPIgotKwkgICAg fQotKwkgICAgaWYgeyRkaXNwbGFjZW1lbnQgPT0gJGNhc2V9IHsKLSsJCXBhc3MgJHRlc3RfZGlz cGxhY2VtZW50Ci0rCQkjIFBlcm1pdCBtdWx0aXBsZSBzdWNoIG1lc3NhZ2VzLgotKwkJc2V0IGRp c3BsYWNlbWVudCAiRk9VTkQtJGRpc3BsYWNlbWVudCIKLSsJICAgIH0gZWxzZWlmIHskZGlzcGxh Y2VtZW50ICE9ICJGT1VORC0kY2FzZSJ9IHsKLSsJCWZhaWwgJHRlc3RfZGlzcGxhY2VtZW50Ci0r CSAgICB9Ci0rCSAgICBleHBfY29udGludWUKLSsJfQotKwktcmUgIkNvcmUgd2FzIGdlbmVyYXRl ZCBieSAuKlxyXG4jMCAuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgRG8gbm90IGNoZWNrIHRo ZSBiaW5hcnkgZmlsZW5hbWUgYXMgaXQgbWF5IGJlIHRydW5jYXRlZC4KLSsJICAgIHBhc3MgJHRl c3QKLSsJfQotKyAgICB9Ci0rICAgIGlmICFbcmVnZXhwIHteKE5PTkV8Rk9VTkQtLiopJH0gJGRp c3BsYWNlbWVudF0gewotKwlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAotKyAgICB9Ci0gCi0gICAg IGdkYl90ZXN0ICJidCIgIiNcWzAtOVxdKyArXFteXHJcblxdKlxcbWxpYmZ1bmNcXE1cW15cclxu XF0qXHJcbiNcWzAtOVxdKyArXFteXHJcblxdKlxcbW1haW5cXE0uKiIgImNvcmUgbWFpbiBidCIK LSsKLSsgICAgc2V0IHBmX3ByZWZpeCAkb2xkX2xkcHJlZml4Ci0gfQotIAotLXByb2MgdGVzdF9h dHRhY2gge2ZpbGV9IHsKLS0gICAgZ2xvYmFsIGJvYXJkX2luZm8KLStwcm9jIHRlc3RfYXR0YWNo IHtmaWxlIGRpc3BsYWNlbWVudH0gewotKyAgICBnbG9iYWwgYm9hcmRfaW5mbyBnZGJfcHJvbXB0 IGV4cGVjdF9vdXQKLSAKLSAgICAgZ2RiX2V4aXQKLSAKLUBAIC0yODcsMTcgKzM0OCw2MSBAQAot IAl9Ci0gICAgIH0KLSAKLSsgICAgZ2xvYmFsIHBmX3ByZWZpeAotKyAgICBzZXQgb2xkX2xkcHJl Zml4ICRwZl9wcmVmaXgKLSsgICAgbGFwcGVuZCBwZl9wcmVmaXggImF0dGFjaDoiCi0rCi0gICAg IGdkYl9leGl0Ci0gICAgIGdkYl9zdGFydAotLSAgICBnZGJfdGVzdCAiYXR0YWNoICRwaWQiICJB dHRhY2hpbmcgdG8gcHJvY2VzcyAkcGlkXHJcbi4qIiAiYXR0YWNoIgotKwotKyAgICAjIFByaW50 IHRoZSAiUElFIChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlKSBkaXNwbGFjZW1lbnQi IG1lc3NhZ2UuCi0rICAgIGdkYl90ZXN0ICJzZXQgdmVyYm9zZSBvbiIKLSsKLSsgICAgc2V0IHRl c3QgImF0dGFjaCIKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImF0dGFjaCAkcGlkIiAkdGVzdCB7 Ci0rCS1yZSAiQXR0YWNoaW5nIHRvIHByb2Nlc3MgJHBpZFxyXG4iIHsKLSsJICAgICMgTWlzc2lu ZyAiJGdkYl9wcm9tcHQgJCIgaXMgaW50ZW50aW9uYWwuCi0rCSAgICBwYXNzICR0ZXN0Ci0rCX0K LSsgICAgfQotKwotKyAgICBzZXQgdGVzdCAiYXR0YWNoIGZpbmFsIHByb21wdCIKLSsgICAgc2V0 IHRlc3RfZGlzcGxhY2VtZW50ICJzZWVuIGRpc3BsYWNlbWVudCBtZXNzYWdlIgotKyAgICBnZGJf dGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7Ci0rCS1yZSAiVXNpbmcgUElFIFxcKFBvc2l0aW9uIElu ZGVwZW5kZW50IEV4ZWN1dGFibGVcXCkgZGlzcGxhY2VtZW50ICgweFxbMC05YS1mXF0rKSAiIHsK LSsJICAgICMgTWlzc2luZyAiJGdkYl9wcm9tcHQgJCIgaXMgaW50ZW50aW9uYWwuCi0rCSAgICBp ZiB7JGV4cGVjdF9vdXQoMSxzdHJpbmcpID09ICIweDAifSB7Ci0rCQlzZXQgY2FzZSAiWkVSTyIK LSsJICAgIH0gZWxzZSB7Ci0rCQlzZXQgY2FzZSAiTk9OWkVSTyIKLSsJICAgIH0KLSsJICAgIGlm IHskZGlzcGxhY2VtZW50ID09ICRjYXNlfSB7Ci0rCQlwYXNzICR0ZXN0X2Rpc3BsYWNlbWVudAot KwkJIyBQZXJtaXQgbXVsdGlwbGUgc3VjaCBtZXNzYWdlcy4KLSsJCXNldCBkaXNwbGFjZW1lbnQg IkZPVU5ELSRkaXNwbGFjZW1lbnQiCi0rCSAgICB9IGVsc2VpZiB7JGRpc3BsYWNlbWVudCAhPSAi Rk9VTkQtJGNhc2UifSB7Ci0rCQlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAotKwkgICAgfQotKwkg ICAgZXhwX2NvbnRpbnVlCi0rCX0KLSsJLXJlICIkZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBwYXNz ICR0ZXN0Ci0rCX0KLSsgICAgfQotKyAgICBpZiAhW3JlZ2V4cCB7XihOT05FfEZPVU5ELS4qKSR9 ICRkaXNwbGFjZW1lbnRdIHsKLSsJZmFpbCAkdGVzdF9kaXNwbGFjZW1lbnQKLSsgICAgfQotKwot ICAgICBnZGJfdGVzdCAiYnQiICIjXFswLTlcXSsgK1xbXlxyXG5cXSpcXG1saWJmdW5jXFxNXFte XHJcblxdKlxyXG4jXFswLTlcXSsgK1xbXlxyXG5cXSpcXG1tYWluXFxNLioiICJhdHRhY2ggbWFp biBidCIKLSAgICAgZ2RiX2V4aXQKLSAKLSAgICAgcmVtb3RlX2V4ZWMgaG9zdCAia2lsbCAtOSAk cGlkIgotKwotKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKLSB9Ci0gCi0tcHJvYyB0 ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bX0gewotLSAgICBnbG9iYWwgc3JjZGlyIHN1YmRp ciBnZGJfcHJvbXB0Ci0rcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbGFj ZW1lbnR9IHsKLSsgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0 Ci0gCi0gICAgICMgRmlyc3QgdGVzdCBub3JtYWwgYGZpbGUnLWNvbW1hbmQgbG9hZGVkICRGSUxF IHdpdGggc3ltYm9scy4KLSAKLUBAIC0zMDgsMjAgKzQxMywzMSBAQAotICAgICBnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSAgICAgZ2RiX2xvYWQgJGZpbGUKLSAKLS0gICAg cmVhY2ggImRsX21haW4iICJydW4gc2VndiIKLSsgICAgIyBQcmludCB0aGUgIlBJRSAoUG9zaXRp b24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSkgZGlzcGxhY2VtZW50IiBtZXNzYWdlLgotKyAgICBn ZGJfdGVzdCAic2V0IHZlcmJvc2Ugb24iCi0rCi0rICAgIHJlYWNoICJkbF9tYWluIiAicnVuIHNl Z3YiICRkaXNwbGFjZW1lbnQKLSAKLSAgICAgZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpc XG1kbF9tYWluXFxNLioiICJkbCBidCIKLSAKLSAgICAgaWYgJGlmbWFpbiB7Ci0tCXJlYWNoICJt YWluIiBjb250aW51ZQotKwkjIERpc3BsYWNlbWVudCBtZXNzYWdlIHdpbGwgYmUgcHJpbnRlZCB0 aGUgc2Vjb25kIHRpbWUgb24gaW5pdGlhbGl6aW5nCi0rCSMgdGhlIGxpbmtlciBmcm9tIHN2cjRf c3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcuICBJZiBhbnkgQU5PRkZTRVQgaGFzCi0rCSMgYmVlbiBh bHJlYWR5IHNldCBhcyBub24temVybyB0aGUgZGV0ZWN0aW9uIHdpbGwgbm8gbG9uZ2VyIGJlIHJ1 bi4KLSsJaWYgeyRkaXNwbGFjZW1lbnQgPT0gIk5PTlpFUk8ifSB7Ci0rCSAgICBzZXQgZGlzcGxh Y2VtZW50X21haW4gIk5PTkUiCi0rCX0gZWxzZSB7Ci0rCSAgICBzZXQgZGlzcGxhY2VtZW50X21h aW4gJGRpc3BsYWNlbWVudAotKwl9Ci0rCXJlYWNoICJtYWluIiBjb250aW51ZSAkZGlzcGxhY2Vt ZW50X21haW4KLSAKLS0JcmVhY2ggImxpYmZ1bmMiIGNvbnRpbnVlCi0rCXJlYWNoICJsaWJmdW5j IiBjb250aW51ZSAiTk9ORSIKLSAKLSAJZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpcXG1s aWJmdW5jXFxNXFteXHJcblxdKlxyXG4jMSArXFteXHJcblxdKlxcbW1haW5cXE0uKiIgIm1haW4g YnQiCi0gCi0tCXRlc3RfY29yZSAkZmlsZQotKwl0ZXN0X2NvcmUgJGZpbGUgJGRpc3BsYWNlbWVu dAotIAotLQl0ZXN0X2F0dGFjaCAkZmlsZQotKwl0ZXN0X2F0dGFjaCAkZmlsZSAkZGlzcGxhY2Vt ZW50Ci0gICAgIH0KLSAKLSAgICAgaWYgISR0cnlub3N5bSB7Ci1AQCAtMzQxLDE4ICs0NTcsMjEg QEAKLSAgICAgZ2RiX3Rlc3QgInNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSIKLSAgICAgZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gCi0rICAgICMgUHJpbnQgdGhlICJQSUUg KFBvc2l0aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGUpIGRpc3BsYWNlbWVudCIgbWVzc2FnZS4K LSsgICAgZ2RiX3Rlc3QgInNldCB2ZXJib3NlIG9uIgotKwotICAgICAjIFRlc3Qgbm8gKGVycm9y KSBtZXNzYWdlIGhhcyBiZWVuIHByaW50ZWQgYnkgYGV4ZWMtZmlsZScuCi0gICAgIHNldCBlc2Nh cGVkZmlsZSBbc3RyaW5nX3RvX3JlZ2V4cCAkZmlsZV0KLSAgICAgZ2RiX3Rlc3QgImV4ZWMtZmls ZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNjYXBlZGZpbGUiICJsb2FkIgotIAotICAgICBpZiAkaWZt YWluIHsKLS0JcmVhY2ggImRsX21haW4iIHJ1bgotKwlyZWFjaCAiZGxfbWFpbiIgcnVuICRkaXNw bGFjZW1lbnQKLSAKLSAJc2V0IHRlc3QgImluZm8gZmlsZXMiCi0gCXNldCBlbnRyeW5vaGV4ICIi Ci0gCWdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSAJICAgIC1yZSAiXHJcblxbXHQg XF0qRW50cnkgcG9pbnQ6XFtcdCBcXSoweChcWzAtOWEtZlxdKylcclxuLiokZ2RiX3Byb21wdCAk IiB7Ci0tCQlzZXQgZW50cnlub2hleCAkZXhwZWN0X291dCgxLHN0cmluZykgCi0rCQlzZXQgZW50 cnlub2hleCAkZXhwZWN0X291dCgxLHN0cmluZykKLSAJCXBhc3MgJHRlc3QKLSAJICAgIH0KLSAJ fQotQEAgLTM2Myw3ICs0ODIsMzQgQEAKLSAgICAgfSBlbHNlIHsKLSAJIyBUaGVyZSBpcyBubyBz eW1ib2wgdG8gYnJlYWsgYXQgbGQuc28uICBNb3Jlb3ZlciBpdCBjYW4gZXhpdCB3aXRoIGFuCi0g CSMgZXJyb3IgY29kZS4KLS0JZ2RiX3Rlc3QgInJ1biIgIlByb2dyYW0gZXhpdGVkIChub3JtYWxs eXx3aXRoIGNvZGUgXFswLTlcXSspXFwuIiAibGQuc28gZXhpdCIKLSsKLSsJc2V0IHRlc3QgImxk LnNvIGV4aXQiCi0rCXNldCB0ZXN0X2Rpc3BsYWNlbWVudCAic2VlbiBkaXNwbGFjZW1lbnQgbWVz c2FnZSIKLSsJZ2RiX3Rlc3RfbXVsdGlwbGUgInJ1biIgJHRlc3QgewotKwkgICAgLXJlICJVc2lu ZyBQSUUgXFwoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZVxcKSBkaXNwbGFjZW1lbnQg KDB4XFswLTlhLWZcXSspICIgewotKwkJIyBNaXNzaW5nICIkZ2RiX3Byb21wdCAkIiBpcyBpbnRl bnRpb25hbC4KLSsJCWlmIHskZXhwZWN0X291dCgxLHN0cmluZykgPT0gIjB4MCJ9IHsKLSsJCSAg ICBzZXQgY2FzZSAiWkVSTyIKLSsJCX0gZWxzZSB7Ci0rCQkgICAgc2V0IGNhc2UgIk5PTlpFUk8i Ci0rCQl9Ci0rCQlpZiB7JGRpc3BsYWNlbWVudCA9PSAkY2FzZX0gewotKwkJICAgIHBhc3MgJHRl c3RfZGlzcGxhY2VtZW50Ci0rCQkgICAgIyBQZXJtaXQgbXVsdGlwbGUgc3VjaCBtZXNzYWdlcy4K LSsJCSAgICBzZXQgZGlzcGxhY2VtZW50ICJGT1VORC0kZGlzcGxhY2VtZW50IgotKwkJfSBlbHNl aWYgeyRkaXNwbGFjZW1lbnQgIT0gIkZPVU5ELSRjYXNlIn0gewotKwkJICAgIGZhaWwgJHRlc3Rf ZGlzcGxhY2VtZW50Ci0rCQl9Ci0rCQlleHBfY29udGludWUKLSsJICAgIH0KLSsJICAgIC1yZSAi UHJvZ3JhbSBleGl0ZWQgKG5vcm1hbGx5fHdpdGggY29kZSBcWzAtOVxdKylcXC5cclxuJGdkYl9w cm9tcHQgJCIgewotKwkJIyBEbyBub3QgY2hlY2sgdGhlIGJpbmFyeSBmaWxlbmFtZSBhcyBpdCBt YXkgYmUgdHJ1bmNhdGVkLgotKwkJcGFzcyAkdGVzdAotKwkgICAgfQotKwl9Ci0rCWlmICFbcmVn ZXhwIHteKE5PTkV8Rk9VTkQtLiopJH0gJGRpc3BsYWNlbWVudF0gewotKwkgICAgZmFpbCAkdGVz dF9kaXNwbGFjZW1lbnQKLSsJfQotICAgICB9Ci0gCi0gICAgIHNldCBwZl9wcmVmaXggJG9sZF9s ZHByZWZpeAotQEAgLTQ1MCw3ICs1OTYsMTIgQEAKLSAJaWYgIVtwcmVsaW5rJGxkcHJlbGluayAk aW50ZXJwXSB7Ci0gCSAgICBjb250aW51ZQotIAl9Ci0tCXRlc3RfbGQgJGludGVycCAwIFtleHBy IHskbGRzZXBkZWJ1ZyA9PSAiTk8ifV0KLSsJaWYgeyRsZHByZWxpbmsgPT0gIk5PIn0gewotKwkg ICAgc2V0IGRpc3BsYWNlbWVudCAiTk9OWkVSTyIKLSsJfSBlbHNlIHsKLSsJICAgIHNldCBkaXNw bGFjZW1lbnQgIlpFUk8iCi0rCX0KLSsJdGVzdF9sZCAkaW50ZXJwIDAgW2V4cHIgeyRsZHNlcGRl YnVnID09ICJOTyJ9XSAkZGlzcGxhY2VtZW50Ci0gCi0gCWlmICFbY29weSAkaW50ZXJwICRpbnRl cnBfc2F2ZWRdIHsKLSAJICAgIGNvbnRpbnVlCi1AQCAtNTMxLDcgKzY4MiwxNCBAQAotIAotIAkJ ICAgIGlmIHtbcHJlbGluayRiaW5wcmVsaW5rICItLWR5bmFtaWMtbGlua2VyPSRpbnRlcnAgLS1s ZC1saWJyYXJ5LXBhdGg9JGRpciAkZXhlYyAkaW50ZXJwIFtjb25jYXQgJGRlc3RzXSIgW2ZpbGUg dGFpbCAkZXhlY11dCi0gCQkgICAgICAgICYmIFtjb3B5ICRpbnRlcnBfc2F2ZWQgJGludGVycF19 IHsKLS0JCQl0ZXN0X2xkICRleGVjIDEgW2V4cHIgeyRiaW5zZXBkZWJ1ZyA9PSAiTk8ifV0KLSsJ CQlpZiB7JGJpbnBpZSA9PSAiTk8ifSB7Ci0rCQkJICAgIHNldCBkaXNwbGFjZW1lbnQgIk5PTkUi Ci0rCQkJfSBlbHNlaWYgeyRiaW5wcmVsaW5rID09ICJOTyJ9IHsKLSsJCQkgICAgc2V0IGRpc3Bs YWNlbWVudCAiTk9OWkVSTyIKLSsJCQl9IGVsc2UgewotKwkJCSAgICBzZXQgZGlzcGxhY2VtZW50 ICJaRVJPIgotKwkJCX0KLSsJCQl0ZXN0X2xkICRleGVjIDEgW2V4cHIgeyRiaW5zZXBkZWJ1ZyA9 PSAiTk8ifV0gJGRpc3BsYWNlbWVudAotIAkJICAgIH0KLSAJCX0KLSAJICAgIH0KLS0tLSBzcmMv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmV4cAkyMDEwLzAyLzEzIDEyOjAyOjI5CTEu MTEKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLmV4cAkyMDEwLzAzLzEx IDIyOjA3OjAzCTEuMTIKLUBAIC0xMTIsMTUgKzExMiw0IEBACi0gIyBQcmludCB0aGUgImFkanVz dGluZyBleHBlY3RhdGlvbnMiIG1lc3NhZ2UuCi0gZ2RiX3Rlc3QgInNldCB2ZXJib3NlIG9uIgot IAotLXNldCB0ZXN0ICJwcmVsaW5rIgotLWdsb2JhbCBnZGJfcHJvbXB0Ci0tZ2RiX3Rlc3RfbXVs dGlwbGUgImNvcmUtZmlsZSAkb2JqZGlyLyRzdWJkaXIvcHJlbGluay5jb3JlIiAiJHRlc3QiIHsK LS0gICAgLXJlICJ3YXJuaW5nOiBcLmR5bmFtaWMgc2VjdGlvbi4qbm90IGF0IHRoZSBleHBlY3Rl ZCBhZGRyZXNzLip3YXJuaW5nOiBkaWZmZXJlbmNlLipjYXVzZWQgYnkgcHJlbGluaywgYWRqdXN0 aW5nIGV4cGVjdGF0aW9ucy4qJGdkYl9wcm9tcHQgJCIgewotLQlwYXNzICIkdGVzdCIKLS0gICAg fQotLX0KLS0KLS1nZGJfZXhpdAotLQotLXJldHVybiAwCi0tCi0rZ2RiX3Rlc3QgImNvcmUtZmls ZSAkb2JqZGlyLyRzdWJkaXIvcHJlbGluay5jb3JlIiB7VXNpbmcgUElDIFwoUG9zaXRpb24gSW5k ZXBlbmRlbnQgQ29kZVwpIHByZWxpbmsgZGlzcGxhY2VtZW50Lip9ICJwcmVsaW5rIgotCi0KLQot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wMy9tc2cwMDA2Ni5odG1sCi0x NjU1ODQ1Nzc4M2Q3MWUyODU2ZmYyYjljZWFhODMxOTlkMmQ5ODExCi0KLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEwLzAzLzA4IDA3OjQ1OjQ5CTEuMTE0NDIKLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEwLzAzLzA4IDA4OjMyOjQ5CTEuMTE0NDMKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTAtMDMt MDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBz eW1maWxlLmMgKGFkZHJfaW5mb19tYWtlX3JlbGF0aXZlKTogTmV3IHZhcmlhYmxlIHNlY3RfbmFt ZSwgdXNlIGl0LgotKwlEbyBub3Qgd2FybiBvbiAiLmdudS5saWJsaXN0IiBhbmQgIi5nbnUuY29u ZmxpY3QiLgotKwotIDIwMTAtMDMtMDggIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNv cmUuY29tPgotIAotIAlNZW1vcnkgZXJyb3Igd2hlbiByZWFkaW5nIHdyb25nIGNvcmUgZmlsZS4K LS0tLSBzcmMvZ2RiL3N5bWZpbGUuYwkyMDEwLzAzLzA1IDE5OjMyOjQ0CTEuMjc1Ci0rKysgc3Jj L2dkYi9zeW1maWxlLmMJMjAxMC8wMy8wOCAwODozMjo0OQkxLjI3NgotQEAgLTU5Miw3ICs1OTIs OCBAQAotIAotICAgZm9yIChpID0gMDsgaSA8IGFkZHJzLT5udW1fc2VjdGlvbnMgJiYgYWRkcnMt Pm90aGVyW2ldLm5hbWU7IGkrKykKLSAgICAgewotLSAgICAgIGFzZWN0aW9uICpzZWN0ID0gYmZk X2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsIGFkZHJzLT5vdGhlcltpXS5uYW1lKTsKLSsgICAg ICBjb25zdCBjaGFyICpzZWN0X25hbWUgPSBhZGRycy0+b3RoZXJbaV0ubmFtZTsKLSsgICAgICBh c2VjdGlvbiAqc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBzZWN0X25hbWUp OwotIAotICAgICAgIGlmIChzZWN0KQotIAl7Ci1AQCAtNjA5LDggKzYxMCwyMiBAQAotIAl9Ci0g ICAgICAgZWxzZQotIAl7Ci0tCSAgd2FybmluZyAoXygic2VjdGlvbiAlcyBub3QgZm91bmQgaW4g JXMiKSwgYWRkcnMtPm90aGVyW2ldLm5hbWUsCi0tCQkgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZk KSk7Ci0rCSAgLyogVGhpcyBzZWN0aW9uIGRvZXMgbm90IGV4aXN0IGluIEFCRkQsIHdoaWNoIGlz IG5vcm1hbGx5Ci0rCSAgICAgdW5leHBlY3RlZCBhbmQgd2Ugd2FudCB0byBpc3N1ZSBhIHdhcm5p bmcuCi0rCi0rCSAgICAgSG93ZXZlciwgdGhlIEVMRiBwcmVsaW5rZXIgZG9lcyBjcmVhdGUgYSBj b3VwbGUgb2Ygc2VjdGlvbnMKLSsJICAgICAoIi5nbnUubGlibGlzdCIgYW5kICIuZ251LmNvbmZs aWN0Iikgd2hpY2ggYXJlIG1hcmtlZCBpbiB0aGUgbWFpbgotKwkgICAgIGV4ZWN1dGFibGUgYXMg bG9hZGFibGUgKHRoZXkgYXJlIGxvYWRlZCBpbiBtZW1vcnkgZnJvbSB0aGUKLSsJICAgICBEWU5B TUlDIHNlZ21lbnQpIGFuZCB5ZXQgYXJlIG5vdCBwcmVzZW50IGluIHNlcGFyYXRlIGRlYnVnIGlu Zm8KLSsJICAgICBmaWxlcy4gIFRoaXMgaXMgZmluZSwgYW5kIHNob3VsZCBub3QgY2F1c2UgYSB3 YXJuaW5nLiAgU2hhcmVkCi0rCSAgICAgbGlicmFyaWVzIGNvbnRhaW4ganVzdCB0aGUgc2VjdGlv biAiLmdudS5saWJsaXN0IiBidXQgaXQgaXMgbm90Ci0rCSAgICAgbWFya2VkIGFzIGxvYWRhYmxl IHRoZXJlLiAgKi8KLSsKLSsJICBpZiAoIShzdHJjbXAgKHNlY3RfbmFtZSwgIi5nbnUubGlibGlz dCIpID09IDAKLSsJCXx8IHN0cmNtcCAoc2VjdF9uYW1lLCAiLmdudS5jb25mbGljdCIpID09IDAp KQotKwkgICAgd2FybmluZyAoXygic2VjdGlvbiAlcyBub3QgZm91bmQgaW4gJXMiKSwgc2VjdF9u YW1lLAotKwkJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0rCi0gCSAgYWRkcnMtPm90 aGVyW2ldLmFkZHIgPSAwOwotIAotIAkgIC8qIFNFQ1RJTkRFWCBpcyBpbnZhbGlkIGlmIEFERFIg aXMgemVyby4gICovCi0KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEw LTAzL21zZzAwMTM4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEwLTAzL21zZzAwNTM1Lmh0bWwKLWNjM2U3MTY1MWUyZmQwMTY4YTJkM2RkNGVmYzJkM2UxNWZk NTA4ZGQKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDMvMTUgMDM6NDg6NDYJMS4xMTQ3 OQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDMvMTUgMDk6MzE6MzAJMS4xMTQ4MAotIyMg LTEsMyArMSw4IEBACi0rMjAxMC0wMy0xNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotKwotKwkqIHN5bWZpbGUuYyAoYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUp OiBJZ25vcmUgYWxzbyBtaXNzaW5nICIuZHluYnNzIgotKwlhbmQgIi5zZHluYnNzIi4gIFVwZGF0 ZSB0aGUgY29tbWVudC4KLSsKLSAyMDEwLTAzLTE1ICBKaWUgWmhhbmcgIDxqaWVAY29kZXNvdXJj ZXJ5LmNvbT4KLSAKLSAJKiBNQUlOVEFJTkVSUzogVXBkYXRlIG15IGVtYWlsIGFkZHJlc3MuCi0t LS0gc3JjL2dkYi9zeW1maWxlLmMJMjAxMC8wMy8xMCAxODoyMDowNwkxLjI3NwotKysrIHNyYy9n ZGIvc3ltZmlsZS5jCTIwMTAvMDMvMTUgMDk6MzE6MzQJMS4yNzgKLUBAIC01NzYsMTYgKzU3Niwx OSBAQAotIAkgIC8qIFRoaXMgc2VjdGlvbiBkb2VzIG5vdCBleGlzdCBpbiBBQkZELCB3aGljaCBp cyBub3JtYWxseQotIAkgICAgIHVuZXhwZWN0ZWQgYW5kIHdlIHdhbnQgdG8gaXNzdWUgYSB3YXJu aW5nLgotIAotLQkgICAgIEhvd2V2ZXIsIHRoZSBFTEYgcHJlbGlua2VyIGRvZXMgY3JlYXRlIGEg Y291cGxlIG9mIHNlY3Rpb25zCi0tCSAgICAgKCIuZ251LmxpYmxpc3QiIGFuZCAiLmdudS5jb25m bGljdCIpIHdoaWNoIGFyZSBtYXJrZWQgaW4gdGhlIG1haW4KLS0JICAgICBleGVjdXRhYmxlIGFz IGxvYWRhYmxlICh0aGV5IGFyZSBsb2FkZWQgaW4gbWVtb3J5IGZyb20gdGhlCi0tCSAgICAgRFlO QU1JQyBzZWdtZW50KSBhbmQgeWV0IGFyZSBub3QgcHJlc2VudCBpbiBzZXBhcmF0ZSBkZWJ1ZyBp bmZvCi0tCSAgICAgZmlsZXMuICBUaGlzIGlzIGZpbmUsIGFuZCBzaG91bGQgbm90IGNhdXNlIGEg d2FybmluZy4gIFNoYXJlZAotLQkgICAgIGxpYnJhcmllcyBjb250YWluIGp1c3QgdGhlIHNlY3Rp b24gIi5nbnUubGlibGlzdCIgYnV0IGl0IGlzIG5vdAotLQkgICAgIG1hcmtlZCBhcyBsb2FkYWJs ZSB0aGVyZS4gICovCi0rCSAgICAgSG93ZXZlciwgdGhlIEVMRiBwcmVsaW5rZXIgZG9lcyBjcmVh dGUgYSBmZXcgc2VjdGlvbnMgd2hpY2ggYXJlCi0rCSAgICAgbWFya2VkIGluIHRoZSBtYWluIGV4 ZWN1dGFibGUgYXMgbG9hZGFibGUgKHRoZXkgYXJlIGxvYWRlZCBpbgotKwkgICAgIG1lbW9yeSBm cm9tIHRoZSBEWU5BTUlDIHNlZ21lbnQpIGFuZCB5ZXQgYXJlIG5vdCBwcmVzZW50IGluCi0rCSAg ICAgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlcy4gIFRoaXMgaXMgZmluZSwgYW5kIHNob3VsZCBu b3QgY2F1c2UKLSsJICAgICBhIHdhcm5pbmcuICBTaGFyZWQgbGlicmFyaWVzIGNvbnRhaW4ganVz dCB0aGUgc2VjdGlvbgotKwkgICAgICIuZ251LmxpYmxpc3QiIGJ1dCBpdCBpcyBub3QgbWFya2Vk IGFzIGxvYWRhYmxlIHRoZXJlLiAgVGhlcmUgaXMKLSsJICAgICBubyBvdGhlciB3YXkgdG8gaWRl bnRpZnkgdGhlbSB0aGFuIGJ5IHRoZWlyIG5hbWUgYXMgdGhlIHNlY3Rpb25zCi0rCSAgICAgY3Jl YXRlZCBieSBwcmVsaW5rIGhhdmUgbm8gc3BlY2lhbCBmbGFncy4gICovCi0gCi0gCSAgaWYgKCEo c3RyY21wIChzZWN0X25hbWUsICIuZ251LmxpYmxpc3QiKSA9PSAwCi0tCQl8fCBzdHJjbXAgKHNl Y3RfbmFtZSwgIi5nbnUuY29uZmxpY3QiKSA9PSAwKSkKLSsJCXx8IHN0cmNtcCAoc2VjdF9uYW1l LCAiLmdudS5jb25mbGljdCIpID09IDAKLSsJCXx8IHN0cmNtcCAoc2VjdF9uYW1lLCAiLmR5bmJz cyIpID09IDAKLSsJCXx8IHN0cmNtcCAoc2VjdF9uYW1lLCAiLnNkeW5ic3MiKSA9PSAwKSkKLSAJ ICAgIHdhcm5pbmcgKF8oInNlY3Rpb24gJXMgbm90IGZvdW5kIGluICVzIiksIHNlY3RfbmFtZSwK LSAJCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotIAotCi0KLQotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDMvbXNnMDA3OTkuaHRtbAotU3ViamVjdDog W3BhdGNoXSBGaXggc2VwYXJhdGUtZGVidWcgd2l0aCBub24tdW5pcXVlIHNlY3Rpb24gbmFtZXMg KFBSIDExNDA5KQotCi1BIGRpZmZlcmVudCB2ZXJzaW9uIHdhcyBjaGVja2VkLWluIGJ1dCB0aGV5 IGFyZSBpbnRlcmNoYW5nZWFibGU6Ci0JaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTAtMDMvbXNnMDA3OTkuaHRtbAotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTAtMDMvbXNnMDAyNDEuaHRtbAotCi1IaSwKLQotZ2RiLTcuMSBpcyBub3cgYnJva2Vu IGZvciBleGFtcGxlIGZvciBkZWJ1Z2dpbmcgL3Vzci9iaW4vZW1hY3MgZHVlIHRvOgotaHR0cDov L3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMTQwOQotICBbMjJdIC5k YXRhICAgUFJPR0JJVFMgMDAwMDAwMDAwMDdmZThhMCAxZmU4YTAgMjE1MDY4IDAwICBXQSAgMCAg IDAgMzIKLSAgWzIzXSAuZGF0YSAgIFBST0dCSVRTIDAwMDAwMDAwMDBhMTM5MjAgNDEzOTIwIDY4 YzZlMCAwMCAgV0EgIDAgICAwIDMyCi0KLUl0IGlzIGluIGZhY3QgYSByZWdyZXNzaW9uIGFnYWlu c3QgZ2RiLTcuMCBieSBtZSBkdWUgdG86Ci0KLWNvbW1pdCA3MWQwMDY5YTlmMjM4YTExZjdmNDU1 YmY2YWQyYWRmYzI1NjgzNTIxCi1BdXRob3I6IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotRGF0ZTogICBUdWUgSmFuIDUgMTU6NTE6MDEgMjAxMCArMDAwMAotCi1n ZGIvCi0gICAgICAgICogc3ltZmlsZS5jIChzeW1zX2Zyb21fb2JqZmlsZSk6IFJlbW92ZSB0aGUg IU1BSU5MSU5FIGNvbmRpdGlvbmFsLgotCi1hcyB3aGlsZSB0aGUgY29kZSB3YXMgYnJva2VuIGV2 ZW4gYmVmb3JlIHRoZSBicm9rZW4gcmVsb2NhdGlvbiB3YXMgbm90IGFwcGxpZWQKLXRvIG1haW5s aW5lIGJpbmFyeSAoYmVmb3JlIFBJRStPU1ggcGF0Y2hlcyB3ZW50IGluKS4KLQotCi1ObyByZWdy ZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251Lgot Ci1PSyB0byBjaGVjay1pbiBhbHNvIGZvciBnZGItNy4xICg3LjEuMSk/Ci0KLQotVGhhbmtzLAot SmFuCi0KLQotZ2RiLwotMjAxMC0wMy0yMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JKiBzeW1maWxlLmMgKGFkZHJfaW5mb19tYWtlX3JlbGF0aXZlKTog TW92ZSBzZWN0IGRlY2xhcmF0aW9uIHRvIHRoZQotCW91dGVyIGJsb2NrLiAgSW5pdGlhbGl6ZSBp dCB0byBOVUxMLiAgUHJlZmVyIFNFQ1QtPm5leHQgbW9yZSB0aGFuCi0JYmZkX2dldF9zZWN0aW9u X2J5X25hbWUuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEwLTAzLTIzICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5iYXNlL2R1cC1zZWN0LmV4cCwg Z2RiLmJhc2UvZHVwLXNlY3QuUzogTmV3LgotCi0tLS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9n ZGIvc3ltZmlsZS5jCi1AQCAtNTI5LDYgKzUyOSw3IEBAIGFkZHJfaW5mb19tYWtlX3JlbGF0aXZl IChzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKmFkZHJzLCBiZmQgKmFiZmQpCi0gICBhc2VjdGlv biAqbG93ZXJfc2VjdDsKLSAgIENPUkVfQUREUiBsb3dlcl9vZmZzZXQ7Ci0gICBpbnQgaTsKLSsg IGFzZWN0aW9uICpzZWN0OwotIAotICAgLyogRmluZCBsb3dlc3QgbG9hZGFibGUgc2VjdGlvbiB0 byBiZSB1c2VkIGFzIHN0YXJ0aW5nIHBvaW50IGZvcgotICAgICAgY29udGluZ3VvdXMgc2VjdGlv bnMuICAqLwotQEAgLTU1MywxMSArNTU0LDIzIEBAIGFkZHJfaW5mb19tYWtlX3JlbGF0aXZlIChz dHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKmFkZHJzLCBiZmQgKmFiZmQpCi0gICAgICAodGhlIGxv YWRhYmxlIHNlY3Rpb24gZGlyZWN0bHkgYmVsb3cgaXQgaW4gbWVtb3J5KS4KLSAgICAgIHRoaXNf b2Zmc2V0ID0gbG93ZXJfb2Zmc2V0ID0gbG93ZXJfYWRkciAtIGxvd2VyX29yaWdfYWRkciAqLwot IAotKyAgc2VjdCA9IE5VTEw7Ci0gICBmb3IgKGkgPSAwOyBpIDwgYWRkcnMtPm51bV9zZWN0aW9u cyAmJiBhZGRycy0+b3RoZXJbaV0ubmFtZTsgaSsrKQotICAgICB7Ci0gICAgICAgY29uc3QgY2hh ciAqc2VjdF9uYW1lID0gYWRkcnMtPm90aGVyW2ldLm5hbWU7Ci0tICAgICAgYXNlY3Rpb24gKnNl Y3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgc2VjdF9uYW1lKTsKLSAKLSsgICAg ICAvKiBQcmVmZXIgdGhlIG5leHQgc2VjdGlvbiBvZiB0aGF0IHdlIGhhdmUgZm91bmQgbGFzdC4g IFRoZSBzZXBhcmF0ZQotKwkgZGVidWcgaW5mbyBmaWxlcyBoYXZlIGVpdGhlciB0aGUgc2FtZSBz ZWN0aW9uIGxheW91dCBvciBqdXN0IGEgZmV3Ci0rCSBzZWN0aW9ucyBhcmUgbWlzc2luZyB0aGVy ZS4gIE9uIHRoZSBvdGhlciBoYW5kIHRoZSBzZWN0aW9uIG5hbWUgaXMgbm90Ci0rCSB1bmlxdWUg YW5kIHdlIGNvdWxkIGZpbmQgYW4gaW5hcHByb3ByYWl0ZSBzZWN0aW9uIGJ5IGl0cyBuYW1lLiAg Ki8KLSsKLSsgICAgICBpZiAoc2VjdCkKLSsJc2VjdCA9IHNlY3QtPm5leHQ7Ci0rICAgICAgaWYg KHNlY3QgJiYgc3RyY21wIChzZWN0X25hbWUsIGJmZF9nZXRfc2VjdGlvbl9uYW1lIChhYmZkLCBz ZWN0KSkgIT0gMCkKLSsJc2VjdCA9IE5VTEw7Ci0rCi0rICAgICAgaWYgKHNlY3QgPT0gTlVMTCkK LSsJc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBzZWN0X25hbWUpOwotICAg ICAgIGlmIChzZWN0KQotIAl7Ci0gCSAgLyogVGhpcyBpcyB0aGUgaW5kZXggdXNlZCBieSBCRkQu ICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2R1cC1zZWN0 LlMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KLSsKLSsJLnNlY3Rpb24Jc2VjdDEsICJhIgotK3ZhcjE6CS5ieXRlCTEKLSsKLSsJLnNlY3Rp b24Jc2VjdDIsICJhIgotK3ZhcjI6CS5ieXRlCTIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvZHVwLXNlY3QuZXhwCi1AQCAtMCwwICsxLDc5IEBACi0rIyBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyMgQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBpbmFwcHJvcHJpYXRlIG9mZnNldGluZyBvZiBt dWx0aXBsZSBzZWN0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUuCi0rIyBXaGVuIGtlcHQgaW4gb2Jq ZWN0IGZpbGUgKGJlZm9yZSBmaW5hbCBleGVjdXRhYmxlIGxpbmspIGl0IHN0aWxsIHdvcmtzLgot KyMgV2hlbiBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZpbGUgaXMgbm90IHVzZWQgaXQgc3RpbGwgd29y a3MuCi0rIyBXaGVuIHRoZSBFTEYgc3ltYm9sIHRhYmxlIGlzIGtlcHQgaW4gdGhlIG1haW4gYmlu YXJ5IGl0IHN0aWxsIHdvcmtzLgotKyMgVXNlZCAuUyBmaWxlIGFzIGluIC5jIGZpbGUgd2Ugd291 bGQgbmVlZCBfX2F0dHJpdXRlX18oKHNlY3Rpb24pKSB3aGljaCBpcwotKyMgYSBHQ0MgZXh0ZW5z aW9uLgotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1 cHBvcnQgRUxGIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2YgbGlr ZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYgIVtpc3Rh cmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAgJiYgIVtp c3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpd fSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSBkdXAtc2VjdAotK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LlMKLStzZXQgc3JjbWFpbmZpbGUgc3RhcnQuYwotK3NldCBleGVj dXRhYmxlICR7dGVzdGZpbGV9Ci0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4 ZWN1dGFibGV9Ci0rCi0raWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkZXhl Y3V0YWJsZSBbbGlzdCAke3NyY2ZpbGV9ICR7c3JjbWFpbmZpbGV9XSB7fV0gPT0gLTF9IHsKLSsg ICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCB0ZXN0ICJyZW5hbWUgc2VjdGlvbiIKLStzZXQgb2Jq Y29weV9wcm9ncmFtIFt0cmFuc2Zvcm0gb2JqY29weV0KLStzZXQgcmVzdWx0IFtjYXRjaCAiZXhl YyAkb2JqY29weV9wcm9ncmFtIC0tcmVuYW1lLXNlY3Rpb24gc2VjdDI9c2VjdDEgJGJpbmZpbGUi IG91dHB1dF0KLSt2ZXJib3NlICJyZXN1bHQgaXMgJHJlc3VsdCIKLSt2ZXJib3NlICJvdXRwdXQg aXMgJG91dHB1dCIKLStpZiB7JHJlc3VsdCAhPSAwfSB7Ci0rICAgIGZhaWwgJHRlc3QKLSsgICAg cmV0dXJuCi0rfQotK3Bhc3MgJHRlc3QKLSsKLStzZXQgdGVzdCAic3BsaXQiCi0raWYge1tnZGJf Z251X3N0cmlwX2RlYnVnICRiaW5maWxlXSAhPSAwfSB7Ci0rICAgIGZhaWwgJHRlc3QKLSt9IGVs c2UgewotKyAgICBwYXNzICR0ZXN0Ci0rfQotKwotKyMgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB1c2Vz IG9ubHkgLS1zdHJpcC1kZWJ1ZyBhbmQga2VlcHMgdGhlIEVMRiBzeW1ib2wgdGFibGUKLSsjIGlu ICRiaW5maWxlLgotK3NldCB0ZXN0ICJzdHJpcCIKLStzZXQgc3RyaXBfcHJvZ3JhbSBbdHJhbnNm b3JtIHN0cmlwXQotK3NldCByZXN1bHQgW2NhdGNoICJleGVjICRzdHJpcF9wcm9ncmFtICRiaW5m aWxlIiBvdXRwdXRdCi0rdmVyYm9zZSAicmVzdWx0IGlzICRyZXN1bHQiCi0rdmVyYm9zZSAib3V0 cHV0IGlzICRvdXRwdXQiCi0raWYgeyRyZXN1bHQgIT0gMH0gewotKyAgICBmYWlsICR0ZXN0Ci0r ICAgIHJldHVybgotK30KLStwYXNzICR0ZXN0Ci0rCi0rY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJs ZQotKwotK2dkYl90ZXN0ICJwL2QgKihjb25zdCBjaGFyICopICZ2YXIxIiAiID0gMSIgInZhcjEg YWZ0ZXIgc3RyaXAiCi0rZ2RiX3Rlc3QgInAvZCAqKGNvbnN0IGNoYXIgKikgJnZhcjIiICIgPSAy IiAidmFyMiBhZnRlciBzdHJpcCIKLQotCi0KLVtwYXRjaF0gRml4IGJyZWFrcG9pbnQgYXQgKl9z dGFydAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDQvbXNnMDAw NTkuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wNC9tc2cwMDAy OS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA0LzA0IDEzOjU0OjQyCTEuMTE1 NjgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA0LzA0IDIyOjEyOjA0CTEuMTE1NjkKLSMj IC0xLDUgKzEsMTAgQEAKLSAyMDEwLTA0LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0gCi0rCSogaW5mY21kLmMgKHJ1bl9jb21tYW5kXzEpOiBDYWxsIHBy b2NlZWQgd2l0aCByZWdjYWNoZV9yZWFkX3BjIGFkZHJlc3MuCi0rCSogY29uZmlnL2RqZ3BwL2Zu Y2hhbmdlLmxzdDogQWRkIHRyYW5zbGF0aW9uIGZvciBicmVhay1lbnRyeS5leHAuCi0rCi0rMjAx MC0wNC0wNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwot IAkqIGJyZWFrcG9pbnQuYyAoYnBzdGF0X2ZpbmRfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCk6IFJl bW92ZS4KLSAJKiBicmVha3BvaW50LmggKGJwc3RhdF9maW5kX3N0ZXBfcmVzdW1lX2JyZWFrcG9p bnQpOiBSZW1vdmUuCi0gCi0tLS0gc3JjL2dkYi9pbmZjbWQuYwkyMDEwLzAzLzI1IDIwOjQ4OjUz CTEuMjYzCi0rKysgc3JjL2dkYi9pbmZjbWQuYwkyMDEwLzA0LzA0IDIyOjEyOjA0CTEuMjY0Ci1A QCAtNTgwLDggKzU4MCw5IEBACi0gICAgICBoYXMgZG9uZSBpdHMgdGhpbmc7IG5vdyB3ZSBhcmUg c2V0dGluZyB1cCB0aGUgcnVubmluZyBwcm9ncmFtLiAgKi8KLSAgIHBvc3RfY3JlYXRlX2luZmVy aW9yICgmY3VycmVudF90YXJnZXQsIDApOwotIAotLSAgLyogU3RhcnQgdGhlIHRhcmdldCBydW5u aW5nLiAgKi8KLS0gIHByb2NlZWQgKChDT1JFX0FERFIpIC0xLCBUQVJHRVRfU0lHTkFMXzAsIDAp OwotKyAgLyogU3RhcnQgdGhlIHRhcmdldCBydW5uaW5nLiAgRG8gbm90IHVzZSAtMSBjb250aW51 YXRpb24gYXMgaXQgd291bGQgc2tpcAotKyAgICAgYnJlYWtwb2ludCByaWdodCBhdCB0aGUgZW50 cnkgcG9pbnQuICAqLwotKyAgcHJvY2VlZCAocmVnY2FjaGVfcmVhZF9wYyAoZ2V0X2N1cnJlbnRf cmVnY2FjaGUgKCkpLCBUQVJHRVRfU0lHTkFMXzAsIDApOwotIAotICAgLyogU2luY2UgdGhlcmUg d2FzIG5vIGVycm9yLCB0aGVyZSdzIG5vIG5lZWQgdG8gZmluaXNoIHRoZSB0aHJlYWQKLSAgICAg IHN0YXRlcyBoZXJlLiAgKi8KLS0tLSBzcmMvZ2RiL2NvbmZpZy9kamdwcC9mbmNoYW5nZS5sc3QJ MjAxMC8wMi8wMSAxOToyNzo1NQkxLjEwOAotKysrIHNyYy9nZGIvY29uZmlnL2RqZ3BwL2ZuY2hh bmdlLmxzdAkyMDEwLzA0LzA0IDIyOjEyOjA3CTEuMTA5Ci1AQCAtMzcxLDYgKzM3MSw3IEBACi0g QFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wcm9sb2d1ZS5leHAgQFZAL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gvcHBjLXByb2xvZ3VlLmV4cAotIEBWQC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JpdGZpZWxkczIuYyBAVkAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9iaXRmaWVsMi5j Ci0gQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYml0ZmllbGRzMi5leHAgQFZAL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYml0ZmllbDIuZXhwCi0rQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstZW50cnkuZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jya2VudHJ5LmV4cAot IEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVtYWtlcjIuYyBAVkAvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9jb3JlMm1ha2VyLmMKLSBAVkAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oYXNo bGluZTEuZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hhc2gxbGluZS5leHAKLSBAVkAv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oYXNobGluZTIuZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2hhc2gybGluZS5leHAKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAx MC8wNC8wMiAwNToxMzowNwkxLjIyMTgKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJ MjAxMC8wNC8wNCAyMjoxMjowOQkxLjIyMTkKLSMjIC0xLDMgKzEsNyBAQAotKzIwMTAtMDQtMDQg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIu YmFzZS9icmVhay1lbnRyeS5leHA6IE5ldy4KLSsKLSAyMDEwLTA0LTAyICBIdWkgWmh1ICA8dGVh d2F0ZXJAZ21haWwuY29tPgotICAgICAgICAgICAgIE1pY2hhZWwgU255ZGVyIDxtc255ZGVyQHZt d2FyZS5jb20+Ci0gCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZW50cnku ZXhwCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZW50cnkuZXhwCTIwMTAt MDQtMDUgMjA6MTc6MzkuMjM0Njg0MDAwICswMDAwCi1AQCAtMCwwICsxLDQzIEBACi0rIyBDb3B5 cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBpbmZlcmlvciBjYW4gc3RvcCBhdCBp dHMgdmVyeSBmaXJzdCBpbnN0cnVjdGlvbiwgdXN1YWxseSAiX3N0YXJ0Ii4KLSsjIER5bmFtaWMg ZXhlY3V0YWJsZXMgaGF2ZSBmaXJzdCBpbnN0cnVjdGlvbiBpbiBsZC5zby4KLSsKLStzZXQgdGVz dGZpbGUgYnJlYWstZW50cnkKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9 LmV4cCAke3Rlc3RmaWxlfSBzdGFydC5jIHthZGRpdGlvbmFsX2ZsYWdzPS1zdGF0aWN9XSB9IHsK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCB0ZXN0ICJpbmZvIGZpbGVzIgotK3NldCBlbnRy eSAiIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJcclxuXFtc dCBcXSpFbnRyeSBwb2ludDpcW1x0IFxdKigweFxbMC05YS1mXF0rKVxyXG4uKiRnZGJfcHJvbXB0 ICQiIHsKLSsJc2V0IGVudHJ5ICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0r ICAgIH0KLSt9Ci0raWYgeyRlbnRyeSA9PSAiIn0gewotKyAgICB1bnRlc3RlZCAke3Rlc3RmaWxl fS5leHAKLSsgICAgcmV0dXJuCi0rfQotKwotK2lmICFbcnVudG8gIiokZW50cnkiXSB7Ci0rICAg IHJldHVybgotK30KLStnZGJfdGVzdCB7cC94ICRwY30gIiA9ICRlbnRyeSIKLSsKLStnZGJfYnJl YWtwb2ludCAibWFpbiIKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFpbiIgIm1haW4u KiIKLQotCi0KLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTkw NjQ4Ci1SZTogW3JmY10gV29yayBhcm91bmQgaW52YWxpZCBHKysgRFdBUkYgZm9yIHVubmFtZWQg YWdncmVnYXRlcwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDMv bXNnMDA5MDkuaHRtbAotY29tbWl0IDVlNDBhZjE5NWJkNzRhNjZkMzAwZDhmNDgxY2FiMWYyYmE1 MzNmM2EKLQotWyBjdXQgb25seSBhIHBhcnQgb2YgaXQgXQotCi0tLS0gYS9nZGIvY29tcGxldGVy LmMKLSsrKyBiL2dkYi9jb21wbGV0ZXIuYwotQEAgLTQwMSw3ICs0MDEsNyBAQCBhZGRfc3RydWN0 X2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIGludCAqbmV4dHAsIGNoYXIgKipvdXRwdXQsCi0g CSAgICAgIGNvbXB1dGVkX3R5cGVfbmFtZSA9IDE7Ci0gCSAgICB9Ci0gCSAgLyogT21pdCBjb25z dHJ1Y3RvcnMgZnJvbSB0aGUgY29tcGxldGlvbiBsaXN0LiAgKi8KLS0JICBpZiAodHlwZV9uYW1l ICYmIHN0cmNtcCAodHlwZV9uYW1lLCBuYW1lKSkKLSsJICBpZiAoIXR5cGVfbmFtZSB8fCBzdHJj bXAgKHR5cGVfbmFtZSwgbmFtZSkpCi0gCSAgICB7Ci0gCSAgICAgIG91dHB1dFsqbmV4dHBdID0g eHN0cmR1cCAobmFtZSk7Ci0gCSAgICAgICsrKm5leHRwOwotCi0KLQotaHR0cHM6Ly9idWd6aWxs YS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD01NzgxMzYKLWh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTkzOTI2Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAxMC0wNC9tc2cwMDgyMC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDEwLTA0L21zZzAwMjQwLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTAvMDQvMjMgMTg6MDk6MTYJMS4xMTY3OAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAv MDQvMjMgMjE6NDQ6MTkJMS4xMTY3OQotIyMgLTEsMyArMSwxNCBAQAotKzIwMTAtMDQtMjMgIERh bmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0rCSAgICBQYXVsIFBsdXpo bmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotKwkgICAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlGaXggZGVhZGxvY2sgb24gbG9vcGVkIGxp c3Qgb2YgbG9hZGVkIHNoYXJlZCBvYmplY3RzLgotKwkqIHNvbGliLXN2cjQuYyAoTE1fUFJFVik6 IE5ldyBmdW5jdGlvbi4KLSsJKElHTk9SRV9GSVJTVF9MSU5LX01BUF9FTlRSWSk6IFVzZSBpdC4K LSsJKHN2cjRfY3VycmVudF9zb3MpOiBDaGVjayBmb3IgY29ycmVjdCBsX3ByZXYuICBOZXcgdmFy aWFibGVzIHByZXZfbG0KLSsJYW5kIG5leHRfbG0uICBDbGVhciBwcmV2X2xtIGZvciBzb2xpYl9z dnI0X3JfbGRzb21hcC4KLSsJKiBjb25maWcvZGpncHAvZm5jaGFuZ2UubHN0OiBBZGQgdHJhbnNs YXRpb24gZm9yIHNvbGliLWNvcnJ1cHRlZC5leHAuCi0rCi0gMjAxMC0wNC0yMyAgRG91ZyBFdmFu cyAgPGRqZUBnb29nbGUuY29tPgotIAotIAkqIGNvbmZpZ3VyZS5hYyAoQ09ORklHX1NSQ1MpOiBB ZGQgcHktYXV0by1sb2FkLm8gZXZlbiBpZiBub3QgdXNpbmcKLS0tLSBzcmMvZ2RiL3NvbGliLXN2 cjQuYwkyMDEwLzAzLzExIDIyOjA3OjAyCTEuMTMwCi0rKysgc3JjL2dkYi9zb2xpYi1zdnI0LmMJ MjAxMC8wNC8yMyAyMTo0NDoxOQkxLjEzMQotQEAgLTI3Miw2ICsyNzIsMTYgQEAKLSB9Ci0gCi0g c3RhdGljIENPUkVfQUREUgotK0xNX1BSRVYgKHN0cnVjdCBzb19saXN0ICpzbykKLSt7Ci0rICBz dHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRz ICgpOwotKyAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlICh0YXJnZXRfZ2Ri YXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7Ci0rCi0rICByZXR1cm4gZXh0cmFjdF90eXBlZF9hZGRy ZXNzIChzby0+bG1faW5mby0+bG0gKyBsbW8tPmxfcHJldl9vZmZzZXQsCi0rCQkJCXB0cl90eXBl KTsKLSt9Ci0rCi0rc3RhdGljIENPUkVfQUREUgotIExNX05BTUUgKHN0cnVjdCBzb19saXN0ICpz bykKLSB7Ci0gICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRjaF9saW5r X21hcF9vZmZzZXRzICgpOwotQEAgLTI4NCwxNiArMjk0LDEyIEBACi0gc3RhdGljIGludAotIElH Tk9SRV9GSVJTVF9MSU5LX01BUF9FTlRSWSAoc3RydWN0IHNvX2xpc3QgKnNvKQotIHsKLS0gIHN0 cnVjdCBsaW5rX21hcF9vZmZzZXRzICpsbW8gPSBzdnI0X2ZldGNoX2xpbmtfbWFwX29mZnNldHMg KCk7Ci0tICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKHRhcmdldF9nZGJh cmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLS0KLSAgIC8qIEFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcg aXMgYSBsaWJyYXJ5IGlmIHRoZSBkeW5hbWljIGxvYWRlciB3YXMgbG9hZGVkCi0gICAgICBsYXRl IGJ5IGEgc3RhdGljIGV4ZWN1dGFibGUuICAqLwotICAgaWYgKGV4ZWNfYmZkICYmIGJmZF9nZXRf c2VjdGlvbl9ieV9uYW1lIChleGVjX2JmZCwgIi5keW5hbWljIikgPT0gTlVMTCkKLSAgICAgcmV0 dXJuIDA7Ci0gCi0tICByZXR1cm4gZXh0cmFjdF90eXBlZF9hZGRyZXNzIChzby0+bG1faW5mby0+ bG0gKyBsbW8tPmxfcHJldl9vZmZzZXQsCi0tCQkJCXB0cl90eXBlKSA9PSAwOwotKyAgcmV0dXJu IExNX1BSRVYgKHNvKSA9PSAwOwotIH0KLSAKLSAvKiBQZXIgcHNwYWNlIFNWUjQgc3BlY2lmaWMg ZGF0YS4gICovCi1AQCAtMTEwMSw3ICsxMTA3LDcgQEAKLSBzdGF0aWMgc3RydWN0IHNvX2xpc3Qg KgotIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gewotLSAgQ09SRV9BRERSIGxtOwotKyAgQ09S RV9BRERSIGxtLCBwcmV2X2xtOwotICAgc3RydWN0IHNvX2xpc3QgKmhlYWQgPSAwOwotICAgc3Ry dWN0IHNvX2xpc3QgKipsaW5rX3B0ciA9ICZoZWFkOwotICAgQ09SRV9BRERSIGxkc29tYXAgPSAw OwotQEAgLTExMjAsNiArMTEyNiw3IEBACi0gCi0gICAvKiBXYWxrIHRoZSBpbmZlcmlvcidzIGxp bmsgbWFwIGxpc3QsIGFuZCBidWlsZCBvdXIgbGlzdCBvZgotICAgICAgYHN0cnVjdCBzb19saXN0 JyBub2Rlcy4gICovCi0rICBwcmV2X2xtID0gMDsKLSAgIGxtID0gc29saWJfc3ZyNF9yX21hcCAo aW5mbyk7Ci0gCi0gICB3aGlsZSAobG0pCi1AQCAtMTEyNyw2ICsxMTM0LDcgQEAKLSAgICAgICBz dHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRz ICgpOwotICAgICAgIHN0cnVjdCBzb19saXN0ICpuZXcgPSBYWkFMTE9DIChzdHJ1Y3Qgc29fbGlz dCk7Ci0gICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoeGZy ZWUsIG5ldyk7Ci0rICAgICAgQ09SRV9BRERSIG5leHRfbG07Ci0gCi0gICAgICAgbmV3LT5sbV9p bmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG1faW5mbykpOwotICAgICAgIG1ha2VfY2xl YW51cCAoeGZyZWUsIG5ldy0+bG1faW5mbyk7Ci1AQCAtMTEzOCwxNCArMTE0NiwyMSBAQAotIAot ICAgICAgIHJlYWRfbWVtb3J5IChsbSwgbmV3LT5sbV9pbmZvLT5sbSwgbG1vLT5saW5rX21hcF9z aXplKTsKLSAKLS0gICAgICBsbSA9IExNX05FWFQgKG5ldyk7Ci0rICAgICAgbmV4dF9sbSA9IExN X05FWFQgKG5ldyk7Ci0rCi0rICAgICAgaWYgKExNX1BSRVYgKG5ldykgIT0gcHJldl9sbSkKLSsJ ewotKwkgIHdhcm5pbmcgKF8oIkNvcnJ1cHRlZCBzaGFyZWQgbGlicmFyeSBsaXN0IikpOwotKwkg IGZyZWVfc28gKG5ldyk7Ci0rCSAgbmV4dF9sbSA9IDA7Ci0rCX0KLSAKLSAgICAgICAvKiBGb3Ig U1ZSNCB2ZXJzaW9ucywgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBsaW5rIG1hcCBpcyBmb3IgdGhl Ci0gICAgICAgICAgaW5mZXJpb3IgZXhlY3V0YWJsZSwgc28gd2UgbXVzdCBpZ25vcmUgaXQuICBG b3Igc29tZSB2ZXJzaW9ucyBvZgotICAgICAgICAgIFNWUjQsIGl0IGhhcyBubyBuYW1lLiAgRm9y IG90aGVycyAoU29sYXJpcyAyLjMgZm9yIGV4YW1wbGUpLCBpdAotICAgICAgICAgIGRvZXMgaGF2 ZSBhIG5hbWUsIHNvIHdlIGNhbiBubyBsb25nZXIgdXNlIGEgbWlzc2luZyBuYW1lIHRvCi0gICAg ICAgICAgZGVjaWRlIHdoZW4gdG8gaWdub3JlIGl0LiAqLwotLSAgICAgIGlmIChJR05PUkVfRklS U1RfTElOS19NQVBfRU5UUlkgKG5ldykgJiYgbGRzb21hcCA9PSAwKQotKyAgICAgIGVsc2UgaWYg KElHTk9SRV9GSVJTVF9MSU5LX01BUF9FTlRSWSAobmV3KSAmJiBsZHNvbWFwID09IDApCi0gCXsK LSAJICBpbmZvLT5tYWluX2xtX2FkZHIgPSBuZXctPmxtX2luZm8tPmxtX2FkZHI7Ci0gCSAgZnJl ZV9zbyAobmV3KTsKLUBAIC0xMTgyLDEyICsxMTk3LDE4IEBACi0gCSAgICB9Ci0gCX0KLSAKLSsg ICAgICBwcmV2X2xtID0gbG07Ci0rICAgICAgbG0gPSBuZXh0X2xtOwotKwotICAgICAgIC8qIE9u IFNvbGFyaXMsIHRoZSBkeW5hbWljIGxpbmtlciBpcyBub3QgaW4gdGhlIG5vcm1hbCBsaXN0IG9m Ci0gCSBzaGFyZWQgb2JqZWN0cywgc28gbWFrZSBzdXJlIHdlIHBpY2sgaXQgdXAgdG9vLiAgSGF2 aW5nCi0gCSBzeW1ib2wgaW5mb3JtYXRpb24gZm9yIHRoZSBkeW5hbWljIGxpbmtlciBpcyBxdWl0 ZSBjcnVjaWFsCi0gCSBmb3Igc2tpcHBpbmcgZHluYW1pYyBsaW5rZXIgcmVzb2x2ZXIgY29kZS4g ICovCi0gICAgICAgaWYgKGxtID09IDAgJiYgbGRzb21hcCA9PSAwKQotLQlsbSA9IGxkc29tYXAg PSBzb2xpYl9zdnI0X3JfbGRzb21hcCAoaW5mbyk7Ci0rCXsKLSsJICBsbSA9IGxkc29tYXAgPSBz b2xpYl9zdnI0X3JfbGRzb21hcCAoaW5mbyk7Ci0rCSAgcHJldl9sbSA9IDA7Ci0rCX0KLSAKLSAg ICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgICB9Ci0tLS0gc3JjL2dkYi9j b25maWcvZGpncHAvZm5jaGFuZ2UubHN0CTIwMTAvMDQvMDkgMTU6MTU6MDUJMS4xMTIKLSsrKyBz cmMvZ2RiL2NvbmZpZy9kamdwcC9mbmNoYW5nZS5sc3QJMjAxMC8wNC8yMyAyMTo0NDoxOQkxLjEx MwotQEAgLTM5Nyw2ICszOTcsNyBAQAotIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2lu Zm8tb2JqLmMgQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2ktb2JqLmMKLSBAVkAvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9zaWdpbmZvLWFkZHIuZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3NpLWFkZHIuZXhwCi0gQFZAL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnaW5mby1vYmou ZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpLW9iai5leHAKLStAVkAvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9zb2xpYi1jb3JydXB0ZWQuZXhwIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3NvLWNycHRkLmV4cAotIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWRpc2Mu YyBAVkAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zby1kaXNjLmMKLSBAVkAvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9zb2xpYi1kaXNwbGF5LWxpYi5jIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L3NvLWRpc3BsaWIuYwotIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLWRpc3BsYXkt bWFpbi5jIEBWQC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvLWRpc3BtYWluLmMKLSMjIyBzcmMv Z2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNC8yMyAxODowMzozMQkxLjIyNTIKLSMjIyBz cmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wNC8yMyAyMTo0NDoyMAkxLjIyNTMKLSMj IC0xLDMgKzEsOCBAQAotKzIwMTAtMDQtMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLSsKLSsJRml4IGRlYWRsb2NrIG9uIGxvb3BlZCBsaXN0IG9mIGxvYWRl ZCBzaGFyZWQgb2JqZWN0cy4KLSsJKiBnZGIuYmFzZS9zb2xpYi1jb3JydXB0ZWQuZXhwOiBOZXcu Ci0rCi0gMjAxMC0wNC0yMyAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgotIAotIAkqIGdk Yi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuYzogTmV3IGZpbGUuCi0tLS0gc3JjL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvc29saWItY29ycnVwdGVkLmV4cAotKysrIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAJMjAxMC0wNS0yNCAxODowMDo1Mi4wNTc5OTUw MDAgKzAwMDAKLUBAIC0wLDAgKzEsNDYgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LStzZXQgdGVzdGZpbGUgInNvbGliLWNvcnJ1cHRlZCIKLStzZXQgc3JjZmlsZSBzdGFydC5jCi0r Ci0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0g JHtzcmNmaWxlfV0gfSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAotKyAgICByZXR1 cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIGZhaWwgIkNhbid0IHJ1biB0 byBtYWluIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rZ2RiX3Rlc3QgImluZm8gc2hhcmVkbGlicmFy eSIgIiIgIm5vcm1hbCBsaXN0IgotKwotKyMgR0RCIGNoZWNrcyB0aGVyZSBmb3IgbWF0Y2hpbmcg TF9QUkVWLgotK3NldCB0ZXN0ICJtYWtlIHNvbGlicyBsb29waW5nIgotK2dkYl90ZXN0X211bHRp cGxlICJwL3ggX3JfZGVidWctPnJfbWFwLT5sX25leHQgPSBfcl9kZWJ1Zy0+cl9tYXAiICR0ZXN0 IHsKLSsgICAgLXJlICIoTm8gc3ltYm9sIFwiX3JfZGVidWdcIiBpbiBjdXJyZW50IGNvbnRleHRc XC58QXR0ZW1wdCB0byBleHRyYWN0IGEgY29tcG9uZW50IG9mIGEgdmFsdWUgdGhhdCBpcyBub3Qg YSBzdHJ1Y3R1cmUgcG9pbnRlclxcLilcclxuJGdkYl9wcm9tcHQgJCIgewotKwkjIGdsaWJjIGRl YnVnIGluZm8gaXMgbm90IGF2YWlsYWJsZSBhbmQgaXQgaXMgdG9vIGRpZmZpY3VsdCB0byBmaW5k IGFuZAotKwkjIHBhcnNlIGl0IGZyb20gdGhpcyB0ZXN0Y2FzZSB3aXRob3V0IHRoZSBnZGIgc3Vw cG9ydGluZyBmdW5jdGlvbnMuCi0rCXZlcmJvc2UgLWxvZyAibm8gX3JfZGVidWcgc3ltYm9sIGhh cyBiZWVuIGZvdW5kIgotKwl4ZmFpbCAkdGVzdAotKwl1bnRlc3RlZCAke3Rlc3RmaWxlfS5leHAK LSsJcmV0dXJuCi0rICAgIH0KLSsgICAgLXJlICIgPSAweFxbMC05YS1mXF0rXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotK2dkYl90ZXN0ICJpbmZvIHNoYXJl ZGxpYnJhcnkiICJ3YXJuaW5nOiBDb3JydXB0ZWQgc2hhcmVkIGxpYnJhcnkgbGlzdFxyXG4uKiIg ImNvcnJ1cHRlZCBsaXN0IgotCi0KLQotUmU6IFtwYXRjaF0gRml4IGNyYXNoIG9uIC9wcm9jL1BJ RC9zdGF0IHJhY2UKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA1 L21zZzAwNjg1Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDUv bXNnMDAyNDQuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wNS8yOCAxODowMDo0 MQkxLjExODU1Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wNS8yOCAxODoyMzoxMwkxLjEx ODU2Ci0jIyAtMSw1ICsxLDEwIEBACi0gMjAxMC0wNS0yOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwkqIGxpbnV4LW5hdC5jIChsaW51eF9uYXRfY29y ZV9vZl90aHJlYWRfMSk6IEZpeCBjcmFzaCBvbiBpbnZhbGlkCi0rCUNPTlRFTlQuCi0rCi0rMjAx MC0wNS0yOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwot IAkqIGxpbnV4LW5hdC5jIChsaW51eF9uYXRfd2FpdF8xKTogRG8gbm90IGNhbGwKLSAJbGludXhf bmF0X2NvcmVfb2ZfdGhyZWFkXzEgb24gVEFSR0VUX1dBSVRLSU5EX0VYSVRFRCBvcgotIAlUQVJH RVRfV0FJVEtJTkRfU0lHTkFMTEVELgotLS0tIHNyYy9nZGIvbGludXgtbmF0LmMJMjAxMC8wNS8y OCAxODowMDo0NgkxLjE2OQotKysrIHNyYy9nZGIvbGludXgtbmF0LmMJMjAxMC8wNS8yOCAxODoy MzoxNQkxLjE3MAotQEAgLTU1MDksMTUgKzU1MDksMjEgQEAKLSAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIGNvbnRlbnQpOwotIAotICAgcCA9IHN0cmNociAoY29udGVudCwgJygnKTsKLS0gIHAgPSBz dHJjaHIgKHAsICcpJykgKyAyOyAvKiBza2lwICIpIiBhbmQgYSB3aGl0ZXNwYWNlLiAqLwotKwot KyAgLyogU2tpcCAiKSIuICAqLwotKyAgaWYgKHAgIT0gTlVMTCkKLSsgICAgcCA9IHN0cmNociAo cCwgJyknKTsKLSsgIGlmIChwICE9IE5VTEwpCi0rICAgIHArKzsKLSAKLSAgIC8qIElmIHRoZSBm aXJzdCBmaWVsZCBhZnRlciBwcm9ncmFtIG5hbWUgaGFzIGluZGV4IDAsIHRoZW4gY29yZSBudW1i ZXIgaXMKLSAgICAgIHRoZSBmaWVsZCB3aXRoIGluZGV4IDM2LiAgVGhlcmUncyBubyBjb25zdGFu dCBmb3IgdGhhdCBhbnl3aGVyZS4gICovCi0tICBwID0gc3RydG9rX3IgKHAsICIgIiwgJnRzKTsK LS0gIGZvciAoaSA9IDA7IGkgIT0gMzY7ICsraSkKLSsgIGlmIChwICE9IE5VTEwpCi0rICAgIHAg PSBzdHJ0b2tfciAocCwgIiAiLCAmdHMpOwotKyAgZm9yIChpID0gMDsgcCAhPSBOVUxMICYmIGkg IT0gMzY7ICsraSkKLSAgICAgcCA9IHN0cnRva19yIChOVUxMLCAiICIsICZ0cyk7Ci0gCi0tICBp ZiAoc3NjYW5mIChwLCAiJWQiLCAmY29yZSkgPT0gMCkKLSsgIGlmIChwID09IE5VTEwgfHwgc3Nj YW5mIChwLCAiJWQiLCAmY29yZSkgPT0gMCkKLSAgICAgY29yZSA9IC0xOwotIAotICAgZG9fY2xl YW51cHMgKGJhY2tfdG8pOwotIyMjIHNyYy9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwkyMDEwLzA1 LzI2IDIyOjQwOjIyCTEuMzg2Ci0jIyMgc3JjL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCTIwMTAv MDUvMjggMTg6MjM6MTUJMS4zODcKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTAtMDUtMjggIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBsaW51eC1sb3cu YyAobGludXhfY29yZV9vZl90aHJlYWQpOiBGaXggY3Jhc2ggb24gaW52YWxpZCBDT05URU5ULgot KwlOZXcgY29tbWVudC4KLSsKLSAyMDEwLTA1LTI2ICBPemthbiBTZXplciAgPHNlemVyb3pAZ21h aWwuY29tPgotIAotIAkqIGdkYnJlcGxheS5jIChyZW1vdGVfb3Blbik6IENoZWNrIGVycm9yIHJl dHVybiBmcm9tIHNvY2tldCgpIGNhbGwgYnkKLS0tLSBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC1s b3cuYwkyMDEwLzA1LzAzIDA0OjAyOjIwCTEuMTQ4Ci0rKysgc3JjL2dkYi9nZGJzZXJ2ZXIvbGlu dXgtbG93LmMJMjAxMC8wNS8yOCAxODoyMzoxNQkxLjE0OQotQEAgLTQzNDYsMTMgKzQzNDYsMjEg QEAKLSAgICAgfQotIAotICAgcCA9IHN0cmNociAoY29udGVudCwgJygnKTsKLS0gIHAgPSBzdHJj aHIgKHAsICcpJykgKyAyOyAvKiBza2lwICIpIiBhbmQgYSB3aGl0ZXNwYWNlLiAqLwotIAotLSAg cCA9IHN0cnRva19yIChwLCAiICIsICZ0cyk7Ci0tICBmb3IgKGkgPSAwOyBpICE9IDM2OyArK2kp Ci0rICAvKiBTa2lwICIpIi4gICovCi0rICBpZiAocCAhPSBOVUxMKQotKyAgICBwID0gc3RyY2hy IChwLCAnKScpOwotKyAgaWYgKHAgIT0gTlVMTCkKLSsgICAgcCsrOwotKwotKyAgLyogSWYgdGhl IGZpcnN0IGZpZWxkIGFmdGVyIHByb2dyYW0gbmFtZSBoYXMgaW5kZXggMCwgdGhlbiBjb3JlIG51 bWJlciBpcwotKyAgICAgdGhlIGZpZWxkIHdpdGggaW5kZXggMzYuICBUaGVyZSdzIG5vIGNvbnN0 YW50IGZvciB0aGF0IGFueXdoZXJlLiAgKi8KLSsgIGlmIChwICE9IE5VTEwpCi0rICAgIHAgPSBz dHJ0b2tfciAocCwgIiAiLCAmdHMpOwotKyAgZm9yIChpID0gMDsgcCAhPSBOVUxMICYmIGkgIT0g MzY7ICsraSkKLSAgICAgcCA9IHN0cnRva19yIChOVUxMLCAiICIsICZ0cyk7Ci0gCi0tICBpZiAo c3NjYW5mIChwLCAiJWQiLCAmY29yZSkgPT0gMCkKLSsgIGlmIChwID09IE5VTEwgfHwgc3NjYW5m IChwLCAiJWQiLCAmY29yZSkgPT0gMCkKLSAgICAgY29yZSA9IC0xOwotIAotICAgZnJlZSAoY29u dGVudCk7Ci0KLQotCi1SZTogW3BhdGNoXSB0ZXN0c3VpdGU6IHdhdGNodGhyZWFkcy1yZW9yZGVy OiBMaW51eCBrZXJuZWwgY29tcGF0LgotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTAtMDUvbXNnMDA2OTYuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMC0wNS9tc2cwMDI1NS5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cJMjAxMC8wNS8yOCAyMzo0Nzo0MAkxLjIyOTMKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2cJMjAxMC8wNS8zMSAwMzozMToxNgkxLjIyOTQKLSMjIC0xLDMgKzEsMTEgQEAKLSsyMDEw LTA1LTMxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0r CUFjY2VwdCB0aGUgbmV3IExpbnV4IGtlcm5lbCAidCAodHJhY2luZyBzdG9wKSIgc3RyaW5nLgot KwkqIGdkYi50aHJlYWRzL3dhdGNodGhyZWFkcy1yZW9yZGVyLmMgKHRocmVhZDFfZnVuYywgdGhy ZWFkMl9mdW5jKToKLSsJVXBkYXRlIGNvbW1lbnQuCi0rCShzdGF0ZV93YWl0KSA8VCAodHJhY2lu ZyBzdG9wKT46IE5ldy4KLSsJKG1haW4pOiBVcGRhdGUgdGhlIHN0YXRlX3dhaXQgZXhwZWN0IHN0 cmluZy4KLSsKLSAyMDEwLTA1LTI4ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5j b20+Ci0gCi0gCSogbGltaXRzLmMsIGxpbWl0cy5leHA6IERlbGV0ZSBmaWxlcy4KLS0tLSBzcmMv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5jCTIwMTAvMDEv MjAgMjE6MDk6MzAJMS4zCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0 aHJlYWRzLXJlb3JkZXIuYwkyMDEwLzA1LzMxIDAzOjMxOjE3CTEuNAotQEAgLTk5LDcgKzk5LDcg QEAKLSAKLSAgIHJ3YXRjaF9zdG9yZSA9IHRocmVhZDFfcndhdGNoOwotIAotLSAgLyogQmUgc3Vy ZSB0aGUgIlQgKHRyYWNpbmcgc3RvcCkiIHRlc3QgY2FuIHByb2NlZWQgZm9yIGJvdGggdGhyZWFk cy4gICovCi0rICAvKiBCZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJv Y2VlZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8KLSAgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5h dGVfbXV0ZXgpOwotICAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4 KTsKLSAgIGFzc2VydCAoaSA9PSAwKTsKLUBAIC0xMjUsNyArMTI1LDcgQEAKLSAKLSAgIHJ3YXRj aF9zdG9yZSA9IHRocmVhZDJfcndhdGNoOwotIAotLSAgLyogQmUgc3VyZSB0aGUgIlQgKHRyYWNp bmcgc3RvcCkiIHRlc3QgY2FuIHByb2NlZWQgZm9yIGJvdGggdGhyZWFkcy4gICovCi0rICAvKiBC ZSBzdXJlIHRoZSAidCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJvY2VlZCBmb3IgYm90aCB0 aHJlYWRzLiAgKi8KLSAgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOwotICAg aSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsKLSAgIGFzc2VydCAo aSA9PSAwKTsKLUBAIC0yMTEsNiArMjExLDEzIEBACi0gICBkbwotICAgICB7Ci0gICAgICAgc3Rh dGUgPSBwcm9jX3N0cmluZyAoZmlsZW5hbWUsICJTdGF0ZTpcdCIpOwotKwotKyAgICAgIC8qIHRv cnZhbGRzL2xpbnV4LTIuNi5naXQgNDY0NzYzY2YxYzZkZjYzMmRjY2M4ZjJmNGM3ZTUwMTYzMTU0 YTJjMAotKwkgaGFzIGNoYW5nZWQgIlQgKHRyYWNpbmcgc3RvcCkiIHRvICJ0ICh0cmFjaW5nIHN0 b3ApIi4gIE1ha2UgdGhlIEdEQgotKwkgdGVzdGNhc2UgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRo IG9sZGVyIExpbnV4IGtlcm5lbHMuICAqLwotKyAgICAgIGlmIChzdHJjbXAgKHN0YXRlLCAiVCAo dHJhY2luZyBzdG9wKSIpID09IDApCi0rCXN0YXRlID0gInQgKHRyYWNpbmcgc3RvcCkiOwotKwot ICAgICAgIGlmIChzdHJjbXAgKHN0YXRlLCB3YW50ZWQpID09IDApCi0gCXsKLSAJICBmcmVlIChm aWxlbmFtZSk7Ci1AQCAtMzM2LDkgKzM0Myw5IEBACi0gICAgIHsKLSAgICAgICAvKiBzMzkweC11 bmtub3duLWxpbnV4LWdudSB3aWxsIGZhaWwgd2l0aCAiUiAocnVubmluZykiLiAgKi8KLSAKLS0g ICAgICBzdGF0ZV93YWl0ICh0aHJlYWQxX3RpZCwgIlQgKHRyYWNpbmcgc3RvcCkiKTsKLSsgICAg ICBzdGF0ZV93YWl0ICh0aHJlYWQxX3RpZCwgInQgKHRyYWNpbmcgc3RvcCkiKTsKLSAKLS0gICAg ICBzdGF0ZV93YWl0ICh0aHJlYWQyX3RpZCwgIlQgKHRyYWNpbmcgc3RvcCkiKTsKLSsgICAgICBz dGF0ZV93YWl0ICh0aHJlYWQyX3RpZCwgInQgKHRyYWNpbmcgc3RvcCkiKTsKLSAgICAgfQotIAot ICAgY2xlYW51cCAoKTsKCmRpZmYgLS1naXQgYS9nZGItdXNpbmctZGlyZWN0aXZlLWxlYWsucGF0 Y2ggYi9nZGItdXNpbmctZGlyZWN0aXZlLWxlYWsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDIxZmFhOTEuLjAwMDAwMDAKLS0tIGEvZ2RiLXVzaW5nLWRpcmVjdGl2ZS1sZWFr LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLUZTRiBHREIgdmFyaWFudCBp cyBhdDoKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAzL21zZzAw Nzg5Lmh0bWwKLQotY29tbWl0IDU2YjQ1ZjQ5NGY2NDczNjBmOWQ2ZmY4NGYxMmY1OWMwOGNiZTA1 YWYKLUF1dGhvcjogU2FtaSBXYWdpYWFsbGEgPHN3YWdpYWFsQHJlZGhhdC5jb20+Ci1EYXRlOiAg IE1vbiBNYXIgMjkgMTY6MDg6NTggMjAxMCAtMDQwMAotCi0gICAgRml4IHVzaW5nX2RpcmVjdGl2 ZSBtZW1vcnkgbGVhay4KLQotZGlmZiAtLWdpdCBhL2dkYi9idWlsZHN5bS5jIGIvZ2RiL2J1aWxk c3ltLmMKLWluZGV4IGZmMmM5YjEuLjM1ZTQ2NjMgMTAwNjQ0Ci0tLS0gYS9nZGIvYnVpbGRzeW0u YwotKysrIGIvZ2RiL2J1aWxkc3ltLmMKLUBAIC0zODcsNiArMzg3LDcgQEAgZmluaXNoX2Jsb2Nr IChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBwZW5kaW5nICoqbGlzdGhlYWQsCi0gICAg IH0KLSAKLSAgIGJsb2NrX3NldF91c2luZyAoYmxvY2ssIHVzaW5nX2RpcmVjdGl2ZXMsICZvYmpm aWxlLT5vYmpmaWxlX29ic3RhY2spOwotKyAgdXNpbmdfZGlyZWN0aXZlcyA9IE5VTEw7Ci0gCi0g ICByZWNvcmRfcGVuZGluZ19ibG9jayAob2JqZmlsZSwgYmxvY2ssIG9wYmxvY2spOwotIAotZGlm ZiAtLWdpdCBhL2dkYi9jcC1uYW1lc3BhY2UuYyBiL2dkYi9jcC1uYW1lc3BhY2UuYwotaW5kZXgg NjMyNWVhZC4uYzZkZjkxZiAxMDA2NDQKLS0tLSBhL2dkYi9jcC1uYW1lc3BhY2UuYwotKysrIGIv Z2RiL2NwLW5hbWVzcGFjZS5jCi1AQCAtMTIwLDcgKzEyMCw4IEBAIGNwX3NjYW5fZm9yX2Fub255 bW91c19uYW1lc3BhY2VzIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wpCi0gCQkgYW5vbnlt b3VzIG5hbWVzcGFjZS4gIFNvIGFkZCBzeW1ib2xzIGluIGl0IHRvIHRoZQotIAkJIG5hbWVzcGFj ZSBnaXZlbiBieSB0aGUgcHJldmlvdXMgY29tcG9uZW50IGlmIHRoZXJlIGlzCi0gCQkgb25lLCBv ciB0byB0aGUgZ2xvYmFsIG5hbWVzcGFjZSBpZiB0aGVyZSBpc24ndC4gICovCi0tCSAgICAgIGNw X2FkZF91c2luZ19kaXJlY3RpdmUgKGRlc3QsIHNyYywgTlVMTCwgIiIsIDApOwotKwkgICAgICBj cF9hZGRfdXNpbmdfZGlyZWN0aXZlIChkZXN0LCBzcmMsIE5VTEwsICIiLCAwLAotKwkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrKTsKLSAJICAgIH0KLSAJICAvKiBUaGUgIisgMiIgaXMgZm9yIHRoZSAi OjoiLiAgKi8KLSAJICBwcmV2aW91c19jb21wb25lbnQgPSBuZXh0X2NvbXBvbmVudCArIDI7Ci1A QCAtMTMyLDExICsxMzMsMTcgQEAgY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNv bnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCkKLSB9Ci0gCi0gLyogQWRkIGEgdXNpbmcgZGlyZWN0 aXZlIHRvIHVzaW5nX2xpc3QuIElmIHRoZSB1c2luZyBkaXJlY3RpdmUgaW4gcXVlc3Rpb24KLS0g ICBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLCBkb24ndCBhZGQgaXQgdHdpY2UuICAqLwotKyAgIGhh cyBhbHJlYWR5IGJlZW4gYWRkZWQsIGRvbid0IGFkZCBpdCB0d2ljZS4KLSsgICBDcmVhdGUgYSBu ZXcgc3RydWN0IHVzaW5nX2RpcmVjdCB3aGljaCBpbXBvcnRzIHRoZSBuYW1lc3BhY2UgU1JDIGlu dG8gdGhlCi0rICAgc2NvcGUgREVTVC4gIEFMSUFTIGlzIHRoZSBuYW1lIG9mIHRoZSBpbXBvcnRl ZCBuYW1lc3BhY2UgaW4gdGhlIGN1cnJlbnQKLSsgICBzY29wZS4gIElmIEFMSUFTIGlzIE5VTEwg dGhlbiB0aGUgbmFtZXNwYWNlIGlzIGtub3duIGJ5IGl0cyBvcmlnaW5hbCBuYW1lLgotKyAgIFRo ZSBhcmd1bWVudHMgYXJlIGNvcGllZCBpbnRvIG5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgc28gdGhl eSBjYW4gYmUKLSsgICB0ZW1wb3Jhcmllcy4gICovCi0gCi0gdm9pZAotIGNwX2FkZF91c2luZ19k aXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAq YWxpYXMsCi0tCQkJY29uc3QgY2hhciAqZGVjbGFyYXRpb24sIGNvbnN0IGludCBsaW5lX251bWJl cikKLSsJCQljb25zdCBjaGFyICpkZWNsYXJhdGlvbiwgY29uc3QgaW50IGxpbmVfbnVtYmVyLAot KwkJCXN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQotIHsKLSAgIHN0cnVjdCB1c2luZ19kaXJlY3Qg KmN1cnJlbnQ7Ci0gICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXc7Ci1AQCAtMTQ2LDEyICsxNTMs MjYgQEAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAqZGVzdCwgY29uc3QgY2hh ciAqc3JjLCBjb25zdCBjaGFyICphbGlhcywKLSAgIGZvciAoY3VycmVudCA9IHVzaW5nX2RpcmVj dGl2ZXM7IGN1cnJlbnQgIT0gTlVMTDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHQpCi0gICAgIHsK LSAgICAgICBpZiAoc3RyY21wIChjdXJyZW50LT5pbXBvcnRfc3JjLCBzcmMpID09IDAKLS0gICAg ICAgICAgJiYgc3RyY21wIChjdXJyZW50LT5pbXBvcnRfZGVzdCwgZGVzdCkgPT0gMCkKLSsJICAm JiBzdHJjbXAgKGN1cnJlbnQtPmltcG9ydF9kZXN0LCBkZXN0KSA9PSAwCi0rCSAgJiYgKChhbGlh cyA9PSBOVUxMICYmIGN1cnJlbnQtPmFsaWFzID09IE5VTEwpCi0rCSAgICAgIHx8IChhbGlhcyAh PSBOVUxMICYmIGN1cnJlbnQtPmFsaWFzICE9IE5VTEwKLSsJCSAgJiYgc3RyY21wIChhbGlhcywg Y3VycmVudC0+YWxpYXMpID09IDApKSkKLSAJcmV0dXJuOwotICAgICB9Ci0gCi0tICB1c2luZ19k aXJlY3RpdmVzID0gY3BfYWRkX3VzaW5nIChkZXN0LCBzcmMsIGFsaWFzLCBkZWNsYXJhdGlvbiwK LS0JCQkJICAgbGluZV9udW1iZXIsIHVzaW5nX2RpcmVjdGl2ZXMpOwotKyAgbmV3ID0gT0JTVEFD S19aQUxMT0MgKG9ic3RhY2ssIHN0cnVjdCB1c2luZ19kaXJlY3QpOwotKwotKyAgbmV3LT5pbXBv cnRfc3JjID0gb2JzYXZlc3RyaW5nIChzcmMsIHN0cmxlbiAoc3JjKSwgb2JzdGFjayk7Ci0rICBu ZXctPmltcG9ydF9kZXN0ID0gb2JzYXZlc3RyaW5nIChkZXN0LCBzdHJsZW4gKGRlc3QpLCBvYnN0 YWNrKTsKLSsKLSsgIGlmIChhbGlhcyAhPSBOVUxMKQotKyAgICBuZXctPmFsaWFzID0gb2JzYXZl c3RyaW5nIChhbGlhcywgc3RybGVuIChhbGlhcyksIG9ic3RhY2spOwotKwotKyAgbmV3LT5kZWNs YXJhdGlvbiA9IG9ic2F2ZXN0cmluZyAoZGVjbGFyYXRpb24sIHN0cmxlbiAoZGVjbGFyYXRpb24p LCBvYnN0YWNrKTsKLSsgIG5ldy0+bGluZV9udW1iZXIgPSBsaW5lX251bWJlcjsKLSsKLSsgIG5l dy0+bmV4dCA9IHVzaW5nX2RpcmVjdGl2ZXM7Ci0rICB1c2luZ19kaXJlY3RpdmVzID0gbmV3Owot IAotIH0KLSAKLUBAIC0yMDMsNDIgKzIyNCw2IEBAIGNwX2lzX2Fub255bW91cyAoY29uc3QgY2hh ciAqbmFtZXNwYWNlKQotIAkgICE9IE5VTEwpOwotIH0KLSAKLS0vKiBDcmVhdGUgYSBuZXcgc3Ry dWN0IHVzaW5nIGRpcmVjdCB3aGljaCBpbXBvcnRzIHRoZSBuYW1lc3BhY2UgU1JDCi0tICAgaW50 byB0aGUgc2NvcGUgREVTVC4gIEFMSUFTIGlzIHRoZSBuYW1lIG9mIHRoZSBpbXBvcnRlZCBuYW1l c3BhY2UKLS0gICBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIEFMSUFTIGlzIE5VTEwgdGhlbiB0 aGUKLS0gICBuYW1lc3BhY2UgaXMga25vd24gYnkgaXRzIG9yaWdpbmFsIG5hbWUuCi0tCi0tICAg U2V0IGl0cyBuZXh0IG1lbWJlciBpbiB0aGUgbGlua2VkIGxpc3QgdG8gTkVYVDsgYWxsb2NhdGUg YWxsIG1lbW9yeQotLSAgIHVzaW5nIHhtYWxsb2MuICBJdCBjb3BpZXMgdGhlIHN0cmluZ3MsIHNv IE5BTUUgY2FuIGJlIGEgdGVtcG9yYXJ5Ci0tICAgc3RyaW5nLiAgKi8KLS0KLS1zdHJ1Y3QgdXNp bmdfZGlyZWN0ICoKLS1jcF9hZGRfdXNpbmcgKGNvbnN0IGNoYXIgKmRlc3QsCi0tICAgICAgICAg ICAgICBjb25zdCBjaGFyICpzcmMsCi0tICAgICAgICAgICAgICBjb25zdCBjaGFyICphbGlhcywK LS0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotLSAgICAgICAgICAgICAg Y29uc3QgaW50IGxpbmVfbnVtYmVyLAotLQkgICAgICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXh0 KQotLXsKLS0gIHN0cnVjdCB1c2luZ19kaXJlY3QgKnJldHZhbDsKLS0KLS0gIHJldHZhbCA9IHht YWxsb2MgKHNpemVvZiAoc3RydWN0IHVzaW5nX2RpcmVjdCkpOwotLSAgcmV0dmFsLT5pbXBvcnRf c3JjID0gc2F2ZXN0cmluZyAoc3JjLCBzdHJsZW4gKHNyYykpOwotLSAgcmV0dmFsLT5pbXBvcnRf ZGVzdCA9IHNhdmVzdHJpbmcgKGRlc3QsIHN0cmxlbiAoZGVzdCkpOwotLQotLSAgaWYgKGFsaWFz ICE9IE5VTEwpCi0tICAgIHJldHZhbC0+YWxpYXMgPSBzYXZlc3RyaW5nIChhbGlhcywgc3RybGVu IChhbGlhcykpOwotLSAgZWxzZQotLSAgICByZXR2YWwtPmFsaWFzID0gTlVMTDsKLS0KLS0gIHJl dHZhbC0+ZGVjbGFyYXRpb24gPSBzYXZlc3RyaW5nIChkZWNsYXJhdGlvbiwgc3RybGVuIChkZWNs YXJhdGlvbikpOwotLSAgcmV0dmFsLT5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOwotLSAgcmV0 dmFsLT5uZXh0ID0gbmV4dDsKLS0gIHJldHZhbC0+c2VhcmNoZWQgPSAwOwotLQotLSAgcmV0dXJu IHJldHZhbDsKLS19Ci0tCi0gLyogVGhlIEMrKy1zcGVjaWZpYyB2ZXJzaW9uIG9mIG5hbWUgbG9v a3VwIGZvciBzdGF0aWMgYW5kIGdsb2JhbAotICAgIG5hbWVzLiAgVGhpcyBtYWtlcyBzdXJlIHRo YXQgbmFtZXMgZ2V0IGxvb2tlZCBmb3IgaW4gYWxsIG5hbWVzcGFjZXMKLSAgICB0aGF0IGFyZSBp biBzY29wZS4gIE5BTUUgaXMgdGhlIG5hdHVyYWwgbmFtZSBvZiB0aGUgc3ltYm9sIHRoYXQKLWRp ZmYgLS1naXQgYS9nZGIvY3Atc3VwcG9ydC5oIGIvZ2RiL2NwLXN1cHBvcnQuaAotaW5kZXggNTdh YTVlNS4uNDFmMTdmZSAxMDA2NDQKLS0tLSBhL2dkYi9jcC1zdXBwb3J0LmgKLSsrKyBiL2dkYi9j cC1zdXBwb3J0LmgKLUBAIC0xMDEsMTQgKzEwMSw4IEBAIGV4dGVybiB2b2lkIGNwX2FkZF91c2lu Z19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmFsaWFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGludCBsaW5lX251bWJlcik7Ci0tCi0tZXh0ZXJuIHN0cnVj dCB1c2luZ19kaXJlY3QgKmNwX2FkZF91c2luZyAoY29uc3QgY2hhciAqZGVzdCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYWxpYXMs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq ZGVjbGFyYXRpb24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgaW50IGxpbmVfbnVtYmVyLAotLQkJCQkJICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXh0 KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGluZV9u dW1iZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG9ic3Rh Y2sgKm9ic3RhY2spOwotIAotIGV4dGVybiB2b2lkIGNwX2luaXRpYWxpemVfbmFtZXNwYWNlICh2 b2lkKTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQu YwotaW5kZXggZTNhNzgwZS4uYjczZjQ0NCAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMK LSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0zNTYzLDEyICszNTYzLDEyIEBAIHJlYWRfaW1w b3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotICAgICB9Ci0gICB9Ci0gICAKLS0gIHVzaW5nX2RpcmVjdGl2ZXMgPSBjcF9hZGRfdXNpbmcg KGltcG9ydF9wcmVmaXgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5v bmljYWxfbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydF9h bGlhcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGVkX2RlY2xh cmF0aW9uLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ19kaXJlY3RpdmVzKTsK LSsgIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGltcG9ydF9wcmVmaXgsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICBjYW5vbmljYWxfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg IGltcG9ydF9hbGlhcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGVkX2RlY2xh cmF0aW9uLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0gfQot IAotIHN0YXRpYyB2b2lkCi1AQCAtNTcwMyw3ICs1NzAzLDEyIEBAIHJlYWRfbmFtZXNwYWNlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgaWYgKGlz X2Fub255bW91cykKLSAJewotIAkgIGNvbnN0IGNoYXIgKnByZXZpb3VzX3ByZWZpeCA9IGRldGVy bWluZV9wcmVmaXggKGRpZSwgY3UpOwotLQkgIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKHByZXZp b3VzX3ByZWZpeCwgVFlQRV9OQU1FICh0eXBlKSwgTlVMTCwgIiIsIGR3YXJmMl9yZWFkX2RlY2xf bGluZShkaWUsIGN1KSk7Ci0rCSAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAocHJldmlvdXNfcHJl Zml4LAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEVfTkFNRSAodHlwZSksCi0rCSAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSsJICAgICAgICAgICAgICAgICAgICAgICAg ICAiIiwKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICBkd2FyZjJfcmVhZF9kZWNsX2xpbmUo ZGllLCBjdSksCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iamZpbGUtPm9iamZpbGVf b2JzdGFjayk7Ci0gCX0KLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL2dkYjIzODQtYmFzZS5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjIzODQtYmFzZS5j YwotaW5kZXggMDllZDA0ZS4uYjU4ZjMwZCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmNwL2dkYjIzODQtYmFzZS5jYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiMjM4NC1i YXNlLmNjCi1AQCAtMjMsNiArMjMsOCBAQCBiYXNlOjpiYXNlIChpbnQgX3gpCi0gewotIH0KLSAK LSt1c2luZyBuYW1lc3BhY2UgQjsKLSsKLSBpbnQKLSBiYXNlOjptZXRoICgpCi0gewotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjIzODQtYmFzZS5oIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvZ2RiMjM4NC1iYXNlLmgKLWluZGV4IGIwOTcwMWUuLjk4MTk0M2MgMTAwNjQ0Ci0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGIyMzg0LWJhc2UuaAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvZ2RiMjM4NC1iYXNlLmgKLUBAIC0xNiw2ICsxNiwxMCBAQAotICAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotICAgICovCi0gCi0rbmFtZXNwYWNlIEJ7Ci0rICBpbnQgeDsKLSt9Ci0rCi0gY2xh c3MgYmFzZQotIHsKLSAgcHVibGljOgoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMK aW5kZXggNDZjMTk4YS4uZDYwYzhmZCAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNw ZWMKQEAgLTMyLDE4ICszMiwxOCBAQCBOYW1lOiBnZGIlez9fd2l0aF9kZWJ1ZzotZGVidWd9CiAj IFNldCB2ZXJzaW9uIHRvIGNvbnRlbnRzIG9mIGdkYi92ZXJzaW9uLmluLgogIyBOT1RFOiB0aGUg RlNGIGdkYiB2ZXJzaW9ucyBhcmUgbnVtYmVyZWQgTi5NIGZvciBvZmZpY2lhbCByZWxlYXNlcywg bGlrZSA2LjMKICMgYW5kLCBzaW5jZSBKYW51YXJ5IDIwMDUsIFguWS5aLmRhdGUgZm9yIGRhaWx5 IHNuYXBzaG90cywgbGlrZSA2LjMuNTAuMjAwNTAxMTIgIyAoZGFpbHkgc25hcHNob3QgZnJvbSBt YWlsaW5lKSwgb3IgNi4zLjAuMjAwNDAxMTIgKGhlYWQgb2YgdGhlIHJlbGVhc2UgYnJhbmNoKS4K LVZlcnNpb246IDcuMQorVmVyc2lvbjogNy4xLjkwLjIwMTAwNzIxCiAKICMgVGhlIHJlbGVhc2Ug YWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEu CiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0g ZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMjklez9f d2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQorUmVsZWFzZTogMSV7P193aXRoX3Vwc3Ry ZWFtOi51cHN0cmVhbX0le2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGgg ZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwr IGFuZCBMR1BMdjIrIGFuZCBHRkRMIGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3VwOiBE ZXZlbG9wbWVudC9EZWJ1Z2dlcnMKICMgRG8gbm90IHByb3ZpZGUgVVJMIGZvciBzbmFwc2hvdHMg YXMgdGhlIGZpbGUgbGFzdHMgdGhlcmUgb25seSBmb3IgMiBkYXlzLgogIyBmdHA6Ly9zb3VyY2V3 YXJlLm9yZy9wdWIvZ2RiL3NuYXBzaG90cy9icmFuY2gvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6Mgog IyBmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvZ2RiL3JlbGVhc2VzL2dkYi0le3ZlcnNpb259LnRh ci5iejIKLVNvdXJjZTogZnRwOi8vc291cmNld2FyZS5vcmcvcHViL2dkYi9yZWxlYXNlcy9nZGIt JXt2ZXJzaW9ufS50YXIuYnoyCitTb3VyY2U6IGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIv c25hcHNob3RzL2JyYW5jaC9nZGItJXt2ZXJzaW9ufS50YXIuYnoyCiBCdWlsZHJvb3Q6ICUobWt0 ZW1wIC11ZCAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tJXtyZWxlYXNlfS1YWFhYWFgp CiBVUkw6IGh0dHA6Ly9nbnUub3JnL3NvZnR3YXJlL2dkYi8KIApAQCAtODEsMTAgKzgxLDYgQEAg U291cmNlMjogZ2RiLW9ycGhhbnJpcHBlci5jCiAjIE1hbiBwYWdlIGZvciBnc3RhY2soMSkuCiBT b3VyY2UzOiBnZGItZ3N0YWNrLm1hbgogCi0jIGxpYnN0ZGMrKyBwcmV0dHkgcHJpbnRlcnMgZnJv bSBHQ0MgU1ZOIEhFQUQgKDQuNSBleHBlcmltZW50YWwpLgotJWRlZmluZSBsaWJzdGRjeHhweXRo b24gbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4Ci1Tb3VyY2U0OiAle2xpYnN0ZGN4eHB5dGhv bn0udGFyLmJ6MgotCiAjIFdvcmsgYXJvdW5kIG91dC1vZi1kYXRlIGRlamFnbnUgdGhhdCBkb2Vz IG5vdCBoYXZlIEtGQUlMCiBQYXRjaDE6IGdkYi02LjMtcmgtZHVtbXlrZmFpbC0yMDA0MTIwMi5w YXRjaAogCkBAIC0xOTMsOSArMTg5LDYgQEAgUGF0Y2gxOTA6IGdkYi02LjUtZHdhcmYtc3RhY2st b3ZlcmZsb3cucGF0Y2gKICMgU3VwcG9ydCBUTFMgc3ltYm9scyAoK2BlcnJubycgc3VnZ2VzdGlv biBpZiBubyBwdGhyZWFkIGlzIGZvdW5kKSAoQlogMTg1MzM3KS4KIFBhdGNoMTk0OiBnZGItNi41 LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoCiAKLSMgRml4 IFRMUyBzeW1ib2xzIHJlc29sdmluZyBmb3Igb2JqZWN0cyB3aXRoIHNlcGFyYXRlIC5kZWJ1ZyBm aWxlICgtZGVidWdpbmZvKS4KLVBhdGNoMTk1OiBnZGItNi41LXRscy1vZi1zZXBhcmF0ZS1kZWJ1 Z2luZm8ucGF0Y2gKLQogIyBGaXggVExTIHN5bWJvbHMgcmVzb2x2aW5nIGZvciBzaGFyZWQgbGli cmFyaWVzIHdpdGggYSByZWxhdGl2ZSBwYXRobmFtZS4KICMgVGhlIHRlc3RzdWl0ZSBuZWVkcyBg Z2RiLTYuNS10bHMtb2Ytc2VwYXJhdGUtZGVidWdpbmZvLnBhdGNoJy4KIFBhdGNoMTk2OiBnZGIt Ni41LXNoYXJlZGxpYnJhcnktcGF0aC5wYXRjaApAQCAtMjA0LDkgKzE5Nyw2IEBAIFBhdGNoMTk2 OiBnZGItNi41LXNoYXJlZGxpYnJhcnktcGF0aC5wYXRjaAogIyBGSVhNRTogSXQgY291bGQgYmUg YXV0b2RldGVjdGVkLgogUGF0Y2gxOTk6IGdkYi02LjUtYnoxOTA4MTAtZ2Ric2VydmVyLWFyY2gt YWR2aWNlLnBhdGNoCiAKLSMgRml4IGBnY29yZScgY29tbWFuZCBmb3IgMzJiaXQgaW5mZXJpb3Jz IG9uIDY0Yml0IGhvc3RzLgotUGF0Y2gyMDE6IGdkYi02LjUtZ2NvcmUtaTM4Ni1vbi1hbWQ2NC5w YXRjaAotCiAjIFRlc3RjYXNlIGZvciBkZWFkbG9ja2luZyBvbiBsYXN0IGFkZHJlc3Mgc3BhY2Ug Ynl0ZTsgZm9yIGNvcnJ1cHRlZCBiYWNrdHJhY2VzLgogUGF0Y2gyMTE6IGdkYi02LjUtbGFzdC1h ZGRyZXNzLXNwYWNlLWJ5dGUtdGVzdC5wYXRjaAogCkBAIC0yMzYsNyArMjI2LDcgQEAgUGF0Y2gy Mjk6IGdkYi02LjMtYnoxNDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNoCiBQYXRjaDIzMTog Z2RiLTYuMy1iejIwMjY4OS1leGVjLWZyb20tcHRocmVhZC10ZXN0LnBhdGNoCiAKICMgQmFja3Bv cnRlZCBmaXh1cHMgcG9zdCB0aGUgc291cmNlIHRhcmJhbGwuCi1QYXRjaDIzMjogZ2RiLXVwc3Ry ZWFtLnBhdGNoCisjUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRjaAogCiAjIFRlc3RjYXNlIGZv ciBQUEMgUG93ZXI2L0RGUCBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkgKEJaIDIzMDAwMCkuCiBQ YXRjaDIzNDogZ2RiLTYuNi1iejIzMDAwMC1wb3dlcjYtZGlzYXNzZW1ibHktdGVzdC5wYXRjaApA QCAtMjQ0LDkgKzIzNCw2IEBAIFBhdGNoMjM0OiBnZGItNi42LWJ6MjMwMDAwLXBvd2VyNi1kaXNh c3NlbWJseS10ZXN0LnBhdGNoCiAjIFRlbXBvcmFyeSBzdXBwb3J0IGZvciBzaGFyZWQgbGlicmFy aWVzID4yR0Igb24gNjRiaXQgaG9zdHMuIChCWiAyMzE4MzIpCiBQYXRjaDIzNTogZ2RiLTYuMy1i ejIzMTgzMi1vYnN0YWNrLTJnYi5wYXRjaAogCi0jIEZpeCBwcmVsaW5rKDgpIHRlc3RjYXNlIGZv ciBub24tcm9vdCAkUEFUSCBtaXNzaW5nIGAvdXNyL3NiaW4nIChCWiAyMjU3ODMpLgotUGF0Y2gy NDA6IGdkYi02LjYtYnoyMjU3ODMtcHJlbGluay1wYXRoLnBhdGNoCi0KICMgRml4IGRlYnVnZ2lu ZyBHREIgaXRzZWxmIC0gdGhlIGNvbXBpbGVkIGluIHNvdXJjZSBmaWxlcyBwYXRocyAoQlogMjI1 NzgzKS4KIFBhdGNoMjQxOiBnZGItNi42LWJ6MjI1NzgzLWdkYi1kZWJ1Z2luZm8tcGF0aHMucGF0 Y2gKIApAQCAtMjU2LDkgKzI0Myw2IEBAIFBhdGNoMjQ1OiBnZGItNi42LWJ6MjI5NTE3LWdjb3Jl LXdpdGhvdXQtdGVybWluYWwucGF0Y2gKICMgTm90aWZ5IHVzZXIgb2YgYSBjaGlsZCBmb3JrZWQg cHJvY2VzcyBiZWluZyBkZXRhY2hlZCAoQlogMjM1MTk3KS4KIFBhdGNoMjQ3OiBnZGItNi42LWJ6 MjM1MTk3LWZvcmstZGV0YWNoLWluZm8ucGF0Y2gKIAotIyBOZXcgdGVzdGNhc2UgZm9yIGdjb3Jl IG9mIDMyYml0IGluZmVyaW9ycyBvbiA2NGJpdCBob3N0cy4KLVBhdGNoMjQ5OiBnZGItNi42LWdj b3JlMzItdGVzdC5wYXRjaAotCiAjIEF2b2lkIHRvbyBsb25nIHRpbWVvdXRzIG9uIGZhaWxpbmcg Y2FzZXMgb2YgImFubm90YTEuZXhwIGFubm90YTMuZXhwIi4KIFBhdGNoMjU0OiBnZGItNi42LXRl c3RzdWl0ZS10aW1lb3V0cy5wYXRjaAogCkBAIC0zMzAsOSArMzE0LDYgQEAgUGF0Y2gzMTg6IGdk Yi02LjgtZ2NjMzU5OTgtYWRhLW1lbW9yeS10cmFzaC5wYXRjaAogIyBUZXN0IGEgY3Jhc2ggb24g bGlicmFyaWVzIG1pc3NpbmcgdGhlIC50ZXh0IHNlY3Rpb24uCiBQYXRjaDMyMDogZ2RiLTYuNS1z ZWN0aW9uLW51bS1maXh1cC10ZXN0LnBhdGNoCiAKLSMgUmVmdXNlIGNyZWF0aW5nIHdhdGNocG9p bnRzIG9mIGFuIGFkZHJlc3MgdmFsdWUsIHN1Z2dlc3RlZCBieSBNYXJ0aW4gU3RyYW5za3kuCi1Q YXRjaDMyMjogZ2RiLTYuOC1jb25zdGFudC13YXRjaHBvaW50cy5wYXRjaAotCiAjIEZpeCBjb21w YXRpYmlsaXR5IHdpdGggcmVjZW50IGdsaWJjIGhlYWRlcnMuCiBQYXRjaDMyNDogZ2RiLTYuOC1n bGliYy1oZWFkZXJzLWNvbXBhdC5wYXRjaAogCkBAIC0zOTcsOSArMzc4LDYgQEAgUGF0Y2g0MDM6 IGdkYi1jY2FjaGUtd29ya2Fyb3VuZC5wYXRjaAogUGF0Y2g0MDQ6IGdkYi1mb3J0cmFuLWNvbW1v bi1yZWR1Y2UucGF0Y2gKIFBhdGNoNDA1OiBnZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKIAotIyBG aXggRm9ydHJhbiBsb2dpY2FsLWtpbmQ9OCAoQlogNDY1MzEwKS4KLVBhdGNoNDA2OiBnZGItZm9y dHJhbi1sb2dpY2FsOC5wYXRjaAotCiAjIFRlc3RjYXNlIGZvciAiRG8gbm90IG1ha2UgdXAgbGlu ZSBpbmZvcm1hdGlvbiIgZml4IGJ5IERhbmllbCBKYWNvYm93aXR6LgogUGF0Y2g0MDc6IGdkYi1s aW5lbm8tbWFrZXVwLXRlc3QucGF0Y2gKIApAQCAtNDEyLDExOCArMzkwLDI3IEBAIFBhdGNoNDEy OiBnZGItdW51c2VkLXJldmVydC5wYXRjaAogIyBGaXggaTM4Nit4ODZfNjQgcndhdGNoK2F3YXRj aCBiZWZvcmUgcnVuLCByZWdyZXNzaW9uIGFnYWluc3QgNi44IChCWiA1NDE4NjYpLgogUGF0Y2g0 MTc6IGdkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaAogCi0jIFJlbW92ZSBmYWxz ZSBnZGJfYXNzZXJ0IG9uICRzcCB1bmRlcmZsb3cuCi1QYXRjaDQyMjogZ2RiLWluZmNhbGwtc3At dW5kZXJmbG93LnBhdGNoCi0KLSMgRml4IGRvdWJsZS1mcmVlIG9uIHN0ZDo6dGVybWluYXRlIGhh bmRsZXIgKFRvbSBUcm9tZXksIEJaIDU2Mjk3NSkuCi1QYXRjaDQyOTogZ2RiLWJ6NTYyOTc1LXN0 ZC10ZXJtaW5hdGUtZG91YmxlLWZyZWUucGF0Y2gKLQotIyBQSUU6IEZpeCBiYWNrIHJlLXJldW4u Ci1QYXRjaDQzMDogZ2RiLXBpZS1yZXJ1bi5wYXRjaAotCi0jIERvIG5vdCBjb25zaWRlciBtZW1v cnkgZXJyb3Igb24gcmVhZGluZyBfcl9kZWJ1Zy0+cl9tYXAgYXMgZmF0YWwgKEJaIDU3Njc0Miku Ci1QYXRjaDQzMjogZ2RiLXNvbGliLW1lbW9yeS1lcnJvci1ub25mYXRhbC5wYXRjaAotCi0jIHRl c3RzdWl0ZTogRml4IHVuc3RhYmxlIHJlc3VsdHMgb2YgZ2RiLmJhc2UvcHJlbGluay5leHAuCi1Q YXRjaDQzMzogZ2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMtcHJlbGluay5wYXRjaCAK LQotIyBbcGF0Y2ggMS82XSBQSUU6IEF0dGFjaCBiaW5hcnkgZXZlbiBhZnRlciByZS1wcmVsaW5r ZWQgdW5kZXJuZWF0aAotIyBbcGF0Y2ggMi82XSBQSUU6IEF0dGFjaCBiaW5hcnkgZXZlbiBhZnRl ciBsZC5zbyByZS1wcmVsaW5rZWQgdW5kZXJuZWF0aAotIyBbcGF0Y2ggMy82XSBQSUU6IEZpeCBv Y2Nhc2lvbmFsIGVycm9yIGF0dGFjaGluZyBpNjg2IGJpbmFyeQotUGF0Y2g0MzQ6IGdkYi1waWUt MW9mNi1yZXByZWxpbmtlZC1iaW4ucGF0Y2gKLVBhdGNoNDM1OiBnZGItcGllLTJvZjYtcmVwcmVs aW5rZWQtbGQucGF0Y2gKLVBhdGNoNDM2OiBnZGItcGllLTNvZjYtcmVsb2NhdGUtb25jZS5wYXRj aAotCi0jIFtleHByLWN1bXVsYXRpdmVdIHVzaW5nLWRpcmVjdGl2ZTogRml4IG1lbW9yeSBsZWFr IChTYW1pIFdhZ2lhYWxsYSkuCi1QYXRjaDQzNzogZ2RiLXVzaW5nLWRpcmVjdGl2ZS1sZWFrLnBh dGNoCi0KLSMgRml4IGRhbmdsaW5nIGRpc3BsYXlzIGluIHNlcGFyYXRlIGRlYnVnaW5mbyAoQlog NTc0NDgzKS4KLVBhdGNoNDM4OiBnZGItYno1NzQ0ODMtZGlzcGxheS1zZXBkZWJ1Zy5wYXRjaAot Ci0jIFN1cHBvcnQgQVZYIHJlZ2lzdGVycyAoQlogNTc4MjUwKS4KLVBhdGNoNDM5OiBnZGItYno1 NzgyNTAtYXZ4LTAxb2YxMC5wYXRjaAotUGF0Y2g0NDA6IGdkYi1iejU3ODI1MC1hdngtMDJvZjEw LnBhdGNoCi1QYXRjaDQ0MTogZ2RiLWJ6NTc4MjUwLWF2eC0wM29mMTAucGF0Y2gKLVBhdGNoNDQy OiBnZGItYno1NzgyNTAtYXZ4LTA0b2YxMC5wYXRjaAotUGF0Y2g0NDM6IGdkYi1iejU3ODI1MC1h dngtMDVvZjEwLnBhdGNoCi1QYXRjaDQ0NDogZ2RiLWJ6NTc4MjUwLWF2eC0wNm9mMTAucGF0Y2gK LVBhdGNoNDQ1OiBnZGItYno1NzgyNTAtYXZ4LTA3b2YxMC5wYXRjaAotUGF0Y2g0NDY6IGdkYi1i ejU3ODI1MC1hdngtMDhvZjEwLnBhdGNoCi1QYXRjaDQ0NzogZ2RiLWJ6NTc4MjUwLWF2eC0wOW9m MTAucGF0Y2gKLVBhdGNoNDQ4OiBnZGItYno1NzgyNTAtYXZ4LTEwb2YxMC5wYXRjaAotUGF0Y2g0 NDk6IGdkYi1iejU3ODI1MC1hdngtMTBvZjEwLXBwYy5wYXRjaAotCiAjIEZpeCBjcmFzaCBvbiBD KysgdHlwZXMgaW4gc29tZSBkZWJ1ZyBpbmZvIGZpbGVzIChCWiA1NzUyOTIsIEtlaXRoIFNlaXR6 KS4KICMgVGVtcG9yYXJpbHkgd29ya2Fyb3VuZCB0aGUgY3Jhc2ggb2YgQlogNTc1MjkyIGFzIHRo ZXJlIHdhcyBub3cgQlogNTg1NDQ1LgogIyBSZS1lbmFibGUgdGhlIEJaIDU3NTI5MiBhbmQgQlog NTg1NDQ1IEMrKyBmaXggdXNpbmcgYW4gdXBkYXRlZCBwYXRjaC4KIFBhdGNoNDUxOiBnZGItYno1 NzUyOTItZGVsYXllZC1waHlzbmFtZS5wYXRjaAotUGF0Y2g0NTU6IGdkYi1iejU3NTI5Mi12b2lk LXdvcmthcm91bmQucGF0Y2gKLQotIyBQcmV0dHkgcHJpbnRlcnMgbm90IHdlbGwgZG9jdW1lbnRl ZCAoQlogNTcwNjM1LCBUb20gVHJvbWV5LCBKYW4gS3JhdG9jaHZpbCkuCi1QYXRjaDQ1MjogZ2Ri LWJ6NTcwNjM1LXByZXR0eXByaW50LWRvYzEucGF0Y2gKLVBhdGNoNDUzOiBnZGItYno1NzA2MzUt cHJldHR5cHJpbnQtZG9jMi5wYXRjaAogCiAjIEZpeCBjcmFzaCB3aGVuIHVzaW5nIEdOVSBJRlVO QyBjYWxsIGZyb20gYnJlYWtwb2ludCBjb25kaXRpb24uCiBQYXRjaDQ1NDogZ2RiLWJ6NTM5NTkw LWdudS1pZnVuYy1maXgtY29uZC5wYXRjaAogCi0jIEZhaWwgZ3JhY2VmdWxseSBpZiB0aGUgX1Vu d2luZF9EZWJ1Z0hvb2sgYXJnLiBpcyBvcHRpbWl6ZWQgb3V0IChUb20gVHJvbWV5KS4KLSMgTWFr ZSBfVW53aW5kX0RlYnVnSG9vayBpbmRlcGVuZGVudCBmcm9tIHN0ZXAtcmVzdW1lIGJyZWFrcG9p bnQgKFRvbSBUcm9tZXkpLgotUGF0Y2g0NTY6IGdkYi11bndpbmQtZGVidWdob29rLXNhZmUtZmFp bC5wYXRjaAotUGF0Y2g0NTc6IGdkYi11bndpbmQtZGVidWdob29rLXN0ZXAtaW5kZXBlbmRlbnQu cGF0Y2gKLQotIyB0ZXN0c3VpdGU6IEZpeCBnZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwIEZBSUxp bmcgb24gczM5MHggKEJaIDU5MDYzNSkuCi1QYXRjaDQ1ODogZ2RiLWFyY2hlci12bGEtdGVzdC1v b20ucGF0Y2gKLQogIyBXb3JrYXJvdW5kIG5vbi1zdG9wIG1vcmlidW5kIGxvY2F0aW9ucyBleHBs b2l0ZWQgYnkga2VybmVsIHV0cmFjZSAoQlogNTkwNjIzKS4KIFBhdGNoNDU5OiBnZGItbW9yaWJ1 bmQtdXRyYWNlLXdvcmthcm91bmQucGF0Y2gKIAotIyBGaXggY3Jhc2ggb24gVkxBIGJvdW5kIHJl ZmVyZW5jaW5nIGFuIG9wdGltaXplZC1vdXQgdmFyaWFibGUgKEJaIDU5MTg3OSkuCi1QYXRjaDQ2 MDogZ2RiLWFyY2hlci12bGEtcmVmLW9wdGltaXplZG91dC5wYXRjaAotCiAjIFJlbW92ZSBjb3Jl IGZpbGUgd2hlbiBzdGFydGluZyBhIHByb2Nlc3MgKEJaIDU5NDU2MCkuCiBQYXRjaDQ2MTogZ2Ri LWJ6NTk0NTYwLWNvcmUtdnMtcHJvY2Vzcy5wYXRjaAogCi0jIEltcG9ydCBmaXggb2YgVFVJIGxh eW91dCBpbnRlcm5hbCBlcnJvciAoQlogNTk1NDc1KS4KLVBhdGNoNDYyOiBnZGItYno1OTU0NzUt dHVpLWxheW91dC5wYXRjaAotCi0jIEZpeCBhbmQgc3VwcG9ydCBEV19PUF8qcGllY2UgKFRvbSBU cm9tZXksIEJaIDU4OTQ2NykuCi1QYXRjaDQ2MzogZ2RiLWJ6NTg5NDY3LXBpZWNlczAxb2Y0LnBh dGNoCi1QYXRjaDQ2NDogZ2RiLWJ6NTg5NDY3LXBpZWNlczAyb2Y0LnBhdGNoCi1QYXRjaDQ2NTog Z2RiLWJ6NTg5NDY3LXBpZWNlczAzb2Y0LnBhdGNoCi1QYXRjaDQ2NjogZ2RiLWJ6NTg5NDY3LXBp ZWNlczFvZjQucGF0Y2gKLVBhdGNoNDY3OiBnZGItYno1ODk0NjctcGllY2VzMm9mNC5wYXRjaAot UGF0Y2g0Njg6IGdkYi1iejU4OTQ2Ny1waWVjZXMzb2Y0LnBhdGNoCi1QYXRjaDQ2OTogZ2RiLWJ6 NTg5NDY3LXBpZWNlczRvZjQucGF0Y2gKLVBhdGNoNDcxOiBnZGItYno1ODk0NjctcGllY2VzLXZs YS1jb21wYXQucGF0Y2gKLQogIyBGaXggZm9sbG93LWV4ZWMgZm9yIEMrKyBwcm9ncmFtcyAoYnVn cmVwb3J0ZWQgYnkgTWFydGluIFN0cmFuc2t5KS4KIFBhdGNoNDcwOiBnZGItYXJjaGVyLW5leHQt b3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAogCi0jIEZpeCBBREwgYW5vbnltb3VzIHR5cGUgY3Jh c2ggKEJaIDYwMDc0NiwgU2FtaSBXYWdpYWFsbGEpLgotUGF0Y2g0NzI6IGdkYi1iejYwMDc0Ni1r b2VuaWctY3Jhc2gucGF0Y2gKLQogIyBCYWNrcG9ydCBEV0FSRi00IHN1cHBvcnQgKEJaIDYwMTg4 NywgVG9tIFRyb21leSkuCi1QYXRjaDQ3MzogZ2RiLWJ6NjAxODg3LWR3YXJmNC0xb2YyLnBhdGNo Ci1QYXRjaDQ3NDogZ2RiLWJ6NjAxODg3LWR3YXJmNC0yb2YyLnBhdGNoCiBQYXRjaDQ3NTogZ2Ri LWJ6NjAxODg3LWR3YXJmNC1yaC10ZXN0LnBhdGNoCiAKLSMgRml4IG9ic3RhY2sgY29ycnVwdGlv bnMgb24gQysrIChCWiA2MDYxODUsIENocmlzIE1vbGxlciwgSmFuIEtyYXRvY2h2aWwpLgotUGF0 Y2g0NzY6IGdkYi1iejYwNjE4NS1vYnN0YWNrLTFvZjUucGF0Y2gKLVBhdGNoNDc3OiBnZGItYno2 MDYxODUtb2JzdGFjay0yb2Y1LnBhdGNoCi1QYXRjaDQ3ODogZ2RiLWJ6NjA2MTg1LW9ic3RhY2st M29mNS5wYXRjaAotUGF0Y2g0Nzk6IGdkYi1iejYwNjE4NS1vYnN0YWNrLTRvZjUucGF0Y2gKLVBh dGNoNDgwOiBnZGItYno2MDYxODUtb2JzdGFjay01b2Y1LnBhdGNoCi0KLSMgSW1wcm92ZSBzdXBw b3J0IGZvciB0eXBlZGVmcyBpbiBjbGFzc2VzIChCWiA2MDIzMTQpLgotUGF0Y2g0ODE6IGdkYi1i ejYwMjMxNC1wdHlwZS1jbGFzcy10eXBlZGVmLTFvZjMucGF0Y2gKLVBhdGNoNDgyOiBnZGItYno2 MDIzMTQtcHR5cGUtY2xhc3MtdHlwZWRlZi0yb2YzLnBhdGNoCi1QYXRjaDQ4MzogZ2RiLWJ6NjAy MzE0LXB0eXBlLWNsYXNzLXR5cGVkZWYtM29mMy5wYXRjaAotCi0jIEZpeCBgc2V0IHByaW50IG9i amVjdCBvbicgZm9yIHNvbWUgbm9uLWR5bmFtaWMgY2xhc3NlcyAoQlogNjA2NjYwKS4KLVBhdGNo NDg0OiBnZGItYno2MDY2NjAtcHJpbnQtb2JqZWN0LW5vbnZpcnR1YWwucGF0Y2gKLQogIyBQcmlu dCAyRCBDKysgdmVjdG9ycyBhcyBtYXRyaWNlcyAoQlogNTYyNzYzLCBzb3VyY2V3YXJlMTA2NTks IENocmlzIE1vbGxlcikuCi1QYXRjaDQ4NTogZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12 ZWN0b3JzLXByZXJlcS5wYXRjaAogUGF0Y2g0ODY6IGdkYi1iejU2Mjc2My1wcmV0dHktcHJpbnQt MmQtdmVjdG9ycy5wYXRjaAogUGF0Y2g0ODc6IGdkYi1iejU2Mjc2My1wcmV0dHktcHJpbnQtMmQt dmVjdG9ycy1saWJzdGRjeHgucGF0Y2gKIApAQCAtNjYzLDcgKzU1MCw3IEBAIHJtIC1mIGdkYi9q di1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKIAogJWlmIDAl eyE/X3dpdGhfdXBzdHJlYW06MX0KIAotJXBhdGNoMjMyIC1wMQorI3BhdGNoMjMyIC1wMQogJXBh dGNoMzQ5IC1wMQogJXBhdGNoNDIwIC1wMQogJXBhdGNoMSAtcDEKQEAgLTY5OSwxMCArNTg2LDgg QEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1l eHAuYwogJXBhdGNoMTg4IC1wMQogJXBhdGNoMTkwIC1wMQogJXBhdGNoMTk0IC1wMQotJXBhdGNo MTk1IC1wMQogJXBhdGNoMTk2IC1wMQogJXBhdGNoMTk5IC1wMQotJXBhdGNoMjAxIC1wMQogJXBh dGNoMjA4IC1wMQogJXBhdGNoMjA5IC1wMQogJXBhdGNoMjExIC1wMQpAQCAtNzE1LDExICs2MDAs OSBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9w LWV4cC5jCiAlcGF0Y2gyMzEgLXAxCiAlcGF0Y2gyMzQgLXAxCiAlcGF0Y2gyMzUgLXAxCi0lcGF0 Y2gyNDAgLXAxCiAlcGF0Y2gyNDEgLXAxCiAlcGF0Y2gyNDUgLXAxCiAlcGF0Y2gyNDcgLXAxCi0l cGF0Y2gyNDkgLXAxCiAlcGF0Y2gyNTQgLXAxCiAlcGF0Y2gyNTggLXAxCiAlcGF0Y2gyNjAgLXAx CkBAIC03NDYsNyArNjI5LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIv b2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMzE3IC1wMQogJXBhdGNoMzE4IC1wMQogJXBh dGNoMzIwIC1wMQotJXBhdGNoMzIyIC1wMQogJXBhdGNoMzI0IC1wMQogJXBhdGNoMzI2IC1wMQog JXBhdGNoMzI5IC1wMQpAQCAtNzY3LDgwICs2NDksMjMgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdk Yi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNDA1IC1wMQogJXBh dGNoMzg5IC1wMQogJXBhdGNoMzk0IC1wMQotJXBhdGNoNDA2IC1wMQogJXBhdGNoNDA3IC1wMQog JXBhdGNoNDA4IC1wMQogJXBhdGNoNDEyIC1wMQogJXBhdGNoNDE3IC1wMQotJXBhdGNoNDIyIC1w MQotJXBhdGNoNDI5IC1wMQotJXBhdGNoNDMwIC1wMQotJXBhdGNoNDMyIC1wMQotJXBhdGNoNDMz IC1wMQotJXBhdGNoNDM0IC1wMQotJXBhdGNoNDM1IC1wMQotJXBhdGNoNDM2IC1wMQotJXBhdGNo NDM3IC1wMQotJXBhdGNoNDM4IC1wMQotJXBhdGNoNDM5IC1wMQotJXBhdGNoNDQwIC1wMQotJXBh dGNoNDQxIC1wMQotJXBhdGNoNDQyIC1wMQotJXBhdGNoNDQzIC1wMQotJXBhdGNoNDQ0IC1wMQot JXBhdGNoNDQ1IC1wMQotJXBhdGNoNDQ2IC1wMQotJXBhdGNoNDQ3IC1wMQotJXBhdGNoNDQ4IC1w MQotJXBhdGNoNDQ5IC1wMQogJXBhdGNoNDUxIC1wMQotJXBhdGNoNDUyIC1wMQotJXBhdGNoNDUz IC1wMQogJXBhdGNoNDU0IC1wMQotJXBhdGNoNDU1IC1wMQotJXBhdGNoNDU2IC1wMQotJXBhdGNo NDU3IC1wMQotJXBhdGNoNDU4IC1wMQogJXBhdGNoNDU5IC1wMQotJXBhdGNoNDYwIC1wMQogJXBh dGNoNDYxIC1wMQotJXBhdGNoNDYyIC1wMQotJXBhdGNoNDYzIC1wMQotJXBhdGNoNDY0IC1wMQot JXBhdGNoNDY1IC1wMQotJXBhdGNoNDY2IC1wMQotJXBhdGNoNDY3IC1wMQotJXBhdGNoNDY4IC1w MQotJXBhdGNoNDY5IC1wMQotJXBhdGNoNDcxIC1wMQogJXBhdGNoNDcwIC1wMQotJXBhdGNoNDcy IC1wMQotJXBhdGNoNDczIC1wMQotJXBhdGNoNDc0IC1wMQogJXBhdGNoNDc1IC1wMQotJXBhdGNo NDc2IC1wMQotJXBhdGNoNDc3IC1wMQotJXBhdGNoNDc4IC1wMQotJXBhdGNoNDc5IC1wMQotJXBh dGNoNDgwIC1wMQotJXBhdGNoNDgxIC1wMQotJXBhdGNoNDgyIC1wMQotJXBhdGNoNDgzIC1wMQot JXBhdGNoNDg0IC1wMQotJXBhdGNoNDg1IC1wMQogJXBhdGNoNDg2IC1wMQotIyBEaXNhYmxlZCBu b3cgZm9yIEYtMTQgYmVmb3JlIHJlYmFzZS4KKyMgVGhpcyBwYXRjaCBzaG91bGQgYmUgYXBwbGll ZCB0byBnY2MtNC41Ky5zcmMucnBtOgogI3BhdGNoNDg3IC1wMQotCiAlcGF0Y2g0MTUgLXAxCisK ICVwYXRjaDM5MyAtcDEKICVwYXRjaDMzNSAtcDEKLSMgUGF0Y2g0MTU6IGdkYi02LjYtYnVpbGRp ZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKLSMgQ3VycmVudGx5IGRpc2FibGVkIGZvciBSSEVM IGFzIGl0IGlzIGEgbmV3IGV4cGVyaW1lbnRhbCBmZWF0dXJlIG5vdCBwcmVzZW50Ci0jIGluIEZT RiBHREIgYW5kIHBvc3NpYmx5IGFmZmVjdGluZyBuZXcgdXNlciBzY3JpcHRzLgotJWlmIDAlez9y aGVsOjF9Ci0lcGF0Y2g0MTUgLXAxIC1SCi0lZW5kaWYKICVpZiAwJXshP2VsNToxfQogJXBhdGNo MzkzIC1wMSAtUgogJXBhdGNoMzM1IC1wMSAtUgpAQCAtMTE2MSw5ICs5ODYsMTMgQEAgZmkKICVl bmRpZgogJXtfYmluZGlyfS9nZGJzZXJ2ZXIKICV7X21hbmRpcn0vKi9nZGJzZXJ2ZXIuMSoKKyV7 X2xpYmRpcn0vbGliaW5wcm9jdHJhY2Uuc28KICVlbmRpZgogCiAlY2hhbmdlbG9nCisqIFdlZCBK dWwgMjEgMjAxMCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3 LjEuOTAuMjAxMDA3MjEtMS5mYzE0CistIFJlYmFzZSB0byBGU0YgR0RCIDcuMS45MC4yMDEwMDcy MSAod2hpY2ggaXMgNy4yIHByZS1yZWxlYXNlKS4KKwogKiBUdWUgSnVsIDEzIDIwMTAgSmFuIEty YXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4xLTI5LmZjMTQKIC0gRGlz YWJsZSB0ZW1wb3JhcmlseSBQeXRob24gZmlsZXMgYmVmb3JlIHRoZSBuZXcgcmViYXNlIGlzIGRv bmUgKEJaIDYxMzcxMCkuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCA5 ZTQwNWE4Li44MmNlZDYyIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEs MiArMSBAQAotMjFkY2U2MTA0NzZjMDU0Njg3YjUyNzcwZDJkZGM2NTcgIGdkYi03LjEudGFyLmJ6 MgotMDRlNWM0YjFiOWU2MzM0MjJjYzQ4OTkwZmU2MTk1OGQgIGxpYnN0ZGMrKy12My1weXRob24t cjE1NTk3OC50YXIuYnoyCisyNmM2NDMyNTIxZWZhMjk2YmY4YmRjYWU0NjVjMDQ4YiAgZ2RiLTcu MS45MC4yMDEwMDcyMS50YXIuYnoyCg==