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: Kevin Buettner To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 10.2. Date: Sun, 28 Jun 2026 00:00:17 GMT Message-ID: <178260481798.1.11098640464249695158.rpms-gdb-ca26ddfa99d8@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: ca26ddfa99d8f2a0e463e2be9f2f2107bcd44a03 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogY2EyNmRkZmE5OWQ4ZjJhMGU0NjNlMmJlOWYyZjIxMDdiY2Q0 NGEwMwogICAgICAgICAgICBBdXRob3IgOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5j b20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMjEtMDYtMDZUMTQ6NTQ6NDctMDc6MDAKICAgICAg ICAgICAgU3RhdHMgIDogKzQ4ODcvLTEwNDI1IGluIDQ0IGZpbGUocykKICAgICAgICAgICAgVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy9jYTI2ZGRmYTk5 ZDhmMmEwZTQ2M2UyYmU5ZjJmMjEwN2JjZDQ0YTAzP2JyYW5jaD1nZGItMTcuMi1yZWJhc2UtZjQ0 CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIFJlYmFzZSB0byBGU0YgR0RCIDEwLjIuCkRy b3AgZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaC4KRHJvcCBnZGItNi4zLXRlc3Qtc2Vs Zi0yMDA1MDExMC5wYXRjaC4KRHJvcCBnZGItNi41LWJ6MjE4Mzc5LXBwYy1zb2xpYi10cmFtcG9s aW5lLXRlc3QucGF0Y2guCkRyb3AgZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5w YXRjaC4KRHJvcCBnZGItNi44LXF1aXQtbmV2ZXItYWJvcnRzLnBhdGNoLgpEcm9wIGdkYi1hcmNo ZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoLgpEcm9wIGdkYi1hcmNoZXItcGllLWFk ZG9ucy5wYXRjaC4KRHJvcCBnZGItYXJjaGVyLXZsYS10ZXN0cy5wYXRjaC4KRHJvcCBnZGItYXJj aGVyLnBhdGNoLgpEcm9wIGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2guCkRyb3Ag Z2RiLWJ0cm9idXN0LnBhdGNoLgpEcm9wIGdkYi1iejEyMTk3NDctYXR0YWNoLWtpbGxzLnBhdGNo LgpEcm9wIGdkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoLgpEcm9wIGdkYi1kdHMt cmhlbDYtcHl0aG9uLWNvbXBhdC5wYXRjaC4KRHJvcCBnZGItZ25hdC1kd2FyZi1jcmFzaC0zb2Yz LnBhdGNoLgpEcm9wIGdkYi1qaXQtcmVhZGVyLW11bHRpbGliLnBhdGNoLgpEcm9wIGdkYi1tb3Jp YnVuZC11dHJhY2Utd29ya2Fyb3VuZC5wYXRjaC4KRHJvcCBnZGItcmhiejE5MzA1MjgtZml4LWdu dWxpYi1idWlsZC1lcnJvci5wYXRjaC4KRHJvcCBnZGItcmhiejE5MzI2NDUtYWFyY2g2NC1wdHJh Y2UtaGVhZGVyLW9yZGVyLnBhdGNoLgpEcm9wIGdkYi12bGEtaW50ZWwtZml4LXByaW50LWNoYXIt YXJyYXkucGF0Y2guCkRyb3AgZ2RiLXZsYS1pbnRlbC1mb3J0cmFuLXN0cmlkZXMucGF0Y2guCkRy b3AgZ2RiLXZsYS1pbnRlbC1zdHJpbmdidC1maXgucGF0Y2guCkRyb3AgZ2RiLXZsYS1pbnRlbC10 ZXN0cy5wYXRjaC4KRHJvcCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0LXR5cGUtdW5pdC5wYXRj aC4KRHJvcCBnZGItdGVzdHN1aXRlLXJlYWRsaW5lNjMtc2lnaW50LXJldmVydC5wYXRjaC4KRHJv cCBnZGItY29uZmlnLnBhdGNoLgpBZGQgZm9sbG93aW5nIHVwc3RyZWFtIHBhdGNoZXMgZm9yIEZv cnRyYW4gc3RyaWRlIC8gc2xpY2Ugc3VwcG9ydDoKICBnZGItcmhiejE5NjQxNjctY29udmVydC1l bnVtLXJhbmdlX3R5cGUucGF0Y2gKICBnZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zbGlj ZXMtYXQtcHJvbXB0LnBhdGNoCiAgZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc3RyaWRl cy1pbi1leHByZXNzaW9ucy5wYXRjaAogIGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVw LWFycmF5LWV4cHJlc3Npb24tZXZhbHVhdGlvbi5wYXRjaAogIGdkYi1yaGJ6MTk2NDE2Ny1mb3J0 cmFuLXJhbmdlX3R5cGUtdG8tcmFuZ2VfZmxhZy5wYXRjaAogIGdkYi1yaGJ6MTk2NDE2Ny1mb3J0 cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKICBnZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFu LWV4cHItaGFuZGxpbmcucGF0Y2gKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRp Z25vcmUKaW5kZXggM2EyMWE5YS4uNWY0YTQwYyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysg Yi8uZ2l0aWdub3JlCkBAIC0xLDQgKzEsNCBAQAotL2JpbnV0aWxzLWdkYgorL25ldy1mZWRvcmEt cmVsZWFzZQogL2dkYi1saWJzdGRjKystdjMtcHl0aG9uLTguMS4xLTIwMTgwNjI2LnRhci54egot L2dkYi0xMC4xLnRhci54egogL3YyLjAuNC50YXIuZ3oKKy9nZGItMTAuMi50YXIueHoKCmRpZmYg LS1naXQgYS9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRl CmluZGV4IDMwMDIzYWIuLjVhM2U0ZTQgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5QYXRjaC5pbmNs dWRlCisrKyBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCkBAIC0yLDM3MCArMiwzMDAgQEAKICM9 ZmVkb3JhCiBQYXRjaDAwMTogZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaAog Ci0jIFZMQSAoRm9ydHJhbiBkeW5hbWljIGFycmF5cykgZnJvbSBJbnRlbCArIGFyY2hlci1qYW5r cmF0b2NodmlsLXZsYSB0ZXN0cy4KLSM9cHVzaAotUGF0Y2gwMDI6IGdkYi12bGEtaW50ZWwtZm9y dHJhbi1zdHJpZGVzLnBhdGNoCi0KLSM9cHVzaCtqYW4KLVBhdGNoMDAzOiBnZGItdmxhLWludGVs LXN0cmluZ2J0LWZpeC5wYXRjaAotCiAjIEFkZCBhIHdyYXBwZXIgc2NyaXB0IHRvIEdEQiB0aGF0 IGltcGxlbWVudHMgcHN0YWNrIHVzaW5nIHRoZQogIyAtLXJlYWRuZXZlciBvcHRpb24uCiAjPXB1 c2gKLVBhdGNoMDA0OiBnZGItNi4zLWdzdGFjay0yMDA1MDQxMS5wYXRjaAotCi0jIFZTWVNDQUxM IGFuZCBQSUUKLSM9ZmVkb3JhdGVzdAotUGF0Y2gwMDU6IGdkYi02LjMtdGVzdC1waWUtMjAwNTAx MDcucGF0Y2gKLQotIyBHZXQgc2VsZnRlc3Qgd29ya2luZyB3aXRoIHNlcC1kZWJ1Zy1pbmZvCi0j PWZlZG9yYXRlc3QKLVBhdGNoMDA2OiBnZGItNi4zLXRlc3Qtc2VsZi0yMDA1MDExMC5wYXRjaAor UGF0Y2gwMDI6IGdkYi02LjMtZ3N0YWNrLTIwMDUwNDExLnBhdGNoCiAKICMgVGVzdCBzdXBwb3J0 IG9mIG11bHRpcGxlIGRlc3RydWN0b3JzIGp1c3QgbGlrZSBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMK ICM9ZmVkb3JhdGVzdAotUGF0Y2gwMDc6IGdkYi02LjMtdGVzdC1kdG9yZml4LTIwMDUwMTIxLnBh dGNoCitQYXRjaDAwMzogZ2RiLTYuMy10ZXN0LWR0b3JmaXgtMjAwNTAxMjEucGF0Y2gKIAogIyBG aXggdG8gc3VwcG9ydCBleGVjdXRhYmxlIG1vdmluZwogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAwODog Z2RiLTYuMy10ZXN0LW1vdmVkaXItMjAwNTAxMjUucGF0Y2gKK1BhdGNoMDA0OiBnZGItNi4zLXRl c3QtbW92ZWRpci0yMDA1MDEyNS5wYXRjaAogCiAjIFRlc3Qgc2libGluZyB0aHJlYWRzIHRvIHNl dCB0aHJlYWRlZCB3YXRjaHBvaW50cyBmb3IgeDg2IGFuZCB4ODYtNjQKICM9ZmVkb3JhdGVzdAot UGF0Y2gwMDk6IGdkYi02LjMtdGhyZWFkZWQtd2F0Y2hwb2ludHMyLTIwMDUwMjI1LnBhdGNoCitQ YXRjaDAwNTogZ2RiLTYuMy10aHJlYWRlZC13YXRjaHBvaW50czItMjAwNTAyMjUucGF0Y2gKIAog IyBOb3RpZnkgb2JzZXJ2ZXJzIHRoYXQgdGhlIGluZmVyaW9yIGhhcyBiZWVuIGNyZWF0ZWQKICM9 ZmVkb3JhdGVzdAotUGF0Y2gwMTA6IGdkYi02LjMtaW5mZXJpb3Itbm90aWZpY2F0aW9uLTIwMDUw NzIxLnBhdGNoCitQYXRjaDAwNjogZ2RiLTYuMy1pbmZlcmlvci1ub3RpZmljYXRpb24tMjAwNTA3 MjEucGF0Y2gKIAogIyBWZXJpZnkgcHJpbnRpbmcgb2YgaW5oZXJpdGVkIG1lbWJlcnMgdGVzdAog Iz1mZWRvcmF0ZXN0Ci1QYXRjaDAxMTogZ2RiLTYuMy1pbmhlcml0YW5jZXRlc3QtMjAwNTA3MjYu cGF0Y2gKK1BhdGNoMDA3OiBnZGItNi4zLWluaGVyaXRhbmNldGVzdC0yMDA1MDcyNi5wYXRjaAog CiAjIFN1cHBvcnQgVExTIHN5bWJvbHMgKCtgZXJybm8nIHN1Z2dlc3Rpb24gaWYgbm8gcHRocmVh ZCBpcyBmb3VuZCkgKEJaIDE4NTMzNykuCiAjPXB1c2gramFuOiBJdCBzaG91bGQgYmUgcmVwbGFj ZWQgYnkgSW5maW5pdHkgcHJvamVjdC4KLVBhdGNoMDEyOiBnZGItNi41LWJ6MTg1MzM3LXJlc29s dmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoCitQYXRjaDAwODogZ2RiLTYuNS1iejE4 NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaAogCiAjIEZpeCBUTFMg c3ltYm9scyByZXNvbHZpbmcgZm9yIHNoYXJlZCBsaWJyYXJpZXMgd2l0aCBhIHJlbGF0aXZlIHBh dGhuYW1lLgogIyBUaGUgdGVzdHN1aXRlIG5lZWRzIGBnZGItNi41LXRscy1vZi1zZXBhcmF0ZS1k ZWJ1Z2luZm8ucGF0Y2gnLgogIz1mZWRvcmF0ZXN0OiBPbmUgc2hvdWxkIHJlY2hlY2sgaWYgaXQg aXMgcmVhbGx5IGZpeGVkIHVwc3RyZWFtLgotUGF0Y2gwMTM6IGdkYi02LjUtc2hhcmVkbGlicmFy eS1wYXRoLnBhdGNoCitQYXRjaDAwOTogZ2RiLTYuNS1zaGFyZWRsaWJyYXJ5LXBhdGgucGF0Y2gK IAogIyBJbXByb3ZlZCB0ZXN0c3VpdGUgcmVzdWx0cyBieSB0aGUgdGVzdHN1aXRlIHByb3ZpZGVk IGJ5IHRoZSBjb3VydGVzeSBvZiBCRUEuCiAjPWZlZG9yYXRlc3Q6IEZvciB1cHN0cmVhbSBpdCBz aG91bGQgYmUgcmV3cml0dGVuIGFzIGEgZGVqYWdudSB0ZXN0LCB0aGUgdGVzdCBvZiBubyAiPz8i IHdhcyB1c2VmdWwuCi1QYXRjaDAxNDogZ2RiLTYuNS1CRUEtdGVzdHN1aXRlLnBhdGNoCitQYXRj aDAxMDogZ2RiLTYuNS1CRUEtdGVzdHN1aXRlLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIGRlYWRs b2NraW5nIG9uIGxhc3QgYWRkcmVzcyBzcGFjZSBieXRlOyBmb3IgY29ycnVwdGVkIGJhY2t0cmFj ZXMuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDE1OiBnZGItNi41LWxhc3QtYWRkcmVzcy1zcGFjZS1i eXRlLXRlc3QucGF0Y2gKK1BhdGNoMDExOiBnZGItNi41LWxhc3QtYWRkcmVzcy1zcGFjZS1ieXRl LXRlc3QucGF0Y2gKIAogIyBGaXggcmVhZGxpbmUgc2VnZmF1bHQgb24gZXhjZXNzaXZlbHkgbG9u ZyBoYW5kLXR5cGVkIGxpbmVzLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAxNjogZ2RiLTYuNS1yZWFk bGluZS1sb25nLWxpbmUtY3Jhc2gtdGVzdC5wYXRjaAorUGF0Y2gwMTI6IGdkYi02LjUtcmVhZGxp bmUtbG9uZy1saW5lLWNyYXNoLXRlc3QucGF0Y2gKIAogIyBUZXN0IHNpZGVlZmZlY3RzIG9mIHNr aXBwaW5nIHBwYyAuc28gbGlicyB0cmFtcG9saW5lcyAoQlogMjE4Mzc5KS4KICM9ZmVkb3JhdGVz dAotUGF0Y2gwMTc6IGdkYi02LjUtYnoyMTgzNzktcHBjLXNvbGliLXRyYW1wb2xpbmUtdGVzdC5w YXRjaAotCi0jIEZpeCBsb2NrdXAgb24gdHJhbXBvbGluZSB2cy4gaXRzIGZ1bmN0aW9uIGxvb2t1 cDsgdW5yZXByb2R1Y2libGUgKEJaIDIxODM3OSkuCi0jPWZlZG9yYQotUGF0Y2gwMTg6IGdkYi02 LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1maXgucGF0Y2gKK1BhdGNo MDEzOiBnZGItNi41LWJ6MjE4Mzc5LXBwYy1zb2xpYi10cmFtcG9saW5lLXRlc3QucGF0Y2gKIAog IyBGaW5kIHN5bWJvbHMgcHJvcGVybHkgYXQgdGhlaXIgb3JpZ2luYWwgKGluY2x1ZGVkKSBmaWxl IChCWiAxMDk5MjEpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAxOTogZ2RiLTYuNS1iejEwOTkyMS1E V19BVF9kZWNsX2ZpbGUtdGVzdC5wYXRjaAorUGF0Y2gwMTQ6IGdkYi02LjUtYnoxMDk5MjEtRFdf QVRfZGVjbF9maWxlLXRlc3QucGF0Y2gKIAogIyBVcGRhdGUgUFBDIHVud2luZGluZyBwYXRjaGVz IHRvIHRoZWlyIHVwc3RyZWFtIHZhcmlhbnRzIChCWiAxNDA1MzIpLgogIz1mZWRvcmF0ZXN0Ci1Q YXRjaDAyMDogZ2RiLTYuMy1iejE0MDUzMi1wcGMtdW53aW5kaW5nLXRlc3QucGF0Y2gKK1BhdGNo MDE1OiBnZGItNi4zLWJ6MTQwNTMyLXBwYy11bndpbmRpbmctdGVzdC5wYXRjaAogCiAjIFRlc3Rj YXNlIGZvciBleGVjKCkgZnJvbSB0aHJlYWRlZCBwcm9ncmFtIChCWiAyMDI2ODkpLgogIz1mZWRv cmF0ZXN0Ci1QYXRjaDAyMTogZ2RiLTYuMy1iejIwMjY4OS1leGVjLWZyb20tcHRocmVhZC10ZXN0 LnBhdGNoCitQYXRjaDAxNjogZ2RiLTYuMy1iejIwMjY4OS1leGVjLWZyb20tcHRocmVhZC10ZXN0 LnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIFBQQyBQb3dlcjYvREZQIGluc3RydWN0aW9ucyBkaXNh c3NlbWJseSAoQlogMjMwMDAwKS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwMjI6IGdkYi02LjYtYnoy MzAwMDAtcG93ZXI2LWRpc2Fzc2VtYmx5LXRlc3QucGF0Y2gKK1BhdGNoMDE3OiBnZGItNi42LWJ6 MjMwMDAwLXBvd2VyNi1kaXNhc3NlbWJseS10ZXN0LnBhdGNoCiAKICMgQWxsb3cgcnVubmluZyBg L3Vzci9iaW4vZ2NvcmUnIHdpdGggcHJvdmlkZWQgYnV0IGluYWNjZXNzaWJsZSB0dHkgKEJaIDIy OTUxNykuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDIzOiBnZGItNi42LWJ6MjI5NTE3LWdjb3JlLXdp dGhvdXQtdGVybWluYWwucGF0Y2gKK1BhdGNoMDE4OiBnZGItNi42LWJ6MjI5NTE3LWdjb3JlLXdp dGhvdXQtdGVybWluYWwucGF0Y2gKIAogIyBBdm9pZCB0b28gbG9uZyB0aW1lb3V0cyBvbiBmYWls aW5nIGNhc2VzIG9mICJhbm5vdGExLmV4cCBhbm5vdGEzLmV4cCIuCiAjPWZlZG9yYXRlc3QKLVBh dGNoMDI0OiBnZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaAorUGF0Y2gwMTk6IGdkYi02 LjYtdGVzdHN1aXRlLXRpbWVvdXRzLnBhdGNoCiAKICMgU3VwcG9ydCBmb3Igc3RlcHBpbmcgb3Zl ciBQUEMgYXRvbWljIGluc3RydWN0aW9uIHNlcXVlbmNlcyAoQlogMjM3NTcyKS4KICM9ZmVkb3Jh dGVzdAotUGF0Y2gwMjU6IGdkYi02LjYtYnoyMzc1NzItcHBjLWF0b21pYy1zZXF1ZW5jZS10ZXN0 LnBhdGNoCitQYXRjaDAyMDogZ2RiLTYuNi1iejIzNzU3Mi1wcGMtYXRvbWljLXNlcXVlbmNlLXRl c3QucGF0Y2gKIAogIyBUZXN0IGtlcm5lbCBWRFNPIGRlY29kaW5nIHdoaWxlIGF0dGFjaGluZyB0 byBhbiBpMzg2IHByb2Nlc3MuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDI2OiBnZGItNi4zLWF0dGFj aC1zZWUtdmRzby10ZXN0LnBhdGNoCitQYXRjaDAyMTogZ2RiLTYuMy1hdHRhY2gtc2VlLXZkc28t dGVzdC5wYXRjaAogCiAjIFRlc3QgbGVmdG92ZXIgem9tYmllIHByb2Nlc3MgKEJaIDI0Mzg0NSku CiAjPWZlZG9yYXRlc3QKLVBhdGNoMDI3OiBnZGItNi41LWJ6MjQzODQ1LXN0YWxlLXRlc3Rpbmct em9tYmllLXRlc3QucGF0Y2gKK1BhdGNoMDIyOiBnZGItNi41LWJ6MjQzODQ1LXN0YWxlLXRlc3Rp bmctem9tYmllLXRlc3QucGF0Y2gKIAogIyBOZXcgbG9jYXRpbmcgb2YgdGhlIG1hdGNoaW5nIGJp bmFyaWVzIGZyb20gdGhlIHB1cmUgY29yZSBmaWxlIChidWlsZC1pZCkuCiAjPXB1c2gramFuCi1Q YXRjaDAyODogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorUGF0Y2gwMjM6IGdkYi02LjYt YnVpbGRpZC1sb2NhdGUucGF0Y2gKIAogIyBGaXggbG9hZGluZyBvZiBjb3JlIGZpbGVzIHdpdGhv dXQgYnVpbGQtaWRzIGJ1dCB3aXRoIGJ1aWxkLWlkcyBpbiBleGVjdXRhYmxlcy4KICMgTG9hZCBz dHJpY3RseSBidWlsZC1pZC1jaGVja2VkIGNvcmUgZmlsZXMgb25seSBpZiBubyBleGVjdXRhYmxl IGlzIHNwZWNpZmllZAogIyAoSmFuIEtyYXRvY2h2aWwsIFJIIEJaIDEzMzk4NjIpLgogIz1wdXNo K2phbgotUGF0Y2gwMjk6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1pZHMu cGF0Y2gKK1BhdGNoMDI0OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXNvbGliLW1pc3NpbmctaWRz LnBhdGNoCiAKICM9cHVzaCtqYW4KLVBhdGNoMDMwOiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJw bS5wYXRjaAorUGF0Y2gwMjU6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCiAKICMg Rml4IGRpc3BsYXlpbmcgb2YgbnVtZXJpYyBjaGFyIGFycmF5cyBhcyBzdHJpbmdzIChCWiAyMjQx MjgpLgogIz1mZWRvcmF0ZXN0OiBCdXQgaXQgaXMgZmFpbGluZyBhbnl3YXksIG9uZSBzaG91bGQg Y2hlY2sgdGhlIGJlaGF2aW9yIG1vcmUuCi1QYXRjaDAzMTogZ2RiLTYuNy1jaGFyc2lnbi10ZXN0 LnBhdGNoCitQYXRjaDAyNjogZ2RiLTYuNy1jaGFyc2lnbi10ZXN0LnBhdGNoCiAKICMgVGVzdCBQ UEMgaGlkaW5nIG9mIGNhbGwtdm9sYXRpbGUgcGFyYW1ldGVyIHJlZ2lzdGVyLgogIz1mZWRvcmF0 ZXN0Ci1QYXRjaDAzMjogZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi10ZXN0LnBh dGNoCitQYXRjaDAyNzogZ2RiLTYuNy1wcGMtY2xvYmJlcmVkLXJlZ2lzdGVycy1PMi10ZXN0LnBh dGNoCiAKICMgVGVzdHN1aXRlIGZpeGVzIGZvciBtb3JlIHN0YWJsZS9jb21wYXJhYmxlIHJlc3Vs dHMuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDMzOiBnZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVz dWx0cy5wYXRjaAorUGF0Y2gwMjg6IGdkYi02LjctdGVzdHN1aXRlLXN0YWJsZS1yZXN1bHRzLnBh dGNoCiAKICMgVGVzdCBpYTY0IG1lbW9yeSBsZWFrcyBvZiB0aGUgY29kZSB1c2luZyBsaWJ1bndp bmQuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDM0OiBnZGItNi41LWlhNjQtbGlidW53aW5kLWxlYWst dGVzdC5wYXRjaAorUGF0Y2gwMjk6IGdkYi02LjUtaWE2NC1saWJ1bndpbmQtbGVhay10ZXN0LnBh dGNoCiAKICMgVGVzdCBoaWRpbmcgdW5leHBlY3RlZCBicmVha3BvaW50cyBvbiBpbnRlbnRpb25h bCBzdGVwIGNvbW1hbmRzLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAzNTogZ2RiLTYuNS1taXNzZWQt dHJhcC1vbi1zdGVwLXRlc3QucGF0Y2gKK1BhdGNoMDMwOiBnZGItNi41LW1pc3NlZC10cmFwLW9u LXN0ZXAtdGVzdC5wYXRjaAogCiAjIFRlc3QgZ2NvcmUgbWVtb3J5IGFuZCB0aW1lIHJlcXVpcmVt ZW50cyBmb3IgbGFyZ2UgaW5mZXJpb3JzLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDAzNjogZ2RiLTYu NS1nY29yZS1idWZmZXItbGltaXQtdGVzdC5wYXRjaAorUGF0Y2gwMzE6IGdkYi02LjUtZ2NvcmUt YnVmZmVyLWxpbWl0LXRlc3QucGF0Y2gKIAogIyBUZXN0IEdDT1JFIGZvciBzaG1pZCAwIHNoYXJl ZCBtZW1vcnkgbWFwcGluZ3MuCiAjPWZlZG9yYXRlc3Q6IEJ1dCBpdCBpcyBicm9rZW4gYW55d2F5 LCBzb21ldGltZXMgdGhlIGNhc2UgYmVpbmcgdGVzdGVkIGlzIG5vdCByZXByb2R1Y2libGUuCi1Q YXRjaDAzNzogZ2RiLTYuMy1tYXBwaW5nLXplcm8taW5vZGUtdGVzdC5wYXRjaAorUGF0Y2gwMzI6 IGdkYi02LjMtbWFwcGluZy16ZXJvLWlub2RlLXRlc3QucGF0Y2gKIAogIyBUZXN0IGEgY3Jhc2gg b24gYGZvY3VzIGNtZCcsIGBmb2N1cyBwcmV2JyBjb21tYW5kcy4KICM9ZmVkb3JhdGVzdAotUGF0 Y2gwMzg6IGdkYi02LjMtZm9jdXMtY21kLXByZXYtdGVzdC5wYXRjaAorUGF0Y2gwMzM6IGdkYi02 LjMtZm9jdXMtY21kLXByZXYtdGVzdC5wYXRjaAogCiAjIFRlc3QgdmFyaW91cyBmb3JtcyBvZiB0 aHJlYWRzIHRyYWNraW5nIGFjcm9zcyBleGVjKCkgKEJaIDQ0Mjc2NSkuCiAjPWZlZG9yYXRlc3QK LVBhdGNoMDM5OiBnZGItNi44LWJ6NDQyNzY1LXRocmVhZGVkLWV4ZWMtdGVzdC5wYXRjaAorUGF0 Y2gwMzQ6IGdkYi02LjgtYno0NDI3NjUtdGhyZWFkZWQtZXhlYy10ZXN0LnBhdGNoCiAKICMgVGVz dCBhIGNyYXNoIG9uIGxpYnJhcmllcyBtaXNzaW5nIHRoZSAudGV4dCBzZWN0aW9uLgogIz1mZWRv cmF0ZXN0Ci1QYXRjaDA0MDogZ2RiLTYuNS1zZWN0aW9uLW51bS1maXh1cC10ZXN0LnBhdGNoCitQ YXRjaDAzNTogZ2RiLTYuNS1zZWN0aW9uLW51bS1maXh1cC10ZXN0LnBhdGNoCiAKICMgRml4IHJl c29sdmluZyBvZiB2YXJpYWJsZXMgYXQgbG9jYXRpb25zIGxpc3RzIGluIHByZWxpbmtlZCBsaWJz IChCWiA0NjY5MDEpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA0MTogZ2RiLTYuOC1iejQ2NjkwMS1i YWNrdHJhY2UtZnVsbC1wcmVsaW5rZWQucGF0Y2gKK1BhdGNoMDM2OiBnZGItNi44LWJ6NDY2OTAx LWJhY2t0cmFjZS1mdWxsLXByZWxpbmtlZC5wYXRjaAogCiAjIE5ldyB0ZXN0IGZvciBzdGVwLXJl c3VtZSBicmVha3BvaW50IHBsYWNlZCBpbiBtdWx0aXBsZSB0aHJlYWRzIGF0IG9uY2UuCiAjPWZl ZG9yYXRlc3QKLVBhdGNoMDQyOiBnZGItc2ltdWx0YW5lb3VzLXN0ZXAtcmVzdW1lLWJyZWFrcG9p bnQtdGVzdC5wYXRjaAorUGF0Y2gwMzc6IGdkYi1zaW11bHRhbmVvdXMtc3RlcC1yZXN1bWUtYnJl YWtwb2ludC10ZXN0LnBhdGNoCiAKICMgRml4IEdOVS9MaW51eCBjb3JlIG9wZW46IENhbid0IHJl YWQgcGF0aG5hbWUgZm9yIGxvYWQgbWFwOiBJbnB1dC9vdXRwdXQgZXJyb3IuCiAjIEZpeCByZWdy ZXNzaW9uIG9mIHVuZGlzcGxheWVkIG1pc3Npbmcgc2hhcmVkIGxpYnJhcmllcyBjYXVzZWQgYnkg YSBmaXggZm9yLgogIz1mZWRvcmF0ZXN0OiBJdCBzaG91bGQgYmUgaW4gZ2xpYmM6IGxpYmMtYWxw aGE6IDwyMDA5MTAwNDE2MTcwNi5HQTI3NDUwQC4qPgotUGF0Y2gwNDM6IGdkYi1jb3JlLW9wZW4t dmRzby13YXJuaW5nLnBhdGNoCi0KLSMgRml4IHN0ZXBwaW5nIHdpdGggT01QIHBhcmFsbGVsIEZv cnRyYW4gc2VjdGlvbnMgKEJaIDUzMzE3NikuCi0jPXB1c2gramFuOiBJdCByZXF1aXJlcyBzb21l IGJldHRlciBEV0FSRiBhbm5vdGF0aW9ucy4KLVBhdGNoMDQ0OiBnZGItYno1MzMxNzYtZm9ydHJh bi1vbXAtc3RlcC5wYXRjaAorUGF0Y2gwMzg6IGdkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBh dGNoCiAKICMgV29ya2Fyb3VuZCBjY2FjaGUgbWFraW5nIGxpbmVubyBub24temVybyBmb3IgY29t bWFuZC1saW5lIGRlZmluaXRpb25zLgogIz1mZWRvcmF0ZXN0OiBjY2FjaGUgaXMgcmFyZWx5IHVz ZWQgYW5kIGl0IGlzIGV2ZW4gZml4ZWQgbm93LgotUGF0Y2gwNDU6IGdkYi1jY2FjaGUtd29ya2Fy b3VuZC5wYXRjaAotCi0jPXB1c2gramFuOiBNYXkgZ2V0IG9ic29sZXRlZCBieSBUb20ncyB1bnJl bG9jYXRlZCBvYmpmaWxlcyBwYXRjaC4KLVBhdGNoMDQ2OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMu cGF0Y2gKLQotIz1wdXNoK2phbjogQnJlYWtwb2ludHMgZGlzYWJsaW5nIG1hdGNoaW5nIHNob3Vs ZCBub3QgYmUgYmFzZWQgb24gYWRkcmVzcy4KLVBhdGNoMDQ3OiBnZGItYXJjaGVyLXBpZS1hZGRv bnMta2VlcC1kaXNhYmxlZC5wYXRjaAorUGF0Y2gwMzk6IGdkYi1jY2FjaGUtd29ya2Fyb3VuZC5w YXRjaAogCiAjIFRlc3RjYXNlIGZvciAiRG8gbm90IG1ha2UgdXAgbGluZSBpbmZvcm1hdGlvbiIg Zml4IGJ5IERhbmllbCBKYWNvYm93aXR6LgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA0ODogZ2RiLWxp bmVuby1tYWtldXAtdGVzdC5wYXRjaAorUGF0Y2gwNDA6IGdkYi1saW5lbm8tbWFrZXVwLXRlc3Qu cGF0Y2gKIAogIyBUZXN0IHBvd2VyNyBwcGMgZGlzYXNzZW1ibHkuCiAjPWZlZG9yYXRlc3QKLVBh dGNoMDQ5OiBnZGItcHBjLXBvd2VyNy10ZXN0LnBhdGNoCi0KLSMgV29ya2Fyb3VuZCBub24tc3Rv cCBtb3JpYnVuZCBsb2NhdGlvbnMgZXhwbG9pdGVkIGJ5IGtlcm5lbCB1dHJhY2UgKEJaIDU5MDYy MykuCi0jPXB1c2gramFuOiBDdXJyZW50bHkgaXQgaXMgc3RpbGwgbm90IGZ1bGx5IHNhZmUuCi1Q YXRjaDA1MDogZ2RiLW1vcmlidW5kLXV0cmFjZS13b3JrYXJvdW5kLnBhdGNoCitQYXRjaDA0MTog Z2RiLXBwYy1wb3dlcjctdGVzdC5wYXRjaAogCiAjIEZpeCBmb2xsb3ctZXhlYyBmb3IgQysrIHBy b2dyYW1zIChidWdyZXBvcnRlZCBieSBNYXJ0aW4gU3RyYW5za3kpLgogIz1mZWRvcmF0ZXN0Ci1Q YXRjaDA1MTogZ2RiLWFyY2hlci1uZXh0LW92ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2gKK1BhdGNo MDQyOiBnZGItYXJjaGVyLW5leHQtb3Zlci10aHJvdy1jeHgtZXhlYy5wYXRjaAogCiAjIEJhY2tw b3J0IERXQVJGLTQgc3VwcG9ydCAoQlogNjAxODg3LCBUb20gVHJvbWV5KS4KICM9ZmVkb3JhdGVz dAotUGF0Y2gwNTI6IGdkYi1iejYwMTg4Ny1kd2FyZjQtcmgtdGVzdC5wYXRjaAotCi0jPXB1c2gr amFuCi1QYXRjaDA1MzogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAor UGF0Y2gwNDM6IGdkYi1iejYwMTg4Ny1kd2FyZjQtcmgtdGVzdC5wYXRjaAogCiAjIFdvcmthcm91 bmQgbGlicnBtIEJaIDY0MzAzMSBkdWUgdG8gaXRzIHVuZXhwZWN0ZWQgZXhpdCgpIGNhbGxzIChC WiA2NDI4NzkpLgogIz1wdXNoK2phbgotUGF0Y2gwNTQ6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUt cnBtLWxpYnJwbS13b3JrYXJvdW5kLnBhdGNoCitQYXRjaDA0NDogZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKIAogIyBbZGVsYXllZC1zeW1maWxlXSBU ZXN0IGEgYmFja3RyYWNlIHJlZ3Jlc3Npb24gb24gQ0ZJcyB3aXRob3V0IERJRSAoQlogNjE0NjA0 KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNTU6IGdkYi10ZXN0LWJ0LWNmaS13aXRob3V0LWRpZS5w YXRjaAorUGF0Y2gwNDU6IGdkYi10ZXN0LWJ0LWNmaS13aXRob3V0LWRpZS5wYXRjaAogCiAjIFZl cmlmeSBHREIgUHl0aG9uIGJ1aWx0LWluIGZ1bmN0aW9uIGdkYi5zb2xpYl9hZGRyZXNzIGV4aXN0 cyAoQlogIyA2MzQxMDgpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA1NjogZ2RiLWJ6NjM0MTA4LXNv bGliX2FkZHJlc3MucGF0Y2gKK1BhdGNoMDQ2OiBnZGItYno2MzQxMDgtc29saWJfYWRkcmVzcy5w YXRjaAogCiAjIE5ldyB0ZXN0IGdkYi5hcmNoL3g4Nl82NC1waWQwLWNvcmUuZXhwIGZvciBrZXJu ZWwgUElEIDAgY29yZXMgKEJaIDYxMTQzNSkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDU3OiBnZGIt dGVzdC1waWQwLWNvcmUucGF0Y2gKK1BhdGNoMDQ3OiBnZGItdGVzdC1waWQwLWNvcmUucGF0Y2gK IAogIyBbYXJjaGVyLXRyb21leS1kZWxheWVkLXN5bWZpbGVdIE5ldyB0ZXN0IGdkYi5kd2FyZjIv ZHcyLWFyYW5nZXMuZXhwLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA1ODogZ2RiLXRlc3QtZHcyLWFy YW5nZXMucGF0Y2gKK1BhdGNoMDQ4OiBnZGItdGVzdC1kdzItYXJhbmdlcy5wYXRjaAogCiAjIFth cmNoZXIta2VpdGhzLWV4cHItY3VtdWxhdGl2ZSt1cHN0cmVhbV0gSW1wb3J0IEMrKyB0ZXN0Y2Fz ZXMuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDU5OiBnZGItdGVzdC1leHByLWN1bXVsYXRpdmUtYXJj aGVyLnBhdGNoCitQYXRjaDA0OTogZ2RiLXRlc3QtZXhwci1jdW11bGF0aXZlLWFyY2hlci5wYXRj aAogCiAjIEZpeCByZWdyZXNzaW9ucyBvbiBDKysgbmFtZXMgcmVzb2x2aW5nIChQUiAxMTczNCwg UFIgMTIyNzMsIEtlaXRoIFNlaXR6KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNjA6IGdkYi1waHlz bmFtZS1wcjExNzM0LXRlc3QucGF0Y2gKK1BhdGNoMDUwOiBnZGItcGh5c25hbWUtcHIxMTczNC10 ZXN0LnBhdGNoCiAKICMgRml4IHJlZ3Jlc3Npb25zIG9uIEMrKyBuYW1lcyByZXNvbHZpbmcgKFBS IDExNzM0LCBQUiAxMjI3MywgS2VpdGggU2VpdHopLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA2MTog Z2RiLXBoeXNuYW1lLXByMTIyNzMtdGVzdC5wYXRjaAorUGF0Y2gwNTE6IGdkYi1waHlzbmFtZS1w cjEyMjczLXRlc3QucGF0Y2gKIAogIyBUZXN0IEdEQiBvcGNvZGVzLyBkaXNhc3NlbWJseSBvZiBJ bnRlbCBJdnkgQnJpZGdlIGluc3RydWN0aW9ucyAoQlogNjk2ODkwKS4KICM9ZmVkb3JhdGVzdAot UGF0Y2gwNjI6IGdkYi10ZXN0LWl2eS1icmlkZ2UucGF0Y2gKK1BhdGNoMDUyOiBnZGItdGVzdC1p dnktYnJpZGdlLnBhdGNoCiAKICMgSGFjayBmb3IgcHJvcGVyIFBJRSBydW4gb2YgdGhlIHRlc3Rz dWl0ZS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNjM6IGdkYi1ydW50ZXN0LXBpZS1vdmVycmlkZS5w YXRjaAotCi0jIFByaW50IHJlYXNvbnMgZm9yIGZhaWxlZCBhdHRhY2gvc3Bhd24gaW5jbC4gU0VM aW51eCBkZW55X3B0cmFjZSAoQlogNzg2ODc4KS4KLSM9cHVzaCtqYW4KLVBhdGNoMDY0OiBnZGIt YXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCitQYXRjaDA1MzogZ2RiLXJ1bnRlc3QtcGll LW92ZXJyaWRlLnBhdGNoCiAKICMgV29ya2Fyb3VuZCBQUiBsaWJjLzE0MTY2IGZvciBpbmZlcmlv ciBjYWxscyBvZiBzdHJzdHIuCiAjPWZlZG9yYXRlc3Q6IENvbXBhdGliaWxpdHkgd2l0aCBSSEVM cyAodW5jaGVja2VkIHdoaWNoIG9uZXMpLgotUGF0Y2gwNjU6IGdkYi1nbGliYy1zdHJzdHItd29y a2Fyb3VuZC5wYXRjaAorUGF0Y2gwNTQ6IGdkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRj aAogCiAjIEluY2x1ZGUgdGVzdGNhc2UgZm9yIGBVbmFibGUgdG8gc2VlIGEgdmFyaWFibGUgaW5z aWRlIGEgbW9kdWxlIChYTEYpJyAoQlogODIzNzg5KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNjY6 IGdkYi1yaGVsNS45LXRlc3RjYXNlLXhsZi12YXItaW5zaWRlLW1vZC5wYXRjaAorUGF0Y2gwNTU6 IGdkYi1yaGVsNS45LXRlc3RjYXNlLXhsZi12YXItaW5zaWRlLW1vZC5wYXRjaAogCiAjIFRlc3Rj YXNlIGZvciBgU2V0dGluZyBzb2xpYi1hYnNvbHV0ZS1wcmVmaXggYnJlYWtzIHZEU08nIChCWiA4 MTgzNDMpLgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA2NzogZ2RiLXJoYnotODE4MzQzLXNldC1zb2xp Yi1hYnNvbHV0ZS1wcmVmaXgtdGVzdGNhc2UucGF0Y2gKK1BhdGNoMDU2OiBnZGItcmhiei04MTgz NDMtc2V0LXNvbGliLWFic29sdXRlLXByZWZpeC10ZXN0Y2FzZS5wYXRjaAogCiAjIEltcG9ydCBy ZWdyZXNzaW9uIHRlc3QgZm9yIGBnZGIvZmluZHZhci5jOjQxNzogaW50ZXJuYWwtZXJyb3I6CiAj IHJlYWRfdmFyX3ZhbHVlOiBBc3NlcnRpb24gYGZyYW1lJyBmYWlsZWQuJyAoUkggQlogOTQ3NTY0 KSBmcm9tIFJIRUwgNi41LgogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA2ODogZ2RiLXJoYno5NDc1NjQt ZmluZHZhci1hc3NlcnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNlLnBhdGNoCi0KLSMgRml4IGNy YXNoIG9mIC1yZWFkbm93IC91c3IvbGliL2RlYnVnL3Vzci9iaW4vZ25hdGJpbmQuZGVidWcgKEJa IDEwNjkyMTEpLgotIz1wdXNoK2phbgotUGF0Y2gwNjk6IGdkYi1nbmF0LWR3YXJmLWNyYXNoLTNv ZjMucGF0Y2gKK1BhdGNoMDU3OiBnZGItcmhiejk0NzU2NC1maW5kdmFyLWFzc2VydGlvbi1mcmFt ZS1mYWlsZWQtdGVzdGNhc2UucGF0Y2gKIAogIyBGaXggJ21lbW9yeSBsZWFrIGluIGluZnB5X3Jl YWRfbWVtb3J5KCknIChSSCBCWiAxMDA3NjE0KQogIz1mZWRvcmF0ZXN0Ci1QYXRjaDA3MDogZ2Ri LXJoYnoxMDA3NjE0LW1lbWxlYWstaW5mcHlfcmVhZF9tZW1vcnktdGVzdC5wYXRjaAorUGF0Y2gw NTg6IGdkYi1yaGJ6MTAwNzYxNC1tZW1sZWFrLWluZnB5X3JlYWRfbWVtb3J5LXRlc3QucGF0Y2gK IAogIyBGaXggJ2dkYiBnaXZlcyBoaWdobHkgbWlzbGVhZGluZyBlcnJvciB3aGVuIGRlYnVnaW5m byBwa2cgaXMgcHJlc2VudCwKICMgYnV0IG5vdCBjb3JyZXNwb25kaW5nIGJpbmFyeSBwa2cnIChS SCBCWiA5ODExNTQpLgogIz1wdXNoK2phbgotUGF0Y2gwNzE6IGdkYi02LjYtYnVpbGRpZC1sb2Nh dGUtbWlzbGVhZGluZy13YXJuaW5nLW1pc3NpbmctZGVidWdpbmZvLXJoYno5ODExNTQucGF0Y2gK LQotIz1mZWRvcmF0ZXN0Ci1QYXRjaDA3MjogZ2RiLWFyY2hlci12bGEtdGVzdHMucGF0Y2gKLQot Iz1mZWRvcmF0ZXN0Ci1QYXRjaDA3MzogZ2RiLXZsYS1pbnRlbC10ZXN0cy5wYXRjaAotCi0jIENv bnRpbnVlIGJhY2t0cmFjZSBldmVuIGlmIGEgZnJhbWUgZmlsdGVyIHRocm93cyBhbiBleGNlcHRp b24gKFBoaWwgTXVsZG9vbikuCi0jPXB1c2gKLVBhdGNoMDc0OiBnZGItYnRyb2J1c3QucGF0Y2gK K1BhdGNoMDU5OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLW1pc2xlYWRpbmctd2FybmluZy1taXNz aW5nLWRlYnVnaW5mby1yaGJ6OTgxMTU0LnBhdGNoCiAKICMgRGlzcGxheSBGb3J0cmFuIHN0cmlu Z3MgaW4gYmFja3RyYWNlcy4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNzU6IGdkYi1mb3J0cmFuLWZy YW1lLXN0cmluZy5wYXRjaAorUGF0Y2gwNjA6IGdkYi1mb3J0cmFuLWZyYW1lLXN0cmluZy5wYXRj aAogCiAjIFRlc3RjYXNlIGZvciAnW1NBUF0gUmVjdXJzaXZlIGRsb3BlbiBjYXVzZXMgU0FQIEhB TkEgaW5zdGFsbGVyIHRvCiAjIGNyYXNoLicgKFJIIEJaIDExNTYxOTIpLgogIz1mZWRvcmF0ZXN0 Ci1QYXRjaDA3NjogZ2RiLXJoYnoxMTU2MTkyLXJlY3Vyc2l2ZS1kbG9wZW4tdGVzdC5wYXRjaAot Ci0jIEZpeCBqaXQtcmVhZGVyLmggZm9yIG11bHRpLWxpYi4KLSM9cHVzaCtqYW4KLVBhdGNoMDc3 OiBnZGItaml0LXJlYWRlci1tdWx0aWxpYi5wYXRjaAorUGF0Y2gwNjE6IGdkYi1yaGJ6MTE1NjE5 Mi1yZWN1cnNpdmUtZGxvcGVuLXRlc3QucGF0Y2gKIAogIyBGaXggJ2BjYXRjaCBzeXNjYWxsJyBk b2Vzbid0IHdvcmsgZm9yIHBhcmVudCBhZnRlciBgZm9yaycgaXMgY2FsbGVkJwogIyAoUGhpbGlw cGUgV2Fyb3F1aWVycywgUkggQlogMTE0OTIwNSkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDc4OiBn ZGItcmhiejExNDkyMDUtY2F0Y2gtc3lzY2FsbC1hZnRlci1mb3JrLXRlc3QucGF0Y2gKK1BhdGNo MDYyOiBnZGItcmhiejExNDkyMDUtY2F0Y2gtc3lzY2FsbC1hZnRlci1mb3JrLXRlc3QucGF0Y2gK IAogIyBGaXggJ2JhY2twb3J0IEdEQiA3LjQgZml4IHRvIFJIRUwgNi42IEdEQicgW09yaWdpbmFs IFNvdXJjZXdhcmUgYnVnCiAjIGRlc2NyaXB0aW9uOiAnQysrIChhbmQgb2JqYyk6IEludGVybmFs IGVycm9yIG9uIHVucXVhbGlmaWVkIG5hbWUKICMgcmUtc2V0JywgUFIgMTE2NTddIChSSCBCWiAx MTg2NDc2KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwNzk6IGdkYi1yaGJ6MTE4NjQ3Ni1pbnRlcm5h bC1lcnJvci11bnF1YWxpZmllZC1uYW1lLXJlLXNldC10ZXN0LnBhdGNoCitQYXRjaDA2MzogZ2Ri LXJoYnoxMTg2NDc2LWludGVybmFsLWVycm9yLXVucXVhbGlmaWVkLW5hbWUtcmUtc2V0LXRlc3Qu cGF0Y2gKIAogIyBUZXN0ICdpbmZvIHR5cGUtcHJpbnRlcnMnIFB5dGhvbiBlcnJvciAoUkggQlog MTM1MDQzNikuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDgwOiBnZGItcmhiejEzNTA0MzYtdHlwZS1w cmludGVycy1lcnJvci5wYXRjaAorUGF0Y2gwNjQ6IGdkYi1yaGJ6MTM1MDQzNi10eXBlLXByaW50 ZXJzLWVycm9yLnBhdGNoCiAKICMgRml4ICdbcHBjNjRdIGFuZCBbczM5MHhdIHdyb25nIHByb2xv Z3VlIHNraXAgb24gLU8yIC1nIGNvZGUnIChKYW4KICMgS3JhdG9jaHZpbCwgUkggQlogMTA4NDQw NCkuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDgxOiBnZGItcmhiejEwODQ0MDQtcHBjNjQtczM5MHgt d3JvbmctcHJvbG9ndWUtc2tpcC1PMi1nLTNvZjMucGF0Y2gKLQotIyBOZXZlciBraWxsIFBJRCBv bjogZ2RiIGV4ZWMgUElEIChKYW4gS3JhdG9jaHZpbCwgUkggQlogMTIxOTc0NykuCi0jPXB1c2gr amFuCi1QYXRjaDA4MjogZ2RiLWJ6MTIxOTc0Ny1hdHRhY2gta2lsbHMucGF0Y2gKK1BhdGNoMDY1 OiBnZGItcmhiejEwODQ0MDQtcHBjNjQtczM5MHgtd3JvbmctcHJvbG9ndWUtc2tpcC1PMi1nLTNv ZjMucGF0Y2gKIAogIyBGb3JjZSBsaWJuY3Vyc2VzdyBvdmVyIGxpYm5jdXJzZXMgdG8gbWF0Y2gg dGhlIGluY2x1ZGVzIChSSCBCWiAxMjcwNTM0KS4KICM9cHVzaCtqYW4KLVBhdGNoMDgzOiBnZGIt ZmVkb3JhLWxpYm5jdXJzZXN3LnBhdGNoCitQYXRjaDA2NjogZ2RiLWZlZG9yYS1saWJuY3Vyc2Vz dy5wYXRjaAogCiAjIFRlc3QgY2xmbHVzaG9wdCBpbnN0cnVjdGlvbiBkZWNvZGUgKGZvciBSSCBC WiAxMjYyNDcxKS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwODQ6IGdkYi1vcGNvZGVzLWNsZmx1c2hv cHQtdGVzdC5wYXRjaAotCi0jIFtyaGVsNl0gRFRTIGJhY2t3YXJkIFB5dGhvbiBjb21wYXRpYmls aXR5IEFQSSAoQlogMTAyMDAwNCwgUGhpbCBNdWxkb29uKS4KLSM9ZmVkb3JhCi1QYXRjaDA4NTog Z2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoCitQYXRjaDA2NzogZ2RiLW9wY29kZXMt Y2xmbHVzaG9wdC10ZXN0LnBhdGNoCiAKICMgW1NDTF0gU2tpcCBkZXByZWNhdGVkIC5nZGJfaW5k ZXggd2FybmluZyBmb3IgUmVkIEhhdCBidWlsdCBmaWxlcyAoQlogOTUzNTg1KS4KICM9cHVzaCtq YW4KLVBhdGNoMDg2OiBnZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS1zY2wucGF0Y2gKLQotIyBN YWtlIHRoZSBHREIgcXVpdCBwcm9jZXNzaW5nIG5vbi1hYm9ydGFibGUgdG8gY2xlYW51cCBldmVy eXRoaW5nIHByb3Blcmx5LgotIz1mZWRvcmE6IEl0IHdhcyB1c2VmdWwgb25seSBhZnRlciBnZGIt Ni44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2ggLgotUGF0Y2gwODc6IGdk Yi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKK1BhdGNoMDY4OiBnZGItNi42LWJ1aWxkaWQt bG9jYXRlLXJwbS1zY2wucGF0Y2gKIAogIyBbYWFyY2g2NF0gRml4IGhhcmR3YXJlIHdhdGNocG9p bnRzIChSSCBCWiAxMjYxNTY0KS4KICM9ZmVkb3JhdGVzdAotUGF0Y2gwODg6IGdkYi1yaGJ6MTI2 MTU2NC1hYXJjaDY0LWh3LXdhdGNocG9pbnQtdGVzdC5wYXRjaAorUGF0Y2gwNjk6IGdkYi1yaGJ6 MTI2MTU2NC1hYXJjaDY0LWh3LXdhdGNocG9pbnQtdGVzdC5wYXRjaAogCiAjIEFkZCBtZXNzYWdl cyBzdWdnZXN0aW5nIG1vcmUgcmVjZW50IFJIRUwgZ2Ric2VydmVyIChSSCBCWiAxMzIxMTE0KS4K ICM9ZmVkb3JhCi1QYXRjaDA4OTogZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKK1BhdGNoMDcw OiBnZGItY29udGFpbmVyLXJoLXBrZy5wYXRjaAogCiAjIE5ldyB0ZXN0IGZvciBQeXRob24gIkNh bm5vdCBsb2NhdGUgb2JqZWN0IGZpbGUgZm9yIGJsb2NrIiAoZm9yIFJIIEJaIDEzMjU3OTUpLgog Iz1mZWRvcmF0ZXN0Ci1QYXRjaDA5MDogZ2RiLXJoYnoxMzI1Nzk1LWZyYW1lZmlsdGVycy10ZXN0 LnBhdGNoCitQYXRjaDA3MTogZ2RiLXJoYnoxMzI1Nzk1LWZyYW1lZmlsdGVycy10ZXN0LnBhdGNo CiAKICMgW2R0cytlbDddIFt4ODYqXSBCdW5kbGUgbGludXhfcGVyZi5oIGZvciBsaWJpcHQgKFJI IEJaIDEyNTY1MTMpLgogIz1mZWRvcmEKLVBhdGNoMDkxOiBnZGItbGludXhfcGVyZi1idW5kbGUu cGF0Y2gKK1BhdGNoMDcyOiBnZGItbGludXhfcGVyZi1idW5kbGUucGF0Y2gKIAogIyBGaXggZ2Ri LWhlYWRsZXNzIC91c3IvYmluLyBleGVjdXRhYmxlcyAoQlogMTM5MDI1MSkuCiAjCkBAIC0zNzQs NTcgKzMwNCw3MSBAQCBQYXRjaDA5MTogZ2RiLWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoCiAjCiAj ICAgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0NoYW5nZXMvTWluaW1hbF9HREJfaW5f YnVpbGRyb290CiAjPWZlZG9yYQotUGF0Y2gwOTI6IGdkYi1saWJleGVjLWFkZC1pbmRleC5wYXRj aAorUGF0Y2gwNzM6IGdkYi1saWJleGVjLWFkZC1pbmRleC5wYXRjaAogCiAjIE5ldyB0ZXN0Y2Fz ZSBmb3I6IEZpeCA8dGFiPi1jb21wbGV0aW9uIGNyYXNoIChHYXJ5IEJlbnNvbiwgUkggQlogMTM5 ODM4NykuCiAjPWZlZG9yYXRlc3QKLVBhdGNoMDkzOiBnZGItcmhiejEzOTgzODctdGFiLWNyYXNo LXRlc3QucGF0Y2gKLQotIyBQeXRob24gcGF0Y2hlcyBvZjogaHR0cDovL3NvdXJjZXdhcmUub3Jn L2dkYi93aWtpL1Byb2plY3RBcmNoZXIKLSM9cHVzaAotUGF0Y2gwOTQ6IGdkYi1hcmNoZXIucGF0 Y2gKLQotIyBSZXZlcnQgdXBzdHJlYW0gY29tbWl0IDQ2OTQxMmRkOWNjYzRkZTU4NzRmZDMyOTli MTA1ODMzZjM2YjM0Y2QKLVBhdGNoMDk1OiBnZGItdmxhLWludGVsLWZpeC1wcmludC1jaGFyLWFy cmF5LnBhdGNoCitQYXRjaDA3NDogZ2RiLXJoYnoxMzk4Mzg3LXRhYi1jcmFzaC10ZXN0LnBhdGNo CiAKICMgW3MzOTB4XSBCYWNrcG9ydCBhcmNoMTIgaW5zdHJ1Y3Rpb25zIGRlY29kaW5nIChSSCBC WiAxNTUzMTA0KS4KICMgPWZlZG9yYXRlc3QKLVBhdGNoMDk2OiBnZGItcmhiejE1NTMxMDQtczM5 MHgtYXJjaDEyLXRlc3QucGF0Y2gKK1BhdGNoMDc1OiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJj aDEyLXRlc3QucGF0Y2gKIAogIyBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBhZGFfZm9sZF9uYW1l LnBhdGNoIChSSCBCWiAxOTA1OTk2KQogIyBVcHN0cmVhbSBwYXRjaCBwcm9wb3NhbDogaHR0cHM6 Ly9zb3VyY2V3YXJlLm9yZy9waXBlcm1haWwvZ2RiLXBhdGNoZXMvMjAyMC1EZWNlbWJlci8xNzM5 MzUuaHRtbAogIyA9ZmVkb3JhdGVzdAotUGF0Y2gwOTc6IGdkYi1yaGJ6MTkwNTk5Ni1maXgtb2Zm LWJ5LW9uZS1lcnJvci1pbi1hZGFfZm9sZF9uYW1lLnBhdGNoCitQYXRjaDA3NjogZ2RiLXJoYnox OTA1OTk2LWZpeC1vZmYtYnktb25lLWVycm9yLWluLWFkYV9mb2xkX25hbWUucGF0Y2gKIAogIyBC YWNrcG9ydCBmaXggZm9yIGxpYnN0ZGMrKyBhc3NlcnQgd2hlbiBwZXJmb3JtaW5nIHRhYiBjb21w bGV0aW9uCiAjIChSSCBCWiAxOTEyOTg1KS4KLVBhdGNoMDk4OiBnZGItcmhiejE5MTI5ODUtbGli c3RkYysrLWFzc2VydC5wYXRjaAotCi0jIEJhY2twb3J0IGZpeCBmb3IgcmF3aGlkZSBidWlsZCBl cnJvciAoUkggQlogMTkzMDUyOCkuCi1QYXRjaDA5OTogZ2RiLXJoYnoxOTMwNTI4LWZpeC1nbnVs aWItYnVpbGQtZXJyb3IucGF0Y2gKLQotIyBbYWFyY2g2NF0gQmFja3BvcnQgZml4IGZvciBhYXJj aDY0LWxpbnV4LWh3LXBvaW50LmMgYnVpbGQgcHJvYmxlbQotIyAoUkggQlogMTkzMjY0NSkuCi1Q YXRjaDEwMDogZ2RiLXJoYnoxOTMyNjQ1LWFhcmNoNjQtcHRyYWNlLWhlYWRlci1vcmRlci5wYXRj aAorUGF0Y2gwNzc6IGdkYi1yaGJ6MTkxMjk4NS1saWJzdGRjKystYXNzZXJ0LnBhdGNoCiAKICMg QmFja3BvcnQgZml4IGZvciBmcmFtZV9pZF9wIGFzc2VydGlvbiBmYWlsdXJlIChSSCBCWiAxOTA5 OTAyKS4KLVBhdGNoMTAxOiBnZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMS5wYXRj aAorUGF0Y2gwNzg6IGdkYi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCiAK ICMgQmFja3BvcnQgcGF0Y2ggIzIgd2hpY2ggZml4ZXMgYSBmcmFtZV9pZF9wIGFzc2VydGlvbiBm YWlsdXJlIChSSCBCWiAxOTA5OTAyKS4KLVBhdGNoMTAyOiBnZGItcmhiejE5MDk5MDItZnJhbWVf aWRfcC1hc3NlcnQtMi5wYXRjaAorUGF0Y2gwNzk6IGdkYi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9w LWFzc2VydC0yLnBhdGNoCiAKICMgQmFja3BvcnQgY2hhbmdlIHdoaWNoIGZpeGVzIGdkYnNlcnZl ciB0ZXN0aW5nIGhhbmcgb24gZjM0IGFuZCByYXdoaWRlLgotUGF0Y2gxMDM6IGdkYi1yaGJ6MTk0 MTA4MC1maXgtZ2Ric2VydmVyLWhhbmcucGF0Y2gKK1BhdGNoMDgwOiBnZGItcmhiejE5NDEwODAt Zml4LWdkYnNlcnZlci1oYW5nLnBhdGNoCiAKICMgQmFja3BvcnQgIkRpc2FibGUgYnJhY2tldGVk IHBhc3RlIG1vZGUgaW4gR0RCIHRlc3RzIgogIyAoVG9tIFRyb21leSkKLVBhdGNoMTA0OiB0ZXN0 aW5nLWN1c3RvbS1pbnB1dHJjLnBhdGNoCi0KLSMgQmFja3BvcnQgIkhhbmRsZSBEV19UQUdfdHlw ZV91bml0IGluIHByb2Nlc3Nfc3ltdGFiX3VuaXQiCi0jIChUb20gZGUgVnJpZXMpCi1QYXRjaDEw NTogcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdC10eXBlLXVuaXQucGF0Y2gKK1BhdGNoMDgxOiB0 ZXN0aW5nLWN1c3RvbS1pbnB1dHJjLnBhdGNoCiAKICMgQmFja3BvcnQgIlNhdmUvcmVzdG9yZSBm aWxlIG9mZnNldCB3aGlsZSByZWFkaW5nIG5vdGVzIGluIGNvcmUgZmlsZSIKICMgKEtlaXRoIFNl aXR6LCBSSEJaIDE5MzEzNDQpCi1QYXRjaDEwNjogZ2RiLXJoYnoxOTMxMzQ0LWJmZF9zZWVrLWVs Zl9yZWFkX25vdGVzLnBhdGNoCitQYXRjaDA4MjogZ2RiLXJoYnoxOTMxMzQ0LWJmZF9zZWVrLWVs Zl9yZWFkX25vdGVzLnBhdGNoCisKKyMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNz J3MgY29tbWl0IHdoaWNoIGNsZWFucyB1cAorIyBhcnJheS9zdHJpbmcgZXhwcmVzc2lvbiBldmFs dWF0aW9uLgorUGF0Y2gwODM6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5 LWV4cHJlc3Npb24tZXZhbHVhdGlvbi5wYXRjaAorCisjIFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRy ZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCBtb3ZlcyBGb3J0cmFuCisjIGV4cHJlc3Npb24gaGFu ZGxpbmcgdG8gZi1sYW5nLmMuCitQYXRjaDA4NDogZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9ydHJh bi1leHByLWhhbmRsaW5nLnBhdGNoCisKKyMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJn ZXNzJ3MgY29tbWl0IHdoaWNoIGVsaW1pbmF0ZXMgdW5kZXNpcmFibGUKKyMgd2hpdGVzcGFjZSB3 aGVuIHByaW50aW5nIGFycmF5cy4KK1BhdGNoMDg1OiBnZGItcmhiejE5NjQxNjctZm9ydHJhbi13 aGl0ZXNwYWNlX2FycmF5LnBhdGNoCisKKyMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJn ZXNzJ3MgY29tbWl0IHdoaWNoIGNoYW5nZXMgZW51bQorIyByYW5nZV90eXBlIGludG8gYSBiaXQg ZmllbGQgZW51bS4KK1BhdGNoMDg2OiBnZGItcmhiejE5NjQxNjctY29udmVydC1lbnVtLXJhbmdl X3R5cGUucGF0Y2gKKworIyBbZm9ydHJhbl0gQmFja3BvcnQgQW5kcmV3IEJ1cmdlc3MncyBjb21t aXQgd2hpY2ggcmVuYW1lcyBlbnVtCisjIHJhbmdlX3R5cGUgdG8gZW51bSByYW5nZV9mbGFnLgor UGF0Y2gwODc6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXJhbmdlX3R5cGUtdG8tcmFuZ2VfZmxh Zy5wYXRjaAorCisjIFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3 aGljaCBhZGRzIHN1cHBvcnQKKyMgZm9yIGFycmF5IHN0cmlkZXMgaW4gZXhwcmVzc2lvbnMuCitQ YXRjaDA4ODogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc3RyaWRlcy1pbi1leHByZXNz aW9ucy5wYXRjaAorCisjIFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1p dCBmb3IgRm9ydHJhbiBhcnJheQorIyBzbGljZSBzdXBwb3J0CitQYXRjaDA4OTogZ2RiLXJoYnox OTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaAorCisjIFtmb3J0cmFu XSBCYWNrcG9ydCBTaW1vbiBNYXJjaGkncyBjb21taXQgd2hpY2ggZml4ZXMgYSAzMi1iaXQgYnVp bGQKKyMgcHJvYmxlbSBpbiBnZGIvZi1sYW5nLmMuCitQYXRjaDA5MDogZ2RiLXJoYnoxOTY0MTY3 LWZvcnRyYW4tZml4LXR5cGUtZm9ybWF0LW1pc21hdGNoLWluLWYtbGFuZy5jLnBhdGNoCiAKCmRp ZmYgLS1naXQgYS9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5wYXRjaC5pbmNs dWRlCmluZGV4IDFiOTY2ZWYuLjNmNDBiYjUgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5wYXRjaC5p bmNsdWRlCisrKyBiL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCkBAIC04OCwxOSArODgsMyBAQAog JXBhdGNoMDg4IC1wMQogJXBhdGNoMDg5IC1wMQogJXBhdGNoMDkwIC1wMQotJXBhdGNoMDkxIC1w MQotJXBhdGNoMDkyIC1wMQotJXBhdGNoMDkzIC1wMQotJXBhdGNoMDk0IC1wMQotJXBhdGNoMDk1 IC1wMQotJXBhdGNoMDk2IC1wMQotJXBhdGNoMDk3IC1wMQotJXBhdGNoMDk4IC1wMQotJXBhdGNo MDk5IC1wMQotJXBhdGNoMTAwIC1wMQotJXBhdGNoMTAxIC1wMQotJXBhdGNoMTAyIC1wMQotJXBh dGNoMTAzIC1wMQotJXBhdGNoMTA0IC1wMQotJXBhdGNoMTA1IC1wMQotJXBhdGNoMTA2IC1wMQoK ZGlmZiAtLWdpdCBhL19naXRfdXBzdHJlYW1fY29tbWl0IGIvX2dpdF91cHN0cmVhbV9jb21taXQK aW5kZXggOGYyYjc5Ny4uMDJjMWEwZiAxMDA2NDQKLS0tIGEvX2dpdF91cHN0cmVhbV9jb21taXQK KysrIGIvX2dpdF91cHN0cmVhbV9jb21taXQKQEAgLTEgKzEgQEAKLTYwNmUzZmQxNDdlZDlhMDBk ZjE2NWU0NmYzMGZlNWM0NmRjZGEzNDUKK2NlMzVkNzE2M2U3NzliMTMyMTA1OGIyMmYwMDVjNzBj ZTE1MjRiMjUKCmRpZmYgLS1naXQgYS9fcGF0Y2hfb3JkZXIgYi9fcGF0Y2hfb3JkZXIKaW5kZXgg ODVhNGE4MS4uN2I4MWRmNSAxMDA2NDQKLS0tIGEvX3BhdGNoX29yZGVyCisrKyBiL19wYXRjaF9v cmRlcgpAQCAtMSw5ICsxLDUgQEAKIGdkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0 Y2gKLWdkYi12bGEtaW50ZWwtZm9ydHJhbi1zdHJpZGVzLnBhdGNoCi1nZGItdmxhLWludGVsLXN0 cmluZ2J0LWZpeC5wYXRjaAogZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKLWdkYi02LjMt dGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKLWdkYi02LjMtdGVzdC1zZWxmLTIwMDUwMTEwLnBhdGNo CiBnZGItNi4zLXRlc3QtZHRvcmZpeC0yMDA1MDEyMS5wYXRjaAogZ2RiLTYuMy10ZXN0LW1vdmVk aXItMjAwNTAxMjUucGF0Y2gKIGdkYi02LjMtdGhyZWFkZWQtd2F0Y2hwb2ludHMyLTIwMDUwMjI1 LnBhdGNoCkBAIC0xNSw3ICsxMSw2IEBAIGdkYi02LjUtQkVBLXRlc3RzdWl0ZS5wYXRjaAogZ2Ri LTYuNS1sYXN0LWFkZHJlc3Mtc3BhY2UtYnl0ZS10ZXN0LnBhdGNoCiBnZGItNi41LXJlYWRsaW5l LWxvbmctbGluZS1jcmFzaC10ZXN0LnBhdGNoCiBnZGItNi41LWJ6MjE4Mzc5LXBwYy1zb2xpYi10 cmFtcG9saW5lLXRlc3QucGF0Y2gKLWdkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1s b29rdXAtbG9jay1maXgucGF0Y2gKIGdkYi02LjUtYnoxMDk5MjEtRFdfQVRfZGVjbF9maWxlLXRl c3QucGF0Y2gKIGdkYi02LjMtYnoxNDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNoCiBnZGIt Ni4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3QucGF0Y2gKQEAgLTQxLDE2ICszNiwx MSBAQCBnZGItNi41LXNlY3Rpb24tbnVtLWZpeHVwLXRlc3QucGF0Y2gKIGdkYi02LjgtYno0NjY5 MDEtYmFja3RyYWNlLWZ1bGwtcHJlbGlua2VkLnBhdGNoCiBnZGItc2ltdWx0YW5lb3VzLXN0ZXAt cmVzdW1lLWJyZWFrcG9pbnQtdGVzdC5wYXRjaAogZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcu cGF0Y2gKLWdkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCiBnZGItY2NhY2hlLXdv cmthcm91bmQucGF0Y2gKLWdkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaAotZ2RiLWFyY2hlci1w aWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKIGdkYi1saW5lbm8tbWFrZXVwLXRlc3QucGF0 Y2gKIGdkYi1wcGMtcG93ZXI3LXRlc3QucGF0Y2gKLWdkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fy b3VuZC5wYXRjaAogZ2RiLWFyY2hlci1uZXh0LW92ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2gKIGdk Yi1iejYwMTg4Ny1kd2FyZjQtcmgtdGVzdC5wYXRjaAotZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1j b3JlLWFzLWFyZy5wYXRjaAogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmth cm91bmQucGF0Y2gKIGdkYi10ZXN0LWJ0LWNmaS13aXRob3V0LWRpZS5wYXRjaAogZ2RiLWJ6NjM0 MTA4LXNvbGliX2FkZHJlc3MucGF0Y2gKQEAgLTYxLDQ2ICs1MSw0MCBAQCBnZGItcGh5c25hbWUt cHIxMTczNC10ZXN0LnBhdGNoCiBnZGItcGh5c25hbWUtcHIxMjI3My10ZXN0LnBhdGNoCiBnZGIt dGVzdC1pdnktYnJpZGdlLnBhdGNoCiBnZGItcnVudGVzdC1waWUtb3ZlcnJpZGUucGF0Y2gKLWdk Yi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKIGdkYi1nbGliYy1zdHJzdHItd29ya2Fy b3VuZC5wYXRjaAogZ2RiLXJoZWw1LjktdGVzdGNhc2UteGxmLXZhci1pbnNpZGUtbW9kLnBhdGNo CiBnZGItcmhiei04MTgzNDMtc2V0LXNvbGliLWFic29sdXRlLXByZWZpeC10ZXN0Y2FzZS5wYXRj aAogZ2RiLXJoYno5NDc1NjQtZmluZHZhci1hc3NlcnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNl LnBhdGNoCi1nZGItZ25hdC1kd2FyZi1jcmFzaC0zb2YzLnBhdGNoCiBnZGItcmhiejEwMDc2MTQt bWVtbGVhay1pbmZweV9yZWFkX21lbW9yeS10ZXN0LnBhdGNoCiBnZGItNi42LWJ1aWxkaWQtbG9j YXRlLW1pc2xlYWRpbmctd2FybmluZy1taXNzaW5nLWRlYnVnaW5mby1yaGJ6OTgxMTU0LnBhdGNo Ci1nZGItYXJjaGVyLXZsYS10ZXN0cy5wYXRjaAotZ2RiLXZsYS1pbnRlbC10ZXN0cy5wYXRjaAot Z2RiLWJ0cm9idXN0LnBhdGNoCiBnZGItZm9ydHJhbi1mcmFtZS1zdHJpbmcucGF0Y2gKIGdkYi1y aGJ6MTE1NjE5Mi1yZWN1cnNpdmUtZGxvcGVuLXRlc3QucGF0Y2gKLWdkYi1qaXQtcmVhZGVyLW11 bHRpbGliLnBhdGNoCiBnZGItcmhiejExNDkyMDUtY2F0Y2gtc3lzY2FsbC1hZnRlci1mb3JrLXRl c3QucGF0Y2gKIGdkYi1yaGJ6MTE4NjQ3Ni1pbnRlcm5hbC1lcnJvci11bnF1YWxpZmllZC1uYW1l LXJlLXNldC10ZXN0LnBhdGNoCiBnZGItcmhiejEzNTA0MzYtdHlwZS1wcmludGVycy1lcnJvci5w YXRjaAogZ2RiLXJoYnoxMDg0NDA0LXBwYzY0LXMzOTB4LXdyb25nLXByb2xvZ3VlLXNraXAtTzIt Zy0zb2YzLnBhdGNoCi1nZGItYnoxMjE5NzQ3LWF0dGFjaC1raWxscy5wYXRjaAogZ2RiLWZlZG9y YS1saWJuY3Vyc2Vzdy5wYXRjaAogZ2RiLW9wY29kZXMtY2xmbHVzaG9wdC10ZXN0LnBhdGNoCi1n ZGItZHRzLXJoZWw2LXB5dGhvbi1jb21wYXQucGF0Y2gKIGdkYi02LjYtYnVpbGRpZC1sb2NhdGUt cnBtLXNjbC5wYXRjaAotZ2RiLTYuOC1xdWl0LW5ldmVyLWFib3J0cy5wYXRjaAogZ2RiLXJoYnox MjYxNTY0LWFhcmNoNjQtaHctd2F0Y2hwb2ludC10ZXN0LnBhdGNoCiBnZGItY29udGFpbmVyLXJo LXBrZy5wYXRjaAogZ2RiLXJoYnoxMzI1Nzk1LWZyYW1lZmlsdGVycy10ZXN0LnBhdGNoCiBnZGIt bGludXhfcGVyZi1idW5kbGUucGF0Y2gKIGdkYi1saWJleGVjLWFkZC1pbmRleC5wYXRjaAogZ2Ri LXJoYnoxMzk4Mzg3LXRhYi1jcmFzaC10ZXN0LnBhdGNoCi1nZGItYXJjaGVyLnBhdGNoCi1nZGIt dmxhLWludGVsLWZpeC1wcmludC1jaGFyLWFycmF5LnBhdGNoCiBnZGItcmhiejE1NTMxMDQtczM5 MHgtYXJjaDEyLXRlc3QucGF0Y2gKIGdkYi1yaGJ6MTkwNTk5Ni1maXgtb2ZmLWJ5LW9uZS1lcnJv ci1pbi1hZGFfZm9sZF9uYW1lLnBhdGNoCiBnZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFzc2Vy dC5wYXRjaAotZ2RiLXJoYnoxOTMwNTI4LWZpeC1nbnVsaWItYnVpbGQtZXJyb3IucGF0Y2gKLWdk Yi1yaGJ6MTkzMjY0NS1hYXJjaDY0LXB0cmFjZS1oZWFkZXItb3JkZXIucGF0Y2gKIGdkYi1yaGJ6 MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCiBnZGItcmhiejE5MDk5MDItZnJhbWVf aWRfcC1hc3NlcnQtMi5wYXRjaAogZ2RiLXJoYnoxOTQxMDgwLWZpeC1nZGJzZXJ2ZXItaGFuZy5w YXRjaAogdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaAotcHJvY2Vzc19wc3ltdGFiX2NvbXBf dW5pdC10eXBlLXVuaXQucGF0Y2gKIGdkYi1yaGJ6MTkzMTM0NC1iZmRfc2Vlay1lbGZfcmVhZF9u b3Rlcy5wYXRjaAorZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXktZXhwcmVz c2lvbi1ldmFsdWF0aW9uLnBhdGNoCitnZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFuLWV4cHIt aGFuZGxpbmcucGF0Y2gKK2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXdoaXRlc3BhY2VfYXJyYXku cGF0Y2gKK2dkYi1yaGJ6MTk2NDE2Ny1jb252ZXJ0LWVudW0tcmFuZ2VfdHlwZS5wYXRjaAorZ2Ri LXJoYnoxOTY0MTY3LWZvcnRyYW4tcmFuZ2VfdHlwZS10by1yYW5nZV9mbGFnLnBhdGNoCitnZGIt cmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Npb25zLnBhdGNoCitn ZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zbGljZXMtYXQtcHJvbXB0LnBhdGNoCitnZGIt cmhiejE5NjQxNjctZm9ydHJhbi1maXgtdHlwZS1mb3JtYXQtbWlzbWF0Y2gtaW4tZi1sYW5nLmMu cGF0Y2gKCmRpZmYgLS1naXQgYS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoIGIvZ2Ri LTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggY2RmZmE0My4uMDAwMDAwMAotLS0gYS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMjAyNSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlk QGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1Ympl Y3Q6IGdkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKLQotOzsgVlNZU0NBTEwgYW5kIFBJ RQotOzs9ZmVkb3JhdGVzdAotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0 dGFjaC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5j Ci1AQCAtMCwwICsxLDIwIEBACi0rLyogVGhpcyBwcm9ncmFtIGlzIGludGVuZGVkIHRvIGJlIHN0 YXJ0ZWQgb3V0c2lkZSBvZiBnZGIsIGFuZCB0aGVuCi0rICAgYXR0YWNoZWQgdG8gYnkgZ2RiLiAg VGh1cywgaXQgc2ltcGx5IHNwaW5zIGluIGEgbG9vcC4gIFRoZSBsb29wCi0rICAgaXMgZXhpdGVk IHdoZW4gJiBpZiB0aGUgdmFyaWFibGUgJ3Nob3VsZF9leGl0JyBpcyBub24temVyby4gIChJdAot KyAgIGlzIGluaXRpYWxpemVkIHRvIHplcm8gaW4gdGhpcyBwcm9ncmFtLCBzbyB0aGUgbG9vcCB3 aWxsIG5ldmVyCi0rICAgZXhpdCB1bmxlc3MvdW50aWwgZ2RiIHNldHMgdGhlIHZhcmlhYmxlIHRv IG5vbi16ZXJvLikKLSsgICAqLwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwotK2ludCAgc2hvdWxk X2V4aXQgPSAwOwotKwotK2ludCBtYWluICgpCi0rewotKyAgaW50ICBsb2NhbF9pID0gMDsKLSsK LSsgIHdoaWxlICghIHNob3VsZF9leGl0KQotKyAgICB7Ci0rICAgICAgbG9jYWxfaSsrOwotKyAg ICB9Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2F0dGFjaC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9h dHRhY2guZXhwCi1AQCAtMCwwICsxLDQxNiBAQAotKyMgICBDb3B5cmlnaHQgMTk5NywgMTk5OSwg MjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKwotKyMgT24gSFAtVVggMTEuMCwgdGhpcyB0 ZXN0IGlzIGNhdXNpbmcgYSBwcm9jZXNzIHJ1bm5pbmcgdGhlIHByb2dyYW0KLSsjICJhdHRhY2gi IHRvIGJlIGxlZnQgYXJvdW5kIHNwaW5uaW5nLiAgVW50aWwgd2UgZmlndXJlIG91dCB3aHksIEkg YW0KLSsjIGNvbW1lbnRpbmcgb3V0IHRoZSB0ZXN0IHRvIGF2b2lkIHBvbGx1dGluZyB0aWFtYXQg KG91ciAxMS4wIG5pZ2h0bHkKLSsjIHRlc3QgbWFjaGluZSkgd2l0aCB0aGVzZSBwcm9jZXNzZXMu IFJUCi0rIwotKyMgU2V0dGluZyB0aGUgbWFnaWMgYml0IGluIHRoZSB0YXJnZXQgYXBwIHNob3Vs ZCB3b3JrLiAgSSBhZGRlZCBhCi0rIyAia2lsbCIsIGFuZCBhbHNvIGEgdGVzdCBmb3IgdGhlIFIz IHJlZ2lzdGVyIHdhcm5pbmcuICBKQgotK2lmIHsgW2lzdGFyZ2V0ICJocHBhKi0qLWhwdXgqIl0g fSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotKyMgYXJlIHdlIG9uIGEgdGFyZ2V0IGJvYXJkCi0r aWYgW2lzX3JlbW90ZSB0YXJnZXRdIHRoZW4gewotKyAgICByZXR1cm4gMAotK30KLSsKLStzZXQg dGVzdGZpbGUgImF0dGFjaCIKLStzZXQgc3JjZmlsZSAgJHt0ZXN0ZmlsZX0uYwotK3NldCBzcmNm aWxlMiAke3Rlc3RmaWxlfTIuYwotK3NldCBiaW5maWxlICBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUg JHt0ZXN0ZmlsZX1dCi0rc2V0IGJpbmZpbGUyIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3Rm aWxlfTJdCi0rc2V0IGVzY2FwZWRiaW5maWxlICBbc3RyaW5nX3RvX3JlZ2V4cCBbc3RhbmRhcmRf b3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dXQotK3NldCBjbGVhbnVwZmlsZSBbc3RhbmRhcmRfb3V0 cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0uYXdrXQotKwotKyNleGVjdXRlX2FueXdoZXJlICJybSAtZiAk e2JpbmZpbGV9ICR7YmluZmlsZTJ9IgotK3JlbW90ZV9leGVjIGJ1aWxkICJybSAtZiAke2JpbmZp bGV9ICR7YmluZmlsZTJ9IgotKyMgRm9yIGRlYnVnZ2luZyB0aGlzIHRlc3QKLSsjCi0rI2xvZ191 c2VyIDEKLSsKLSsjIENsZWFuIG91dCBhbnkgb2xkIGZpbGVzIGZyb20gcGFzdCBydW5zLgotKyMK LStyZW1vdGVfZXhlYyBidWlsZCAiJHtjbGVhbnVwZmlsZX0iCi0rCi0rIyBidWlsZCB0aGUgZmly c3QgdGVzdCBjYXNlCi0rIwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgImFkZGl0aW9uYWxf ZmxhZ3M9IC1mcGllIC1waWUifV0gIT0gIiIgfSB7Ci0rICAgICBnZGJfc3VwcHJlc3NfZW50aXJl X2ZpbGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxl IHdpbGwgYXV0b21hdGljYWxseSBmYWlsLiIKLSt9Ci0rCi0rIyBCdWlsZCB0aGUgaW4tc3lzdGVt LWNhbGwgdGVzdAotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGUyfSIgIiR7YmluZmlsZTJ9IiBleGVjdXRhYmxlIHtkZWJ1ZyAiYWRkaXRpb25hbF9m bGFncz0gLWZwaWUgLXBpZSJ9XSAhPSAiIiB9IHsKLSsgICAgIGdkYl9zdXBwcmVzc19lbnRpcmVf ZmlsZSAiVGVzdGNhc2UgY29tcGlsZSBmYWlsZWQsIHNvIGFsbCB0ZXN0cyBpbiB0aGlzIGZpbGUg d2lsbCBhdXRvbWF0aWNhbGx5IGZhaWwuIgotK30KLSsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8g JHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rcHJvYyBkb19hdHRhY2hfdGVz dHMge30gewotKyAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0rICAgZ2xvYmFsIGJpbmZpbGUKLSsgICBn bG9iYWwgZXNjYXBlZGJpbmZpbGUKLSsgICBnbG9iYWwgc3JjZmlsZQotKyAgIGdsb2JhbCB0ZXN0 ZmlsZQotKyAgIGdsb2JhbCBzdWJkaXIKLSsgICBnbG9iYWwgdGltZW91dAotKwotKyAgICMgU3Rh cnQgdGhlIHByb2dyYW0gcnVubmluZyBhbmQgdGhlbiB3YWl0IGZvciBhIGJpdCwgdG8gYmUgc3Vy ZQotKyAgICMgdGhhdCBpdCBjYW4gYmUgYXR0YWNoZWQgdG8uCi0rICAgIwotKyAgIHNldCB0ZXN0 cGlkIFtldmFsIGV4ZWMgJGJpbmZpbGUgJl0KLSsgICBleGVjIHNsZWVwIDIKLSsKLSsgICAjIFZl cmlmeSB0aGF0IHdlIGNhbm5vdCBhdHRhY2ggdG8gbm9uc2Vuc2UuCi0rICAgIwotKyAgIHNlbmRf Z2RiICJhdHRhY2ggYWJjXG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIuKklsbGVn YWwgcHJvY2Vzcy1pZDogYWJjLiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICAgICAgICAg ICAge3Bhc3MgImF0dGFjaCB0byBub25zZW5zZSBpcyBwcm9oaWJpdGVkIn0KLSsgICAgICAtcmUg IkF0dGFjaGluZyB0by4qLCBwcm9jZXNzIC4qY291bGRuJ3Qgb3BlbiAvcHJvYyBmaWxlLiokZ2Ri X3Byb21wdCAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAg ICAgICAgICMgUmVzcG9uc2UgZXhwZWN0ZWQgZnJvbSAvcHJvYy1iYXNlZCBzeXN0ZW1zLgotKyAg ICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImF0dGFjaCB0byBub25zZW5zZSBpcyBwcm9oaWJp dGVkIgotKyAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgLXJlICJBdHRhY2hpbmcgdG8u KiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7ZmFpbCAiYXR0YWNoIHRv IG5vbnNlbnNlIGlzIHByb2hpYml0ZWQgKGJvZ3VzIHBpZCBhbGxvd2VkKSJ9Ci0rICAgICAgLXJl ICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiYXR0YWNoIHRvIG5vbnNlbnNlIGlzIHByb2hpYml0ZWQi fQotKyAgICAgIHRpbWVvdXQgICAgICAgICB7ZmFpbCAiKHRpbWVvdXQpIGF0dGFjaCB0byBub25z ZW5zZSBpcyBwcm9oaWJpdGVkIn0KLSsgICB9Ci0rCi0rICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW5u b3QgYXR0YWNoIHRvIHdoYXQgYXBwZWFycyB0byBiZSBhIHZhbGlkCi0rICAgIyBwcm9jZXNzIElE LCBidXQgaXMgYSBwcm9jZXNzIHRoYXQgZG9lc24ndCBleGlzdC4gIFRyYWRpdGlvbmFsbHksCi0r ICAgIyBtb3N0IHN5c3RlbXMgZGlkbid0IGhhdmUgYSBwcm9jZXNzIHdpdGggSUQgMCwgc28gd2Ug dGFrZSB0aGF0IGFzCi0rICAgIyB0aGUgZGVmYXVsdC4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIGZl dyBleGNlcHRpb25zLgotKyAgICMKLSsgICBzZXQgYm9ndXNwaWQgMAotKyAgIGlmIHsgW2lzdGFy Z2V0ICIqLSotKmJzZCoiXSB9IHsKLSsgICAgICAgIyBJbiBGcmVlQlNEIDUuMCwgUElEIDAgaXMg dXNlZCBmb3IgInN3YXBwZXIiLiAgVXNlIC0xIGluc3RlYWQKLSsgICAgICAgIyAod2hpY2ggc2hv dWxkIGhhdmUgdGhlIGRlc2lyZWQgZWZmZWN0IG9uIGFueSB2ZXJzaW9uIG9mCi0rICAgICAgICMg RnJlZUJTRCwgYW5kIHByb2JhYmx5IG90aGVyICpCU0QncyB0b28pLgotKyAgICAgICBzZXQgYm9n dXNwaWQgLTEKLSsgICB9Ci0rICAgc2VuZF9nZGIgImF0dGFjaCAkYm9ndXNwaWRcbiIKLSsgICBn ZGJfZXhwZWN0IHsKLSsgICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiwgcHJvY2VzcyAkYm9ndXNw aWQuKk5vIHN1Y2ggcHJvY2Vzcy4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICB7Ci0rCSAgICMg UmVzcG9uc2UgZXhwZWN0ZWQgb24gcHRyYWNlLWJhc2VkIHN5c3RlbXMgKGkuZS4gSFAtVVggMTAu MjApLgotKwkgICBwYXNzICJhdHRhY2ggdG8gbm9uZXhpc3RlbnQgcHJvY2VzcyBpcyBwcm9oaWJp dGVkIgotKyAgICAgICB9Ci0rICAgICAgIC1yZSAiQXR0YWNoaW5nIHRvLiosIHByb2Nlc3MgJGJv Z3VzcGlkIGZhaWxlZC4qSGludC4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICB7Ci0rCSAgICMg UmVzcG9uc2UgZXhwZWN0ZWQgb24gdHRyYWNlLWJhc2VkIHN5c3RlbXMgKGkuZS4gSFAtVVggMTEu MCkuCi0rCSAgIHBhc3MgImF0dGFjaCB0byBub25leGlzdGVudCBwcm9jZXNzIGlzIHByb2hpYml0 ZWQiCi0rICAgICAgIH0KLSsgICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiwgcHJvY2VzcyAkYm9n dXNwaWQuKmRlbmllZC4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICB7cGFzcyAiYXR0YWNoIHRv IG5vbmV4aXN0ZW50IHByb2Nlc3MgaXMgcHJvaGliaXRlZCJ9Ci0rICAgICAgIC1yZSAiQXR0YWNo aW5nIHRvLiosIHByb2Nlc3MgJGJvZ3VzcGlkLipub3QgcGVybWl0dGVkLiokZ2RiX3Byb21wdCAk IlwKLSsJICAgICAgIHtwYXNzICJhdHRhY2ggdG8gbm9uZXhpc3RlbnQgcHJvY2VzcyBpcyBwcm9o aWJpdGVkIn0KLSsgICAgICAgLXJlICJBdHRhY2hpbmcgdG8uKiwgcHJvY2VzcyAuKmNvdWxkbid0 IG9wZW4gL3Byb2MgZmlsZS4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICB7Ci0rCSAgICMgUmVz cG9uc2UgZXhwZWN0ZWQgZnJvbSAvcHJvYy1iYXNlZCBzeXN0ZW1zLgotKwkgICBwYXNzICJhdHRh Y2ggdG8gbm9uZXhpc3RlbnQgcHJvY2VzcyBpcyBwcm9oaWJpdGVkIgotKyAgICAgICB9Ci0rICAg ICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImF0dGFjaCB0byBub25leGlzdGVudCBwcm9j ZXNzIGlzIHByb2hpYml0ZWQifQotKyAgICAgICB0aW1lb3V0IHsKLSsJICAgZmFpbCAiKHRpbWVv dXQpIGF0dGFjaCB0byBub25leGlzdGVudCBwcm9jZXNzIGlzIHByb2hpYml0ZWQiCi0rICAgICAg IH0KLSsgICB9Ci0rCi0rICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW4gYXR0YWNoIHRvIHRoZSBwcm9j ZXNzIGJ5IGZpcnN0IGdpdmluZyBpdHMKLSsgICAjIGV4ZWN1dGFibGUgbmFtZSB2aWEgdGhlIGZp bGUgY29tbWFuZCwgYW5kIHVzaW5nIGF0dGFjaCB3aXRoCi0rICAgIyB0aGUgcHJvY2VzcyBJRC4K LSsgICAjCi0rICAgIyAoQWN0dWFsbHksIHRoZSB0ZXN0IHN5c3RlbSBhcHBlYXJzIHRvIGRvIHRo aXMgYXV0b21hdGljYWxseQotKyAgICMgZm9yIHVzLiAgU28sIHdlIG11c3QgYWxzbyBiZSBwcmVw YXJlZCB0byBiZSBhc2tlZCBpZiB3ZSB3YW50Ci0rICAgIyB0byBkaXNjYXJkIGFuIGV4aXN0aW5n IHNldCBvZiBzeW1ib2xzLikKLSsgICAjCi0rICAgc2VuZF9nZGIgImZpbGUgJGJpbmZpbGVcbiIK LSsgICBnZGJfZXhwZWN0IHsKLSsgICAgICAtcmUgIkxvYWQgbmV3IHN5bWJvbCB0YWJsZSBmcm9t Lip5IG9yIG4uKiQiIHsKLSsgICAgICAgICBzZW5kX2dkYiAieVxuIgotKyAgICAgICAgIGdkYl9l eHBlY3QgewotKyAgICAgICAgICAgIC1yZSAiUmVhZGluZyBzeW1ib2xzIGZyb20gJGVzY2FwZWRi aW5maWxlXC5cLlwuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7cGFzcyAiKHJlKXNldCBmaWxlLCBiZWZvcmUgYXR0YWNoMSJ9Ci0rICAgICAgICAgICAgLXJl ICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiKHJlKXNldCBmaWxlLCBiZWZvcmUgYXR0YWNoMSJ9Ci0r ICAgICAgICAgICAgdGltZW91dCAgICAgICAgIHtmYWlsICIodGltZW91dCkgKHJlKXNldCBmaWxl LCBiZWZvcmUgYXR0YWNoMSJ9Ci0rICAgICAgICAgfQotKyAgICAgIH0KLSsgICAgICAtcmUgIlJl YWRpbmcgc3ltYm9scyBmcm9tICRlc2NhcGVkYmluZmlsZVwuXC5cLiokZ2RiX3Byb21wdCAkIlwK LSsgICAgICAgICAgICAgICAgICAgICAge3Bhc3MgInNldCBmaWxlLCBiZWZvcmUgYXR0YWNoMSJ9 Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAic2V0IGZpbGUsIGJlZm9yZSBhdHRh Y2gxIn0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBzZXQgZmlsZSwg YmVmb3JlIGF0dGFjaDEifQotKyAgIH0KLSsKLSsgICBzZW5kX2dkYiAiYXR0YWNoICR0ZXN0cGlk XG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICJBdHRhY2hpbmcgdG8gcHJvZ3JhbS4q YD8kZXNjYXBlZGJpbmZpbGUnPywgcHJvY2VzcyAkdGVzdHBpZC4qbWFpbi4qYXQgLiokc3JjZmls ZTouKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7cGFzcyAiYXR0YWNo MSwgYWZ0ZXIgc2V0dGluZyBmaWxlIn0KLSsgICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiIHtmYWls ICJhdHRhY2gxLCBhZnRlciBzZXR0aW5nIGZpbGUifQotKyAgICAgIHRpbWVvdXQgICAgICAgICB7 ZmFpbCAiKHRpbWVvdXQpIGF0dGFjaDEsIGFmdGVyIHNldHRpbmcgZmlsZSJ9Ci0rICAgfQotKwot KyAgICMgVmVyaWZ5IHRoYXQgd2UgY2FuICJzZWUiIHRoZSB2YXJpYWJsZSAic2hvdWxkX2V4aXQi IGluIHRoZQotKyAgICMgcHJvZ3JhbSwgYW5kIHRoYXQgaXQgaXMgemVyby4KLSsgICAjCi0rICAg c2VuZF9nZGIgInByaW50IHNob3VsZF9leGl0XG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAg LXJlICIuKiA9IDAuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7cGFz cyAiYWZ0ZXIgYXR0YWNoMSwgcHJpbnQgc2hvdWxkX2V4aXQifQotKyAgICAgIC1yZSAiJGdkYl9w cm9tcHQgJCIge2ZhaWwgImFmdGVyIGF0dGFjaDEsIHByaW50IHNob3VsZF9leGl0In0KLSsgICAg ICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBhZnRlciBhdHRhY2gxLCBwcmludCBz aG91bGRfZXhpdCJ9Ci0rICAgfQotKwotKyAgICMgRGV0YWNoIHRoZSBwcm9jZXNzLgotKyAgICMK LSsgICBzZW5kX2dkYiAiZGV0YWNoXG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICJE ZXRhY2hpbmcgZnJvbSBwcm9ncmFtOiAuKiRlc2NhcGVkYmluZmlsZS4qJGdkYl9wcm9tcHQgJCJc Ci0rICAgICAgICAgICAgICAgICAgICAgIHtwYXNzICJhdHRhY2gxIGRldGFjaCJ9Ci0rICAgICAg LXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiYXR0YWNoMSBkZXRhY2gifQotKyAgICAgIHRpbWVv dXQgICAgICAgICB7ZmFpbCAiKHRpbWVvdXQpIGF0dGFjaDEgZGV0YWNoIn0KLSsgICB9Ci0rCi0r ICAgIyBXYWl0IGEgYml0IGZvciBnZGIgdG8gZmluaXNoIGRldGFjaGluZwotKyAgICMKLSsgICBl eGVjIHNsZWVwIDUKLSsKLSsgICAjIFB1cmdlIHRoZSBzeW1ib2xzIGZyb20gZ2RiJ3MgYnJhaW4u ICAoV2Ugd2FudCB0byBiZSBjZXJ0YWluCi0rICAgIyB0aGUgbmV4dCBhdHRhY2gsIHdoaWNoIHdv bid0IGJlIHByZWNlZGVkIGJ5IGEgImZpbGUiIGNvbW1hbmQsCi0rICAgIyBpcyByZWFsbHkgZ2V0 dGluZyB0aGUgZXhlY3V0YWJsZSBmaWxlIHdpdGhvdXQgb3VyIGhlbHAuKQotKyAgICMKLSsgICBz ZXQgb2xkX3RpbWVvdXQgJHRpbWVvdXQKLSsgICBzZXQgdGltZW91dCAxNQotKyAgIHNlbmRfZ2Ri ICJmaWxlXG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIuKmdkYiBpbnRlcm5hbCBl cnJvci4qJCIgewotKyAgICAgICAgICBmYWlsICJJbnRlcm5hbCBlcnJvciwgcHJvYi4gTWVtb3J5 IGNvcnJ1cHRpb24iCi0rICAgICAgfQotKyAgICAgIC1yZSAiTm8gZXhlY3V0YWJsZSBmaWxlIG5v dy4qRGlzY2FyZCBzeW1ib2wgdGFibGUuKnkgb3Igbi4qJCIgewotKyAgICAgICAgIHNlbmRfZ2Ri ICJ5XG4iCi0rICAgICAgICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgICAgICAgLXJlICJObyBzeW1i b2wgZmlsZSBub3cuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB7cGFzcyAiYXR0YWNoMSwgcHVyZ2luZyBzeW1ib2xzIGFmdGVyIGRldGFjaCJ9Ci0rICAgICAg ICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiYXR0YWNoMSwgcHVyZ2luZyBzeW1ib2xz IGFmdGVyIGRldGFjaCJ9Ci0rICAgICAgICAgICAgdGltZW91dCAgICAgICAgIHtmYWlsICIodGlt ZW91dCkgYXR0YWNoMSwgcHVyZ2luZyBzeW1ib2xzIGFmdGVyIGRldGFjaCJ9Ci0rICAgICAgICAg fQotKyAgICAgIH0KLSsgICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiIHtmYWlsICJhdHRhY2gxLCBw dXJnaW5nIGZpbGUgYWZ0ZXIgZGV0YWNoIn0KLSsgICAgICB0aW1lb3V0ICAgICAgICAgewotKyAg ICAgICAgICBmYWlsICIodGltZW91dCkgYXR0YWNoMSwgcHVyZ2luZyBmaWxlIGFmdGVyIGRldGFj aCIKLSsgICAgICB9Ci0rICAgfQotKyAgIHNldCB0aW1lb3V0ICRvbGRfdGltZW91dAotKwotKyAg ICMgVmVyaWZ5IHRoYXQgd2UgY2FuIGF0dGFjaCB0byB0aGUgcHJvY2VzcyBqdXN0IGJ5IGdpdmlu ZyB0aGUKLSsgICAjIHByb2Nlc3MgSUQuCi0rICAgIwotKyAgIHNlbmRfZ2RiICJhdHRhY2ggJHRl c3RwaWRcbiIKLSsgICBnZGJfZXhwZWN0IHsKLSsgICAgICAtcmUgIkF0dGFjaGluZyB0byBwcm9j ZXNzICR0ZXN0cGlkLipSZWFkaW5nIHN5bWJvbHMgZnJvbSAkZXNjYXBlZGJpbmZpbGUuKm1haW4u KmF0IC4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAgICAgICAgICAgIHtwYXNzICJhdHRh Y2gyIn0KLSsgICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiIHtmYWlsICJhdHRhY2gyIn0KLSsgICAg ICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBhdHRhY2gyIn0KLSsgICB9Ci0rCi0r ICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW4gbW9kaWZ5IHRoZSB2YXJpYWJsZSAic2hvdWxkX2V4aXQi IGluIHRoZQotKyAgICMgcHJvZ3JhbS4KLSsgICAjCi0rICAgc2VuZF9nZGIgInNldCBzaG91bGRf ZXhpdD0xXG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7 cGFzcyAiYWZ0ZXIgYXR0YWNoMiwgc2V0IHNob3VsZF9leGl0In0KLSsgICAgICB0aW1lb3V0ICAg ICAgICAge2ZhaWwgIih0aW1lb3V0KSBhZnRlciBhdHRhY2gyLCBzZXQgc2hvdWxkX2V4aXQifQot KyAgIH0KLSsKLSsgICAjIFZlcmlmeSB0aGF0IHRoZSBtb2RpZmljYXRpb24gcmVhbGx5IGhhcHBl bmVkLgotKyAgICMKLSsgICBzZW5kX2dkYiAidGJyZWFrIDE5XG4iCi0rICAgZ2RiX2V4cGVjdCB7 Ci0rICAgICAgLXJlICJyZWFrcG9pbnQgLiphdC4qJHNyY2ZpbGUsIGxpbmUgMTkuKiRnZGJfcHJv bXB0ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7cGFzcyAiYWZ0ZXIgYXR0YWNoMiwgc2V0 IHRicmVhayBwb3N0bG9vcCJ9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiYWZ0 ZXIgYXR0YWNoMiwgc2V0IHRicmVhayBwb3N0bG9vcCJ9Ci0rICAgICAgdGltZW91dCAgICAgICAg IHtmYWlsICIodGltZW91dCkgYWZ0ZXIgYXR0YWNoMiwgc2V0IHRicmVhayBwb3N0bG9vcCJ9Ci0r ICAgfQotKyAgIHNlbmRfZ2RiICJjb250aW51ZVxuIgotKyAgIGdkYl9leHBlY3QgewotKyAgICAg IC1yZSAibWFpbi4qYXQuKiRzcmNmaWxlOjE5LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAg ICAgICAgICAgICAge3Bhc3MgImFmdGVyIGF0dGFjaDIsIHJlYWNoIHRicmVhayBwb3N0bG9vcCJ9 Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiYWZ0ZXIgYXR0YWNoMiwgcmVhY2gg dGJyZWFrIHBvc3Rsb29wIn0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0 KSBhZnRlciBhdHRhY2gyLCByZWFjaCB0YnJlYWsgcG9zdGxvb3AifQotKyAgIH0KLSsKLSsgICAj IEFsbG93IHRoZSB0ZXN0IHByb2Nlc3MgdG8gZXhpdCwgdG8gY2xlYW51cCBhZnRlciBvdXJzZWx2 ZXMuCi0rICAgIwotKyAgIGdkYl90ZXN0ICJjb250aW51ZSIge1xbSW5mZXJpb3IgLiogZXhpdGVk IG5vcm1hbGx5XF19ICJhZnRlciBhdHRhY2gyLCBleGl0IgotKwotKyAgICMgTWFrZSBzdXJlIHdl IGRvbid0IGxlYXZlIGEgcHJvY2VzcyBhcm91bmQgdG8gY29uZnVzZQotKyAgICMgdGhlIG5leHQg dGVzdCBydW4gKGFuZCBwcmV2ZW50IHRoZSBjb21waWxlIGJ5IGtlZXBpbmcKLSsgICAjIHRoZSB0 ZXh0IGZpbGUgYnVzeSksIGluIGNhc2UgdGhlICJzZXQgc2hvdWxkX2V4aXQiIGRpZG4ndAotKyAg ICMgd29yay4KLSsgICAjCi0rICAgcmVtb3RlX2V4ZWMgYnVpbGQgImtpbGwgLTkgJHt0ZXN0cGlk fSIKLSsgICAjIFN0YXJ0IHRoZSBwcm9ncmFtIHJ1bm5pbmcgYW5kIHRoZW4gd2FpdCBmb3IgYSBi aXQsIHRvIGJlIHN1cmUKLSsgICAjIHRoYXQgaXQgY2FuIGJlIGF0dGFjaGVkIHRvLgotKyAgICMK LSsgICBzZXQgdGVzdHBpZCBbZXZhbCBleGVjICRiaW5maWxlICZdCi0rICAgZXhlYyBzbGVlcCAy Ci0rCi0rICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW4gYXR0YWNoIHRvIHRoZSBwcm9jZXNzLCBhbmQg ZmluZCBpdHMgYS5vdXQKLSsgICAjIHdoZW4gd2UncmUgY2QnZCB0byBzb21lIGRpcmVjdG9yeSB0 aGF0IGRvZXNuJ3QgY29udGFpbiB0aGUKLSsgICAjIGEub3V0LiAgKFdlIHVzZSB0aGUgc291cmNl IHBhdGggc2V0IGJ5IHRoZSAiZGlyIiBjb21tYW5kLikKLSsgICAjCi0rICAgc2VuZF9nZGIgImRp ciBbZmlsZSBkaXJuYW1lIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfV1dXG4iCi0r ICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIuKlNvdXJjZSBkaXJlY3RvcmllcyBzZWFyY2hl ZDogLiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAge3Bhc3MgInNldCBz b3VyY2UgcGF0aCJ9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAic2V0IHNvdXJj ZSBwYXRoIn0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBzZXQgc291 cmNlIHBhdGgifQotKyAgIH0KLSsKLSsgICBzZW5kX2dkYiAiY2QgL3RtcFxuIgotKyAgIGdkYl9l eHBlY3QgewotKyAgICAgIC1yZSAiLipXb3JraW5nIGRpcmVjdG9yeSAvdG1wLiokZ2RiX3Byb21w dCAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAge3Bhc3MgImNkIGF3YXkgZnJvbSBwcm9jZXNz JyBhLm91dCJ9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAiY2QgYXdheSBmcm9t IHByb2Nlc3MnIGEub3V0In0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0 KSBjZCBhd2F5IGZyb20gcHJvY2VzcycgYS5vdXQifQotKyAgIH0KLSsKLSsgICAjIEV4cGxpY2l0 bHkgZmx1c2ggb3V0IGFueSBrbm93bGVkZ2Ugb2YgdGhlIHByZXZpb3VzIGF0dGFjaG1lbnQuCi0r ICAgc2VuZF9nZGIgInN5bWJvbFxuIgotKyAgIGdkYl9leHBlY3QgewotKyAgICAgIC1yZSAiLipE aXNjYXJkIHN5bWJvbCB0YWJsZSBmcm9tLip5IG9yIG4uICQiXAotKyAgICAgICAgICAgICAgICAg ICAgICB7c2VuZF9nZGIgInlcbiIKLSsgICAgICAgICAgICAgICAgICAgICAgIGdkYl9leHBlY3Qg ewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlICIuKk5vIHN5bWJvbCBmaWxlIG5vdy4q JGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAge3Bhc3MgImJlZm9yZSBhdHRhY2gzLCBmbHVzaCBzeW1ib2xzIn0KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImJlZm9yZSBhdHRhY2gzLCBm bHVzaCBzeW1ib2xzIn0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgICAgICAg ICB7ZmFpbCAiKHRpbWVvdXQpIGJlZm9yZSBhdHRhY2gzLCBmbHVzaCBzeW1ib2xzIn0KLSsgICAg ICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgIC1y ZSAiLipObyBzeW1ib2wgZmlsZSBub3cuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgICAg ICAgICAgICB7cGFzcyAiYmVmb3JlIGF0dGFjaDMsIGZsdXNoIHN5bWJvbHMifQotKyAgICAgIC1y ZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImJlZm9yZSBhdHRhY2gzLCBmbHVzaCBzeW1ib2xzIn0K LSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBiZWZvcmUgYXR0YWNoMywg Zmx1c2ggc3ltYm9scyJ9Ci0rICAgfQotKyAgIHNlbmRfZ2RiICJleGVjXG4iCi0rICAgZ2RiX2V4 cGVjdCB7Ci0rICAgICAgLXJlICIuKk5vIGV4ZWN1dGFibGUgZmlsZSBub3cuKiRnZGJfcHJvbXB0 ICQiXAotKyAgICAgICAgICAgICAgICAgICAgICB7cGFzcyAiYmVmb3JlIGF0dGFjaDMsIGZsdXNo IGV4ZWMifQotKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge2ZhaWwgImJlZm9yZSBhdHRhY2gz LCBmbHVzaCBleGVjIn0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBi ZWZvcmUgYXR0YWNoMywgZmx1c2ggZXhlYyJ9Ci0rICAgfQotKwotKyAgIHNlbmRfZ2RiICJhdHRh Y2ggJHRlc3RwaWRcbiIKLSsgICBnZGJfZXhwZWN0IHsKLSsgICAgICAtcmUgIkF0dGFjaGluZyB0 byBwcm9jZXNzICR0ZXN0cGlkLipSZWFkaW5nIHN5bWJvbHMgZnJvbSAkZXNjYXBlZGJpbmZpbGUu Km1haW4uKmF0IC4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAgICAgICAgICAgIHtwYXNz ICJhdHRhY2ggd2hlbiBwcm9jZXNzJyBhLm91dCBub3QgaW4gY3dkIn0KLSsgICAgICAtcmUgIiRn ZGJfcHJvbXB0ICQiIHtmYWlsICJhdHRhY2ggd2hlbiBwcm9jZXNzJyBhLm91dCBub3QgaW4gY3dk In0KLSsgICAgICB0aW1lb3V0ICAgICAgICAge2ZhaWwgIih0aW1lb3V0KSBhdHRhY2ggd2hlbiBw cm9jZXNzJyBhLm91dCBub3QgaW4gY3dkIn0KLSsgICB9Ci0rCi0rICAgc2VuZF9nZGIgImtpbGxc biIKLSsgICBnZGJfZXhwZWN0IHsKLSsgICAgICAtcmUgIi4qS2lsbCB0aGUgcHJvZ3JhbSBiZWlu ZyBkZWJ1Z2dlZC4qeSBvciBuLiAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAge3NlbmRfZ2Ri ICJ5XG4iCi0rICAgICAgICAgICAgICAgICAgICAgICBnZGJfZXhwZWN0IHsKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIge3Bhc3MgImFmdGVyIGF0dGFjaDMs IGV4aXQifQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCB7ZmFpbCAiKHRpbWVv dXQpIGFmdGVyIGF0dGFjaDMsIGV4aXQifQotKyAgICAgICAgICAgICAgICAgICAgICAgfQotKyAg ICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgLXJlICIkZ2RiX3Byb21wdCAkIiB7ZmFpbCAi YWZ0ZXIgYXR0YWNoMywgZXhpdCJ9Ci0rICAgICAgdGltZW91dCAgICAgICAgIHtmYWlsICIodGlt ZW91dCkgYWZ0ZXIgYXR0YWNoMywgZXhpdCJ9Ci0rICAgfQotKwotKyAgICMgQW5vdGhlciAiZG9u J3QgbGVhdmUgYSBwcm9jZXNzIGFyb3VuZCIKLSsgICByZW1vdGVfZXhlYyBidWlsZCAia2lsbCAt OSAke3Rlc3RwaWR9IgotK30KLSsKLStwcm9jIGRvX2NhbGxfYXR0YWNoX3Rlc3RzIHt9IHsKLSsg ICBnbG9iYWwgZ2RiX3Byb21wdAotKyAgIGdsb2JhbCBiaW5maWxlMgotKwotKyAgICMgU3RhcnQg dGhlIHByb2dyYW0gcnVubmluZyBhbmQgdGhlbiB3YWl0IGZvciBhIGJpdCwgdG8gYmUgc3VyZQot KyAgICMgdGhhdCBpdCBjYW4gYmUgYXR0YWNoZWQgdG8uCi0rICAgIwotKyAgIHNldCB0ZXN0cGlk IFtldmFsIGV4ZWMgJGJpbmZpbGUyICZdCi0rICAgZXhlYyBzbGVlcCAyCi0rCi0rICAgIyBBdHRh Y2gKLSsgICAjCi0rICAgZ2RiX3Rlc3QgImZpbGUgJGJpbmZpbGUyIiAiLioiICJmb3JjZSBzd2l0 Y2ggdG8gZ2RiNjQsIGlmIG5lY2Vzc2FyeSIKLSsgICBzZW5kX2dkYiAiYXR0YWNoICR0ZXN0cGlk XG4iCi0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgLXJlICIuKndhcm5pbmc6IHJlYWRpbmcgcmVn aXN0ZXIuKkkuKk8gZXJyb3IuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgICBmYWlsICJhdHRh Y2ggY2FsbCwgcmVhZCByZWdpc3RlciAzIGVycm9yIgotKyAgICAgfQotKyAgICAgLXJlICJBdHRh Y2hpbmcgdG8uKnByb2Nlc3MgJHRlc3RwaWQuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAgICAj IGxpYmMgaXMgcmVsb2NhdGVkLCBub3QgcmVsb2NhdGVkLCB0aGVyZWZvcmUgbm90IHByaW50ZWQu Ci0rICAgICAgICAgcGFzcyAiYXR0YWNoIGNhbGwiCi0rICAgICB9Ci0rICAgICAgLXJlICIkZ2Ri X3Byb21wdCAkIiB7ZmFpbCAiYXR0YWNoIGNhbGwifQotKyAgICAgIHRpbWVvdXQgICAgICAgICB7 ZmFpbCAiKHRpbWVvdXQpIGF0dGFjaCBjYWxsIn0KLSsgICB9Ci0rCi0rICAgIyBTZWUgaWYgb3Ro ZXIgcmVnaXN0ZXJzIGFyZSBwcm9ibGVtcwotKyAgICMKLSsgICBzZW5kX2dkYiAiaSByIHIzXG4i Ci0rICAgZ2RiX2V4cGVjdCB7Ci0rICAgICAgIC1yZSAiLip3YXJuaW5nOiByZWFkaW5nIHJlZ2lz dGVyLiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAgICAgICBwYXNzICJDSEZ0czIzNDkwOiBrbm93 biBidWciCi0rICAgICAgIH0KLSsgICAgICAgLXJlICIuKnIzLiokZ2RiX3Byb21wdCAkIiB7Ci0r ICAgICAgICAgICBwYXNzICJCdWcgZml4ZWQsIFlheXl5ISIKLSsgICAgICAgfQotKyAgICAgICB0 aW1lb3V0IHsgZmFpbCAidGltZW91dCBvbiBpbmZvIHJlZyIgfQotKyAgIH0KLSsKLSsgICAjIEdl dCByaWQgb2YgdGhlIHByb2Nlc3MKLSsgICAjCi0rICAgZ2RiX3Rlc3QgInAgc2hvdWxkX2V4aXQg PSAxIiAiLioiCi0rICAgZ2RiX3Rlc3QgImMiIHtcW0luZmVyaW9yIC4qIGV4aXRlZCBub3JtYWxs eVxdfQotKwotKyAgICMgQmUgcGFyYW5vaWQKLSsgICAjCi0rICAgIHJlbW90ZV9leGVjIGJ1aWxk ICJraWxsIC05ICR7dGVzdHBpZH0iCi0rCi0rfQotKwotKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNo IGdkYgotKyMKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRz cmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIFRoaXMgaXMgYSB0ZXN0 IG9mIGdkYidzIGFiaWxpdHkgdG8gYXR0YWNoIHRvIGEgcnVubmluZyBwcm9jZXNzLgotKyMKLStk b19hdHRhY2hfdGVzdHMKLSsKLSsjIFRlc3QgYXR0YWNoaW5nIHdoZW4gdGhlIHRhcmdldCBpcyBp bnNpZGUgYSBzeXN0ZW0gY2FsbAotKyMKLStnZGJfZXhpdAotK2dkYl9zdGFydAotKwotK2dkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2RvX2NhbGxfYXR0YWNoX3Rlc3RzCi0r Ci0rcmV0dXJuIDAKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoMi5j IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMKLUBA IC0wLDAgKzEsMjQgQEAKLSsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRl ZCBvdXRzaWRlIG9mIGdkYiwgYW5kIHRoZW4KLSsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVz LCBpdCBzaW1wbHkgc3BpbnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKLSsgICBpcyBleGl0ZWQgd2hl biAmIGlmIHRoZSB2YXJpYWJsZSAnc2hvdWxkX2V4aXQnIGlzIG5vbi16ZXJvLiAgKEl0Ci0rICAg aXMgaW5pdGlhbGl6ZWQgdG8gemVybyBpbiB0aGlzIHByb2dyYW0sIHNvIHRoZSBsb29wIHdpbGwg bmV2ZXIKLSsgICBleGl0IHVubGVzcy91bnRpbCBnZGIgc2V0cyB0aGUgdmFyaWFibGUgdG8gbm9u LXplcm8uKQotKyAgICovCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5o PgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsKLStpbnQgIHNob3VsZF9leGl0ID0gMDsKLSsKLStp bnQgbWFpbiAoKQotK3sKLSsgIGludCAgbG9jYWxfaSA9IDA7Ci0rCi0rICBzbGVlcCggMTAgKTsg LyogU3lzdGVtIGNhbGwgY2F1c2VzIHJlZ2lzdGVyIGZldGNoIHRvIGZhaWwgKi8KLSsgICAgICAg ICAgICAgICAvKiBUaGlzIGlzIGEga25vd24gSFBVWCAiZmVhdHVyZSIgICAgICAgICAgICAqLwot KyAgd2hpbGUgKCEgc2hvdWxkX2V4aXQpCi0rICAgIHsKLSsgICAgICBsb2NhbF9pKys7Ci0rICAg IH0KLSsgIHJldHVybiAoMCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnBp ZS9icmVhay5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsu YwotQEAgLTAsMCArMSwxNDYgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1 LCAxOTk5LCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwot KyAgIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8g dGhpcyBmaWxlIHRvOgotKyAgIGJ1Zy1nZGJAcHJlcC5haS5taXQuZWR1ICAqLwotKwotKyNpZmRl ZiB2eHdvcmtzCi0rCi0rIyAgaW5jbHVkZSA8c3RkaW8uaD4KLSsKLSsvKiBWeFdvcmtzIGRvZXMg bm90IHN1cHBseSBhdG9pLiAgKi8KLStzdGF0aWMgaW50Ci0rYXRvaSAoeikKLSsgICAgIGNoYXIg Kno7Ci0rewotKyAgaW50IGkgPSAwOwotKwotKyAgd2hpbGUgKCp6ID49ICcwJyAmJiAqeiA8PSAn OScpCi0rICAgIGkgPSBpICogMTAgKyAoKnorKyAtICcwJyk7Ci0rICByZXR1cm4gaTsKLSt9Ci0r Ci0rLyogSSBkb24ndCBrbm93IG9mIGFueSB3YXkgdG8gcGFzcyBhbiBhcnJheSB0byBWeFdvcmtz LiAgVGhpcyBmdW5jdGlvbgotKyAgIGNhbiBiZSBjYWxsZWQgZGlyZWN0bHkgZnJvbSBnZGIuICAq LwotKwotK3Z4bWFpbiAoYXJnKQotK2NoYXIgKmFyZzsKLSt7Ci0rICBjaGFyICphcmd2WzJdOwot KwotKyAgYXJndlswXSA9ICIiOwotKyAgYXJndlsxXSA9IGFyZzsKLSsgIG1haW4gKDIsIGFyZ3Ys IChjaGFyICoqKSAwKTsKLSt9Ci0rCi0rI2Vsc2UgLyogISB2eHdvcmtzICovCi0rIyAgaW5jbHVk ZSA8c3RkaW8uaD4KLSsjICBpbmNsdWRlIDxzdGRsaWIuaD4KLSsjZW5kaWYgLyogISB2eHdvcmtz ICovCi0rCi0rI2lmZGVmIFBST1RPVFlQRVMKLStleHRlcm4gaW50IG1hcmtlcjEgKHZvaWQpOwot K2V4dGVybiBpbnQgbWFya2VyMiAoaW50IGEpOwotK2V4dGVybiB2b2lkIG1hcmtlcjMgKGNoYXIg KmEsIGNoYXIgKmIpOwotK2V4dGVybiB2b2lkIG1hcmtlcjQgKGxvbmcgZCk7Ci0rI2Vsc2UKLStl eHRlcm4gaW50IG1hcmtlcjEgKCk7Ci0rZXh0ZXJuIGludCBtYXJrZXIyICgpOwotK2V4dGVybiB2 b2lkIG1hcmtlcjMgKCk7Ci0rZXh0ZXJuIHZvaWQgbWFya2VyNCAoKTsKLSsjZW5kaWYKLSsKLSsv KgotKyAqCVRoaXMgc2ltcGxlIGNsYXNzaWNhbCBleGFtcGxlIG9mIHJlY3Vyc2lvbiBpcyB1c2Vm dWwgZm9yCi0rICoJdGVzdGluZyBzdGFjayBiYWNrdHJhY2VzIGFuZCBzdWNoLgotKyAqLwotKwot KyNpZmRlZiBQUk9UT1RZUEVTCi0raW50IGZhY3RvcmlhbChpbnQpOwotKwotK2ludAotK21haW4g KGludCBhcmdjLCBjaGFyICoqYXJndiwgY2hhciAqKmVudnApCi0rI2Vsc2UKLStpbnQKLSttYWlu IChhcmdjLCBhcmd2LCBlbnZwKQotK2ludCBhcmdjOwotK2NoYXIgKmFyZ3ZbXSwgKiplbnZwOwot KyNlbmRpZgotK3sKLSsjaWZkZWYgdXNlc3R1YnMKLSsgICAgc2V0X2RlYnVnX3RyYXBzKCk7ICAv KiBzZXQgYnJlYWtwb2ludCA1IGhlcmUgKi8KLSsgICAgYnJlYWtwb2ludCgpOwotKyNlbmRpZgot KyAgICBpZiAoYXJnYyA9PSAxMjM0NSkgeyAgLyogYW4gdW5saWtlbHkgdmFsdWUgPCAyXjE2LCBp biBjYXNlIHVuaW5pdGVkICovIC8qIHNldCBicmVha3BvaW50IDYgaGVyZSAqLwotKwlmcHJpbnRm IChzdGRlcnIsICJ1c2FnZTogIGZhY3RvcmlhbCA8bnVtYmVyPlxuIik7Ci0rCXJldHVybiAxOwot KyAgICB9Ci0rICAgIHByaW50ZiAoIiVkXG4iLCBmYWN0b3JpYWwgKGF0b2kgKCI2IikpKTsgIC8q IHNldCBicmVha3BvaW50IDEgaGVyZSAqLwotKyAgICAvKiBzZXQgYnJlYWtwb2ludCAxMiBoZXJl ICovCi0rICAgIG1hcmtlcjEgKCk7ICAvKiBzZXQgYnJlYWtwb2ludCAxMSBoZXJlICovCi0rICAg IG1hcmtlcjIgKDQzKTsgLyogc2V0IGJyZWFrcG9pbnQgMjAgaGVyZSAqLwotKyAgICBtYXJrZXIz ICgic3RhY2siLCAidHJhY2UiKTsgLyogc2V0IGJyZWFrcG9pbnQgMjEgaGVyZSAqLwotKyAgICBt YXJrZXI0ICgxNzc2MDE5NzZMKTsKLSsgICAgYXJnYyA9IChhcmdjID09IDEyMzQ1KTsgLyogVGhp cyBpcyBzaWxseSwgYnV0IHdlIGNhbiBzdGVwIG9mZiBvZiBpdCAqLyAvKiBzZXQgYnJlYWtwb2lu dCAyIGhlcmUgKi8KLSsgICAgcmV0dXJuIGFyZ2M7ICAvKiBzZXQgYnJlYWtwb2ludCAxMCBoZXJl ICovCi0rfQotKwotKyNpZmRlZiBQUk9UT1RZUEVTCi0raW50IGZhY3RvcmlhbCAoaW50IHZhbHVl KQotKyNlbHNlCi0raW50IGZhY3RvcmlhbCAodmFsdWUpCi0raW50IHZhbHVlOwotKyNlbmRpZgot K3sKLSsgIGlmICh2YWx1ZSA+IDEpIHsgIC8qIHNldCBicmVha3BvaW50IDcgaGVyZSAqLwotKwl2 YWx1ZSAqPSBmYWN0b3JpYWwgKHZhbHVlIC0gMSk7Ci0rICAgIH0KLSsgICAgcmV0dXJuICh2YWx1 ZSk7IC8qIHNldCBicmVha3BvaW50IDE5IGhlcmUgKi8KLSt9Ci0rCi0rI2lmZGVmIFBST1RPVFlQ RVMKLStpbnQgbXVsdGlfbGluZV9pZl9jb25kaXRpb25hbCAoaW50IGEsIGludCBiLCBpbnQgYykK LSsjZWxzZQotK2ludCBtdWx0aV9saW5lX2lmX2NvbmRpdGlvbmFsIChhLCBiLCBjKQotKyAgaW50 IGEsIGIsIGM7Ci0rI2VuZGlmCi0rewotKyAgaWYgKGEgICAgLyogc2V0IGJyZWFrcG9pbnQgMyBo ZXJlICovCi0rICAgICAgJiYgYgotKyAgICAgICYmIGMpCi0rICAgIHJldHVybiAwOwotKyAgZWxz ZQotKyAgICByZXR1cm4gMTsKLSt9Ci0rCi0rI2lmZGVmIFBST1RPVFlQRVMKLStpbnQgbXVsdGlf bGluZV93aGlsZV9jb25kaXRpb25hbCAoaW50IGEsIGludCBiLCBpbnQgYykKLSsjZWxzZQotK2lu dCBtdWx0aV9saW5lX3doaWxlX2NvbmRpdGlvbmFsIChhLCBiLCBjKQotKyAgaW50IGEsIGIsIGM7 Ci0rI2VuZGlmCi0rewotKyAgd2hpbGUgKGEgLyogc2V0IGJyZWFrcG9pbnQgNCBoZXJlICovCi0r ICAgICAgJiYgYgotKyAgICAgICYmIGMpCi0rICAgIHsKLSsgICAgICBhLS0sIGItLSwgYy0tOwot KyAgICB9Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2JyZWFrLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5waWUv YnJlYWsuZXhwCi1AQCAtMCwwICsxLDk1NCBAQAotKyMgICBDb3B5cmlnaHQgMTk4OCwgMTk5MCwg MTk5MSwgMTk5MiwgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLSsjICAgMjAw MCwgMjAwMiwgMjAwMywgMjAwNAotKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ bGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBQbGVh c2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRkaXRpb25zIHRvIHRoaXMgZmls ZSB0bzoKLSsjIGJ1Zy1nZGJAcHJlcC5haS5taXQuZWR1Ci0rCi0rIyBUaGlzIGZpbGUgd2FzIHdy aXR0ZW4gYnkgUm9iIFNhdm95ZS4gKHJvYkBjeWdudXMuY29tKQotKwotKyMgVGVzdCB0aGUgc2Ft ZSBzdHVmZiBidXQgd2l0aCBQSUUgZXhlY3V0YWJsZXMKLSsKLStzZXQgdGVzdGZpbGUgImJyZWFr IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgc3JjZmlsZTEgJHt0ZXN0ZmlsZX0x LmMKLStzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0rCi0r aWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2Jp bmZpbGV9MC5vIiBvYmplY3Qge2RlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS13IC1mcGllIC1waWUi fV0gIT0gIiIgfSB7Ci0rICAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNv bXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxs eSBmYWlsLiIKLSt9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7c3JjZmlsZTF9IiAiJHtiaW5maWxlfTEubyIgb2JqZWN0IHtkZWJ1ZyAiYWRkaXRpb25hbF9m bGFncz0tdyAtZnBpZSAtcGllIn1dICE9ICIiIH0gewotKyAgICAgZ2RiX3N1cHByZXNzX2VudGly ZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmls ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0rfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAi JHtiaW5maWxlfTAubyAke2JpbmZpbGV9MS5vIiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVi dWcgImFkZGl0aW9uYWxfZmxhZ3M9LXcgLWZwaWUgLXBpZSJ9XSAhPSAiIiB9IHsKLSsgICAgIGdk Yl9zdXBwcmVzc19lbnRpcmVfZmlsZSAiVGVzdGNhc2UgY29tcGlsZSBmYWlsZWQsIHNvIGFsbCB0 ZXN0cyBpbiB0aGlzIGZpbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGZhaWwuIgotK30KLSsKLStpZiBb Z2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Z2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0raWYgW3RhcmdldF9pbmZvIGV4aXN0cyBnZGJf c3R1Yl0gewotKyAgICBnZGJfc3RlcF9mb3Jfc3R1YjsKLSt9Ci0rIwotKyMgdGVzdCBzaW1wbGUg YnJlYWtwb2ludCBzZXR0aW5nIGNvbW1hbmRzCi0rIwotKwotKyMgVGVzdCBkZWxldGluZyBhbGwg YnJlYWtwb2ludHMgd2hlbiB0aGVyZSBhcmUgbm9uZSBpbnN0YWxsZWQsCi0rIyBHREIgc2hvdWxk IG5vdCBwcm9tcHQgZm9yIGNvbmZpcm1hdGlvbi4KLSsjIE5vdGUgdGhhdCBnZGItaW5pdC5leHAg cHJvdmlkZXMgYSAiZGVsZXRlX2JyZWFrcG9pbnRzIiBwcm9jCi0rIyBmb3IgZ2VuZXJhbCB1c2Ug ZWxzZXdoZXJlLgotKwotK3NlbmRfZ2RiICJkZWxldGUgYnJlYWtwb2ludHNcbiIKLStnZGJfZXhw ZWN0IHsKLSsgICAgIC1yZSAiRGVsZXRlIGFsbCBicmVha3BvaW50cy4qJCIgewotKwkgICAgc2Vu ZF9nZGIgInlcbiIKLSsJICAgIGdkYl9leHBlY3QgewotKwkJLXJlICIkZ2RiX3Byb21wdCAkIiB7 Ci0rCQkgICAgZmFpbCAiRGVsZXRlIGFsbCBicmVha3BvaW50cyB3aGVuIG5vbmUgKHVuZXhwZWN0 ZWQgcHJvbXB0KSIKLSsJCX0KLSsJCXRpbWVvdXQJeyBmYWlsICJEZWxldGUgYWxsIGJyZWFrcG9p bnRzIHdoZW4gbm9uZSAodGltZW91dCBhZnRlciB1bmV4cGVjdGVkIHByb21wdCkiIH0KLSsJICAg IH0KLSsJfQotKyAgICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiICAgICAgIHsgcGFzcyAiRGVsZXRl IGFsbCBicmVha3BvaW50cyB3aGVuIG5vbmUiIH0KLSsgICAgdGltZW91dAkgICAgICAgICAgICB7 IGZhaWwgIkRlbGV0ZSBhbGwgYnJlYWtwb2ludHMgd2hlbiBub25lICh0aW1lb3V0KSIgfQotK30K LSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGZ1bmN0aW9uCi0rIwotK2dkYl90ZXN0ICJicmVhayBt YWluIiBcCi0rICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZS4qIiBc Ci0rICAgICJicmVha3BvaW50IGZ1bmN0aW9uIgotKwotKyMKLSsjIHRlc3QgYnJlYWsgYXQgcXVv dGVkIGZ1bmN0aW9uCi0rIwotK2dkYl90ZXN0ICJicmVhayBcIm1hcmtlcjJcIiIgXAotKyAgICAi QnJlYWtwb2ludC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUxLCBsaW5lLioiIFwKLSsgICAgImJyZWFr cG9pbnQgcXVvdGVkIGZ1bmN0aW9uIgotKwotKyMKLSsjIHRlc3QgYnJlYWsgYXQgZnVuY3Rpb24g aW4gZmlsZQotKyMKLStnZGJfdGVzdCAiYnJlYWsgJHNyY2ZpbGU6ZmFjdG9yaWFsIiBcCi0rICAg ICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZS4qIiBcCi0rICAgICJicmVh a3BvaW50IGZ1bmN0aW9uIGluIGZpbGUiCi0rCi0rc2V0IGJwX2xvY2F0aW9uMSBbZ2RiX2dldF9s aW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMSBoZXJlIl0KLSsKLSsjCi0rIyB0ZXN0IGJyZWFr IGF0IGxpbmUgbnVtYmVyCi0rIwotKyMgTm90ZSB0aGF0IHRoZSBkZWZhdWx0IHNvdXJjZSBmaWxl IGlzIHRoZSBsYXN0IG9uZSB3aG9zZSBzb3VyY2UgdGV4dAotKyMgd2FzIHByaW50ZWQuICBGb3Ig bmF0aXZlIGRlYnVnZ2luZywgYmVmb3JlIHdlJ3ZlIGV4ZWN1dGVkIHRoZQotKyMgcHJvZ3JhbSwg dGhpcyBpcyB0aGUgZmlsZSBjb250YWluaW5nIG1haW4sIGJ1dCBmb3IgcmVtb3RlIGRlYnVnZ2lu ZywKLSsjIGl0J3Mgd2hlcmV2ZXIgdGhlIHByb2Nlc3NvciB3YXMgc3RvcHBlZCB3aGVuIHdlIGNv bm5lY3RlZCB0byB0aGUKLSsjIGJvYXJkLiAgU28sIHRvIGJlIHN1cmUsIHdlIGRvIGEgbGlzdCBj b21tYW5kLgotKyMKLStnZGJfdGVzdCAibGlzdCBtYWluIiBcCi0rICAgICIuKm1haW4gXFwoYXJn YywgYXJndiwgZW52cFxcKS4qIiBcCi0rICAgICJ1c2UgYGxpc3QnIHRvIGVzdGFibGlzaCBkZWZh dWx0IHNvdXJjZSBmaWxlIgotK2dkYl90ZXN0ICJicmVhayAkYnBfbG9jYXRpb24xIiBcCi0rICAg ICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBfbG9jYXRpb24xXFwu IiBcCi0rICAgICJicmVha3BvaW50IGxpbmUgbnVtYmVyIgotKwotKyMKLSsjIHRlc3QgZHVwbGlj YXRlIGJyZWFrcG9pbnQKLSsjCi0rZ2RiX3Rlc3QgImJyZWFrICRicF9sb2NhdGlvbjEiIFwKLSsg ICAgIk5vdGU6IGJyZWFrcG9pbnQgXFswLTlcXSsgYWxzbyBzZXQgYXQgcGMuKkJyZWFrcG9pbnQg XFswLTlcXSsgYXQuKiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUgJGJwX2xvY2F0aW9uMVxcLiIgXAot KyAgICAiYnJlYWtwb2ludCBkdXBsaWNhdGUiCi0rCi0rc2V0IGJwX2xvY2F0aW9uMiBbZ2RiX2dl dF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMiBoZXJlIl0KLSsKLSsjCi0rIyB0ZXN0IGJy ZWFrIGF0IGxpbmUgbnVtYmVyIGluIGZpbGUKLSsjCi0rZ2RiX3Rlc3QgImJyZWFrICRzcmNmaWxl OiRicF9sb2NhdGlvbjIiIFwKLSsgICAgIkJyZWFrcG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxl LCBsaW5lICRicF9sb2NhdGlvbjJcXC4iIFwKLSsgICAgImJyZWFrcG9pbnQgbGluZSBudW1iZXIg aW4gZmlsZSIKLSsKLStzZXQgYnBfbG9jYXRpb24zIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQg YnJlYWtwb2ludCAzIGhlcmUiXQotK3NldCBicF9sb2NhdGlvbjQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInNldCBicmVha3BvaW50IDQgaGVyZSJdCi0rCi0rIwotKyMgVGVzdCBwdXR0aW5nIGEgYnJl YWsgYXQgdGhlIHN0YXJ0IG9mIGEgbXVsdGktbGluZSBpZiBjb25kaXRpb25hbC4KLSsjIFZlcmlm eSB0aGUgYnJlYWtwb2ludCB3YXMgcHV0IGF0IHRoZSBzdGFydCBvZiB0aGUgY29uZGl0aW9uYWwu Ci0rIwotK2dkYl90ZXN0ICJicmVhayBtdWx0aV9saW5lX2lmX2NvbmRpdGlvbmFsIiBcCi0rICAg ICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBfbG9jYXRpb24zXFwu IiBcCi0rICAgICJicmVha3BvaW50IGF0IHN0YXJ0IG9mIG11bHRpIGxpbmUgaWYgY29uZGl0aW9u YWwiCi0rCi0rZ2RiX3Rlc3QgImJyZWFrIG11bHRpX2xpbmVfd2hpbGVfY29uZGl0aW9uYWwiIFwK LSsgICAgIkJyZWFrcG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxlLCBsaW5lICRicF9sb2NhdGlv bjRcXC4iIFwKLSsgICAgImJyZWFrcG9pbnQgYXQgc3RhcnQgb2YgbXVsdGkgbGluZSB3aGlsZSBj b25kaXRpb25hbCIKLSsKLStzZXQgYnBfbG9jYXRpb241IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJz ZXQgYnJlYWtwb2ludCA1IGhlcmUiXQotK3NldCBicF9sb2NhdGlvbjYgW2dkYl9nZXRfbGluZV9u dW1iZXIgInNldCBicmVha3BvaW50IDYgaGVyZSJdCi0rCi0rIwotKyMgY2hlY2sgdG8gc2VlIHdo YXQgYnJlYWtwb2ludHMgYXJlIHNldAotKyMKLStpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYl9z dHViXSB7Ci0rICAgIHNldCBtYWluX2xpbmUgJGJwX2xvY2F0aW9uNQotK30gZWxzZSB7Ci0rICAg IHNldCBtYWluX2xpbmUgJGJwX2xvY2F0aW9uNgotK30KLSsKLStzZXQgcHJvdG8gIiIKLSsKLStz ZXQgYnBfbG9jYXRpb243IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCA3IGhl cmUiXQotK3NldCBicF9sb2NhdGlvbjggW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3Bv aW50IDggaGVyZSIgJHNyY2ZpbGUxXQotK3NldCBicF9sb2NhdGlvbjkgW2dkYl9nZXRfbGluZV9u dW1iZXIgInNldCBicmVha3BvaW50IDkgaGVyZSIgJHNyY2ZpbGUxXQotKwotKyMgVGVzdCBhIHBl bmRpbmcgYnJlYWtwb2ludCBpbiBQSUUgZXhlY3V0YWJsZSBkb2VzIG5vdCBjcmFzaCBsYXRlciBH REIuCi0rZ2RiX2JyZWFrcG9pbnQgIm5vbl9leGlzdGVudF9mdW5jdGlvbiIgYWxsb3ctcGVuZGlu ZwotKwotK2dkYl90ZXN0ICJpbmZvIGJyZWFrIiBcCi0rICAgICJOdW1cWyBcXStUeXBlXFsgXF0r RGlzcCBFbmIgQWRkcmVzc1xbIFxdK1doYXQuKgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50 ICAgICBrZWVwIHkuKiBpbiBtYWluIGF0IC4qJHNyY2ZpbGU6JG1haW5fbGluZS4qCi0rXFswLTlc XStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1hcmtlcjIgYXQgLiokc3JjZmls ZTE6KCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSkuKgotK1xbMC05XF0rXFtcdCBcXSticmVh a3BvaW50ICAgICBrZWVwIHkuKiBpbiBmYWN0b3JpYWwkcHJvdG8gYXQgLiokc3JjZmlsZTokYnBf bG9jYXRpb243LioKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5LiogaW4g bWFpbiBhdCAuKiRzcmNmaWxlOiRicF9sb2NhdGlvbjEuKgotK1xbMC05XF0rXFtcdCBcXSticmVh a3BvaW50ICAgICBrZWVwIHkuKiBpbiBtYWluIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9uMS4q Ci0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1haW4gYXQgLiok c3JjZmlsZTokYnBfbG9jYXRpb24yLioKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAg a2VlcCB5LiogaW4gbXVsdGlfbGluZV9pZl9jb25kaXRpb25hbCBhdCAuKiRzcmNmaWxlOiRicF9s b2NhdGlvbjMuKgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHkuKiBpbiBt dWx0aV9saW5lX3doaWxlX2NvbmRpdGlvbmFsIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9uNC4q Ci0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIDxQRU5ESU5HPiAqbm9u X2V4aXN0ZW50X2Z1bmN0aW9uIiBcCi0rICAgICJicmVha3BvaW50IGluZm8iCi0rCi0rIyBGSVhN RTogVGhlIHJlc3Qgb2YgdGhpcyB0ZXN0IGRvZXNuJ3Qgd29yayB3aXRoIGFueXRoaW5nIHRoYXQg Y2FuJ3QKLSsjIGhhbmRsZSBhcmd1bWVudHMuCi0rIyBIdWg/IFRoZXJlIGRvZXNuJ3QgKmFwcGVh ciogdG8gYmUgYW55dGhpbmcgdGhhdCBwYXNzZXMgYXJndW1lbnRzCi0rIyBiZWxvdy4KLStpZiBb aXN0YXJnZXQgIm1pcHMtaWR0LSoiXSB0aGVuIHsKLSsgICAgcmV0dXJuCi0rfQotKwotKyMKLSsj IHJ1biB1bnRpbCB0aGUgYnJlYWtwb2ludCBhdCBtYWluIGlzIGhpdC4gRm9yIG5vbi1zdHVicy11 c2luZyB0YXJnZXRzLgotKyMKLStpZiAhW3RhcmdldF9pbmZvIGV4aXN0cyB1c2VfZ2RiX3N0dWJd IHsKLSsgIGlmIFtpc3RhcmdldCAiKi0qLXZ4d29ya3MqIl0gdGhlbiB7Ci0rICAgIHNlbmRfZ2Ri ICJydW4gdnhtYWluIFwiMlwiXG4iCi0rICAgIHNldCB0aW1lb3V0IDEyMAotKyAgICB2ZXJib3Nl ICJUaW1lb3V0IGlzIG5vdyAkdGltZW91dCBzZWNvbmRzIiAyCi0rICB9IGVsc2UgewotKwlzZW5k X2dkYiAicnVuXG4iCi0rICB9Ci0rICBnZGJfZXhwZWN0IHsKLSsgICAgLXJlICJUaGUgcHJvZ3Jh bSAuKiBoYXMgYmVlbiBzdGFydGVkIGFscmVhZHkuKnkgb3Igbi4gJCIgewotKwlzZW5kX2dkYiAi eVxuIgotKwlleHBfY29udGludWUKLSsgICAgfQotKyAgICAtcmUgIlN0YXJ0aW5nIHByb2dyYW0u KkJyZWFrcG9pbnQgXFswLTlcXSssLiptYWluIC4qYXJnYy4qYXJndi4qIGF0IC4qJHNyY2ZpbGU6 JGJwX2xvY2F0aW9uNi4qJGJwX2xvY2F0aW9uNlxbXHQgXF0raWYgLmFyZ2MuKiBcey4qJGdkYl9w cm9tcHQgJCJcCi0rCSAgICAgICAgICAgICAgICAgICAgeyBwYXNzICJydW4gdW50aWwgZnVuY3Rp b24gYnJlYWtwb2ludCIgfQotKyAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIgICAgICAgeyBmYWls ICJydW4gdW50aWwgZnVuY3Rpb24gYnJlYWtwb2ludCIgfQotKyAgICB0aW1lb3V0CSAgICAgICAg ICAgIHsgZmFpbCAicnVuIHVudGlsIGZ1bmN0aW9uIGJyZWFrcG9pbnQgKHRpbWVvdXQpIiB9Ci0r ICB9Ci0rfSBlbHNlIHsKLSsgICAgaWYgIVt0YXJnZXRfaW5mbyBleGlzdHMgZ2RiX3N0dWJdIHsK LSsJZ2RiX3Rlc3QgY29udGludWUgIi4qQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxd KywgbWFpbiBcXChhcmdjPS4qLCBhcmd2PS4qLCBlbnZwPS4qXFwpIGF0IC4qJHNyY2ZpbGU6JGJw X2xvY2F0aW9uNi4qJGJwX2xvY2F0aW9uNlxbXHQgXF0raWYgLmFyZ2MuKlx7LioiICJzdHViIGNv bnRpbnVlIgotKyAgICB9Ci0rfQotKwotKyMKLSsjIHJ1biB1bnRpbCB0aGUgYnJlYWtwb2ludCBh dCBhIGxpbmUgbnVtYmVyCi0rIwotK2dkYl90ZXN0IGNvbnRpbnVlICJDb250aW51aW5nXFwuLipC cmVha3BvaW50IFxbMC05XF0rLCBtYWluIFxcKGFyZ2M9LiosIGFyZ3Y9LiosIGVudnA9LipcXCkg YXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb24xLiokYnBfbG9jYXRpb24xXFtcdCBcXStwcmludGYu KmZhY3RvcmlhbC4qIiBcCi0rCQkJInJ1biB1bnRpbCBicmVha3BvaW50IHNldCBhdCBhIGxpbmUg bnVtYmVyIgotKwotKyMKLSsjIFJ1biB1bnRpbCB0aGUgYnJlYWtwb2ludCBzZXQgaW4gYSBmdW5j dGlvbiBpbiBhIGZpbGUKLSsjCi0rZm9yIHtzZXQgaSA2fSB7JGkgPj0gMX0ge2luY3IgaSAtMX0g ewotKwlnZGJfdGVzdCBjb250aW51ZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxd KywgZmFjdG9yaWFsIFxcKHZhbHVlPSRpXFwpIGF0IC4qJHNyY2ZpbGU6JGJwX2xvY2F0aW9uNy4q JGJwX2xvY2F0aW9uN1xbXHQgXF0rLippZiAudmFsdWUgPiAxLiBcey4qIiBcCi0rCQkJInJ1biB1 bnRpbCBmaWxlOmZ1bmN0aW9uKCRpKSBicmVha3BvaW50IgotK30KLSsKLSsjCi0rIyBSdW4gdW50 aWwgdGhlIGJyZWFrcG9pbnQgc2V0IGF0IGEgcXVvdGVkIGZ1bmN0aW9uCi0rIwotK2dkYl90ZXN0 IGNvbnRpbnVlICJDb250aW51aW5nXFwuLipCcmVha3BvaW50IFxbMC05XF0rLCAoMHhcWzAtOWEt ZlxdKyBpbiApP21hcmtlcjIgXFwoYT00M1xcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9u OHwkYnBfbG9jYXRpb245KS4qIiBcCi0rCQkicnVuIHVudGlsIHF1b3RlZCBicmVha3BvaW50Igot KyMKLSsjIHJ1biB1bnRpbCB0aGUgZmlsZTpmdW5jdGlvbiBicmVha3BvaW50IGF0IGEgbGluZSBu dW1iZXIgaW4gYSBmaWxlCi0rIwotK2dkYl90ZXN0IGNvbnRpbnVlICJDb250aW51aW5nXFwuLipC cmVha3BvaW50IFxbMC05XF0rLCBtYWluIFxcKGFyZ2M9LiosIGFyZ3Y9LiosIGVudnA9LipcXCkg YXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb24yLiokYnBfbG9jYXRpb24yXFtcdCBcXSthcmdjID0g XFwoYXJnYyA9PSAxMjM0NVxcKTsuKiIgXAotKwkJInJ1biB1bnRpbCBmaWxlOmxpbmVudW0gYnJl YWtwb2ludCIKLSsKLSsjIFRlc3QgYnJlYWsgYXQgb2Zmc2V0ICsxCi0rc2V0IGJwX2xvY2F0aW9u MTAgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDEwIGhlcmUiXQotKwotK2dk Yl90ZXN0ICJicmVhayArMSIgXAotKyAgICAiQnJlYWtwb2ludC4qYXQuKiBmaWxlIC4qJHNyY2Zp bGUsIGxpbmUgJGJwX2xvY2F0aW9uMTBcXC4iIFwKLSsgICAgImJyZWFrcG9pbnQgb2Zmc2V0ICsx IgotKwotKyMgQ2hlY2sgdG8gc2VlIGlmIGJyZWFrcG9pbnQgaXMgaGl0IHdoZW4gc3RlcHBlZCBv bnRvCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICAgIi4qQnJlYWtwb2ludCBcWzAtOVxdKywg bWFpbiBcXChhcmdjPS4qLCBhcmd2PS4qLCBlbnZwPS4qXFwpIGF0IC4qJHNyY2ZpbGU6JGJwX2xv Y2F0aW9uMTAuKiRicF9sb2NhdGlvbjEwXFtcdCBcXStyZXR1cm4gYXJnYzsuKmJyZWFrcG9pbnQg MTAgaGVyZS4qIiBcCi0rICAgICJzdGVwIG9udG8gYnJlYWtwb2ludCIKLSsKLSsjCi0rIyBkZWxl dGUgYWxsIGJyZWFrcG9pbnRzIHNvIHdlIGNhbiBzdGFydCBvdmVyLCBjb3Vyc2UgdGhpcyBjYW4g YmUgYSB0ZXN0IHRvbwotKyMKLStkZWxldGVfYnJlYWtwb2ludHMKLSsKLSsjCi0rIyB0ZXN0IHRl bXBvcmFyeSBicmVha3BvaW50IGF0IGZ1bmN0aW9uCi0rIwotKwotK2dkYl90ZXN0ICJ0YnJlYWsg bWFpbiIgInJlYWtwb2ludC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUuKiIgIlRlbXBvcmFy eSBicmVha3BvaW50IGZ1bmN0aW9uIgotKwotKyMKLSsjIHRlc3QgYnJlYWsgYXQgZnVuY3Rpb24g aW4gZmlsZQotKyMKLSsKLStnZGJfdGVzdCAidGJyZWFrICRzcmNmaWxlOmZhY3RvcmlhbCIgInJl YWtwb2ludC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUuKiIgXAotKwkiVGVtcG9yYXJ5IGJy ZWFrcG9pbnQgZnVuY3Rpb24gaW4gZmlsZSIKLSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGxpbmUg bnVtYmVyCi0rIwotK3NlbmRfZ2RiICJ0YnJlYWsgJGJwX2xvY2F0aW9uMVxuIgotK2dkYl9leHBl Y3QgewotKyAgICAtcmUgInJlYWtwb2ludC4qYXQuKiBmaWxlIC4qJHNyY2ZpbGUsIGxpbmUgJGJw X2xvY2F0aW9uMS4qJGdkYl9wcm9tcHQgJCIgeyBwYXNzICJUZW1wb3JhcnkgYnJlYWtwb2ludCBs aW5lIG51bWJlciAjMSIgfQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgICB7IHBhc3MgIlRlbXBv cmFyeSBicmVha3BvaW50IGxpbmUgbnVtYmVyICMxIiB9Ci0rCXRpbWVvdXQJICAgIHsgZmFpbCAi YnJlYWtwb2ludCBsaW5lIG51bWJlciAjMSAodGltZW91dCkiIH0KLSt9Ci0rCi0rZ2RiX3Rlc3Qg InRicmVhayAkYnBfbG9jYXRpb242IiAicmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwg bGluZSAkYnBfbG9jYXRpb242LioiICJUZW1wb3JhcnkgYnJlYWtwb2ludCBsaW5lIG51bWJlciAj MiIKLSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGxpbmUgbnVtYmVyIGluIGZpbGUKLSsjCi0rc2Vu ZF9nZGIgInRicmVhayAkc3JjZmlsZTokYnBfbG9jYXRpb24yXG4iCi0rZ2RiX2V4cGVjdCB7Ci0r ICAgIC1yZSAicmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBfbG9jYXRp b24yLiokZ2RiX3Byb21wdCAkIiB7IHBhc3MgIlRlbXBvcmFyeSBicmVha3BvaW50IGxpbmUgbnVt YmVyIGluIGZpbGUgIzEiIH0KLSsJLXJlICIuKiRnZGJfcHJvbXB0ICQiICAgeyBwYXNzICJUZW1w b3JhcnkgYnJlYWtwb2ludCBsaW5lIG51bWJlciBpbiBmaWxlICMxIiB9Ci0rCXRpbWVvdXQJICAg IHsgZmFpbCAiVGVtcG9yYXJ5IGJyZWFrcG9pbnQgbGluZSBudW1iZXIgaW4gZmlsZSAjMSAodGlt ZW91dCkiIH0KLSt9Ci0rCi0rc2V0IGJwX2xvY2F0aW9uMTEgW2dkYl9nZXRfbGluZV9udW1iZXIg InNldCBicmVha3BvaW50IDExIGhlcmUiXQotK2dkYl90ZXN0ICAidGJyZWFrICRzcmNmaWxlOiRi cF9sb2NhdGlvbjExIiAicmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZSwgbGluZSAkYnBf bG9jYXRpb24xMS4qIiAiVGVtcG9yYXJ5IGJyZWFrcG9pbnQgbGluZSBudW1iZXIgaW4gZmlsZSAj MiIKLSsKLSsjCi0rIyBjaGVjayB0byBzZWUgd2hhdCBicmVha3BvaW50cyBhcmUgc2V0ICh0ZW1w b3JhcnkgdGhpcyB0aW1lKQotKyMKLStnZGJfdGVzdCAiaW5mbyBicmVhayIgIk51bS4qVHlwZS4q RGlzcCBFbmIgQWRkcmVzcy4qV2hhdC4qXFtcclxuXF0KLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtw b2ludCAgICAgZGVsLip5LippbiBtYWluIGF0IC4qJHNyY2ZpbGU6JG1haW5fbGluZS4qXFtcclxu XF0KLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAgZGVsLip5LippbiBmYWN0b3JpYWwk cHJvdG8gYXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb243LipcW1xyXG5cXQotK1xbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBkZWwuKnkuKmluIG1haW4gYXQgLiokc3JjZmlsZTokYnBfbG9j YXRpb24xLipcW1xyXG5cXQotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBkZWwuKnku KmluIG1haW4gYXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb242LipcW1xyXG5cXQotK1xbMC05XF0r XFtcdCBcXSticmVha3BvaW50ICAgICBkZWwuKnkuKmluIG1haW4gYXQgLiokc3JjZmlsZTokYnBf bG9jYXRpb24yLipcW1xyXG5cXQotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBkZWwu KnkuKmluIG1haW4gYXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb24xMS4qIiBcCi0rICAgICJUZW1w b3JhcnkgYnJlYWtwb2ludCBpbmZvIgotKwotKwotKyMqKioqKioqKioqKgotKwotKyMgVmVyaWZ5 IHRoYXQgY2F0Y2hwb2ludHMgZm9yIGZvcmssIHZmb3JrIGFuZCBleGVjIGRvbid0IHRyaWdnZXIK LSsjIGluYXBwcm9wcmlhdGVseS4gIChUaGVyZSBhcmUgbm8gY2FsbHMgdG8gdGhvc2Ugc3lzdGVt IGZ1bmN0aW9ucwotKyMgaW4gdGhpcyB0ZXN0IHByb2dyYW0uKQotKyMKLStpZiAhW3J1bnRvX21h aW5dIHRoZW4geyBmYWlsICJicmVhayB0ZXN0cyBzdXBwcmVzc2VkIiB9Ci0rCi0rc2VuZF9nZGIg ImNhdGNoXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIkxpc3Qgb2YgY2F0Y2ggc3ViY29tbWFu ZHM6LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bhc3MgImNhdGNoIHJlcXVpcmVzIGFu IGV2ZW50IG5hbWUifQotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwg ImNhdGNoIHJlcXVpcmVzIGFuIGV2ZW50IG5hbWUifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVv dXQpIGNhdGNoIHJlcXVpcmVzIGFuIGV2ZW50IG5hbWUifQotK30KLSsKLSsKLStzZXQgbmFtZSAi c2V0IGNhdGNoIGZvcmssIG5ldmVyIGV4cGVjdGVkIHRvIHRyaWdnZXIiCi0rc2VuZF9nZGIgImNh dGNoIGZvcmtcbiIKLStnZGJfZXhwZWN0IHsKLSsgIC1yZSAiQ2F0Y2hwb2ludCBcWzAtOVxdKiAu Zm9yay4uKiRnZGJfcHJvbXB0ICQiCi0rICAgICAgICAgIHtwYXNzICRuYW1lfQotKyAgLXJlICJD YXRjaCBvZiBmb3JrIG5vdCB5ZXQgaW1wbGVtZW50ZWQuKiRnZGJfcHJvbXB0ICQiCi0rCSAge3Bh c3MgJG5hbWV9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiCi0rICAgICAgICAgIHtmYWlsICRuYW1l fQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpICRuYW1lIn0KLSt9Ci0rCi0rCi0rc2V0IG5h bWUgInNldCBjYXRjaCB2Zm9yaywgbmV2ZXIgZXhwZWN0ZWQgdG8gdHJpZ2dlciIKLStzZW5kX2dk YiAiY2F0Y2ggdmZvcmtcbiIKLSsKLSsjIElmIHdlIGFyZSBvbiBIUC1VWCAxMC4yMCwgd2UgZXhw ZWN0IGFuIGVycm9yIG1lc3NhZ2UgdG8gYmUKLSsjIHByaW50ZWQgaWYgd2UgdHlwZSAiY2F0Y2gg dmZvcmsiIGF0IHRoZSBnZGIgZ2RiX3Byb21wdC4gIFRoaXMgaXMKLSsjIGJlY2F1c2Ugb24gSFAt VVggMTAuMjAsIHdlIGNhbm5vdCBjYXRjaCB2Zm9yayBldmVudHMuCi0rCi0raWYgW2lzdGFyZ2V0 ICJocHBhKi1ocC1ocHV4MTAuMjAiXSB0aGVuIHsKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAi Q2F0Y2ggb2YgdmZvcmsgZXZlbnRzIG5vdCBzdXBwb3J0ZWQgb24gSFAtVVggMTAuMjAuLiokZ2Ri X3Byb21wdCAkIgotKwkJe3Bhc3MgJG5hbWV9Ci0rCS1yZSAiJGdkYl9wcm9tcHQgJCIKLSsJCXtm YWlsICRuYW1lfQotKwl0aW1lb3V0IHtmYWlsICIodGltZW91dCkgJG5hbWUifQotKyAgICB9Ci0r fSBlbHNlIHsKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiQ2F0Y2hwb2ludCBcWzAtOVxdKiAu dmZvcmsuLiokZ2RiX3Byb21wdCAkIgotKwkJe3Bhc3MgJG5hbWV9Ci0rCS1yZSAiQ2F0Y2ggb2Yg dmZvcmsgbm90IHlldCBpbXBsZW1lbnRlZC4qJGdkYl9wcm9tcHQgJCIKLSsJCXtwYXNzICRuYW1l fQotKwktcmUgIiRnZGJfcHJvbXB0ICQiCi0rCQl7ZmFpbCAkbmFtZX0KLSsJdGltZW91dCB7ZmFp bCAiKHRpbWVvdXQpICRuYW1lIn0KLSsgICAgfQotK30KLSsKLStzZXQgbmFtZSAic2V0IGNhdGNo IGV4ZWMsIG5ldmVyIGV4cGVjdGVkIHRvIHRyaWdnZXIiCi0rc2VuZF9nZGIgImNhdGNoIGV4ZWNc biIKLStnZGJfZXhwZWN0IHsKLSsgIC1yZSAiQ2F0Y2hwb2ludCBcWzAtOVxdKiAuZXhlYy4uKiRn ZGJfcHJvbXB0ICQiCi0rICAgICAgICAgIHtwYXNzICRuYW1lfQotKyAgLXJlICJDYXRjaCBvZiBl eGVjIG5vdCB5ZXQgaW1wbGVtZW50ZWQuKiRnZGJfcHJvbXB0ICQiCi0rCSAge3Bhc3MgJG5hbWV9 Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiIHtmYWlsICRuYW1lfQotKyAgdGltZW91dCB7ZmFpbCAi KHRpbWVvdXQpICRuYW1lIn0KLSt9Ci0rCi0rIyBWZXJpZnkgdGhhdCBHREIgcmVzcG9uZHMgZ3Jh Y2VmdWxseSB3aGVuIGFza2VkIHRvIHNldCBhIGJyZWFrcG9pbnQKLSsjIG9uIGEgbm9uZXhpc3Rl bnQgc291cmNlIGxpbmUuCi0rIwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGJyZWFrcG9pbnQg cGVuZGluZyBvZmYiCi0rZ2RiX3Rlc3QgImJyZWFrIDk5OSIgXAotKyAgICAiTm8gbGluZSA5OTkg aW4gdGhlIGN1cnJlbnQgZmlsZS4iIFwKLSsgICAgImJyZWFrIG9uIG5vbi1leGlzdGVudCBzb3Vy Y2UgbGluZSIKLSsKLSsjIFJ1biB0byB0aGUgZGVzaXJlZCBkZWZhdWx0IGxvY2F0aW9uLiBJZiBu b3QgcG9zaXRpb25lZCBoZXJlLCB0aGUKLSsjIHRlc3RzIGJlbG93IGRvbid0IHdvcmsuCi0rIwot K2dkYl90ZXN0ICJ1bnRpbCAkYnBfbG9jYXRpb24xIiAibWFpbiAuKiBhdCAuKjokYnBfbG9jYXRp b24xLioiICJ1bnRpbCBicF9sb2NhdGlvbjEiCi0rCi0rCi0rIyBWZXJpZnkgdGhhdCBHREIgYWxs b3dzIG9uZSB0byBqdXN0IHNheSAiYnJlYWsiLCB3aGljaCBpcyB0cmVhdGVkCi0rIyBhcyB0aGUg ImRlZmF1bHQiIGJyZWFrcG9pbnQuICBOb3RlIHRoYXQgR0RCIGdldHMgY3V0ZSB3aGVuIHByaW50 aW5nCi0rIyB0aGUgaW5mb3JtYXRpb25hbCBtZXNzYWdlIGFib3V0IG90aGVyIGJyZWFrcG9pbnRz IGF0IHRoZSBzYW1lCi0rIyBsb2NhdGlvbi4gIFdlJ2xsIGhpdCB0aGF0IGJpcmQgd2l0aCB0aGlz IHN0b25lIHRvby4KLSsjCi0rc2VuZF9nZGIgImJyZWFrXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAt cmUgIkJyZWFrcG9pbnQgXFswLTlcXSouKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFz cyAiYnJlYWsgb24gZGVmYXVsdCBsb2NhdGlvbiwgMXN0IHRpbWUifQotKyAgLXJlICIkZ2RiX3By b21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwgImJyZWFrIG9uIGRlZmF1bHQgbG9jYXRpb24sIDFz dCB0aW1lIn0KLSsgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBicmVhayBvbiBkZWZhdWx0IGxv Y2F0aW9uLCAxc3QgdGltZSJ9Ci0rfQotKwotK3NlbmRfZ2RiICJicmVha1xuIgotK2dkYl9leHBl Y3QgewotKyAgLXJlICJOb3RlOiBicmVha3BvaW50IFxbMC05XF0qIGFsc28gc2V0IGF0IC4qQnJl YWtwb2ludCBcWzAtOVxdKi4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJicmVh ayBvbiBkZWZhdWx0IGxvY2F0aW9uLCAybmQgdGltZSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQi XAotKyAgICAgICAgICB7ZmFpbCAiYnJlYWsgb24gZGVmYXVsdCBsb2NhdGlvbiwgMm5kIHRpbWUi fQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGJyZWFrIG9uIGRlZmF1bHQgbG9jYXRpb24s IDJuZCB0aW1lIn0KLSt9Ci0rCi0rc2VuZF9nZGIgImJyZWFrXG4iCi0rZ2RiX2V4cGVjdCB7Ci0r ICAtcmUgIk5vdGU6IGJyZWFrcG9pbnRzIFxbMC05XF0qIGFuZCBcWzAtOVxdKiBhbHNvIHNldCBh dCAuKkJyZWFrcG9pbnQgXFswLTlcXSouKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFz cyAiYnJlYWsgb24gZGVmYXVsdCBsb2NhdGlvbiwgM3JkIHRpbWUifQotKyAgLXJlICIkZ2RiX3By b21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwgImJyZWFrIG9uIGRlZmF1bHQgbG9jYXRpb24sIDNy ZCB0aW1lIn0KLSsgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBicmVhayBvbiBkZWZhdWx0IGxv Y2F0aW9uLCAzcmQgdGltZSJ9Ci0rfQotKwotK3NlbmRfZ2RiICJicmVha1xuIgotK2dkYl9leHBl Y3QgewotKyAgLXJlICJOb3RlOiBicmVha3BvaW50cyBcWzAtOVxdKiwgXFswLTlcXSogYW5kIFxb MC05XF0qIGFsc28gc2V0IGF0IC4qQnJlYWtwb2ludCBcWzAtOVxdKi4qJGdkYl9wcm9tcHQgJCJc Ci0rICAgICAgICAgIHtwYXNzICJicmVhayBvbiBkZWZhdWx0IGxvY2F0aW9uLCA0dGggdGltZSJ9 Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAiYnJlYWsgb24gZGVm YXVsdCBsb2NhdGlvbiwgNHRoIHRpbWUifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGJy ZWFrIG9uIGRlZmF1bHQgbG9jYXRpb24sIDR0aCB0aW1lIn0KLSt9Ci0rCi0rIyBWZXJpZnkgdGhh dCBhICJzaWxlbnQiIGJyZWFrcG9pbnQgY2FuIGJlIHNldCwgYW5kIHRoYXQgR0RCIGlzIGluZGVl ZAotKyMgInNpbGVudCIgYWJvdXQgaXRzIHRyaWdnZXJpbmcuCi0rIwotK2lmICFbcnVudG9fbWFp bl0gdGhlbiB7IGZhaWwgImJyZWFrIHRlc3RzIHN1cHByZXNzZWQiIH0KLSsKLStzZW5kX2dkYiAi YnJlYWsgJGJwX2xvY2F0aW9uMVxuIgotK2dkYl9leHBlY3QgewotKyAgLXJlICJCcmVha3BvaW50 IChcWzAtOVxdKikgYXQgLiosIGxpbmUgJGJwX2xvY2F0aW9uMS4qJGdkYl9wcm9tcHQgJCJcCi0r ICAgICAgICAgIHtwYXNzICJzZXQgdG8tYmUtc2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0r ICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAic2V0IHRvLWJlLXNpbGVu dCBicmVhayBicF9sb2NhdGlvbjEifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIHNldCB0 by1iZS1zaWxlbnQgYnJlYWsgYnBfbG9jYXRpb24xIn0KLSt9Ci0rCi0rc2VuZF9nZGIgImNvbW1h bmRzICRleHBlY3Rfb3V0KDEsc3RyaW5nKVxuIgotK3NlbmRfZ2RiICJzaWxlbnRcbiIKLStzZW5k X2dkYiAiZW5kXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIi4qJGdkYl9wcm9tcHQgJCJcCi0r ICAgICAgICAgIHtwYXNzICJzZXQgc2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0rICB0aW1l b3V0IHtmYWlsICIodGltZW91dCkgc2V0IHNpbGVudCBicmVhayBicF9sb2NhdGlvbjEifQotK30K LSsKLStzZW5kX2dkYiAiaW5mbyBicmVhayAkZXhwZWN0X291dCgxLHN0cmluZylcbiIKLStnZGJf ZXhwZWN0IHsKLSsgIC1yZSAiXFswLTlcXSpcWyBcdFxdKmJyZWFrcG9pbnQuKjokYnBfbG9jYXRp b24xXHJcblxbIFx0XF0qc2lsZW50LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bhc3Mg ImluZm8gc2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQi XAotKyAgICAgICAgICB7ZmFpbCAiaW5mbyBzaWxlbnQgYnJlYWsgYnBfbG9jYXRpb24xIn0KLSsg IHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBpbmZvIHNpbGVudCBicmVhayBicF9sb2NhdGlvbjEi fQotK30KLStzZW5kX2dkYiAiY29udGludWVcbiIKLStnZGJfZXhwZWN0IHsKLSsgIC1yZSAiQ29u dGludWluZy5cclxuJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJoaXQgc2lsZW50 IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAg ICB7ZmFpbCAiaGl0IHNpbGVudCBicmVhayBicF9sb2NhdGlvbjEifQotKyAgdGltZW91dCB7ZmFp bCAiKHRpbWVvdXQpIGhpdCBzaWxlbnQgYnJlYWsgYnBfbG9jYXRpb24xIn0KLSt9Ci0rc2VuZF9n ZGIgImJ0XG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIiMwICBtYWluIC4qIGF0IC4qOiRicF9s b2NhdGlvbjEuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAic3RvcHBlZCBmb3Ig c2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAg ICAgICAgICB7ZmFpbCAic3RvcHBlZCBmb3Igc2lsZW50IGJyZWFrIGJwX2xvY2F0aW9uMSJ9Ci0r ICB0aW1lb3V0IHtmYWlsICIodGltZW91dCkgc3RvcHBlZCBmb3Igc2lsZW50IGJyZWFrIGJwX2xv Y2F0aW9uMSJ9Ci0rfQotKwotKyMgVmVyaWZ5IHRoYXQgR0RCIGNhbiBhdCBsZWFzdCBwYXJzZSBh IGJyZWFrcG9pbnQgd2l0aCB0aGUKLSsjICJ0aHJlYWQiIGtleXdvcmQuICAoV2Ugd29uJ3QgYXR0 ZW1wdCB0byB0ZXN0IGhlcmUgdGhhdCBhCi0rIyB0aHJlYWQtc3BlY2lmaWMgYnJlYWtwb2ludCBy ZWFsbHkgdHJpZ2dlcnMgYXBwcm9wcmlhdGVseS4KLSsjIFRoZSBnZGIudGhyZWFkcyBzdWJkaXJl Y3RvcnkgY29udGFpbnMgdGVzdHMgZm9yIHRoYXQuKQotKyMKLStzZXQgYnBfbG9jYXRpb24xMiBb Z2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMTIgaGVyZSJdCi0rc2VuZF9nZGIg ImJyZWFrICRicF9sb2NhdGlvbjEyIHRocmVhZCA5OTlcbiIKLStnZGJfZXhwZWN0IHsKLSsgIC1y ZSAiVW5rbm93biB0aHJlYWQgOTk5LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bhc3Mg InRocmVhZC1zcGVjaWZpYyBicmVha3BvaW50IG9uIG5vbi1leGlzdGVudCB0aHJlYWQgZGlzYWxs b3dlZCJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAidGhyZWFk LXNwZWNpZmljIGJyZWFrcG9pbnQgb24gbm9uLWV4aXN0ZW50IHRocmVhZCBkaXNhbGxvd2VkIn0K LSsgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSB0aHJlYWQtc3BlY2lmaWMgYnJlYWtwb2ludCBv biBub24tZXhpc3RlbnQgdGhyZWFkIGRpc2FsbG93ZWQifQotK30KLSsKLStnZGJfdGVzdCAiYnJl YWsgJGJwX2xvY2F0aW9uMTIgdGhyZWFkIGZvbyIgXAotKyAgICAiSW52YWxpZCB0aHJlYWQgSUQ6 IGZvbyIgXAotKyAgICAidGhyZWFkLXNwZWNpZmljIGJyZWFrcG9pbnQgb24gYm9ndXMgdGhyZWFk IElEIGRpc2FsbG93ZWQiCi0rCi0rIyBWZXJpZnkgdGhhdCBHREIgcmVzcG9uZHMgZ3JhY2VmdWxs eSB0byBhIGJyZWFrcG9pbnQgY29tbWFuZCB3aXRoCi0rIyB0cmFpbGluZyBnYXJiYWdlLgotKyMK LStzZW5kX2dkYiAiYnJlYWsgJGJwX2xvY2F0aW9uMTIgZm9vXG4iCi0rZ2RiX2V4cGVjdCB7Ci0r ICAtcmUgIm1hbGZvcm1lZCBsaW5lc3BlYyBlcnJvcjogdW5leHBlY3RlZCBzdHJpbmcsIFwiZm9v XCJcclxuJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJicmVha3BvaW50IHdpdGgg dHJhaWxpbmcgZ2FyYmFnZSBkaXNhbGxvd2VkIn0KLSsgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0r ICAgICAgICAgIHtmYWlsICJicmVha3BvaW50IHdpdGggdHJhaWxpbmcgZ2FyYmFnZSBkaXNhbGxv d2VkIn0KLSsgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBicmVha3BvaW50IHdpdGggdHJhaWxp bmcgZ2FyYmFnZSBkaXNhbGxvd2VkIn0KLSt9Ci0rCi0rIyBWZXJpZnkgdGhhdCBHREIgcmVzcG9u ZHMgZ3JhY2VmdWxseSB0byBhICJjbGVhciIgY29tbWFuZCB0aGF0IGhhcwotKyMgbm8gbWF0Y2hp bmcgYnJlYWtwb2ludC4gIChGaXJzdCwgZ2V0IHVzIG9mZiB0aGUgY3VycmVudCBzb3VyY2UgbGlu ZSwKLSsjIHdoaWNoIHdlIGtub3cgaGFzIGEgYnJlYWtwb2ludC4pCi0rIwotK3NlbmRfZ2RiICJu ZXh0XG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIi4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAg ICAgIHtwYXNzICJzdGVwIG92ZXIgYnJlYWtwb2ludCJ9Ci0rICB0aW1lb3V0IHtmYWlsICIodGlt ZW91dCkgc3RlcCBvdmVyIGJyZWFrcG9pbnQifQotK30KLStzZW5kX2dkYiAiY2xlYXIgODFcbiIK LStnZGJfZXhwZWN0IHsKLSsgIC1yZSAiTm8gYnJlYWtwb2ludCBhdCA4MS4uKiRnZGJfcHJvbXB0 ICQiXAotKyAgICAgICAgICB7cGFzcyAiY2xlYXIgbGluZSBoYXMgbm8gYnJlYWtwb2ludCBkaXNh bGxvd2VkIn0KLSsgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtmYWlsICJjbGVh ciBsaW5lIGhhcyBubyBicmVha3BvaW50IGRpc2FsbG93ZWQifQotKyAgdGltZW91dCB7ZmFpbCAi KHRpbWVvdXQpIGNsZWFyIGxpbmUgaGFzIG5vIGJyZWFrcG9pbnQgZGlzYWxsb3dlZCJ9Ci0rfQot K3NlbmRfZ2RiICJjbGVhclxuIgotK2dkYl9leHBlY3QgewotKyAgLXJlICJObyBicmVha3BvaW50 IGF0IHRoaXMgbGluZS4uKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAiY2xlYXIg Y3VycmVudCBsaW5lIGhhcyBubyBicmVha3BvaW50IGRpc2FsbG93ZWQifQotKyAgLXJlICIkZ2Ri X3Byb21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwgImNsZWFyIGN1cnJlbnQgbGluZSBoYXMgbm8g YnJlYWtwb2ludCBkaXNhbGxvd2VkIn0KLSsgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSBjbGVh ciBjdXJyZW50IGxpbmUgaGFzIG5vIGJyZWFrcG9pbnQgZGlzYWxsb3dlZCJ9Ci0rfQotKwotKyMg VmVyaWZ5IHRoYXQgd2UgY2FuIHNldCBhbmQgY2xlYXIgbXVsdGlwbGUgYnJlYWtwb2ludHMuCi0r IwotKyMgV2UgZG9uJ3QgdGVzdCB0aGF0IGl0IGRlbGV0ZXMgdGhlIGNvcnJlY3QgYnJlYWtwb2lu dHMuICBXZSBkbyBhdAotKyMgbGVhc3QgdGVzdCB0aGF0IGl0IGRlbGV0ZXMgbW9yZSB0aGFuIG9u ZSBicmVha3BvaW50LgotKyMKLStnZGJfdGVzdCAiYnJlYWsgbWFya2VyMyIgIkJyZWFrcG9pbnQu KmF0LioiICJicmVhayBtYXJrZXIzICMxIgotK2dkYl90ZXN0ICJicmVhayBtYXJrZXIzIiAiQnJl YWtwb2ludC4qYXQuKiIgImJyZWFrIG1hcmtlcjMgIzIiCi0rZ2RiX3Rlc3QgImNsZWFyIG1hcmtl cjMiIHtEZWxldGVkIGJyZWFrcG9pbnRzIFswLTldKyBbMC05XSsuKn0KLSsKLSsjIFZlcmlmeSB0 aGF0IGEgYnJlYWtwb2ludCBjYW4gYmUgc2V0IHZpYSBhIGNvbnZlbmllbmNlIHZhcmlhYmxlLgot KyMKLStzZW5kX2dkYiAic2V0IFwkZm9vPSRicF9sb2NhdGlvbjExXG4iCi0rZ2RiX2V4cGVjdCB7 Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAic2V0IGNvbnZlbmll bmNlIHZhcmlhYmxlIFwkZm9vIHRvIGJwX2xvY2F0aW9uMTEifQotKyAgdGltZW91dCB7ZmFpbCAi KHRpbWVvdXQpIHNldCBjb252ZW5pZW5jZSB2YXJpYWJsZSBcJGZvbyB0byBicF9sb2NhdGlvbjEx In0KLSt9Ci0rc2VuZF9nZGIgImJyZWFrIFwkZm9vXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUg IkJyZWFrcG9pbnQgKFxbMC05XF0qKSBhdCAuKiwgbGluZSAkYnBfbG9jYXRpb24xMS4qJGdkYl9w cm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJzZXQgYnJlYWtwb2ludCB2aWEgY29udmVuaWVu Y2UgdmFyaWFibGUifQotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwg InNldCBicmVha3BvaW50IHZpYSBjb252ZW5pZW5jZSB2YXJpYWJsZSJ9Ci0rICB0aW1lb3V0IHtm YWlsICIodGltZW91dCkgc2V0IGJyZWFrcG9pbnQgdmlhIGNvbnZlbmllbmNlIHZhcmlhYmxlIn0K LSt9Ci0rCi0rIyBWZXJpZnkgdGhhdCBHREIgcmVzcG9uZHMgZ3JhY2VmdWxseSB0byBhbiBhdHRl bXB0IHRvIHNldCBhCi0rIyBicmVha3BvaW50IHZpYSBhIGNvbnZlbmllbmNlIHZhcmlhYmxlIHdo b3NlIHR5cGUgaXMgbm90IGludGVnZXIuCi0rIwotK3NlbmRfZ2RiICJzZXQgXCRmb289ODEuNVxu IgotK2dkYl9leHBlY3QgewotKyAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bh c3MgInNldCBjb252ZW5pZW5jZSB2YXJpYWJsZSBcJGZvbyB0byA4MS41In0KLSsgIHRpbWVvdXQg e2ZhaWwgIih0aW1lb3V0KSBzZXQgY29udmVuaWVuY2UgdmFyaWFibGUgXCRmb28gdG8gODEuNSJ9 Ci0rfQotK3NlbmRfZ2RiICJicmVhayBcJGZvb1xuIgotK2dkYl9leHBlY3QgewotKyAgLXJlICJD b252ZW5pZW5jZSB2YXJpYWJsZXMgdXNlZCBpbiBsaW5lIHNwZWNzIG11c3QgaGF2ZSBpbnRlZ2Vy IHZhbHVlcy4uKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAic2V0IGJyZWFrcG9p bnQgdmlhIG5vbi1pbnRlZ2VyIGNvbnZlbmllbmNlIHZhcmlhYmxlIGRpc2FsbG93ZWQifQotKyAg LXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge2ZhaWwgInNldCBicmVha3BvaW50IHZp YSBub24taW50ZWdlciBjb252ZW5pZW5jZSB2YXJpYWJsZSBkaXNhbGxvd2VkIn0KLSsgIHRpbWVv dXQge2ZhaWwgIih0aW1lb3V0KSBzZXQgYnJlYWtwb2ludCB2aWEgbm9uLWludGVnZXIgY29udmVu aWVuY2UgdmFyaWFibGUgZGlzYWxsb3dlZCJ9Ci0rfQotKwotKyMgVmVyaWZ5IHRoYXQgd2UgY2Fu IHNldCBhbmQgdHJpZ2dlciBhIGJyZWFrcG9pbnQgaW4gYSB1c2VyLWNhbGxlZCBmdW5jdGlvbi4K LSsjCi0rc2VuZF9nZGIgImJyZWFrIG1hcmtlcjJcbiIKLStnZGJfZXhwZWN0IHsKLSsgICAgLXJl ICJCcmVha3BvaW50IChcWzAtOVxdKikgYXQgLiosIGxpbmUgKCRicF9sb2NhdGlvbjh8JGJwX2xv Y2F0aW9uOSkuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFzcyAic2V0IGJyZWFrcG9p bnQgb24gdG8tYmUtY2FsbGVkIGZ1bmN0aW9uIn0KLSsgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0r ICAgICAgICAgIHtmYWlsICJzZXQgYnJlYWtwb2ludCBvbiB0by1iZS1jYWxsZWQgZnVuY3Rpb24i fQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIHNldCBicmVha3BvaW50IG9uIHRvLWJlLWNh bGxlZCBmdW5jdGlvbiJ9Ci0rfQotK3NlbmRfZ2RiICJwcmludCBtYXJrZXIyKDk5KVxuIgotK2dk Yl9leHBlY3QgewotKyAgLXJlICJUaGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBzdG9wcGVkIHdo aWxlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gR0RCLlxyXG5FdmFsdWF0aW9uIG9mIHRoZSBl eHByZXNzaW9uIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uXHJcbi5tYXJrZXIyJHByb3RvLiB3aWxs IGJlIGFiYW5kb25lZC5cclxuV2hlbiB0aGUgZnVuY3Rpb24gaXMgZG9uZSBleGVjdXRpbmcsIEdE QiB3aWxsIHNpbGVudGx5IHN0b3AuXHJcbiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7cGFz cyAiaGl0IGJyZWFrcG9pbnQgb24gY2FsbGVkIGZ1bmN0aW9uIn0KLSsgIC1yZSAiJGdkYl9wcm9t cHQgJCJcCi0rICAgICAgICAgIHtmYWlsICJoaXQgYnJlYWtwb2ludCBvbiBjYWxsZWQgZnVuY3Rp b24ifQotKyAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIGhpdCBicmVha3BvaW50IG9uIGNhbGxl ZCBmdW5jdGlvbiJ9Ci0rfQotKwotKyMgQXMgbG9uZyBhcyB3ZSdyZSBzdG9wcGVkIChicmVha3Bv aW50ZWQpIGluIGEgY2FsbGVkIGZ1bmN0aW9uLAotKyMgdmVyaWZ5IHRoYXQgd2UgY2FuIHN1Y2Nl c3NmdWxseSBiYWNrdHJhY2UgJiBzdWNoIGZyb20gaGVyZS4KLSsjCi0rIyBJbiB0aGlzIGFuZCB0 aGUgZm9sbG93aW5nIHRlc3QsIHRoZSBfc3I0ZXhwb3J0IGNoZWNrIGFwcGFyZW50bHkgaXMgbmVl ZGVkCi0rIyBmb3IgaHBwYSotKi1ocHV4LgotKyMKLStzZW5kX2dkYiAiYnRcbiIKLStnZGJfZXhw ZWN0IHsKLSsgICAgLXJlICIjMFxbIFx0XF0qKCRoZXggaW4gKT9tYXJrZXIyLio6KCRicF9sb2Nh dGlvbjh8JGJwX2xvY2F0aW9uOSlcclxuIzEuKl9zcjRleHBvcnQuKiRnZGJfcHJvbXB0ICQiXAot KyAgICAgICAgICAgIHtwYXNzICJiYWNrdHJhY2Ugd2hpbGUgaW4gY2FsbGVkIGZ1bmN0aW9uIn0K LSsgICAgLXJlICIjMFxbIFx0XF0qKCRoZXggaW4gKT9tYXJrZXIyLio6KCRicF9sb2NhdGlvbjh8 JGJwX2xvY2F0aW9uOSlcclxuIzEuKmZ1bmN0aW9uIGNhbGxlZCBmcm9tIGdkYi4qJGdkYl9wcm9t cHQgJCJcCi0rCSAgICB7cGFzcyAiYmFja3RyYWNlIHdoaWxlIGluIGNhbGxlZCBmdW5jdGlvbiJ9 Ci0rICAgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAge2ZhaWwgImJhY2t0cmFj ZSB3aGlsZSBpbiBjYWxsZWQgZnVuY3Rpb24ifQotKyAgICB0aW1lb3V0IHtmYWlsICIodGltZW91 dCkgYmFja3RyYWNlIHdoaWxlIGluIGNhbGxlZCBmdW5jdGlvbiJ9Ci0rfQotKwotKyMgUmV0dXJu IGZyb20gdGhlIGNhbGxlZCBmdW5jdGlvbi4gIEZvciByZW1vdGUgdGFyZ2V0cywgaXQncyBpbXBv cnRhbnQgdG8gZG8KLSsjIHRoaXMgYmVmb3JlIHJ1bnRvX21haW4sIHdoaWNoIG90aGVyd2lzZSBt YXkgc2lsZW50bHkgc3RvcCBvbiB0aGUgZHVtbXkKLSsjIGJyZWFrcG9pbnQgaW5zZXJ0ZWQgYnkg R0RCIGF0IHRoZSBwcm9ncmFtJ3MgZW50cnkgcG9pbnQuCi0rIwotK3NlbmRfZ2RiICJmaW5pc2hc biIKLStnZGJfZXhwZWN0IHsKLSsgICAgLXJlICJSdW4gdGlsbCBleGl0IGZyb20gLiptYXJrZXIy LiogYXQgLiooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KVxyXG4uKiBpbiBfc3I0ZXhwb3J0 LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICB7cGFzcyAiZmluaXNoIGZyb20gY2FsbGVk IGZ1bmN0aW9uIn0KLSsgICAgLXJlICJSdW4gdGlsbCBleGl0IGZyb20gLiptYXJrZXIyLiogYXQg LiooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KVxyXG4uKmZ1bmN0aW9uIGNhbGxlZCBmcm9t IGdkYi4qJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAge3Bhc3MgImZpbmlzaCBmcm9tIGNh bGxlZCBmdW5jdGlvbiJ9Ci0rICAgIC1yZSAiUnVuIHRpbGwgZXhpdCBmcm9tIC4qbWFya2VyMi4q IGF0IC4qKCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSlcclxuLipWYWx1ZSByZXR1cm5lZC4q JGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAge3Bhc3MgImZpbmlzaCBmcm9tIGNhbGxlZCBm dW5jdGlvbiJ9Ci0rICAgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgICAge2ZhaWwg ImZpbmlzaCBmcm9tIGNhbGxlZCBmdW5jdGlvbiJ9Ci0rICAgIHRpbWVvdXQge2ZhaWwgIih0aW1l b3V0KSBmaW5pc2ggZnJvbSBjYWxsZWQgZnVuY3Rpb24ifQotK30KLSsKLSsjIFZlcmlmeSB0aGF0 IEdEQiByZXNwb25kcyBncmFjZWZ1bGx5IHRvIGEgImZpbmlzaCIgY29tbWFuZCB3aXRoCi0rIyBh cmd1bWVudHMuCi0rIwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7IGZhaWwgImJyZWFrIHRlc3Rz IHN1cHByZXNzZWQiIH0KLSsKLStzZW5kX2dkYiAiZmluaXNoIDEyM1xuIgotK2dkYl9leHBlY3Qg ewotKyAgLXJlICJUaGUgXCJmaW5pc2hcIiBjb21tYW5kIGRvZXMgbm90IHRha2UgYW55IGFyZ3Vt ZW50cy5cclxuJGdkYl9wcm9tcHQgJCJcCi0rICAgICAgICAgIHtwYXNzICJmaW5pc2ggd2l0aCBh cmd1bWVudHMgZGlzYWxsb3dlZCJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAg ICB7ZmFpbCAiZmluaXNoIHdpdGggYXJndW1lbnRzIGRpc2FsbG93ZWQifQotKyAgdGltZW91dCB7 ZmFpbCAiKHRpbWVvdXQpIGZpbmlzaCB3aXRoIGFyZ3VtZW50cyBkaXNhbGxvd2VkIn0KLSt9Ci0r Ci0rIyBWZXJpZnkgdGhhdCBHREIgcmVzcG9uZHMgZ3JhY2VmdWxseSB0byBhIHJlcXVlc3QgdG8g ImZpbmlzaCIgZnJvbQotKyMgdGhlIG91dGVybW9zdCBmcmFtZS4gIE9uIGEgc3R1YiB0aGF0IG5l dmVyIGV4aXRzLCB0aGlzIHdpbGwganVzdAotKyMgcnVuIHRvIHRoZSBzdHVicyByb3V0aW5lLCBz byB3ZSBkb24ndCBnZXQgdGhpcyBlcnJvci4uLiAgVGh1cyB0aGUKLSsjIHNlY29uZCBjb25kaXRp b24uCi0rIwotKwotK3NlbmRfZ2RiICJmaW5pc2hcbiIKLStnZGJfZXhwZWN0IHsKLSsgIC1yZSAi XCJmaW5pc2hcIiBub3QgbWVhbmluZ2Z1bCBpbiB0aGUgb3V0ZXJtb3N0IGZyYW1lLlxyXG4kZ2Ri X3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bhc3MgImZpbmlzaCBmcm9tIG91dGVybW9zdCBmcmFt ZSBkaXNhbGxvd2VkIn0KLSsgIC1yZSAiUnVuIHRpbGwgZXhpdCBmcm9tLipcclxuJGdkYl9wcm9t cHQgJCIgewotKyAgICAgcGFzcyAiZmluaXNoIGZyb20gb3V0ZXJtb3N0IGZyYW1lIGRpc2FsbG93 ZWQiCi0rICB9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAiZmlu aXNoIGZyb20gb3V0ZXJtb3N0IGZyYW1lIGRpc2FsbG93ZWQifQotKyAgdGltZW91dCB7ZmFpbCAi KHRpbWVvdXQpIGZpbmlzaCBmcm9tIG91dGVybW9zdCBmcmFtZSBkaXNhbGxvd2VkIn0KLSt9Ci0r Ci0rIyBWZXJpZnkgdGhhdCB3ZSBjYW4gZXhwbGljaXRseSBhc2sgR0RCIHRvIHN0b3Agb24gYWxs IHNoYXJlZCBsaWJyYXJ5Ci0rIyBldmVudHMsIGFuZCB0aGF0IGl0IGRvZXMgc28uCi0rIwotK2lm IFtpc3RhcmdldCAiaHBwYSotKi1ocHV4KiJdIHRoZW4gewotKyAgaWYgIVtydW50b19tYWluXSB0 aGVuIHsgZmFpbCAiYnJlYWsgdGVzdHMgc3VwcHJlc3NlZCIgfQotKwotKyAgc2VuZF9nZGIgInNl dCBzdG9wLW9uLXNvbGliLWV2ZW50cyAxXG4iCi0rICBnZGJfZXhwZWN0IHsKLSsgICAgLXJlICIk Z2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICB7cGFzcyAic2V0IHN0b3Atb24tc29saWItZXZl bnRzIn0KLSsgICAgdGltZW91dCB7ZmFpbCAiKHRpbWVvdXQpIHNldCBzdG9wLW9uLXNvbGliLWV2 ZW50cyJ9Ci0rICB9Ci0rCi0rICBzZW5kX2dkYiAicnVuXG4iCi0rICBnZGJfZXhwZWN0IHsKLSsg ICAgLXJlICIuKlN0YXJ0IGl0IGZyb20gdGhlIGJlZ2lubmluZy4qeSBvciBuLiAkIlwKLSsgICAg ICAgICAgICB7c2VuZF9nZGIgInlcbiIKLSsgICAgICAgICAgICAgZ2RiX2V4cGVjdCB7Ci0rICAg ICAgICAgICAgICAgLXJlICIuKlN0b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5IGV2ZW50Liok Z2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICAgICAgICAgICAgIHtwYXNzICJ0cmlnZ2VyZWQg c3RvcC1vbi1zb2xpYi1ldmVudHMifQotKyAgICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQg JCJcCi0rICAgICAgICAgICAgICAgICAgICAgICB7ZmFpbCAidHJpZ2dlcmVkIHN0b3Atb24tc29s aWItZXZlbnRzIn0KLSsgICAgICAgICAgICAgICB0aW1lb3V0IHtmYWlsICIodGltZW91dCkgdHJp Z2dlcmVkIHN0b3Atb24tc29saWItZXZlbnRzIn0KLSsgICAgICAgICAgICAgfQotKyAgICAgICAg ICAgIH0KLSsgICAgLXJlICIkZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICB7ZmFpbCAicmVy dW4gZm9yIHN0b3Atb24tc29saWItZXZlbnRzIn0KLSsgICAgdGltZW91dCB7ZmFpbCAiKHRpbWVv dXQpIHJlcnVuIGZvciBzdG9wLW9uLXNvbGliLWV2ZW50cyJ9Ci0rICB9Ci0rCi0rICBzZW5kX2dk YiAic2V0IHN0b3Atb24tc29saWItZXZlbnRzIDBcbiIKLSsgIGdkYl9leHBlY3QgewotKyAgICAt cmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgIHtwYXNzICJyZXNldCBzdG9wLW9uLXNv bGliLWV2ZW50cyJ9Ci0rICAgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0KSByZXNldCBzdG9wLW9u LXNvbGliLWV2ZW50cyJ9Ci0rICB9Ci0rfQotKwotKyMgSGFyZHdhcmUgYnJlYWtwb2ludHMgYXJl IHVuc3VwcG9ydGVkIG9uIEhQLVVYLiAgVmVyaWZ5IHRoYXQgR0RCCi0rIyBncmFjZWZ1bGx5IHJl c3BvbmRzIHRvIHJlcXVlc3RzIHRvIGNyZWF0ZSB0aGVtLgotKyMKLStpZiBbaXN0YXJnZXQgImhw cGEqLSotaHB1eCoiXSB0aGVuIHsKLSsgIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7IGZhaWwgImJy ZWFrIHRlc3RzIHN1cHByZXNzZWQiIH0KLSsKLSsgIHNlbmRfZ2RiICJoYnJlYWtcbiIKLSsgIGdk Yl9leHBlY3QgewotKyAgICAtcmUgIk5vIGhhcmR3YXJlIGJyZWFrcG9pbnQgc3VwcG9ydCBpbiB0 aGUgdGFyZ2V0LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICB7cGFzcyAiaHcgYnJlYWtz IGRpc2FsbG93ZWQifQotKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgIHtm YWlsICJodyBicmVha3MgZGlzYWxsb3dlZCJ9Ci0rICAgIHRpbWVvdXQge2ZhaWwgIih0aW1lb3V0 KSBodyBicmVha3MgZGlzYWxsb3dlZCJ9Ci0rICB9Ci0rCi0rICBzZW5kX2dkYiAidGhicmVha1xu IgotKyAgZ2RiX2V4cGVjdCB7Ci0rICAgIC1yZSAiTm8gaGFyZHdhcmUgYnJlYWtwb2ludCBzdXBw b3J0IGluIHRoZSB0YXJnZXQuKiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICAgIHtwYXNzICJ0 ZW1wb3JhcnkgaHcgYnJlYWtzIGRpc2FsbG93ZWQifQotKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQi XAotKyAgICAgICAgICAgIHtmYWlsICJ0ZW1wb3JhcnkgaHcgYnJlYWtzIGRpc2FsbG93ZWQifQot KyAgICB0aW1lb3V0IHtmYWlsICIodGltZW91dCkgdGVtcG9yYXJ5IGh3IGJyZWFrcyBkaXNhbGxv d2VkIn0KLSsgIH0KLSt9Ci0rCi0rIyoqKioqKioqCi0rCi0rCi0rIwotKyMgVGVzdCAibmV4dCIg b3ZlciByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbC4KLSsjCi0rCi0rcHJvYyB0ZXN0X25leHRfd2l0 aF9yZWN1cnNpb24ge30gewotKyAgICBnbG9iYWwgZ2RiX3Byb21wdAotKyAgICBnbG9iYWwgZGVj aW1hbAotKyAgICBnbG9iYWwgYmluZmlsZQotKwotKyAgICBpZiBbdGFyZ2V0X2luZm8gZXhpc3Rz IHVzZV9nZGJfc3R1Yl0gewotKwkjIFJlbG9hZCB0aGUgcHJvZ3JhbS4KLSsJZGVsZXRlX2JyZWFr cG9pbnRzCi0rCWdkYl9sb2FkICR7YmluZmlsZX07Ci0rICAgIH0gZWxzZSB7Ci0rCSMgRklYTUU6 IHNob3VsZCBiZSB1c2luZyBydW50bwotKwlnZGJfdGVzdCAia2lsbCIgIiIgImtpbGwgcHJvZ3Jh bSIgIktpbGwgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuKnkgb3Igbi4gJCIgInkiCi0rCi0r CWRlbGV0ZV9icmVha3BvaW50cwotKyAgICB9Ci0rCi0rICAgIGdkYl90ZXN0ICJicmVhayBmYWN0 b3JpYWwiICJCcmVha3BvaW50ICRkZWNpbWFsIGF0IC4qIiAiYnJlYWsgYXQgZmFjdG9yaWFsIgot KwotKyAgICAjIFJ1biB1bnRpbCB3ZSBjYWxsIGZhY3RvcmlhbCB3aXRoIDYKLSsKLSsgICAgaWYg W2lzdGFyZ2V0ICIqLSotdnh3b3JrcyoiXSB0aGVuIHsKLSsJc2VuZF9nZGIgInJ1biB2eG1haW4g XCI2XCJcbiIKLSsgICAgfSBlbHNlIHsKLSsJZ2RiX3J1bl9jbWQKLSsgICAgfQotKyAgICBnZGJf ZXhwZWN0IHsKLSsJLXJlICJCcmVhay4qIGZhY3RvcmlhbCAudmFsdWU9Ni4gLiokZ2RiX3Byb21w dCAkIiB7fQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFpbCAicnVuIHRvIGZh Y3RvcmlhbCg2KSI7Ci0rCSAgICBnZGJfc3VwcHJlc3NfdGVzdHM7Ci0rCX0KLSsJdGltZW91dCB7 IGZhaWwgInJ1biB0byBmYWN0b3JpYWwoNikgKHRpbWVvdXQpIiA7IGdkYl9zdXBwcmVzc190ZXN0 cyB9Ci0rICAgIH0KLSsKLSsgICAgIyBDb250aW51ZSB1bnRpbCB3ZSBjYWxsIGZhY3RvcmlhbCBy ZWN1cnNpdmVseSB3aXRoIDUuCi0rCi0rICAgIGlmIFtnZGJfdGVzdCAiY29udGludWUiIFwKLSsJ IkNvbnRpbnVpbmcuKkJyZWFrLiogZmFjdG9yaWFsIC52YWx1ZT01LiAuKiIgXAotKwkiY29udGlu dWUgdG8gZmFjdG9yaWFsKDUpIl0gdGhlbiB7IGdkYl9zdXBwcmVzc190ZXN0cyB9Ci0rCi0rICAg ICMgRG8gYSBiYWNrdHJhY2UganVzdCB0byBjb25maXJtIGhvdyBtYW55IGxldmVscyBkZWVwIHdl IGFyZS4KLSsKLSsgICAgaWYgW2dkYl90ZXN0ICJiYWNrdHJhY2UiIFwKLSsJIiMwXFsgXHRcXSsg ZmFjdG9yaWFsIC52YWx1ZT01Li4qIiBcCi0rCSJiYWNrdHJhY2UgZnJvbSBmYWN0b3JpYWwoNSki XSB0aGVuIHsgZ2RiX3N1cHByZXNzX3Rlc3RzIH0KLSsKLSsgICAgIyBOb3cgYSAibmV4dCIgc2hv dWxkIHBvc2l0aW9uIHVzIGF0IHRoZSByZWN1cnNpdmUgY2FsbCwgd2hpY2gKLSsgICAgIyB3ZSB3 aWxsIGJlIHBlcmZvcm1pbmcgd2l0aCA0LgotKwotKyAgICBpZiBbZ2RiX3Rlc3QgIm5leHQiIFwK LSsJIi4qIGZhY3RvcmlhbCAudmFsdWUgLSAxLjsuKiIgXAotKwkibmV4dCB0byByZWN1cnNpdmUg Y2FsbCJdIHRoZW4geyBnZGJfc3VwcHJlc3NfdGVzdHMgfQotKwotKyAgICAjIERpc2FibGUgdGhl IGJyZWFrcG9pbnQgYXQgdGhlIGVudHJ5IHRvIGZhY3RvcmlhbCBieSBkZWxldGluZyB0aGVtIGFs bC4KLSsgICAgIyBUaGUgIm5leHQiIHNob3VsZCBydW4gdW50aWwgd2UgcmV0dXJuIHRvIHRoZSBu ZXh0IGxpbmUgZnJvbSB0aGlzCi0rICAgICMgcmVjdXJzaXZlIGNhbGwgdG8gZmFjdG9yaWFsIHdp dGggNC4KLSsgICAgIyBCdWdneSB2ZXJzaW9ucyBvZiBnZGIgd2lsbCBzdG9wIGluc3RlYWQgYXQg dGhlIGlubmVybW9zdCBmcmFtZSBvbgotKyAgICAjIHRoZSBsaW5lIHdoZXJlIHdlIGFyZSB0cnlp bmcgdG8gIm5leHQiIHRvLgotKwotKyAgICBkZWxldGVfYnJlYWtwb2ludHMKLSsKLSsgICAgaWYg W2lzdGFyZ2V0ICJtaXBzKnR4MzktKiJdIHsKLSsJc2V0IHRpbWVvdXQgNjAKLSsgICAgfQotKyAg ICAjIFdlIHVzZWQgdG8gc2V0IHRpbWVvdXQgaGVyZSBmb3IgYWxsIG90aGVyIHRhcmdldHMgYXMg d2VsbC4gIFRoaXMKLSsgICAgIyBpcyBhbG1vc3QgY2VydGFpbmx5IHdyb25nLiAgVGhlIHByb3Bl ciB0aW1lb3V0IGRlcGVuZHMgb24gdGhlCi0rICAgICMgdGFyZ2V0IHN5c3RlbSBpbiB1c2UsIGFu ZCBob3cgd2UgY29tbXVuaWNhdGUgd2l0aCBpdCwgc28gdGhlcmUKLSsgICAgIyBpcyBubyBzaW5n bGUgdmFsdWUgYXBwcm9wcmlhdGUgZm9yIGFsbCB0YXJnZXRzLiAgVGhlIHRpbWVvdXQKLSsgICAg IyBzaG91bGQgYmUgZXN0YWJsaXNoZWQgYnkgdGhlIERlamFnbnUgY29uZmlnIGZpbGUocykgZm9y IHRoZQotKyAgICAjIGJvYXJkLCBhbmQgcmVzcGVjdGVkIGJ5IHRoZSB0ZXN0IHN1aXRlLgotKyAg ICAjCi0rICAgICMgRm9yIGV4YW1wbGUsIGlmIEknbSBydW5uaW5nIEdEQiBvdmVyIGFuIFNTSCB0 dW5uZWwgdGFsa2luZyB0byBhCi0rICAgICMgcG9ydG1hc3RlciBpbiBDYWxpZm9ybmlhIHRhbGtp bmcgdG8gYW4gYW5jaWVudCA2OGsgYm9hcmQgcnVubmluZwotKyAgICAjIGEgY3J1bW15IFJPTSBt b25pdG9yIChhIHNpdHVhdGlvbiBJIGNhbiBvbmx5IHdpc2ggd2VyZQotKyAgICAjIGh5cG90aGV0 aWNhbCksIHRoZW4gSSBuZWVkIGEgbGFyZ2UgdGltZW91dC4gIEJ1dCB0aGF0J3Mgbm90IHRoZQot KyAgICAjIGtpbmQgb2Yga25vd2xlZGdlIHRoYXQgYmVsb25ncyBpbiB0aGlzIGZpbGUuCi0rCi0r ICAgIGdkYl90ZXN0IG5leHQgIlxbMC05XF0qXFtcdCBcXStyZXR1cm4gXFwodmFsdWVcXCk7Lioi IFwKLSsJICAgICJuZXh0IG92ZXIgcmVjdXJzaXZlIGNhbGwiCi0rCi0rICAgICMgT0ssIHdlIHNo b3VsZCBiZSBiYWNrIGluIHRoZSBzYW1lIHN0YWNrIGZyYW1lIHdlIHN0YXJ0ZWQgZnJvbS4KLSsg ICAgIyBEbyBhIGJhY2t0cmFjZSBqdXN0IHRvIGNvbmZpcm0uCi0rCi0rICAgIHNldCByZXN1bHQg W2dkYl90ZXN0ICJiYWNrdHJhY2UiIFwKLSsJICAgICIjMFxbIFx0XF0rIGZhY3RvcmlhbCAudmFs dWU9MTIwLipcclxuIzFcWyBcdFxdKyBcWzAtOWEtZnhcXSsgaW4gZmFjdG9yaWFsIC52YWx1ZT02 Li4qIiBcCi0rCSAgICAiYmFja3RyYWNlIGZyb20gZmFjdG9yaWFsKDUuMSkiXQotKyAgICBpZiB7 ICRyZXN1bHQgIT0gMCB9IHsgZ2RiX3N1cHByZXNzX3Rlc3RzIH0KLSsKLSsgICAgaWYgW3Rhcmdl dF9pbmZvIGV4aXN0cyBnZGIsbm9yZXN1bHRzXSB7IGdkYl9zdXBwcmVzc190ZXN0cyB9Ci0rICBn ZGJfY29udGludWVfdG9fZW5kICJyZWN1cnNpdmUgbmV4dCB0ZXN0IgotKyAgIGdkYl9zdG9wX3N1 cHByZXNzaW5nX3Rlc3RzOwotK30KLSsKLSt0ZXN0X25leHRfd2l0aF9yZWN1cnNpb24KLSsKLSsK LSsjKioqKioqKioKLSsKLSsjIGJ1aWxkIGEgbmV3IGZpbGUgd2l0aCBvcHRpbWl6YXRpb24gZW5h YmxlZCBzbyB0aGF0IHdlIGNhbiB0cnkgYnJlYWtwb2ludHMKLSsjIG9uIHRhcmdldHMgd2l0aCBv cHRpbWl6ZWQgcHJvbG9ndWVzCi0rCi0rc2V0IGJpbmZpbGVvMiBbc3RhbmRhcmRfb3V0cHV0X2Zp bGUgJHt0ZXN0ZmlsZX1vMl0KLSsKLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX1PMC5vIiBvYmplY3Qge2RlYnVnICJhZGRpdGlv bmFsX2ZsYWdzPS13IC1PMiAtZnBpZSAtcGllIn1dICE9ICIiIH0gewotKyAgICAgZ2RiX3N1cHBy ZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGlu IHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0rfQotKwotK2lmICB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUxfSIgIiR7YmluZmlsZX1PMS5v IiBvYmplY3Qge2RlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS13IC1PMiAtZnBpZSAtcGllIn1dICE9 ICIiIH0gewotKyAgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxl IGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFp bC4iCi0rfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtiaW5maWxlfU8wLm8gJHtiaW5maWxl fU8xLm8iICIke2JpbmZpbGVvMn0iIGV4ZWN1dGFibGUge2RlYnVnICJhZGRpdGlvbmFsX2ZsYWdz PS13IC1mcGllIC1waWUifV0gIT0gIiIgfSB7Ci0rICAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2Zp bGUgIlRlc3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdp bGwgYXV0b21hdGljYWxseSBmYWlsLiIKLSt9Ci0rCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7 YmluZmlsZW8yfV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3Rh cnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2Jp bmZpbGVvMn0KLSsKLStpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYl9zdHViXSB7Ci0rICAgIGdk Yl9zdGVwX2Zvcl9zdHViOwotK30KLSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGZ1bmN0aW9uCi0r IwotK2dkYl90ZXN0ICJicmVhayBtYWluIiBcCi0rICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUg Liokc3JjZmlsZSwgbGluZS4qIiBcCi0rICAgICJicmVha3BvaW50IGZ1bmN0aW9uLCBvcHRpbWl6 ZWQgZmlsZSIKLSsKLSsjCi0rIyB0ZXN0IGJyZWFrIGF0IGZ1bmN0aW9uCi0rIwotK2dkYl90ZXN0 ICJicmVhayBtYXJrZXI0IiBcCi0rICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmls ZTEsIGxpbmUuKiIgXAotKyAgICAiYnJlYWtwb2ludCBzbWFsbCBmdW5jdGlvbiwgb3B0aW1pemVk IGZpbGUiCi0rCi0rIwotKyMgcnVuIHVudGlsIHRoZSBicmVha3BvaW50IGF0IG1haW4gaXMgaGl0 LiBGb3Igbm9uLXN0dWJzLXVzaW5nIHRhcmdldHMuCi0rIwotK2lmICFbdGFyZ2V0X2luZm8gZXhp c3RzIHVzZV9nZGJfc3R1Yl0gewotKyAgaWYgW2lzdGFyZ2V0ICIqLSotdnh3b3JrcyoiXSB0aGVu IHsKLSsgICAgc2VuZF9nZGIgInJ1biB2eG1haW4gXCIyXCJcbiIKLSsgICAgc2V0IHRpbWVvdXQg MTIwCi0rICAgIHZlcmJvc2UgIlRpbWVvdXQgaXMgbm93ICR0aW1lb3V0IHNlY29uZHMiIDIKLSsg IH0gZWxzZSB7Ci0rCXNlbmRfZ2RiICJydW5cbiIKLSsgIH0KLSsgIGdkYl9leHBlY3QgewotKyAg ICAtcmUgIlRoZSBwcm9ncmFtIC4qIGhhcyBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS4qeSBvciBuLiAk IiB7Ci0rCXNlbmRfZ2RiICJ5XG4iCi0rCWV4cF9jb250aW51ZQotKyAgICB9Ci0rICAgIC1yZSAi U3RhcnRpbmcgcHJvZ3JhbS4qQnJlYWtwb2ludCBcWzAtOVxdKywuKm1haW4gLiphcmdjLiphcmd2 LiogYXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb242LiokYnBfbG9jYXRpb242XFtcdCBcXStpZiAu YXJnYy4qIFx7LiokZ2RiX3Byb21wdCAkIlwKLSsJICAgICAgICAgICAgICAgICAgICB7IHBhc3Mg InJ1biB1bnRpbCBmdW5jdGlvbiBicmVha3BvaW50LCBvcHRpbWl6ZWQgZmlsZSIgfQotKyAgICAt cmUgIlN0YXJ0aW5nIHByb2dyYW0uKkJyZWFrcG9pbnQgXFswLTlcXSssLiptYWluIC4qYXJnYy4q YXJndi4qIGF0IC4qJGdkYl9wcm9tcHQgJCJcCi0rCSAgICAgICAgICAgICAgICAgICAgeyBwYXNz ICJydW4gdW50aWwgZnVuY3Rpb24gYnJlYWtwb2ludCwgb3B0aW1pemVkIGZpbGUgKGNvZGUgbW90 aW9uKSIgfQotKyAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIgICAgICAgeyBmYWlsICJydW4gdW50 aWwgZnVuY3Rpb24gYnJlYWtwb2ludCwgb3B0aW1pemVkIGZpbGUiIH0KLSsgICAgdGltZW91dAkg ICAgICAgICAgICB7IGZhaWwgInJ1biB1bnRpbCBmdW5jdGlvbiBicmVha3BvaW50LCBvcHRpbWl6 ZWQgZmlsZSAodGltZW91dCkiIH0KLSsgIH0KLSt9IGVsc2UgewotKyAgICBpZiAhW3RhcmdldF9p bmZvIGV4aXN0cyBnZGJfc3R1Yl0gewotKwlnZGJfdGVzdCBjb250aW51ZSAiLipDb250aW51aW5n XFwuLipCcmVha3BvaW50IFxbMC05XF0rLCBtYWluIFxcKGFyZ2M9LiosIGFyZ3Y9LiosIGVudnA9 LipcXCkgYXQgLiokc3JjZmlsZTokYnBfbG9jYXRpb242LiokYnBfbG9jYXRpb242XFtcdCBcXStp ZiAuYXJnYy4qXHsuKiIgInN0dWIgY29udGludWUsIG9wdGltaXplZCBmaWxlIgotKyAgICB9Ci0r fQotKwotKyMKLSsjIHJ1biB1bnRpbCB0aGUgYnJlYWtwb2ludCBhdCBhIHNtYWxsIGZ1bmN0aW9u Ci0rIwotKwotKyMKLSsjIEFkZCBhIHNlY29uZCBwYXNzIHBhdHRlcm4uICBUaGUgYmVoYXZpb3Ig ZGlmZmVycyBoZXJlIGJldHdlZW4gc3RhYnMKLSsjIGFuZCBkd2FyZiBmb3Igb25lLWxpbmUgZnVu Y3Rpb25zLiAgU3RhYnMgcHJlc2VydmVzIHR3byBsaW5lIHN5bWJvbHMKLSsjIChvbmUgYmVmb3Jl IHRoZSBwcm9sb2d1ZSBhbmQgb25lIGFmdGVyKSB3aXRoIHRoZSBzYW1lIGxpbmUgbnVtYmVyLAot KyMgYnV0IGR3YXJmIHJlZ2FyZHMgdGhlc2UgYXMgZHVwbGljYXRlcyBhbmQgZGlzY2FyZHMgb25l IG9mIHRoZW0uCi0rIyBUaGVyZWZvcmUgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHByb2xvZ3VlICh3 aGVyZSB0aGUgYnJlYWtwb2ludCBpcykKLSsjIGhhcyBubyBleGFjdGx5IG1hdGNoaW5nIGxpbmUg c3ltYm9sLCBhbmQgR0RCIHJlcG9ydHMgdGhlIGJyZWFrcG9pbnQKLSsjIGFzIGlmIGl0IHdlcmUg aW4gdGhlIG1pZGRsZSBvZiBhIGxpbmUgcmF0aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZy4KLSsK LStzZXQgYnBfbG9jYXRpb24xMyBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQg MTMgaGVyZSIgJHNyY2ZpbGUxXQotK3NldCBicF9sb2NhdGlvbjE0IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJzZXQgYnJlYWtwb2ludCAxNCBoZXJlIiAkc3JjZmlsZTFdCi0rc2VuZF9nZGIgImNvbnRp bnVlXG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAgIC1yZSAiQnJlYWtwb2ludCAkZGVjaW1hbCwgbWFy a2VyNCBcXChkPTE3NzYwMTk3NlxcKSBhdCAuKiRzcmNmaWxlMTokYnBfbG9jYXRpb24xM1xbXHJc blxdKyRicF9sb2NhdGlvbjEzXFtcdCBcXSt2b2lkIG1hcmtlcjQuKiIgewotKwlwYXNzICJydW4g dW50aWwgYnJlYWtwb2ludCBzZXQgYXQgc21hbGwgZnVuY3Rpb24sIG9wdGltaXplZCBmaWxlIgot KyAgICB9Ci0rICAgIC1yZSAiQnJlYWtwb2ludCAkZGVjaW1hbCwgJGhleCBpbiBtYXJrZXI0IFxc KGQ9MTc3NjAxOTc2XFwpIGF0IC4qJHNyY2ZpbGUxOiRicF9sb2NhdGlvbjEzXFtcclxuXF0rJGJw X2xvY2F0aW9uMTNcW1x0IFxdK3ZvaWQgbWFya2VyNC4qIiB7Ci0rCXBhc3MgInJ1biB1bnRpbCBi cmVha3BvaW50IHNldCBhdCBzbWFsbCBmdW5jdGlvbiwgb3B0aW1pemVkIGZpbGUiCi0rICAgIH0K LSsgICAgLXJlICJCcmVha3BvaW50ICRkZWNpbWFsLCBtYXJrZXI0IFxcKGQ9MTc3NjAxOTc2XFwp IGF0IC4qJHNyY2ZpbGUxOiRicF9sb2NhdGlvbjE0XFtcclxuXF0rJGJwX2xvY2F0aW9uMTRcW1x0 IFxdK3ZvaWQgbWFya2VyNC4qIiB7Ci0rICAgICAgICAjIG1hcmtlcjQoKSBpcyBkZWZpbmVkIGF0 IGxpbmUgNDYgd2hlbiBjb21waWxlZCB3aXRoIC1EUFJPVE9UWVBFUwotKwlwYXNzICJydW4gdW50 aWwgYnJlYWtwb2ludCBzZXQgYXQgc21hbGwgZnVuY3Rpb24sIG9wdGltaXplZCBmaWxlIChsaW5l IGJwX2xvY2F0aW9uMTQpIgotKyAgICB9Ci0rICAgIC1yZSAiLiokZ2RiX3Byb21wdCAiIHsKLSsJ ZmFpbCAicnVuIHVudGlsIGJyZWFrcG9pbnQgc2V0IGF0IHNtYWxsIGZ1bmN0aW9uLCBvcHRpbWl6 ZWQgZmlsZSIKLSsgICAgfQotKyAgICB0aW1lb3V0IHsKLSsJZmFpbCAicnVuIHVudGlsIGJyZWFr cG9pbnQgc2V0IGF0IHNtYWxsIGZ1bmN0aW9uLCBvcHRpbWl6ZWQgZmlsZSAodGltZW91dCkiCi0r ICAgIH0KLSt9Ci0rCi0rCi0rIyBSZXNldCB0aGUgZGVmYXVsdCBhcmd1bWVudHMgZm9yIFZ4V29y a3MKLStpZiBbaXN0YXJnZXQgIiotKi12eHdvcmtzKiJdIHsKLSsgICAgc2V0IHRpbWVvdXQgMTAK LSsgICAgdmVyYm9zZSAiVGltZW91dCBpcyBub3cgJHRpbWVvdXQgc2Vjb25kcyIgMgotKyAgICBz ZW5kX2dkYiAic2V0IGFyZ3MgbWFpblxuIgotKyAgICBnZGJfZXhwZWN0IC1yZSAiLiokZ2RiX3By b21wdCAkIiB7fQotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsx LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKLUBA IC0wLDAgKzEsNDQgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk5 LCAyMDAyLCAyMDAzIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKwotKyAgIFBs ZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBm aWxlIHRvOgotKyAgIGJ1Zy1nZGJAcHJlcC5haS5taXQuZWR1ICAqLwotKwotKy8qIFRoZSBjb2Rl IGZvciB0aGlzIGZpbGUgd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSBnZGIgdGVzdHN1aXRlCi0rICAg dGVzdGNhc2UgImJyZWFrLmMiLiAqLwotKwotKy8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGRv IG5vdGhpbmcgdXNlZnVsLiAgVGhleSBhcmUgaW5jbHVkZWQKLSsgICBzaW1wbHkgYXMgcGxhY2Vz IHRvIHRyeSBzZXR0aW5nIGJyZWFrcG9pbnRzIGF0LiAgVGhleSBhcmUKLSsgICBleHBsaWNpdGx5 ICJvbmUtbGluZSBmdW5jdGlvbnMiIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2FzZSB3b3JrcwotKyAg IChzb21lIHZlcnNpb25zIG9mIGdjYyBoYXZlIG9yIGhhdmUgaGFkIHByb2JsZW1zIHdpdGggdGhp cykuCi0rCi0rICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBpbiBhIHNlcGFyYXRlIHNvdXJjZSBmaWxl IHRvIHByZXZlbnQgYW4KLSsgICBvcHRpbWl6aW5nIGNvbXBpbGVyIGZyb20gaW5saW5pbmcgdGhl bSBhbmQgb3B0aW1pemluZyB0aGVtIGF3YXkuICovCi0rCi0rI2lmZGVmIFBST1RPVFlQRVMKLStp bnQgbWFya2VyMSAodm9pZCkgeyByZXR1cm4gKDApOyB9CS8qIHNldCBicmVha3BvaW50IDE1IGhl cmUgKi8KLStpbnQgbWFya2VyMiAoaW50IGEpIHsgcmV0dXJuICgxKTsgfQkvKiBzZXQgYnJlYWtw b2ludCA4IGhlcmUgKi8KLSt2b2lkIG1hcmtlcjMgKGNoYXIgKmEsIGNoYXIgKmIpIHt9CS8qIHNl dCBicmVha3BvaW50IDE3IGhlcmUgKi8KLSt2b2lkIG1hcmtlcjQgKGxvbmcgZCkge30JCS8qIHNl dCBicmVha3BvaW50IDE0IGhlcmUgKi8KLSsjZWxzZQotK2ludCBtYXJrZXIxICgpIHsgcmV0dXJu ICgwKTsgfQkJLyogc2V0IGJyZWFrcG9pbnQgMTYgaGVyZSAqLwotK2ludCBtYXJrZXIyIChhKSBp bnQgYTsgeyByZXR1cm4gKDEpOyB9CS8qIHNldCBicmVha3BvaW50IDkgaGVyZSAqLwotK3ZvaWQg bWFya2VyMyAoYSwgYikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhlcmUg Ki8KLSt2b2lkIG1hcmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNldCBicmVha3BvaW50IDEzIGhl cmUgKi8KLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZp bGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVmaWxlLmV4cAotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3Jl ZmlsZS5leHAKLUBAIC0wLDAgKzEsMjMyIEBACi0rIyBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5 NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMAotKyMgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLgotKwotKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEZyZWQgRmlzaC4gKGZuZkBjeWdu dXMuY29tKQotKwotKyMgYXJlIHdlIG9uIGEgdGFyZ2V0IGJvYXJkCi0raWYgIVtpc25hdGl2ZV0g dGhlbiB7Ci0rICAgIHJldHVybgotK30KLSsKLStzZXQgdGVzdGZpbGUgImNvcmVtYWtlciIKLStz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9m aWxlICR7dGVzdGZpbGV9XQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgImFkZGl0aW9uYWxf ZmxhZ3M9LWZwaWUgLXBpZSJ9XSAhPSAiIiB9IHsKLSsgICAgIGdkYl9zdXBwcmVzc19lbnRpcmVf ZmlsZSAiVGVzdGNhc2UgY29tcGlsZSBmYWlsZWQsIHNvIGFsbCB0ZXN0cyBpbiB0aGlzIGZpbGUg d2lsbCBhdXRvbWF0aWNhbGx5IGZhaWwuIgotK30KLSsKLSsjIENyZWF0ZSBhbmQgc291cmNlIHRo ZSBmaWxlIHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyCi0rIyB1 c2VkIHRvIGNvbXBpbGUgdGhlIHRlc3QgY2FzZS4KLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHti aW5maWxlfV0gewotKyAgICByZXR1cm4gLTE7Ci0rfQotKwotKyMgQ3JlYXRlIGEgY29yZSBmaWxl IG5hbWVkICJjb3JlZmlsZSIgcmF0aGVyIHRoYW4ganVzdCAiY29yZSIsIHRvCi0rIyBhdm9pZCBw cm9ibGVtcyB3aXRoIHN5cyBhZG1pbiB0eXBlcyB0aGF0IGxpa2UgdG8gcmVndWxhcmx5IHBydW5l IGFsbAotKyMgZmlsZXMgbmFtZWQgImNvcmUiIGZyb20gdGhlIHN5c3RlbS4KLSsjCi0rIyBBcmJp dHJhcmlseSB0cnkgc2V0dGluZyB0aGUgY29yZSBzaXplIGxpbWl0IHRvICJ1bmxpbWl0ZWQiIHNp bmNlCi0rIyB0aGlzIGRvZXMgbm90IGh1cnQgb24gc3lzdGVtcyB3aGVyZSB0aGUgY29tbWFuZCBk b2VzIG5vdCB3b3JrIGFuZAotKyMgYWxsb3dzIHVzIHRvIGdlbmVyYXRlIGEgY29yZSBvbiBzeXN0 ZW1zIHdoZXJlIGl0IGRvZXMuCi0rIwotKyMgU29tZSBzeXN0ZW1zIGFwcGVuZCAiY29yZSIgdG8g dGhlIG5hbWUgb2YgdGhlIHByb2dyYW07IG90aGVycyBhcHBlbmQKLSsjIHRoZSBuYW1lIG9mIHRo ZSBwcm9ncmFtIHRvICJjb3JlIjsgc3RpbGwgb3RoZXJzIChsaWtlIExpbnV4LCBhcyBvZgotKyMg TWF5IDIwMDMpIGNyZWF0ZSBjb3JlcyBuYW1lZCAiY29yZS5QSUQiLiAgSW4gdGhlIGxhdHRlciBj YXNlLCB3ZQotKyMgY291bGQgaGF2ZSBtYW55IGNvcmUgZmlsZXMgbHlpbmcgYXJvdW5kLCBhbmQg aXQgbWF5IGJlIGRpZmZpY3VsdCB0bwotKyMgdGVsbCB3aGljaCBvbmUgaXMgb3Vycywgc28gbGV0 J3MgcnVuIHRoZSBwcm9ncmFtIGluIGEgc3ViZGlyZWN0b3J5LgotK3NldCBmb3VuZCAwCi0rc2V0 IGNvcmVkaXIgW3N0YW5kYXJkX291dHB1dF9maWxlIGNvcmVkaXIuW2dldHBpZF1dCi0rZmlsZSBt a2RpciAkY29yZWRpcgotK2NhdGNoICJzeXN0ZW0gXCIoY2QgJHtjb3JlZGlyfTsgdWxpbWl0IC1j IHVubGltaXRlZDsgJHtiaW5maWxlfTsgdHJ1ZSkgPi9kZXYvbnVsbCAyPiYxXCIiCi0rIyAgICAg IHJlbW90ZV9leGVjIGhvc3QgIiR7YmluZmlsZX0iCi0rZm9yZWFjaCBpICIke2NvcmVkaXJ9L2Nv cmUgJHtjb3JlZGlyfS9jb3JlLmNvcmVtYWtlci5jICR7YmluZmlsZX0uY29yZSIgewotKyAgICBp ZiBbcmVtb3RlX2ZpbGUgYnVpbGQgZXhpc3RzICRpXSB7Ci0rCXJlbW90ZV9leGVjIGJ1aWxkICJt diAkaSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgY29yZWZpbGVdIgotKwlzZXQgZm91bmQgMQotKyAg ICB9Ci0rfQotKyMgQ2hlY2sgZm9yICJjb3JlLlBJRCIuCi0raWYgeyAkZm91bmQgPT0gMCB9IHsK LSsgICAgc2V0IG5hbWVzIFtnbG9iIC1ub2NvbXBsYWluIC1kaXJlY3RvcnkgJGNvcmVkaXIgY29y ZS4qXQotKyAgICBpZiB7W2xsZW5ndGggJG5hbWVzXSA9PSAxfSB7Ci0rICAgICAgICBzZXQgY29y ZWZpbGUgW2ZpbGUgam9pbiAkY29yZWRpciBbbGluZGV4ICRuYW1lcyAwXV0KLSsgICAgICAgIHJl bW90ZV9leGVjIGJ1aWxkICJtdiAkY29yZWZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlIGNvcmVm aWxlXSIKLSsgICAgICAgIHNldCBmb3VuZCAxCi0rICAgIH0KLSt9Ci0raWYgeyAkZm91bmQgPT0g MCB9IHsKLSsgICAgIyBUaGUgYnJhaW5kYW1hZ2VkIEhQVVggc2hlbGwgcXVpdHMgYWZ0ZXIgdGhl IHVsaW1pdCAtYyBhYm92ZQotKyAgICAjIHdpdGhvdXQgZXhlY3V0aW5nICR7YmluZmlsZX0uICBT byB3ZSB0cnkgYWdhaW4gd2l0aG91dCB0aGUKLSsgICAgIyB1bGltaXQgaGVyZSBpZiB3ZSBkaWRu J3QgZmluZCBhIGNvcmUgZmlsZSBhYm92ZS4KLSsgICAgIyBPaCwgSSBzaG91bGQgbWVudGlvbiB0 aGF0IGFueSAiYnJhaW5kYW1hZ2VkIiBub24tVW5peCBzeXN0ZW0gaGFzCi0rICAgICMgdGhlIHNh bWUgcHJvYmxlbS4gSSBsaWtlIHRoZSBjZCBiaXQgdG9vLCBpdCdzIHJlYWxseSBuZWF0J24gc3R1 ZmYuCi0rICAgIGNhdGNoICJzeXN0ZW0gXCIoY2QgW2ZpbGUgZGlybmFtZSBbc3RhbmRhcmRfb3V0 cHV0X2ZpbGUgJHtiaW5maWxlfV1dOyAke2JpbmZpbGV9OyB0cnVlKSA+L2Rldi9udWxsIDI+JjFc IiIKLSsgICAgZm9yZWFjaCBpICJbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgY29yZV0gW3N0YW5kYXJk X291dHB1dF9maWxlIGNvcmUuY29yZW1ha2VyLmNdICR7YmluZmlsZX0uY29yZSIgewotKwlpZiBb cmVtb3RlX2ZpbGUgYnVpbGQgZXhpc3RzICRpXSB7Ci0rCSAgICByZW1vdGVfZXhlYyBidWlsZCAi bXYgJGkgW3N0YW5kYXJkX291dHB1dF9maWxlIGNvcmVmaWxlXSIKLSsJICAgIHNldCBmb3VuZCAx Ci0rCX0KLSsgICAgfQotK30KLSsKLStpZiB7ICRmb3VuZCA9PSAwICB9IHsKLSsgICAgIyBUcnkg dG8gY2xlYW4gdXAgYWZ0ZXIgb3Vyc2VsdmVzLgotKyAgICByZW1vdGVfZmlsZSBidWlsZCBkZWxl dGUgW2ZpbGUgam9pbiAkY29yZWRpciBjb3JlbW1hcC5kYXRhXQotKyAgICByZW1vdGVfZXhlYyBi dWlsZCAicm1kaXIgJGNvcmVkaXIiCi0rICAgIHdhcm5pbmcgImNhbid0IGdlbmVyYXRlIGEgY29y ZSBmaWxlIC0gY29yZSB0ZXN0cyBzdXBwcmVzc2VkIC0gY2hlY2sgdWxpbWl0IC1jIgotKyAgICBy ZXR1cm4gMAotK30KLSsKLSsjCi0rIyBUZXN0IHRoYXQgd2UgY2FuIHNpbXBseSBzdGFydHVwIHdp dGggYSAiLWNvcmU9Y29yZWZpbGUiIGNvbW1hbmQgbGluZSBhcmcKLSsjIGFuZCByZWNvZ25pemUg dGhhdCB0aGUgY29yZSBmaWxlIGlzIGEgdmFsaWQsIHVzYWJsZSBjb3JlIGZpbGUuCi0rIyBUbyBk byB0aGlzLCB3ZSBtdXN0IHNodXRkb3duIHRoZSBjdXJyZW50bHkgcnVubmluZyBnZGIgYW5kIHJl c3RhcnQKLSsjIHdpdGggdGhlIC1jb3JlIGFyZ3MuICBXZSBjYW4ndCB1c2UgZ2RiX3N0YXJ0IGJl Y2F1c2UgaXQgbG9va3MgZm9yCi0rIyB0aGUgZmlyc3QgZ2RiIHByb21wdCwgYW5kIHRoZSBtZXNz YWdlIHdlIGFyZSBsb29raW5nIGZvciBvY2N1cnMKLSsjIGJlZm9yZSB0aGUgZmlyc3QgcHJvbXB0 LiAgQWxzbywgd2UgY2FuJ3QgaW5jbHVkZSBHREJGTEFHUyBiZWNhdXNlCi0rIyBpZiBpdCBpcyBl bXB0eSwgdGhpcyBjb25mdXNlcyBnZGIgd2l0aCBhbiBlbXB0eSBhcmd1bWVudCB0aGF0IGl0Ci0r IyBncnVtYmxlcyBhYm91dCAoc2FpZCBncnVtYmxpbmcgY3VycmVudGx5IGJlaW5nIGlnbm9yZWQg aW4gZ2RiX3N0YXJ0KS4KLSsjICoqRklYTUUqKgotKyMKLSsjIEFub3RoZXIgcHJvYmxlbSBpcyB0 aGF0IG9uIHNvbWUgc3lzdGVtcyAoc29sYXJpcyBmb3IgZXhhbXBsZSksIHRoZXJlCi0rIyBpcyBh cHBhcmVudGx5IGEgbGltaXQgb24gdGhlIGxlbmd0aCBvZiBhIGZ1bGx5IHNwZWNpZmllZCBwYXRo IHRvCi0rIyB0aGUgY29yZW1ha2VyIGV4ZWN1dGFibGUsIGF0IGFib3V0IDgwIGNoYXJzLiAgRm9y IHRoaXMgY2FzZSwgY29uc2lkZXIKLSsjIGl0IGEgcGFzcywgYnV0IG5vdGUgdGhhdCB0aGUgcHJv Z3JhbSBuYW1lIGlzIGJhZC4KLSsKLStnZGJfZXhpdAotK2lmICR2ZXJib3NlPjEgdGhlbiB7Ci0r ICAgIHNlbmRfdXNlciAiU3Bhd25pbmcgJEdEQiAtbncgJElOVEVSTkFMX0dEQkZMQUdTICRHREJG TEFHUyAtY29yZT1bc3RhbmRhcmRfb3V0cHV0X2ZpbGUgY29yZWZpbGVdXG4iCi0rfQotKwotK3Nl dCBvbGR0aW1lb3V0ICR0aW1lb3V0Ci0rc2V0IHRpbWVvdXQgW2V4cHIgIiR0aW1lb3V0ICsgNjAi XQotK3ZlcmJvc2UgIlRpbWVvdXQgaXMgbm93ICR0aW1lb3V0IHNlY29uZHMiIDIKLStldmFsICJz cGF3biAkR0RCIC1udyAkSU5URVJOQUxfR0RCRkxBR1MgJEdEQkZMQUdTIC1jb3JlPVtzdGFuZGFy ZF9vdXRwdXRfZmlsZSBjb3JlZmlsZV0iCi0rZXhwZWN0IHsKLSsgICAgLXJlICJDb3VsZG4ndCBm aW5kIC4qIHJlZ2lzdGVycyBpbiBjb3JlIGZpbGUuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgICAg IGZhaWwgImFyZ3M6IC1jb3JlPWNvcmVmaWxlIChjb3VsZG4ndCBmaW5kIHJlZ3MpIgotKyAgICB9 Ci0rICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qY29yZW1ha2VyLipcclxuXCMwICAu KlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgImFyZ3M6IC1jb3JlPWNvcmVmaWxl IgotKyAgICB9Ci0rICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qXHJcblwjMCAgLipc KFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICJhcmdzOiAtY29yZT1jb3JlZmlsZSAo d2l0aCBiYWQgcHJvZ3JhbSBuYW1lKSIKLSsgICAgfQotKyAgICAtcmUgIi4qcmVnaXN0ZXJzIGZy b20gY29yZSBmaWxlOiBGaWxlIGluIHdyb25nIGZvcm1hdC4qICQiIHsKLSsJZmFpbCAiYXJnczog LWNvcmU9Y29yZWZpbGUgKGNvdWxkIG5vdCByZWFkIHJlZ2lzdGVycyBmcm9tIGNvcmUgZmlsZSki Ci0rICAgIH0KLSsgICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiCXsgZmFpbCAiYXJnczogLWNvcmU9 Y29yZWZpbGUiIH0KLSsgICAgdGltZW91dCAJCXsgZmFpbCAiKHRpbWVvdXQpIHN0YXJ0aW5nIHdp dGggLWNvcmUiIH0KLSt9Ci0rCi0rCi0rIwotKyMgVGVzdCB0aGF0IHN0YXJ0dXAgd2l0aCBib3Ro IGFuIGV4ZWN1dGFibGUgZmlsZSBhbmQgLWNvcmUgYXJndW1lbnQuCi0rIyBTZWUgcHJldmlvdXMg Y29tbWVudHMgYWJvdmUsIHRoZXkgYXJlIHN0aWxsIGFwcGxpY2FibGUuCi0rIwotKwotK2Nsb3Nl OwotKwotK2lmICR2ZXJib3NlPjEgdGhlbiB7Ci0rICAgIHNlbmRfdXNlciAiU3Bhd25pbmcgJEdE QiAtbncgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAkYmluZmlsZSAtY29yZT1bc3RhbmRh cmRfb3V0cHV0X2ZpbGUgY29yZWZpbGVdXG4iCi0rfQotKwotKwotK2V2YWwgInNwYXduICRHREIg LW53ICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgJGJpbmZpbGUgLWNvcmU9W3N0YW5kYXJk X291dHB1dF9maWxlIGNvcmVmaWxlXSI7Ci0rZXhwZWN0IHsKLSsgICAgLXJlICJDb3JlIHdhcyBn ZW5lcmF0ZWQgYnkgLipjb3JlbWFrZXIuKlxyXG5cIzAgIC4qXChcKS4qXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJcGFzcyAiYXJnczogZXhlY2ZpbGUgLWNvcmU9Y29yZWZpbGUiCi0rICAgIH0KLSsg ICAgLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLipcclxuXCMwICAuKlwoXCkuKlxyXG4kZ2Ri X3Byb21wdCAkIgkgewotKwlwYXNzICJhcmdzOiBleGVjZmlsZSAtY29yZT1jb3JlZmlsZSAod2l0 aCBiYWQgcHJvZ3JhbSBuYW1lKSIKLSsgICAgfQotKyAgICAtcmUgIi4qcmVnaXN0ZXJzIGZyb20g Y29yZSBmaWxlOiBGaWxlIGluIHdyb25nIGZvcm1hdC4qICQiIHsKLSsJZmFpbCAiYXJnczogZXhl Y2ZpbGUgLWNvcmU9Y29yZWZpbGUgKGNvdWxkIG5vdCByZWFkIHJlZ2lzdGVycyBmcm9tIGNvcmUg ZmlsZSkiCi0rICAgIH0KLSsgICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiCXsgZmFpbCAiYXJnczog ZXhlY2ZpbGUgLWNvcmU9Y29yZWZpbGUiIH0KLSsgICAgdGltZW91dCAJCXsgZmFpbCAiKHRpbWVv dXQpIHN0YXJ0aW5nIHdpdGggLWNvcmUiIH0KLSt9Ci0rc2V0IHRpbWVvdXQgJG9sZHRpbWVvdXQK LSt2ZXJib3NlICJUaW1lb3V0IGlzIG5vdyAkdGltZW91dCBzZWNvbmRzIiAyCi0rCi0rY2xvc2U7 Ci0rCi0rIyBOb3cgcmVzdGFydCBub3JtYWxseS4KLSsKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rIyBU ZXN0IGJhc2ljIGNvcmVmaWxlIHJlY29nbml0aW9uIHZpYSBjb3JlLWZpbGUgY29tbWFuZC4KLSsK LStzZW5kX2dkYiAiY29yZS1maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSBjb3JlZmlsZV1cbiIK LStnZGJfZXhwZWN0IHsKLSsgICAgLXJlICIuKiBwcm9ncmFtIGlzIGJlaW5nIGRlYnVnZ2VkIGFs cmVhZHkuKnkgb3Igbi4gJCIgewotKwkjIGdkYl9sb2FkIG1heSBjb25uZWN0IHVzIHRvIGEgZ2Ri c2VydmVyLgotKwlzZW5kX2dkYiAieVxuIgotKwlleHBfY29udGludWU7Ci0rICAgIH0KLSsgICAg LXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLipjb3JlbWFrZXIuKlxyXG5cIzAgIC4qXChcKS4q XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAiY29yZS1maWxlIGNvbW1hbmQiCi0rICAgIH0K LSsgICAgLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLipcclxuXCMwICAuKlwoXCkuKlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgImNvcmUtZmlsZSBjb21tYW5kICh3aXRoIGJhZCBwcm9n cmFtIG5hbWUpIgotKyAgICB9Ci0rICAgIC1yZSAiLipyZWdpc3RlcnMgZnJvbSBjb3JlIGZpbGU6 IEZpbGUgaW4gd3JvbmcgZm9ybWF0LiogJCIgewotKwlmYWlsICJjb3JlLWZpbGUgY29tbWFuZCAo Y291bGQgbm90IHJlYWQgcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlKSIKLSsgICAgfQotKyAgICAt cmUgIi4qJGdkYl9wcm9tcHQgJCIJeyBmYWlsICJjb3JlLWZpbGUgY29tbWFuZCIgfQotKyAgICB0 aW1lb3V0IAkJeyBmYWlsICIodGltZW91dCkgY29yZS1maWxlIGNvbW1hbmQiIH0KLSt9Ci0rCi0r IyBUZXN0IGNvcnJlY3QgbWFwcGluZyBvZiBjb3JlZmlsZSBzZWN0aW9ucyBieSBwcmludGluZyBz b21lIHZhcmlhYmxlcy4KLSsKLStnZGJfdGVzdCAicHJpbnQgY29yZW1ha2VyX2RhdGEiICJcXFwk JGRlY2ltYWwgPSAyMDIiCi0rZ2RiX3Rlc3QgInByaW50IGNvcmVtYWtlcl9ic3MiICJcXFwkJGRl Y2ltYWwgPSAxMCIKLStnZGJfdGVzdCAicHJpbnQgY29yZW1ha2VyX3JvIiAiXFxcJCRkZWNpbWFs ID0gMjAxIgotKwotK2dkYl90ZXN0ICJwcmludCBmdW5jMjo6Y29yZW1ha2VyX2xvY2FsIiAiXFxc JCRkZWNpbWFsID0gXFx7MCwgMSwgMiwgMywgNFxcfSIKLSsKLSsjIFNvbWVob3cgd2UgYmV0dGVy IHRlc3QgdGhlIGFiaWxpdHkgdG8gcmVhZCB0aGUgcmVnaXN0ZXJzIG91dCBvZiB0aGUgY29yZQot KyMgZmlsZSBjb3JyZWN0bHkuICBJIGRvbid0IHRoaW5rIHRoZSBvdGhlciB0ZXN0cyBkbyB0aGlz LgotKwotK2dkYl90ZXN0ICJidCIgImFib3J0LipmdW5jMi4qZnVuYzEuKm1haW4uKiIgImJhY2t0 cmFjZSBpbiBjb3JlZmlsZS5leHAiCi0rZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhh LWZIJ1xdKiBpbiAuKiBcXCguKlxcKS4qIiAidXAgaW4gY29yZWZpbGUuZXhwIgotKwotKyMgVGVz dCBhYmlsaXR5IHRvIHJlYWQgbW1hcCdkIGRhdGEKLSsKLStnZGJfdGVzdCAieC84YmQgYnVmMSIg Ii4qOi4qMC4qMS4qMi4qMy4qNC4qNS4qNi4qNyIgImFjY2Vzc2luZyBvcmlnaW5hbCBtbWFwIGRh dGEgaW4gY29yZSBmaWxlIgotK3NldHVwX3hmYWlsICIqLSotc3Vub3MqIiAiKi0qLXVsdHJpeCoi ICIqLSotYWl4KiIKLStzZXQgdGVzdCAiYWNjZXNzaW5nIG1tYXBwZWQgZGF0YSBpbiBjb3JlIGZp bGUiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIngvOGJkIGJ1ZjIiICIkdGVzdCIgewotKyAgICAtcmUg Ii4qOi4qMC4qMS4qMi4qMy4qNC4qNS4qNi4qNy4qJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICIk dGVzdCIKLSsgICAgfQotKyAgICAtcmUgIjB4XFtmXF0qOi4qQ2Fubm90IGFjY2VzcyBtZW1vcnkg YXQgYWRkcmVzcyAweFxbZlxdKi4qJGdkYl9wcm9tcHQgJCIgewotKwlmYWlsICIkdGVzdCAobWFw cGluZyBmYWlsZWQgYXQgcnVudGltZSkiCi0rICAgIH0KLSsgICAgLXJlICIweC4qOi4qQ2Fubm90 IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweC4qJGdkYl9wcm9tcHQgJCIgewotKwlmYWlsICIk dGVzdCAobWFwcGluZyBhZGRyZXNzIG5vdCBmb3VuZCBpbiBjb3JlIGZpbGUpIgotKyAgICB9Ci0r fQotKwotKyMgdGVzdCByZWluaXRfZnJhbWVfY2FjaGUKLSsKLStnZGJfbG9hZCAke2JpbmZpbGV9 Ci0rZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZIJ1xdKiBpbiAuKiBcXCguKlxc KS4qIiAidXAgaW4gY29yZWZpbGUuZXhwIChyZWluaXQpIgotKwotK2dkYl90ZXN0ICJjb3JlIiAi Tm8gY29yZSBmaWxlIG5vdy4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2Nv cmVtYWtlci5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2Nv cmVtYWtlci5jCi1AQCAtMCwwICsxLDE0MSBAQAotKy8qIENvcHlyaWdodCAxOTkyLCAxOTkzLCAx OTk0LCAxOTk1LCAxOTk2LCAxOTk5Ci0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQKLSsgICB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAg IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg MzMwLAotKyAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsKLSsvKiBTaW1wbGUg bGl0dGxlIHByb2dyYW0gdGhhdCBqdXN0IGdlbmVyYXRlcyBhIGNvcmUgZHVtcCBmcm9tIGluc2lk ZSBzb21lCi0rICAgbmVzdGVkIGZ1bmN0aW9uIGNhbGxzLiAqLwotKwotKyNpbmNsdWRlIDxzdGRp by5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5j bHVkZSA8c3lzL21tYW4uaD4KLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rI2luY2x1ZGUgPHN0ZGxp Yi5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsKLSsjaWZuZGVmIF9fU1REQ19fCi0rI2RlZmlu ZQljb25zdAkvKiovCi0rI2VuZGlmCi0rCi0rI2RlZmluZSBNQVBTSVpFICg4ICogMTAyNCkKLSsK LSsvKiBEb24ndCBtYWtlIHRoZXNlIGF1dG9tYXRpYyB2YXJzIG9yIHdlIHdpbGwgaGF2ZSB0byB3 YWxrIGJhY2sgdXAgdGhlCi0rICAgc3RhY2sgdG8gYWNjZXNzIHRoZW0uICovCi0rCi0rY2hhciAq YnVmMTsKLStjaGFyICpidWYyOwotKwotK2ludCBjb3JlbWFrZXJfZGF0YSA9IDE7CS8qIEluIERh dGEgc2VjdGlvbiAqLwotK2ludCBjb3JlbWFrZXJfYnNzOwkvKiBJbiBCU1Mgc2VjdGlvbiAqLwot KwotK2NvbnN0IGludCBjb3JlbWFrZXJfcm8gPSAyMDE7CS8qIEluIFJlYWQtT25seSBEYXRhIHNl Y3Rpb24gKi8KLSsKLSsvKiBOb3RlIHRoYXQgaWYgdGhlIG1hcHBpbmcgZmFpbHMgZm9yIGFueSBy ZWFzb24sIHdlIHNldCBidWYyCi0rICAgdG8gLTEgYW5kIHRoZSB0ZXN0c3VpdGUgbm90aWNlcyB0 aGlzIGFuZCByZXBvcnRzIGl0IGFzCi0rICAgYSBmYWlsdXJlIGR1ZSB0byBhIG1hcHBpbmcgZXJy b3IuICBUaGlzIHdheSB3ZSBkb24ndCBoYXZlCi0rICAgdG8gdGVzdCBmb3Igc3BlY2lmaWMgZXJy b3JzIHdoZW4gcnVubmluZyB0aGUgY29yZSBtYWtlci4gKi8KLSsKLSt2b2lkCi0rbW1hcGRhdGEg KCkKLSt7Ci0rICBpbnQgaiwgZmQ7Ci0rCi0rICAvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBh IGJ1ZmZlciB0aGF0IHdpbGwgYmUgdXNlZCB0byB3cml0ZQotKyAgICAgdGhlIGZpbGUgdGhhdCBp cyBsYXRlciBtYXBwZWQgaW4uICovCi0rCi0rICBidWYxID0gKGNoYXIgKikgbWFsbG9jIChNQVBT SVpFKTsKLSsgIGZvciAoaiA9IDA7IGogPCBNQVBTSVpFOyArK2opCi0rICAgIHsKLSsgICAgICBi dWYxW2pdID0gajsKLSsgICAgfQotKwotKyAgLyogV3JpdGUgdGhlIGZpbGUgdG8gbWFwIGluICov Ci0rCi0rICBmZCA9IG9wZW4gKCJjb3JlbW1hcC5kYXRhIiwgT19DUkVBVCB8IE9fUkRXUiwgMDY2 Nik7Ci0rICBpZiAoZmQgPT0gLTEpCi0rICAgIHsKLSsgICAgICBwZXJyb3IgKCJjb3JlbW1hcC5k YXRhIG9wZW4gZmFpbGVkIik7Ci0rICAgICAgYnVmMiA9IChjaGFyICopIC0xOwotKyAgICAgIHJl dHVybjsKLSsgICAgfQotKyAgd3JpdGUgKGZkLCBidWYxLCBNQVBTSVpFKTsKLSsKLSsgIC8qIE5v dyBtYXAgdGhlIGZpbGUgaW50byBvdXIgYWRkcmVzcyBzcGFjZSBhcyBidWYyICovCi0rCi0rICBi dWYyID0gKGNoYXIgKikgbW1hcCAoMCwgTUFQU0laRSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwg TUFQX1BSSVZBVEUsIGZkLCAwKTsKLSsgIGlmIChidWYyID09IChjaGFyICopIC0xKQotKyAgICB7 Ci0rICAgICAgcGVycm9yICgibW1hcCBmYWlsZWQiKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0K LSsKLSsgIC8qIFZlcmlmeSB0aGF0IHRoZSBvcmlnaW5hbCBkYXRhIGFuZCB0aGUgbWFwcGVkIGRh dGEgYXJlIGlkZW50aWNhbC4KLSsgICAgIElmIG5vdCwgd2UnZCByYXRoZXIgZmFpbCBub3cgdGhh biB3aGVuIHRyeWluZyB0byBhY2Nlc3MgdGhlIG1hcHBlZAotKyAgICAgZGF0YSBmcm9tIHRoZSBj b3JlIGZpbGUuICovCi0rCi0rICBmb3IgKGogPSAwOyBqIDwgTUFQU0laRTsgKytqKQotKyAgICB7 Ci0rICAgICAgaWYgKGJ1ZjFbal0gIT0gYnVmMltqXSkKLSsJewotKwkgIGZwcmludGYgKHN0ZGVy ciwgIm1hcHBlZCBkYXRhIGlzIGluY29ycmVjdCIpOwotKwkgIGJ1ZjIgPSAoY2hhciAqKSAtMTsK LSsJICByZXR1cm47Ci0rCX0KLSsgICAgfQotK30KLSsKLSt2b2lkCi0rZnVuYzIgKCkKLSt7Ci0r ICBpbnQgY29yZW1ha2VyX2xvY2FsWzVdOwotKyAgaW50IGk7Ci0rCi0rI2lmZGVmIFNBX0ZVTExE VU1QCi0rICAvKiBGb3JjZSBhIGNvcmVmaWxlIHRoYXQgaW5jbHVkZXMgdGhlIGRhdGEgc2VjdGlv biBmb3IgQUlYLiAgKi8KLSsgIHsKLSsgICAgc3RydWN0IHNpZ2FjdGlvbiBzYTsKLSsKLSsgICAg c2lnYWN0aW9uIChTSUdBQlJULCAoc3RydWN0IHNpZ2FjdGlvbiAqKTAsICZzYSk7Ci0rICAgIHNh LnNhX2ZsYWdzIHw9IFNBX0ZVTExEVU1QOwotKyAgICBzaWdhY3Rpb24gKFNJR0FCUlQsICZzYSwg KHN0cnVjdCBzaWdhY3Rpb24gKikwKTsKLSsgIH0KLSsjZW5kaWYKLSsKLSsgIC8qIE1ha2Ugc3Vy ZSB0aGF0IGNvcmVtYWtlcl9sb2NhbCBkb2Vzbid0IGdldCBvcHRpbWl6ZWQgYXdheS4gKi8KLSsg IGZvciAoaSA9IDA7IGkgPCA1OyBpKyspCi0rICAgIGNvcmVtYWtlcl9sb2NhbFtpXSA9IGk7Ci0r ICBjb3JlbWFrZXJfYnNzID0gMDsKLSsgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspCi0rICAgIGNv cmVtYWtlcl9ic3MgKz0gY29yZW1ha2VyX2xvY2FsW2ldOwotKyAgY29yZW1ha2VyX2RhdGEgPSBj b3JlbWFrZXJfcm8gKyAxOwotKyAgYWJvcnQgKCk7Ci0rfQotKwotK3ZvaWQKLStmdW5jMSAoKQot K3sKLSsgIGZ1bmMyICgpOwotK30KLSsKLStpbnQgbWFpbiAoKQotK3sKLSsgIG1tYXBkYXRhICgp OwotKyAgZnVuYzEgKCk7Ci0rICByZXR1cm4gMDsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10 ZXN0LXNlbGYtMjAwNTAxMTAucGF0Y2ggYi9nZGItNi4zLXRlc3Qtc2VsZi0yMDA1MDExMC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjcwOTA5My4uMDAwMDAwMAotLS0gYS9n ZGItNi4zLXRlc3Qtc2VsZi0yMDA1MDExMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICsw LDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBFbGVuYSBaYW5ub25pIDxlemFubm9uaUByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAyNyBPY3Qg MjAxNyAyMTowNzo1MCArMDIwMAotU3ViamVjdDogZ2RiLTYuMy10ZXN0LXNlbGYtMjAwNTAxMTAu cGF0Y2gKLQotOzsgR2V0IHNlbGZ0ZXN0IHdvcmtpbmcgd2l0aCBzZXAtZGVidWctaW5mbwotOzs9 ZmVkb3JhdGVzdAotCi0yMDA0LTAyLTIzICBFbGVuYSBaYW5ub25pICA8ZXphbm5vbmlAcmVkaGF0 LmNvbT4KLQotICAgICAgICAqIGdkYi5nZGIvc2VsZnRlc3QuZXhwOiBNYWtlIHN1cmUgdGhhdCB0 aGUgZGVidWcgZGlyZWN0b3J5IGlzCi0gICAgICAgIHNldCB1cCBwcm9wZXJseS4KLSAgICAgICAg KiBnZGIuZ2RiL2NvbXBsYWludHMuZXhwOiBEaXR0by4KLSAgICAgICAgKiBnZGIuZ2RiL3hmdWxs cGF0aC5leHA6IERpdHRvLgotICAgICAgICAqIGdkYi5nZGIvb2JzZXJ2ZXIuZXhwOiBEaXR0by4K LQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3NlbGZ0ZXN0LXN1cHBvcnQuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9saWIvc2VsZnRlc3Qtc3VwcG9ydC5leHAKLS0tLSBhL2dkYi90ZXN0c3Vp dGUvbGliL3NlbGZ0ZXN0LXN1cHBvcnQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9zZWxm dGVzdC1zdXBwb3J0LmV4cAotQEAgLTE1MiwxOCArMTUyLDE4IEBAIHByb2MgZG9fc2VsZl90ZXN0 cyB7ZnVuY3Rpb24gYm9keX0gewotICAgICB9Ci0gCi0gICAgICMgUmVtb3ZlIGFueSBvbGQgY29w eSBseWluZyBhcm91bmQuCi0tICAgIHJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICR4Z2RiCi0rICAg ICNyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSAkeGdkYgotIAotICAgICBnZGJfc3RhcnQKLS0gICAg c2V0IGZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0ICRHREJfRlVMTFBBVEggJHhnZGJdCi0rICAg ICNzZXQgZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJEdEQl9GVUxMUEFUSCAkeGdkYl0KLSAK LS0gICAgc2V0IHJlc3VsdCBbc2VsZnRlc3Rfc2V0dXAgJGZpbGUgJGZ1bmN0aW9uXQotKyAgICBz ZXQgcmVzdWx0IFtzZWxmdGVzdF9zZXR1cCAkR0RCX0ZVTExQQVRIICRmdW5jdGlvbl0KLSAgICAg aWYgeyRyZXN1bHQgPT0gMH0gdGhlbiB7Ci0gCXNldCByZXN1bHQgW3VwbGV2ZWwgJGJvZHldCi0g ICAgIH0KLSAKLSAgICAgZ2RiX2V4aXQKLS0gICAgY2F0Y2ggInJlbW90ZV9maWxlIGhvc3QgZGVs ZXRlICRmaWxlIgotKyAgICAjY2F0Y2ggInJlbW90ZV9maWxlIGhvc3QgZGVsZXRlICRmaWxlIgot IAotICAgICBpZiB7JHJlc3VsdCA8IDB9IHRoZW4gewotIAl3YXJuaW5nICJDb3VsZG4ndCB0ZXN0 IHNlbGYiCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFtcG9saW5lLWxv b2t1cC1sb2NrLWZpeC5wYXRjaCBiL2dkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1s b29rdXAtbG9jay1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YzFh MWUuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFtcG9saW5lLWxvb2t1 cC1sb2NrLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gRkVE T1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWRvcmEgR0RCIHBh dGNoZXMgPGludmFsaWRAZW1haWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAyMTowNzo1 MCArMDIwMAotU3ViamVjdDogZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFtcG9saW5lLWxvb2t1 cC1sb2NrLWZpeC5wYXRjaAotCi07OyBGaXggbG9ja3VwIG9uIHRyYW1wb2xpbmUgdnMuIGl0cyBm dW5jdGlvbiBsb29rdXA7IHVucmVwcm9kdWNpYmxlIChCWiAyMTgzNzkpLgotOzs9ZmVkb3JhCi0K LWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjE4 Mzc5Ci0KLWRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLS0tLSBhL2dk Yi9zeW10YWIuYwotKysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtMzE2OSw2ICszMTY5LDEzIEBAIGZp bmRfcGNfc2VjdF9saW5lIChDT1JFX0FERFIgcGMsIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2VjdGlv biwgaW50IG5vdGN1cnJlbnQpCi0gCSAgICAgbXN5bWJvbC0+bGlua2FnZV9uYW1lICgpKTsgKi8K LSAJICA7Ci0gCS8qIGZhbGwgdGhyb3VnaCAqLwotKwkvKiBgbXN5bWJvbCcgdHJhbXBvbGluZSBt YXkgYmUgbG9jYXRlZCBiZWZvcmUgaXRzIC50ZXh0IHN5bWJvbAotKwkgICBidXQgdGhpcyB0ZXh0 IHN5bWJvbCBtYXkgYmUgdGhlIGFkZHJlc3Mgd2Ugd2VyZSBsb29raW5nIGZvci4KLSsJICAgQXZv aWQgYGZpbmRfcGNfc2VjdF9saW5lJzwtPmBmaW5kX3BjX2xpbmUnIGluZmluaXRlIGxvb3AuCi0r CSAgIFJlZCBIYXQgQnVnIDIxODM3OS4gICovCi0rCWVsc2UgaWYgKEJNU1lNQk9MX1ZBTFVFX0FE RFJFU1MgKG1mdW5zeW0pID09IHBjKQotKwkgIHdhcm5pbmcgKCJJbiBzdHViIGZvciAlcyAoMHgl cyk7IGludGVybG9ja2VkLCBwbGVhc2Ugc3VibWl0IHRoZSBiaW5hcnkgdG8gaHR0cDovL2J1Z3pp bGxhLnJlZGhhdC5jb20iLCBtc3ltYm9sLm1pbnN5bS0+bGlua2FnZV9uYW1lICgpLCBwYWRkcmVz cyAodGFyZ2V0X2dkYmFyY2ggKCksIHBjKSk7Ci0rCS8qIGZhbGwgdGhyb3VnaCAqLwotIAllbHNl Ci0gCSAgewotIAkgICAgLyogRGV0ZWN0IGFuIG9idmlvdXMgY2FzZSBvZiBpbmZpbml0ZSByZWN1 cnNpb24uICBJZiB0aGlzCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3Jl LWFzLWFyZy5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YjkxNWQuLjAwMDAwMDAKLS0tIGEvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE5NiArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZy aSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi02LjYtYnVpbGRpZC1s b2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKLQotOzs9cHVzaCtqYW4KLQotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNnMDA1NTguaHRtbAotCi1bIEZpeGVkIHVw IHNpbmNlIHRoZSBtYWlsLiAgXQotCi1PbiBUaHUsIDIxIEphbiAyMDEwIDE4OjE3OjE1ICswMTAw LCBEb3VnIEV2YW5zIHdyb3RlOgotPiBOb3QgYW4gZXhoYXVzdGl2ZSBsaXN0LCBidXQgaWYgd2Ug Z28gZG93biB0aGUgcGF0aCBvZiBjb252ZXJ0aW5nICJnZGIKLT4gY29yZWZpbGUiIHRvICJnZGIg LWMgY29yZWZpbGUiLCB0aGVuIHdlIGFsc28gbmVlZCB0byB0aGluayBhYm91dCAiZmlsZQotPiBj b3JlZmlsZSIgYmVpbmcgY29udmVydGVkIHRvICJjb3JlIGNvcmVmaWxlIiBbb3IgInRhcmdldCBj b3JlCi0+IGNvcmVmaWxlIiwgImNvcmUiIGlzIGFwcGFyZW50bHkgZGVwcmVjYXRlZCBpbiBmYXZv ciBvZiAidGFyZ2V0IGNvcmUiXQotPiBhbmQgInRhcmdldCBleGVjIGNvcmVmaWxlIiAtPiAidGFy Z2V0IGNvcmUgY29yZWZpbGUiLiAgUHJlc3VtYWJseQotPiAiZmlsZSBjb3JlZmlsZSIgKGFuZCAi dGFyZ2V0IGV4ZWMgY29yZWZpbGUiKSB3b3VsZCBkaXNjYXJkIHRoZQotPiBjdXJyZW50bHkgc2Vs ZWN0ZWQgZXhlY3V0YWJsZS4gIEJ1dCBtYXliZSBub3QuICBXaWxsIHRoYXQgYmUgY29uZnVzaW5n Ci0+IGZvciB1c2Vycz8gIEkgZG9uJ3Qga25vdy4KLQotV2hpbGUgdGhpbmtpbmcgYWJvdXQgaXQg b3ZlcnJpZGluZyBzb21lIEdEQiBfY29tbWFuZHNfIHdhcyBub3QgbXkgaW50ZW50aW9uLgotCi1U aGVyZSBpcyBhIGdlbmVyYWwgYXNzdW1wdGlvbiBpZiBJIGhhdmUgYSBzaGVsbCBDT01NQU5EIGFu ZCBzb21lIEZJTEUgSSBjYW4gZG8KLSQgQ09NTUFORCBGSUxFCi1hbmQgQ09NTUFORCB3aWxsIGFw cHJvcHJpYXRlbHkgbG9hZCB0aGUgRklMRS4KLQotRlNGIEdEQiBjdXJyZW50bHkgbmVlZHMgdG8g c3BlY2lmeSBhbHNvIHRoZSBleGVjdXRhYmxlIGZpbGUgZm9yIGNvcmUgZmlsZXMKLXdoaWNoIGFs cmVhZHkgaW5oaWJpdHMgdGhpcyBpbnR1aXRpdmUgZXhwZWN0YXRpb24uICBPVE9IIHdpdGggdGhl IGJ1aWxkLWlkCi1sb2NhdGluZyBwYXRjaCB3aGljaCBjb3VsZCBhbGxvdyBzdWNoIGludHVpdGl2 ZSBzdGFydCAgbm90bmVlZGluZyB0aGUKLWV4ZWN1dGFibGUgZmlsZS4gIFN0aWxsIGl0IGN1cnJl bnRseSBkaWQgbm90IHdvcmsgZHVlIHRvIHRoZSByZXF1aXJlZCAiLWMiOgotJCBDT01NQU5EIC1j IENPUkVGSUxFCi0KLUVudGVyaW5nICJmaWxlIiwgImNvcmUtZmlsZSIgb3IgImF0dGFjaCIgY29t bWFuZHMgaXMgYWxyZWFkeSBleHBsaWNpdCBlbm91Z2gKLXNvIHRoYXQgaXQgSU1PIHNob3VsZCBk byB3aGF0IHRoZSBjb21tYW5kIG5hbWUgc2F5cyB3aXRob3V0IGFueQotYXV0b2RldGVjdGlvbnMu ICBUaGUgc2Vjb25kIGNvbW1hbmQgbGluZSBhcmd1bWVudAotKGNhcHR1cmVkX21haW4tPnBpZF9v cl9jb3JlX2FyZykgaXMgYWxzbyBhdXRvZGV0ZWN0ZWQgKGZvciBQSUQgb3IgQ09SRSkgYnV0Ci1u ZWl0aGVyICJhdHRhY2giIGFjY2VwdHMgYSBjb3JlIGZpbGUgbm9yICJjb3JlLWZpbGUiIGFjY2Vw dHMgYSBQSUQuCi0KLVRoZSBwYXRjaCBtYWtlcyBzZW5zZSBvbmx5IHdpdGggdGhlIGJ1aWxkLWlk IHBhdGNoc2V0IHNvIHRoaXMgaXMgbm90IHN1Ym1pdAotZm9yIEZTRiBHREIgaW5jbHVzaW9uIHll dC4gIEkgYW0gZmluZSB3aXRoIHlvdXIgcGF0Y2ggKCsvLSBIdWkgWmh1J3MgcGVuZGluZwotYmZk X2NoZWNrX2Zvcm1hdF9tYXRjaGVzKSBhcyB0aGUgcGF0Y2ggYmVsb3cgaXMgaXRzIG5hdHVyYWwg ZXh0ZW5zaW9uLgotCi1Tb3JyeSBmb3IgdGhlIGRlbGF5LAotSmFuCi0KLTIwMTAtMDEtMjUgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZXhjZXB0aW9u cy5oIChlbnVtIGVycm9ycyA8SVNfQ09SRV9FUlJPUj4pOiBOZXcuCi0JKiBleGVjLmM6IEluY2x1 ZGUgZXhjZXB0aW9ucy5oLgotCShleGVjX2ZpbGVfYXR0YWNoIDxiZmRfY29yZT4pOiBDYWxsIHRo cm93X2Vycm9yIChJU19DT1JFX0VSUk9SLCAuLi4pLgotCSogbWFpbi5jIChleGVjX29yX2NvcmVf ZmlsZV9hdHRhY2gpOiBOZXcuCi0JKGNhcHR1cmVkX21haW4gPG9wdGluZCA8IGFyZ2M+KTogU2V0 IGFsc28gY29yZWFyZy4KLQkoY2FwdHVyZWRfbWFpbiA8c3RyY21wIChleGVjYXJnLCBzeW1hcmcp ID09IDA+KTogTmV3IHZhcmlhYmxlIGZ1bmMuCi0JQ2FsbCBleGVjX29yX2NvcmVfZmlsZV9hdHRh Y2ggaWYgQ09SRUFSRyBtYXRjaGVzIEVYRUNBUkcuICBDYWxsCi0Jc3ltYm9sX2ZpbGVfYWRkX21h aW4gb25seSBpZiBDT1JFX0JGRCByZW1haW5lZCBOVUxMLgotCi1IdHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDUxNy5odG1sCi0yMDEwLTAxLTIwICBEb3Vn IEV2YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0KLQkqIGV4ZWMuYyAoZXhlY19maWxlX2F0dGFjaCk6 IFByaW50IGEgbW9yZSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBpZiB0aGUKLQl1c2VyIGRpZCAiZ2Ri IGNvcmUiLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V4ZWMuYyBiL2dkYi9leGVjLmMKLS0tLSBhL2dk Yi9leGVjLmMKLSsrKyBiL2dkYi9leGVjLmMKLUBAIC0xOCw2ICsxOCw4IEBACi0gICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwotIAotICNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImFyY2gtdXRpbHMu aCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotICNpbmNsdWRlICJmcmFtZS5oIgotICNpbmNs dWRlICJpbmZlcmlvci5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLUBAIC00OTUsMTIgKzQ5Nywy NyBAQCBleGVjX2ZpbGVfYXR0YWNoIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5 KQotIAotICAgICAgIGlmICghYmZkX2NoZWNrX2Zvcm1hdF9tYXRjaGVzIChleGVjX2JmZCwgYmZk X29iamVjdCwgJm1hdGNoaW5nKSkKLSAJewotKwkgIGludCBpc19jb3JlOwotKwotKwkgIC8qIElm IHRoZSB1c2VyIGFjY2lkZW50YWxseSBkaWQgImdkYiBjb3JlIiwgcHJpbnQgYSB1c2VmdWwKLSsJ ICAgICBlcnJvciBtZXNzYWdlLiAgQ2hlY2sgaXQgb25seSBhZnRlciBiZmRfb2JqZWN0IGhhcyBi ZWVuIGNoZWNrZWQgYXMKLSsJICAgICBhIHZhbGlkIGV4ZWN1dGFibGUgbWF5IGdldCByZWNvZ25p emVkIGZvciBleGFtcGxlIGFsc28gYXMKLSsJICAgICAidHJhZC1jb3JlIi4gICovCi0rCSAgaXNf Y29yZSA9IGJmZF9jaGVja19mb3JtYXQgKGV4ZWNfYmZkLCBiZmRfY29yZSk7Ci0rCi0gCSAgLyog TWFrZSBzdXJlIHRvIGNsb3NlIGV4ZWNfYmZkLCBvciBlbHNlICJydW4iIG1pZ2h0IHRyeSB0byB1 c2UKLSAJICAgICBpdC4gICovCi0gCSAgZXhlY19jbG9zZSAoKTsKLS0JICBlcnJvciAoXygiXCIl cHNcIjogbm90IGluIGV4ZWN1dGFibGUgZm9ybWF0OiAlcyIpLAotLQkJIHN0eWxlZF9zdHJpbmcg KGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwgc2NyYXRjaF9wYXRobmFtZSksCi0tCQkgZ2RiX2Jm ZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCksIG1hdGNoaW5nKS5jX3N0ciAoKSk7Ci0rCi0rCSAg aWYgKGlzX2NvcmUgIT0gMCkKLSsJICAgIHRocm93X2Vycm9yIChJU19DT1JFX0VSUk9SLAotKwkJ CSBfKCJcIiVzXCIgaXMgYSBjb3JlIGZpbGUuXG4iCi0rCQkJICAgIlBsZWFzZSBzcGVjaWZ5IGFu IGV4ZWN1dGFibGUgdG8gZGVidWcuIiksCi0rCQkJIHNjcmF0Y2hfcGF0aG5hbWUpOwotKwkgIGVs c2UKLSsJICAgIGVycm9yIChfKCJcIiVwc1wiOiBub3QgaW4gZXhlY3V0YWJsZSBmb3JtYXQ6ICVz IiksCi0rCQkgICBzdHlsZWRfc3RyaW5nIChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksIHNjcmF0 Y2hfcGF0aG5hbWUpLAotKwkJICAgZ2RiX2JmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCksIG1h dGNoaW5nKS5jX3N0ciAoKSk7Ci0gCX0KLSAKLSAgICAgICBpZiAoYnVpbGRfc2VjdGlvbl90YWJs ZSAoZXhlY19iZmQsICZzZWN0aW9ucywgJnNlY3Rpb25zX2VuZCkpCi1kaWZmIC0tZ2l0IGEvZ2Ri L21haW4uYyBiL2dkYi9tYWluLmMKLS0tLSBhL2dkYi9tYWluLmMKLSsrKyBiL2dkYi9tYWluLmMK LUBAIC01MjQsNiArNTI0LDM0IEBAIHN0cnVjdCBjbWRhcmcKLSAgIGNoYXIgKnN0cmluZzsKLSB9 OwotIAotKy8qIENhbGwgZXhlY19maWxlX2F0dGFjaC4gIElmIGl0IGRldGVjdGVkIEZJTEVOQU1F IGlzIGEgY29yZSBmaWxlIGNhbGwKLSsgICBjb3JlX2ZpbGVfY29tbWFuZC4gIFByaW50IHRoZSBv cmlnaW5hbCBleGVjX2ZpbGVfYXR0YWNoIGVycm9yIG9ubHkgaWYKLSsgICBjb3JlX2ZpbGVfY29t bWFuZCBmYWlsZWQgdG8gZmluZCBhIG1hdGNoaW5nIGV4ZWN1dGFibGUuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNoIChjb25zdCBjaGFyICpmaWxlbmFtZSwg aW50IGZyb21fdHR5KQotK3sKLSsgIGdkYl9hc3NlcnQgKGV4ZWNfYmZkID09IE5VTEwpOwotKwot KyAgdHJ5Ci0rICAgIHsKLSsgICAgICBleGVjX2ZpbGVfYXR0YWNoIChmaWxlbmFtZSwgZnJvbV90 dHkpOwotKyAgICB9Ci0rICBjYXRjaCAoZ2RiX2V4Y2VwdGlvbl9lcnJvciAmZSkKLSsgICAgewot KyAgICAgIGlmIChlLmVycm9yID09IElTX0NPUkVfRVJST1IpCi0rCXsKLSsJICBjb3JlX2ZpbGVf Y29tbWFuZCAoKGNoYXIgKikgZmlsZW5hbWUsIGZyb21fdHR5KTsKLSsKLSsJICAvKiBJZmYgdGhl IGNvcmUgZmlsZSBmb3VuZCBpdHMgZXhlY3V0YWJsZSBzdXBwcmVzcyB0aGUgZXJyb3IgbWVzc2Fn ZQotKwkgICAgIGZyb20gZXhlY19maWxlX2F0dGFjaC4gICovCi0rCSAgaWYgKGV4ZWNfYmZkICE9 IE5VTEwpCi0rCSAgICByZXR1cm47Ci0rCX0KLSsgICAgICB0aHJvd19leGNlcHRpb24gKHN0ZDo6 bW92ZSAoZSkpOwotKyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gY2FwdHVyZWRfbWFpbl8x IChzdHJ1Y3QgY2FwdHVyZWRfbWFpbl9hcmdzICpjb250ZXh0KQotIHsKLUBAIC05NTksNiArOTg3 LDggQEAgY2FwdHVyZWRfbWFpbl8xIChzdHJ1Y3QgY2FwdHVyZWRfbWFpbl9hcmdzICpjb250ZXh0 KQotIAl7Ci0gCSAgc3ltYXJnID0gYXJndltvcHRpbmRdOwotIAkgIGV4ZWNhcmcgPSBhcmd2W29w dGluZF07Ci0rCSAgaWYgKG9wdGluZCArIDEgPT0gYXJnYyAmJiBjb3JlYXJnID09IE5VTEwpCi0r CSAgICBjb3JlYXJnID0gYXJndltvcHRpbmRdOwotIAkgIG9wdGluZCsrOwotIAl9Ci0gCi1AQCAt MTExNCwxMiArMTE0NCwyNSBAQCBjYXB0dXJlZF9tYWluXzEgKHN0cnVjdCBjYXB0dXJlZF9tYWlu X2FyZ3MgKmNvbnRleHQpCi0gICAgICAgJiYgc3ltYXJnICE9IE5VTEwKLSAgICAgICAmJiBzdHJj bXAgKGV4ZWNhcmcsIHN5bWFyZykgPT0gMCkKLSAgICAgewotKyAgICAgIGNhdGNoX2NvbW1hbmRf ZXJyb3JzX2NvbnN0X2Z0eXBlICpmdW5jOwotKwotKyAgICAgIC8qIENhbGwgZXhlY19vcl9jb3Jl X2ZpbGVfYXR0YWNoIG9ubHkgaWYgdGhlIGZpbGUgd2FzIHNwZWNpZmllZCBhcwotKwkgYSBjb21t YW5kIGxpbmUgYXJndW1lbnQgKGFuZCBub3QgYW4gYSBjb21tYW5kIGxpbmUgb3B0aW9uKS4gICov Ci0rICAgICAgaWYgKGNvcmVhcmcgIT0gTlVMTCAmJiBzdHJjbXAgKGNvcmVhcmcsIGV4ZWNhcmcp ID09IDApCi0rCXsKLSsJICBmdW5jID0gZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNoOwotKwkgIGNv cmVhcmcgPSBOVUxMOwotKwl9Ci0rICAgICAgZWxzZQotKwlmdW5jID0gZXhlY19maWxlX2F0dGFj aDsKLSsKLSAgICAgICAvKiBUaGUgZXhlYyBmaWxlIGFuZCB0aGUgc3ltYm9sLWZpbGUgYXJlIHRo ZSBzYW1lLiAgSWYgd2UgY2FuJ3QKLSAgICAgICAgICBvcGVuIGl0LCBiZXR0ZXIgb25seSBwcmlu dCBvbmUgZXJyb3IgbWVzc2FnZS4KLS0gICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyByZXR1 cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MhICAqLwotLSAgICAgIHJldCA9IGNhdGNoX2NvbW1hbmRf ZXJyb3JzIChleGVjX2ZpbGVfYXR0YWNoLCBleGVjYXJnLAotLQkJCQkgICFiYXRjaF9mbGFnKTsK LS0gICAgICBpZiAocmV0ICE9IDApCi0rICAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgcmV0 dXJucyBub24temVybyBvbiBzdWNjZXNzIQotKwkgRG8gbm90IGxvYWQgRVhFQ0FSRyBhcyBhIHN5 bWJvbCBmaWxlIGlmIGl0IGhhcyBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkCi0rCSBhcyBhIGNvcmUg ZmlsZS4gICovCi0rICAgICAgcmV0ID0gY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGZ1bmMsIGV4ZWNh cmcsICFiYXRjaF9mbGFnKTsKLSsgICAgICBpZiAocmV0ICE9IDAgJiYgY29yZV9iZmQgPT0gTlVM TCkKLSAJcmV0ID0gY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHN5bWJvbF9maWxlX2FkZF9tYWluX2Fk YXB0ZXIsCi0gCQkJCSAgICBzeW1hcmcsICFiYXRjaF9mbGFnKTsKLSAgICAgfQotZGlmZiAtLWdp dCBhL2dkYnN1cHBvcnQvY29tbW9uLWV4Y2VwdGlvbnMuaCBiL2dkYnN1cHBvcnQvY29tbW9uLWV4 Y2VwdGlvbnMuaAotLS0tIGEvZ2Ric3VwcG9ydC9jb21tb24tZXhjZXB0aW9ucy5oCi0rKysgYi9n ZGJzdXBwb3J0L2NvbW1vbi1leGNlcHRpb25zLmgKLUBAIC0xMDYsNiArMTA2LDkgQEAgZW51bSBl cnJvcnMgewotICAgICAgIl9FUlJPUiIgaXMgYXBwZW5kZWQgdG8gdGhlIG5hbWUuICAqLwotICAg TUFYX0NPTVBMRVRJT05TX1JFQUNIRURfRVJST1IsCi0gCi0rICAvKiBBdHRlbXB0IHRvIGxvYWQg YSBjb3JlIGZpbGUgYXMgZXhlY3V0YWJsZS4gICovCi0rICBJU19DT1JFX0VSUk9SLAotKwotICAg LyogQWRkIG1vcmUgZXJyb3JzIGhlcmUuICAqLwotICAgTlJfRVJST1JTCi0gfTsKCmRpZmYgLS1n aXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS1zY2wucGF0Y2ggYi9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLXJwbS1zY2wucGF0Y2gKaW5kZXggOTQ3Yjg1NS4uODEwNTZjYyAxMDA2NDQKLS0t IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCisrKyBiL2dkYi02LjYtYnVp bGRpZC1sb2NhdGUtcnBtLXNjbC5wYXRjaApAQCAtOTgsNyArOTgsNyBAQCBkaWZmIC0tZ2l0IGEv Z2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIv cmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCiArKysg Yi9nZGIvZHdhcmYyL3JlYWQuYwotQEAgLTMwMjIsNiArMzAyMiwxNiBAQCByZWFkX2dkYl9pbmRl eF9mcm9tX2J1ZmZlciAoY29uc3QgY2hhciAqZmlsZW5hbWUsCitAQCAtMzAzNCw2ICszMDM0LDE2 IEBAIHJlYWRfZ2RiX2luZGV4X2Zyb21fYnVmZmVyIChjb25zdCBjaGFyICpmaWxlbmFtZSwKICAg ICAgICJzZXQgdXNlLWRlcHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMgb24iLiAgKi8KICAgIGlmICh2 ZXJzaW9uIDwgNiAmJiAhZGVwcmVjYXRlZF9vaykKICAgICAgewpAQCAtMTE1LDcgKzExNSw3IEBA IGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAgICAg ICAgc3RhdGljIGludCB3YXJuaW5nX3ByaW50ZWQgPSAwOwogICAgICAgIGlmICghd2FybmluZ19w cmludGVkKQogIAl7Ci1AQCAtMzAzMyw2ICszMDQzLDEwIEBAIHRvIHVzZSB0aGUgc2VjdGlvbiBh bnl3YXkuIiksCitAQCAtMzA0NSw2ICszMDU1LDEwIEBAIHRvIHVzZSB0aGUgc2VjdGlvbiBhbnl3 YXkuIiksCiAgCSAgd2FybmluZ19wcmludGVkID0gMTsKICAJfQogICAgICAgIHJldHVybiAwOwoK ZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLnBhdGNoCmluZGV4IDkwZjcxNGIuLmY2MDY3OTMgMTAwNjQ0Ci0tLSBhL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRj aApAQCAtMTEwNyw3ICsxMTA3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvaW5kZXgtY2Fj aGUuYyBiL2dkYi9kd2FyZjIvaW5kZXgtY2FjaGUuYwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIv cmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCiArKysg Yi9nZGIvZHdhcmYyL3JlYWQuYwotQEAgLTIyMTUsNyArMjIxNSw3IEBAIGR3YXJmMl9nZXRfZHd6 X2ZpbGUgKGR3YXJmMl9wZXJfYmZkICpwZXJfYmZkKQorQEAgLTIyMjUsNyArMjIyNSw3IEBAIGR3 YXJmMl9nZXRfZHd6X2ZpbGUgKGR3YXJmMl9wZXJfYmZkICpwZXJfYmZkKQogICAgICB9CiAgCiAg ICBpZiAoZHd6X2JmZCA9PSBOVUxMKQpAQCAtMTExNiw3ICsxMTE2LDcgQEAgZGlmZiAtLWdpdCBh L2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKICAKICAgIGlmIChkd3pfYmZk ID09IG51bGxwdHIpCiAgICAgIHsKLUBAIC01OTc3LDcgKzU5NzcsNyBAQCBnZXRfZ2RiX2luZGV4 X2NvbnRlbnRzX2Zyb21fc2VjdGlvbiAob2JqZmlsZSAqb2JqLCBUICpzZWN0aW9uX293bmVyKQor QEAgLTU5ODksNyArNTk4OSw3IEBAIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9zZWN0aW9u IChvYmpmaWxlICpvYmosIFQgKnNlY3Rpb25fb3duZXIpCiAgc3RhdGljIGdkYjo6YXJyYXlfdmll dzxjb25zdCBnZGJfYnl0ZT4KICBnZXRfZ2RiX2luZGV4X2NvbnRlbnRzX2Zyb21fY2FjaGUgKG9i amZpbGUgKm9iaiwgZHdhcmYyX3Blcl9iZmQgKmR3YXJmMl9wZXJfYmZkKQogIHsKQEAgLTExMjUs NyArMTEyNSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIv cmVhZC5jCiAgICBpZiAoYnVpbGRfaWQgPT0gbnVsbHB0cikKICAgICAgcmV0dXJuIHt9OwogIAot QEAgLTU5OTAsNyArNTk5MCw3IEBAIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9jYWNoZSAo b2JqZmlsZSAqb2JqLCBkd2FyZjJfcGVyX2JmZCAqZHdhcmYyX3Blcl9iZmQpCitAQCAtNjAwMiw3 ICs2MDAyLDcgQEAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9tX2NhY2hlIChvYmpmaWxlICpv YmosIGR3YXJmMl9wZXJfYmZkICpkd2FyZjJfcGVyX2JmZCkKICBzdGF0aWMgZ2RiOjphcnJheV92 aWV3PGNvbnN0IGdkYl9ieXRlPgogIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9jYWNoZV9k d3ogKG9iamZpbGUgKm9iaiwgZHd6X2ZpbGUgKmR3eikKICB7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYu OC1xdWl0LW5ldmVyLWFib3J0cy5wYXRjaCBiL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ODI0NjkuLjAwMDAwMDAKLS0tIGEv Z2RiLTYuOC1xdWl0LW5ldmVyLWFib3J0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICsw LDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBGZWRvcmEgR0RCIHBhdGNoZXMgPGludmFsaWRAZW1haWwuY29tPgotRGF0ZTogRnJpLCAyNyBP Y3QgMjAxNyAyMTowNzo1MCArMDIwMAotU3ViamVjdDogZ2RiLTYuOC1xdWl0LW5ldmVyLWFib3J0 cy5wYXRjaAotCi07OyBNYWtlIHRoZSBHREIgcXVpdCBwcm9jZXNzaW5nIG5vbi1hYm9ydGFibGUg dG8gY2xlYW51cCBldmVyeXRoaW5nIHByb3Blcmx5LgotOzs9ZmVkb3JhOiBJdCB3YXMgdXNlZnVs IG9ubHkgYWZ0ZXIgZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNo IC4KLQotV2UgbWF5IGFib3J0IHRoZSBwcm9jZXNzIG9mIGRldGFjaGluZyB0aHJlYWRzIHdpdGgg bXVsdGlwbGUgU0lHSU5UcyAtIHdoaWNoIGFyZQotYmVpbmcgc2VudCBkdXJpbmcgYSB0ZXN0Y2Fz ZSB0ZXJtaW5hdGluZyBpdHMgY2hpbGQgR0RCLgotCi1Tb21lIG9mIHRoZSB0aHJlYWRzIG1heSBu b3QgYmUgcHJvcGVybHkgUFRSQUNFX0RFVEFDSGVkIHdoaWNoIGh1cnRzIGlmIHRoZXkKLXNob3Vs ZCBoYXZlIGJlZW4gZGV0YWNoZWQgd2l0aCBTSUdTVE9QIChhcyB0aGV5IGFyZSBhY2NpZGVudGFs bHkgbGVmdCBydW5uaW5nCi1vbiB0aGUgZGVidWdnZXIgdGVybWluYXRpb24pLgotCi1kaWZmIC0t Z2l0IGEvZ2RiL2RlZnMuaCBiL2dkYi9kZWZzLmgKLS0tLSBhL2dkYi9kZWZzLmgKLSsrKyBiL2dk Yi9kZWZzLmgKLUBAIC0xNzcsNiArMTc3LDEwIEBAIGV4dGVybiB2b2lkIGRlZmF1bHRfcXVpdF9o YW5kbGVyICh2b2lkKTsKLSAvKiBGbGFnIHRoYXQgZnVuY3Rpb24gcXVpdCBzaG91bGQgY2FsbCBx dWl0X2ZvcmNlLiAgKi8KLSBleHRlcm4gdm9sYXRpbGUgaW50IHN5bmNfcXVpdF9mb3JjZV9ydW47 Ci0gCi0rI2lmZGVmIE5FRURfREVUQUNIX1NJR1NUT1AKLStleHRlcm4gaW50IHF1aXRfZmxhZ19j bGVhbnVwOwotKyNlbmRpZgotKwotIGV4dGVybiB2b2lkIHF1aXQgKHZvaWQpOwotIAotIC8qIEhl bHBlciBmb3IgdGhlIFFVSVQgbWFjcm8uICAqLwotZGlmZiAtLWdpdCBhL2dkYi9leHRlbnNpb24u YyBiL2dkYi9leHRlbnNpb24uYwotLS0tIGEvZ2RiL2V4dGVuc2lvbi5jCi0rKysgYi9nZGIvZXh0 ZW5zaW9uLmMKLUBAIC03NjksNiArNzY5LDExIEBAIGNoZWNrX3F1aXRfZmxhZyAodm9pZCkKLSB7 Ci0gICBpbnQgcmVzdWx0ID0gMDsKLSAKLSsjaWZkZWYgTkVFRF9ERVRBQ0hfU0lHU1RPUAotKyAg aWYgKHF1aXRfZmxhZ19jbGVhbnVwKQotKyAgICByZXR1cm4gMDsKLSsjZW5kaWYKLSsKLSAgIGZv ciAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpleHRsYW5nIDogZXh0ZW5z aW9uX2xhbmd1YWdlcykKLSAgICAgewotICAgICAgIGlmIChleHRsYW5nLT5vcHMgIT0gbnVsbHB0 cgotZGlmZiAtLWdpdCBhL2dkYi90b3AuYyBiL2dkYi90b3AuYwotLS0tIGEvZ2RiL3RvcC5jCi0r KysgYi9nZGIvdG9wLmMKLUBAIC0xNzcwLDcgKzE3NzAsMTMgQEAgcXVpdF9mb3JjZSAoaW50ICpl eGl0X2FyZywgaW50IGZyb21fdHR5KQotICAgZWxzZSBpZiAocmV0dXJuX2NoaWxkX3Jlc3VsdCkK LSAgICAgZXhpdF9jb2RlID0gcmV0dXJuX2NoaWxkX3Jlc3VsdF92YWx1ZTsKLSAKLSsjaWZuZGVm IE5FRURfREVUQUNIX1NJR1NUT1AKLSAgIC8qIFdlIHdhbnQgdG8gaGFuZGxlIGFueSBxdWl0IGVy cm9ycyBhbmQgZXhpdCByZWdhcmRsZXNzLiAgKi8KLSsjZWxzZQotKyAgLyogV2Ugd2FudCB0byBo YW5kbGUgYW55IHF1aXQgZXJyb3JzIGFuZCBleGl0IHJlZ2FyZGxlc3MgYnV0IHdlIHNob3VsZCBu ZXZlcgotKyAgICAgZ2V0IHVzZXItaW50ZXJydXB0ZWQgdG8gcHJvcGVybHkgZGV0YWNoIHRoZSBp bmZlcmlvci4gICovCi0rICBxdWl0X2ZsYWdfY2xlYW51cCA9IDE7Ci0rI2VuZGlmCi0gCi0gICAv KiBHZXQgb3V0IG9mIHRmaW5kIG1vZGUsIGFuZCBraWxsIG9yIGRldGFjaCBhbGwgaW5mZXJpb3Jz LiAgKi8KLSAgIHRyeQotZGlmZiAtLWdpdCBhL2dkYi91dGlscy5jIGIvZ2RiL3V0aWxzLmMKLS0t LSBhL2dkYi91dGlscy5jCi0rKysgYi9nZGIvdXRpbHMuYwotQEAgLTEwMyw2ICsxMDMsMTMgQEAg c3RhdGljIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OmR1cmF0aW9uIHByb21wdF9mb3JfY29u dGludWVfd2FpdF90aW1lOwotIAotIHN0YXRpYyBib29sIGRlYnVnX3RpbWVzdGFtcCA9IGZhbHNl OwotIAotKyNpZmRlZiBORUVEX0RFVEFDSF9TSUdTVE9QCi0rLyogTm9uemVybyBtZWFucyB3ZSBh cmUgYWxyZWFkeSBwcm9jZXNzaW5nIHRoZSBxdWl0dGluZyBjbGVhbnVwcyBhbmQgd2Ugc2hvdWxk Ci0rICAgbm8gbG9uZ2VyIGdldCBhYm9ydGVkLiAgKi8KLSsKLStpbnQgcXVpdF9mbGFnX2NsZWFu dXA7Ci0rI2VuZGlmCi0rCi0gLyogVHJ1ZSBtZWFucyB0aGF0IHN0cmluZ3Mgd2l0aCBjaGFyYWN0 ZXIgdmFsdWVzID4weDdGIHNob3VsZCBiZSBwcmludGVkCi0gICAgYXMgb2N0YWwgZXNjYXBlcy4g IEZhbHNlIG1lYW5zIGp1c3QgcHJpbnQgdGhlIHZhbHVlIChlLmcuIGl0J3MgYW4KLSAgICBpbnRl cm5hdGlvbmFsIGNoYXJhY3RlciwgYW5kIHRoZSB0ZXJtaW5hbCBvciB3aW5kb3cgY2FuIGNvcGUu KSAgKi8KCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5w YXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDAyZjJjLi4wMDAwMDAwCi0tLSBhL2dkYi1hcmNoZXIt cGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAs MCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IEZlZG9yYSBHREIgcGF0Y2hlcyA8aW52YWxpZEBlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI3IE9j dCAyMDE3IDIxOjA3OjUwICswMjAwCi1TdWJqZWN0OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMta2Vl cC1kaXNhYmxlZC5wYXRjaAotCi07Oz1wdXNoK2phbjogQnJlYWtwb2ludHMgZGlzYWJsaW5nIG1h dGNoaW5nIHNob3VsZCBub3QgYmUgYmFzZWQgb24gYWRkcmVzcy4KLQotZGlmZiAtLWdpdCBhL2dk Yi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi0tLS0gYS9nZGIvYnJlYWtwb2ludC5j Ci0rKysgYi9nZGIvYnJlYWtwb2ludC5jCi1AQCAtMTU0MzEsNiArMTU0MzEsNTAgQEAgc3RhdGlj IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICplbmFibGVicmVha2xpc3QgPSBOVUxMOwotIAotIGNt ZF9saXN0X2VsZW1lbnQgKmNvbW1hbmRzX2NtZF9lbGVtZW50ID0gbnVsbHB0cjsKLSAKLSt2b2lk Ci0rYnJlYWtwb2ludHNfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzZWN0aW9u X29mZnNldHMgJmRlbHRhKQotK3sKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsICoqYmxwX3Rt cDsKLSsgIGludCBjaGFuZ2VkID0gMDsKLSsKLSsgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNlcGFy YXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCk7Ci0rCi0rICBBTExfQlBfTE9DQVRJ T05TIChibCwgYmxwX3RtcCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqb3Nl Y3Q7Ci0rCi0rICAgICAgLyogQkwtPlNFQ1RJT04gY2FuIGJlIGNvcnJlY3RseSBOVUxMIGZvciBi cmVha3BvaW50cyB3aXRoIG11bHRpcGxlCi0rICAgICAgICAgbG9jYXRpb25zIGV4cGFuZGVkIHRo cm91Z2ggc3ltdGFiLiAgKi8KLSsKLSsgICAgICBBTExfT0JKRklMRV9PU0VDVElPTlMgKG9iamZp bGUsIG9zZWN0KQotKwl7Ci0rCSAgQ09SRV9BRERSIHJlbG9jYXRlZF9hZGRyZXNzOwotKwkgIENP UkVfQUREUiBkZWx0YV9vZmZzZXQ7Ci0rCi0rCSAgZGVsdGFfb2Zmc2V0ID0gZGVsdGFbb3NlY3Qt PnRoZV9iZmRfc2VjdGlvbi0+aW5kZXhdOwotKwkgIGlmIChkZWx0YV9vZmZzZXQgPT0gMCkKLSsJ ICAgIGNvbnRpbnVlOwotKwkgIHJlbG9jYXRlZF9hZGRyZXNzID0gYmwtPmFkZHJlc3MgKyBkZWx0 YV9vZmZzZXQ7Ci0rCi0rCSAgaWYgKG9ial9zZWN0aW9uX2FkZHIgKG9zZWN0KSA8PSByZWxvY2F0 ZWRfYWRkcmVzcwotKwkgICAgICAmJiByZWxvY2F0ZWRfYWRkcmVzcyA8IG9ial9zZWN0aW9uX2Vu ZGFkZHIgKG9zZWN0KSkKLSsJICAgIHsKLSsJICAgICAgaWYgKGJsLT5pbnNlcnRlZCkKLSsJCXJl bW92ZV9icmVha3BvaW50IChibCk7Ci0rCi0rCSAgICAgIGJsLT5hZGRyZXNzICs9IGRlbHRhX29m ZnNldDsKLSsJICAgICAgYmwtPnJlcXVlc3RlZF9hZGRyZXNzICs9IGRlbHRhX29mZnNldDsKLSsK LSsJICAgICAgY2hhbmdlZCA9IDE7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKGNo YW5nZWQpCi0rICAgIHN0ZDo6c29ydCAoYnBfbG9jYXRpb25zLCBicF9sb2NhdGlvbnMgKyBicF9s b2NhdGlvbnNfY291bnQsCi0rCSAgICAgICBicF9sb2NhdGlvbl9pc19sZXNzX3RoYW4pOwotK30K LSsKLSB2b2lkIF9pbml0aWFsaXplX2JyZWFrcG9pbnQgKCk7Ci0gdm9pZAotIF9pbml0aWFsaXpl X2JyZWFrcG9pbnQgKCkKLWRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIvZ2RiL2JyZWFr cG9pbnQuaAotLS0tIGEvZ2RiL2JyZWFrcG9pbnQuaAotKysrIGIvZ2RiL2JyZWFrcG9pbnQuaAot QEAgLTE2OTEsNiArMTY5MSw5IEBAIGV4dGVybiBjb25zdCBjaGFyICplcF9wYXJzZV9vcHRpb25h bF9pZl9jbGF1c2UgKGNvbnN0IGNoYXIgKiphcmcpOwotICAgIFVJT1VUIGlmZiBkZWJ1Z2dpbmcg bXVsdGlwbGUgdGhyZWFkcy4gICovCi0gZXh0ZXJuIHZvaWQgbWF5YmVfcHJpbnRfdGhyZWFkX2hp dF9icmVha3BvaW50IChzdHJ1Y3QgdWlfb3V0ICp1aW91dCk7Ci0gCi0rZXh0ZXJuIHZvaWQgYnJl YWtwb2ludHNfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkgIHNlY3Rp b25fb2Zmc2V0cyAmZGVsdGEpOwotKwotIC8qIFByaW50IHRoZSBzcGVjaWZpZWQgYnJlYWtwb2lu dC4gICovCi0gZXh0ZXJuIHZvaWQgcHJpbnRfYnJlYWtwb2ludCAoYnJlYWtwb2ludCAqYnApOwot IAotZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29iamZpbGVzLmMKLS0tLSBhL2dk Yi9vYmpmaWxlcy5jCi0rKysgYi9nZGIvb2JqZmlsZXMuYwotQEAgLTc0Miw2ICs3NDIsMTEgQEAg b2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQlvYmpfc2Vj dGlvbl9hZGRyIChzKSk7Ci0gICAgIH0KLSAKLSsgIC8qIEZpbmFsIGNhbGwgb2YgYnJlYWtwb2lu dF9yZV9zZXQgY2FuIGtlZXAgYnJlYWtwb2ludCBsb2NhdGlvbnMgZGlzYWJsZWQgaWYKLSsgICAg IHRoZWlyIGFkZHJlc3NlcyBtYXRjaC4gICovCi0rICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVi dWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxMKQotKyAgICBicmVha3BvaW50c19yZWxvY2F0ZSAo b2JqZmlsZSwgZGVsdGEpOwotKwotICAgLyogRGF0YSBjaGFuZ2VkLiAgKi8KLSAgIHJldHVybiAx OwotIH0KCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2ggYi9nZGItYXJj aGVyLXBpZS1hZGRvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYzY4 ZGIuLjAwMDAwMDAKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEZlZG9yYSBHREIgcGF0Y2hlcyA8aW52YWxpZEBlbWFpbC5jb20+Ci1E YXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3OjUwICswMjAwCi1TdWJqZWN0OiBnZGItYXJjaGVy LXBpZS1hZGRvbnMucGF0Y2gKLQotOzs9cHVzaCtqYW46IE1heSBnZXQgb2Jzb2xldGVkIGJ5IFRv bSdzIHVucmVsb2NhdGVkIG9iamZpbGVzIHBhdGNoLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5 cGVzLmggYi9nZGIvZ2RidHlwZXMuaAotLS0tIGEvZ2RiL2dkYnR5cGVzLmgKLSsrKyBiL2dkYi9n ZGJ0eXBlcy5oCi1AQCAtNjQ5LDYgKzY0OSw3IEBAIGVudW0gZmllbGRfbG9jX2tpbmQKLSAgIHsK LSAgICAgRklFTERfTE9DX0tJTkRfQklUUE9TLAkvKio8IGJpdHBvcyAqLwotICAgICBGSUVMRF9M T0NfS0lORF9FTlVNVkFMLAkvKio8IGVudW12YWwgKi8KLSsgICAgLyogVGhpcyBhZGRyZXNzIGlz IHVucmVsb2NhdGVkIGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwotICAgICBGSUVMRF9M T0NfS0lORF9QSFlTQUREUiwJLyoqPCBwaHlzYWRkciAqLwotICAgICBGSUVMRF9MT0NfS0lORF9Q SFlTTkFNRSwJLyoqPCBwaHlzbmFtZSAqLwotICAgICBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9D SwkvKio8IGR3YXJmX2Jsb2NrICovCi1AQCAtNjk5LDYgKzcwMCw3IEBAIHVuaW9uIGZpZWxkX2xv Y2F0aW9uCi0gICAgICBmaWVsZC4gIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmdsZWQg bGFiZWwgb2YgdGhlCi0gICAgICBzdGF0aWMgZmllbGQuICAqLwotIAotKyAgLyogVGhpcyBhZGRy ZXNzIGlzIHVucmVsb2NhdGVkIGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwotICAgQ09S RV9BRERSIHBoeXNhZGRyOwotICAgY29uc3QgY2hhciAqcGh5c25hbWU7Ci0gCi1kaWZmIC0tZ2l0 IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYwotLS0tIGEvZ2RiL3ZhbHVlLmMKLSsrKyBiL2dk Yi92YWx1ZS5jCi1AQCAtMjg1MCw3ICsyODUwLDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgaW50IGZpZWxkbm8pCi0gICAgIHsKLSAgICAgY2FzZSBGSUVMRF9MT0Nf S0lORF9QSFlTQUREUjoKLSAgICAgICByZXR2YWwgPSB2YWx1ZV9hdF9sYXp5ICh0eXBlLT5maWVs ZCAoZmllbGRubykudHlwZSAoKSwKLS0JCQkgICAgICBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQURE UiAodHlwZSwgZmllbGRubykpOwotKwkJCSAgICAgIFRZUEVfRklFTERfU1RBVElDX1BIWVNBRERS ICh0eXBlLCBmaWVsZG5vKQotKwkJCSAgICAgICsgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVM TCA/IDAgOiBUWVBFX09CSkZJTEUgKHR5cGUpLT5zZWN0aW9uX29mZnNldHNbU0VDVF9PRkZfVEVY VCAoVFlQRV9PQkpGSUxFICh0eXBlKSldKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRklF TERfTE9DX0tJTkRfUEhZU05BTUU6Ci0gICAgIHsKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLXZs YS10ZXN0cy5wYXRjaCBiL2dkYi1hcmNoZXItdmxhLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBmMDcxODNjLi4wMDAwMDAwCi0tLSBhL2dkYi1hcmNoZXItdmxhLXRl c3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzc3MSArMCwwIEBACi1Gcm9tIEZFRE9SQV9Q QVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVz IDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAy MDAKLVN1YmplY3Q6IGdkYi1hcmNoZXItdmxhLXRlc3RzLnBhdGNoCi0KLTs7PWZlZG9yYXRlc3QK LQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKLS0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hZGEv cGFja2VkX2FycmF5LmV4cAotQEAgLTUzLDUgKzUzLDExIEBAIGdkYl90ZXN0X211bHRpcGxlICIk dGVzdCIgIiR0ZXN0IiB7Ci0gICAgICAgICAjIGFyZS4gIE9ic2VydmVkIHdpdGggKEZTRiBHTlUg QWRhIDQuNS4zIDIwMTEwMTI0KS4KLSAgICAgICAgIHhmYWlsICR0ZXN0Ci0gICAgIH0KLSsgICAg LXJlICI9IFxcKFxcKVxbXHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKLSsJIyBhcmNoZXItamFua3Jh dG9jaHZpbC12bGEgcmVzb2x2ZXMgaXQgYXMgYSBkeW5hbWljIHR5cGUgcmVzb2x2ZWQgYXMgYW4K LSsJIyBlbXB0eSBhcnJheSBbMC4uLTFdLgotKwkjIERXX0FUX3VwcGVyX2JvdW5kIDogKERXX09Q X2ZicmVnOiAtNDg7IERXX09QX2RlcmVmKQotKyAgICAgICAgeGZhaWwgJHRlc3QKLSsgICAgfQot IH0KLSAKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9p bnRlci1mb28uUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZv by5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKLUBAIC0wLDAgKzEsMzU4IEBA Ci0rCS5maWxlCSJ4ODZfNjQtdmxhLXBvaW50ZXIuYyIKLSsJLnRleHQKLSsuTHRleHQwOgotKwku Z2xvYmwJZm9vCi0rCS50eXBlCWZvbywgQGZ1bmN0aW9uCi0rZm9vOgotKy5MRkIwOgotKwkuZmls ZSAxICJnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYyIKLSsJIyBnZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXIuYzoyMgotKwkubG9jIDEgMjIgMAotKwkuY2ZpX3N0YXJ0cHJvYwotKyMgQkxP Q0sgMiBzZXE6MAotKyMgUFJFRDogRU5UUlkgKEZBTExUSFJVKQotKwlwdXNocQklcmJwCi0rCS5j ZmlfZGVmX2NmYV9vZmZzZXQgMTYKLSsJLmNmaV9vZmZzZXQgNiwgLTE2Ci0rCW1vdnEJJXJzcCwg JXJicAotKwkuY2ZpX2RlZl9jZmFfcmVnaXN0ZXIgNgotKwlwdXNocQklcmJ4Ci0rCXN1YnEJJDU2 LCAlcnNwCi0rCS5jZmlfb2Zmc2V0IDMsIC0yNAotKwltb3ZsCSVlZGksIC01MiglcmJwKQotKwkj IGdkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jOjIyCi0rCS5sb2MgMSAyMiAwCi0rCW1vdnEJ JXJzcCwgJXJheAotKwltb3ZxCSVyYXgsICVyc2kKLSsJIyBnZGIuYXJjaC94ODZfNjQtdmxhLXBv aW50ZXIuYzoyMwotKwkubG9jIDEgMjMgMAotKwltb3ZsCS01MiglcmJwKSwgJWVheAotKwltb3Zz bHEJJWVheCwgJXJkeAotKwlzdWJxCSQxLCAlcmR4Ci0rCW1vdnEJJXJkeCwgLTMyKCVyYnApCi0r CW1vdnNscQklZWF4LCAlcmR4Ci0rCW1vdnEJJXJkeCwgJXI4Ci0rCW1vdmwJJDAsICVyOWQKLSsJ IyBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYzoyNAotKwkubG9jIDEgMjQgMAotKwltb3Zz bHEJJWVheCwgJXJkeAotKwltb3ZxCSVyZHgsICVyY3gKLSsJbW92bAkkMCwgJWVieAotKwljbHRx Ci0rCW1vdmwJJDE2LCAlZWR4Ci0rCXN1YnEJJDEsICVyZHgKLSsJYWRkcQklcmR4LCAlcmF4Ci0r CW1vdmwJJDE2LCAlZWJ4Ci0rCW1vdmwJJDAsICVlZHgKLSsJZGl2cQklcmJ4Ci0rCWltdWxxCSQx NiwgJXJheCwgJXJheAotKwlzdWJxCSVyYXgsICVyc3AKLSsJbW92cQklcnNwLCAlcmF4Ci0rCWFk ZHEJJDAsICVyYXgKLSsJbW92cQklcmF4LCAtNDAoJXJicCkKLSsJIyBnZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXIuYzoyNwotKwkubG9jIDEgMjcgMAotKwltb3ZsCSQwLCAtMjAoJXJicCkKLSsj IFNVQ0M6IDQgWzEwMC4wJV0KLSsJam1wCS5MMgotKyMgQkxPQ0sgMyBzZXE6MQotKyMgUFJFRDog NAotKy5MMzoKLSsJIyBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYzoyOAotKwkubG9jIDEg MjggMCBkaXNjcmltaW5hdG9yIDMKLSsJbW92bAktMjAoJXJicCksICVlYXgKLSsJbW92bAklZWF4 LCAlZWN4Ci0rCW1vdnEJLTQwKCVyYnApLCAlcmR4Ci0rCW1vdmwJLTIwKCVyYnApLCAlZWF4Ci0r CWNsdHEKLSsJbW92YgklY2wsICglcmR4LCVyYXgpCi0rIyBTVUNDOiA0IChGQUxMVEhSVSxERlNf QkFDSykKLSsJIyBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYzoyNwotKwkubG9jIDEgMjcg MCBkaXNjcmltaW5hdG9yIDMKLSsJYWRkbAkkMSwgLTIwKCVyYnApCi0rIyBCTE9DSyA0IHNlcToy Ci0rIyBQUkVEOiAzIChGQUxMVEhSVSxERlNfQkFDSykgMiBbMTAwLjAlXQotKy5MMjoKLSsJIyBn ZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYzoyNwotKwkubG9jIDEgMjcgMCBpc19zdG10IDAg ZGlzY3JpbWluYXRvciAxCi0rCW1vdmwJLTIwKCVyYnApLCAlZWF4Ci0rCWNtcGwJLTUyKCVyYnAp LCAlZWF4Ci0rIyBTVUNDOiAzIDUgKEZBTExUSFJVKQotKwlqbAkuTDMKLSsjIEJMT0NLIDUgc2Vx OjMKLSsjIFBSRUQ6IDQgKEZBTExUSFJVKQotKwkjIGdkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRl ci5jOjMwCi0rCS5sb2MgMSAzMCAwIGlzX3N0bXQgMQotKwltb3ZxCS00MCglcmJwKSwgJXJheAot Kwltb3ZiCSQwLCAoJXJheCkKLSsJbW92cQklcnNpLCAlcnNwCi0rCSMgZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLmM6MzEKLSsJLmxvYyAxIDMxIDAKLSsJbm9wCi0rCW1vdnEJLTgoJXJicCks ICVyYngKLSsJbGVhdmUKLSsJLmNmaV9kZWZfY2ZhIDcsIDgKLSsjIFNVQ0M6IEVYSVQgWzEwMC4w JV0KLSsJcmV0Ci0rCS5jZmlfZW5kcHJvYwotKy5MRkUwOgotKwkuc2l6ZQlmb28sIC4tZm9vCi0r LkxldGV4dDA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cwotKy5MZGVidWdf aW5mbzA6Ci0rCS5sb25nCTB4YTUJIyBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0r CS52YWx1ZQkweDQJIyBEV0FSRiB2ZXJzaW9uIG51bWJlcgotKwkubG9uZwkuTGRlYnVnX2FiYnJl djAJIyBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24KLSsJLmJ5dGUJMHg4CSMgUG9pbnRlciBT aXplIChpbiBieXRlcykKLSsJLnVsZWIxMjggMHgxCSMgKERJRSAoMHhiKSBEV19UQUdfY29tcGls ZV91bml0KQotKwkubG9uZwkuTEFTRjMJIyBEV19BVF9wcm9kdWNlcjogIkdOVSBDMTEgNi4yLjEg MjAxNjA5MTYgKFJlZCBIYXQgNi4yLjEtMikgLW10dW5lPWdlbmVyaWMgLW1hcmNoPXg4Ni02NCAt ZyIKLSsJLmJ5dGUJMHhjCSMgRFdfQVRfbGFuZ3VhZ2UKLSsJLmxvbmcJLkxBU0Y0CSMgRFdfQVRf bmFtZTogImdkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jIgotKwkubG9uZwkuTEFTRjUJIyBE V19BVF9jb21wX2RpcjogIi9ob21lL2prcmF0b2NoL3JlZGhhdC9mZWRvcmEvZ2RiL21hc3Rlci9n ZGItNy4xMi9nZGIvdGVzdHN1aXRlIgotKwkucXVhZAkuTHRleHQwCSMgRFdfQVRfbG93X3BjCi0r CS5xdWFkCS5MZXRleHQwLS5MdGV4dDAJIyBEV19BVF9oaWdoX3BjCi0rCS5sb25nCS5MZGVidWdf bGluZTAJIyBEV19BVF9zdG10X2xpc3QKLSsJLnVsZWIxMjggMHgyCSMgKERJRSAoMHgyZCkgRFdf VEFHX3N1YnByb2dyYW0pCi0rCQkJIyBEV19BVF9leHRlcm5hbAotKwkuYXNjaWkgImZvb1wwIgkj IERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC94ODZf NjQtdmxhLXBvaW50ZXIuYykKLSsJLmJ5dGUJMHgxNQkjIERXX0FUX2RlY2xfbGluZQotKwkJCSMg RFdfQVRfcHJvdG90eXBlZAotKwkucXVhZAkuTEZCMAkjIERXX0FUX2xvd19wYwotKwkucXVhZAku TEZFMC0uTEZCMAkjIERXX0FUX2hpZ2hfcGMKLSsJLnVsZWIxMjggMHgxCSMgRFdfQVRfZnJhbWVf YmFzZQotKwkuYnl0ZQkweDljCSMgRFdfT1BfY2FsbF9mcmFtZV9jZmEKLSsJCQkjIERXX0FUX0dO VV9hbGxfY2FsbF9zaXRlcwotKwkubG9uZwkweDgwCSMgRFdfQVRfc2libGluZwotKwkudWxlYjEy OCAweDMJIyAoRElFICgweDRhKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJLmxvbmcJLkxB U0Y2CSMgRFdfQVRfbmFtZTogInNpemUiCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAo Z2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMpCi0rCS5ieXRlCTB4MTUJIyBEV19BVF9kZWNs X2xpbmUKLSsJLmxvbmcJMHg4MAkjIERXX0FUX3R5cGUKLSsJLnVsZWIxMjggMHgzCSMgRFdfQVRf bG9jYXRpb24KLSsJLmJ5dGUJMHg5MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IC02OAotKwku dWxlYjEyOCAweDQJIyAoRElFICgweDU5KSBEV19UQUdfdHlwZWRlZikKLSsJLmxvbmcJLkxBU0Y3 CSMgRFdfQVRfbmFtZTogImFycmF5X3QiCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAo Z2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMpCi0rCS5ieXRlCTB4MTcJIyBEV19BVF9kZWNs X2xpbmUKLSsJLmxvbmcJMHg4NwkjIERXX0FUX3R5cGUKLSsJLnVsZWIxMjggMHg1CSMgKERJRSAo MHg2NCkgRFdfVEFHX3ZhcmlhYmxlKQotKwkubG9uZwkuTEFTRjAJIyBEV19BVF9uYW1lOiAiYXJy YXkiCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gveDg2XzY0LXZsYS1w b2ludGVyLmMpCi0rCS5ieXRlCTB4MTgJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg1OQkj IERXX0FUX3R5cGUKLSsJLnVsZWIxMjggMHgzCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg5 MQkjIERXX09QX2ZicmVnCi0rCS5zbGViMTI4IC01NgotKwkuYnl0ZQkweDYJIyBEV19PUF9kZXJl ZgotKwkudWxlYjEyOCAweDYJIyAoRElFICgweDczKSBEV19UQUdfdmFyaWFibGUpCi0rCS5hc2Np aSAiaVwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChnZGIu YXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYykKLSsJLmJ5dGUJMHgxOQkjIERXX0FUX2RlY2xfbGlu ZQotKwkubG9uZwkweDgwCSMgRFdfQVRfdHlwZQotKwkudWxlYjEyOCAweDIJIyBEV19BVF9sb2Nh dGlvbgotKwkuYnl0ZQkweDkxCSMgRFdfT1BfZmJyZWcKLSsJLnNsZWIxMjggLTM2Ci0rCS5ieXRl CTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MmQKLSsJLnVsZWIxMjggMHg3CSMgKERJRSAo MHg4MCkgRFdfVEFHX2Jhc2VfdHlwZSkKLSsJLmJ5dGUJMHg0CSMgRFdfQVRfYnl0ZV9zaXplCi0r CS5ieXRlCTB4NQkjIERXX0FUX2VuY29kaW5nCi0rCS5hc2NpaSAiaW50XDAiCSMgRFdfQVRfbmFt ZQotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDg3KSBEV19UQUdfYXJyYXlfdHlwZSkKLSsJLmxv bmcJMHhhMQkjIERXX0FUX3R5cGUKLSsJLmxvbmcJMHg5YQkjIERXX0FUX3NpYmxpbmcKLSsJLnVs ZWIxMjggMHg5CSMgKERJRSAoMHg5MCkgRFdfVEFHX3N1YnJhbmdlX3R5cGUpCi0rCS5sb25nCTB4 OWEJIyBEV19BVF90eXBlCi0rCS51bGViMTI4IDB4MwkjIERXX0FUX3VwcGVyX2JvdW5kCi0rCS5i eXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAtNDgKLSsJLmJ5dGUJMHg2CSMgRFdf T1BfZGVyZWYKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHg4NwotKwkudWxl YjEyOCAweGEJIyAoRElFICgweDlhKSBEV19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkweDgJIyBE V19BVF9ieXRlX3NpemUKLSsJLmJ5dGUJMHg3CSMgRFdfQVRfZW5jb2RpbmcKLSsJLmxvbmcJLkxB U0YxCSMgRFdfQVRfbmFtZTogInNpemV0eXBlIgotKwkudWxlYjEyOCAweGEJIyAoRElFICgweGEx KSBEV19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkweDEJIyBEV19BVF9ieXRlX3NpemUKLSsJLmJ5 dGUJMHg2CSMgRFdfQVRfZW5jb2RpbmcKLSsJLmxvbmcJLkxBU0YyCSMgRFdfQVRfbmFtZTogImNo YXIiCi0rCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YgotKwkuc2VjdGlvbgku ZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwotKy5MZGVidWdfYWJicmV2MDoKLSsJLnVsZWIxMjgg MHgxCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDExCSMgKFRBRzogRFdfVEFHX2NvbXBp bGVfdW5pdCkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MjUJ IyAoRFdfQVRfcHJvZHVjZXIpCi0rCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0rCS51 bGViMTI4IDB4MTMJIyAoRFdfQVRfbGFuZ3VhZ2UpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JN X2RhdGExKQotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMg KERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjggMHgxYgkjIChEV19BVF9jb21wX2RpcikKLSsJLnVs ZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3df cGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGViMTI4IDB4MTIJIyAo RFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHg3CSMgKERXX0ZPUk1fZGF0YTgpCi0rCS51bGVi MTI4IDB4MTAJIyAoRFdfQVRfc3RtdF9saXN0KQotKwkudWxlYjEyOCAweDE3CSMgKERXX0ZPUk1f c2VjX29mZnNldCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4MgkjIChhYmJy ZXYgY29kZSkKLSsJLnVsZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQotKwku Ynl0ZQkweDEJIyBEV19jaGlsZHJlbl95ZXMKLSsJLnVsZWIxMjggMHgzZgkjIChEV19BVF9leHRl cm5hbCkKLSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIx MjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykK LSsJLnVsZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChE V19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVs ZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJv dG90eXBlZCkKLSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVs ZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2Fk ZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHg3CSMg KERXX0ZPUk1fZGF0YTgpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKLSsJ LnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS51bGViMTI4IDB4MjExNwkjIChE V19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpCi0rCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFn X3ByZXNlbnQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEyOCAw eDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4 MwkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHg1CSMgKFRBRzogRFdfVEFHX2Zvcm1hbF9w YXJhbWV0ZXIpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJIyAo RFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjgg MHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGEx KQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhiCSMg KERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIx MjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MgkjIChEV19BVF9sb2NhdGlv bikKLSsJLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS5ieXRlCTAKLSsJLmJ5 dGUJMAotKwkudWxlYjEyOCAweDQJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MTYJIyAo VEFHOiBEV19UQUdfdHlwZWRlZikKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGVi MTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQot KwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERX X0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxl YjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBl KQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkw Ci0rCS51bGViMTI4IDB4NQkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgzNAkjIChUQUc6 IERXX1RBR192YXJpYWJsZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4 IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwku dWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZP Uk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEy OCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQot KwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgyCSMgKERXX0FU X2xvY2F0aW9uKQotKwkudWxlYjEyOCAweDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKLSsJLmJ5dGUJ MAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NgkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjgg MHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJsZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25v Ci0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweDgJIyAoRFdfRk9S TV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEy OCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xp bmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDQ5CSMg KERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEy OCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBy bG9jKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHg3CSMgKGFiYnJldiBjb2Rl KQotKwkudWxlYjEyOCAweDI0CSMgKFRBRzogRFdfVEFHX2Jhc2VfdHlwZSkKLSsJLmJ5dGUJMAkj IERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4YgkjIChEV19BVF9ieXRlX3NpemUpCi0rCS51 bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNlCSMgKERXX0FUX2Vu Y29kaW5nKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgz CSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykKLSsJLmJ5 dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OAkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIx MjggMHgxCSMgKFRBRzogRFdfVEFHX2FycmF5X3R5cGUpCi0rCS5ieXRlCTB4MQkjIERXX2NoaWxk cmVuX3llcwotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJ IyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDEJIyAoRFdfQVRfc2libGluZykKLSsJLnVs ZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxl YjEyOCAweDkJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MjEJIyAoVEFHOiBEV19UQUdf c3VicmFuZ2VfdHlwZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4 NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51 bGViMTI4IDB4MmYJIyAoRFdfQVRfdXBwZXJfYm91bmQpCi0rCS51bGViMTI4IDB4MTgJIyAoRFdf Rk9STV9leHBybG9jKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhhCSMgKGFi YnJldiBjb2RlKQotKwkudWxlYjEyOCAweDI0CSMgKFRBRzogRFdfVEFHX2Jhc2VfdHlwZSkKLSsJ LmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4YgkjIChEV19BVF9ieXRlX3Np emUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNlCSMg KERXX0FUX2VuY29kaW5nKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVs ZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnAp Ci0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS5zZWN0aW9uCS5kZWJ1Z19hcmFu Z2VzLCIiLEBwcm9nYml0cwotKwkubG9uZwkweDJjCSMgTGVuZ3RoIG9mIEFkZHJlc3MgUmFuZ2Vz IEluZm8KLSsJLnZhbHVlCTB4MgkjIERXQVJGIFZlcnNpb24KLSsJLmxvbmcJLkxkZWJ1Z19pbmZv MAkjIE9mZnNldCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLmJ5dGUJMHg4CSMgU2l6ZSBv ZiBBZGRyZXNzCi0rCS5ieXRlCTAJIyBTaXplIG9mIFNlZ21lbnQgRGVzY3JpcHRvcgotKwkudmFs dWUJMAkjIFBhZCB0byAxNiBieXRlIGJvdW5kYXJ5Ci0rCS52YWx1ZQkwCi0rCS5xdWFkCS5MdGV4 dDAJIyBBZGRyZXNzCi0rCS5xdWFkCS5MZXRleHQwLS5MdGV4dDAJIyBMZW5ndGgKLSsJLnF1YWQJ MAotKwkucXVhZAkwCi0rCS5zZWN0aW9uCS5kZWJ1Z19saW5lLCIiLEBwcm9nYml0cwotKy5MZGVi dWdfbGluZTA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQotKy5MQVNG NDoKLSsJLnN0cmluZwkiZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMiCi0rLkxBU0Y3Ogot Kwkuc3RyaW5nCSJhcnJheV90IgotKy5MQVNGMzoKLSsJLnN0cmluZwkiR05VIEMxMSA2LjIuMSAy MDE2MDkxNiAoUmVkIEhhdCA2LjIuMS0yKSAtbXR1bmU9Z2VuZXJpYyAtbWFyY2g9eDg2LTY0IC1n IgotKy5MQVNGMjoKLSsJLnN0cmluZwkiY2hhciIKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJInNpemV0 eXBlIgotKy5MQVNGNToKLSsJLnN0cmluZwkiL2hvbWUvamtyYXRvY2gvcmVkaGF0L2ZlZG9yYS9n ZGIvbWFzdGVyL2dkYi03LjEyL2dkYi90ZXN0c3VpdGUiCi0rLkxBU0Y2OgotKwkuc3RyaW5nCSJz aXplIgotKy5MQVNGMDoKLSsJLnN0cmluZwkiYXJyYXkiCi0rCS5pZGVudAkiR0NDOiAoR05VKSA2 LjIuMSAyMDE2MDkxNiAoUmVkIEhhdCA2LjIuMS0yKSIKLSsJLnNlY3Rpb24JLm5vdGUuR05VLXN0 YWNrLCIiLEBwcm9nYml0cwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2 XzY0LXZsYS1wb2ludGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9p bnRlci5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwotQEAgLTAsMCArMSw0NSBAQAot Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0r ICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpZiAwCi0rCi0rdm9p ZAotK2ZvbyAoaW50IHNpemUpCi0rewotKyAgdHlwZWRlZiBjaGFyIGFycmF5X3Rbc2l6ZV07Ci0r ICBhcnJheV90IGFycmF5OwotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsg aSsrKQotKyAgICBhcnJheVtpXSA9IGk7Ci0rCi0rICBhcnJheVswXSA9IDA7CS8qIGJyZWFrLWhl cmUgKi8KLSt9Ci0rCi0rI2Vsc2UKLSsKLSt2b2lkIGZvbyAoaW50IHNpemUpOwotKwotK2ludAot K21haW4gKHZvaWQpCi0rewotKyAgZm9vICgyNik7Ci0rICBmb28gKDc4KTsKLSsgIHJldHVybiAw OwotK30KLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4 Nl82NC12bGEtcG9pbnRlci5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEt cG9pbnRlci5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAKLUBAIC0wLDAgKzEs NjUgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAhW2lzdGFyZ2V0ICJ4ODZf NjQtKi0qIl0gdGhlbiB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gveDg2 XzY0LXZsYS1wb2ludGVyLmV4cCB0ZXN0IG1hZGUgb25seSBmb3IgeDg2XzY0LiIKLSsgICAgcmV0 dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXBvaW50ZXIKLStzZXQgc3JjYXNt ZmlsZSAke3Rlc3RmaWxlfS1mb28uUwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQg YmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0rc2V0IGJpbm9iamZp bGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9LWZvby5vXQotK2lmICB7IFtnZGJf Y29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpmaWxl fSIgb2JqZWN0IHt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg dGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0raWYgIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIgIiR7YmluZmlsZX0i IGV4ZWN1dGFibGUge31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGls ZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9z dGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7 YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHsKLSsgICAgdW50ZXN0ZWQgeDg2XzY0LXZs YS1wb2ludGVyCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJlYWtwb2ludCAkc3JjZmls ZTpbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rCi0rZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5 cGUgPSBhcnJheV90IiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAid2hhdGlzIGFy cmF5X3QiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGUgbGVuZ3RoXFxcXSIgImZpcnN0OiB3aGF0 aXMgYXJyYXlfdCIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZc XFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAi dHlwZSA9IGNoYXIiICJmaXJzdDogd2hhdGlzICphcnJheSIKLStnZGJfdGVzdCAicHR5cGUgKmFy cmF5IiAidHlwZSA9IGNoYXIiICJmaXJzdDogcHR5cGUgKmFycmF5IgotKwotK2dkYl90ZXN0ICJw IGFycmF5XFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgYXJy YXlcWzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCBhcnJheVxb M1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0i ICJcXCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJh eV90IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheV90IiAi dHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlIGxlbmd0aFxcXF0iICJzZWNvbmQ6IHdoYXRpcyBhcnJh eV90IgotK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJz ZWNvbmQ6IHB0eXBlIGFycmF5IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXZsYS10eXBlZGVmLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXR5cGVkZWYtZm9vLlMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwotQEAg LTAsMCArMSw0NTUgQEAKLSsJLmZpbGUJIng4Nl82NC12bGEtdHlwZWRlZi5jIgotKwkuc2VjdGlv bgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwotKy5MZGVidWdfYWJicmV2MDoKLSsJLnNlY3Rp b24JLmRlYnVnX2luZm8sIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19pbmZvMDoKLSsJLnNlY3Rpb24J LmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19saW5lMDoKLSsJLnRleHQKLSsuTHRl eHQwOgotKy5nbG9ibCBmb28KLSsJLnR5cGUJZm9vLCBAZnVuY3Rpb24KLStmb286Ci0rLkxGQjI6 Ci0rCS5maWxlIDEgIng4Nl82NC12bGEtdHlwZWRlZi5jIgotKwkubG9jIDEgMjIgMAotKwlwdXNo cQklcmJwCi0rLkxDRkkwOgotKwltb3ZxCSVyc3AsICVyYnAKLSsuTENGSTE6Ci0rCXN1YnEJJDY0 LCAlcnNwCi0rLkxDRkkyOgotKwltb3ZsCSVlZGksIC0zNiglcmJwKQotKwkubG9jIDEgMjIgMAot Kwltb3ZxCSVyc3AsICVyYXgKLSsJbW92cQklcmF4LCAtNDgoJXJicCkKLSsJLmxvYyAxIDIzIDAK LSsJbW92bAktMzYoJXJicCksICVlZHgKLSsJbW92c2xxCSVlZHgsJXJheAotKwlzdWJxCSQxLCAl cmF4Ci0rCW1vdnEJJXJheCwgLTI0KCVyYnApCi0rCS5sb2MgMSAyNCAwCi0rCW1vdnNscQklZWR4 LCVyYXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJc2hycQkkNCwgJXJh eAotKwlzYWxxCSQ0LCAlcmF4Ci0rCXN1YnEJJXJheCwgJXJzcAotKwltb3ZxCSVyc3AsIC01Nigl cmJwKQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0 LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJbW92cQklcmF4LCAtNTYoJXJicCkKLSsJbW92cQkt NTYoJXJicCksICVyYXgKLSsJbW92cQklcmF4LCAtMTYoJXJicCkKLSsJLmxvYyAxIDI3IDAKLSsJ bW92bAkkMCwgLTQoJXJicCkKLSsJam1wCS5MMgotKy5MMzoKLSsJLmxvYyAxIDI4IDAKLSsJbW92 bAktNCglcmJwKSwgJWVzaQotKwltb3ZsCS00KCVyYnApLCAlZWF4Ci0rCW1vdmwJJWVheCwgJWVj eAotKwltb3ZxCS0xNiglcmJwKSwgJXJkeAotKwltb3ZzbHEJJWVzaSwlcmF4Ci0rCW1vdmIJJWNs LCAoJXJkeCwlcmF4KQotKwkubG9jIDEgMjcgMAotKwlhZGRsCSQxLCAtNCglcmJwKQotKy5MMjoK LSsJbW92bAktNCglcmJwKSwgJWVheAotKwljbXBsCS0zNiglcmJwKSwgJWVheAotKwlqbAkuTDMK LSsJLmxvYyAxIDMwIDAKLSsJLmdsb2JsCWJyZWFrX2hlcmUKLSticmVha19oZXJlOgotKwltb3Zx CS0xNiglcmJwKSwgJXJheAotKwltb3ZiCSQwLCAoJXJheCkKLSsJbW92cQktNDgoJXJicCksICVy c3AKLSsJLmxvYyAxIDMxIDAKLSsJbGVhdmUKLSsJcmV0Ci0rLkxGRTI6Ci0rCS5zaXplCWZvbywg Li1mb28KLSsJLnNlY3Rpb24JLmRlYnVnX2ZyYW1lLCIiLEBwcm9nYml0cwotKy5MZnJhbWUwOgot KwkubG9uZwkuTEVDSUUwLS5MU0NJRTAKLSsuTFNDSUUwOgotKwkubG9uZwkweGZmZmZmZmZmCi0r CS5ieXRlCTB4MQotKwkuc3RyaW5nCSIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xlYjEyOCAtOAot KwkuYnl0ZQkweDEwCi0rCS5ieXRlCTB4YwotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHg4 Ci0rCS5ieXRlCTB4OTAKLSsJLnVsZWIxMjggMHgxCi0rCS5hbGlnbiA4Ci0rLkxFQ0lFMDoKLSsu TFNGREUwOgotKwkubG9uZwkuTEVGREUwLS5MQVNGREUwCi0rLkxBU0ZERTA6Ci0rCS5sb25nCS5M ZnJhbWUwCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyLS5MRkIyCi0rCS5ieXRlCTB4NAot KwkubG9uZwkuTENGSTAtLkxGQjIKLSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4MTAKLSsJLmJ5 dGUJMHg4NgotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENG STAKLSsJLmJ5dGUJMHhkCi0rCS51bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5MRUZERTA6Ci0r CS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCi0rLkxmcmFtZTE6Ci0rCS5sb25nCS5M RUNJRTEtLkxTQ0lFMQotKy5MU0NJRTE6Ci0rCS5sb25nCTB4MAotKwkuYnl0ZQkweDEKLSsJLnN0 cmluZwkielIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xlYjEyOCAtOAotKwkuYnl0ZQkweDEwCi0r CS51bGViMTI4IDB4MQotKwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHhjCi0rCS51bGViMTI4IDB4Nwot KwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJLmFsaWduIDgK LSsuTEVDSUUxOgotKy5MU0ZERTE6Ci0rCS5sb25nCS5MRUZERTEtLkxBU0ZERTEKLSsuTEFTRkRF MToKLSsJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEKLSsJLmxvbmcJLkxGQjIKLSsJLmxvbmcJLkxG RTItLkxGQjIKLSsJLnVsZWIxMjggMHgwCi0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENGSTAtLkxG QjIKLSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4MTAKLSsJLmJ5dGUJMHg4NgotKwkudWxlYjEy OCAweDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENGSTAKLSsJLmJ5dGUJMHhkCi0r CS51bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5MRUZERTE6Ci0rCS50ZXh0Ci0rLkxldGV4dDA6 Ci0rCS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19sb2MwOgotKy5M TFNUMDoKLSsJLnF1YWQJLkxGQjItLkx0ZXh0MAotKwkucXVhZAkuTENGSTAtLkx0ZXh0MAotKwku dmFsdWUJMHgyCi0rCS5ieXRlCTB4NzcKLSsJLnNsZWIxMjggOAotKwkucXVhZAkuTENGSTAtLkx0 ZXh0MAotKwkucXVhZAkuTENGSTEtLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzcK LSsJLnNsZWIxMjggMTYKLSsJLnF1YWQJLkxDRkkxLS5MdGV4dDAKLSsJLnF1YWQJLkxGRTItLkx0 ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzYKLSsJLnNsZWIxMjggMTYKLSsJLnF1YWQJ MHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotKwkubG9uZwkuTGRlYnVn X2VuZCAtIC5MZGVidWdfc3RhcnQKLSsuTGRlYnVnX3N0YXJ0OgotKwkudmFsdWUJMHgyCi0rCS5s b25nCS5MZGVidWdfYWJicmV2MAotKwkuYnl0ZQkweDgKLSsJLnVsZWIxMjggMHgxCi0rCS5sb25n CS5MQVNGMgotKwkuYnl0ZQkweDEKLSsJLmxvbmcJLkxBU0YzCi0rCS5sb25nCS5MQVNGNAotKwku cXVhZAkuTHRleHQwCi0rCS5xdWFkCS5MZXRleHQwCi0rCS5sb25nCS5MZGVidWdfbGluZTAKLSsJ LnVsZWIxMjggMHgyCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSJmb28iCi0rCS5ieXRlCTB4MQot KwkuYnl0ZQkweDE2Ci0rCS5ieXRlCTB4MQotKwkucXVhZAkuTEZCMgotKwkucXVhZAkuTEZFMgot KwkubG9uZwkuTExTVDAKLSsJLmxvbmcJMHg4MwotKwkudWxlYjEyOCAweDMKLSsJLmxvbmcJLkxB U0Y1Ci0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE1Ci0rCS5sb25nCTB4ODMKLSsJLmJ5dGUJMHgy Ci0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTUyCi0rLkx0YWdfdHlwZWRlZjoKLSsJLnVsZWIx MjggMHg0Ci0rCS5sb25nCS5MQVNGNgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxNwotKwkubG9u ZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KLSsJLnVsZWIxMjggMHg1CS8qIEFiYnJl diBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmxvbmcJLkxBU0YwCi0rCS5ieXRl CTB4MQotKwkuYnl0ZQkweDE4Ci0rI2lmIDEKLSsJLmxvbmcJLkx0YWdfdHlwZWRlZiAtIC5kZWJ1 Z19pbmZvCi0rI2Vsc2UKLSsJLyogRGVidWdnaW5nIG9ubHk6IFNraXAgdGhlIHR5cGVkZWYgaW5k aXJlY3Rpb24uICAqLwotKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KLSsj ZW5kaWYKLSsJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLwotKwku Ynl0ZQkweDMKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtMzIKLSsjaWYgMAotKwkuYnl0ZQkw eDYJLyogRFdfT1BfZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0ZQkweDk2CS8qIERXX09QX25vcCAq LwotKyNlbmRpZgotKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IGVuZCAqLwot KwkudWxlYjEyOCAweDYKLSsJLnN0cmluZwkiaSIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTkK LSsJLmxvbmcJMHg4MwotKwkuYnl0ZQkweDIKLSsJLmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtMjAK LSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NwotKwkuYnl0ZQkweDQKLSsJLmJ5dGUJMHg1Ci0r CS5zdHJpbmcJImludCIKLSsuTHRhZ19hcnJheV90eXBlOgotKwkudWxlYjEyOCAweDgJLyogQWJi cmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS5sb25nCTB4YTAgKyAoMmYg LSAxZikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICovCi0rCS5sb25nCTB4OWQgKyAoMmYg LSAxZikJLyogRFdfQVRfc2libGluZzogRFdfRk9STV9yZWY0ICovCi0rMToJLyogRFdfQVRfZGF0 YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCi0rCS5ieXRlCTJmIC0gM2YJLyog bGVuZ3RoICovCi0rMzoKLSsJLmJ5dGUJMHg5NwkvKiBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNz ICovCi0rCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLwotKzI6CS8qIERXX0FUX2RhdGFfbG9j YXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjggMHg5Ci0rCS5sb25nCTB4 OWQgKyAoMmIgLSAxYikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICovCi0rCS5ieXRlCTB4 MwotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC00MAotKwkuYnl0ZQkweDYKLSsJLmJ5dGUJMHgw Ci0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHg3Ci0rCS51bGViMTI4IDB4 YgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHg2Ci0rCS5sb25nCS5MQVNGMQotKwkuYnl0ZQkweDAK LSsuTGRlYnVnX2VuZDoKLSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgotKwkudWxlYjEyOCAweDEK LSsJLnVsZWIxMjggMHgxMQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHgyNQotKwkudWxlYjEy OCAweGUKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzCi0r CS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDFiCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEy OCAweDExCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEyCi0rCS51bGViMTI4IDB4MQot KwkudWxlYjEyOCAweDEwCi0rCS51bGViMTI4IDB4NgotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgw Ci0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweDJlCi0rCS5ieXRlCTB4MQotKwkudWxlYjEy OCAweDNmCi0rCS51bGViMTI4IDB4YwotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0r CS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIx MjggMHhiCi0rCS51bGViMTI4IDB4MjcKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDB4MTEK LSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGVi MTI4IDB4NDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEz Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4 NQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEy OCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4Ygot KwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51bGVi MTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NAotKwkudWxl YjEyOCAweDE2Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0r CS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIx MjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NQotKwkudWxlYjEyOCAweDM0Ci0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIx MjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkK LSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5 dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIx MjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEK LSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHgy NAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEy OCAweDNlCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0r CS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6 IDggKERXX1RBR19hcnJheV90eXBlKSAqLwotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHgxCi0r CS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZP Uk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDEJLyogRFdfQVRfc2libGluZyAqLwotKwkudWxlYjEy OCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDUwCS8qIERXX0FUX2RhdGFf bG9jYXRpb24gKi8KLSsJLnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg5Ci0rCS51bGViMTI4IDB4MjEKLSsJLmJ5 dGUJMHgwCi0rCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEz CS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDJmCi0rCS51bGViMTI4IDB4YQotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YQotKwkudWxlYjEyOCAweDI0Ci0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4 M2UKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxl YjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgz Ci0rCS51bGViMTI4IDB4ZQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAot Kwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCi0rCS5sb25nCTB4MTYKLSsJ LnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2luZm8wCi0rCS5sb25nCTB4YTgKLSsJLmxvbmcJ MHgyZAotKwkuc3RyaW5nCSJmb28iCi0rCS5sb25nCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfYXJh bmdlcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgyYwotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5M ZGVidWdfaW5mbzAKLSsJLmJ5dGUJMHg4Ci0rCS5ieXRlCTB4MAotKwkudmFsdWUJMHgwCi0rCS52 YWx1ZQkweDAKLSsJLnF1YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MC0uTHRleHQwCi0rCS5x dWFkCTB4MAotKwkucXVhZAkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMiLEBwcm9nYml0 cywxCi0rLkxBU0YwOgotKwkuc3RyaW5nCSJhcnJheSIKLSsuTEFTRjU6Ci0rCS5zdHJpbmcJInNp emUiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIKLSsuTEFTRjY6 Ci0rCS5zdHJpbmcJImFycmF5X3QiCi0rLkxBU0YxOgotKwkuc3RyaW5nCSJjaGFyIgotKy5MQVNG NDoKLSsJLnN0cmluZwkiZ2RiLmFyY2giCi0rLkxBU0YyOgotKwkuc3RyaW5nCSJHTlUgQyA0LjMu MiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKLSsJLmlkZW50CSJHQ0M6IChHTlUpIDQuMy4y IDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ss IiIsQHByb2diaXRzCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXR5cGVkZWYuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVm LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jCi1AQCAtMCwwICsxLDQ1IEBACi0rLyog VGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBD b3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0r ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmIDAKLSsKLSt2b2lkCi0r Zm9vIChpbnQgc2l6ZSkKLSt7Ci0rICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXplXTsKLSsgIGFy cmF5X3QgYXJyYXk7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKysp Ci0rICAgIGFycmF5W2ldID0gaTsKLSsKLSsgIGFycmF5WzBdID0gMDsJLyogYnJlYWstaGVyZSAq LwotK30KLSsKLSsjZWxzZQotKwotK3ZvaWQgZm9vIChpbnQgc2l6ZSk7Ci0rCi0raW50Ci0rbWFp biAodm9pZCkKLSt7Ci0rICBmb28gKDI2KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0dXJuIDA7Ci0r fQotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS10eXBlZGVmLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBl ZGVmLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAotQEAgLTAsMCArMSw2NCBA QAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwot KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBEV19BVF9kYXRhX2xvY2F0 aW9uIGFjY2Vzc2VkIHRocm91Z2ggRFdfVEFHX3R5cGVkZWYgaW50ZXJtZWRpYXRlLgotKwotK2lm ICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0aGVuIHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcg b3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIHRlc3QgbWFkZSBvbmx5IGZvciB4 ODZfNjQuIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtdHlw ZWRlZgotK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCi0rc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxl fV0KLStzZXQgYmlub2JqZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0tZm9v Lm9dCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmls ZX0iICIke2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLStpZiAg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZp bGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50 ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0r ICAgIHVudGVzdGVkIHg4Nl82NC12bGEtdHlwZWRlZgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Z2RiX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJh eV90IiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0 eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0 ICJwIGFycmF5XFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAg YXJyYXlcWzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCBhcnJh eVxbM1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwIGFycmF5XFs0 XF0iICJcXCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBh cnJheV90IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5 IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9hcnJheWlkeC5jCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4 LmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwotQEAgLTE3LDYgKzE3 LDEzIEBACi0gCi0gaW50IGFycmF5W10gPSB7MSwgMiwgMywgNH07Ci0gCi0rI2lmZGVmIF9fR05V Q19fCi0rc3RydWN0Ci0rICB7Ci0rICAgIGludCBhWzBdOwotKyAgfSB1bmJvdW5kOwotKyNlbmRp ZgotKwotIGludAotIG1haW4gKHZvaWQpCi0gewotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXJyYXlpZHguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5l eHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAotQEAgLTQ5LDQgKzQ5LDEyIEBAIGdkYl90 ZXN0ICJwcmludCBhcnJheSIgXAotICAgICAgICAgICJcXHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxc XF0gPSAyLCBcXFxbMlxcXF0gPSAzLCBcXFxbM1xcXF0gPSA0XFx9IiBcCi0gICAgICAgICAgInBy aW50IGFycmF5IHdpdGggYXJyYXktaW5kZXhlcyBvbiIKLSAKLS0KLStzZXQgdGVzdCAicCB1bmJv dW5kLmEgPT0gJnVuYm91bmQuYVxbMFxdIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0 IHsKLSsgICAgLXJlICIgPSAxXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAg ICB9Ci0rICAgIC1yZSAiTm8gc3ltYm9sIFwidW5ib3VuZFwiIGluIGN1cnJlbnQgY29udGV4dC5c clxuJGdkYl9wcm9tcHQgJCIgewotKwl1bnN1cHBvcnRlZCAiJHRlc3QgKG5vIEdDQykiCi0rICAg IH0KLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXIt ZmllbGQtYWRkcmVzcy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmll bGQtYWRkcmVzcy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi1AQCAt MCwwICsxLDIwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0r c3RydWN0IHsKLSsgIGludCBmaWVsZDsKLSt9IHN0YXRpY3N0cnVjdCA9IHsgMSB9OwotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3Mu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5l eHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAotQEAgLTAsMCArMSwy NiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0IGludGVybmFsLXZh ci1maWVsZC1hZGRyZXNzCi0rc2V0IGJpbmZpbGUgJHt0ZXN0fS54Ci0raWYgIHsgW2dkYl9jb21w aWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdH0uYyIgIltzdGFuZGFyZF9vdXRwdXRfZmls ZSAke2JpbmZpbGV9XSIgb2JqZWN0IHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStj bGVhbl9yZXN0YXJ0ICRiaW5maWxlCi0rCi0rZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3Rh dGljc3RydWN0fQotK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS1mcmFtZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYwotQEAgLTAsMCArMSwz MSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu Ci0rCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRl IDxzdHJpbmcuaD4KLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewot KyAgY2hhciBzWzIgKyBhcmdjXTsKLSsgIHZvaWQgKCpmKSAoY2hhciAqKSA9IDA7Ci0rCi0rICBt ZW1zZXQgKHMsIDAsIHNpemVvZiAocykpOwotKyAgc1swXSA9ICdYJzsKLSsKLSsgIGYgKHMpOwot KyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cAotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvdmxhLWZyYW1lLmV4cAotQEAgLTAsMCArMSwzOCBAQAotKyMgQ29weXJpZ2h0IDIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgdmxhLWZyYW1lCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0 ZmlsZX0KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke2V4 ZWN1dGFibGV9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0g ewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rc2V0IHRlc3QgImNvbnRpbnVlIgotK2dkYl90ZXN0 X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJDb250aW51aW5nXFwuXHJcblxyXG5Q cm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHRcXC5cclxu MHgwKyBpbiBcXD9cXD8gXFwoXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAot KyAgICB9Ci0rICAgIC1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJdW50ZXN0ZWQgJHt0ZXN0 ZmlsZX0uZXhwCi0rCXJldHVybgotKyAgICB9Ci0rfQotKwotK2dkYl90ZXN0ICJidCBmdWxsIiAi XHJcbiArcyA9IFwiWFxcXFwwMDBcIlxyXG4uKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3Zl cmZsb3cuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENv cHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+ Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsgIGludCBhcnJh eVthcmdjXTsKLSsKLSsgIGFycmF5WzBdID0gYXJyYXlbMF07Ci0rCi0rICBhYm9ydCAoKTsKLSsK LSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS1vdmVyZmxvdy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKLUBAIC0wLDAgKzEsMTA5IEBACi0rIyBDb3B5cmln aHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBXZSBjb3VsZCBjcmFzaCBpbjoKLSsjICMwICBibG9ja19s aW5rYWdlX2Z1bmN0aW9uIChibD0weDApIGF0IC4uLy4uL2dkYi9ibG9jay5jOjY5Ci0rIyAjMSAg aW4gZHdhcmZfYmxvY2tfZ2V0X2ZyYW1lX2Jhc2UgKC4uLikgYXQgLi4vLi4vZ2RiL2R3YXJmMmJs b2NrLmM6OTcKLSsjICAgOTcJICBmcmFtZWZ1bmMgPSBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChn ZXRfZnJhbWVfYmxvY2sgKGZyYW1lLCBOVUxMKSk7Ci0rIyAjMiAgaW4gZXhlY3V0ZV9zdGFja19v cCAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyZXhwci5jOjQ5NgotKyMgIzMgIGluIGR3YXJmX2Js b2NrX2V4ZWNfY29yZSAoKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoxNTYKLSsjICM0ICBk d2FyZl9ibG9ja19leGVjICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjIwNgotKyMg IzUgIGluIHJhbmdlX3R5cGVfY291bnRfYm91bmRfaW50ZXJuYWwgKC4uLikgYXQgLi4vLi4vZ2Ri L2dkYnR5cGVzLmM6MTQzMAotKyMgIzYgIGluIGNyZWF0ZV9hcnJheV90eXBlICguLi4pIGF0IC4u Ly4uL2dkYi9nZGJ0eXBlcy5jOjg0MAotKyMgLi4uCi0rIyAjMjEgaW4gcHN5bXRhYl90b19zeW10 YWIgKC4uLikgYXQgLi4vLi4vZ2RiL3N5bWZpbGUuYzoyOTIKLSsjIC4uLgotKyMgIzI5IGluIGJh Y2t0cmFjZV9jb21tYW5kXzEgKCkgYXQgLi4vLi4vZ2RiL3N0YWNrLmM6MTI3MwotKwotK3NldCB0 ZXN0ZmlsZSB2bGEtb3ZlcmZsb3cKLStzZXQgc2hmaWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAk e3Rlc3RmaWxlfS1nZGIuc2hdCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5m aWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfV0KLStpZiAgeyBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFi bGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRl c3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCBmIFtvcGVuICJ8Z2V0Y29u ZiBQQUdFU0laRSIgInIiXQotK2dldHMgJGYgcGFnZXNpemUKLStjbG9zZSAkZgotKwotK2dkYl9l eGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0r Z2RiX2xvYWQgJHtiaW5maWxlfQotKwotK3NldCBwaWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2Fy ZF9pbmZvIGhvc3QgZmlsZWlkXV0KLSsKLStpZiB7IFtydW50b19tYWluXSA8IDAgfSB7Ci0rICAg IHVudGVzdGVkIHZsYS1vdmVyZmxvdwotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBHZXQgdGhl IEdEQiBtZW1vcnkgc2l6ZSB3aGVuIHdlIHN0YXkgYXQgbWFpbi4KLSsKLStwcm9jIG1lbW9yeV92 X3BhZ2VzX2dldCB7fSB7Ci0rICAgIGdsb2JhbCBwaWRfb2ZfZ2RiIHBhZ2VzaXplCi0rICAgIHNl dCBmZCBbb3BlbiAiL3Byb2MvJHBpZF9vZl9nZGIvc3RhdG0iXQotKyAgICBnZXRzICRmZCBsaW5l Ci0rICAgIGNsb3NlICRmZAotKyAgICAjIG51bWJlciBvZiBwYWdlcyBvZiB2aXJ0dWFsIG1lbW9y eQotKyAgICBzY2FuICRsaW5lICIlZCIgZHJzCi0rICAgIHJldHVybiAkZHJzCi0rfQotKwotK3Nl dCBwYWdlc19mb3VuZCBbbWVtb3J5X3ZfcGFnZXNfZ2V0XQotKwotKyMgczM5MHggd2l0aCBnbGli Yy1kZWJ1Z2luZm8uczM5MHggaW5zdGFsbGVkIHVzZWQgYXBwcm94LiAxNk1CLgotK3NldCBtYl9y ZXNlcnZlIDQwCi0rdmVyYm9zZSAtbG9nICJwYWdlc19mb3VuZCA9ICRwYWdlc19mb3VuZCwgbWJf cmVzZXJ2ZSA9ICRtYl9yZXNlcnZlIgotK3NldCBrYl9mb3VuZCBbZXhwciAkcGFnZXNfZm91bmQg KiAkcGFnZXNpemUgLyAxMDI0XQotK3NldCBrYl9wZXJtaXQgW2V4cHIgJGtiX2ZvdW5kICsgMSAq IDEwMjQgKyAkbWJfcmVzZXJ2ZSAqIDEwMjRdCi0rdmVyYm9zZSAtbG9nICJrYl9mb3VuZCA9ICRr Yl9mb3VuZCwga2JfcGVybWl0ID0gJGtiX3Blcm1pdCIKLSsKLSsjIENyZWF0ZSB0aGUgdWxpbWl0 IHdyYXBwZXIuCi0rc2V0IGYgW29wZW4gJHNoZmlsZSAidyJdCi0rcHV0cyAkZiAiIyEgL2Jpbi9z aCIKLStwdXRzICRmICJ1bGltaXQgLXYgJGtiX3Blcm1pdCIKLStwdXRzICRmICJleGVjICRHREIg XCJcJEBcIiIKLStjbG9zZSAkZgotK3JlbW90ZV9leGVjIGhvc3QgImNobW9kICt4ICRzaGZpbGUi Ci0rCi0rZ2RiX2V4aXQKLStzZXQgR0RCb2xkICRHREIKLStzZXQgR0RCICIkc2hmaWxlIgotK2dk Yl9zdGFydAotK3NldCBHREIgJEdEQm9sZAotKwotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNk aXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStzZXQgcGlkX29mX2dkYiBbZXhw X3BpZCAtaSBbYm9hcmRfaW5mbyBob3N0IGZpbGVpZF1dCi0rCi0rIyBDaGVjayB0aGUgc2l6ZSBh Z2FpbiBhZnRlciB0aGUgc2Vjb25kIHJ1bi4KLSsjIFdlIG11c3Qgbm90IHN0b3AgaW4gbWFpbiBh cyBpdCB3b3VsZCBjYWNoZSBgYXJyYXknIGFuZCBuZXZlciBjcmFzaCBsYXRlci4KLSsKLStnZGJf cnVuX2NtZAotKwotK3ZlcmJvc2UgLWxvZyAia2JfZm91bmQgYmVmb3JlIGFib3J0KCkgPSBbZXhw ciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgotKwotK2dkYl90ZXN0 ICIiICJQcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdBQlJULCBBYm9ydGVkLi4qIiAiRW50ZXIg YWJvcnQoKSIKLSsKLSt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGFib3J0KCkgPSBbZXhwciBb bWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgotKwotKyMgYGFib3J0JyBj YW4gZ2V0IGV4cHJlc3NlZCBhcyBgKl9fR0lfYWJvcnQnLgotK2dkYl90ZXN0ICJidCIgImluIFxb XiBcXSphYm9ydCBcXCguKiBpbiBtYWluIFxcKC4qIiAiQmFja3RyYWNlIGFmdGVyIGFib3J0KCki Ci0rCi0rdmVyYm9zZSAtbG9nICJrYl9mb3VuZCBpbiBidCBhZnRlciBhYm9ydCgpID0gW2V4cHIg W21lbW9yeV92X3BhZ2VzX2dldF0gKiAkcGFnZXNpemUgLyAxMDI0XSIKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEu YwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmxhLmMKLUBAIC0wLDAgKzEsNTUgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rdm9pZAotK21h cmtlciAodm9pZCkKLSt7Ci0rfQotKwotK3ZvaWQKLStiYXIgKGNoYXIgKmEsIGNoYXIgKmIsIGNo YXIgKmMsIGludCBzaXplKQotK3sKLSsgIG1lbXNldCAoYSwgJzEnLCBzaXplKTsKLSsgIG1lbXNl dCAoYiwgJzInLCBzaXplKTsKLSsgIG1lbXNldCAoYywgJzMnLCA0OCk7Ci0rfQotKwotK3ZvaWQK LStmb28gKGludCBzaXplKQotK3sKLSsgIGNoYXIgdGVtcDFbc2l6ZV07Ci0rICBjaGFyIHRlbXAz WzQ4XTsKLSsKLSsgIHRlbXAxW3NpemUgLSAxXSA9ICdcMCc7Ci0rICB7Ci0rICAgIGNoYXIgdGVt cDJbc2l6ZV07Ci0rCi0rICAgIGJhciAodGVtcDEsIHRlbXAyLCB0ZW1wMywgc2l6ZSk7Ci0rCi0r ICAgIG1hcmtlciAoKTsJLyogYnJlYWstaGVyZSAqLwotKyAgfQotK30KLSsKLStpbnQKLSttYWlu ICh2b2lkKQotK3sKLSsgIGZvbyAoMjYpOwotKyAgZm9vICg3OCk7Ci0rICByZXR1cm4gMDsKLSt9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS92bGEuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCi1AQCAtMCwwICsxLDYyIEBA Ci0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxlIHZsYQotK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUg JHt0ZXN0ZmlsZX1dCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotKyAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAt MQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRz cmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5d IHsKLSsgICAgdW50ZXN0ZWQgdmxhCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIg InR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogd2hhdGlzIHRlbXAxIgotK2dkYl90ZXN0 ICJ3aGF0aXMgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0 ZW1wMiIKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIg ImZpcnN0OiB3aGF0aXMgdGVtcDMiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9 IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBwdHlwZSB0ZW1wMSIKLStnZGJfdGVzdCAicHR5cGUg dGVtcDIiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAyIgotK2dk Yl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDogcHR5 cGUgdGVtcDMiCi0rCi0rZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgMjYgdGlt ZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAxIgotK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxy ZXBlYXRzIDI2IHRpbWVzPiIgImZpcnN0OiBwcmludCB0ZW1wMiIKLStnZGJfdGVzdCAicCB0ZW1w MyIgIiA9ICczJyA8cmVwZWF0cyA0OCB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDMiCi0rCi0r Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCi0rCi0rZ2RiX3Rlc3QgIndo YXRpcyB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1w MSIKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNl Y29uZDogd2hhdGlzIHRlbXAyIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hh ciBcXFxbNDhcXFxdIiAic2Vjb25kOiB3aGF0aXMgdGVtcDMiCi0rCi0rZ2RiX3Rlc3QgInB0eXBl IHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDEiCi0r Z2RiX3Rlc3QgInB0eXBlIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDog cHR5cGUgdGVtcDIiCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4 XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDMiCi0rCi0rZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAn MScgPHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKLStnZGJfdGVzdCAi cCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAy IgotK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29u ZDogcHJpbnQgdGVtcDMiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5 My5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmNj Ci1AQCAtMCwwICsxLDE3OSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rICAgKi8KLSsjaW5jbHVkZSA8aW9zdHJlYW0+Ci0rCi0rdXNpbmcgbmFtZXNwYWNlIHN0 ZDsKLSsKLStjbGFzcyBOZXh0T3ZlclRocm93RGVyaXZhdGVzCi0rewotKwotK3B1YmxpYzoKLSsK LSsKLSsgIC8vIFNpbmdsZSB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhpcyBmdW5jdGlvbi4KLSsg IHZvaWQgZnVuY3Rpb24xKCkKLSsgIHsKLSsgICAgdGhyb3cgMjA7Ci0rICB9Ci0rCi0rICAvLyBU aHJvdyBhbiBleGNlcHRpb24gaW4gYW5vdGhlciBmdW5jdGlvbi4KLSsgIHZvaWQgZnVuY3Rpb24y KCkKLSsgIHsKLSsgICAgZnVuY3Rpb24xKCk7Ci0rICB9Ci0rCi0rICAvLyBUaHJvdyBhbiBleGNl cHRpb24gaW4gYW5vdGhlciBmdW5jdGlvbiwgYnV0IGhhbmRsZSBpdAotKyAgLy8gbG9jYWxseS4K LSsgIHZvaWQgZnVuY3Rpb24zICgpCi0rICB7Ci0rICAgIHsKLSsgICAgICB0cnkKLSsJewotKwkg IGZ1bmN0aW9uMSAoKTsKLSsJfQotKyAgICAgIGNhdGNoICguLi4pCi0rCXsKLSsJICBjb3V0IDw8 ICJDYXVnaHQgYW5kIGhhbmRsZWQgZnVuY3Rpb24xIGV4Y2VwdGlvbiIgPDwgZW5kbDsKLSsJfQot KyAgICB9Ci0rICB9Ci0rCi0rICB2b2lkIHJldGhyb3cgKCkKLSsgIHsKLSsgICAgdHJ5Ci0rICAg ICAgewotKwlmdW5jdGlvbjEgKCk7Ci0rICAgICAgfQotKyAgICBjYXRjaCAoLi4uKQotKyAgICAg IHsKLSsJdGhyb3c7Ci0rICAgICAgfQotKyAgfQotKwotKyAgdm9pZCBmaW5pc2ggKCkKLSsgIHsK LSsgICAgLy8gV2UgdXNlIHRoaXMgdG8gdGVzdCB0aGF0IGEgImZpbmlzaCIgaGVyZSBkb2VzIG5v dCBlbmQgdXAgaW4KLSsgICAgLy8gdGhpcyBmcmFtZSwgYnV0IGluIHRoZSBvbmUgYWJvdmUuCi0r ICAgIHRyeQotKyAgICAgIHsKLSsJZnVuY3Rpb24xICgpOwotKyAgICAgIH0KLSsgICAgY2F0Y2gg KGludCB4KQotKyAgICAgIHsKLSsgICAgICB9Ci0rICAgIGZ1bmN0aW9uMSAoKTsJCS8vIG1hcmtl ciBmb3IgdW50aWwKLSsgIH0KLSsKLSsgIHZvaWQgdW50aWwgKCkKLSsgIHsKLSsgICAgZnVuY3Rp b24xICgpOwotKyAgICBmdW5jdGlvbjEgKCk7CQkvLyB1bnRpbCBoZXJlCi0rICB9Ci0rCi0rfTsK LStOZXh0T3ZlclRocm93RGVyaXZhdGVzIG5leHRfY2FzZXM7Ci0rCi0rCi0raW50IG1haW4gKCkK LSt7Ci0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24xICgpOwotKyAg ICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0r Ci0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24yICgpOwotKyAgICB9 Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0r ICB0cnkKLSsgICAgewotKyAgICAgIC8vIFRoaXMgaXMgZHVwbGljYXRlZCBzbyB3ZSBjYW4gbmV4 dCBvdmVyIG9uZSBidXQgc3RlcCBpbnRvCi0rICAgICAgLy8gYW5vdGhlci4KLSsgICAgICBuZXh0 X2Nhc2VzLmZ1bmN0aW9uMiAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAg ICAgIC8vIERpc2NhcmQKLSsgICAgfQotKwotKyAgbmV4dF9jYXNlcy5mdW5jdGlvbjMgKCk7Ci0r Ci0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMucmV0aHJvdyAoKTsKLSsgICAgfQot KyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICAgIC8vIERpc2NhcmQKLSsgICAgfQotKwotKyAg dHJ5Ci0rICAgIHsKLSsgICAgICAvLyBBbm90aGVyIGR1cGxpY2F0ZSBzbyB3ZSBjYW4gdGVzdCAi ZmluaXNoIi4KLSsgICAgICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMiAoKTsKLSsgICAgfQotKyAgY2F0 Y2ggKC4uLikKLSsgICAgewotKyAgICAgIC8vIERpc2NhcmQKLSsgICAgfQotKwotKyAgLy8gQW5v dGhlciB0ZXN0IGZvciAiZmluaXNoIi4KLSsgIHRyeQotKyAgICB7Ci0rICAgICAgbmV4dF9jYXNl cy5maW5pc2ggKCk7Ci0rICAgIH0KLSsgIGNhdGNoICguLi4pCi0rICAgIHsKLSsgICAgfQotKwot KyAgLy8gVGVzdCBvZiAidW50aWwiLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0X2Nhc2Vz LmZpbmlzaCAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0rCi0r ICAvLyBUZXN0IG9mICJ1bnRpbCIgd2l0aCBhbiBhcmd1bWVudC4KLSsgIHRyeQotKyAgICB7Ci0r ICAgICAgbmV4dF9jYXNlcy51bnRpbCAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAg ewotKyAgICB9Ci0rCi0rICAvLyBUZXN0IG9mICJhZHZhbmNlIi4KLSsgIHRyeQotKyAgICB7Ci0r ICAgICAgbmV4dF9jYXNlcy51bnRpbCAoKTsKLSsgICAgfQotKyAgY2F0Y2ggKC4uLikKLSsgICAg ewotKyAgICB9Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4 cAotQEAgLTAsMCArMSwxODkgQEAKLSsjIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQot KwotK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IHRlc3Rm aWxlICJnZGI5NTkzIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCi0rc2V0IGJpbmZpbGUg W3N0YW5kYXJkX291dHB1dF9maWxlICR0ZXN0ZmlsZV0KLSsKLSsjIENyZWF0ZSBhbmQgc291cmNl IHRoZSBmaWxlIHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbXBpbGVyCi0r IyB1c2VkIHRvIGNvbXBpbGUgdGhlIHRlc3QgY2FzZS4KLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8g ImMrKyJdIHsKLSsgICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQot KwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0 ZWQgZ2RiOTU5My5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgU29tZSB0YXJnZXRzIGNh bid0IGRvIGZ1bmN0aW9uIGNhbGxzLCBzbyBkb24ndCBldmVuIGJvdGhlciB3aXRoIHRoaXMKLSsj IHRlc3QuCi0raWYgW3RhcmdldF9pbmZvIGV4aXN0cyBnZGIsY2Fubm90X2NhbGxfZnVuY3Rpb25z XSB7Ci0rICAgIHNldHVwX3hmYWlsICIqLSotKiIgOTU5MwotKyAgICBmYWlsICJUaGlzIHRhcmdl dCBjYW4gbm90IGNhbGwgZnVuY3Rpb25zIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfZXhp dAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dk Yl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJy b3IgImNvdWxkbid0IHJ1biB0byBtYWluIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIFNlZSB3 aGV0aGVyIHdlIGhhdmUgdGhlIG5lZWRlZCB1bndpbmRlciBob29rcy4KLStzZXQgb2sgMQotK2dk Yl90ZXN0X211bHRpcGxlICJwcmludCBfVW53aW5kX0RlYnVnSG9vayIgImNoZWNrIGZvciB1bndp bmRlciBob29rIiB7Ci0rICAgIC1yZSAiPSAuKl9VbndpbmRfRGVidWdIb29rLipcclxuJGdkYl9w cm9tcHQgJCIgewotKwlwYXNzICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayIKLSsgICAgfQotKyAg ICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuXHJcbiRnZGJfcHJvbXB0ICQi IHsKLSsJIyBQYXNzIHRoZSB0ZXN0IHNvIHdlIGRvbid0IGdldCBib2d1cyBmYWlscyBpbiB0aGUg cmVzdWx0cy4KLSsJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2siCi0rCXNldCBvayAwCi0r ICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsKLSsgICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotKyMgU2VlIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9z aG93X2J1Zy5jZ2k/aWQ9OTU5MwotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAgICIuKmNhdGNo ICguLi4pLioiIFwKLSsgICAgIm5leHQgb3ZlciBhIHRocm93IDEiCi0rCi0rZ2RiX3Rlc3QgIm5l eHQiIFwKLSsgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0 Y2ggMSIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCi0r ICAgICJuZXh0IG92ZXIgYSB0aHJvdyAyIgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipu ZXh0X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDIiCi0rCi0rZ2Ri X3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSgpLioiIFwKLSsgICJzdGVwIGludG8gZnVu Y3Rpb24yIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICAgIi4qY2F0Y2ggKC4uLikuKiIg XAotKyAgICAibmV4dCBvdmVyIGEgdGhyb3cgMyIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAg Ii4qbmV4dF9jYXNlcy5mdW5jdGlvbjMuKiIgXAotKyAgIm5leHQgcGFzdCBjYXRjaCAzIgotKwot K2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnJldGhyb3cuKiIgXAotKyAgICAi bmV4dCBvdmVyIGEgdGhyb3cgNCIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qY2F0Y2gg KC4uLikuKiIgXAotKyAgIm5leHQgb3ZlciBhIHJldGhyb3ciCi0rCi0rZ2RiX3Rlc3QgIm5leHQi IFwKLSsgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwKLSsgICJuZXh0IGFmdGVyIGEgcmV0 aHJvdyIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xKCkuKiIgXAotKyAg InN0ZXAgaW50byBmdW5jdGlvbjIgMiIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipj YXRjaCAoLi4uKS4qIiBcCi0rICAiZmluaXNoIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsg ICIuKm5leHRfY2FzZXMuZmluaXNoICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNCIKLSsK LStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVwIGlu dG8gZmluaXNoIG1ldGhvZCIKLSsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipjYXRjaCAo Li4uKS4qIiBcCi0rICAiZmluaXNoIDIiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5l eHRfY2FzZXMuZmluaXNoICgpLioiIFwKLSsgICJuZXh0IHBhc3QgY2F0Y2ggNSIKLSsKLStnZGJf dGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioiIFwKLSsgICJzdGVwIGludG8gZmlu aXNoLCBmb3IgdW50aWwiCi0rCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInVudGlsIiAidW50aWwgd2l0 aCBubyBhcmd1bWVudCAxIiB7Ci0rICAgIC1yZSAtd3JhcCAiLipmdW5jdGlvbjEgKCkuKiIgewot KwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAgIH0KLSsgICAgLXJlIC13cmFwICIuKiRoZXhcdDgw XHQgIFx9IiB7Ci0rCSMgUFIgZ2NjLzk3Nzc0IC0gIkluY29ycmVjdCBsaW5lIGluZm8gZm9yIHRy eS9jYXRjaCIKLSsJIyBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9p ZD05Nzc3NAotKwl4ZmFpbCAkZ2RiX3Rlc3RfbmFtZQotKyAgICB9Ci0rfQotKwotK3NldCBsaW5l IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIgZm9yIHVudGlsIiAkdGVzdGZpbGUuY2NdCi0r Ci0rZ2RiX3Rlc3QgInVudGlsICRsaW5lIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIgXAotKyAg Im5leHQgcGFzdCBjYXRjaCA2IgotKwotK2dkYl90ZXN0ICJ1bnRpbCIgXAotKyAgIi4qY2F0Y2gg KC4uLikuKiIgXAotKyAgInVudGlsIHdpdGggbm8gYXJndW1lbnQgMiIKLSsKLStzZXQgbGluZSBb Z2RiX2dldF9saW5lX251bWJlciAidW50aWwgaGVyZSIgJHRlc3RmaWxlLmNjXQotKwotK2dkYl90 ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnVudGlsICgpLioiIFwKLSsgICJuZXh0IHBh c3QgY2F0Y2ggNiIKLSsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xICgpLioi IFwKLSsgICJzdGVwIGludG8gdW50aWwiCi0rCi0rZ2RiX3Rlc3QgInVudGlsICRsaW5lIiBcCi0r ICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAidW50aWwtb3Zlci10aHJvdyIKLSsKLStnZGJfdGVz dCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy51bnRpbCAoKS4qIiBcCi0rICAibmV4dCBwYXN0 IGNhdGNoIDciCi0rCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9uMSAoKS4qIiBc Ci0rICAic3RlcCBpbnRvIHVudGlsLCBmb3IgYWR2YW5jZSIKLSsKLStnZGJfdGVzdCAiYWR2YW5j ZSAkbGluZSIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAotKyAgImFkdmFuY2Utb3Zlci10aHJv dyIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xp c3QuUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKLUBAIC0wLDAgKzEsMjQ2IEBACi0rLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmln aHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8K LSsKLSsvKiBXZSB3aWxsIGBicmVhayAqbWFpbicgYXQgdGhlIHZlcnkgZmlyc3QgaW5zdHJ1Y3Rp b24uICAqLwotKyNkZWZpbmUgbWFpbl9sZW5ndGggMQotKwotKwkuc2VjdGlvbgkuZGF0YQotK3Zh cmRhdGE6Ci0rCS8qIFNlZSBEV19PUF9saXQzICsgMSAoMC1iYXNlZCkuICAqLwotKwkuc3RyaW5n CQkic2Vlbm5vdHNlZW4iCi0rCi0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvCi0rLkxjdTFfYmVnaW46 Ci0rCS40Ynl0ZQkJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJLyogTGVuZ3RoIG9mIENvbXBpbGF0 aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCQkyCQkJLyogRFdBUkYgdmVyc2lv biBudW1iZXIgKi8KLSsJLjRieXRlCQkuTGRlYnVnX2FiYnJldjAJCS8qIE9mZnNldCBJbnRvIEFi YnJldi4gU2VjdGlvbiAqLwotKwkuYnl0ZQkJNAkJCS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMp ICovCi0rCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2OiBEV19UQUdf Y29tcGlsZV91bml0ICovCi0rCS40Ynl0ZQkJLkxwcm9kdWNlcgkJLyogRFdfQVRfcHJvZHVjZXIg Ki8KLSsJLyogVXNlIEMrKyB0byBleHBsb2l0IGEgYnVnIGluIHBhcnNpbmcgRFdfQVRfbmFtZSAi Ii4gICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMrKykgLSAgKi8KLSsJLjRi eXRlCQltYWluCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS5ieXRlCQltYWluX2xlbmd0aAkJLyog RFdfQVRfaGlnaF9wYyAqLwotKwotKy5MYXJyYXlfdHlwZToKLSsJLnVsZWIxMjgJMgkJCS8qIEFi YnJldjogRFdfVEFHX2FycmF5X3R5cGUgKi8KLSsJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9i ZWdpbgkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RB R19zdWJyYW5nZV90eXBlICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyog RFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS40 Ynl0ZQkJLkxsZW5fdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS5i eXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKwkvKiBEV19BVF91cHBl cl9ib3VuZCBpcyByZWZlcmVuY2luZyBhbiBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8KLSsu TGFycmF5Yl90eXBlOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlw ZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8K LSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KLSsJ LjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCS5ieXRl CQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KLSsJLjRieXRlCQkuTGxlbmJfdmFyLS5MY3Ux X2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNo aWxkcmVuIG9mIGRpZSAqLwotKwotKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2lu ZyByZWdpc3Rlci4gICovCi0rLkxhcnJheXJlZ190eXBlOgotKwkudWxlYjEyOAkyCQkJLyogQWJi cmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2Jl Z2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdfVEFH X3N1YnJhbmdlX3R5cGUgd2l0aCBibG9jayAqLwotKwkuNGJ5dGUJCS5MdWludF90eXBlLS5MY3Ux X2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3Vu ZCAqLwotKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rMToJLmJ5 dGUJCTB4NTAJCQkvKiBEV19PUF9yZWcwICovCi0rMjoKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2Yg Y2hpbGRyZW4gb2YgZGllICovCi0rCi0rLkx1aW50X3R5cGU6Ci0rCS51bGViMTI4CTQJCQkvKiBB YmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19B VF9uYW1lICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCQk3 CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsKLSsuTGNoYXJfdHlwZToKLSsJLnVsZWIxMjgJNAkJ CS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl9zdHIJCS8q IERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5 dGUJCTYJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwotKy5MbGVuX3ZhcjoKLSsJLnVsZWIxMjgJ NQkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgKi8KLSsJLmJ5dGUJCTEJ CQkvKiBEV19BVF9hcnRpZmljaWFsICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVn aW4JLyogRFdfQVRfdHlwZSAqLwotKwkuNGJ5dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2NsaXN0CS8q IERXX0FUX2xvY2F0aW9uICovCi0rCi0rCS8qIG9wdGltaXplZC1vdXQgdmFyaWFibGUgZm9yIGJf c3RyaW5nLiAgKi8KLSsuTGxlbmJfdmFyOgotKwkudWxlYjEyOAk3CQkJLyogQWJicmV2OiBEV19U QUdfdmFyaWFibGUgYXJ0aWZpY2lhbCBubyBEV19BVF9sb2NhdGlvbiAqLwotKwkuYnl0ZQkJMQkJ CS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdp bgkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192 YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYV9zdHJpbmciCQkvKiBEV19B VF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5 cGUgKi8KLSsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5ieXRl CQkzCQkJLyogICBEV19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ ICovCi0rMjoKLSsKLSsJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgYW4gb3B0 aW1pemVkLW91dCB2YXJpYWJsZS4gICovCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RB R192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYl9zdHJpbmciCQkvKiBE V19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheWJfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19B VF90eXBlICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgku Ynl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxh ZGRyPiAqLwotKzI6Ci0rCi0rCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5nIHJl Z2lzdGVyLiAgKi8KLSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIERX X0ZPUk1fc3RyaW5nICovCi0rCS5zdHJpbmcJCSJyZWdfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAq LwotKwkuNGJ5dGUJCS5MYXJyYXlyZWdfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICov Ci0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJ CS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLwot KzI6Ci0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rLkxjdTFf ZW5kOgotKwotKwkuc2VjdGlvbgkuZGVidWdfbG9jCi0rLkxsb2NsaXN0OgotKy5MbGVuX2xvY2xp c3Q6Ci0rCS40Ynl0ZQkwCQkJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MKLSsJLjRieXRl CW1haW5fbGVuZ3RoCQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MKLSsJLnZhbHVlCTJmLTFm CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rMToJLmJ5dGUJMHgzMwkjIERXX09QX2xpdDMK LSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rMjoKLSsJLnF1YWQJMHgwCSMgTG9j YXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QyKQotKwkucXVhZAkweDAJIyBMb2Nh dGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1QyKQotKwotKwkuc2VjdGlvbiAuZGVidWdf YWJicmV2Ci0rLkxkZWJ1Z19hYmJyZXYwOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUg Ki8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJ CTB4MQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJv ZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJwICovCi0rCS51bGViMTI4 CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JN X2RhdGExICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIx MjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9o aWdoX3BjICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MQkJCS8q IFRBRzogRFdfVEFHX2FycmF5X3R5cGUgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxkcmVu X3llcyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkw eDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBB YmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDIxCQkJLyogRFdfVEFHX3N1YnJhbmdlX3R5cGUg Ki8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCi0rCS51bGViMTI4CTB4NDkJCQkv KiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJ LnVsZWIxMjgJMHgyMgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJ CS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2Jv dW5kICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4 MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsK LSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBE V19UQUdfYmFzZV90eXBlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwku dWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4ZQkJCS8qIERXX0ZP Uk1fc3RycCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVs ZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyogRFdf QVRfZW5jb2RpbmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLwotKwotKwkudWxlYjEyOAk1CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgz NAkJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hpbGRyZW4g Ki8KLSsJLnVsZWIxMjgJMHgzNAkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJLnVsZWIxMjgJ MHgwYwkJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlw ZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4CTB4 MDIJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKwkudWxlYjEyOAkweDA2CQkJLyogRFdfRk9STV9k YXRhNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAk2CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJ LnVsZWIxMjgJMHgzNAkJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkJMHgwCQkJLyog bm9fY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxl YjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdf QVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGVi MTI4CTB4MgkJCS8qIERXX0FUX2xvY2F0aW9uICovCi0rCS51bGViMTI4CTB4YQkJCS8qIERXX0ZP Uk1fYmxvY2sxICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTcJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCi0rCS5ieXRlCQkweDAJ CQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfQVRfYXJ0aWZpY2lh bCAqLwotKwkudWxlYjEyOAkweDBjCQkJLyogRFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4CTB4 NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQg Ki8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGVi MTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRoIGJsb2NrICovCi0rCS5ieXRl CQkweDAJCQkvKiBubyBjaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlw ZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4CTB4 MjIJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JN X2RhdGExICovCi0rCS51bGViMTI4CTB4MmYJCQkvKiBEV19BVF91cHBlcl9ib3VuZCAqLwotKwku dWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKy8qIFN0cmluZyB0YWJsZSAqLwotKwkuc2VjdGlv biAuZGVidWdfc3RyCi0rLkxwcm9kdWNlcjoKLSsJLnN0cmluZwkJIkdOVSBDIDMuMy4zIgotKy5M Y2hhcl9zdHI6Ci0rCS5zdHJpbmcJCSJjaGFyIgotKy5MdWludF9zdHI6Ci0rCS5zdHJpbmcJCSJ1 bnNpZ25lZCBpbnQiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1i b3VuZC1sb2NsaXN0LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9j bGlzdC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCi1AQCAtMCwwICsxLDY2 IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUZXN0IHByaW50aW5nIHZhcmlh YmxlIHdpdGggZHluYW1pYyBib3VuZHMgd2hpY2ggcmVmZXJlbmNlIGEgZGlmZmVyZW50Ci0rIyAo YXJ0aWZpY2lhbCBpbiB0aGUgR0NDIGNhc2UpIHZhcmlhYmxlIGNvbnRhaW5pbmcgbG9jbGlzdCBh cyBpdHMgbG9jYXRpb24uCi0rIyBUaGlzIHRlc3RjYXNlIHVzZXMgdmFsdWUgKG5vdCBhZGRyZXNz KSBvZiB0aGUgcmVmZXJlbmNlZCB2YXJpYWJsZToKLSsjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6 aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDM3NjIKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBy dW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Ig bm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAq LSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFy Z2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYg IVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFi aSpdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSBkdzItYm91bmQtbG9j bGlzdAotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZp bGV9IFtsaXN0ICR7dGVzdGZpbGV9LlMgbWFpbi5jXSB7fV0gfSB7Ci0rICAgIHJldHVybiAtMQot K30KLSsKLSsjIFZlcmlmeSBpdCBiZWhhdmVzIGF0IGxlYXN0IGFzIGFuIHVuYm91bmQgYXJyYXkg d2l0aG91dCBpbmZlcmlvci4KLSsKLSsjIEZJWE1FOiBGU0YgR0RCIGNyYXNoZXMgZHVlIHRvICFo YXNfc3RhY2tfZnJhbWVzICgpLgotKyMgQnV0IGluIHByYWN0aWNlIHRoYXQgc2hvdWxkIG5vdCBo YXBwZW4uCi0rIyBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00 Mzc2MgotKyNzZXQgdGVzdCAicCBhX3N0cmluZyIKLSsjZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3Qg JHRlc3QgewotKyMgICAgLXJlICIgPSAweFxbMC05YS1mXF0rIFwic2Vlbm5vdHNlZW5cIlxyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rIwlwYXNzICR0ZXN0Ci0rIyAgICB9Ci0rIyAgICAtcmUgIk5vIHJl Z2lzdGVyc1xcLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rIwlrZmFpbCAidmxhcmVncmVzc2lvbiIg JHRlc3QKLSsjICAgIH0KLSsjfQotKyMKLSsjZ2RiX3Rlc3QgInB0eXBlIGFfc3RyaW5nIiB7dHlw ZSA9IGNoYXIgXFt2YXJpYWJsZSBsZW5ndGhcXX0KLSsKLSsjIE5vdCBydW50b19tYWluIGFzIGR3 Mi1ib3VuZC1sb2NsaXN0LlMgaGFuZGxlcyBvbmx5IHRoZSBmaXJzdCBieXRlIG9mIG1haW4uCi0r aWYgIVtydW50byAiKm1haW4iXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfdGVzdCAi cCBhX3N0cmluZyIgeyA9ICJzZWVuIn0KLStnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmciIHt0eXBl ID0gY2hhciBcWzRcXX0KLSsKLStnZGJfdGVzdCAicCBiX3N0cmluZyIgeyA9ICgweFswLTlhLWZd KyApPyJzZWVubm90c2VlbiJ9Ci0rZ2RiX3Rlc3QgInB0eXBlIGJfc3RyaW5nIiB7dHlwZSA9IGNo YXIgXFtcXX0KLSsKLSsjIFRoZSByZWdpc3RlciBjb250YWlucyB1bnByZWRpY3RhYmxlIHZhbHVl IC0gdGhlIGFycmF5IHNpemUuCi0rZ2RiX3Rlc3QgInB0eXBlIHJlZ19zdHJpbmciIHt0eXBlID0g Y2hhciBcWy0/WzAtOV0rXF19Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5j Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCi1AQCAtMCwwICsxLDQyIEBACi0rLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmln aHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rCi0rLyog VGhlIGZ1bmN0aW9uIGBmdW5jMScgdHJhY2VkIGludG8gbXVzdCBoYXZlIGRlYnVnIGluZm8gb24g b2Zmc2V0ID4gMDsKLSsgICAoRFdfVU5TTkQgKGF0dHIpKS4gIFRoaXMgaXMgdGhlIHJlYXNvbiBv ZiBgZnVuYzAnIGV4aXN0ZW5jZS4gICovCi0rCi0rdm9pZAotK2Z1bmMwKGludCBhLCBpbnQgYikK LSt7Ci0rfQotKwotKy8qIGBmdW5jMScgYmVpbmcgdHJhY2VkIGludG8gbXVzdCBoYXZlIHNvbWUg YXJndW1lbnRzIHRvIGR1bXAuICAqLwotKwotK3ZvaWQKLStmdW5jMShpbnQgYSwgaW50IGIpCi0r ewotKyAgZnVuYzAgKGEsYik7Ci0rfQotKwotK2ludAotK21haW4odm9pZCkKLSt7Ci0rICBmdW5j MSAoMSwgMik7Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LXN0cmlwcGVkLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwCi1AQCAtMCwwICsxLDg0 IEBACi0rIyBDb3B5cmlnaHQgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBNaW5pbWFs IERXQVJGLTIgdW5pdCB0ZXN0Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRh cmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcg b2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYg IVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAg JiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFi aSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4g MAotK30KLSsKLStpZiB7W3VzZV9nZGJfc3R1Yl19IHsKLSsgICAgdW50ZXN0ZWQgInNraXBwaW5n IHRlc3QgYmVjYXVzZSBvZiB1c2VfZ2RiX3N0dWIiCi0rICAgIHJldHVybiAtMQotK30KLSsKLStz ZXQgdGVzdGZpbGUgImR3Mi1zdHJpcHBlZCIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0r c2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9LnhdCi0rCi0rcmVt b3RlX2V4ZWMgYnVpbGQgInJtIC1mICR7YmluZmlsZX0iCi0rCi0rIyBnZXQgdGhlIHZhbHVlIG9m IGdjY19jb21waWxlZAotK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7Ci0rICAg IHJldHVybiAtMQotK30KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gZ2NjIGFz IHdlIHVzZSBhZGRpdGlvbmFsX2ZsYWdzPUZJWE1FCi0raWYgeyRnY2NfY29tcGlsZWQgPT0gMH0g ewotKyAgICByZXR1cm4gMAotK30KLSsKLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGFkZGl0 aW9uYWxfZmxhZ3M9LWdnZGIzfV0gIT0gIiIgfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSty ZW1vdGVfZXhlYyBidWlsZCAib2JqY29weSAtUiAuZGVidWdfbG9jICR7YmluZmlsZX0iCi0rc2V0 IHN0cmlwX291dHB1dCBbcmVtb3RlX2V4ZWMgYnVpbGQgIm9iamR1bXAgLWggJHtiaW5maWxlfSJd Ci0rCi0rc2V0IHRlc3QgInN0cmlwcGluZyB0ZXN0IGZpbGUgcHJlc2VydmF0aW9uIgotK2lmIFsg cmVnZXhwICIuZGVidWdfaW5mbyAiICRzdHJpcF9vdXRwdXRdICB7Ci0rICAgIHBhc3MgIiR0ZXN0 ICguZGVidWdfaW5mbyBwcmVzZXJ2ZWQpIgotK30gZWxzZSB7Ci0rICAgIGZhaWwgIiR0ZXN0ICgu ZGVidWdfaW5mbyBnb3QgYWxzbyBzdHJpcHBlZCkiCi0rfQotKwotK3NldCB0ZXN0ICJzdHJpcHBp bmcgdGVzdCBmaWxlIGZ1bmN0aW9uYWxpdHkiCi0raWYgWyByZWdleHAgIi5kZWJ1Z19sb2MgIiAk c3RyaXBfb3V0cHV0XSAgewotKyAgICBmYWlsICIkdGVzdCAoLmRlYnVnX2xvYyBzdGlsbCBwcmVz ZW50KSIKLSt9IGVsc2UgewotKyAgICBwYXNzICIkdGVzdCAoLmRlYnVnX2xvYyBzdHJpcHBlZCki Ci0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotKyMgRm9yIEMgcHJvZ3JhbXMs ICJzdGFydCIgc2hvdWxkIHN0b3AgaW4gbWFpbigpLgotKwotK2dkYl90ZXN0ICJzdGFydCIgXAot KyAgICAgICAgICIuKm1haW4gXFwoXFwpIGF0IC4qIiBcCi0rICAgICAgICAgInN0YXJ0IgotK2dk Yl90ZXN0ICJzdGVwIiBcCi0rICAgICAgICAgImZ1bmMuKiBcXCguKlxcKSBhdCAuKiIgXAotKyAg ICAgICAgICJzdGVwIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt c3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3Qt bWVtYmVyLWRhdGEtbG9jYXRpb24uUwotQEAgLTAsMCArMSw4MyBAQAotKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIERlYnVnIGluZm9ybWF0aW9uICovCi0rCi0r CS5zZWN0aW9uIC5kZWJ1Z19pbmZvCi0rLkxjdTFfYmVnaW46Ci0rCS8qIENVIGhlYWRlciAqLwot KwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlv biBVbml0ICovCi0rLkxjdTFfc3RhcnQ6Ci0rCS4yYnl0ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24g Ki8KLSsJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJCS8qIE9mZnNldCBpbnRvIGFiYnJldiBzZWN0 aW9uICovCi0rCS5ieXRlCTQJCQkJLyogUG9pbnRlciBzaXplICovCi0rCi0rCS8qIENVIGRpZSAq LwotKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwku YXNjaWkJImR3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uY1wwIgkvKiBEV19BVF9uYW1l ICovCi0rCS5hc2NpaQkiR05VIEMgNC4zLjJcMCIJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwku Ynl0ZQkxCQkJCS8qIERXX0FUX2xhbmd1YWdlIChDKSAqLwotKwotKy5MdHlwZV91Y2hhcjoKLSsJ LnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX3N0cnVjdHVyZV90eXBlICovCi0rCS5hc2Np aQkJInNvbWVfc3RydWN0XDAiCQkvKiBEV19BVF9uYW1lICovCi0rCi0rCS51bGViMTI4CTMJCQkv KiBBYmJyZXY6IERXX1RBR19tZW1iZXIgKi8KLSsJLmFzY2lpCQkiZmllbGRcMCIJCS8qIERXX0FU X25hbWUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiAqLwot KwotKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBzb21lX3N0cnVjdCAqLwotKwot KwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKwotKy5MY3UxX2VuZDoK LSsKLSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgotKy5MYWJi cmV2MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4 CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRlCQkxCQkJLyogaGFzX2No aWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJ MHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3By b2R1Y2VyICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGVi MTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19G T1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfVEFHX3N0cnVjdHVyZV90eXBlICovCi0rCS5ieXRl CQkxCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUg Ki8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLmJ5dGUJCTB4MAkJ CS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJ LnVsZWIxMjgJMwkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MGQJCQkvKiBEV19U QUdfbWVtYmVyICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4 CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJp bmcgKi8KLSsJLnVsZWIxMjgJMHgzOAkJCS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICov Ci0rCS51bGViMTI4CTB4MGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVt YmVyLWRhdGEtbG9jYXRpb24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1 Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVy LWRhdGEtbG9jYXRpb24uZXhwCi1AQCAtMCwwICsxLDM3IEBACi0rIyBDb3B5cmlnaHQgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2gg c3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcg b2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYg IVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAg JiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFi aSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4g MAotK30KLSsKLStzZXQgdGVzdGZpbGUgImR3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24i Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUwotK3NldCBiaW5maWxlICR7dGVzdGZpbGV9LngK LSsKLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIg IltzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2JpbmZpbGV9XSIgb2JqZWN0IHtub2RlYnVnfV0gIT0g IiIgfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStjbGVhbl9yZXN0YXJ0ICRiaW5maWxlCi0r Ci0rZ2RiX3Rlc3QgInB0eXBlIHN0cnVjdCBzb21lX3N0cnVjdCIgInR5cGUgPSBzdHJ1Y3Qgc29t ZV9zdHJ1Y3Qge1xbXHJcbiBcdFxdKnZvaWQgZmllbGQ7XFtcclxuIFx0XF0qfSIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuUyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5TCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1zdWJyYW5nZS1uby10eXBlLlMKLUBAIC0wLDAgKzEsMTIxIEBACi0rLyogVGhpcyB0ZXN0 Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQg MjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsK LSsJLnNlY3Rpb24JLmRhdGEKLSt2YXJkYXRhOgotKwkucmVwdAkJMTI5Ci0rCS5hc2NpaQkJIngi Ci0rCS5lbmRyCi0rCS5hc2NpaQkJIlVOU0VFTlwwIgotKwotKwkuc2VjdGlvbgkuZGVidWdfaW5m bwotKy5MY3UxX2JlZ2luOgotKwkuNGJ5dGUJCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CS8qIExl bmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCi0rLkxjdTFfc3RhcnQ6Ci0rCS4yYnl0ZQkJMgkJ CS8qIERXQVJGIHZlcnNpb24gbnVtYmVyICovCi0rCS40Ynl0ZQkJLkxkZWJ1Z19hYmJyZXYwCQkv KiBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24gKi8KLSsJLmJ5dGUJCTQJCQkvKiBQb2ludGVy IFNpemUgKGluIGJ5dGVzKSAqLwotKwotKwkvKiBDVSBkaWUgKi8KLSsJLnVsZWIxMjgJMQkJCS8q IEFiYnJldjogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYXNjaWkJCSJHTlUgQyAzLjMuM1ww IgkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJCTIJCQkvKiBEV19BVF9sYW5ndWFnZSAo QykgLSAgKi8KLSsKLSsuTGFycmF5X3R5cGU6Ci0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERX X1RBR19hcnJheV90eXBlICovCi0rCS40Ynl0ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyog RFdfQVRfdHlwZSAqLwotKwotKwkudWxlYjEyOAk4CQkJLyogQWJicmV2OiBEV19UQUdfc3VicmFu Z2VfdHlwZSB3aXRob3V0IERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dl cl9ib3VuZCAqLwotKwkuYnl0ZQkJMTI4CQkJLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KLSsKLSsJ LmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGllICovCi0rCi0rLkxjaGFyX3R5cGU6 Ci0rCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmFzY2lp CQkiY2hhclwwIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2J5dGVf c2l6ZSAqLwotKwkuYnl0ZQkJNgkJCS8qIERXX0FUX2VuY29kaW5nICovCi0rCi0rCS51bGViMTI4 CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuYXNj aWkJCSJub3R5cGVfc3RyaW5nXDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLjRieXRlCQkuTGFycmF5 X3R5cGUtLkxjdTFfYmVnaW4gLyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkJMmYgLSAxZgkJCS8q IERXX0FUX2xvY2F0aW9uICovCi0rMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KLSsJ LjRieXRlCQl2YXJkYXRhCQkJLyogICA8YWRkcj4gKi8KLSsyOgotKwotKwkuYnl0ZQkJMAkJCS8q IEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKy5MY3UxX2VuZDoKLSsKLSsJLnNlY3Rpb24gLmRl YnVnX2FiYnJldgotKy5MZGVidWdfYWJicmV2MDoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBj b2RlICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5i eXRlCQkweDEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FU X3Byb2R1Y2VyICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51 bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBE V19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29k ZSAqLwotKwkudWxlYjEyOAkweDEJCQkvKiBUQUc6IERXX1RBR19hcnJheV90eXBlICovCi0rCS5i eXRlCQkweDEJCQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERX X0FUX3R5cGUgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotKwotKwkudWxlYjEyOAk0CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyNAkJ CS8qIERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICov Ci0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyog RFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfQVRfYnl0ZV9zaXplICov Ci0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgzZQkJ CS8qIERXX0FUX2VuY29kaW5nICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEg Ki8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGVi MTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vX2No aWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJ MHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5 cGUgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOAkw eDIJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Js b2NrMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAk4CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJ LnVsZWIxMjgJMHgyMQkJCS8qIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGhvdXQgRFdfQVRfdHlw ZSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogbm8gY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgyMgkJ CS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0 YTEgKi8KLSsJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS51bGVi MTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4MAkJ CS8qIFRlcm1pbmF0b3IgKi8KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLXN1YnJhbmdlLW5vLXR5cGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dWJyYW5nZS1uby10eXBlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5leHAK LUBAIC0wLDAgKzEsMzkgQEAKLSsjIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLStsb2FkX2xpYiBk d2FyZi5leHAKLSsKLSsjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/ aWQ9ODA2OTIwCi0rIyByZWFkX3N1YnJhbmdlX3R5cGUgPFRZUEVfQ09ERSAoYmFzZV90eXBlKSA9 PSBUWVBFX0NPREVfVk9JRD4gcmVpbml0aWFsaXphdGlvbgotKyMgb2YgQkFTRV9UWVBFIHdhcyBk b25lIHRvbyBsYXRlLCBpdCBhZmZlY3RzIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGhvdXQKLSsj IHNwZWNpZmllZCBEV19BVF90eXBlLCBwcmVzZW50IG9ubHkgaW4gWExGIHByb2R1Y2VkIGNvZGUu Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9y dCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotK2lmIHshW2R3YXJmMl9zdXBwb3J0XX0gewotKyAgICBy ZXR1cm4gMAotK30KLSsKLStzZXQgdGVzdGZpbGUgZHcyLXN1YnJhbmdlLW5vLXR5cGUKLStzZXQg c3JjZmlsZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3Nl dCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2V4ZWN1dGFibGV9XQotKwotK2lmIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9 IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVz dGFydCAkZXhlY3V0YWJsZQotKwotK2dkYl90ZXN0ICJwdHlwZSBub3R5cGVfc3RyaW5nIiB7dHlw ZSA9IGNoYXIgXFsxMjlcXX0KLStnZGJfdGVzdCAicCBub3R5cGVfc3RyaW5nIiAiID0gJ3gnIDxy ZXBlYXRzIDEyOSB0aW1lcz4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9kd2FyZi1zdHJpZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJp ZGUuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCi1AQCAtMCwwICsxLDQyIEBACi0r IyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBUaGlzIGZpbGUgd2Fz IHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgot KwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBBcnJheSBlbGVt ZW50IHN0cmlkZSBtdXN0IG5vdCBiZQotKyMgc3BlY2lmaWVkIGluIHRoZSBudW1iZXIgb2YgZWxl bWVudHMgYnV0IGluIGEgbnVtYmVyIG9mIGJ5dGVzIGluc3RlYWQuCi0rIyBPcmlnaW5hbCBwcm9i bGVtOgotKyMgKGdkYikgcCBjNDBwdCgxKQotKyMgJDEgPSAnMC1oZWxsbycsICcgJyA8cmVwZWF0 cyAzMyB0aW1lcz4KLSsjIChnZGIpIHAgYzQwcHQoMikKLSsjIHdhcm5pbmc6IEZvcnRyYW4gYXJy YXkgc3RyaWRlIG5vdCBkaXZpc2libGUgYnkgdGhlIGVsZW1lbnQgc2l6ZQotKwotK3NldCB0ZXN0 ZmlsZSBkd2FyZi1zdHJpZGUKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLSsKLStpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2Zp bGV9IHtkZWJ1ZyBmOTB9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8g TUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBN QUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJicmVhay1oZXJlIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJl YWstaGVyZSIgIi4qYnJlYWstaGVyZS4qIgotK2dkYl90ZXN0ICJwIGM0MHB0KDEpIiAiID0gJzAt aGVsbG8uKiIKLStnZGJfdGVzdCAicCBjNDBwdCgyKSIgIiA9ICcxLWhlbGxvLioiCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1z dHJpZGUuZjkwCi1AQCAtMCwwICsxLDQwIEBACi0rISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEK LSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywgVVNBLgotKyEKLSshIEZpbGUgd3JpdHRlbiBieSBBbGFuIE1hdHN1b2thLgotKwotK3By b2dyYW0gcmVwcm8KLSsKLSsgIHR5cGUgc21hbGxfc3RyaWRlCi0rICAgICBjaGFyYWN0ZXIqNDAg bG9uZ19zdHJpbmcKLSsgICAgIGludGVnZXIgICAgICBzbWFsbF9wYWQKLSsgIGVuZCB0eXBlIHNt YWxsX3N0cmlkZQotKwotKyAgdHlwZShzbWFsbF9zdHJpZGUpLCBkaW1lbnNpb24gKDIwKSwgdGFy Z2V0IDo6IHVucGxlYXNhbnQKLSsgIGNoYXJhY3Rlcio0MCwgcG9pbnRlciwgZGltZW5zaW9uKDop OjogYzQwcHQKLSsKLSsgIGludGVnZXIgaQotKwotKyAgZG8gaSA9IDAsMTkKLSsgICAgIHVucGxl YXNhbnQoaSsxKSVzbWFsbF9wYWQgPSBpKzEKLSsgICAgIHVucGxlYXNhbnQoaSsxKSVsb25nX3N0 cmluZyA9IGNoYXIgKGljaGFyKCcwJykgKyBpKSAvLyAnLWhlbGxvJwotKyAgZW5kIGRvCi0rCi0r ICBjNDBwdCA9PiB1bnBsZWFzYW50JWxvbmdfc3RyaW5nCi0rCi0rICBwcmludCAqLCBjNDBwdCAg ISBicmVhay1oZXJlCi0rCi0rZW5kIHByb2dyYW0gcmVwcm8KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKLUBAIC0wLDAgKzEsMTU0IEBA Ci0rIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBUaGlzIGZpbGUg d2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ LgotKwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBJdCBjb250 YWlucyB0ZXN0cyBmb3IgZHluYW1pY2FsbHkKLSsjIGFsbG9jYXRlZCBGb3J0cmFuIGFycmF5cy4K LSsjIEl0IGRlcGVuZHMgb24gdGhlIEdDQyBkeW5hbWljIEZvcnRyYW4gYXJyYXlzIERXQVJGIHN1 cHBvcnQ6Ci0rIyAJaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0y MjI0NAotKwotK3NldCB0ZXN0ZmlsZSAiZHluYW1pYyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5mOTAKLStzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0r Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0 aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0r ICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJ2YXJ4LWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWluaXQiCi0r Ci0rIyBodHRwOi8vd3d3LmNzLnJwaS5lZHUvfnN6eW1hbnNrL09PRjkwL2J1Z3MuaHRtbCM1Ci0r IyBEbyBub3Q6IGdkYl90ZXN0ICJwIHZhcngiICJcXCRcWzAtOVxdKiA9IDxub3QgYWxsb2NhdGVk PiIgInAgdmFyeCB1bmFsbG9jYXRlZCIKLSsjIERvIG5vdDogZ2RiX3Rlc3QgInB0eXBlIHZhcngi IHt0eXBlID0gcmVhbFwoa2luZD00XCkgXCg6LDosOlwpfSAicHR5cGUgdmFyeCB1bmFsbG9jYXRl ZCIKLSsjIERvIG5vdDogZ2RiX3Rlc3QgInAgdmFyeCgxLDUsMTcpIiB7bm8gc3VjaCB2ZWN0b3Ig ZWxlbWVudCBcKHZlY3RvciBub3QgYWxsb2NhdGVkXCl9ICJwIHZhcngoMSw1LDE3KSB1bmFsbG9j YXRlZCIKLSsjIERvIG5vdDogZ2RiX3Rlc3QgInAgdmFyeCgxLDUsMTcpPTEiIHtubyBzdWNoIHZl Y3RvciBlbGVtZW50IFwodmVjdG9yIG5vdCBhbGxvY2F0ZWRcKX0gInAgdmFyeCgxLDUsMTcpPTEg dW5hbGxvY2F0ZWQiCi0rIyBEbyBub3Q6IGdkYl90ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNykiIHtu byBzdWNoIHZlY3RvciBlbGVtZW50IFwodmVjdG9yIG5vdCBhbGxvY2F0ZWRcKX0gInB0eXBlIHZh cngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmFyeC1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 YXJ4LWFsbG9jYXRlZCIKLSsjICQxID0gKCggKCAwLCAwLCAwLCAwLCAwLCAwKSAoIDAsIDAsIDAs IDAsIDAsIDApIC0tLSAsIDApICkgKCAoIDAsIDAsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3Qg InB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCksIGFsbG9jYXRhYmxl IFxcKDYsNToxNSwxNzoyOFxcKSIgInB0eXBlIHZhcnggYWxsb2NhdGVkIgotKyMgSW50ZWwgRm9y dHJhbiBDb21waWxlciAxMC4xLjAwOCB1c2VzIC0xIHRoZXJlLCBHQ0MgdXNlcyAxLgotK2dkYl90 ZXN0ICJwIGwiICJcXCRcWzAtOVxdKiA9IChcXC5UUlVFXFwufDQyOTQ5NjcyOTUpIiAicCBsIGlm IHZhcnggYWxsb2NhdGVkIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJ2YXJ4LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZmlsbGVk IgotK2dkYl90ZXN0ICJwIHZhcngoMiwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA2IgotK2dkYl90 ZXN0ICJwIHZhcngoMSwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA3IgotK2dkYl90ZXN0ICJwIHZh cngoMiwgNiwgMTgpIiAiXFwkXFswLTlcXSogPSA4IgotK2dkYl90ZXN0ICJwIHZhcngoNiwgMTUs IDI4KSIgIlxcJFxbMC05XF0qID0gOSIKLSsjIGh0dHA6Ly93d3cuY3MucnBpLmVkdS9+c3p5bWFu c2svT09GOTAvYnVncy5odG1sIzUKLSsjIERvIG5vdDogZ2RiX3Rlc3QgInAgdmFydiIgIlxcJFxb MC05XF0qID0gPG5vdCBhc3NvY2lhdGVkPiIgInAgdmFydiB1bmFzc29jaWF0ZWQiCi0rIyBEbyBu b3Q6IGdkYl90ZXN0ICJwdHlwZSB2YXJ2IiB7dHlwZSA9IHJlYWxcKGtpbmQ9NFwpIFwoOiw6LDpc KX0gInB0eXBlIHZhcnYgdW5hc3NvY2lhdGVkIgotKwotK3NldCB0ZXN0ICJvdXRwdXQgdmFyeCIK LStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiXm91dHB1dCB2YXJ4 XHJcblxbKCkgLDY3ODkuXF0qJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0K LSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtYXNzb2Np YXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtYXNzb2NpYXRlZCIKLStn ZGJfdGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIgInAgdmFyeCgzLCA3 LCAxOSkgd2l0aCB2YXJ2IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSki ICJcXCRcWzAtOVxdKiA9IDYiICJwIHZhcnYoMywgNywgMTkpIGFzc29jaWF0ZWQiCi0rIyBJbnRl bCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0r Z2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJw IGwgaWYgdmFydiBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IHJl YWwoXFwoa2luZD00XFwpfFxcKjQpLCBhbGxvY2F0YWJsZSBcXCg2LDU6MTUsMTc6MjhcXCkiICJw dHlwZSB2YXJ4IHdpdGggdmFydiBhc3NvY2lhdGVkIgotKyMgSW50ZWwgRm9ydHJhbiBDb21waWxl ciAxMC4xLjAwOCB1c2VzIHRoZSBwb2ludGVyIHR5cGUuCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnYi ICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg2LDU6 MTUsMTc6MjhcXClcXCk/IiAicHR5cGUgdmFydiBhc3NvY2lhdGVkIgotKwotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZhcnYtZmlsbGVkIgotK2dkYl90ZXN0ICJwIHZhcngoMywgNywgMTkpIiAi XFwkXFswLTlcXSogPSAxMCIgInAgdmFyeCgzLCA3LCAxOSkgd2l0aCB2YXJ2IGZpbGxlZCIKLStn ZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAiICJwIHZhcnYoMywg NywgMTkpIGZpbGxlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi dmFydi1kZWFzc29jaWF0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWRl YXNzb2NpYXRlZCIKLSsjIFRoZSBsYXR0ZXIgb25lIGlzIGZvciB0aGUgSW50ZWwgRm9ydHJhbiBD b21waWxlciAxMC4xLjAwOCBwb2ludGVyIHR5cGUuCi0rZ2RiX3Rlc3QgInAgdmFydiIgIlxcJFxb MC05XF0qID0gKDxub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8g YWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4p IiAicCB2YXJ2IGRlYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIge3R5cGUgPSBy ZWFsXChraW5kPTRcKSBcKDosOiw6XCl9ICJwdHlwZSB2YXJ2IGRlYXNzb2NpYXRlZCIKLStnZGJf dGVzdCAicCBsIiAiXFwkXFswLTlcXSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ2IGRlYXNz b2NpYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ2KDEsNSwxNykiIHtubyBzdWNoIHZlY3RvciBlbGVt ZW50IFwodmVjdG9yIG5vdCBhc3NvY2lhdGVkXCl9Ci0rZ2RiX3Rlc3QgInB0eXBlIHZhcnYoMSw1 LDE3KSIge25vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXCh2ZWN0b3Igbm90IGFzc29jaWF0ZWRcKX0K LSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1kZWFsbG9jYXRl ZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZGVhbGxvY2F0ZWQiCi0rZ2Ri X3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPG5vdCBhbGxvY2F0ZWQ+IiAicCB2YXJ4IGRl YWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiB7dHlwZSA9IHJlYWxcKGtpbmQ9NFwp LCBhbGxvY2F0YWJsZSBcKDosOiw6XCl9ICJwdHlwZSB2YXJ4IGRlYWxsb2NhdGVkIgotK2dkYl90 ZXN0ICJwIGwiICJcXCRcWzAtOVxdKiA9IFxcLkZBTFNFXFwuIiAicCBsIGlmIHZhcnggZGVhbGxv Y2F0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFyeCgxLDUsMTcpIiB7bm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCBcKHZlY3RvciBub3QgYWxsb2NhdGVkXCl9ICJwIHZhcngoMSw1LDE3KSBkZWFsbG9jYXRlZCIK LStnZGJfdGVzdCAicHR5cGUgdmFyeCgxLDUsMTcpIiB7bm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBc KHZlY3RvciBub3QgYWxsb2NhdGVkXCl9ICJwdHlwZSB2YXJ4KDEsNSwxNykgZGVhbGxvY2F0ZWQi Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnktcGFzc2VkIl0K LStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeS1wYXNzZWQiCi0rIyAkMSA9ICgoICgg MSwgMSwgMSwgMSwgMSwgMSkgKCAxLCAxLCAxLCAxLCAxLCAxKSAtLS0gLCAxKSApICggKCAxLCAx LCAuLi4pIC4uLikgLi4uKQotK2dkYl90ZXN0ICJwIHZhcnkiICJcXCRcWzAtOVxdKiA9IFxcKFxb KCkxLCAuXF0qXFwpIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 YXJ5LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnktZmlsbGVkIgot K2dkYl90ZXN0ICJwdHlwZSB2YXJ5IiAidHlwZSA9IHJlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxc KDEwLDEwXFwpIgotK2dkYl90ZXN0ICJwIHZhcnkoMSwgMSkiICJcXCRcWzAtOVxdKiA9IDgiCi0r Z2RiX3Rlc3QgInAgdmFyeSgyLCAyKSIgIlxcJFxbMC05XF0qID0gOSIKLStnZGJfdGVzdCAicCB2 YXJ5KDEsIDMpIiAiXFwkXFswLTlcXSogPSAxMCIKLSsjICQxID0gKCggKCAzLCAzLCAzLCAzLCAz LCAzKSAoIDMsIDMsIDMsIDMsIDMsIDMpIC0tLSAsIDMpICkgKCAoIDMsIDMsIC4uLikgLi4uKSAu Li4pCi0rZ2RiX3Rlc3QgInAgdmFydyIgIlxcJFxbMC05XF0qID0gXFwoXFsoKTMsIC5cXSpcXCki Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnctYWxtb3N0Zmls bGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydy1hbG1vc3RmaWxsZWQiCi0r Z2RiX3Rlc3QgInB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwo NSw0LDNcXCkiCi0rZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIgIlxcJFxbMC05XF0qID0gMSIK LSsjICQxID0gKCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUsIDUsIDUsIDUsIDUpIC0tLSAs IDUpICkgKCAoIDUsIDUsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFydyIgIlxcJFxb MC05XF0qID0gXFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1LCAuXF0qXFwpIiAicCB2YXJ3 IGZpbGxlZCIKLSsjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRyYW4gY29tcGls ZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKLSsjIG91dGVyIGZ1bmN0aW9uIG9ubHkg b24gdGhlIGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgotKyMgV2UgbmVlZCBib3RoIHZhcmlh bnRzIGFzIGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25hbGx5IG1heSBzdGlsbCBiZQot KyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0ZXIgYGZpbmlzaCcuCi0rZ2Ri X3Rlc3QgImZpbmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8Y2FsbCBmb28gXFwoeCwgelxc KDI6NiwgNDo3LCA2OjhcXClcXCkpIgotK2dkYl90ZXN0ICJwIHooMiw0LDUpIiAiXFwkXFswLTlc XSogPSAzIgotK2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFswLTlcXSogPSA2IgotK2dkYl90 ZXN0ICJwIHooMiw0LDcpIiAiXFwkXFswLTlcXSogPSA1IgotK2dkYl90ZXN0ICJwIHooNCw0LDYp IiAiXFwkXFswLTlcXSogPSAxIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2YXJ6LWFsbW9zdGZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZh cnotYWxtb3N0ZmlsbGVkIgotKyMgR0NDIHVzZXMgdGhlIHBvaW50ZXIgdHlwZSBoZXJlLCBJbnRl bCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IGRvZXMgbm90LgotK2dkYl90ZXN0ICJwdHlwZSB2 YXJ6IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwo XFwqXFwpXFwpPyIKLSsjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggaGFzIGEgYnVn IGhlcmUgLSAoMjoxMSw3OjcpCi0rIyBhcyBpdCBwcm9kdWNlcyBEV19BVF9sb3dlcl9ib3VuZCA9 PSBEV19BVF91cHBlcl9ib3VuZCA9PSA3LgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ0IiAidHlwZSA9 IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoMjoxMSw3OlxcKlxc KVxcKT8iCi0rZ2RiX3Rlc3QgInAgdmFyeiIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgotK2dkYl90 ZXN0ICJwIHZhcnQiICJcXCRcWzAtOVxdKiA9IFxcKFxcKSIKLStnZGJfdGVzdCAicCB2YXJ6KDMp IiAiXFwkXFswLTlcXSogPSA0IgotKyMgbWFwcyB0byBmb286OnZhcnkoMSwxKQotK2dkYl90ZXN0 ICJwIHZhcnQoMiw3KSIgIlxcJFxbMC05XF0qID0gOCIKLSsjIG1hcHMgdG8gZm9vOjp2YXJ5KDIs MikKLStnZGJfdGVzdCAicCB2YXJ0KDMsOCkiICJcXCRcWzAtOVxdKiA9IDkiCi0rIyBtYXBzIHRv IGZvbzo6dmFyeSgxLDMpCi0rZ2RiX3Rlc3QgInAgdmFydCgyLDkpIiAiXFwkXFswLTlcXSogPSAx MCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1p Yy5mOTAKLUBAIC0wLDAgKzEsOTggQEAKLSshIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBk eW5hbWljLmV4cC4KLSshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxq YWt1YkByZWRoYXQuY29tPi4KLSshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEph biBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5l IGJhegotKyAgcmVhbCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2YXJ4ICg6LCA6LCA6KQotKyAg cmVhbCwgcG9pbnRlciA6OiB2YXJ2ICg6LCA6LCA6KQotKyAgcmVhbCwgdGFyZ2V0IDo6IHZhcnUg KDEsIDIsIDMpCi0rICBsb2dpY2FsIDo6IGwKLSsgIGFsbG9jYXRlICh2YXJ4ICgxOjYsIDU6MTUs IDE3OjI4KSkgICAgICAgICAgICAhIHZhcngtaW5pdAotKyAgbCA9IGFsbG9jYXRlZCAodmFyeCkK LSsgIHZhcngoOiwgOiwgOikgPSA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcngt YWxsb2NhdGVkCi0rICB2YXJ4KDEsIDUsIDE3KSA9IDcKLSsgIHZhcngoMiwgNiwgMTgpID0gOAot KyAgdmFyeCg2LCAxNSwgMjgpID0gOQotKyAgdmFydiA9PiB2YXJ4ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICEgdmFyeC1maWxsZWQKLSsgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQot KyAgdmFydigzLCA3LCAxOSkgPSAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydi1h c3NvY2lhdGVkCi0rICB2YXJ2ID0+IG51bGwgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgISB2YXJ2LWZpbGxlZAotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICBkZWFsbG9jYXRl ICh2YXJ4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWRlYXNzb2NpYXRlZAot KyAgbCA9IGFsbG9jYXRlZCAodmFyeCkKLSsgIHZhcnUoOiwgOiwgOikgPSAxMCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAhIHZhcngtZGVhbGxvY2F0ZWQKLSsgIGFsbG9jYXRlICh2YXJ2ICgx OjYsIDU6MTUsIDE3OjI4KSkKLSsgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQotKyAgdmFydig6LCA6 LCA6KSA9IDYKLSsgIHZhcnYoMSwgNSwgMTcpID0gNwotKyAgdmFydigyLCA2LCAxOCkgPSA4Ci0r ICB2YXJ2KDYsIDE1LCAyOCkgPSA5Ci0rICBkZWFsbG9jYXRlICh2YXJ2KQotKyAgbCA9IGFzc29j aWF0ZWQgKHZhcnYpCi0rICB2YXJ2ID0+IHZhcnUKLSsgIHZhcnYoMSwgMSwgMSkgPSA2Ci0rICB2 YXJ2KDEsIDIsIDMpID0gNwotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rZW5kIHN1YnJvdXRp bmUgYmF6Ci0rc3Vicm91dGluZSBmb28gKHZhcnksIHZhcncpCi0rICByZWFsIDo6IHZhcnkgKDos IDopCi0rICByZWFsIDo6IHZhcncgKDosIDosIDopCi0rICB2YXJ5KDosIDopID0gNCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ5LXBhc3NlZAotKyAgdmFyeSgxLCAxKSA9IDgK LSsgIHZhcnkoMiwgMikgPSA5Ci0rICB2YXJ5KDEsIDMpID0gMTAKLSsgIHZhcncoOiwgOiwgOikg PSA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnktZmlsbGVkCi0rICB2YXJ3KDEs IDEsIDEpID0gNgotKyAgdmFydygyLCAyLCAyKSA9IDcgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICEgdmFydy1hbG1vc3RmaWxsZWQKLStlbmQgc3Vicm91dGluZSBmb28KLStzdWJyb3V0aW5l IGJhciAodmFyeiwgdmFydCkKLSsgIHJlYWwgOjogdmFyeiAoKikKLSsgIHJlYWwgOjogdmFydCAo MjoxMSwgNzoqKQotKyAgdmFyeigxOjMpID0gNAotKyAgdmFyeigyKSA9IDUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICEgdmFyei1hbG1vc3RmaWxsZWQKLSsgIHZhcnQoMiw3KSA9 IHZhcnQoMiw3KQotK2VuZCBzdWJyb3V0aW5lIGJhcgotK3Byb2dyYW0gdGVzdAotKyAgaW50ZXJm YWNlCi0rICAgIHN1YnJvdXRpbmUgZm9vICh2YXJ5LCB2YXJ3KQotKyAgICByZWFsIDo6IHZhcnkg KDosIDopCi0rICAgIHJlYWwgOjogdmFydyAoOiwgOiwgOikKLSsgICAgZW5kIHN1YnJvdXRpbmUK LSsgIGVuZCBpbnRlcmZhY2UKLSsgIGludGVyZmFjZQotKyAgICBzdWJyb3V0aW5lIGJhciAodmFy eiwgdmFydCkKLSsgICAgcmVhbCA6OiB2YXJ6ICgqKQotKyAgICByZWFsIDo6IHZhcnQgKDI6MTEs IDc6KikKLSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIHJlYWwgOjog eCAoMTAsIDEwKSwgeSAoNSksIHooOCwgOCwgOCkKLSsgIHgoOiw6KSA9IDEKLSsgIHkoOikgPSAy Ci0rICB6KDosOiw6KSA9IDMKLSsgIGNhbGwgYmF6Ci0rICBjYWxsIGZvbyAoeCwgeigyOjYsIDQ6 NywgNjo4KSkKLSsgIGNhbGwgYmFyICh5LCB4KQotKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3Iu IHggKDIsIDIpIC5uZS4gOSAub3IuIHggKDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAotKyAgaWYg KHggKDEsIDMpIC5uZS4gMTApIGNhbGwgYWJvcnQKLSsgIGlmICh6ICgyLCA0LCA2KSAubmUuIDYg Lm9yLiB6ICgzLCA1LCA3KSAubmUuIDcgLm9yLiB6ICgyLCA0LCA3KSAubmUuIDUpIGNhbGwgYWJv cnQKLSsgIGlmIChhbnkgKHkgLm5lLiAoLzQsIDUsIDQsIDIsIDIvKSkpIGNhbGwgYWJvcnQKLSsg IGNhbGwgZm9vICh0cmFuc3Bvc2UgKHgpLCB6KQotKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3Iu IHggKDIsIDIpIC5uZS4gOSAub3IuIHggKDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAotKyAgaWYg KHggKDMsIDEpIC5uZS4gMTApIGNhbGwgYWJvcnQKLStlbmQKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3N0cmluZy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKLUBAIC0wLDAgKzEsNzEgQEAKLSsj IENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsKLSsjIFRoaXMgZmlsZSB3YXMg d3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0r Ci0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEl0IGNvbnRhaW5z IHRlc3RzIGZvciBGb3J0cmFuCi0rIyBzdHJpbmdzIHdpdGggZHluYW1pYyBsZW5ndGguCi0rCi0r c2V0IHRlc3RmaWxlICJzdHJpbmciCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCi0rc2V0 IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9XQotKwotK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWcgZjkwIHF1aWV0fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJD b3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJf ZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgot K2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAg IHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51 ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyLWluaXQi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXItaW5pdCIKLStnZGJfdGVzdCAicHR5 cGUgYyIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD0xXFwpfFxcKjEpIgotK2dkYl90ZXN0ICJw dHlwZSBkIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPThcXCl8XFwqOCkiCi0rIyBGb3J0cmFu OiBTdXBwb3J0IHBvaW50ZXJzIHRvIGR5bmFtaWMgdHlwZXMuCi0rc2V0dXBfa2ZhaWwgZ2RiL25u bm5uICIqLSotKiIKLStnZGJfdGVzdCAicHR5cGUgZSIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2lu ZD00XFwpfFxcKjQpIgotKyMgRm9ydHJhbjogU3VwcG9ydCBwb2ludGVycyB0byBkeW5hbWljIHR5 cGVzLgotK3NldHVwX2tmYWlsIGdkYi9ubm5ubiAiKi0qLSoiCi0rZ2RiX3Rlc3QgInB0eXBlIGYi ICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg3LDg6MTBcXCkiCi0rIyBG b3J0cmFuOiBTdXBwb3J0IHBvaW50ZXJzIHRvIGR5bmFtaWMgdHlwZXMuCi0rc2V0dXBfa2ZhaWwg Z2RiL25ubm5uICIqLSotKiIKLStnZGJfdGVzdCAicHR5cGUgKmUiICJBdHRlbXB0IHRvIHRha2Ug Y29udGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iCi0rIyBGb3J0cmFuOiBTdXBwb3J0IHBv aW50ZXJzIHRvIGR5bmFtaWMgdHlwZXMuCi0rc2V0dXBfa2ZhaWwgZ2RiL25ubm5uICIqLSotKiIK LStnZGJfdGVzdCAicHR5cGUgKmYiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0 KSBcXCg3XFwpIgotK2dkYl90ZXN0ICJwIGMiICJcXCRcWzAtOVxdKiA9ICdjJyIKLStnZGJfdGVz dCAicCBkIiAiXFwkXFswLTlcXSogPSAnZCAgICAgICAnIgotK2dkYl90ZXN0ICJwIGUiICJcXCRc WzAtOVxdKiA9ICdnICAgJyIKLSsjIEZvcnRyYW46IFN1cHBvcnQgcG9pbnRlcnMgdG8gZHluYW1p YyB0eXBlcy4KLStzZXR1cF9rZmFpbCBnZGIvbm5ubm4gIiotKi0qIgotK2dkYl90ZXN0ICJwIGYi ICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdo ICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAg JywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAgICcsICdoICAgJywg J2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKSIKLStnZGJfdGVzdCAicCAqZSIg IkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKLStnZGJf dGVzdCAicCAqZiIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZh bHVlLiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyLWZpbmlz aCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5pc2giCi0rZ2RiX3Rlc3Qg InAgZSIgIlxcJFxbMC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIKLSsjIEZvcnRyYW46IFN1 cHBvcnQgcG9pbnRlcnMgdG8gZHluYW1pYyB0eXBlcy4KLStzZXR1cF9rZmFpbCBnZGIvbm5ubm4g IiotKi0qIgotK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcsICdm ICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmMiAg JywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCgg J2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwp IFxcKSIgInAgKmYgcmUtc2V0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RyaW5nLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmY5MAotQEAgLTAsMCArMSwzNyBAQAotKyEgQ29weXJpZ2h0IDIwMDgg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQot KyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291 cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIg dGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgot KwotK3N1YnJvdXRpbmUgZm9vIChlLCBmKQotKyAgY2hhcmFjdGVyIChsZW49MSkgOjogYwotKyAg Y2hhcmFjdGVyIChsZW49OCkgOjogZAotKyAgY2hhcmFjdGVyIChsZW49KikgOjogZQotKyAgY2hh cmFjdGVyIChsZW49KikgOjogZiAoMTo3LCA4OjEwKQotKyAgYyA9ICdjJwotKyAgZCA9ICdkJwot KyAgZSA9ICdlJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyLWlu aXQKLSsgIGYgPSAnZicKLSsgIGYoMSw5KSA9ICdmMicKLSsgIGMgPSAnYycgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhci1maW5pc2gKLStlbmQgc3Vicm91dGluZSBm b28KLSsgIGNoYXJhY3RlciAobGVuPTQpIDo6IGcsIGggKDE6NywgODoxMCkKLSsgIGcgPSAnZycK LSsgIGggPSAnaCcKLSsgIGNhbGwgZm9vIChnLCBoKQotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdWJyYW5nZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAotQEAgLTAsMCArMSw3 MiBAQAotKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmIHsgW3NraXBfZm9ydHJhbl90 ZXN0c10gfSB7IHJldHVybiAtMSB9Ci0rCi0rc2V0IHRlc3RmaWxlICJzdWJyYW5nZSIKLStzZXQg c3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVz dGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmOTB9XSB9IHsKLSsgICAg cmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB7Ci0rICAgIHBlcnJvciAiQ291 bGRuJ3QgcnVuIHRvIE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rIyBEZXBlbmRpbmcg b24gdGhlIGNvbXBpbGVyIHZlcnNpb24gYmVpbmcgdXNlZCwgdGhlIG5hbWUgb2YgdGhlIDQtYnl0 ZSBpbnRlZ2VyCi0rIyBhbmQgcmVhbCB0eXBlcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4g IEZvciBpbnN0YW5jZSwgZ2ZvcnRyYW4tNC4xIHVzZXMKLSsjICJpbnQ0IiB3aGVyZWFzIGdmb3J0 cmFuLTQuMyB1c2VzICJpbnQoa2luZD00KSIuCi0rc2V0IGludDQgIihpbnQ0fGludGVnZXJcXChr aW5kPTRcXCkpIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVh ay1zdGF0aWMiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1zdGF0aWMiICIu KmJyZWFrLXN0YXRpYy4qIgotKwotK2ZvcmVhY2ggdmFyIHthIGFsbG9jIHB0cn0gewotKyAgICBn bG9iYWwgcGZfcHJlZml4Ci0rICAgIHNldCBvbGRfcHJlZml4ICRwZl9wcmVmaXgKLSsgICAgbGFw cGVuZCBwZl9wcmVmaXggIiR2YXI6IgotKwotKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFy ZWdyZXNzaW9uLzk5OTkiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDIsIDI6MykiIHsgPSBcKDIy LCAzMlwpfQotKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCi0r ICAgIGdkYl90ZXN0ICJwICR2YXIgKDI6MywgMykiIHsgPSBcKDMyLCAzM1wpfQotKyAgICBzZXR1 cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCi0rICAgIGdkYl90ZXN0ICJwICR2 YXIgKDEsIDI6KSIgeyA9IFwoMjEsIDMxXCl9Ci0rICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZs YXJlZ3Jlc3Npb24vOTk5OSIKLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoMiwgOjIpIiB7ID0gXCgx MiwgMjJcKX0KLSsgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5Igot KyAgICBnZGJfdGVzdCAicCAkdmFyICgzLCAyOjIpIiB7ID0gXCgyM1wpfQotKyAgICBzZXR1cF9r ZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCi0rICAgIGdkYl90ZXN0ICJwdHlwZSAk dmFyICgzLCAyOjIpIiAiID0gJGludDQgXFwoMjoyXFwpIgotKyAgICBzZXR1cF9rZmFpbCAiKi0q LSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDQsIDopIiB7 ID0gXCgxNCwgMjQsIDM0XCl9Ci0rICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Np b24vOTk5OSIKLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoOiwgOikiIHsgPSBcKFwoICoxMSwgMTIs IDEzLCAxNFwpIFwoICoyMSwgMjIsIDIzLCAyNFwpIFwoICozMSwgMzIsIDMzLCAzNFwpICpcKX0K LSsgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgotKyAgICBnZGJf dGVzdCAicHR5cGUgJHZhciAoOiwgOikiICIgPSAkaW50NCBcXCg0LDNcXCkiCi0rICAgIHNldHVw X2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKLSsgICAgZ2RiX3Rlc3QgInAgJHZh ciAoOikiICJXcm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIKLSsgICAgc2V0dXBfa2ZhaWwgIiot Ki0qIiAidmxhcmVncmVzc2lvbi85OTk5IgotKyAgICBnZGJfdGVzdCAicCAkdmFyICg6LCA6LCA6 KSIgIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIgotKwotKyAgICBzZXQgcGZfcHJlZml4ICRv bGRfcHJlZml4Ci0rfQotKwotK2dkYl90ZXN0X25vX291dHB1dCB7c2V0ICRhPWF9Ci0rZGVsZXRl X2JyZWFrcG9pbnRzCi0rZ2RiX3VubG9hZAotK3NldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jl c3Npb24vOTk5OSIKLStnZGJfdGVzdCB7cCAkYSAoMywgMjoyKX0geyA9IFwoMjNcKX0KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAK LUBAIC0wLDAgKzEsMjggQEAKLSshIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rcHJvZ3Jh bSB0ZXN0Ci0rICBpbnRlZ2VyLCB0YXJnZXQgOjogYSAoNCwgMykKLSsgIGludGVnZXIsIGFsbG9j YXRhYmxlIDo6IGFsbG9jICg6LCA6KQotKyAgaW50ZWdlciwgcG9pbnRlciA6OiBwdHIgKDosIDop Ci0rICBkbyAxIGkgPSAxLCA0Ci0rICBkbyAxIGogPSAxLCAzCi0rICAgIGEgKGksIGopID0gaiAq IDEwICsgaQotKzEgY29udGludWUKLSsgIGFsbG9jYXRlIChhbGxvYyAoNCwgMykpCi0rICBhbGxv YyA9IGEKLSsgIHB0ciA9PiBhCi0rICB3cml0ZSAoKiwqKSBhICAgICAgICAgICAgICAgICAhIGJy ZWFrLXN0YXRpYwotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12 YXItc3RhbGUtdHlwZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBl LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYwotQEAgLTAsMCArMSwyNiBAQAotKy8qIENv cHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCi0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsg IGNoYXIgdmxhW2FyZ2NdOwotKwotKyAgdmxhWzBdID0gMDsJLyogYnJlYWstaGVyZSAqLwotKwot KyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12 YXItc3RhbGUtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5 cGUuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAotQEAgLTAsMCArMSw1NyBAQAot KyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStsb2FkX2xpYiBtaS1zdXBwb3J0LmV4cAot K3NldCBNSUZMQUdTICItaT1taTIiCi0rCi0rZ2RiX2V4aXQKLStpZiBbbWlfZ2RiX3N0YXJ0XSB7 Ci0rICAgIGNvbnRpbnVlCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAibWkyLXZhci1zdGFsZS10eXBl IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0 cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0raWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVzdGZpbGV9 LmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGVdID09IC0xfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsK LSttaV9kZWxldGVfYnJlYWtwb2ludHMKLSttaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKLSttaV9nZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rbWlfZ2RiX3Rlc3Qgey1pbnRl cnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBxdWl0 IHllcyJ9IFwKLSsgIHtcXmRvbmV9IFwKLSsgICJtYWludGVuYW5jZSBzZXQgaW50ZXJuYWwtZXJy b3IgcXVpdCB5ZXMiCi0rCi0rbWlfZ2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUg Im1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBjb3JlZmlsZSB5ZXMifSBcCi0rICB7XF5k b25lfSBcCi0rICAibWFpbnRlbmFuY2Ugc2V0IGludGVybmFsLWVycm9yIGNvcmVmaWxlIHllcyIK LSsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCi0rc2V0IGZ1 bmMgIm1haW4iCi0rCi0rbWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgLXQgJHNyY2ZpbGU6JGxp bmUiIFwKLSsgICJcXF5kb25lLGJrcHQ9XHtudW1iZXI9XCJcWzAtOVxdK1wiLHR5cGU9XCJicmVh a3BvaW50XCIsZGlzcD1cImRlbFwiLGVuYWJsZWQ9XCJ5XCIsYWRkcj1cIiRoZXhcIixmdW5jPVwi JGZ1bmNcKFxcXCguKlxcXClcKT9cIixmaWxlPVwiLipcIixmdWxsbmFtZT1cIi4qXCIsbGluZT1c IiRsaW5lXCIsXFteXHJcblxdKixvcmlnaW5hbC1sb2NhdGlvbj1cIi4qXCJcfSIgXAotKyAgImJy ZWFrcG9pbnQgYXQgJGZ1bmMiCi0rCi0raWYgeyBbbWlfcnVuX2NtZF0gPCAwIH0gewotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAkZnVuYyAiLioi ICIuKiIgIlxbMC05XF0rIiB7ICIiICJkaXNwPVwiZGVsXCIiIH0gInN0b3AgYWZ0ZXIgaW5pdGlh bGl6aW5nIHZsYSIKLSsKLSttaV9jcmVhdGVfdmFyb2JqICJ2bGEiICJ2bGEiICJjcmVhdGUgbG9j YWwgdmFyaWFibGUgdmxhIgotKwotK21pX2dkYl90ZXN0ICItdmFyLXVwZGF0ZSAqIiAiXFxeZG9u ZSxjaGFuZ2VsaXN0PS4qIiAiLXZhci11cGRhdGUgKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMgYi9nZGIvdGVzdHN1aXRlL2dk Yi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdp c3Rlci1mdW5jLmMKLUBAIC0wLDAgKzEsMjIgQEAKLSsvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwotKwotK2ludAotK2Z1bmMgKGludCAqYXJyKQotK3sKLSsgIHJldHVybiBhcnJbMF07 Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lz dGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYwotQEAgLTAsMCArMSwyOCBAQAotKy8qIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rZXh0ZXJuIGludCBmdW5jIChpbnQgKmFycik7Ci0r Ci0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBpbnQgYXJyW10gPSB7IDQyIH07Ci0rCi0rICBm dW5jIChhcnIpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4 cAotQEAgLTAsMCArMSwzMyBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5j LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT QS4KLSsjCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KLSsKLStp ZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nIGFycmF5LWZyb20tcmVnaXN0ZXIuZXhwICJhcnJheS1m cm9tLXJlZ2lzdGVyIiAgICAgIFwKLSsJCQkgIHthcnJheS1mcm9tLXJlZ2lzdGVyLmMgYXJyYXkt ZnJvbS1yZWdpc3Rlci1mdW5jLmN9IFwKLSsJCQkgIHtkZWJ1ZyBvcHRpbWl6ZT0tTzJ9XSB9IHsK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG8gZnVuY10gdGhlbiB7Ci0rICAgIHJl dHVybiAtMQotK30KLSsKLStnZGJfdGVzdCAicCBhcnIiICJcXCRcWzAtOVxdKyA9IFxcKGludCBc XCpcXCkgKjB4XFswLTlhLWZcXSsiCi0rCi0rIyBTZWVuIHJlZ3Jlc3Npb246Ci0rIyBBZGRyZXNz IHJlcXVlc3RlZCBmb3IgaWRlbnRpZmllciAiYXJyIiB3aGljaCBpcyBpbiByZWdpc3RlciAkcmRp Ci0rZ2RiX3Rlc3QgInAgYXJyXFswXF0iICJcXCRcWzAtOVxdKyA9IDQyIgotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmluZy5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5vcHQvZm9ydHJhbi1zdHJpbmcuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmV4cAot QEAgLTAsMCArMSw0NiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgot KwotKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPi4KLSsKLSsjIFRlc3QgR0RCIGNhbiBjb3BlIHdpdGggRm9ydHJhbiBz dHJpbmdzIGhhdmluZyB0aGVpciBsZW5ndGggcHJlc2VudCBpbiBhIENQVQotKyMgcmVnaXN0ZXIu ICBXaXRoIC1PMCB0aGUgc3RyaW5nIGxlbmd0aCBpcyBwYXNzZWQgb24gdGhlIHN0YWNrLiAgVG8g bWFrZSB0aGlzCi0rIyB0ZXN0IG1lYW5pbmdmdWwgdGhlIGZvbGxvdyBhc3NlcnRpb24gc2hvdWxk IHBhc3MuICBJdCBpcyBub3QgYmVpbmcgY2hlY2tlZAotKyMgaGVyZSBhcyB0aGUgIl9zIiBzeW1i b2wgaXMgY29tcGlsZXIgZGVwZW5kZW50OgotKyMgICAoZ2RiKSBpbmZvIGFkZHJlc3MgX3MKLSsj ICAgU3ltYm9sICJfcyIgaXMgYSB2YXJpYWJsZSBpbiByZWdpc3RlciBYWC4KLSsKLStzZXQgdGVz dCBmb3J0cmFuLXN0cmluZwotK3NldCBzcmNmaWxlICR7dGVzdH0uZjkwCi0raWYgeyBbcHJlcGFy ZV9mb3JfdGVzdGluZyAke3Rlc3R9LmV4cCAke3Rlc3R9ICR7c3JjZmlsZX0ge2RlYnVnIGY5MCBh ZGRpdGlvbmFsX2ZsYWdzPS1PMn1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVty dW50byAkc3JjZmlsZTpbZ2RiX2dldF9saW5lX251bWJlciAicyA9IHMiXV0gdGhlbiB7Ci0rICAg IHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51 ZQotK30KLSsKLStnZGJfdGVzdCAiaW5mbyBhcmdzIiAiLipzID0gJ2ZvbycuKiIKLStnZGJfdGVz dF9tdWx0aXBsZSAicHR5cGUgcyIgIiIgewotKyAgICAtcmUgLXdyYXAgInR5cGUgPSBjaGFyYWN0 ZXIgXFwoM1xcKSIgewotKwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAgIH0KLSsgICAgLXJlIC13 cmFwICJ0eXBlID0gY2hhcmFjdGVyXFwqMyIgewotKwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAg IH0KLSt9Ci0rZ2RiX3Rlc3QgInAgcyIgIlxcJFxbMC05XF0qID0gJ2ZvbyciCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmY5MCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmluZy5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvZm9ydHJhbi1zdHJpbmcuZjkw Ci1AQCAtMCwwICsxLDI5IEBACi0rISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us IG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB LgotKyEKLSshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHluYW1p Yy5leHAuCi0rISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJA cmVkaGF0LmNvbT4uCi0rISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rICBzdWJyb3V0aW5lIGYo cykKLSsgIGNoYXJhY3RlciooKikgcwotKyAgcyA9IHMKLSsgIHByaW50ICosIHMKLSsgIGVuZAot KwotKyAgcHJvZ3JhbSBtYWluCi0rICBjYWxsIGYgKCdmb28nKQotKyAgZW5kCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5wYXNjYWwvYXJyYXlzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCi1AQCAtMCwwICsxLDEw NyBAQAotKyMgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAkdHJhY2VsZXZl bCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK2xvYWRfbGliICJwYXNj YWwuZXhwIgotKwotK3NldCB0ZXN0ZmlsZSAiYXJyYXlzIgotK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LnBhcwotK3NldCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfSRF WEVFWFRdCi0rCi0rIyBUaGVzZSB0ZXN0cyBvbmx5IHdvcmsgd2l0aCBmcGMsIHVzaW5nIHRoZSAt Z3czIGNvbXBpbGUtb3B0aW9uCi0rcGFzY2FsX2luaXQKLStpZiB7ICRwYXNjYWxfY29tcGlsZXJf aXNfZnBjICE9IDEgfSB7Ci0rICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBEZXRlY3QgaWYgdGhlIGZw YyB2ZXJzaW9uIGlzIGJlbG93IDIuMy4wCi0rc2V0IGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5 bmFtaWNfYXJyYXlzIDEKLStpZiB7ICgkZnBjdmVyc2lvbl9tYWpvciA8IDIpIHx8ICggKCRmcGN2 ZXJzaW9uX21ham9yID09IDIpICYmICgkZnBjdmVyc2lvbl9taW5vciA8IDMpKX0gIHsKLSsgIHNl dCBmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyAwCi0rfQotKwotKwotK2lm IHtbZ2RiX2NvbXBpbGVfcGFzY2FsICItZ3czICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgW2xpc3QgZGVidWcgXV0gIT0gIiIgfSB7Ci0rICBy ZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rc2V0IGJwX2xvY2F0 aW9uMSBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMSBoZXJlIl0KLStzZXQg YnBfbG9jYXRpb24yIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAyIGhlcmUi XQotKwotKwotK2lmIHsgW2dkYl9icmVha3BvaW50ICR7c3JjZmlsZX06JHticF9sb2NhdGlvbjF9 XSB9IHsKLSsgICAgcGFzcyAic2V0dGluZyBicmVha3BvaW50IDEiCi0rfQotK2lmIHsgW2dkYl9i cmVha3BvaW50ICR7c3JjZmlsZX06JHticF9sb2NhdGlvbjJ9XSB9IHsKLSsgICAgcGFzcyAic2V0 dGluZyBicmVha3BvaW50IDIiCi0rfQotKwotKyMgVmVyaWZ5IHRoYXQgInN0YXJ0IiBsYW5kcyBp bnNpZGUgdGhlIHJpZ2h0IHByb2NlZHVyZS4KLStpZiB7IFtnZGJfc3RhcnRfY21kXSA8IDAgfSB7 Ci0rICAgIHVudGVzdGVkIHN0YXJ0Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfdGVzdCAi IiAiLiogYXQgLioke3NyY2ZpbGV9LioiICJzdGFydCIKLSsKLStnZGJfdGVzdCAiY29udCIgIkJy ZWFrcG9pbnQgLio6JHticF9sb2NhdGlvbjF9LioiICJHb2luZyB0byBmaXJzdCBicmVha3BvaW50 IgotKwotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJySW50IiAiLiogPSBcXHs1MCwgNTEsIDUyLCA1 MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxXFx9IiAiUHJpbnQgc3RhdGljIGFycmF5 IG9mIGludGVnZXIgdHlwZSIKLStnZGJfdGVzdCAicHJpbnQgU3RhdEFyckludF8iICIuKiA9IFxc ezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFcXH0iICJQcmlu dCBzdGF0aWMgYXJyYXkgb2YgaW50ZWdlciIKLSsKLStnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9p bnQgLio6JHticF9sb2NhdGlvbjJ9LioiICJHb2luZyB0byBzZWNvbmQgYnJlYWtwb2ludCIKLSsK LStnZGJfdGVzdCAicHJpbnQgU3RhdEFyckNoYXIiICIuKiA9ICdhYmNkZWZnaGlqa2wnIiAiUHJp bnQgc3RhdGljIGFycmF5IG9mIGNoYXIiCi0rZ2RiX3Rlc3QgInByaW50IFN0YXQyZEFyckludCIg Ii4qID0gXFx7XFx7MCwgMSwgMiwgMywgNFxcfSwgXFx7MSwgMiwgMywgNCwgNVxcfSwgXFx7Miwg MywgNCwgNSwgNlxcfSwgXFx7MywgNCwgNSwgNiwgN1xcfSwgXFx7NCwgNSwgNiwgNywgOFxcfSwg XFx7NSwgNiwgNywgOCwgOVxcfSwgXFx7NiwgNywgOCwgOSwgMTBcXH0sIFxcezcsIDgsIDksIDEw LCAxMVxcfSwgXFx7OCwgOSwgMTAsIDExLCAxMlxcfSwgXFx7OSwgMTAsIDExLCAxMiwgMTNcXH0s IFxcezEwLCAxMSwgMTIsIDEzLCAxNFxcfSwgXFx7MTEsIDEyLCAxMywgMTQsIDE1XFx9XFx9IiAi UHJpbnQgc3RhdGljIDItZGltZW5zaW9uYWwgYXJyYXkgb2YgaW50ZWdlciIKLSsKLStpZiB7ICRm cGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94 ZmFpbCAiKi0qLSoiCi0rfQotK2dkYl90ZXN0ICJwcmludCBEeW5BcnJJbnQiICIuKiA9IFxcezUw LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyXFx9IiAiUHJp bnQgZHluYW1pYyBhcnJheSBvZiBpbnRlZ2VyIHR5cGUiCi0raWYgeyAkZnBjX2dlbmVyYXRlc19k d2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0gewotKyAgc2V0dXBfeGZhaWwgIiotKi0qIgot K30KLStnZGJfdGVzdCAicHJpbnQgRHluQXJySW50XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMs IDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjJcXH0iICJQcmludCBkeW5hbWljIGFy cmF5IG9mIGludGVnZXIiCi0rCi0raWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1p Y19hcnJheXMgPT0gMH0gewotKyAgc2V0dXBfeGZhaWwgIiotKi0qIgotK30KLStnZGJfdGVzdCAi cHJpbnQgcyIgIi4qID0gJ3Rlc3QnIzAnc3RyaW5nJyIgIlByaW50IHN0cmluZyBjb250YWluaW5n IG51bGwtY2hhciIKLSsKLStpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2Fy cmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94ZmFpbCAiKi0qLSoiCi0rfSBlbHNlIHsKLSsgIHNldHVw X2tmYWlsICIqLSotKiIgcGFzY2FsLzI2MTA2Ci0rfQotK2dkYl90ZXN0ICJwcmludCBEeW5BcnJT dHIiICIuKiA9IFxceydkc3RyMCcsICdkc3RyMScsICdkc3RyMicsICdkc3RyMycsICdkc3RyNCcs ICdkc3RyNScsICdkc3RyNicsICdkc3RyNycsICdkc3RyOCcsICdkc3RyOScsICdkc3RyMTAnLCAn ZHN0cjExJywgJ2RzdHIxMidcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIHN0cmluZyIKLSsK LStpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0r ICBzZXR1cF94ZmFpbCAiKi0qLSoiCi0rfSBlbHNlIHsKLSsgIHNldHVwX2tmYWlsICIqLSotKiIg cGFzY2FsLzI2ODU1Ci0rfQotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyU3RyIiAiLiogPSBcXHsn c3RyMCcsICdzdHIxJywgJ3N0cjInLCAnc3RyMycsICdzdHI0JywgJ3N0cjUnLCAnc3RyNicsICdz dHI3JywgJ3N0cjgnLCAnc3RyOScsICdzdHIxMCcsICdzdHIxMScsICdzdHIxMidcXH0iICJQcmlu dCBzdGF0aWMgYXJyYXkgb2Ygc3RyaW5nIgotKwotK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZf Zm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWlsICIqLSotKiIKLSt9Ci0r Z2RiX3Rlc3QgInByaW50IER5bkFyckNoYXIiICIuKiA9ICdhYmNkZWZnaGlqa2xtJyIgIlByaW50 IGR5bmFtaWMgYXJyYXkgb2YgY2hhciIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5w YXNjYWwvYXJyYXlzLnBhcyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGFzY2FsL2FycmF5cy5wYXMKLUBAIC0wLDAgKzEsODIgQEAKLSt7Ci0rIENvcHlyaWdodCAy MDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSt9Ci0rCi0rcHJvZ3JhbSBhcnJheXM7Ci0rCi0reyRtb2RlIG9iamZwY317JGgrfQot KwotK3VzZXMgc3lzdXRpbHM7Ci0rCi0rdHlwZSBUU3RhdEFyckludD0gYXJyYXlbMC4uMTFdIG9m IGludGVnZXI7Ci0rICAgICBURHluQXJySW50PSBhcnJheSBvZiBpbnRlZ2VyOwotKyAgICAgVFN0 YXRBcnJTdHI9IGFycmF5WzAuLjEyXSBvZiBzdHJpbmc7Ci0rICAgICBURHluQXJyU3RyPSBhcnJh eSBvZiBzdHJpbmc7Ci0rICAgICBURHluQXJyQ2hhciA9IGFycmF5IG9mIGNoYXI7Ci0rICAgICBU U3RhdEFyckNoYXIgPSBhcnJheSBbMC4uMTFdIG9mIGNoYXI7Ci0rCi0rICAgICBUU3RhdDJkQXJy SW50ID0gYXJyYXlbMC4uMTEsMC4uNF0gb2YgaW50ZWdlcjsKLSsKLSt2YXIgU3RhdEFyckludDog VFN0YXRBcnJJbnQ7Ci0rICAgIFN0YXRBcnJJbnRfOiBBcnJheVswLi4xMV0gb2YgaW50ZWdlcjsK LSsgICAgRHluQXJySW50OiAgVER5bkFyckludDsKLSsgICAgRHluQXJySW50XzogQXJyYXkgb2Yg aW50ZWdlcjsKLSsgICAgU3RhdEFyclN0cjogVFN0YXRBcnJTdHI7Ci0rICAgIER5bkFyclN0cjog VER5bkFyclN0cjsKLSsgICAgU3RhdEFyckNoYXI6IFRTdGF0QXJyQ2hhcjsKLSsgICAgRHluQXJy Q2hhcjogVER5bkFyckNoYXI7Ci0rCi0rICAgIFN0YXQyZEFyckludDogVFN0YXQyZEFyckludDsK LSsKLSsgICAgczogc3RyaW5nOwotKwotKyAgICBpLGogOiBpbnRlZ2VyOwotKwotK2JlZ2luCi0r ICBmb3IgaSA6PSAwIHRvIDExIGRvCi0rICAgIGJlZ2luCi0rICAgIFN0YXRBcnJJbnRbaV06PSBp KzUwOwotKyAgICBTdGF0QXJySW50X1tpXTo9IGkrNTA7Ci0rICAgIFN0YXRBcnJDaGFyW2ldOj0g Y2hyKG9yZCgnYScpK2kpOwotKyAgICBmb3IgaiA6PSAwIHRvIDQgZG8KLSsgICAgICBTdGF0MmRB cnJJbnRbaSxqXTo9aStqOwotKyAgICBlbmQ7Ci0rICB3cml0ZWxuKFN0YXRBcnJJbnRfWzBdKTsK LSsgIHdyaXRlbG4oU3RhdEFyckludFswXSk7IHsgc2V0IGJyZWFrcG9pbnQgMSBoZXJlIH0KLSsg IHdyaXRlbG4oU3RhdEFyckNoYXJbMF0pOwotKyAgd3JpdGVsbihTdGF0MmRBcnJJbnRbMCwwXSk7 Ci0rCi0rICBzZXRsZW5ndGgoRHluQXJySW50LDEzKTsKLSsgIHNldGxlbmd0aChEeW5BcnJJbnRf LDEzKTsKLSsgIHNldGxlbmd0aChEeW5BcnJTdHIsMTMpOwotKyAgc2V0bGVuZ3RoKER5bkFyckNo YXIsMTMpOwotKyAgZm9yIGkgOj0gMCB0byAxMiBkbwotKyAgICBiZWdpbgotKyAgICBEeW5BcnJJ bnRbaV06PSBpKzUwOwotKyAgICBEeW5BcnJJbnRfW2ldOj0gaSs1MDsKLSsgICAgRHluQXJyQ2hh cltpXTo9IGNocihvcmQoJ2EnKStpKTsKLSsgICAgU3RhdEFyclN0cltpXTo9J3N0cicraW50dG9z dHIoaSk7Ci0rICAgIER5bkFyclN0cltpXTo9J2RzdHInK2ludHRvc3RyKGkpOwotKyAgICBlbmQ7 Ci0rICB3cml0ZWxuKER5bkFyckludF9bMV0pOwotKyAgd3JpdGVsbihEeW5BcnJJbnRbMV0pOwot KyAgd3JpdGVsbihEeW5BcnJTdHJbMV0pOwotKyAgd3JpdGVsbihTdGF0QXJyU3RyWzFdKTsKLSsg IHdyaXRlbG4oRHluQXJyQ2hhclsxXSk7Ci0rCi0rICBzIDo9ICd0ZXN0JyMwJ3N0cmluZyc7Ci0r ICB3cml0ZWxuKHMpOyB7IHNldCBicmVha3BvaW50IDIgaGVyZSB9Ci0rZW5kLgotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCi1AQCAtMjI0LDYgKzIyNCwxMSBAQCBwcm9jIGdkYl91bmxvYWQge30gewotIAkg ICAgc2VuZF9nZGIgInlcbiIgYW5zd2VyCi0gCSAgICBleHBfY29udGludWUKLSAJfQotKwktcmUg IkEgcHJvZ3JhbSBpcyBiZWluZyBkZWJ1Z2dlZCBhbHJlYWR5Li4qQXJlIHlvdSBzdXJlIHlvdSB3 YW50IHRvIGNoYW5nZSB0aGUgZmlsZS4qeSBvciBuLiAkIlwKLSsJICAgIHsgc2VuZF9nZGIgInlc biIKLSsJCXZlcmJvc2UgIlx0XHRVbmxvYWRpbmcgc3ltYm9scyBmb3IgcHJvZ3JhbSBiZWluZyBk ZWJ1Z2dlZCIKLSsJICAgIGV4cF9jb250aW51ZQotKwl9Ci0gCS1yZSAiRGlzY2FyZCBzeW1ib2wg dGFibGUgZnJvbSAuKnkgb3Igbi4qJCIgewotIAkgICAgc2VuZF9nZGIgInlcbiIgYW5zd2VyCi0g CSAgICBleHBfY29udGludWUKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9s aWIvcGFzY2FsLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAotQEAgLTM3 LDYgKzM3LDkgQEAgcHJvYyBwYXNjYWxfaW5pdCB7fSB7Ci0gICAgIGdkYl9wZXJzaXN0ZW50X2ds b2JhbCBwYXNjYWxfY29tcGlsZXJfaXNfZnBjCi0gICAgIGdkYl9wZXJzaXN0ZW50X2dsb2JhbCBn cGNfY29tcGlsZXIKLSAgICAgZ2RiX3BlcnNpc3RlbnRfZ2xvYmFsIGZwY19jb21waWxlcgotKyAg ICBnZGJfcGVyc2lzdGVudF9nbG9iYWwgZnBjdmVyc2lvbl9tYWpvcgotKyAgICBnZGJfcGVyc2lz dGVudF9nbG9iYWwgZnBjdmVyc2lvbl9taW5vcgotKyAgICBnZGJfcGVyc2lzdGVudF9nbG9iYWwg ZnBjdmVyc2lvbl9yZWxlYXNlCi0gICAgIGdsb2JhbCBlbnYKLSAgCi0gICAgIGlmIHsgJHBhc2Nh bF9pbml0X2RvbmUgPT0gMSB9IHsKLUBAIC02NCw2ICs2NywyMCBAQCBwcm9jIHBhc2NhbF9pbml0 IHt9IHsKLSAJICAgIHNldCBwYXNjYWxfY29tcGlsZXJfaXNfZnBjIDEKLSAJICAgIHZlcmJvc2Ug LWxvZyAiRnJlZSBQYXNjYWwgY29tcGlsZXIgZm91bmQiCi0gCX0KLSsKLSsJIyBEZXRlY3QgdGhl IGZwYy12ZXJzaW9uCi0rCWlmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgPT0gMSB9IHsKLSsJ ICAgIHNldCBmcGN2ZXJzaW9uX21ham9yIDEKLSsJICAgIHNldCBmcGN2ZXJzaW9uX21pbm9yIDAK LSsJICAgIHNldCBmcGN2ZXJzaW9uX3JlbGVhc2UgMAotKwkgICAgc2V0IGZwY3ZlcnNpb24gWyBy ZW1vdGVfZXhlYyBob3N0ICRmcGNfY29tcGlsZXIgIi1pViIgXQotKwkgICAgaWYgW3JlZ2V4cCB7 LiooWzAtOV0rKVwuKFswLTldKylcLihbMC05XSspLj99ICRmcGN2ZXJzaW9uXSB7Ci0rICAgICAg ICAgICAgICByZWdzdWIgey4qKFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKS4/XG4/Lj99ICRm cGN2ZXJzaW9uIHtcMX0gZnBjdmVyc2lvbl9tYWpvcgotKyAgICAgICAgICAgICAgcmVnc3ViIHsu KihbMC05XSspXC4oWzAtOV0rKVwuKFswLTldKykuP1xuPy4/fSAkZnBjdmVyc2lvbiB7XDJ9IGZw Y3ZlcnNpb25fbWlub3IKLSsgICAgICAgICAgICAgIHJlZ3N1YiB7LiooWzAtOV0rKVwuKFswLTld KylcLihbMC05XSspLj9cbj8uP30gJGZwY3ZlcnNpb24ge1wzfSBmcGN2ZXJzaW9uX3JlbGVhc2UK LSsJICAgIH0KLSsgICAgICAgICAgICB2ZXJib3NlIC1sb2cgIkZyZWVwYXNjYWwgdmVyc2lvbjog JGZwY3ZlcnNpb25fbWFqb3IuJGZwY3ZlcnNpb25fbWlub3IuJGZwY3ZlcnNpb25fcmVsZWFzZSIK LSsJfQotICAgICB9Ci0gICAgIHNldCBwYXNjYWxfaW5pdF9kb25lIDEKLSB9ICAgCgpkaWZmIC0t Z2l0IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDNkNTlmNGYuLjAwMDAwMDAKLS0tIGEvZ2RiLWFyY2hlci5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVt YWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6 IGdkYi1hcmNoZXIucGF0Y2gKLQotOzsgUHl0aG9uIHBhdGNoZXMgb2Y6IGh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVyCi07Oz1wdXNoCi0KLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVyCi1odHRwOi8vc291cmNld2FyZS5vcmcvZ2Ri L3dpa2kvQXJjaGVyQnJhbmNoTWFuYWdlbWVudAotCi1HSVQgc25hcHNob3Q6Ci1jb21taXQgNzE4 YTE2MThiMmY2OTFhN2Y0MDcyMTNiYjUwZjEwMGFjNTlmOTFjMwotCi10cm9tZXkvcHl0aG9uCi0K LWRpZmYgLS1naXQgYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gYi9nZGIvZGF0YS1k aXJlY3RvcnkvTWFrZWZpbGUuaW4KLS0tLSBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5p bgotKysrIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCi1AQCAtODAsNiArODAsNyBA QCBQWVRIT05fRklMRV9MSVNUID0gXAotIAlnZGIvdW53aW5kZXIucHkgXAotIAlnZGIveG1ldGhv ZC5weSBcCi0gCWdkYi9jb21tYW5kL19faW5pdF9fLnB5IFwKLSsJZ2RiL2NvbW1hbmQvaWdub3Jl X2Vycm9ycy5weSBcCi0gCWdkYi9jb21tYW5kL2V4cGxvcmUucHkgXAotIAlnZGIvY29tbWFuZC9i YWNrdHJhY2UucHkgXAotIAlnZGIvY29tbWFuZC9mcmFtZV9maWx0ZXJzLnB5IFwKLUBAIC05Miw2 ICs5Myw3IEBAIFBZVEhPTl9GSUxFX0xJU1QgPSBcCi0gCWdkYi9mdW5jdGlvbi9hc19zdHJpbmcu cHkgXAotIAlnZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5IFwKLSAJZ2RiL2Z1bmN0aW9uL3N0cmZu cy5weSBcCi0rCWdkYi9mdW5jdGlvbi9pbl9zY29wZS5weSBcCi0gCWdkYi9wcmludGVyL19faW5p dF9fLnB5IFwKLSAJZ2RiL3ByaW50ZXIvYm91bmRfcmVnaXN0ZXJzLnB5Ci0gCi1kaWZmIC0tZ2l0 IGEvZ2RiL2dkYi1nZGIuZ2RiLmluIGIvZ2RiL2dkYi1nZGIuZ2RiLmluCi0tLS0gYS9nZGIvZ2Ri LWdkYi5nZGIuaW4KLSsrKyBiL2dkYi9nZGItZ2RiLmdkYi5pbgotQEAgLTEsNSArMSwxNSBAQAot IGVjaG8gU2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KLSAK LSsjIFNldCB1cCB0aGUgUHl0aG9uIGxpYnJhcnkgYW5kICJyZXF1aXJlIiBjb21tYW5kLgotK3B5 dGhvbgotK2Zyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aAotK2dkYi5kYXRhZGlyID0gYWJzcGF0 aCAoJ0BzcmNkaXJAL3B5dGhvbi9saWInKQotK2dkYi5weXRob25saWJkaXIgPSBnZGIuZGF0YWRp cgotK2dkYi5fX3BhdGhfXyA9IFtnZGIuZGF0YWRpciArICcvZ2RiJ10KLStzeXMucGF0aC5pbnNl cnQoMCwgZ2RiLmRhdGFkaXIpCi0rZW5kCi0rc291cmNlIEBzcmNkaXJAL3B5dGhvbi9saWIvZ2Ri L19faW5pdF9fLnB5Ci0rCi0gaWYgISRnZGJfaW5pdF9kb25lCi0gICBzZXQgdmFyaWFibGUgJGdk Yl9pbml0X2RvbmUgPSAxCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1h bmQvaWdub3JlX2Vycm9ycy5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9l cnJvcnMucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5Ci1AQCAtMCwwICsxLDM3IEBA Ci0rIyBJZ25vcmUgZXJyb3JzIGluIHVzZXIgY29tbWFuZHMuCi0rCi0rIyBDb3B5cmlnaHQgKEMp IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLSsKLStjbGFzcyBJZ25vcmVFcnJvcnNDb21t YW5kIChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIkV4ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdu b3JpbmcgYWxsIGVycm9ycy4KLStPbmx5IG9uZS1saW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQu Ci0rVGhpcyBpcyBwcmltYXJpbHkgdXNlZnVsIGluIHNjcmlwdHMuIiIiCi0rCi0rICAgIGRlZiBf X2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBlciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2Vs ZikuX19pbml0X18gKCJpZ25vcmUtZXJyb3JzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRS4uLgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIu Q09NUExFVEVfQ09NTUFORCkKLSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0 eSk6Ci0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgZ2RiLmV4ZWN1dGUgKGFyZywgZnJvbV90 dHkpCi0rICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgcGFzcwotKwotK0lnbm9yZUVycm9y c0NvbW1hbmQgKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5f c2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIv ZnVuY3Rpb24vaW5fc2NvcGUucHkKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIEluLXNjb3BlIGZ1bmN0 aW9uLgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0r Ci0rY2xhc3MgSW5TY29wZSAoZ2RiLkZ1bmN0aW9uKToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYg YWxsIHRoZSBnaXZlbiB2YXJpYWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBzY29wZS4KLStUYWtlcyBv bmUgYXJndW1lbnQgZm9yIGVhY2ggdmFyaWFibGUgbmFtZSB0byBiZSBjaGVja2VkLiIiIgotKwot KyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKEluU2NvcGUsIHNlbGYp Ll9faW5pdF9fICgiaW5fc2NvcGUiKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCAqdmFycyk6 Ci0rICAgICAgICBpZiBsZW4gKHZhcnMpID09IDA6Ci0rICAgICAgICAgICAgcmFpc2UgKFR5cGVF cnJvciwgImluX3Njb3BlIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpCi0rCi0rICAgICAg ICAjIGdkYi5WYWx1ZSBpc24ndCBoYXNoYWJsZSBzbyBpdCBjYW4ndCBiZSBwdXQgaW4gYSBtYXAu Ci0rICAgICAgICAjIENvbnZlcnQgdG8gc3RyaW5nIGZpcnN0LgotKyAgICAgICAgd2FudGVkID0g c2V0IChtYXAgKGxhbWJkYSB4OiB4LnN0cmluZyAoKSwgdmFycykpCi0rICAgICAgICBmb3VuZCA9 IHNldCAoKQotKyAgICAgICAgYmxvY2sgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkuYmxvY2sgKCkK LSsgICAgICAgIHdoaWxlIGJsb2NrOgotKyAgICAgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6Ci0r ICAgICAgICAgICAgICAgIGlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2NvbnN0YW50Ci0r ICAgICAgICAgICAgICAgICAgICAgIG9yIHN5bS5pc19mdW5jdGlvbiBvciBzeW0uaXNfdmFyaWFi bGUpOgotKyAgICAgICAgICAgICAgICAgICAgaWYgc3ltLm5hbWUgaW4gd2FudGVkOgotKyAgICAg ICAgICAgICAgICAgICAgICAgIGZvdW5kLmFkZCAoc3ltLm5hbWUpCi0rCi0rICAgICAgICAgICAg YmxvY2sgPSBibG9jay5zdXBlcmJsb2NrCi0rCi0rICAgICAgICByZXR1cm4gd2FudGVkID09IGZv dW5kCi0rCi0rSW5TY29wZSAoKQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1mcmFtZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCi0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCi1AQCAtOTUsNiArOTUsOCBAQCBnZGJfdGVz dCAicHl0aG9uIHByaW50ICgncmVzdWx0ID0gJXMnICUgZjAucmVhZF92YXIgKCdhJykpIiAiID0g MSIgInRlc3QgRnJhbWUucgotIAotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgKCdyZXN1bHQgPSAl cycgJSAoZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09IGYxKSkiICIgPSBUcnVlIiAidGVzdCBnZGIu c2VsZWN0ZWRfZnJhbWUiCi0gCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAoJ3Jlc3VsdCA9ICVz JyAlIChmMC5ibG9jayAoKSkpIiAiPGdkYi5CbG9jayBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpc XVxdKz4iICJ0ZXN0IEZyYW1lLmJsb2NrIgotKwotICMgQ2FuIHJlYWQgU1AgcmVnaXN0ZXIuCi0g Z2RiX3Rlc3QgInB5dGhvbiBwcmludCAoJ3Jlc3VsdCA9ICVzJyAlIChnZGIuc2VsZWN0ZWRfZnJh bWUgKCkucmVhZF9yZWdpc3RlciAoJ3NwJykgPT0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnXCRzcCcp KSkiIFwKLSAgICIgPSBUcnVlIiBcCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAK LS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLUBAIC00MTksNiArNDE5LDE1IEBAIHBy b2MgdGVzdF92YWx1ZV9hZnRlcl9kZWF0aCB7fSB7Ci0gICAgICJwcmludCB2YWx1ZSdzIHR5cGUi Ci0gfQotIAotKyMgUmVncmVzc2lvbiB0ZXN0IGZvciBhIGNhc3QgZmFpbHVyZS4gIFRoZSBidWcg d2FzIHRoYXQgaWYgd2UgY2FzdCBhCi0rIyB2YWx1ZSB0byBpdHMgb3duIHR5cGUsIGdkYiBjb3Vs ZCBjcmFzaC4gIFRoaXMgaGFwcGVuZWQgYmVjYXVzZSB3ZQotKyMgY291bGQgZW5kIHVwIGRvdWJs ZS1mcmVlaW5nIGEgc3RydWN0IHZhbHVlLgotK3Byb2MgdGVzdF9jYXN0X3JlZ3Jlc3Npb24ge30g ewotKyAgZ2RiX3Rlc3QgInB5dGhvbiB2ID0gZ2RiLlZhbHVlKDUpIiAiIiAiY3JlYXRlIHZhbHVl IGZvciBjYXN0IHRlc3QiCi0rICBnZGJfdGVzdCAicHl0aG9uIHYgPSB2LmNhc3Qodi50eXBlKSIg IiIgImNhc3QgdmFsdWUgZm9yIGNhc3QgdGVzdCIKLSsgIGdkYl90ZXN0ICJweXRob24gcHJpbnQo dikiICI1IiAicHJpbnQgdmFsdWUgZm9yIGNhc3QgdGVzdCIKLSt9Ci0rCi0gIyBSZWdyZXNzaW9u IHRlc3QgZm9yIGludmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0 Ci0gIyB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBh bGxvd2luZyBhCi0gIyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtNjA2LDYg KzYxNSw3IEBAIHRlc3RfdmFsdWVfaW5faW5mZXJpb3IKLSB0ZXN0X3ZhbHVlX2Zyb21fYnVmZmVy Ci0gdGVzdF9pbmZlcmlvcl9mdW5jdGlvbl9jYWxsCi0gdGVzdF92YWx1ZV9hZnRlcl9kZWF0aAot K3Rlc3RfY2FzdF9yZWdyZXNzaW9uCi0gCi0gIyBUZXN0IGVpdGhlciBDIG9yIEMrKyB2YWx1ZXMu IAotIAoKZGlmZiAtLWdpdCBhL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2ggYi9n ZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA4ODMwYmUzLi4wMDAwMDAwCi0tLSBhL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVv ZjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNTYgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFU Q0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlZG9yYSBHREIgcGF0Y2hlcyA8 aW52YWxpZEBlbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3OjUwICswMjAw Ci1TdWJqZWN0OiBnZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCi0KLTs7IFByaW50 IHJlYXNvbnMgZm9yIGZhaWxlZCBhdHRhY2gvc3Bhd24gaW5jbC4gU0VMaW51eCBkZW55X3B0cmFj ZSAoQlogNzg2ODc4KS4KLTs7PXB1c2gramFuCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEyLTAzL21zZzAwMTcxLmh0bWwKLQotSGksCi0KLWFuZCBoZXJlIGlzIHRo ZSBsYXN0IGJpdCBmb3IgbmV3IFNFTGludXggJ2RlbnlfcHRyYWNlJzoKLQlodHRwczovL2J1Z3pp bGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTc4Njg3OAotCi1BcyBldmVuIFBUUkFDRV9U UkFDRU1FIGZhaWxzIGluIHN1Y2ggY2FzZSBpdCBuZWVkcyB0byBpbnN0YWxsIGhvb2sgZm9yIGV2 ZW4KLXRoYXQgZXZlbnQuCi0KLVRoYW5rcywKLUphbgotCi1nZGIvCi0yMDEyLTAzLTA2ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGNvbW1vbi9saW51 eC1wdHJhY2UuYyBbSEFWRV9TRUxJTlVYX1NFTElOVVhfSF06IGluY2x1ZGUKLQlzZWxpbnV4L3Nl bGludXguaC4KLQkobGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncyk6IENhbGwgbGludXhfcHRy YWNlX2NyZWF0ZV93YXJuaW5ncy4KLQkobGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyk6IE5l dy4KLQkqIGNvbW1vbi9saW51eC1wdHJhY2UuaCAobGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5n cyk6IE5ldyBkZWNsYXJhdGlvbi4KLQkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLQkqIGNvbmZp Z3VyZTogUmVnZW5lcmF0ZS4KLQkqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgc2VsaW51eC9zZWxpbnV4 LmggYW5kIHRoZSBzZWxpbnV4IGxpYnJhcnkuCi0JKiBpbmYtcHRyYWNlLmMgKGluZl9wdHJhY2Vf bWUpOiBDaGVjayB0aGUgcHRyYWNlIHJlc3VsdC4KLQkqIGxpbnV4LW5hdC5jIChsaW51eF9uYXRf Y3JlYXRlX2luZmVyaW9yKTogTmV3IHZhcmlhYmxlIGV4LiAgV3JhcAotCXRvX2NyZWF0ZV9pbmZl cmlvciBpbnRvIFRSWV9DQVRDSCwgY2FsbCBsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzLgot Ci1nZGIvZ2Ric2VydmVyLwotCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotCSogY29uZmlndXJl OiBSZWdlbmVyYXRlLgotCSogY29uZmlndXJlLmFjOiBDaGVjayBzZWxpbnV4L3NlbGludXguaCBh bmQgdGhlIHNlbGludXggbGlicmFyeS4KLQkqIGxpbnV4LWxvdy5jIChsaW51eF90cmFjZW1lKTog TmV3IGZ1bmN0aW9uLgotCShsaW51eF9jcmVhdGVfaW5mZXJpb3IsIGxpbnV4X3RyYWNlZm9ya19j aGlsZCk6IENhbGwgaXQgaW5zdGVhZCBvZgotCWRpcmVjdCBwdHJhY2UuCi0KLWRpZmYgLS1naXQg YS9nZGIvY29uZmlnLmluIGIvZ2RiL2NvbmZpZy5pbgotLS0tIGEvZ2RiL2NvbmZpZy5pbgotKysr IGIvZ2RiL2NvbmZpZy5pbgotQEAgLTI1Myw2ICsyNTMsOSBAQAotIC8qIERlZmluZSBpZiBsaWJy cG0gbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwotICN1bmRlZiBIQVZFX0xJQlJQTQotIAotKy8q IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsaW51eCcgbGlicmFyeSAoLWxzZWxpbnV4 KS4gKi8KLSsjdW5kZWYgSEFWRV9MSUJTRUxJTlVYCi0rCi0gLyogRGVmaW5lIHRvIDEgaWYgeW91 IGhhdmUgdGhlIDxsaWJ1bndpbmQtaWE2NC5oPiBoZWFkZXIgZmlsZS4gKi8KLSAjdW5kZWYgSEFW RV9MSUJVTldJTkRfSUE2NF9ICi0gCi1AQCAtMzg4LDYgKzM5MSw5IEBACi0gLyogRGVmaW5lIHRv IDEgaWYgeW91IGhhdmUgdGhlIGBzY21fbmV3X3Ntb2InIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBI QVZFX1NDTV9ORVdfU01PQgotIAotKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2Vs aW51eC9zZWxpbnV4Lmg+IGhlYWRlciBmaWxlLiAqLwotKyN1bmRlZiBIQVZFX1NFTElOVVhfU0VM SU5VWF9ICi0rCi0gLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRsb2NhbGUnIGZ1 bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1NFVExPQ0FMRQotIAotZGlmZiAtLWdpdCBhL2dkYi9j b25maWd1cmUgYi9nZGIvY29uZmlndXJlCi0tLS0gYS9nZGIvY29uZmlndXJlCi0rKysgYi9nZGIv Y29uZmlndXJlCi1AQCAtMTY4NjEsNiArMTY4NjEsNjQgQEAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgotIF9BQ0VPRgotIAotIAotK2ZvciBhY19oZWFkZXIgaW4gc2VsaW51eC9zZWxpbnV4LmgK LStkbyA6Ci0rICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic2VsaW51 eC9zZWxpbnV4LmgiICJhY19jdl9oZWFkZXJfc2VsaW51eF9zZWxpbnV4X2giICIkYWNfaW5jbHVk ZXNfZGVmYXVsdCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIg PSB4IiJ5ZXM7IHRoZW4gOgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUg SEFWRV9TRUxJTlVYX1NFTElOVVhfSCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsKLStkb25lCi0rCi0r eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2Vj dXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eCIgPiY1Ci0rJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yIHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSBpbiAtbHNlbGludXguLi4g IiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29s ZWFuX2FjdGl2ZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNgotK2Vsc2UKLSsgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLStMSUJTPSItbHNl bGludXggICRMSUJTIgotK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0rLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRl cm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0rICAgVXNlIGNoYXIgYmVjYXVzZSBp bnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0rICAgYnVpbHRpbiBhbmQg dGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSsjaWZk ZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiCi0rI2VuZGlmCi0rY2hhciBzZWN1cml0eV9nZXRf Ym9vbGVhbl9hY3RpdmUgKCk7Ci0raW50Ci0rbWFpbiAoKQotK3sKLStyZXR1cm4gc2VjdXJpdHlf Z2V0X2Jvb2xlYW5fYWN0aXZlICgpOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgot K2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X2xpYl9zZWxp bnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZT15ZXMKLStlbHNlCi0rICBhY19jdl9saWJf c2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmU9bm8KLStmaQotK3JtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVl eHQgY29uZnRlc3QuJGFjX2V4dAotK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLStmaQot K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf bGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjUKLSskYXNfZWNobyAi JGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPiY2OyB9Ci0r aWYgdGVzdCAieCRhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUi ID0geCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5l IEhBVkVfTElCU0VMSU5VWCAxCi0rX0FDRU9GCi0rCi0rICBMSUJTPSItbHNlbGludXggJExJQlMi Ci0rCi0rZmkKLSsKLSsKLSAKLSAjIFN1cHBvcnQgZm9yIC0td2l0aC1zeXNyb290IGlzIGEgY29w eSBvZiBHREJfQUNfV0lUSF9ESVIsCi0gIyBleGNlcHQgdGhhdCB0aGUgYXJndW1lbnQgdG8gLS13 aXRoLXN5c3Jvb3QgaXMgb3B0aW9uYWwuCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBi L2dkYi9jb25maWd1cmUuYWMKLS0tLSBhL2dkYi9jb25maWd1cmUuYWMKLSsrKyBiL2dkYi9jb25m aWd1cmUuYWMKLUBAIC0xOTAwLDYgKzE5MDAsMTAgQEAgY2FzZSAkaG9zdF9vcyBpbgotIGVzYWMK LSBBQ19ERUZJTkVfVU5RVU9URUQoR0RCSU5JVCwiJGdkYmluaXQiLFtUaGUgLmdkYmluaXQgZmls ZW5hbWUuXSkKLSAKLStkbmwgQ2hlY2sgc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGF2YWls YWJpbGl0eS4KLStBQ19DSEVDS19IRUFERVJTKHNlbGludXgvc2VsaW51eC5oKQotK0FDX0NIRUNL X0xJQihzZWxpbnV4LCBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUpCi0rCi0gZG5sIEhhbmRs ZSBvcHRpb25hbCBmZWF0dXJlcyB0aGF0IGNhbiBiZSBlbmFibGVkLgotIAotICMgU3VwcG9ydCBm b3IgLS13aXRoLXN5c3Jvb3QgaXMgYSBjb3B5IG9mIEdEQl9BQ19XSVRIX0RJUiwKLWRpZmYgLS1n aXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLS0tLSBhL2dkYi9saW51eC1u YXQuYwotKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtMTEwMyw3ICsxMTAzLDE2IEBAIGxpbnV4 X25hdF90YXJnZXQ6OmNyZWF0ZV9pbmZlcmlvciAoY29uc3QgY2hhciAqZXhlY19maWxlLAotICAg LyogTWFrZSBzdXJlIHdlIHJlcG9ydCBhbGwgc2lnbmFscyBkdXJpbmcgc3RhcnR1cC4gICovCi0g ICBwYXNzX3NpZ25hbHMgKHt9KTsKLSAKLS0gIGluZl9wdHJhY2VfdGFyZ2V0OjpjcmVhdGVfaW5m ZXJpb3IgKGV4ZWNfZmlsZSwgYWxsYXJncywgZW52LCBmcm9tX3R0eSk7Ci0rICB0cnkKLSsgICAg ewotKyAgICAgIGluZl9wdHJhY2VfdGFyZ2V0OjpjcmVhdGVfaW5mZXJpb3IgKGV4ZWNfZmlsZSwg YWxsYXJncywgZW52LCBmcm9tX3R0eSk7Ci0rICAgIH0KLSsgIGNhdGNoIChjb25zdCBnZGJfZXhj ZXB0aW9uX2Vycm9yICZleCkKLSsgICAgewotKyAgICAgIHN0ZDo6c3RyaW5nIHJlc3VsdCA9ICBs aW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzICgpOwotKwotKyAgICAgIHRocm93X2Vycm9yIChl eC5lcnJvciwgIiVzJXMiLCByZXN1bHQuY19zdHIgKCksIGV4Lm1lc3NhZ2UtPmNfc3RyICgpKTsK LSsgICAgfQotIH0KLSAKLSAvKiBDYWxsYmFjayBmb3IgbGludXhfcHJvY19hdHRhY2hfdGdpZF90 aHJlYWRzLiAgQXR0YWNoIHRvIFBUSUQgaWYgbm90Ci1kaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51 eC1wdHJhY2UuYyBiL2dkYi9uYXQvbGludXgtcHRyYWNlLmMKLS0tLSBhL2dkYi9uYXQvbGludXgt cHRyYWNlLmMKLSsrKyBiL2dkYi9uYXQvbGludXgtcHRyYWNlLmMKLUBAIC0yNSw2ICsyNSwxMCBA QAotICNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci0gI2VuZGlmCi0gCi0rI2lmZGVmIEhBVkVfU0VM SU5VWF9TRUxJTlVYX0gKLSsjIGluY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgotKyNlbmRpZiAv KiBIQVZFX1NFTElOVVhfU0VMSU5VWF9IICovCi0rCi0gLyogU3RvcmVzIHRoZSBwdHJhY2Ugb3B0 aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsLgotICAgIEEgdmFsdWUgb2YgLTEg bWVhbnMgd2UgZGlkIG5vdCBjaGVjayBmb3IgZmVhdHVyZXMgeWV0LiAgQSB2YWx1ZQotICAgIG9m IDAgbWVhbnMgdGhlcmUgYXJlIG5vIHN1cHBvcnRlZCBmZWF0dXJlcy4gICovCi1AQCAtNTAsNiAr NTQsOCBAQCBsaW51eF9wdHJhY2VfYXR0YWNoX2ZhaWxfcmVhc29uIChwaWRfdCBwaWQpCi0gCQkg ICAgICAidGVybWluYXRlZCIpLAotIAkJICAgIChpbnQpIHBpZCk7Ci0gCi0rICByZXN1bHQgKz0g bGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoKTsKLSsKLSAgIHJldHVybiByZXN1bHQ7Ci0g fQotIAotQEAgLTU4Niw2ICs1OTIsMjUgQEAgbGludXhfcHRyYWNlX2luaXRfd2FybmluZ3MgKHZv aWQpCi0gICBsaW51eF9wdHJhY2VfdGVzdF9yZXRfdG9fbnggKCk7Ci0gfQotIAotKy8qIFByaW50 IGFsbCBwb3NzaWJsZSByZWFzb25zIHdlIGNvdWxkIGZhaWwgdG8gY3JlYXRlIGEgdHJhY2VkIHBy b2Nlc3MuICAqLwotKwotK3N0ZDo6c3RyaW5nCi0rbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5n cyAoKQotK3sKLSsgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSsKLSsjaWZkZWYgSEFWRV9MSUJTRUxJ TlVYCi0rICAvKiAtMSBpcyByZXR1cm5lZCBmb3IgZXJyb3JzLCAwIGlmIGl0IGhhcyBubyBlZmZl Y3QsIDEgaWYgUFRSQUNFX0FUVEFDSCBpcwotKyAgICAgZm9yYmlkZGVuLiAgKi8KLSsgIGlmIChz ZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCJkZW55X3B0cmFjZSIpID09IDEpCi0rICAgIHN0 cmluZ19hcHBlbmRmIChyZXN1bHQsCi0rCQkgICAgXygidGhlIFNFTGludXggYm9vbGVhbiAnZGVu eV9wdHJhY2UnIGlzIGVuYWJsZWQsICIKLSsJCSAgICAgICJ5b3UgY2FuIGRpc2FibGUgdGhpcyBw cm9jZXNzIGF0dGFjaCBwcm90ZWN0aW9uIGJ5OiAiCi0rCQkgICAgICAiKGdkYikgc2hlbGwgc3Vk byBzZXRzZWJvb2wgZGVueV9wdHJhY2U9MFxuIikpOwotKyNlbmRpZiAvKiBIQVZFX0xJQlNFTElO VVggKi8KLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotIC8qIEV4dHJhY3QgZXh0ZW5kZWQgcHRy YWNlIGV2ZW50IGZyb20gd2FpdCBzdGF0dXMuICAqLwotIAotIGludAotZGlmZiAtLWdpdCBhL2dk Yi9uYXQvbGludXgtcHRyYWNlLmggYi9nZGIvbmF0L2xpbnV4LXB0cmFjZS5oCi0tLS0gYS9nZGIv bmF0L2xpbnV4LXB0cmFjZS5oCi0rKysgYi9nZGIvbmF0L2xpbnV4LXB0cmFjZS5oCi1AQCAtMTg0 LDYgKzE4NCw3IEBAIGV4dGVybiBzdGQ6OnN0cmluZyBsaW51eF9wdHJhY2VfYXR0YWNoX2ZhaWxf cmVhc29uIChwaWRfdCBwaWQpOwotIGV4dGVybiBzdGQ6OnN0cmluZyBsaW51eF9wdHJhY2VfYXR0 YWNoX2ZhaWxfcmVhc29uX3N0cmluZyAocHRpZF90IHB0aWQsIGludCBlcnIpOwotIAotIGV4dGVy biB2b2lkIGxpbnV4X3B0cmFjZV9pbml0X3dhcm5pbmdzICh2b2lkKTsKLStleHRlcm4gc3RkOjpz dHJpbmcgbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoKTsKLSBleHRlcm4gdm9pZCBsaW51 eF9jaGVja19wdHJhY2VfZmVhdHVyZXMgKHZvaWQpOwotIGV4dGVybiB2b2lkIGxpbnV4X2VuYWJs ZV9ldmVudF9yZXBvcnRpbmcgKHBpZF90IHBpZCwgaW50IGF0dGFjaGVkKTsKLSBleHRlcm4gdm9p ZCBsaW51eF9kaXNhYmxlX2V2ZW50X3JlcG9ydGluZyAocGlkX3QgcGlkKTsKLWRpZmYgLS1naXQg YS9nZGJzZXJ2ZXIvY29uZmlnLmluIGIvZ2Ric2VydmVyL2NvbmZpZy5pbgotLS0tIGEvZ2Ric2Vy dmVyL2NvbmZpZy5pbgotKysrIGIvZ2Ric2VydmVyL2NvbmZpZy5pbgotQEAgLTE0Myw2ICsxNDMs OSBAQAotIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaXB0IGxpYnJhcnkuICovCi0gI3VuZGVm IEhBVkVfTElCSVBUCi0gCi0rLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxpbnV4 JyBsaWJyYXJ5ICgtbHNlbGludXgpLiAqLwotKyN1bmRlZiBIQVZFX0xJQlNFTElOVVgKLSsKLSAv KiBEZWZpbmUgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyBicmFuY2ggdHJhY2luZy4gKi8KLSAjdW5k ZWYgSEFWRV9MSU5VWF9CVFJBQ0UKLSAKLUBAIC0yNDksNiArMjUyLDkgQEAKLSAvKiBEZWZpbmUg dG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNicmsnIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1NC UksKLSAKLSsvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNlbGludXgvc2VsaW51eC5o PiBoZWFkZXIgZmlsZS4gKi8KLSsjdW5kZWYgSEFWRV9TRUxJTlVYX1NFTElOVVhfSAotKwotIC8q IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0bnMnIGZ1bmN0aW9uLiAqLwotICN1bmRl ZiBIQVZFX1NFVE5TCi0gCi1kaWZmIC0tZ2l0IGEvZ2Ric2VydmVyL2NvbmZpZ3VyZSBiL2dkYnNl cnZlci9jb25maWd1cmUKLS0tLSBhL2dkYnNlcnZlci9jb25maWd1cmUKLSsrKyBiL2dkYnNlcnZl ci9jb25maWd1cmUKLUBAIC0xMDY4Myw2ICsxMDY4Myw2NCBAQCBpZiAkd2FudF9pcGEgOyB0aGVu Ci0gICAgZmkKLSBmaQotIAotK2ZvciBhY19oZWFkZXIgaW4gc2VsaW51eC9zZWxpbnV4LmgKLStk byA6Ci0rICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic2VsaW51eC9z ZWxpbnV4LmgiICJhY19jdl9oZWFkZXJfc2VsaW51eF9zZWxpbnV4X2giICIkYWNfaW5jbHVkZXNf ZGVmYXVsdCIKLStpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGludXhfaCIgPSB4 IiJ5ZXM7IHRoZW4gOgotKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgSEFW RV9TRUxJTlVYX1NFTElOVVhfSCAxCi0rX0FDRU9GCi0rCi0rZmkKLSsKLStkb25lCi0rCi0reyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VjdXJp dHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hl Y2tpbmcgZm9yIHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSBpbiAtbHNlbGludXguLi4gIiA+ JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFu X2FjdGl2ZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4m NgotK2Vsc2UKLSsgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKLStMSUJTPSItbHNlbGlu dXggICRMSUJTIgotK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK LSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0rLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5h bCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCi0rICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQg bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0rICAgYnVpbHRpbiBhbmQgdGhl biBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KLSsjaWZkZWYg X19jcGx1c3BsdXMKLStleHRlcm4gIkMiCi0rI2VuZGlmCi0rY2hhciBzZWN1cml0eV9nZXRfYm9v bGVhbl9hY3RpdmUgKCk7Ci0raW50Ci0rbWFpbiAoKQotK3sKLStyZXR1cm4gc2VjdXJpdHlfZ2V0 X2Jvb2xlYW5fYWN0aXZlICgpOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lm IGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGFjX2N2X2xpYl9zZWxpbnV4 X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZT15ZXMKLStlbHNlCi0rICBhY19jdl9saWJfc2Vs aW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmU9bm8KLStmaQotK3JtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQg Y29uZnRlc3QuJGFjX2V4dAotK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKLStmaQotK3sg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGli X3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjUKLSskYXNfZWNobyAiJGFj X2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPiY2OyB9Ci0raWYg dGVzdCAieCRhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUiID0g eCIieWVzOyB0aGVuIDoKLSsgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEhB VkVfTElCU0VMSU5VWCAxCi0rX0FDRU9GCi0rCi0rICBMSUJTPSItbHNlbGludXggJExJQlMiCi0r Ci0rZmkKLSsKLSsKLSAKLSAKLSAKLWRpZmYgLS1naXQgYS9nZGJzZXJ2ZXIvY29uZmlndXJlLmFj IGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwotLS0tIGEvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwot KysrIGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwotQEAgLTQwMSw2ICs0MDEsMTAgQEAgaWYgJHdh bnRfaXBhIDsgdGhlbgotICAgIGZpCi0gZmkKLSAKLStkbmwgQ2hlY2sgc2VjdXJpdHlfZ2V0X2Jv b2xlYW5fYWN0aXZlIGF2YWlsYWJpbGl0eS4KLStBQ19DSEVDS19IRUFERVJTKHNlbGludXgvc2Vs aW51eC5oKQotK0FDX0NIRUNLX0xJQihzZWxpbnV4LCBzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3Rp dmUpCi0rCi0gQUNfU1VCU1QoR0RCU0VSVkVSX0RFUEZJTEVTKQotIEFDX1NVQlNUKEdEQlNFUlZF Ul9MSUJTKQotIEFDX1NVQlNUKHNydl94bWxidWlsdGluKQotZGlmZiAtLWdpdCBhL2dkYnNlcnZl ci9saW51eC1sb3cuY2MgYi9nZGJzZXJ2ZXIvbGludXgtbG93LmNjCi0tLS0gYS9nZGJzZXJ2ZXIv bGludXgtbG93LmNjCi0rKysgYi9nZGJzZXJ2ZXIvbGludXgtbG93LmNjCi1AQCAtOTMyLDcgKzkz MiwxNiBAQCBsaW51eF9wdHJhY2VfZnVuICgpCi0gewotICAgaWYgKHB0cmFjZSAoUFRSQUNFX1RS QUNFTUUsIDAsIChQVFJBQ0VfVFlQRV9BUkczKSAwLAotIAkgICAgICAoUFRSQUNFX1RZUEVfQVJH NCkgMCkgPCAwKQotLSAgICB0cmFjZV9zdGFydF9lcnJvcl93aXRoX25hbWUgKCJwdHJhY2UiKTsK LSsgICAgewotKyAgICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87Ci0rCi0rICAgICAgc3RkOjpz dHJpbmcgbXNnIChsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzICgpKTsKLSsKLSsgICAgICBt c2cgKz0gXygiQ2Fubm90IHRyYWNlIGNyZWF0ZWQgcHJvY2VzcyIpOwotKwotKyAgICAgIGVycm5v ID0gc2F2ZV9lcnJubzsKLSsgICAgICB0cmFjZV9zdGFydF9lcnJvcl93aXRoX25hbWUgKG1zZy5j X3N0ciAoKSk7Ci0rICAgIH0KLSAKLSAgIGlmIChzZXRwZ2lkICgwLCAwKSA8IDApCi0gICAgIHRy YWNlX3N0YXJ0X2Vycm9yX3dpdGhfbmFtZSAoInNldHBnaWQiKTsKCmRpZmYgLS1naXQgYS9nZGIt YnRyb2J1c3QucGF0Y2ggYi9nZGItYnRyb2J1c3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGM3ZWQyMWEuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ0cm9idXN0LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlZG9yYSBHREIgcGF0Y2hlcyA8aW52YWxpZEBlbWFpbC5j b20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3OjUwICswMjAwCi1TdWJqZWN0OiBnZGIt YnRyb2J1c3QucGF0Y2gKLQotOzsgQ29udGludWUgYmFja3RyYWNlIGV2ZW4gaWYgYSBmcmFtZSBm aWx0ZXIgdGhyb3dzIGFuIGV4Y2VwdGlvbiAoUGhpbCBNdWxkb29uKS4KLTs7PXB1c2gKLQotVGhp cyBzaG91bGQgZml4IHRoZSBlcnJvciAgd2l0aCBnbGliLiAgQW4gZXJyb3IgbWVzc2FnZSB3aWxs IHN0aWxsIGJlCi1wcmludGVkLCBidXQgYSBkZWZhdWx0IGJhY2t0cmFjZSB3aWxsIG9jY3VyIGlu IHRoaXMgY2FzZS4KLQotLS0KLQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktZnJhbWVmaWx0 ZXIuYyBiL2dkYi9weXRob24vcHktZnJhbWVmaWx0ZXIuYwotLS0tIGEvZ2RiL3B5dGhvbi9weS1m cmFtZWZpbHRlci5jCi0rKysgYi9nZGIvcHl0aG9uL3B5LWZyYW1lZmlsdGVyLmMKLUBAIC0xMjA0 LDYgKzEyMDQsNyBAQCBnZGJweV9hcHBseV9mcmFtZV9maWx0ZXIgKGNvbnN0IHN0cnVjdCBleHRl bnNpb25fbGFuZ3VhZ2VfZGVmbiAqZXh0bGFuZywKLSAJCQkJICAgICAgIGh0YWJfZXFfcG9pbnRl ciwKLSAJCQkJICAgICAgIE5VTEwpKTsKLSAKLSsgIGludCBjb3VudF9wcmludGVkID0gMDsKLSAg IHdoaWxlICh0cnVlKQotICAgICB7Ci0gICAgICAgZ2RicHlfcmVmPD4gaXRlbSAoUHlJdGVyX05l eHQgKGl0ZXJhYmxlLmdldCAoKSkpOwotQEAgLTEyMTIsOCArMTIxMyw4IEBAIGdkYnB5X2FwcGx5 X2ZyYW1lX2ZpbHRlciAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpleHRs YW5nLAotIAl7Ci0gCSAgaWYgKFB5RXJyX09jY3VycmVkICgpKQotIAkgICAgewotLQkgICAgICBn ZGJweV9wcmludF9zdGFja19vcl9xdWl0ICgpOwotLQkgICAgICByZXR1cm4gRVhUX0xBTkdfQlRf RVJST1I7Ci0rCSAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwotKwkgICAgICByZXR1cm4gY291 bnRfcHJpbnRlZCA+IDAgPyBFWFRfTEFOR19CVF9FUlJPUiA6IEVYVF9MQU5HX0JUX05PX0ZJTFRF UlM7Ci0gCSAgICB9Ci0gCSAgYnJlYWs7Ci0gCX0KLUBAIC0xMjQ1LDcgKzEyNDYsOCBAQCBnZGJw eV9hcHBseV9mcmFtZV9maWx0ZXIgKGNvbnN0IHN0cnVjdCBleHRlbnNpb25fbGFuZ3VhZ2VfZGVm biAqZXh0bGFuZywKLSAgICAgICAvKiBEbyBub3QgZXhpdCBvbiBlcnJvciBwcmludGluZyBhIHNp bmdsZSBmcmFtZS4gIFByaW50IHRoZQotIAkgZXJyb3IgYW5kIGNvbnRpbnVlIHdpdGggb3RoZXIg ZnJhbWVzLiAgKi8KLSAgICAgICBpZiAoc3VjY2VzcyA9PSBFWFRfTEFOR19CVF9FUlJPUikKLS0J Z2RicHlfcHJpbnRfc3RhY2tfb3JfcXVpdCAoKTsKLSsJZ2RicHlfcHJpbnRfc3RhY2sgKCk7Ci0r ICAgICAgY291bnRfcHJpbnRlZCsrOwotICAgICB9Ci0gCi0gICByZXR1cm4gc3VjY2VzczsKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXIuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVyLmV4cAotLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVyLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVyLmV4cAotQEAgLTI3Nyw5ICsyNzcsMjAgQEAgZ2Ri X3Rlc3RfbXVsdGlwbGUgImJ0IDEiICR0ZXN0IHsKLSAjIE5vdyB2ZXJpZnkgdGhhdCB3ZSBjYW4g c2VlIGEgcXVpdC4KLSBnZGJfdGVzdF9ub19vdXRwdXQgInB5dGhvbiBuYW1lX2Vycm9yID0gS2V5 Ym9hcmRJbnRlcnJ1cHQiIFwKLSAgICAgIkNoYW5nZSBFcnJvckZpbHRlciB0byB0aHJvdyBLZXli b2FyZEludGVycnVwdCIKLS1nZGJfdGVzdCAiYnQgMSIgIlF1aXQiICJidCAxIHdpdGggS2V5Ym9h cmRJbnRlcnJ1cHQiCi0tCi0tCi0rc2V0IHJlMSBbbXVsdGlfbGluZSBcCi0rCSAgICAgIlB5dGhv biBFeGNlcHRpb24gPGNsYXNzICdLZXlib2FyZEludGVycnVwdCc+IHdob29wczogIiBcCi0rCSAg ICAgIlxcKE1vcmUgc3RhY2sgZnJhbWVzIGZvbGxvd1wuXC5cLlxcKSJdCi0rc2V0IHJlMiBbbXVs dGlfbGluZSBcCi0rCSAgICAgIlB5dGhvbiBFeGNlcHRpb24gPHR5cGUgJ2V4Y2VwdGlvbnMuS2V5 Ym9hcmRJbnRlcnJ1cHQnPiB3aG9vcHM6ICIgXAotKwkgICAgICJcXChNb3JlIHN0YWNrIGZyYW1l cyBmb2xsb3dcLlwuXC5cXCkiXQotK2dkYl90ZXN0X211bHRpcGxlICJidCAxIiAiIiB7Ci0rICAg IC1yZSAtd3JhcCAkcmUxIHsKLSsJcGFzcyAkZ2RiX3Rlc3RfbmFtZQotKyAgICB9Ci0rICAgIC1y ZSAtd3JhcCAkcmUyIHsKLSsJcGFzcyAkZ2RiX3Rlc3RfbmFtZQotKyAgICB9Ci0rfQotICMgVGVz dCB3aXRoIG5vIGRlYnVnaW5mbwotIAotICMgV2UgY2Fubm90IHVzZSBwcmVwYXJlX2Zvcl90ZXN0 aW5nIGFzIHdlIGhhdmUgdG8gc2V0IHRoZSBzYWZlLXBhdGNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6 MTIxOTc0Ny1hdHRhY2gta2lsbHMucGF0Y2ggYi9nZGItYnoxMjE5NzQ3LWF0dGFjaC1raWxscy5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIzYTM0OS4uMDAwMDAwMAotLS0g YS9nZGItYnoxMjE5NzQ3LWF0dGFjaC1raWxscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3 OCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwg MjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi1iejEyMTk3NDctYXR0YWNo LWtpbGxzLnBhdGNoCi0KLTs7IE5ldmVyIGtpbGwgUElEIG9uOiBnZGIgZXhlYyBQSUQgKEphbiBL cmF0b2NodmlsLCBSSCBCWiAxMjE5NzQ3KS4KLTs7PXB1c2gramFuCi0KLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE1LTEwL21zZzAwMzAxLmh0bWwKLQotSGksCi0KLWlu IHNvbWUgY2FzZXMgd2l0aCBkZWxldGVkIG1haW4gZXhlY3V0YWJsZSBHREIgd2lsbCB3YW50IHRv IGtpbGwgdGhlIGluZmVyaW9yLgotCi0kIGNwIC9iaW4vc2xlZXAgL3RtcC9zbGVlcDsvdG1wL3Ns ZWVwIDFoJnA9JCEKLSQgcm0gL3RtcC9zbGVlcAotJCBnZGIgL3RtcC9zbGVlcCAkcAotR05VIGdk YiAoR0RCKSA3LjEwLjUwLjIwMTUxMDE2LWN2cwotL3RtcC9zbGVlcDogTm8gc3VjaCBmaWxlIG9y IGRpcmVjdG9yeS4KLUF0dGFjaGluZyB0byBwcm9jZXNzIDk2OTQKLS90bXAvc2xlZXAgKGRlbGV0 ZWQpOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LgotQSBwcm9ncmFtIGlzIGJlaW5nIGRlYnVn Z2VkIGFscmVhZHkuICBLaWxsIGl0PyAoeSBvciBuKSBfCi0KLVRoZSBmaXJzdCBhdHRhY2htZW50 IG9mICIvdG1wL3NsZWVwIiBjb21tYW5kbGluZSBhcmd1bWVudCBlcnJvcnMgYXQ6Ci0KLTI2NyAg ICAgICAgICAgICAgIGlmIChzY3JhdGNoX2NoYW4gPCAwKQotMjY4ICAgICAgICAgICAgICAgICBw ZXJyb3Jfd2l0aF9uYW1lIChmaWxlbmFtZSk7Ci0xMDUxICAgICAgICAgIGlmIChjYXRjaF9jb21t YW5kX2Vycm9yc19jb25zdCAoZXhlY19maWxlX2F0dGFjaCwgZXhlY2FyZywKLTEwNTIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhYmF0Y2hfZmxhZykpCi0KLVRoZW4g R0RCIHRyaWVzIHRvIGF0dGFjaCB0byB0aGUgcHJvY2VzcyAkcDoKLQotMTA4MiAgICAgICAgICAg ICAgaWYgKGNhdGNoX2NvbW1hbmRfZXJyb3JzIChhdHRhY2hfY29tbWFuZCwgcGlkX29yX2NvcmVf YXJnLAotMTA4MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhYmF0Y2hf ZmxhZykgPT0gMCkKLQotVGhpcyBzdWNjZWVkcyBhbmQgc2luY2UgdGhpcyBtb21lbnQgR0RCIGhh cyBhIHZhbGlkIGluZmVyaW9yLiAgQnV0IGRlc3BpdGUgdGhhdAotdGhlIGxpbmVzCi0xMDgyICAg ICAgICAgICAgICBpZiAoY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGF0dGFjaF9jb21tYW5kLCBwaWRf b3JfY29yZV9hcmcsCi0xMDgzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICFiYXRjaF9mbGFnKSA9PSAwKQotc3RpbGwgZmFpbCBiZWNhdXNlIGNvbnNlcXVlbnRseSBhdHRh Y2hfY29tbWFuZCgpIGZhaWxzIHRvIGZpbmQgdGhlIGFzc29jaWF0ZWQKLWV4ZWN1dGFibGUgZmls ZToKLQotMjY3ICAgICAgICAgICAgICAgaWYgKHNjcmF0Y2hfY2hhbiA8IDApCi0yNjggICAgICAg ICAgICAgICAgIHBlcnJvcl93aXRoX25hbWUgKGZpbGVuYW1lKTsKLTEwODIgICAgICAgICAgICAg IGlmIChjYXRjaF9jb21tYW5kX2Vycm9ycyAoYXR0YWNoX2NvbW1hbmQsIHBpZF9vcl9jb3JlX2Fy ZywKLTEwODMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWJhdGNoX2Zs YWcpID09IDApCi0KLWFuZCB0aGVyZWZvcmUgR0RCIGV4ZWN1dGVzIHRoZSBmb2xsb3dpbmc6Ci0K LShnZGIpIGJ0Ci0yMTc5CSAgaWYgKGhhdmVfaW5mZXJpb3JzICgpKQotMjE4MAkgICAgewotMjE4 MQkgICAgICBpZiAoIWZyb21fdHR5Ci0yMTgyCQkgIHx8ICFoYXZlX2xpdmVfaW5mZXJpb3JzICgp Ci0yMTgzCQkgIHx8IHF1ZXJ5IChfKCJBIHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQgYWxyZWFk eS4gIEtpbGwgaXQ/ICIpKSkKLTIxODQJCWl0ZXJhdGVfb3Zlcl9pbmZlcmlvcnMgKGRpc3Bvc2Vf aW5mZXJpb3IsIE5VTEwpOwotMjE4NQkgICAgICBlbHNlCi0yMTg2CQllcnJvciAoXygiUHJvZ3Jh bSBub3Qga2lsbGVkLiIpKTsKLTIxODcJICAgIH0KLTEwODQJCSAgICBjYXRjaF9jb21tYW5kX2Vy cm9ycyAoY29yZV9maWxlX2NvbW1hbmQsIHBpZF9vcl9jb3JlX2FyZywKLTEwODUJCQkJCSAgIWJh dGNoX2ZsYWcpOwotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0t ZmVkb3JhMjRwcmUtbGludXgtZ251LgotCi1UaGFua3MsCi1KYW4KLQotZ2RiL0NoYW5nZUxvZwot MjAxNS0xMC0xNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot Ci0JKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBSdW4gY29yZV9maWxlX2NvbW1hbmQgZm9yIHBp ZF9vcl9jb3JlX2FyZwotCW9ubHkgaWYgbm90IGhhdmVfaW5mZXJpb3JzICgpLgotCi1nZGIvdGVz dHN1aXRlL0NoYW5nZUxvZwotMjAxNS0xMC0xNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9hdHRhY2gta2lsbHMuYzogTmV3LgotCSog Z2RiLmJhc2UvYXR0YWNoLWtpbGxzLmV4cDogTmV3LgotCi1kaWZmIC0tZ2l0IGEvZ2RiL21haW4u YyBiL2dkYi9tYWluLmMKLS0tLSBhL2dkYi9tYWluLmMKLSsrKyBiL2dkYi9tYWluLmMKLUBAIC0x MTk5LDcgKzExOTksMTAgQEAgY2FwdHVyZWRfbWFpbl8xIChzdHJ1Y3QgY2FwdHVyZWRfbWFpbl9h cmdzICpjb250ZXh0KQotIAl7Ci0gCSAgcmV0ID0gY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGF0dGFj aF9jb21tYW5kLCBwaWRfb3JfY29yZV9hcmcsCi0gCQkJCSAgICAgICFiYXRjaF9mbGFnKTsKLS0J ICBpZiAocmV0ID09IDApCi0rCSAgaWYgKHJldCA9PSAwCi0rCSAgICAgIC8qIGF0dGFjaF9jb21t YW5kIGNvdWxkIHN1Y2NlZWQgcGFydGlhbGx5IGFuZCBjb3JlX2ZpbGVfY29tbWFuZAotKwkJIHdv dWxkIHRyeSB0byBraWxsIGl0LiAgKi8KLSsJICAgICAgJiYgIWhhdmVfaW5mZXJpb3JzICgpKQot IAkgICAgcmV0ID0gY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGNvcmVfZmlsZV9jb21tYW5kLAotIAkJ CQkJcGlkX29yX2NvcmVfYXJnLAotIAkJCQkJIWJhdGNoX2ZsYWcpOwotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLWtpbGxzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2F0dGFjaC1raWxscy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hdHRhY2gta2lsbHMuYwotQEAgLTAsMCArMSwy NSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu Ci0rCi0rICAgQ29weXJpZ2h0IDIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRl IDx1bmlzdGQuaD4KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHNsZWVwICg2MDApOwot KyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0 YWNoLWtpbGxzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLWtpbGxzLmV4cAot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXR0YWNoLWtpbGxzLmV4cAotQEAgLTAsMCArMSw0OSBAQAotKyMgQ29weXJpZ2h0 IChDKSAyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgeyAhW2Nhbl9zcGF3bl9mb3JfYXR0YWNoXSB9IHsK LSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0rc3RhbmRhcmRfdGVzdGZpbGUKLSsKLStpZiB7IFtidWls ZF9leGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGVdID09IC0xIH0gewotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0rIyBTdGFydCB0aGUgcHJvZ3JhbSBydW5uaW5nIGFuZCB0aGVuIHdh aXQgZm9yIGEgYml0LCB0byBiZSBzdXJlCi0rIyB0aGF0IGl0IGNhbiBiZSBhdHRhY2hlZCB0by4K LSsKLStzZXQgdGVzdF9zcGF3bl9pZCBbc3Bhd25fd2FpdF9mb3JfYXR0YWNoICRiaW5maWxlXQot K3NldCB0ZXN0cGlkIFtzcGF3bl9pZF9nZXRfcGlkICR0ZXN0X3NwYXduX2lkXQotKwotK3JlbW90 ZV9leGVjIHRhcmdldCAiY3AgLXBmIC0tICRiaW5maWxlICRiaW5maWxlLWNvcHkiCi0rcmVtb3Rl X2V4ZWMgdGFyZ2V0ICJybSAtZiAtLSAkYmluZmlsZSIKLSsKLStzZXQgdGVzdCAic3RhcnQgZ2Ri IgotK3NldCByZXMgW2dkYl9zcGF3bl93aXRoX2NtZGxpbmVfb3B0cyBcCi0rCSAiLWlleCBcInNl dCBoZWlnaHQgMFwiIC1pZXggXCJzZXQgd2lkdGggMFwiIC9Eb0VzTm9UZVh5U3QgJHRlc3RwaWQi XQotK2lmIHsgJHJlcyAhPSAwfSB7Ci0rICAgIGZhaWwgIiR0ZXN0IChzcGF3bikiCi0rICAgIGtp bGxfd2FpdF9zcGF3bmVkX3Byb2Nlc3MgJHRlc3Rfc3Bhd25faWQKLSsgICAgcmV0dXJuIC0xCi0r fQotK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKLSsgICAgLXJlICJcclxuQXR0YWNoaW5n IHRvIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQotKwot K2tpbGxfd2FpdF9zcGF3bmVkX3Byb2Nlc3MgJHRlc3Rfc3Bhd25faWQKCmRpZmYgLS1naXQgYS9n ZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5wYXRjaCBiL2dkYi1iejUzMzE3Ni1mb3J0cmFu LW9tcC1zdGVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjY0MTE1Li4w MDAwMDAwCi0tLSBhL2dkYi1iejUzMzE3Ni1mb3J0cmFuLW9tcC1zdGVwLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTMwICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBGZWRvcmEgR0RCIHBhdGNoZXMgPGludmFsaWRAZW1haWwuY29t PgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAyMTowNzo1MCArMDIwMAotU3ViamVjdDogZ2RiLWJ6 NTMzMTc2LWZvcnRyYW4tb21wLXN0ZXAucGF0Y2gKLQotOzsgRml4IHN0ZXBwaW5nIHdpdGggT01Q IHBhcmFsbGVsIEZvcnRyYW4gc2VjdGlvbnMgKEJaIDUzMzE3NikuCi07Oz1wdXNoK2phbjogSXQg cmVxdWlyZXMgc29tZSBiZXR0ZXIgRFdBUkYgYW5ub3RhdGlvbnMuCi0KLWh0dHBzOi8vYnVnemls bGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTMzMTc2I2M0Ci0KLUkgZmluZCBpdCBhIGJ1 ZyBpbiBEV0FSRiBhbmQgZ2RiIGJlaGF2ZXMgY29ycmVjdGx5IGFjY29yZGluZyB0byBpdC4gIEZy b20gdGhlCi1jdXJyZW50IERXQVJGJ3MgcG9pbnQgb2YgdmlldyB0aGUgaXMgYSBmdW5jdGlvbiBj YWxsIHdoaWNoIHlvdSBza2lwIGJ5ICJuZXh0Ii4KLQotSWYgeW91IGhpZGUgYW55IC91c3IvbGli L2RlYnVnIHN1Y2ggYXMgdXNpbmc6Ci1nZGIgLW54IC1leCAnc2V0IGRlYnVnLWZpbGUtZGlyZWN0 b3J5IC9xd2UnIC1leCAnZmlsZSAuL3RwY29tbW9uX2dmb3J0cmFuNDQnCi1hbmQgdXNlICJzdGVw IiBjb21tYW5kIGluc3RlYWQgb2YgIm5leHQiIHRoZXJlIGl0IHdpbGwgd29yay4KLShZb3UgbmVl ZCB0byBoaWRlIGRlYnVnaW5mbyBmcm9tIGxpYmdvbXAgYXMgeW91IHdvdWxkIHN0ZXAgaW50byBs aWJnb21wIHNvdXJjZXMKLXRvIG1haW50YWluIHRoZSB0aHJlYWRzIGZvciBleGVjdXRpb24uKQot Ci1UaGVyZSBzaG91bGQgYmUgc29tZSBEV0FSRiBleHRlbnNpb24gZm9yIGl0LCBjdXJyZW50bHkg dHJpZWQgdG8gZGV0ZWN0Ci1zdWJzdHJpbmcgIi5vbXBfZm4uIiBhcyB0aGlzIGZ1bmN0aW9uIGlz IGNhbGxlZCAiTUFJTl9fLm9tcF9mbi4wIiBhbmQgZG8gbm90Ci1jb25zaWRlciBzdWNoIHN1Yi1m dW5jdGlvbiBhcyBhIHNraXBwYWJsZSBieSAibmV4dCIuCi0KLUFub3RoZXIgcHJvYmxlbSBpcyB0 aGF0IHdpdGggInNldCBzY2hlZHVsZXItbG9ja2luZyIgYmVpbmcgIm9mZiIgKGRlZmF1bHQKLXVw c3RyZWFtKSBvciAic3RlcCIgKGRlZmF1bHQgaW4gRi9SSEVMKSB0aGUgc2ltdWx0YW5lb3VzIGV4 ZWN1dGlvbiBvZiB0aGUKLXRocmVhZHMgaXMgaW5jb252ZW5pZW50LiAgU2V0dGluZyBpdCB0byAi b24iIHdpbGwgbG9ja3VwIHRoZSBkZWJ1Z2dpbmcgYXMgdGhlCi10aHJlYWRzIG5lZWQgdG8gZ2V0 IHN5bmNocm9uaXplZCBhdCBzb21lIHBvaW50LiAgVGhpcyBpcyBhIG1vcmUgZ2VuZXJhbAotZGVi dWdnaW5nIHByb2JsZW0gb2YgR09NUCBvdXRzaWRlIG9mIHRoZSBzY29wZSBvZiB0aGlzIEJ1Zy4K LQotZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwotLS0tIGEvZ2RiL2lu ZnJ1bi5jCi0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC02Nzg4LDYgKzY3ODgsMTYgQEAgcHJvY2Vz c19ldmVudF9zdG9wX3Rlc3QgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQot IAotICAgICAgIGlmIChlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX292ZXJfY2FsbHMg PT0gU1RFUF9PVkVSX0FMTCkKLSAJewotKwkgIHN0cnVjdCBzeW1ib2wgKnN0b3BfZm4gPSBmaW5k X3BjX2Z1bmN0aW9uIChzdG9wX3BjKTsKLSsJICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnN0b3Bm ID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChzdG9wX3BjKS5taW5zeW07Ci0rCi0rCSAg aWYgKChzdG9wX2ZuID09IE5VTEwKLSsJICAgICAgIHx8IHN0cnN0ciAoc3RvcF9mbi0+bGlua2Fn ZV9uYW1lICgpLCAiLm9tcF9mbi4iKSA9PSBOVUxMKQotKwkgICAgICAvKiBnY2MtNC43LjItOS5m YzE5Lng4Nl82NCB1c2VzIGEgbmV3IGZvcm1hdC4gICovCi0rCSAgICAgICYmIChzdG9wZiA9PSBO VUxMCi0rCQkgIHx8IHN0cnN0ciAoc3RvcGYtPmxpbmthZ2VfbmFtZSAoKSwgIi5fb21wX2ZuLiIp ID09IE5VTEwpKQotK3sJLyogIi5vbXBfZm4uIiAqLwotKwotIAkgIC8qIFdlJ3JlIGRvaW5nIGEg Im5leHQiLgotIAotIAkgICAgIE5vcm1hbCAoZm9yd2FyZCkgZXhlY3V0aW9uOiBzZXQgYSBicmVh a3BvaW50IGF0IHRoZQotQEAgLTY4MjEsNiArNjgzMSw3IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90 ZXN0IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKLSAKLSAJICBrZWVwX2dv aW5nIChlY3MpOwotIAkgIHJldHVybjsKLSt9CS8qICIub21wX2ZuLiIgKi8KLSAJfQotIAotICAg ICAgIC8qIElmIHdlIGFyZSBpbiBhIGZ1bmN0aW9uIGNhbGwgdHJhbXBvbGluZSAoYSBzdHViIGJl dHdlZW4gdGhlCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3Rl cC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vb21wLXN0ZXAuZXhwCi1AQCAtMCwwICsxLDMxIEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0rc2V0IHRlc3RmaWxlICJvbXAtc3RlcCIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxl ICRzcmNmaWxlIHtkZWJ1ZyBmOTAgYWRkaXRpb25hbF9mbGFncz0tZm9wZW5tcH1dIH0gewotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50byBbZ2RiX2dldF9saW5lX251bWJlciAic3Rh cnQtaGVyZSJdXSB7Ci0rICAgIHBlcnJvciAiQ291bGRuJ3QgcnVuIHRvIHN0YXJ0LWhlcmUiCi0r ICAgIHJldHVybiAwCi0rfQotKwotK2dkYl90ZXN0ICJuZXh0IiB7IVwkb21wIHBhcmFsbGVsfSAi c3RlcCBjbG9zZXIiCi0rZ2RiX3Rlc3QgIm5leHQiIHthXChvbXBfZ2V0X3RocmVhZF9udW1cKFwp IFwrIDFcKSA9IDF9ICJzdGVwIGludG8gb21wIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJzdWNjZXNzIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic3Vj Y2VzcyIgIi4qc3VjY2Vzcy4qIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vb21wLXN0ZXAuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAotQEAgLTAsMCArMSwzMiBAQAotKyEgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rISBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsh IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotKyAgICAgIHVzZSBvbXBfbGliCi0rICAgICAgaW50ZWdlciBudGhy ZWFkcywgaSwgYSgxMDAwKQotKyAgICAgIG50aHJlYWRzID0gb21wX2dldF9udW1fdGhyZWFkcygp Ci0rICAgICAgaWYgKG50aHJlYWRzIC5ndC4gMTAwMCkgY2FsbCBhYm9ydAotKwotKyAgICAgIGRv IGkgPSAxLCBudGhyZWFkcwotKyAgICAgICAgICBhKGkpID0gMAotKyAgICAgIGVuZCBkbwotKyAg ICAgIHByaW50ICosICJzdGFydC1oZXJlIgotKyEkb21wIHBhcmFsbGVsCi0rICAgICAgYShvbXBf Z2V0X3RocmVhZF9udW0oKSArIDEpID0gMQotKyEkb21wIGVuZCBwYXJhbGxlbAotKyAgICAgIGRv IGkgPSAxLCBudGhyZWFkcwotKyAgICAgICAgICBpZiAoYShpKSAubmUuIDEpIGNhbGwgYWJvcnQK LSsgICAgICBlbmQgZG8KLSsgICAgICBwcmludCAqLCAic3VjY2VzcyIKLSsgICAgICBlbmQKCmRp ZmYgLS1naXQgYS9nZGItZHRzLXJoZWw2LXB5dGhvbi1jb21wYXQucGF0Y2ggYi9nZGItZHRzLXJo ZWw2LXB5dGhvbi1jb21wYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2 NGU3ZTcuLjAwMDAwMDAKLS0tIGEvZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMzM0ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWRvcmEgR0RCIHBhdGNoZXMgPGludmFsaWRAZW1h aWwuY29tPgotRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAyMTowNzo1MCArMDIwMAotU3ViamVjdDog Z2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoCi0KLTs7IFtyaGVsNl0gRFRTIGJhY2t3 YXJkIFB5dGhvbiBjb21wYXRpYmlsaXR5IEFQSSAoQlogMTAyMDAwNCwgUGhpbCBNdWxkb29uKS4K LTs7PWZlZG9yYQotCi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lk PTEwMjAwMDQKLQotZGlmZiAtLWdpdCBhL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiBi L2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgotLS0tIGEvZ2RiL2RhdGEtZGlyZWN0b3J5 L01ha2VmaWxlLmluCi0rKysgYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KLUBAIC03 MSw2ICs3MSw4IEBAIFBZVEhPTl9GSUxFX0xJU1QgPSBcCi0gCWdkYi9fX2luaXRfXy5weSBcCi0g CWdkYi9GcmFtZURlY29yYXRvci5weSBcCi0gCWdkYi9GcmFtZUl0ZXJhdG9yLnB5IFwKLSsJZ2Ri L0ZyYW1lV3JhcHBlci5weSBcCi0rCWdkYi9iYWNrdHJhY2UucHkgXAotIAlnZGIvZnJhbWVzLnB5 IFwKLSAJZ2RiL3ByaW50aW5nLnB5IFwKLSAJZ2RiL3Byb21wdC5weSBcCi1AQCAtNzksNiArODEs NyBAQCBQWVRIT05fRklMRV9MSVNUID0gXAotIAlnZGIveG1ldGhvZC5weSBcCi0gCWdkYi9jb21t YW5kL19faW5pdF9fLnB5IFwKLSAJZ2RiL2NvbW1hbmQvZXhwbG9yZS5weSBcCi0rCWdkYi9jb21t YW5kL2JhY2t0cmFjZS5weSBcCi0gCWdkYi9jb21tYW5kL2ZyYW1lX2ZpbHRlcnMucHkgXAotIAln ZGIvY29tbWFuZC9wcmV0dHlfcHJpbnRlcnMucHkgXAotIAlnZGIvY29tbWFuZC9wcm9tcHQucHkg XAotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkgYi9nZGIv cHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQotQEAg LTAsMCArMSwxMjIgQEAKLSsjIFdyYXBwZXIgQVBJIGZvciBmcmFtZXMuCi0rCi0rIyBDb3B5cmln aHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK LSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLSsKLSsjIEZJWE1FOiBh cmd1YWJseSBhbGwgdGhpcyBzaG91bGQgYmUgb24gRnJhbWUgc29tZWhvdy4KLStjbGFzcyBGcmFt ZVdyYXBwZXI6Ci0rICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAgc2Vs Zi5mcmFtZSA9IGZyYW1lOwotKwotKyAgICBkZWYgd3JpdGVfc3ltYm9sIChzZWxmLCBzdHJlYW0s IHN5bSwgYmxvY2spOgotKyAgICAgICAgaWYgbGVuIChzeW0ubGlua2FnZV9uYW1lKToKLSsgICAg ICAgICAgICBuc3ltLCBpc19maWVsZF9vZl90aGlzID0gZ2RiLmxvb2t1cF9zeW1ib2wgKHN5bS5s aW5rYWdlX25hbWUsIGJsb2NrKQotKyAgICAgICAgICAgIGlmIG5zeW0uYWRkcl9jbGFzcyAhPSBn ZGIuU1lNQk9MX0xPQ19SRUdJU1RFUjoKLSsgICAgICAgICAgICAgICAgc3ltID0gbnN5bQotKwot KyAgICAgICAgc3RyZWFtLndyaXRlIChzeW0ucHJpbnRfbmFtZSArICI9IikKLSsgICAgICAgIHRy eToKLSsgICAgICAgICAgICB2YWwgPSBzZWxmLnJlYWRfdmFyIChzeW0pCi0rICAgICAgICAgICAg aWYgdmFsICE9IE5vbmU6Ci0rICAgICAgICAgICAgICAgIHZhbCA9IHN0ciAodmFsKQotKyAgICAg ICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBoYXZlIGEgbW9yZSBwcmVjaXNlIGV4Y2VwdGlv biBoZXJlLgotKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyB0ZXh0OgotKyAgICAgICAg ICAgIHZhbCA9IHRleHQKLSsgICAgICAgIGlmIHZhbCA9PSBOb25lOgotKyAgICAgICAgICAgIHN0 cmVhbS53cml0ZSAoIj8/PyIpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHN0cmVhbS53 cml0ZSAoc3RyICh2YWwpKQotKwotKyAgICBkZWYgcHJpbnRfZnJhbWVfbG9jYWxzIChzZWxmLCBz dHJlYW0sIGZ1bmMpOgotKwotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGJsb2NrID0gc2Vs Zi5mcmFtZS5ibG9jaygpCi0rICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgotKyAgICAgICAg ICAgIGJsb2NrID0gTm9uZQotKwotKyAgICAgICAgd2hpbGUgYmxvY2sgIT0gTm9uZToKLSsgICAg ICAgICAgICBpZiBibG9jay5pc19nbG9iYWwgb3IgYmxvY2suaXNfc3RhdGljOgotKyAgICAgICAg ICAgICAgICBicmVhawotKwotKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAgICAg ICBpZiBzeW0uaXNfYXJndW1lbnQ6Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAg ICAgICAgICAgIHNlbGYud3JpdGVfc3ltYm9sIChzdHJlYW0sIHN5bSwgYmxvY2spCi0rICAgICAg ICAgICAgc3RyZWFtLndyaXRlICgnXG4nKQotKwotKyAgICBkZWYgcHJpbnRfZnJhbWVfYXJncyAo c2VsZiwgc3RyZWFtLCBmdW5jKToKLSsKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBibG9j ayA9IHNlbGYuZnJhbWUuYmxvY2soKQotKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKLSsg ICAgICAgICAgICBibG9jayA9IE5vbmUKLSsKLSsgICAgICAgIHdoaWxlIGJsb2NrICE9IE5vbmU6 Ci0rICAgICAgICAgICAgaWYgYmxvY2suZnVuY3Rpb24gIT0gTm9uZToKLSsgICAgICAgICAgICAg ICAgYnJlYWsKLSsgICAgICAgICAgICBibG9jayA9IGJsb2NrLnN1cGVyYmxvY2sKLSsKLSsgICAg ICAgIGZpcnN0ID0gVHJ1ZQotKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAgICAg ICBpZiBub3Qgc3ltLmlzX2FyZ3VtZW50OgotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsK LSsgICAgICAgICAgICBpZiBub3QgZmlyc3Q6Ci0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0 ZSAoIiwgIikKLSsKLSsgICAgICAgICAgICBzZWxmLndyaXRlX3N5bWJvbCAoc3RyZWFtLCBzeW0s IGJsb2NrKQotKyAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKLSsKLSsgICAgIyBGSVhNRTogdGhp cyBzaG91bGQgcHJvYmFibHkganVzdCBiZSBhIG1ldGhvZCBvbiBnZGIuRnJhbWUuCi0rICAgICMg QnV0IHRoZW4gd2UgbmVlZCBzdHJlYW0gd3JhcHBlcnMuCi0rICAgIGRlZiBkZXNjcmliZSAoc2Vs Ziwgc3RyZWFtLCBmdWxsKToKLSsgICAgICAgIGlmIHNlbGYudHlwZSAoKSA9PSBnZGIuRFVNTVlf RlJBTUU6Ci0rICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiIDxmdW5jdGlvbiBjYWxsZWQgZnJv bSBnZGI+XG4iKQotKyAgICAgICAgZWxpZiBzZWxmLnR5cGUgKCkgPT0gZ2RiLlNJR1RSQU1QX0ZS QU1FOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiA8c2lnbmFsIGhhbmRsZXIgY2FsbGVk PlxuIikKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgc2FsID0gc2VsZi5maW5kX3NhbCAo KQotKyAgICAgICAgICAgIHBjID0gc2VsZi5wYyAoKQotKyAgICAgICAgICAgIG5hbWUgPSBzZWxm Lm5hbWUgKCkKLSsgICAgICAgICAgICBpZiBub3QgbmFtZToKLSsgICAgICAgICAgICAgICAgbmFt ZSA9ICI/PyIKLSsgICAgICAgICAgICBpZiBwYyAhPSBzYWwucGMgb3Igbm90IHNhbC5zeW10YWI6 Ci0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiAweCUwOHggaW4iICUgcGMpCi0rICAg ICAgICAgICAgc3RyZWFtLndyaXRlICgiICIgKyBuYW1lICsgIiAoIikKLSsKLSsgICAgICAgICAg ICBmdW5jID0gc2VsZi5mdW5jdGlvbiAoKQotKyAgICAgICAgICAgIHNlbGYucHJpbnRfZnJhbWVf YXJncyAoc3RyZWFtLCBmdW5jKQotKwotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIikiKQot KwotKyAgICAgICAgICAgIGlmIHNhbC5zeW10YWIgYW5kIHNhbC5zeW10YWIuZmlsZW5hbWU6Ci0r ICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiBhdCAiICsgc2FsLnN5bXRhYi5maWxlbmFt ZSkKLSsgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiOiIgKyBzdHIgKHNhbC5saW5lKSkK LSsKLSsgICAgICAgICAgICBpZiBub3Qgc2VsZi5uYW1lICgpIG9yIChub3Qgc2FsLnN5bXRhYiBv ciBub3Qgc2FsLnN5bXRhYi5maWxlbmFtZSk6Ci0rICAgICAgICAgICAgICAgIGxpYiA9IGdkYi5z b2xpYl9uYW1lIChwYykKLSsgICAgICAgICAgICAgICAgaWYgbGliOgotKyAgICAgICAgICAgICAg ICAgICAgc3RyZWFtLndyaXRlICgiIGZyb20gIiArIGxpYikKLSsKLSsgICAgICAgICAgICBzdHJl YW0ud3JpdGUgKCJcbiIpCi0rCi0rICAgICAgICAgICAgaWYgZnVsbDoKLSsgICAgICAgICAgICAg ICAgc2VsZi5wcmludF9mcmFtZV9sb2NhbHMgKHN0cmVhbSwgZnVuYykKLSsKLSsgICAgZGVmIF9f Z2V0YXR0cl9fIChzZWxmLCBuYW1lKToKLSsgICAgICAgIHJldHVybiBnZXRhdHRyIChzZWxmLmZy YW1lLCBuYW1lKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkg Yi9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQotQEAg LTAsMCArMSw0MSBAQAotKyMgRmlsdGVyaW5nIGJhY2t0cmFjZS4KLSsKLSsjIENvcHlyaWdodCAo QykgMjAwOCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotK2ltcG9ydCBpdGVydG9vbHMK LSsKLSsjIE91ciBvbmx5IGV4cG9ydHMuCi0rX19hbGxfXyA9IFsncHVzaF9mcmFtZV9maWx0ZXIn LCAnY3JlYXRlX2ZyYW1lX2ZpbHRlciddCi0rCi0rb2xkX2ZyYW1lX2ZpbHRlciA9IE5vbmUKLSsK LStkZWYgcHVzaF9mcmFtZV9maWx0ZXIgKGNvbnN0cnVjdG9yKToKLSsgICAgIiIiUmVnaXN0ZXIg YSBuZXcgYmFja3RyYWNlIGZpbHRlciBjbGFzcyB3aXRoIHRoZSAnYmFja3RyYWNlJyBjb21tYW5k LgotK1RoZSBmaWx0ZXIgd2lsbCBiZSBwYXNzZWQgYW4gaXRlcmF0b3IgYXMgYW4gYXJndW1lbnQu ICBUaGUgaXRlcmF0b3IKLSt3aWxsIHJldHVybiBnZGIuRnJhbWUtbGlrZSBvYmplY3RzLiAgVGhl IGZpbHRlciBzaG91bGQgaW4gdHVybiBhY3QgYXMKLSthbiBpdGVyYXRvciByZXR1cm5pbmcgc3Vj aCBvYmplY3RzLiIiIgotKyAgICBnbG9iYWwgb2xkX2ZyYW1lX2ZpbHRlcgotKyAgICBpZiBvbGRf ZnJhbWVfZmlsdGVyID09IE5vbmU6Ci0rICAgICAgICBvbGRfZnJhbWVfZmlsdGVyID0gY29uc3Ry dWN0b3IKLSsgICAgZWxzZToKLSsgICAgICAgIG9sZF9mcmFtZV9maWx0ZXIgPSBsYW1iZGEgaXRl cmF0b3IsIGZpbHRlciA9IGZyYW1lX2ZpbHRlcjogY29uc3RydWN0b3IgKGZpbHRlcihpdGVyYXRv cikpCi0rCi0rZGVmIGNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpOgotKyAgICBnbG9iYWwgb2xk X2ZyYW1lX2ZpbHRlcgotKyAgICBpZiBvbGRfZnJhbWVfZmlsdGVyIGlzIE5vbmU6Ci0rICAgICAg ICByZXR1cm4gaXRlcgotKyAgICByZXR1cm4gb2xkX2ZyYW1lX2ZpbHRlciAoaXRlcikKLWRpZmYg LS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgYi9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2Uu cHkKLUBAIC0wLDAgKzEsMTEyIEBACi0rIyBOZXcgYmFja3RyYWNlIGNvbW1hbmQuCi0rCi0rIyBD b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLStp bXBvcnQgZ2RiLmJhY2t0cmFjZQotK2ltcG9ydCBpdGVydG9vbHMKLStmcm9tIGdkYi5GcmFtZUl0 ZXJhdG9yIGltcG9ydCBGcmFtZUl0ZXJhdG9yCi0rZnJvbSBnZGIuRnJhbWVXcmFwcGVyIGltcG9y dCBGcmFtZVdyYXBwZXIKLStpbXBvcnQgc3lzCi0rCi0rY2xhc3MgUmV2ZXJzZUJhY2t0cmFjZVBh cmFtZXRlciAoZ2RiLlBhcmFtZXRlcik6Ci0rICAgICIiIlRoZSBuZXctYmFja3RyYWNlIGNvbW1h bmQgY2FuIHNob3cgYmFja3RyYWNlcyBpbiAncmV2ZXJzZScgb3JkZXIuCi0rVGhpcyBtZWFucyB0 aGF0IHRoZSBpbm5lcm1vc3QgZnJhbWUgd2lsbCBiZSBwcmludGVkIGxhc3QuCi0rTm90ZSB0aGF0 IHJldmVyc2UgYmFja3RyYWNlcyBhcmUgbW9yZSBleHBlbnNpdmUgdG8gY29tcHV0ZS4iIiIKLSsK LSsgICAgc2V0X2RvYyA9ICJFbmFibGUgb3IgZGlzYWJsZSByZXZlcnNlIGJhY2t0cmFjZXMuIgot KyAgICBzaG93X2RvYyA9ICJTaG93IHdoZXRoZXIgYmFja3RyYWNlcyB3aWxsIGJlIHByaW50ZWQg aW4gcmV2ZXJzZSBvcmRlci4iCi0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAg IGdkYi5QYXJhbWV0ZXIuX19pbml0X18gKHNlbGYsICJyZXZlcnNlLWJhY2t0cmFjZSIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFDSywgZ2RiLlBBUkFN X0JPT0xFQU4pCi0rICAgICAgICAjIERlZmF1bHQgdG8gY29tcGF0aWJpbGl0eSB3aXRoIGdkYi4K LSsgICAgICAgIHNlbGYudmFsdWUgPSBGYWxzZQotKwotK2NsYXNzIEZpbHRlcmluZ0JhY2t0cmFj ZSAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZy YW1lcywgb3IgaW5uZXJtb3N0IENPVU5UIGZyYW1lcy4KLStXaXRoIGEgbmVnYXRpdmUgYXJndW1l bnQsIHByaW50IG91dGVybW9zdCAtQ09VTlQgZnJhbWVzLgotK1VzZSBvZiB0aGUgJ2Z1bGwnIHF1 YWxpZmllciBhbHNvIHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuCi0r VXNlIG9mIHRoZSAncmF3JyBxdWFsaWZpZXIgYXZvaWRzIGFueSBmaWx0ZXJpbmcgYnkgbG9hZGFi bGUgbW9kdWxlcy4KLSsiIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAg ICMgRklYTUU6IHRoaXMgaXMgbm90IHdvcmtpbmcgcXVpdGUgd2VsbCBlbm91Z2ggdG8gcmVwbGFj ZQotKyAgICAgICAgIyAiYmFja3RyYWNlIiB5ZXQuCi0rICAgICAgICBnZGIuQ29tbWFuZC5fX2lu aXRfXyAoc2VsZiwgIm5ldy1iYWNrdHJhY2UiLCBnZGIuQ09NTUFORF9TVEFDSykKLSsgICAgICAg IHNlbGYucmV2ZXJzZSA9IFJldmVyc2VCYWNrdHJhY2VQYXJhbWV0ZXIoKQotKwotKyAgICBkZWYg cmV2ZXJzZV9pdGVyIChzZWxmLCBpdGVyKToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAg ICBmb3IgaXRlbSBpbiBpdGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0r ICAgICAgICByZXN1bHQucmV2ZXJzZSgpCi0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0rCi0rICAg IGRlZiBmaW5hbF9uIChzZWxmLCBpdGVyLCB4KToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAg ICAgICBmb3IgaXRlbSBpbiBpdGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0p Ci0rICAgICAgICByZXR1cm4gcmVzdWx0W3g6XQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBh cmcsIGZyb21fdHR5KToKLSsgICAgICAgIGkgPSAwCi0rICAgICAgICBjb3VudCA9IDAKLSsgICAg ICAgIGZpbHRlciA9IFRydWUKLSsgICAgICAgIGZ1bGwgPSBGYWxzZQotKwotKyAgICAgICAgZm9y IHdvcmQgaW4gYXJnLnNwbGl0ICgiICIpOgotKyAgICAgICAgICAgIGlmIHdvcmQgPT0gJyc6Ci0r ICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgZWxpZiB3b3JkID09ICdyYXcn OgotKyAgICAgICAgICAgICAgICBmaWx0ZXIgPSBGYWxzZQotKyAgICAgICAgICAgIGVsaWYgd29y ZCA9PSAnZnVsbCc6Ci0rICAgICAgICAgICAgICAgIGZ1bGwgPSBUcnVlCi0rICAgICAgICAgICAg ZWxzZToKLSsgICAgICAgICAgICAgICAgY291bnQgPSBpbnQgKHdvcmQpCi0rCi0rICAgICAgICAj IEZJWE1FOiBwcm92aWRlIG9wdGlvbiB0byBzdGFydCBhdCBzZWxlY3RlZCBmcmFtZQotKyAgICAg ICAgIyBIb3dldmVyLCBzaG91bGQgc3RpbGwgbnVtYmVyIGFzIGlmIHN0YXJ0aW5nIGZyb20gbmV3 ZXN0Ci0rICAgICAgICBuZXdlc3RfZnJhbWUgPSBnZGIubmV3ZXN0X2ZyYW1lKCkKLSsgICAgICAg IGlmIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPj0gMzoKLSsgICAgICAgICAgICBpdGVyID0gbWFw IChGcmFtZVdyYXBwZXIsIEZyYW1lSXRlcmF0b3IgKG5ld2VzdF9mcmFtZSkpCi0rICAgICAgICBl bHNlOgotKyAgICAgICAgICAgIGl0ZXIgPSBpdGVydG9vbHMuaW1hcCAoRnJhbWVXcmFwcGVyLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVJdGVyYXRvciAobmV3ZXN0 X2ZyYW1lKSkKLSsgICAgICAgIGlmIGZpbHRlcjoKLSsgICAgICAgICAgICBpdGVyID0gZ2RiLmJh Y2t0cmFjZS5jcmVhdGVfZnJhbWVfZmlsdGVyIChpdGVyKQotKwotKyAgICAgICAgIyBOb3cgd3Jh cCBpbiBhbiBpdGVyYXRvciB0aGF0IG51bWJlcnMgdGhlIGZyYW1lcy4KLSsgICAgICAgIGlmIHN5 cy52ZXJzaW9uX2luZm8ubWFqb3IgPj0gMzoKLSsgICAgICAgICAgICBpdGVyID0gemlwIChpdGVy dG9vbHMuY291bnQgKDApLCBpdGVyKQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBpdGVy ID0gaXRlcnRvb2xzLml6aXAgKGl0ZXJ0b29scy5jb3VudCAoMCksIGl0ZXIpCi0rCi0rICAgICAg ICAjIFJldmVyc2UgaWYgdGhlIHVzZXIgd2FudGVkIHRoYXQuCi0rICAgICAgICBpZiBzZWxmLnJl dmVyc2UudmFsdWU6Ci0rICAgICAgICAgICAgaXRlciA9IHNlbGYucmV2ZXJzZV9pdGVyIChpdGVy KQotKwotKyAgICAgICAgIyBFeHRyYWN0IHN1Yi1yYW5nZSB1c2VyIHdhbnRzLgotKyAgICAgICAg aWYgY291bnQgPCAwOgotKyAgICAgICAgICAgIGl0ZXIgPSBzZWxmLmZpbmFsX24gKGl0ZXIsIGNv dW50KQotKyAgICAgICAgZWxpZiBjb3VudCA+IDA6Ci0rICAgICAgICAgICAgaXRlciA9IGl0ZXJ0 b29scy5pc2xpY2UgKGl0ZXIsIDAsIGNvdW50KQotKwotKyAgICAgICAgZm9yIHBhaXIgaW4gaXRl cjoKLSsgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlICgiIyUtMmQiICUgcGFpclswXSkKLSsg ICAgICAgICAgICBwYWlyWzFdLmRlc2NyaWJlIChzeXMuc3Rkb3V0LCBmdWxsKQotKwotK0ZpbHRl cmluZ0JhY2t0cmFjZSgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxw LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKLS0tLSBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvaGVscC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5l eHAKLUBAIC0xMjksNyArMTI5LDkgQEAgZ2RiX3Rlc3QgImFwcm9wb3MgYXByb3BvcyIgImFwcm9w b3MgLS0gU2VhcmNoIGZvciBjb21tYW5kcyBtYXRjaGluZyBhIFJFR0VYUC4qIgotIAotICMgVGVz dCBhcHJvcG9zIGZvciBjb21tYW5kcyBoYXZpbmcgYWxpYXNlcy4KLSBnZGJfdGVzdCAiYXByb3Bv cyBQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5uZXJtb3N0IENPVU5U IGZyYW1lc1wuIiBcCi0tICAgICJiYWNrdHJhY2UsIHdoZXJlLCBidCAtLSBQcmludCBiYWNrdHJh Y2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5uZXJtb3N0IENPVU5UIGZyYW1lc1wuIgotKyAg ICBbbXVsdGlfbGluZSBcCi0rCSAiYmFja3RyYWNlLCB3aGVyZSwgYnQgLS0gUHJpbnQgYmFja3Ry YWNlIG9mIGFsbCBzdGFjayBmcmFtZXMsIG9yIGlubmVybW9zdCBDT1VOVCBmcmFtZXNcLiIgXAot KwkgIm5ldy1iYWNrdHJhY2UgLS0gUHJpbnQgYmFja3RyYWNlIG9mIGFsbCBzdGFjayBmcmFtZXMs IG9yIGlubmVybW9zdCBDT1VOVCBmcmFtZXNcLiJdCi0gCi0gIyBUZXN0IGhlbHAgZm9yIGNvbW1h bmRzIGhhdmluZyBhbGlhc2VzLgotIGdkYl90ZXN0ICJoZWxwIGJ0IiAiYmFja3RyYWNlLCB3aGVy ZSwgYnRcW1xyXG5cXStQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5u ZXJtb3N0IENPVU5UIGZyYW1lc1wuLioiCgpkaWZmIC0tZ2l0IGEvZ2RiLWduYXQtZHdhcmYtY3Jh c2gtM29mMy5wYXRjaCBiL2dkYi1nbmF0LWR3YXJmLWNyYXNoLTNvZjMucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMWZjN2IuLjAwMDAwMDAKLS0tIGEvZ2RiLWduYXQtZHdh cmYtY3Jhc2gtM29mMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNyArMCwwIEBACi1Gcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdE QiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6 MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi1nbmF0LWR3YXJmLWNyYXNoLTNvZjMucGF0Y2gKLQot OzsgRml4IGNyYXNoIG9mIC1yZWFkbm93IC91c3IvbGliL2RlYnVnL3Vzci9iaW4vZ25hdGJpbmQu ZGVidWcgKEJaIDEwNjkyMTEpLgotOzs9cHVzaCtqYW4KLQotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTQtMDIvbXNnMDA3MzEuaHRtbAotCi0tLTZUcm5sdFN0WFc0aXdt aTAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1E aXNwb3NpdGlvbjogaW5saW5lCi0KLUhpLAotCi1QUiAxNjU4MToKLQlHREIgY3Jhc2ggb24gaW5o ZXJpdF9hYnN0cmFjdF9kaWVzIGluZmluaXRlIHJlY3Vyc2lvbgotCWh0dHBzOi8vc291cmNld2Fy ZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE2NTgxCi0KLWZpeGVkIGNyYXNoIGZyb20g YW4gaW5maW5pdGUgcmVjdXJzaW9uLiAgQnV0IGluIHJhcmUgY2FzZXMgdGhlIG5ldyBjb2RlIGNh bgotbm93IGdkYl9hc3NlcnQoKSBkdWUgdG8gd2VpcmQgRFdBUkYgZmlsZS4KLQotSSBkbyBub3Qg eWV0IGZ1bGx5IHVuZGVyc3RhbmQgd2h5IHRoZSBEV0FSRiBpcyBhcyBpdCBpcyBidXQganVzdCBH REIgc2hvdWxkCi1uZXZlciBjcmFzaCBkdWUgdG8gaW52YWxpZCBEV0FSRiBhbnl3YXkuICBUaGUg ImludmFsaWQiIERXQVJGIEkgc2VlIG9ubHkgaW4KLUZlZG9yYSBHQ0MgYnVpbGQsIG5vdCBpbiBG U0YgR0NDIGJ1aWxkLCBtb3JlIGluZm8gYXQ6Ci0JaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD0xMDY5MzgyCi0JaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL2prcmF0 b2NoL2djYy1kZWJ1Z2luZm8tNC44LjItNy5mYzIwLng4Nl82NC1nbmF0YmluZC5kZWJ1ZwotCi1U aGFua3MsCi1KYW4KLQotLS02VHJubHRTdFhXNGl3bWkwCi1Db250ZW50LVR5cGU6IHRleHQvcGxh aW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsgZmlsZW5h bWU9ImNvbXBsYWludC5wYXRjaCIKLQotZ2RiLwotMjAxNC0wMi0yNCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJyZWFkLmMgKHByb2Nlc3Nf ZGllKTogQ2hhbmdlIGdkYl9hc3NlcnQgdG8gY29tcGxhaW50LgotCi1kaWZmIC0tZ2l0IGEvZ2Ri L2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwotLS0tIGEvZ2RiL2R3YXJmMi9yZWFk LmMKLSsrKyBiL2dkYi9kd2FyZjIvcmVhZC5jCi1AQCAtMTAxNTksNiArMTAxNTksMTMgQEAgY2xh c3MgcHJvY2Vzc19kaWVfc2NvcGUKLSBzdGF0aWMgdm9pZAotIHByb2Nlc3NfZGllIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gewotKyAgaWYgKGRpZS0+aW5f cHJvY2VzcykKLSsgICAgewotKyAgICAgIGNvbXBsYWludCAoXygiRElFIGF0IDB4JXMgYXR0ZW1w dGVkIHRvIGJlIHByb2Nlc3NlZCB0d2ljZSIpLAotKwkJIHNlY3Rfb2Zmc2V0X3N0ciAoZGllLT5z ZWN0X29mZikpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotICAgcHJvY2Vzc19kaWVfc2Nv cGUgc2NvcGUgKGRpZSwgY3UpOwotIAotICAgc3dpdGNoIChkaWUtPnRhZykKLWRpZmYgLS1naXQg YS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLS0tLSBhL2dkYi9saW51eC1uYXQu YwotKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtMTkwLDYgKzE5MCwxMiBAQCBzdHJ1Y3QgbGlu dXhfbmF0X3RhcmdldCAqbGludXhfdGFyZ2V0OwotIC8qIERvZXMgdGhlIGN1cnJlbnQgaG9zdCBz dXBwb3J0IFBUUkFDRV9HRVRSRUdTRVQ/ICAqLwotIGVudW0gdHJpYm9vbCBoYXZlX3B0cmFjZV9n ZXRyZWdzZXQgPSBUUklCT09MX1VOS05PV047Ci0gCi0rI2lmZGVmIE5FRURfREVUQUNIX1NJR1NU T1AKLSsvKiBQSUQgb2YgdGhlIGluZmVyaW9yIHN0b3BwZWQgYnkgU0lHU1RPUCBiZWZvcmUgYXR0 YWNoaW5nIChvciB6ZXJvKS4gICovCi0rc3RhdGljIHBpZF90IHBpZF93YXNfc3RvcHBlZDsKLSsK LSsjZW5kaWYKLSsKLSBzdGF0aWMgdW5zaWduZWQgaW50IGRlYnVnX2xpbnV4X25hdDsKLSBzdGF0 aWMgdm9pZAotIHNob3dfZGVidWdfbGludXhfbmF0IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50 IGZyb21fdHR5LAotQEAgLTEwNDQsNiArMTA1MCw5IEBAIGxpbnV4X25hdF9wb3N0X2F0dGFjaF93 YWl0IChwdGlkX3QgcHRpZCwgaW50ICpzaWduYWxsZWQpCi0gICBpZiAobGludXhfcHJvY19waWRf aXNfc3RvcHBlZCAocGlkKSkKLSAgICAgewotICAgICAgIGxpbnV4X25hdF9kZWJ1Z19wcmludGYg KCJBdHRhY2hpbmcgdG8gYSBzdG9wcGVkIHByb2Nlc3MiKTsKLSsjaWZkZWYgTkVFRF9ERVRBQ0hf U0lHU1RPUAotKyAgICAgIHBpZF93YXNfc3RvcHBlZCA9IHB0aWQucGlkICgpOwotKyNlbmRpZgot IAotICAgICAgIC8qIFRoZSBwcm9jZXNzIGlzIGRlZmluaXRlbHkgc3RvcHBlZC4gIEl0IGlzIGlu IGEgam9iIGNvbnRyb2wKLSAJIHN0b3AsIHVubGVzcyB0aGUga2VybmVsIHByZWRhdGVzIHRoZSBU QVNLX1NUT1BQRUQgLwotQEAgLTEzNTksNiArMTM2OCwyNSBAQCBnZXRfZGV0YWNoX3NpZ25hbCAo c3RydWN0IGx3cF9pbmZvICpscCkKLSAgICAgICByZXR1cm4gZ2RiX3NpZ25hbF90b19ob3N0IChz aWdubyk7Ci0gICAgIH0KLSAKLSsjaWZkZWYgTkVFRF9ERVRBQ0hfU0lHU1RPUAotKyAgLyogV29y a2Fyb3VuZCBSSEVMLTUga2VybmVsIHdoaWNoIGhhcyB1bnJlbGlhYmxlIFBUUkFDRV9ERVRBQ0gs IFNJR1NUT1AgKHRoYXQKLSsgICAgIG1hbnkgVElEcyBhcmUgbGVmdCB1bnN0b3BwZWQpLiAgU2Vl IFJIIEJ1ZyA0OTY3MzIuICAqLwotKyAgaWYgKGxwLT5wdGlkLnBpZCAoKSA9PSBwaWRfd2FzX3N0 b3BwZWQpCi0rICAgIHsKLSsgICAgICBpbnQgZXJyOwotKwotKyAgICAgIGVycm5vID0gMDsKLSsg ICAgICBlcnIgPSBraWxsX2x3cCAobHAtPnB0aWQubHdwICgpLCBTSUdTVE9QKTsKLSsgICAgICBp ZiAoZGVidWdfbGludXhfbmF0KQotKwl7Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLAotKwkJCSAgICAgICJTQzogIGx3cCBraWxsICVkICVzXG4iLAotKwkJCSAgICAgIGVyciwK LSsJCQkgICAgICBlcnJubyA/IHNhZmVfc3RyZXJyb3IgKGVycm5vKSA6ICJFUlJOTy1PSyIpOwot Kwl9Ci0rICAgIH0KLSsKLSsjZW5kaWYKLSAgIHJldHVybiAwOwotIH0KLSAKLUBAIC0xNTAyLDYg KzE1MzAsMTAgQEAgbGludXhfbmF0X3RhcmdldDo6ZGV0YWNoIChpbmZlcmlvciAqaW5mLCBpbnQg ZnJvbV90dHkpCi0gICAgICAgZGV0YWNoX29uZV9sd3AgKG1haW5fbHdwLCAmc2lnbm8pOwotIAot ICAgICAgIGRldGFjaF9zdWNjZXNzIChpbmYpOwotKwotKyNpZmRlZiBORUVEX0RFVEFDSF9TSUdT VE9QCi0rICAgICAgcGlkX3dhc19zdG9wcGVkID0gMDsKLSsjZW5kaWYKLSAgICAgfQotIH0KLSAK LUBAIC0xNzQ0LDYgKzE3NzYsMTYgQEAgbGludXhfbmF0X3RhcmdldDo6cmVzdW1lIChwdGlkX3Qg cHRpZCwgaW50IHN0ZXAsIGVudW0gZ2RiX3NpZ25hbCBzaWdubykKLSAgICAgICByZXR1cm47Ci0g ICAgIH0KLSAKLSsjaWZkZWYgTkVFRF9ERVRBQ0hfU0lHU1RPUAotKyAgLyogQXQgdGhpcyBwb2lu dCwgd2UgYXJlIGdvaW5nIHRvIHJlc3VtZSB0aGUgaW5mZXJpb3IgYW5kIGlmIHdlCi0rICAgICBo YXZlIGF0dGFjaGVkIHRvIGEgc3RvcHBlZCBwcm9jZXNzLCB3ZSBubyBsb25nZXIgc2hvdWxkIGxl YXZlCi0rICAgICBpdCBhcyBzdG9wcGVkIGlmIHRoZSB1c2VyIGRldGFjaGVzLiAgUFRJRCB2YXJp YWJsZSBoYXMgUElEIHNldCB0byBMV1AKLSsgICAgIHdoaWxlIHdlIG5lZWQgdG8gY2hlY2sgdGhl IHJlYWwgUElEIGhlcmUuICAqLwotKwotKyAgaWYgKCFzdGVwICYmIGxwICYmIHBpZF93YXNfc3Rv cHBlZCA9PSBscC0+cHRpZC5waWQgKCkpCi0rICAgIHBpZF93YXNfc3RvcHBlZCA9IDA7Ci0rCi0r I2VuZGlmCi0gICBpZiAocmVzdW1lX21hbnkpCi0gICAgIGl0ZXJhdGVfb3Zlcl9sd3BzIChwdGlk LCBbPV0gKHN0cnVjdCBsd3BfaW5mbyAqaW5mbykKLSAJCQkgICAgIHsKLUBAIC0zNjE3LDYgKzM2 NTksMTAgQEAgbGludXhfbmF0X3RhcmdldDo6bW91cm5faW5mZXJpb3IgKCkKLSAKLSAgIC8qIExl dCB0aGUgYXJjaC1zcGVjaWZpYyBuYXRpdmUgY29kZSBrbm93IHRoaXMgcHJvY2VzcyBpcyBnb25l LiAgKi8KLSAgIGxpbnV4X3RhcmdldC0+bG93X2ZvcmdldF9wcm9jZXNzIChwaWQpOwotKyNpZmRl ZiBORUVEX0RFVEFDSF9TSUdTVE9QCi0rCi0rICBwaWRfd2FzX3N0b3BwZWQgPSAwOwotKyNlbmRp ZgotIH0KLSAKLSAvKiBDb252ZXJ0IGEgbmF0aXZlL2hvc3Qgc2lnaW5mbyBvYmplY3QsIGludG8v ZnJvbSB0aGUgc2lnaW5mbyBpbiB0aGUKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0 YWNoLXN0b3BwZWQuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1z dG9wcGVkLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBl ZC5leHAKLUBAIC01Niw3ICs1Niw3MyBAQCBwcm9jIGNvcmVmdW5jIHsgdGhyZWFkdHlwZSB9IHsK LSAgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gICAgIGdkYl9sb2Fk ICR7YmluZmlsZX0KLSAKLS0gICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW4gYXR0YWNoIHRvIHRoZSBz dG9wcGVkIHByb2Nlc3MuCi0rICAgICMgVmVyaWZ5IHRoYXQgd2UgY2FuIGF0dGFjaCB0byB0aGUg cHJvY2VzcyBieSBmaXJzdCBnaXZpbmcgaXRzCi0rICAgICMgZXhlY3V0YWJsZSBuYW1lIHZpYSB0 aGUgZmlsZSBjb21tYW5kLCBhbmQgdXNpbmcgYXR0YWNoIHdpdGggdGhlCi0rICAgICMgcHJvY2Vz cyBJRC4KLSsKLSsgICAgc2V0IHRlc3QgIiR0aHJlYWR0eXBlOiBzZXQgZmlsZSwgYmVmb3JlIGF0 dGFjaDEgdG8gc3RvcHBlZCBwcm9jZXNzIgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiZmlsZSAk YmluZmlsZSIgIiR0ZXN0IiB7Ci0rICAgICAgIC1yZSAiTG9hZCBuZXcgc3ltYm9sIHRhYmxlIGZy b20uKnkgb3Igbi4gJCIgewotKwkgICAgZ2RiX3Rlc3QgInkiICJSZWFkaW5nIHN5bWJvbHMgZnJv bSAkZXNjYXBlZGJpbmZpbGVcLlwuXC4qIiBcCi0rCQkgICAgIiR0ZXN0IChyZS1yZWFkKSIKLSsJ fQotKwktcmUgIlJlYWRpbmcgc3ltYm9scyBmcm9tICRlc2NhcGVkYmluZmlsZVwuXC5cLiokZ2Ri X3Byb21wdCAkIiB7Ci0rCSAgICBwYXNzICIkdGVzdCIKLSsJfQotKyAgICB9Ci0rCi0rICAgIHNl dCB0ZXN0ICIkdGhyZWFkdHlwZTogYXR0YWNoMSB0byBzdG9wcGVkLCBhZnRlciBzZXR0aW5nIGZp bGUiCi0rICAgIGdkYl90ZXN0X211bHRpcGxlICJhdHRhY2ggJHRlc3RwaWQiICIkdGVzdCIgewot KwktcmUgIkF0dGFjaGluZyB0byBwcm9ncmFtLipgPyRlc2NhcGVkYmluZmlsZSc/LCBwcm9jZXNz ICR0ZXN0cGlkLiokZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBwYXNzICIkdGVzdCIKLSsJfQotKyAg ICB9Ci0rCi0rICAgICMgIi4qc2xlZXAuKmNsb25lLioiIHdvdWxkIGZhaWwgb24gczM5MHggYXMg YnQgc3RvcHMgYXQgU1RBUlRfVEhSRUFEIHRoZXJlLgotKyAgICBpZiB7W3N0cmluZyBlcXVhbCAk dGhyZWFkdHlwZSB0aHJlYWRlZF19IHsKLSsJZ2RiX3Rlc3QgInRocmVhZCBhcHBseSBhbGwgYnQi ICIuKnNsZWVwLipzdGFydF90aHJlYWQuKiIgIiR0aHJlYWR0eXBlOiBhdHRhY2gxIHRvIHN0b3Bw ZWQgYnQiCi0rICAgIH0gZWxzZSB7Ci0rCWdkYl90ZXN0ICJidCIgIi4qc2xlZXAuKm1haW4uKiIg IiR0aHJlYWR0eXBlOiBhdHRhY2gxIHRvIHN0b3BwZWQgYnQiCi0rICAgIH0KLSsKLSsgICAgIyBF eGl0IGFuZCBkZXRhY2ggdGhlIHByb2Nlc3MuCi0rCi0rICAgIGdkYl9leGl0Ci0rCi0rICAgICMg QXZvaWQgc29tZSByYWNlOgotKyAgICBzbGVlcCAyCi0rCi0rICAgIGlmIFtjYXRjaCB7b3BlbiAv cHJvYy8ke3Rlc3RwaWR9L3N0YXR1cyByfSBmaWxlaWRdIHsKLSsJc2V0IGxpbmUgIk5PVEZPVU5E IgotKyAgICB9IGVsc2UgewotKwl3aGlsZSB7IDEgfSB7Ci0rCSAgICBpZiB7IFtnZXRzICRmaWxl aWQgbGluZV0gPCAwIH0gewotKwkJc2V0IGxpbmUgIkVPRiIKLSsJCWJyZWFrCi0rCSAgICB9Ci0r CSAgICBpZiB7W3N0cmluZyBtYXRjaCAiU3RhdGU6KiIgJGxpbmVdfSB7Ci0rCQlicmVhawotKwkg ICAgfQotKwl9Ci0rCWNsb3NlICRmaWxlaWQ7Ci0rICAgIH0KLSsKLSsgICAgc2V0IHRlc3QgIiR0 aHJlYWR0eXBlOiBhdHRhY2gxLCBleGl0IGxlYXZlcyBwcm9jZXNzIHN0b3BwZWQiCi0rICAgIHZl cmJvc2UgLWxvZyAibGluZTogJGxpbmUiCi0rICAgIGlmIHtbc3RyaW5nIG1hdGNoICIqKHN0b3Bw ZWQpKiIgJGxpbmVdfSB7Ci0rICAgICAgcGFzcyAkdGVzdAotKyAgICB9IGVsc2UgewotKyAgICAg IGZhaWwgJHRlc3QKLSsgICAgfQotKwotKyAgICAjIEF0IHRoaXMgcG9pbnQsIHRoZSBwcm9jZXNz IHNob3VsZCBzdGlsbCBiZSBzdG9wcGVkCi0rCi0rICAgIGdkYl9zdGFydAotKyAgICBnZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSsgICAgZ2RiX2xvYWQgJHtiaW5maWxlfQot KwotKyAgICAjIFZlcmlmeSB0aGF0IHdlIGNhbiBhdHRhY2ggdG8gdGhlIHByb2Nlc3MganVzdCBi eSBnaXZpbmcgdGhlCi0rICAgICMgcHJvY2VzcyBJRC4KLSAgICAgICAgCi0gICAgIHNldCB0ZXN0 ICIkdGhyZWFkdHlwZTogYXR0YWNoMiB0byBzdG9wcGVkLCBhZnRlciBzZXR0aW5nIGZpbGUiCi0g ICAgIGdkYl90ZXN0X211bHRpcGxlICJhdHRhY2ggJHRlc3RwaWQiICIkdGVzdCIgewoKZGlmZiAt LWdpdCBhL2dkYi1qaXQtcmVhZGVyLW11bHRpbGliLnBhdGNoIGIvZ2RiLWppdC1yZWFkZXItbXVs dGlsaWIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiY2U1ZmMuLjAwMDAw MDAKLS0tIGEvZ2RiLWppdC1yZWFkZXItbXVsdGlsaWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw0NiArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZy aSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi1qaXQtcmVhZGVyLW11 bHRpbGliLnBhdGNoCi0KLTs7IEZpeCBqaXQtcmVhZGVyLmggZm9yIG11bHRpLWxpYi4KLTs7PXB1 c2gramFuCi0KLWRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQotLS0t IGEvZ2RiL2NvbmZpZ3VyZQotKysrIGIvZ2RiL2NvbmZpZ3VyZQotQEAgLTk5NjgsMTAgKzk5Njgs MTIgQEAgX0FDRU9GCi0gCi0gCi0gCi0taWYgdGVzdCAieCR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVk X2xvbmd9IiA9ICJ4OCI7IHRoZW4KLS0gIFRBUkdFVF9QVFI9InVuc2lnbmVkIGxvbmciCi0tZWxp ZiB0ZXN0ICJ4JHthY19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZ19sb25nfSIgPSAieDgiOyB0aGVu Ci0rIyBUcnkgdG8ga2VlcCBUQVJHRVRfUFRSIHRoZSBzYW1lIGFjcm9zcyBhcmNocyBzbyB0aGF0 IGppdC1yZWFkZXIuaCBmaWxlCi0rIyBjb250ZW50IGlzIHRoZSBzYW1lIGZvciBtdWx0aWxpYiBk aXN0cmlidXRpb25zLgotK2lmIHRlc3QgIngke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nX2xv bmd9IiA9ICJ4OCI7IHRoZW4KLSAgIFRBUkdFVF9QVFI9InVuc2lnbmVkIGxvbmcgbG9uZyIKLStl bGlmIHRlc3QgIngke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nfSIgPSAieDgiOyB0aGVuCi0r ICBUQVJHRVRfUFRSPSJ1bnNpZ25lZCBsb25nIgotIGVsaWYgdGVzdCAieCR7YWNfY3Zfc2l6ZW9m X3Vuc2lnbmVkX19faW50MTI4fSIgPSAieDE2IjsgdGhlbgotICAgVEFSR0VUX1BUUj0idW5zaWdu ZWQgX19pbnQxMjgiCi0gZWxzZQotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuYWMgYi9nZGIv Y29uZmlndXJlLmFjCi0tLS0gYS9nZGIvY29uZmlndXJlLmFjCi0rKysgYi9nZGIvY29uZmlndXJl LmFjCi1AQCAtODAzLDEwICs4MDMsMTIgQEAgQUNfQ0hFQ0tfU0laRU9GKHVuc2lnbmVkIGxvbmcg bG9uZykKLSBBQ19DSEVDS19TSVpFT0YodW5zaWduZWQgbG9uZykKLSBBQ19DSEVDS19TSVpFT0Yo dW5zaWduZWQgX19pbnQxMjgpCi0gCi0taWYgdGVzdCAieCR7YWNfY3Zfc2l6ZW9mX3Vuc2lnbmVk X2xvbmd9IiA9ICJ4OCI7IHRoZW4KLS0gIFRBUkdFVF9QVFI9InVuc2lnbmVkIGxvbmciCi0tZWxp ZiB0ZXN0ICJ4JHthY19jdl9zaXplb2ZfdW5zaWduZWRfbG9uZ19sb25nfSIgPSAieDgiOyB0aGVu Ci0rIyBUcnkgdG8ga2VlcCBUQVJHRVRfUFRSIHRoZSBzYW1lIGFjcm9zcyBhcmNocyBzbyB0aGF0 IGppdC1yZWFkZXIuaCBmaWxlCi0rIyBjb250ZW50IGlzIHRoZSBzYW1lIGZvciBtdWx0aWxpYiBk aXN0cmlidXRpb25zLgotK2lmIHRlc3QgIngke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nX2xv bmd9IiA9ICJ4OCI7IHRoZW4KLSAgIFRBUkdFVF9QVFI9InVuc2lnbmVkIGxvbmcgbG9uZyIKLStl bGlmIHRlc3QgIngke2FjX2N2X3NpemVvZl91bnNpZ25lZF9sb25nfSIgPSAieDgiOyB0aGVuCi0r ICBUQVJHRVRfUFRSPSJ1bnNpZ25lZCBsb25nIgotIGVsaWYgdGVzdCAieCR7YWNfY3Zfc2l6ZW9m X3Vuc2lnbmVkX19faW50MTI4fSIgPSAieDE2IjsgdGhlbgotICAgVEFSR0VUX1BUUj0idW5zaWdu ZWQgX19pbnQxMjgiCi0gZWxzZQoKZGlmZiAtLWdpdCBhL2dkYi1tb3JpYnVuZC11dHJhY2Utd29y a2Fyb3VuZC5wYXRjaCBiL2dkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fyb3VuZC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY5ZmM3NS4uMDAwMDAwMAotLS0gYS9nZGItbW9y aWJ1bmQtdXRyYWNlLXdvcmthcm91bmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCww IEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog RmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0 IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdkYi1tb3JpYnVuZC11dHJhY2Utd29ya2Fy b3VuZC5wYXRjaAotCi07OyBXb3JrYXJvdW5kIG5vbi1zdG9wIG1vcmlidW5kIGxvY2F0aW9ucyBl eHBsb2l0ZWQgYnkga2VybmVsIHV0cmFjZSAoQlogNTkwNjIzKS4KLTs7PXB1c2gramFuOiBDdXJy ZW50bHkgaXQgaXMgc3RpbGwgbm90IGZ1bGx5IHNhZmUuCi0KLWh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTkwNjIzCi1odHRwOi8vc291cmNlcy5yZWRoYXQuY29t L2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMTU5MwotCi1CdWcgaW4gRlNGIEdEQiBleHBsb2l0 ZWQgYnkgdGhlIHB0cmFjZS1vbi11dHJhY2UgaW50ZXJhY3Rpb24uCi0KLWRpZmYgLS1naXQgYS9n ZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotLS0tIGEvZ2RiL2JyZWFrcG9pbnQu YwotKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwotQEAgLTExOTQ4LDYgKzExOTQ4LDggQEAgdXBkYXRl X2dsb2JhbF9sb2NhdGlvbl9saXN0IChlbnVtIHVnbGxfaW5zZXJ0X21vZGUgaW5zZXJ0X21vZGUp Ci0gCQkgID0gMyAqICh0aHJlYWRfY291bnQgKHByb2NfdGFyZ2V0KSArIDEpOwotIAkgICAgICBl bHNlCi0gCQlvbGRfbG9jLT5ldmVudHNfdGlsbF9yZXRpcmVtZW50ID0gMTsKLSsJICAgICAgLyog UmVkIEhhdCBCdWcgNTkwNjIzLiAgKi8KLSsJICAgICAgb2xkX2xvYy0+ZXZlbnRzX3RpbGxfcmV0 aXJlbWVudCAqPSAxMDsKLSAJICAgICAgb2xkX2xvYy0+b3duZXIgPSBOVUxMOwotIAotIAkgICAg ICBtb3JpYnVuZF9sb2NhdGlvbnMucHVzaF9iYWNrIChvbGRfbG9jKTsKCmRpZmYgLS1naXQgYS9n ZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMS5wYXRjaCBiL2dkYi1yaGJ6MTkwOTkw Mi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCmluZGV4IDdiY2VkNjYuLjhkZDk5YTUgMTAwNjQ0 Ci0tLSBhL2dkYi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCisrKyBiL2dk Yi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCkBAIC0zOTEsNyArMzkxLDcg QEAgZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0aHJlYWQuaAogZGlmZiAt LWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwogLS0tIGEvZ2RiL2luZnJ1bi5jCiAr KysgYi9nZGIvaW5mcnVuLmMKLUBAIC05MDE3LDggKzkwMTcsMTAgQEAgc3RydWN0IGluZmNhbGxf Y29udHJvbF9zdGF0ZQorQEAgLTkwMDYsOCArOTAwNiwxMCBAQCBzdHJ1Y3QgaW5mY2FsbF9jb250 cm9sX3N0YXRlCiAgICBlbnVtIHN0b3Bfc3RhY2tfa2luZCBzdG9wX3N0YWNrX2R1bW15ID0gU1RP UF9OT05FOwogICAgaW50IHN0b3BwZWRfYnlfcmFuZG9tX3NpZ25hbCA9IDA7CiAgCkBAIC00MDMs NyArNDAzLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwogIH07 CiAgCiAgLyogU2F2ZSBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUg aW5mZXJpb3I8PT0+Z2RiCi1AQCAtOTA0NywyNyArOTA0OSwxMiBAQCBzYXZlX2luZmNhbGxfY29u dHJvbF9zdGF0ZSAoKQorQEAgLTkwMzYsMjcgKzkwMzgsMTIgQEAgc2F2ZV9pbmZjYWxsX2NvbnRy b2xfc3RhdGUgKCkKICAgIGluZl9zdGF0dXMtPnN0b3Bfc3RhY2tfZHVtbXkgPSBzdG9wX3N0YWNr X2R1bW15OwogICAgaW5mX3N0YXR1cy0+c3RvcHBlZF9ieV9yYW5kb21fc2lnbmFsID0gc3RvcHBl ZF9ieV9yYW5kb21fc2lnbmFsOwogIApAQCAtNDMzLDcgKzQzMyw3IEBAIGRpZmYgLS1naXQgYS9n ZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKICAvKiBSZXN0b3JlIGluZmVyaW9yIHNlc3Npb24g c3RhdGUgdG8gSU5GX1NUQVRVUy4gICovCiAgCiAgdm9pZAotQEAgLTkwOTUsMjEgKzkwODIsOCBA QCByZXN0b3JlX2luZmNhbGxfY29udHJvbF9zdGF0ZSAoc3RydWN0IGluZmNhbGxfY29udHJvbF9z dGF0ZSAqaW5mX3N0YXR1cykKK0BAIC05MDg0LDIxICs5MDcxLDggQEAgcmVzdG9yZV9pbmZjYWxs X2NvbnRyb2xfc3RhdGUgKHN0cnVjdCBpbmZjYWxsX2NvbnRyb2xfc3RhdGUgKmluZl9zdGF0dXMp CiAgCiAgICBpZiAodGFyZ2V0X2hhc19zdGFjaykKICAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi1y aGJ6MTkxMjk4NS1saWJzdGRjKystYXNzZXJ0LnBhdGNoIGIvZ2RiLXJoYnoxOTEyOTg1LWxpYnN0 ZGMrKy1hc3NlcnQucGF0Y2gKaW5kZXggNWZhNWY0ZS4uMTk2ZTMwOSAxMDA2NDQKLS0tIGEvZ2Ri LXJoYnoxOTEyOTg1LWxpYnN0ZGMrKy1hc3NlcnQucGF0Y2gKKysrIGIvZ2RiLXJoYnoxOTEyOTg1 LWxpYnN0ZGMrKy1hc3NlcnQucGF0Y2gKQEAgLTUzLDcgKzUzLDcgQEAgZGlmZiAtLWdpdCBhL2dk Yi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMKICAgICAgewogICAgICAgIHN0cm5jcHkgKGZv bGRfYnVmZmVyLCBuYW1lLmRhdGEgKCkgKyAxLCBsZW4gLSAyKTsKICAgICAgICBmb2xkX2J1ZmZl cltsZW4gLSAyXSA9ICdcMDAwJzsKLUBAIC0xMzU5Miw3ICsxMzU5Miw3IEBAIGFkYV9sb29rdXBf bmFtZV9pbmZvOjphZGFfbG9va3VwX25hbWVfaW5mbyAoY29uc3QgbG9va3VwX25hbWVfaW5mbyAm bG9va3VwX25hbWUpCitAQCAtMTM1OTcsNyArMTM1OTcsNyBAQCBhZGFfbG9va3VwX25hbWVfaW5m bzo6YWRhX2xvb2t1cF9uYW1lX2luZm8gKGNvbnN0IGxvb2t1cF9uYW1lX2luZm8gJmxvb2t1cF9u YW1lKQogIHsKICAgIGdkYjo6c3RyaW5nX3ZpZXcgdXNlcl9uYW1lID0gbG9va3VwX25hbWUubmFt ZSAoKTsKICAKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5MzA1MjgtZml4LWdudWxpYi1idWlsZC1l cnJvci5wYXRjaCBiL2dkYi1yaGJ6MTkzMDUyOC1maXgtZ251bGliLWJ1aWxkLWVycm9yLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDkyOTBkLi4wMDAwMDAwCi0tLSBhL2dk Yi1yaGJ6MTkzMDUyOC1maXgtZ251bGliLWJ1aWxkLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsNTQgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IFRo dSwgMTggRmViIDIwMjEgMjM6MDQ6MjkgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTkzMDUyOC1m aXgtZ251bGliLWJ1aWxkLWVycm9yLnBhdGNoCi0KLTs7IEJhY2twb3J0IGZpeCBmb3IgcmF3aGlk ZSBidWlsZCBlcnJvciAoUkggQlogMTkzMDUyOCkuCi0KLWFtZDY0LWxpbnV4LXNpZ2luZm8uYzog QWRqdXN0IGluY2x1ZGUgb3JkZXIgdG8gYXZvaWQgZ251bGliIGVycm9yCi0KLU9uIEZlZG9yYSBy YXdoaWRlLCBhZnRlciB1cGRhdGluZyB0byBnbGliYy0yLjMzLCBJJ20gc2VlaW5nIHRoZQotZm9s bG93aW5nIGJ1aWxkIGZhaWx1cmU6Ci0KLSAgQ1hYICAgIG5hdC9hbWQ2NC1saW51eC1zaWdpbmZv Lm8KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSAvdXNyL2luY2x1ZGUvYml0cy9zaWdzdGtzei5oOjI0 LAotICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9zaWduYWwuaDozMTUsCi0gICAg ICAgICAgICAgICAgIGZyb20gLi4vZ251bGliL2ltcG9ydC9zaWduYWwuaDo1MiwKLSAgICAgICAg ICAgICAgICAgZnJvbSAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L3Jhd2hpZGUtZ251bGliL2Js ZC8uLi8uLi93b3JrdHJlZS1nbnVsaWIvZ2Ric2VydmVyLy4uL2dkYi9uYXQvYW1kNjQtbGludXgt c2lnaW5mby5jOjIwOgotLi4vZ251bGliL2ltcG9ydC91bmlzdGQuaDo2NjM6MzogZXJyb3I6ICNl cnJvciAiUGxlYXNlIGluY2x1ZGUgY29uZmlnLmggZmlyc3QuIgotICA2NjMgfCAgI2Vycm9yICJQ bGVhc2UgaW5jbHVkZSBjb25maWcuaCBmaXJzdC4iCi0gICAgICB8ICAgXn5+fn4KLQotZ2xpYmMt Mi4zMyBoYXMgY2hhbmdlZCBzaWduYWwuaCB0byBub3cgaW5jbHVkZSA8Yml0cy9zaWdzdGtzei5o PiB3aGljaCwKLWluIHR1cm4sIGluY2x1ZGVzIDx1bmlzdGQuaD4uIEZvciBhIGdkYiBidWlsZCwg dGhpcyBjYXVzZXMgdGhlIGdudWxpYgotdmVyc2lvbiBvZiB1bmlzdGQuaCB0byBiZSBwdWxsZWQg aW4gZmlyc3QuICBUaGUgYnVpbGQgZmFpbHVyZSBzaG93bgotYWJvdmUgaGFwcGVucyBiZWNhdXNl IGdudWxpYidzIGNvbmZpZy5oIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBiZWZvcmUKLXRoZSBpbmNs dWRlIG9mIDxzaWduYWwuaD4uCi0KLVRoZSBmaXggaXMgc2ltcGxlIC0gd2UganVzdCByZWFycmFu Z2UgdGhlIG9yZGVyIG9mIHRoZSBoZWFkZXIgZmlsZQotaW5jbHVkZXMgdG8gbWFrZSBzdXJlIHRo YXQgZ2Ric3VwcG9ydC9jb21tb25kZWZzLmggaXMgaW5jbHVkZWQgYmVmb3JlCi1hdHRlbXB0aW5n IHRvIGluY2x1ZGUgc2lnbmFsLmguICBOb3RlIHRoYXQgZ2Ric3VwcG9ydC9jb21tb25kZWZzLmgK LWluY2x1ZGVzIDxnbnVsaWIvY29uZmlnLmg+LgotCi1CdWlsZCBhbmQgcmVncmVzc2lvbiB0ZXN0 ZWQgb24gRmVkb3JhIDMzLiAgT24gRmVkb3JhIHJhd2hpZGUsIEdEQgotYnVpbGRzIGFnYWluLgot Ci1nZGIvQ2hhbmdlTG9nOgotCi0JKiBuYXQvYW1kNjQtbGludXgtc2lnaW5mby5jOiBJbmNsdWRl ICJnZGJzdXBwb3J0L2NvbW1vbi1kZWZzLmgiCi0JKHdoaWNoIGluIHR1cm4gaW5jbHVkZXMgPGdu dWxpYi9jb25maWcuaD4pIGJlZm9yZSBpbmNsdWRlCi0Jb2YgPHNpZ25hbC5oPi4KLQotZGlmZiAt LWdpdCBhL2dkYi9uYXQvYW1kNjQtbGludXgtc2lnaW5mby5jIGIvZ2RiL25hdC9hbWQ2NC1saW51 eC1zaWdpbmZvLmMKLS0tLSBhL2dkYi9uYXQvYW1kNjQtbGludXgtc2lnaW5mby5jCi0rKysgYi9n ZGIvbmF0L2FtZDY0LWxpbnV4LXNpZ2luZm8uYwotQEAgLTE3LDggKzE3LDggQEAKLSAgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLS0jaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2lu Y2x1ZGUgImdkYnN1cHBvcnQvY29tbW9uLWRlZnMuaCIKLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0g I2luY2x1ZGUgImFtZDY0LWxpbnV4LXNpZ2luZm8uaCIKLSAKLSAjZGVmaW5lIEdEQl9TSV9TSVpF IDEyOAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTkzMjY0NS1hYXJjaDY0LXB0cmFjZS1oZWFkZXIt b3JkZXIucGF0Y2ggYi9nZGItcmhiejE5MzI2NDUtYWFyY2g2NC1wdHJhY2UtaGVhZGVyLW9yZGVy LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Zjk2MWE2Li4wMDAwMDAwCi0t LSBhL2dkYi1yaGJ6MTkzMjY0NS1hYXJjaDY0LXB0cmFjZS1oZWFkZXItb3JkZXIucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29t PgotRGF0ZTogV2VkLCAyNCBGZWIgMjAyMSAxMzoxOTowOCAtMDcwMAotU3ViamVjdDogZ2RiLXJo YnoxOTMyNjQ1LWFhcmNoNjQtcHRyYWNlLWhlYWRlci1vcmRlci5wYXRjaAotCi07OyBbYWFyY2g2 NF0gQmFja3BvcnQgZml4IGZvciBhYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMgYnVpbGQgcHJvYmxl bQotOzsgKFJIIEJaIDE5MzI2NDUpLgotCi1GaXggYWFyY2g2NC1saW51eC1ody1wb2ludC5jIGJ1 aWxkIHByb2JsZW0KLQotRHVlIHRvIGEgcmVjZW50IGdsaWJjIGhlYWRlciBmaWxlIGNoYW5nZSwg dGhlIGZpbGUKLW5hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmMgbm8gbG9uZ2VyIGJ1aWxkcyBv biBGZWRvcmEgcmF3aGlkZS4KLQotQW4gZW51bSBmb3IgUFRSQUNFX1NZU0VNVSBpcyBub3cgcHJv dmlkZWQgYnkgPHN5cy9wdHJhY2UuaD4uICBJbiB0aGUKLXBhc3QsIFBUUkFDRV9TWVNFTVUgd2Fz IGRlZmluZWQgb25seSBpbiA8YXNtL3B0cmFjZS5oPi4gIFRoaXMgaXMKLXdoYXQgaXQgbG9va3Mg bGlrZS4uLgotCi1JbiA8YXNtL3B0cmFjZS5oPjoKLQotICNkZWZpbmUgUFRSQUNFX1NZU0VNVQkJ ICAzMQotCi1JbiA8c3lzL3B0cmFjZS5oPjoKLQotZW51bSBfX3B0cmFjZV9yZXF1ZXN0Ci17Ci0g IC4uLgotICBQVFJBQ0VfU1lTRU1VID0gMzEsCi0gI2RlZmluZSBQVF9TWVNFTVUgUFRSQUNFX1NZ U0VNVQotCi0gIC4uLgotfQotCi1XaGVuIDxhc20vcHRyYWNlLmg+IGFuZCA8c3lzL3B0cmFjZS5o PiBhcmUgYm90aCBpbmNsdWRlZCBpbiBhIHNvdXJjZQotZmlsZSwgd2UgcnVuIGludG8gdGhlIGZv bGxvd2luZyBidWlsZCBwcm9ibGVtIHdoZW4gdGhlIGZvcm1lciBpcwotaW5jbHVkZWQgYmVmb3Jl IHRoZSBsYXR0ZXI6Ci0KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSBuYXQvYWFyY2g2NC1saW51eC1o dy1wb2ludC5jOjI2OgotL3Vzci9pbmNsdWRlL3N5cy9wdHJhY2UuaDo4NjozOiBlcnJvcjogZXhw ZWN0ZWQgaWRlbnRpZmllciBiZWZvcmUgbnVtZXJpYyBjb25zdGFudAotICAgODYgfCAgIFBUUkFD RV9TWVNFTVUgPSAzMSwKLSAgICAgIHwgICBefn5+fn5+fn5+fn5+Ci0KLShUaGVyZSBhcmUgbW9y ZSBlcnJvcnMgYWZ0ZXIgdGhpcyBvbmUgdG9vLikKLQotVGhlIGZpbGUgYnVpbGRzIHdpdGhvdXQg ZXJyb3Igd2hlbiA8YXNtL3B0cmFjZS5oPiBpcyBpbmNsdWRlZCBhZnRlcgotPHN5cy9wdHJhY2Uu aD4uICBJIGZvdW5kIHRoYXQgdGhpcyBpcyBhbHJlYWR5IGRvbmUgaW4KLW5hdC9hYXJjaDY0LXN2 ZS1saW51eC1wdHJhY2UuaCAod2hpY2ggaXMgaW5jbHVkZWQgYnkKLW5hdC9hYXJjaDY0LWxpbnV4 LXB0cmFjZS5jKS4KLQotSSd2ZSB0ZXN0ZWQgdGhpcyBjaGFuZ2Ugb24gRmVkb3JhIHJhd2hpZGUg YW5kIEZlZG9yYSAzMywgYm90aAotcnVubmluZyBvbiBhbiBhYXJjaDY0IG1hY2hpbmUuCi0KLWdk Yi9DaGFuZ2VMb2c6Ci0KLQkqIG5hdC9hYXJjaDY0LWxpbnV4LWh3LXBvaW50LmM6IEluY2x1ZGUg PGFzbS9wdHJhY2UuaD4gYWZ0ZXIKLQk8c3lzL3B0cmFjZS5oPi4KLQotZGlmZiAtLWdpdCBhL2dk Yi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jIGIvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3 LXBvaW50LmMKLS0tLSBhL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jCi0rKysgYi9n ZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYwotQEAgLTIzLDggKzIzLDggQEAKLSAjaW5j bHVkZSAiYWFyY2g2NC1saW51eC1ody1wb2ludC5oIgotIAotICNpbmNsdWRlIDxzeXMvdWlvLmg+ Ci0tI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNp bmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gI2luY2x1ZGUgPGVsZi5oPgotIAotIC8qIE51bWJlciBv ZiBoYXJkd2FyZSBicmVha3BvaW50cy93YXRjaHBvaW50cyB0aGUgdGFyZ2V0IHN1cHBvcnRzLgoK ZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk2NDE2Ny1jb252ZXJ0LWVudW0tcmFuZ2VfdHlwZS5wYXRj aCBiL2dkYi1yaGJ6MTk2NDE2Ny1jb252ZXJ0LWVudW0tcmFuZ2VfdHlwZS5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2Y4MDQyCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiLXJoYnoxOTY0MTY3LWNvbnZlcnQtZW51bS1yYW5nZV90eXBlLnBhdGNoCkBAIC0wLDAgKzEs Mzc1IEBACitGcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNCBNYXkg MjAyMSAxNzoxMDoyOCAtMDcwMAorU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWNvbnZlcnQtZW51 bS1yYW5nZV90eXBlLnBhdGNoCisKKzs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2Vz cydzIGNvbW1pdCB3aGljaCBjaGFuZ2VzIGVudW0KKzs7IHJhbmdlX3R5cGUgaW50byBhIGJpdCBm aWVsZCBlbnVtLgorCitnZGI6IENvbnZlcnQgZW51bSByYW5nZV90eXBlIHRvIGEgYml0IGZpZWxk IGVudW0KKworVGhlIGV4cHJlc3Npb24gcmFuZ2VfdHlwZSBlbnVtIHJlcHJlc2VudHMgdGhlIGZv bGxvd2luZyBpZGVhczoKKworICAtIExvd2VyIGJvdW5kIGlzIHNldCB0byBkZWZhdWx0LAorICAt IFVwcGVyIGJvdW5kIGlzIHNldCB0byBkZWZhdWx0LAorICAtIFVwcGVyIGJvdW5kIGlzIGV4Y2x1 c2l2ZS4KKworVGhlcmUgYXJlIGN1cnJlbnRseSA2IGVudHJpZXMgaW4gdGhlIGVudW0gdG8gcmVw cmVzZW50IHRoZSBjb21iaW5hdGlvbgorb2YgYWxsIHRob3NlIGlkZWFzLgorCitJbiBhIGZ1dHVy ZSBjb21taXQgSSdkIGxpa2UgdG8gYWRkIHN0cmlkZSBpbmZvcm1hdGlvbiB0byB0aGUgcmFuZ2Us Cit0aGlzIGNvdWxkIGluIHRoZW9yeSBhcHBlYXIgd2l0aCBhbnkgb2YgdGhlIGV4aXN0aW5nIGVu dW0gZW50cmllcywgc28KK3RoaXMgd291bGQgdGFrZSB1cyB0byAxMiBlbnVtIGVudHJpZXMuCisK K1RoaXMgZmVlbHMgbGlrZSBpdHMgZ2V0dGluZyBhIGxpdHRsZSBvdXQgb2YgaGFuZCwgc28gaW4g dGhpcyBjb21taXQgSQorc3dpdGNoIHRoZSByYW5nZV90eXBlIGVudW0gb3ZlciB0byBiZWluZyBh IGZsYWdzIHN0eWxlIGVudW0uICBUaGVyZSdzCitvbmUgZW50cnkgdG8gcmVwcmVzZW50IG5vIGZs YWdzIGJlaW5nIHNldCwgdGhlbiAzIGZsYWdzIHRvIHJlcHJlc2VudAordGhlIDMgaWRlYXMgYWJv dmUuICBBZGRpbmcgc3RyaWRlIGluZm9ybWF0aW9uIHdpbGwgcmVxdWlyZSBhZGRpbmcgb25seQor b25lIG1vcmUgZW51bSBmbGFnLgorCitJJ3ZlIHRoZW4gZ29uZSB0aHJvdWdoIGFuZCB1cGRhdGVk IHRoZSBjb2RlIHRvIGhhbmRsZSB0aGlzIGNoYW5nZS4KKworVGhlcmUgc2hvdWxkIGJlIG5vIHVz ZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgorCitnZGIvQ2hhbmdlTG9nOgor CisJKiBleHBwcmludC5jIChwcmludF9zdWJleHBfc3RhbmRhcmQpOiBVcGRhdGUgdG8gcmVmbGVj dCBjaGFuZ2VzIHRvCisJZW51bSByYW5nZV90eXBlLgorCShkdW1wX3N1YmV4cF9ib2R5X3N0YW5k YXJkKTogTGlrZXdpc2UuCisJKiBleHByZXNzaW9uLmggKGVudW0gcmFuZ2VfdHlwZSk6IENvbnZl cnQgdG8gYSBiaXQgZmllbGQgZW51bSwgYW5kCisJbWFrZSB0aGUgZW51bSB1bnNpZ25lZC4KKwkq IGYtZXhwLnkgKHN1YnJhbmdlKTogVXBkYXRlIHRvIHJlZmxlY3QgY2hhbmdlcyB0byBlbnVtCisJ cmFuZ2VfdHlwZS4KKwkqIGYtbGFuZy5jICh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBMaWtld2lzZS4K KwkqIHBhcnNlLmMgKG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCk6IExpa2V3aXNlLgorCSogcnVz dC1leHAueSAocnVzdF9wYXJzZXI6OmNvbnZlcnRfYXN0X3RvX2V4cHJlc3Npb24pOiBMaWtld2lz ZS4KKwkqIHJ1c3QtbGFuZy5jIChydXN0X3JhbmdlKTogTGlrZXdpc2UuCisJKHJ1c3RfY29tcHV0 ZV9yYW5nZSk6IExpa2V3aXNlLgorCShydXN0X3N1YnNjcmlwdCk6IExpa2V3aXNlLgorCitkaWZm IC0tZ2l0IGEvZ2RiL2V4cHByaW50LmMgYi9nZGIvZXhwcHJpbnQuYworLS0tIGEvZ2RiL2V4cHBy aW50LmMKKysrKyBiL2dkYi9leHBwcmludC5jCitAQCAtNTg0LDE3ICs1ODQsMTMgQEAgcHJpbnRf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAJICBs b25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjICsgMV0ubG9uZ2NvbnN0KTsKKyAJKnBvcyArPSAy OworIAorLQlpZiAocmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFCist CSAgICB8fCByYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKKysJaWYg KHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSkKKyAJICBmcHV0c19maWx0 ZXJlZCAoIkVYQ0xVU0lWRV8iLCBzdHJlYW0pOworIAlmcHV0c19maWx0ZXJlZCAoIlJBTkdFKCIs IHN0cmVhbSk7CistCWlmIChyYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVAorLQkgICAg fHwgcmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFQKKy0JICAgIHx8IHJhbmdlX3R5cGUg PT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKKysJaWYgKCEocmFuZ2VfdHlwZSAmIFJB TkdFX0xPV19CT1VORF9ERUZBVUxUKSkKKyAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJl YW0sIFBSRUNfQUJPVkVfQ09NTUEpOworIAlmcHV0c19maWx0ZXJlZCAoIi4uIiwgc3RyZWFtKTsK Ky0JaWYgKHJhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQKKy0JICAgIHx8IHJhbmdlX3R5 cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQorKwlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfSElH SF9CT1VORF9ERUZBVUxUKSkKKyAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBS RUNfQUJPVkVfQ09NTUEpOworIAlmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOworIAlyZXR1 cm47CitAQCAtMTExNCwzNiArMTExMCwxOSBAQCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorIAkgIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbZWx0 XS5sb25nY29uc3QpOworIAllbHQgKz0gMjsKKyAKKy0Jc3dpdGNoIChyYW5nZV90eXBlKQorLQkg IHsKKy0JICBjYXNlIEJPVEhfQk9VTkRfREVGQVVMVDoKKy0JICAgIGZwdXRzX2ZpbHRlcmVkICgi UmFuZ2UgJy4uJyIsIHN0cmVhbSk7CistCSAgICBicmVhazsKKy0JICBjYXNlIExPV19CT1VORF9E RUZBVUxUOgorLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAnLi5FWFAnIiwgc3RyZWFtKTsK Ky0JICAgIGJyZWFrOworLQkgIGNhc2UgTE9XX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFOgorLQkg ICAgZnB1dHNfZmlsdGVyZWQgKCJFeGNsdXNpdmVSYW5nZSAnLi5FWFAnIiwgc3RyZWFtKTsKKy0J ICAgIGJyZWFrOworLQkgIGNhc2UgSElHSF9CT1VORF9ERUZBVUxUOgorLQkgICAgZnB1dHNfZmls dGVyZWQgKCJSYW5nZSAnRVhQLi4nIiwgc3RyZWFtKTsKKy0JICAgIGJyZWFrOworLQkgIGNhc2Ug Tk9ORV9CT1VORF9ERUZBVUxUOgorLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAnRVhQLi5F WFAnIiwgc3RyZWFtKTsKKy0JICAgIGJyZWFrOworLQkgIGNhc2UgTk9ORV9CT1VORF9ERUZBVUxU X0VYQ0xVU0lWRToKKy0JICAgIGZwdXRzX2ZpbHRlcmVkICgiRXhjbHVzaXZlUmFuZ2UgJ0VYUC4u RVhQJyIsIHN0cmVhbSk7CistCSAgICBicmVhazsKKy0JICBkZWZhdWx0OgorLQkgICAgZnB1dHNf ZmlsdGVyZWQgKCJJbnZhbGlkIFJhbmdlISIsIHN0cmVhbSk7CistCSAgICBicmVhazsKKy0JICB9 CisrCWlmIChyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUpCisrCSAgZnB1 dHNfZmlsdGVyZWQgKCJFeGNsdXNpdmUiLCBzdHJlYW0pOworKwlmcHV0c19maWx0ZXJlZCAoIlJh bmdlICciLCBzdHJlYW0pOworKwlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfTE9XX0JPVU5EX0RF RkFVTFQpKQorKwkgIGZwdXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKKysJZnB1dHNfZmls dGVyZWQgKCIuLiIsIHN0cmVhbSk7CisrCWlmICghKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JP VU5EX0RFRkFVTFQpKQorKwkgIGZwdXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKKysJZnB1 dHNfZmlsdGVyZWQgKCInIiwgc3RyZWFtKTsKKyAKKy0JaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9C T1VORF9ERUZBVUxUCistCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkK KysJaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKSkKKyAJICBlbHQg PSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7CistCWlmIChyYW5nZV90eXBlID09IExP V19CT1VORF9ERUZBVUxUCistCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVM VCkKKysJaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCisgCSAg ZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworICAgICAgIH0KKyAgICAgICBi cmVhazsKK2RpZmYgLS1naXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24uaAor LS0tIGEvZ2RiL2V4cHJlc3Npb24uaAorKysrIGIvZ2RiL2V4cHJlc3Npb24uaAorQEAgLTE4NSwy MiArMTg1LDIyIEBAIGV4dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBl eHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICopOworICAgIG9yIGluY2x1c2l2ZS4gIFNvIHdl IGhhdmUgc2l4IHNvcnRzIG9mIHN1YnJhbmdlLiAgVGhpcyBlbnVtZXJhdGlvbgorICAgIHR5cGUg aXMgdG8gaWRlbnRpZnkgdGhpcy4gICovCisgCistZW51bSByYW5nZV90eXBlCisrZW51bSByYW5n ZV90eXBlIDogdW5zaWduZWQKKyB7CistICAvKiBOZWl0aGVyIHRoZSBsb3cgbm9yIHRoZSBoaWdo IGJvdW5kIHdhcyBnaXZlbiAtLSBzbyB0aGlzIHJlZmVycyB0bworLSAgICAgdGhlIGVudGlyZSBh dmFpbGFibGUgcmFuZ2UuICAqLworLSAgQk9USF9CT1VORF9ERUZBVUxULAorLSAgLyogVGhlIGxv dyBib3VuZCB3YXMgbm90IGdpdmVuIGFuZCB0aGUgaGlnaCBib3VuZCBpcyBpbmNsdXNpdmUuICAq LworLSAgTE9XX0JPVU5EX0RFRkFVTFQsCistICAvKiBUaGUgaGlnaCBib3VuZCB3YXMgbm90IGdp dmVuIGFuZCB0aGUgbG93IGJvdW5kIGluIGluY2x1c2l2ZS4gICovCistICBISUdIX0JPVU5EX0RF RkFVTFQsCistICAvKiBCb3RoIGJvdW5kcyB3ZXJlIGdpdmVuIGFuZCBib3RoIGFyZSBpbmNsdXNp dmUuICAqLworLSAgTk9ORV9CT1VORF9ERUZBVUxULAorLSAgLyogVGhlIGxvdyBib3VuZCB3YXMg bm90IGdpdmVuIGFuZCB0aGUgaGlnaCBib3VuZCBpcyBleGNsdXNpdmUuICAqLworLSAgTk9ORV9C T1VORF9ERUZBVUxUX0VYQ0xVU0lWRSwKKy0gIC8qIEJvdGggYm91bmRzIHdlcmUgZ2l2ZW4uICBU aGUgbG93IGJvdW5kIGlzIGluY2x1c2l2ZSBhbmQgdGhlIGhpZ2gKKy0gICAgIGJvdW5kIGlzIGV4 Y2x1c2l2ZS4gICovCistICBMT1dfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUsCisrICAvKiBUaGlz IGlzIGEgc3RhbmRhcmQgcmFuZ2UuICBCb3RoIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmRzIGFy ZQorKyAgICAgZGVmaW5lZCwgYW5kIHRoZSBib3VuZHMgYXJlIGluY2x1c2l2ZS4gICovCisrICBS QU5HRV9TVEFOREFSRCA9IDAsCisrCisrICAvKiBUaGUgbG93IGJvdW5kIHdhcyBub3QgZ2l2ZW4u ICAqLworKyAgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQgPSAxIDw8IDAsCisrCisrICAvKiBUaGUg aGlnaCBib3VuZCB3YXMgbm90IGdpdmVuLiAgKi8KKysgIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVM VCA9IDEgPDwgMSwKKysKKysgIC8qIFRoZSBoaWdoIGJvdW5kIG9mIHRoaXMgcmFuZ2UgaXMgZXhj bHVzaXZlLiAgKi8KKysgIFJBTkdFX0hJR0hfQk9VTkRfRVhDTFVTSVZFID0gMSA8PCAyLAorIH07 CisgCisrREVGX0VOVU1fRkxBR1NfVFlQRSAoZW51bSByYW5nZV90eXBlLCByYW5nZV90eXBlcyk7 CisrCisgI2VuZGlmIC8qICFkZWZpbmVkIChFWFBSRVNTSU9OX0gpICovCitkaWZmIC0tZ2l0IGEv Z2RiL2YtZXhwLnkgYi9nZGIvZi1leHAueQorLS0tIGEvZ2RiL2YtZXhwLnkKKysrKyBiL2dkYi9m LWV4cC55CitAQCAtMjg3LDI2ICsyODcsMzAgQEAgYXJnbGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAg ICVwcmVjIEFCT1ZFX0NPTU1BCisgLyogVGhlcmUgYXJlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2Ug dHlwZXMgaW4gRjkwLiAgKi8KKyAKKyBzdWJyYW5nZToJZXhwICc6JyBleHAJJXByZWMgQUJPVkVf Q09NTUEKKy0JCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgCist CQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgTk9ORV9CT1VORF9ERUZBVUxUKTsK KysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKKysJCQkgIHdy aXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBSQU5HRV9TVEFOREFSRCk7CisgCQkJICB3cml0 ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KKyAJOworIAorIHN1YnJhbmdl OglleHAgJzonCSVwcmVjIEFCT1ZFX0NPTU1BCisgCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAo cHN0YXRlLCBPUF9SQU5HRSk7CistCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwg SElHSF9CT1VORF9ERUZBVUxUKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRl LAorKwkJCQkJCSBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpOworIAkJCSAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9CisgCTsKKyAKKyBzdWJyYW5nZToJJzonIGV4 cAklcHJlYyBBQk9WRV9DT01NQQorIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwg T1BfUkFOR0UpOworLQkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIExPV19CT1VO RF9ERUZBVUxUKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAorKwkJCQkJ CSBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCk7CisgCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAo cHN0YXRlLCBPUF9SQU5HRSk7IH0KKyAJOworIAorIHN1YnJhbmdlOgknOicJJXByZWMgQUJPVkVf Q09NTUEKKyAJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKKy0J CQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBCT1RIX0JPVU5EX0RFRkFVTFQpOwor KwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsCisrCQkJCQkJIChSQU5HRV9MT1df Qk9VTkRfREVGQVVMVAorKwkJCQkJCSAgfCBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKTsKKyAJ CQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQorIAk7CisgCitk aWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCistLS0gYS9nZGIvZi1sYW5n LmMKKysrKyBiL2dkYi9mLWxhbmcuYworQEAgLTEzMSwxMiArMTMxLDEyIEBAIHZhbHVlX2Y5MF9z dWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKKyAKKyAgICpwb3MgKz0gMzsKKyAKKy0gIGlm IChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9C T1VORF9ERUZBVUxUKQorKyAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVM VCkKKyAgICAgbG93X2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKTsK KyAgIGVsc2UKKyAgICAgbG93X2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhw IChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7CisgCistICBpZiAocmFuZ2VfdHlwZSA9PSBI SUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCisr ICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkKKyAgICAgaGlnaF9i b3VuZCA9IHJhbmdlLT5ib3VuZHMgKCktPmhpZ2guY29uc3RfdmFsICgpOworICAgZWxzZQorICAg ICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBl eHAsIHBvcywgbm9zaWRlKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2Uu YworLS0tIGEvZ2RiL3BhcnNlLmMKKysrKyBiL2dkYi9wYXJzZS5jCitAQCAtOTIxLDIxICs5MjEs MTMgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwciwgaW50IGVuZHBvcywKKyAgICAgICByYW5nZV90eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkK KyAJbG9uZ2VzdF90b19pbnQgKGV4cHItPmVsdHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKKyAK Ky0gICAgICBzd2l0Y2ggKHJhbmdlX3R5cGUpCistCXsKKy0JY2FzZSBMT1dfQk9VTkRfREVGQVVM VDoKKy0JY2FzZSBMT1dfQk9VTkRfREVGQVVMVF9FWENMVVNJVkU6CistCWNhc2UgSElHSF9CT1VO RF9ERUZBVUxUOgorLQkgIGFyZ3MgPSAxOworLQkgIGJyZWFrOworLQljYXNlIEJPVEhfQk9VTkRf REVGQVVMVDoKKy0JICBhcmdzID0gMDsKKy0JICBicmVhazsKKy0JY2FzZSBOT05FX0JPVU5EX0RF RkFVTFQ6CistCWNhc2UgTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRToKKy0JICBhcmdzID0g MjsKKy0JICBicmVhazsKKy0JfQorKyAgICAgIC8qIEFzc3VtZSB0aGUgcmFuZ2UgaGFzIDIgYXJn dW1lbnRzIChsb3cgYm91bmQgYW5kIGhpZ2ggYm91bmQpLCB0aGVuCisrCSByZWR1Y2UgdGhlIGFy Z3VtZW50IGNvdW50IGlmIGFueSBib3VuZHMgYXJlIHNldCB0byBkZWZhdWx0LiAgKi8KKysgICAg ICBhcmdzID0gMjsKKysgICAgICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZB VUxUKQorKwktLWFyZ3M7CisrICAgICAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5E X0RFRkFVTFQpCisrCS0tYXJnczsKKyAKKyAgICAgICBicmVhazsKKyAKK2RpZmYgLS1naXQgYS9n ZGIvcnVzdC1leHAueSBiL2dkYi9ydXN0LWV4cC55CistLS0gYS9nZGIvcnVzdC1leHAueQorKysr IGIvZ2RiL3J1c3QtZXhwLnkKK0BAIC0yNDkyLDI0ICsyNDkyLDI5IEBAIHJ1c3RfcGFyc2VyOjpj b252ZXJ0X2FzdF90b19leHByZXNzaW9uIChjb25zdCBzdHJ1Y3QgcnVzdF9vcCAqb3BlcmF0aW9u LAorIAorICAgICBjYXNlIE9QX1JBTkdFOgorICAgICAgIHsKKy0JZW51bSByYW5nZV90eXBlIGtp bmQgPSBCT1RIX0JPVU5EX0RFRkFVTFQ7CisrCWVudW0gcmFuZ2VfdHlwZSBraW5kID0gKFJBTkdF X0hJR0hfQk9VTkRfREVGQVVMVAorKwkJCQl8IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKTsKKyAK KyAJaWYgKG9wZXJhdGlvbi0+bGVmdC5vcCAhPSBOVUxMKQorIAkgIHsKKyAJICAgIGNvbnZlcnRf YXN0X3RvX2V4cHJlc3Npb24gKG9wZXJhdGlvbi0+bGVmdC5vcCwgdG9wKTsKKy0JICAgIGtpbmQg PSBISUdIX0JPVU5EX0RFRkFVTFQ7CisrCSAgICBraW5kICY9IH5SQU5HRV9MT1dfQk9VTkRfREVG QVVMVDsKKyAJICB9CisgCWlmIChvcGVyYXRpb24tPnJpZ2h0Lm9wICE9IE5VTEwpCisgCSAgewor IAkgICAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAob3BlcmF0aW9uLT5yaWdodC5vcCwgdG9w KTsKKy0JICAgIGlmIChraW5kID09IEJPVEhfQk9VTkRfREVGQVVMVCkKKy0JICAgICAga2luZCA9 IChvcGVyYXRpb24tPmluY2x1c2l2ZQorLQkJICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IExP V19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSk7CisrCSAgICBpZiAoa2luZCA9PSAoUkFOR0VfSElH SF9CT1VORF9ERUZBVUxUIHwgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQorKwkgICAgICB7Cisr CQlraW5kID0gUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQ7CisrCQlpZiAoIW9wZXJhdGlvbi0+aW5j bHVzaXZlKQorKwkJICBraW5kIHw9IFJBTkdFX0hJR0hfQk9VTkRfRVhDTFVTSVZFOworKwkgICAg ICB9CisgCSAgICBlbHNlCisgCSAgICAgIHsKKy0JCWdkYl9hc3NlcnQgKGtpbmQgPT0gSElHSF9C T1VORF9ERUZBVUxUKTsKKy0JCWtpbmQgPSAob3BlcmF0aW9uLT5pbmNsdXNpdmUKKy0JCQk/IE5P TkVfQk9VTkRfREVGQVVMVCA6IE5PTkVfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUpOworKwkJZ2Ri X2Fzc2VydCAoa2luZCA9PSBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpOworKwkJa2luZCA9IFJB TkdFX1NUQU5EQVJEOworKwkJaWYgKCFvcGVyYXRpb24tPmluY2x1c2l2ZSkKKysJCSAga2luZCB8 PSBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRTsKKyAJICAgICAgfQorIAkgIH0KKyAJZWxzZQor ZGlmZiAtLWdpdCBhL2dkYi9ydXN0LWxhbmcuYyBiL2dkYi9ydXN0LWxhbmcuYworLS0tIGEvZ2Ri L3J1c3QtbGFuZy5jCisrKysgYi9nZGIvcnVzdC1sYW5nLmMKK0BAIC0xMDgyLDEzICsxMDgyLDEx IEBAIHJ1c3RfcmFuZ2UgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5v c2lkZSBub3NpZGUpCisgICBraW5kID0gKGVudW0gcmFuZ2VfdHlwZSkgbG9uZ2VzdF90b19pbnQg KGV4cC0+ZWx0c1sqcG9zICsgMV0ubG9uZ2NvbnN0KTsKKyAgICpwb3MgKz0gMzsKKyAKKy0gIGlm IChraW5kID09IEhJR0hfQk9VTkRfREVGQVVMVCB8fCBraW5kID09IE5PTkVfQk9VTkRfREVGQVVM VAorLSAgICAgIHx8IGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKKysgIGlm ICghKGtpbmQgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCisgICAgIGxvdyA9IGV2YWx1YXRl X3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7CistICBpZiAoa2luZCA9PSBMT1df Qk9VTkRfREVGQVVMVCB8fCBraW5kID09IExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRQorLSAg ICAgIHx8IGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTk9ORV9CT1VORF9E RUZBVUxUX0VYQ0xVU0lWRSkKKysgIGlmICghKGtpbmQgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFV TFQpKQorICAgICBoaWdoID0gZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9z aWRlKTsKKy0gIGJvb2wgaW5jbHVzaXZlID0gKGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUIHx8 IGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQpOworKyAgYm9vbCBpbmNsdXNpdmUgPSAhKGtpbmQg JiBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSk7CisgCisgICBpZiAobm9zaWRlID09IEVWQUxf U0tJUCkKKyAgICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChleHAt PmdkYmFyY2gpLT5idWlsdGluX2ludCwgMSk7CitAQCAtMTE3MSwxMyArMTE2OSwxMyBAQCBydXN0 X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9z aWRlKQorIHN0YXRpYyB2b2lkCisgcnVzdF9jb21wdXRlX3JhbmdlIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IHZhbHVlICpyYW5nZSwKKyAJCSAgICBMT05HRVNUICpsb3csIExPTkdFU1QgKmhp Z2gsCistCQkgICAgZW51bSByYW5nZV90eXBlICpraW5kKQorKwkJICAgIHJhbmdlX3R5cGVzICpr aW5kKQorIHsKKyAgIGludCBpOworIAorICAgKmxvdyA9IDA7CisgICAqaGlnaCA9IDA7CistICAq a2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKKysgICpraW5kID0gUkFOR0VfTE9XX0JPVU5EX0RF RkFVTFQgfCBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQ7CisgCisgICBpZiAodHlwZS0+bnVtX2Zp ZWxkcyAoKSA9PSAwKQorICAgICByZXR1cm47CitAQCAtMTE4NSwxNSArMTE4MywxNSBAQCBydXN0 X2NvbXB1dGVfcmFuZ2UgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAor ICAgaSA9IDA7CisgICBpZiAoc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIDApLCAic3Rh cnQiKSA9PSAwKQorICAgICB7CistICAgICAgKmtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7Cisr ICAgICAgKmtpbmQgPSBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQ7CisgICAgICAgKmxvdyA9IHZh bHVlX2FzX2xvbmcgKHZhbHVlX2ZpZWxkIChyYW5nZSwgMCkpOworICAgICAgICsraTsKKyAgICAg fQorICAgaWYgKHR5cGUtPm51bV9maWVsZHMgKCkgPiBpCisgICAgICAgJiYgc3RyY21wIChUWVBF X0ZJRUxEX05BTUUgKHR5cGUsIGkpLCAiZW5kIikgPT0gMCkKKyAgICAgeworLSAgICAgICpraW5k ID0gKCpraW5kID09IEJPVEhfQk9VTkRfREVGQVVMVAorLQkgICAgICAgPyBMT1dfQk9VTkRfREVG QVVMVCA6IE5PTkVfQk9VTkRfREVGQVVMVCk7CisrICAgICAgKmtpbmQgPSAoKmtpbmQgPT0gKFJB TkdFX0xPV19CT1VORF9ERUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKQorKwkgICAg ICAgPyBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCA6IFJBTkdFX1NUQU5EQVJEKTsKKyAgICAgICAq aGlnaCA9IHZhbHVlX2FzX2xvbmcgKHZhbHVlX2ZpZWxkIChyYW5nZSwgaSkpOworIAorICAgICAg IGlmIChydXN0X2luY2x1c2l2ZV9yYW5nZV90eXBlX3AgKHR5cGUpKQorQEAgLTEyMTEsNyArMTIw OSw3IEBAIHJ1c3Rfc3Vic2NyaXB0IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywg ZW51bSBub3NpZGUgbm9zaWRlLAorICAgc3RydWN0IHR5cGUgKnJoc3R5cGU7CisgICBMT05HRVNU IGxvdywgaGlnaF9ib3VuZDsKKyAgIC8qIEluaXRpYWxpemVkIHRvIGFwcGVhc2UgdGhlIGNvbXBp bGVyLiAgKi8KKy0gIGVudW0gcmFuZ2VfdHlwZSBraW5kID0gQk9USF9CT1VORF9ERUZBVUxUOwor KyAgcmFuZ2VfdHlwZXMga2luZCA9IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUIHwgUkFOR0VfSElH SF9CT1VORF9ERUZBVUxUOworICAgTE9OR0VTVCBoaWdoID0gMDsKKyAgIGludCB3YW50X3NsaWNl ID0gMDsKKyAKK0BAIC0xMzA4LDggKzEzMDYsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKKyAgICAgICBlbHNl CisgCWVycm9yIChfKCJDYW5ub3Qgc3Vic2NyaXB0IG5vbi1hcnJheSB0eXBlIikpOworIAorLSAg ICAgIGlmICh3YW50X3NsaWNlCistCSAgJiYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8 IGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQpKQorKyAgICAgIGlmICh3YW50X3NsaWNlICYmIChr aW5kICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQorIAlsb3cgPSBsb3dfYm91bmQ7CisgICAg ICAgaWYgKGxvdyA8IDApCisgCWVycm9yIChfKCJJbmRleCBsZXNzIHRoYW4gemVybyIpKTsKK0BA IC0xMzI3LDcgKzEzMjQsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKKyAJICBDT1JFX0FERFIgYWRkcjsKKyAJ ICBzdHJ1Y3QgdmFsdWUgKmFkZHJ2YWwsICp0ZW07CisgCistCSAgaWYgKGtpbmQgPT0gQk9USF9C T1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gSElHSF9CT1VORF9ERUZBVUxUKQorKwkgIGlmIChraW5k ICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKQorIAkgICAgaGlnaCA9IGhpZ2hfYm91bmQ7Cisg CSAgaWYgKGhpZ2ggPCAwKQorIAkgICAgZXJyb3IgKF8oIkhpZ2ggaW5kZXggbGVzcyB0aGFuIHpl cm8iKSk7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2Vz LWF0LXByb21wdC5wYXRjaCBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXNsaWNlcy1h dC1wcm9tcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlNTg5 MAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXNsaWNl cy1hdC1wcm9tcHQucGF0Y2gKQEAgLTAsMCArMSwyNjYwIEBACitGcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkBy ZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAyMjo0NjoyMSAtMDcwMAorU3ViamVj dDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaAor Cis7OyBbZm9ydHJhbl0gQmFja3BvcnQgQW5kcmV3IEJ1cmdlc3MncyBjb21taXQgZm9yIEZvcnRy YW4gYXJyYXkKKzs7IHNsaWNlIHN1cHBvcnQKKworZ2RiL2ZvcnRyYW46IEFkZCBzdXBwb3J0IGZv ciBGb3J0cmFuIGFycmF5IHNsaWNlcyBhdCB0aGUgR0RCIHByb21wdAorCitUaGlzIGNvbW1pdCBi cmluZ3MgYXJyYXkgc2xpY2Ugc3VwcG9ydCB0byBHREIuCisKK1dBUk5JTkc6IFRoaXMgcGF0Y2gg Y29udGFpbnMgYSByYXRoZXIgYmlnIGhhY2sgd2hpY2ggaXMgbGltaXRlZCB0bworRm9ydHJhbiBh cnJheXMsIHRoaXMgY2FuIGJlIHNlZW4gaW4gZ2RidHlwZXMuYyBhbmQgZi1sYW5nLmMuICBNb3Jl CitkZXRhaWxzIG9uIHRoaXMgYmVsb3cuCisKK1RoaXMgcGF0Y2ggcmV3cml0ZXMgdHdvIGFyZWFz IG9mIEdEQidzIEZvcnRyYW4gc3VwcG9ydCwgdGhlIGNvZGUgdG8KK2V4dHJhY3QgYW4gYXJyYXkg c2xpY2UsIGFuZCB0aGUgY29kZSB0byBwcmludCBhbiBhcnJheS4KKworQWZ0ZXIgdGhpcyBjb21t aXQgYSB1c2VyIGNhbiwgZnJvbSB0aGUgR0RCIHByb21wdCwgYXNrIGZvciBhIHNsaWNlIG9mCith IEZvcnRyYW4gYXJyYXkgYW5kIHNob3VsZCBnZXQgdGhlIGNvcnJlY3QgcmVzdWx0IGJhY2suICBT bGljZXMgY2FuCisob3B0aW9uYWxseSkgaGF2ZSB0aGUgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5k LCBhbmQgYSBzdHJpZGUKK3NwZWNpZmllZC4gIFNsaWNlcyBjYW4gYWxzbyBoYXZlIGEgbmVnYXRp dmUgc3RyaWRlLgorCitGb3J0cmFuIGhhcyB0aGUgY29uY2VwdCBvZiByZXBhY2tpbmcgYXJyYXkg c2xpY2VzLiAgV2l0aGluIGEgY29tcGlsZWQKK0ZvcnRyYW4gcHJvZ3JhbSBpZiBhIHVzZXIgcGFz c2VzIGEgbm9uLWNvbnRpZ3VvdXMgYXJyYXkgc2xpY2UgdG8gYQorZnVuY3Rpb24gdGhlbiB0aGUg Y29tcGlsZXIgbWF5IGhhdmUgdG8gcmVwYWNrIHRoZSBzbGljZSwgdGhpcyBpbnZvbHZlcworY29w eWluZyB0aGUgZWxlbWVudHMgb2YgdGhlIHNsaWNlIHRvIGEgbmV3IGFyZWEgb2YgbWVtb3J5IGJl Zm9yZSB0aGUKK2NhbGwsIGFuZCBjb3B5aW5nIHRoZSBlbGVtZW50cyBiYWNrIHRvIHRoZSBvcmln aW5hbCBhcnJheSBhZnRlciB0aGUKK2NhbGwuICBXaGV0aGVyIHJlcGFja2luZyBvY2N1cnMgd2ls bCBkZXBlbmQgb24gd2hpY2ggdmVyc2lvbiBvZgorRm9ydHJhbiBpcyBiZWluZyB1c2VkLCBhbmQg d2hhdCB0eXBlIG9mIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4KKworVGhpcyBjb21taXQgYWRk cyBzdXBwb3J0IGZvciBib3RoIHBhY2tlZCwgYW5kIHVucGFja2VkIGFycmF5IHNsaWNpbmcsCit3 aXRoIHRoZSBkZWZhdWx0IGJlaW5nIHVucGFja2VkLgorCitXaXRoIGFuIHVucGFja2VkIGFycmF5 IHNsaWNlLCB3aGVuIHRoZSB1c2VyIGFza3MgZm9yIGEgc2xpY2Ugb2YgYW4KK2FycmF5IEdEQiBj cmVhdGVzIGEgbmV3IHR5cGUgdGhhdCBhY2N1cmF0ZWx5IGRlc2NyaWJlcyB3aGVyZSB0aGUKK2Vs ZW1lbnRzIG9mIHRoZSBzbGljZSBjYW4gYmUgZm91bmQgd2l0aGluIHRoZSBvcmlnaW5hbCBhcnJh eSwgYQordmFsdWUgb2YgdGhpcyB0eXBlIGlzIHRoZW4gcmV0dXJuZWQgdG8gdGhlIHVzZXIuICBU aGUgYWRkcmVzcyBvZiBhbgorZWxlbWVudCB3aXRoaW4gdGhlIHNsaWNlIHdpbGwgYmUgZXF1YWwg dG8gdGhlIGFkZHJlc3Mgb2YgYW4gZWxlbWVudAord2l0aGluIHRoZSBvcmlnaW5hbCBhcnJheS4K KworQSB1c2VyIGNhbiBjaG9vc2UgdG8gc2VsZWN0IHBhY2tlZCBhcnJheSBzbGljZXMgaW5zdGVh ZCB1c2luZzoKKworICAoZ2RiKSBzZXQgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzIG9ufG9m ZgorICAoZ2RiKSBzaG93IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcworCitXaXRoIHBhY2tl ZCBhcnJheSBzbGljZXMgR0RCIGNyZWF0ZXMgYSBuZXcgdHlwZSB0aGF0IHJlZmxlY3RzIGhvdyB0 aGUKK2VsZW1lbnRzIG9mIHRoZSBzbGljZSB3b3VsZCBsb29rIGlmIHRoZXkgd2VyZSBsYWlkIG91 dCBpbiBjb250aWd1b3VzCittZW1vcnksIGFsbG9jYXRlcyBhIHZhbHVlIG9mIHRoaXMgdHlwZSwg YW5kIHRoZW4gZmV0Y2hlcyB0aGUgZWxlbWVudHMKK2Zyb20gdGhlIG9yaWdpbmFsIGFycmF5IGFu ZCBwbGFjZXMgdGhlbiBpbnRvIHRoZSBjb250ZW50cyBidWZmZXIgb2YKK3RoZSBuZXcgdmFsdWUu CisKK09uZSBiZW5lZml0IG9mIHVzaW5nIHBhY2tlZCBzbGljZXMgb3ZlciB1bnBhY2tlZCBzbGlj ZXMgaXMgdGhlIG1lbW9yeQordXNhZ2UsIHRha2luZyBhIHNtYWxsIHNsaWNlIG9mIE4gZWxlbWVu dHMgZnJvbSBhIGxhcmdlIGFycmF5IHdpbGwKK3JlcXVpcmUgKGluIEdEQikgTiAqIEVMRU1FTlRf U0laRSBieXRlcyBvZiBtZW1vcnksIHdoaWxlIGFuIHVucGFja2VkCithcnJheSB3aWxsIGFsc28g aW5jbHVkZSBhbGwgb2YgdGhlICJwYWRkaW5nIiBiZXR3ZWVuIHRoZQorbm9uLWNvbnRpZ3VvdXMg ZWxlbWVudHMuICBUaGVyZSBhcmUgbmV3IHRlc3RzIGFkZGVkIHRoYXQgaGlnaGxpZ2h0Cit0aGlz IGRpZmZlcmVuY2UuCisKK1RoZXJlIGlzIGFsc28gYSBuZXcgZGVidWdnaW5nIGZsYWcgYWRkZWQg d2l0aCB0aGlzIGNvbW1pdCB0aGF0CitpbnRyb2R1Y2VzIHRoZXNlIGNvbW1hbmRzOgorCisgIChn ZGIpIHNldCBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcgb258b2ZmCisgIChnZGIpIHNob3cg ZGVidWcgZm9ydHJhbi1hcnJheS1zbGljaW5nCisKK1RoaXMgcHJpbnRzIGluZm9ybWF0aW9uIGFi b3V0IGhvdyB0aGUgYXJyYXkgc2xpY2VzIGFyZSBiZWluZyBidWlsdC4KKworQXMgYm90aCB0aGUg cmVwYWNraW5nLCBhbmQgdGhlIGFycmF5IHByaW50aW5nIHJlcXVpcmVzIEdEQiB0byB3YWxrCit0 aHJvdWdoIGEgbXVsdGktZGltZW5zaW9uYWwgRm9ydHJhbiBhcnJheSB2aXNpdGluZyBlYWNoIGVs ZW1lbnQsIHRoaXMKK2NvbW1pdCBhZGRzIHRoZSBmaWxlIGYtYXJyYXktd2Fsay5oLCB3aGljaCBp bnRyb2R1Y2VzIHNvbWUKK2luZnJhc3RydWN0dXJlIHRvIHN1cHBvcnQgdGhpcyBwcm9jZXNzLiAg VGhpcyBtZWFucyB0aGUgYXJyYXkgcHJpbnRpbmcKK2NvZGUgaW4gZi12YWxwcmludC5jIGlzIHNp Z25pZmljYW50bHkgcmVkdWNlZC4KKworVGhlIG9ubHkgc2xpZ2h0IGlzc3VlIHdpdGggdGhpcyBj b21taXQgaXMgdGhlICJyYXRoZXIgYmlnIGhhY2siIHRoYXQgSQorbWVudGlvbmVkIGFib3ZlLiAg VGhpcyBoYWNrIGFsbG93cyB1cyB0byBoYW5kbGUgb25lIHNwZWNpZmljIGNhc2UsCithcnJheSBz bGljZXMgd2l0aCBuZWdhdGl2ZSBzdHJpZGVzLiAgVGhpcyBpcyBzb21ldGhpbmcgdGhhdCBJIGRv bid0CitiZWxpZXZlIHRoZSBjdXJyZW50IEdEQiB2YWx1ZSBjb250ZW50cyBtb2RlbCB3aWxsIGFs bG93IHVzIHRvCitjb3JyZWN0bHkgaGFuZGxlLCBhbmQgcmF0aGVyIHRoYW4gcmV3cml0ZSB0aGUg dmFsdWUgY29udGVudHMgY29kZQorcmlnaHQgbm93LCBJJ20gaG9waW5nIHRvIHNsaXAgdGhpcyBo YWNrIGluIGFzIGEgd29yayBhcm91bmQuCisKK1RoZSBwcm9ibGVtIGlzIHRoYXQsIGFzIEkgc2Vl IGl0LCB0aGUgY3VycmVudCB2YWx1ZSBjb250ZW50cyBtb2RlbAorYXNzdW1lcyB0aGF0IGFuIG9i amVjdCBiYXNlIGFkZHJlc3Mgd2lsbCBiZSB0aGUgbG93ZXN0IGFkZHJlc3Mgd2l0aGluCit0aGF0 IG9iamVjdCwgYW5kIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3Qgc3RhcnQgYXQgdGhp cyBiYXNlCithZGRyZXNzIGFuZCBvY2N1cHkgdGhlIFRZUEVfTEVOR1RIIGJ5dGVzIGFmdGVyIHRo YXQuCisKKyggV2UgZG8gaGF2ZSB0aGUgZW1iZWRkZWRfb2Zmc2V0LCB3aGljaCBpcyB1c2VkIGZv ciBDKysgc3ViLWNsYXNzZXMsCitzdWNoIHRoYXQgYW4gb2JqZWN0IGNhbiBzdGFydCBhdCBzb21l IG9mZnNldCBmcm9tIHRoZSBjb250ZW50IGJ1ZmZlciwKK2hvd2V2ZXIsIHRoZSBhc3N1bXB0aW9u IHRoYXQgdGhlIG9iamVjdCB0aGVuIG9jY3VwaWVzIHRoZSBuZXh0CitUWVBFX0xFTkdUSCBieXRl cyBpcyBzdGlsbCB0cnVlIHdpdGhpbiBHREIuICkKKworVGhlIHByb2JsZW0gaXMgdGhhdCBGb3J0 cmFuIGFycmF5cyB3aXRoIGEgbmVnYXRpdmUgc3RyaWRlIGRvbid0IGZvbGxvdwordGhpcyBwYXR0 ZXJuLiAgSW4gdGhpcyBjYXNlIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIG9iamVjdCBwb2ludHMg dG8KK3RoZSBlbGVtZW50IHdpdGggdGhlIGhpZ2hlc3QgYWRkcmVzcywgdGhlIGNvbnRlbnRzIG9m IHRoZSBhcnJheSB0aGVuCitzdGFydCBhdCBzb21lIG9mZnNldCBfYmVmb3JlXyB0aGUgYmFzZSBh ZGRyZXNzLCBhbmQgcHJvY2VlZCBmb3Igb25lCitlbGVtZW50IF9wYXN0XyB0aGUgYmFzZSBhZGRy ZXNzLgorCitBcyB0aGUgc3RyaWRlIGZvciBzdWNoIGFuIGFycmF5IHdvdWxkIGJlIG5lZ2F0aXZl IHRoZW4sIGluIHRoZW9yeSB0aGUKK1RZUEVfTEVOR1RIIGZvciB0aGlzIHR5cGUgd291bGQgYWxz byBiZSBuZWdhdGl2ZS4gIEhvd2V2ZXIsIGluIG1hbnkKK3BsYWNlcyBhIHZhbHVlIGluIEdEQiB3 aWxsIGRlZ3JhZGUgdG8gYSBwb2ludGVyICsgbGVuZ3RoLCBhbmQgdGhlCitsZW5ndGggYWxtb3N0 IGFsd2F5cyBjb21lcyBmcm9tIHRoZSBUWVBFX0xFTkdUSC4KKworSXQgaXMgbXkgYmVsaWVmIHRo YXQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IG1vZGVsIHRoaXMgY2FzZSB0aGUgdmFsdWUKK2NvbnRl bnQgaGFuZGxpbmcgb2YgR0RCIHdpbGwgbmVlZCB0byBiZSByZXdvcmtlZCB0byBzcGxpdCBhcGFy dCB0aGUKK3ZhbHVlJ3MgY29udGVudCBidWZmZXIgKHdoaWNoIGlzIGEgYmxvY2sgb2YgbWVtb3J5 IHdpdGggYSBsZW5ndGgpLCBhbmQKK3RoZSBvYmplY3QncyBpbiBtZW1vcnkgYmFzZSBhZGRyZXNz IGFuZCBsZW5ndGgsIHdoaWNoIGNvdWxkIGJlCituZWdhdGl2ZS4KKworVGhpbmdzIGFyZSBmdXJ0 aGVyIGNvbXBsaWNhdGVkIGJlY2F1c2UgYXJyYXlzIHdpdGggbmVnYXRpdmUgc3RyaWRlcworbGlr ZSB0aGlzIGFyZSBhbHdheXMgZHluYW1pYyB0eXBlcy4gIFdoZW4gYSB2YWx1ZSBoYXMgYSBkeW5h bWljIHR5cGUKK2FuZCBpdHMgYmFzZSBhZGRyZXNzIG5lZWRzIHJlc29sdmluZyB3ZSBhY3R1YWxs eSBzdG9yZSB0aGUgYWRkcmVzcyBvZgordGhlIG9iamVjdCB3aXRoaW4gdGhlIHJlc29sdmVkIGR5 bmFtaWMgdHlwZSwgbm90IHdpdGhpbiB0aGUgdmFsdWUKK29iamVjdCBpdHNlbGYuCisKK0luIHNo b3J0IEkgZG9uJ3QgY3VycmVudGx5IHNlZSBhbiBlYXN5IHBhdGggdG8gY2xlYW5seSBzdXBwb3J0 IHRoaXMKK3NpdHVhdGlvbiB3aXRoaW4gR0RCLiAgQW5kIHNvIEkgYmVsaWV2ZSB0aGF0IGxlYXZl cyB0d28gb3B0aW9ucywKK2VpdGhlciBhZGQgYSB3b3JrIGFyb3VuZCwgb3IgY2F0Y2ggY2FzZXMg d2hlcmUgdGhlIHVzZXIgdHJpZXMgdG8gbWFrZQordXNlIG9mIGEgbmVnYXRpdmUgc3RyaWRlLCBv ciBhY2Nlc3MgYW4gYXJyYXkgd2l0aCBhIG5lZ2F0aXZlIHN0cmlkZSwKK2FuZCB0aHJvdyBhbiBl cnJvci4KKworVGhpcyBwYXRjaCBjdXJyZW50bHkgZ29lcyB3aXRoIGFkZGluZyBhIHdvcmsgYXJv dW5kLCB3aGljaCBpcyB0aGF0Cit3aGVuIHdlIHJlc29sdmUgYSBkeW5hbWljIEZvcnRyYW4gYXJy YXkgdHlwZSwgaWYgdGhlIHN0cmlkZSBpcworbmVnYXRpdmUsIHRoZW4gd2UgYWRqdXN0IHRoZSBi YXNlIGFkZHJlc3MgdG8gcG9pbnQgdG8gdGhlIGxvd2VzdAorYWRkcmVzcyByZXF1aXJlZCBieSB0 aGUgYXJyYXkuICBUaGUgcHJpbnRpbmcgYW5kIHNsaWNpbmcgY29kZSBpcyBhd2FyZQorb2YgdGhp cyBhZGp1c3RtZW50IGFuZCB3aWxsIGNvcnJlY3RseSBzbGljZSBhbmQgcHJpbnQgRm9ydHJhbiBh cnJheXMuCisKK1doZXJlIHRoaXMgaGFjayB3aWxsIHNob3cgdGhyb3VnaCB0byB0aGUgdXNlciBp cyBpZiB0aGV5IGFzayBmb3IgdGhlCithZGRyZXNzIG9mIGFuIGFycmF5IGluIHRoZWlyIHByb2dy YW0gd2l0aCBhIG5lZ2F0aXZlIGFycmF5IHN0cmlkZSwgdGhlCithZGRyZXNzIHRoZXkgZ2V0IGZy b20gR0RCIHdpbGwgbm90IG1hdGNoIHRoZSBhZGRyZXNzIHRoYXQgd291bGQgYmUKK2NvbXB1dGVk IHdpdGhpbiB0aGUgRm9ydHJhbiBwcm9ncmFtLgorCitnZGIvQ2hhbmdlTG9nOgorCisJKiBNYWtl ZmlsZS5pbiAoSEZJTEVTX05PX1NSQ0RJUik6IEFkZCBmLWFycmF5LXdhbGtlci5oLgorCSogTkVX UzogTWVudGlvbiBuZXcgb3B0aW9ucy4KKwkqIGYtYXJyYXktd2Fsa2VyLmg6IE5ldyBmaWxlLgor CSogZi1sYW5nLmM6IEluY2x1ZGUgJ2dkYmNtZC5oJyBhbmQgJ2YtYXJyYXktd2Fsa2VyLmgnLgor CShyZXBhY2tfYXJyYXlfc2xpY2VzKTogTmV3IHN0YXRpYyBnbG9iYWwuCisJKHNob3dfcmVwYWNr X2FycmF5X3NsaWNlcyk6IE5ldyBmdW5jdGlvbi4KKwkoZm9ydHJhbl9hcnJheV9zbGljaW5nX2Rl YnVnKTogTmV3IHN0YXRpYyBnbG9iYWwuCisJKHNob3dfZm9ydHJhbl9hcnJheV9zbGljaW5nX2Rl YnVnKTogTmV3IGZ1bmN0aW9uLgorCSh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBEZWxldGUuCisJKHNr aXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3QpOiBEZWxldGUuCisJKGNsYXNzIGZvcnRyYW5fYXJyYXlf cmVwYWNrZXJfYmFzZV9pbXBsKTogTmV3IGNsYXNzLgorCShjbGFzcyBmb3J0cmFuX2xhenlfYXJy YXlfcmVwYWNrZXJfaW1wbCk6IE5ldyBjbGFzcy4KKwkoY2xhc3MgZm9ydHJhbl9hcnJheV9yZXBh Y2tlcl9pbXBsKTogTmV3IGNsYXNzLgorCShmb3J0cmFuX3ZhbHVlX3N1YmFycmF5KTogQ29tcGxl dGUgcmV3cml0ZS4KKwkoc2V0X2ZvcnRyYW5fbGlzdCk6IE5ldyBzdGF0aWMgZ2xvYmFsLgorCShz aG93X2ZvcnRyYW5fbGlzdCk6IExpa2V3aXNlLgorCShfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlKTog UmVnaXN0ZXIgbmV3IGNvbW1hbmRzLgorCShmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jh c2VfYWRkcmVzc19oYWNrKTogTmV3IGZ1bmN0aW9uLgorCSogZi1sYW5nLmggKGZvcnRyYW5fYWRq dXN0X2R5bmFtaWNfYXJyYXlfYmFzZV9hZGRyZXNzX2hhY2spOgorCURlY2xhcmUuCisJKiBmLXZh bHByaW50LmM6IEluY2x1ZGUgJ2YtYXJyYXktd2Fsa2VyLmgnLgorCShjbGFzcyBmb3J0cmFuX2Fy cmF5X3ByaW50ZXJfaW1wbCk6IE5ldyBjbGFzcy4KKwkoZjc3X3ByaW50X2FycmF5XzEpOiBEZWxl dGUuCisJKGY3N19wcmludF9hcnJheSk6IERlbGV0ZS4KKwkoZm9ydHJhbl9wcmludF9hcnJheSk6 IE5ldy4KKwkoZl92YWx1ZV9wcmludF9pbm5lcik6IFVwZGF0ZSB0byBjYWxsIGZvcnRyYW5fcHJp bnRfYXJyYXkuCisJKiBnZGJ0eXBlcy5jOiBJbmNsdWRlICdmLWxhbmcuaCcuCisJKHJlc29sdmVf ZHluYW1pY190eXBlX2ludGVybmFsKTogQ2FsbAorCWZvcnRyYW5fYWRqdXN0X2R5bmFtaWNfYXJy YXlfYmFzZV9hZGRyZXNzX2hhY2suCisKK2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgorCisgICAg ICAgICogZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5leHA6IE5ldyBmaWxlLgorICAgICAg ICAqIGdkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZjkwOiBOZXcgZmlsZS4KKyAgICAgICAg KiBnZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5leHA6IE5ldyBmaWxlLgorICAg ICAgICAqIGdkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmY5MDogTmV3IGZpbGUu CisgICAgICAgICogZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cDogUmV3cml0ZSB0ZXN0cy4K KyAgICAgICAgKiBnZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZjkwOiBSZXdyaXRlIHRlc3RzLgor ICAgICAgICAqIGdkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwOiBDb3JyZWN0IGV4cGVjdGVkIHJl c3VsdHMuCisKK2dkYi9kb2MvQ2hhbmdlTG9nOgorCisgICAgICAgICogZ2RiLnRleGluZm8gKERl YnVnZ2luZyBPdXRwdXQpOiBEb2N1bWVudCAnc2V0L3Nob3cgZGVidWcKKyAgICAgICAgZm9ydHJh bi1hcnJheS1zbGljaW5nJy4KKyAgICAgICAgKFNwZWNpYWwgRm9ydHJhbiBDb21tYW5kcyk6IERv Y3VtZW50ICdzZXQvc2hvdyBmb3J0cmFuCisgICAgICAgIHJlcGFjay1hcnJheS1zbGljZXMnLgor CitkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCistLS0gYS9n ZGIvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi9NYWtlZmlsZS5pbgorQEAgLTEyNjgsNiArMTI2OCw3 IEBAIEhGSUxFU19OT19TUkNESVIgPSBcCisgCWV4cHJlc3Npb24uaCBcCisgCWV4dGVuc2lvbi5o IFwKKyAJZXh0ZW5zaW9uLXByaXYuaCBcCisrCWYtYXJyYXktd2Fsa2VyLmggXAorIAlmLWxhbmcu aCBcCisgCWZic2QtbmF0LmggXAorIAlmYnNkLXRkZXAuaCBcCitkaWZmIC0tZ2l0IGEvZ2RiL05F V1MgYi9nZGIvTkVXUworLS0tIGEvZ2RiL05FV1MKKysrKyBiL2dkYi9ORVdTCitAQCAtMTExLDYg KzExMSwxOSBAQCBtYWludGVuYW5jZSBwcmludCBjb3JlLWZpbGUtYmFja2VkLW1hcHBpbmdzCisg ICBQcmludHMgZmlsZS1iYWNrZWQgbWFwcGluZ3MgbG9hZGVkIGZyb20gYSBjb3JlIGZpbGUncyBu b3RlIHNlY3Rpb24uCisgICBPdXRwdXQgaXMgZXhwZWN0ZWQgdG8gYmUgc2ltaWxhciB0byB0aGF0 IG9mICJpbmZvIHByb2MgbWFwcGluZ3MiLgorIAorK3NldCBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNs aWNpbmcgb258b2ZmCisrc2hvdyBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcKKysgIFByaW50 IGRlYnVnZ2luZyB3aGVuIHRha2luZyBzbGljZXMgb2YgRm9ydHJhbiBhcnJheXMuCisrCisrc2V0 IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyBvbnxvZmYKKytzaG93IGZvcnRyYW4gcmVwYWNr LWFycmF5LXNsaWNlcworKyAgV2hlbiB0YWtpbmcgc2xpY2VzIGZyb20gRm9ydHJhbiBhcnJheXMg YW5kIHN0cmluZ3MsIGlmIHRoZSBzbGljZSBpcworKyAgbm9uLWNvbnRpZ3VvdXMgd2l0aGluIHRo ZSBvcmlnaW5hbCB2YWx1ZSB0aGVuLCB3aGVuIHRoaXMgb3B0aW9uIGlzCisrICBvbiwgdGhlIG5l dyB2YWx1ZSB3aWxsIGJlIHJlcGFja2VkIGludG8gYSBzaW5nbGUgY29udGlndW91cyB2YWx1ZS4K KysgIFdoZW4gdGhpcyBvcHRpb24gaXMgb2ZmLCB0aGVuIHRoZSB2YWx1ZSByZXR1cm5lZCB3aWxs IGNvbnNpc3Qgb2YgYQorKyAgZGVzY3JpcHRvciB0aGF0IGRlc2NyaWJlcyB0aGUgc2xpY2Ugd2l0 aGluIHRoZSBtZW1vcnkgb2YgdGhlCisrICBvcmlnaW5hbCBwYXJlbnQgdmFsdWUuCisrCisgKiBD aGFuZ2VkIGNvbW1hbmRzCisgCisgYWxpYXMgWy1hXSBbLS1dIEFMSUFTID0gQ09NTUFORCBbREVG QVVMVC1BUkdTLi4uXQorZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9j L2dkYi50ZXhpbmZvCistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKysgYi9nZGIvZG9jL2dk Yi50ZXhpbmZvCitAQCAtMTY5MTksNiArMTY5MTksMjkgQEAgVGhpcyBjb21tYW5kIHByaW50cyB0 aGUgdmFsdWVzIGNvbnRhaW5lZCBpbiB0aGUgRm9ydHJhbiBAY29kZXtDT01NT059CisgYmxvY2sg d2hvc2UgbmFtZSBpcyBAdmFye2NvbW1vbi1uYW1lfS4gIFdpdGggbm8gYXJndW1lbnQsIHRoZSBu YW1lcyBvZgorIGFsbCBAY29kZXtDT01NT059IGJsb2NrcyB2aXNpYmxlIGF0IHRoZSBjdXJyZW50 IHByb2dyYW0gbG9jYXRpb24gYXJlCisgcHJpbnRlZC4KKytAY2luZGV4IGFycmF5cyBzbGljZXMg KEZvcnRyYW4pCisrQGtpbmRleCBzZXQgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzCisrQGtp bmRleCBzaG93IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcworK0BpdGVtIHNldCBmb3J0cmFu IHJlcGFjay1hcnJheS1zbGljZXMgW29ufG9mZl0KKytAaXRlbSBzaG93IGZvcnRyYW4gcmVwYWNr LWFycmF5LXNsaWNlcworK1doZW4gdGFraW5nIGEgc2xpY2UgZnJvbSBhbiBhcnJheSwgYSBGb3J0 cmFuIGNvbXBpbGVyIGNhbiBjaG9vc2UgdG8KKytlaXRoZXIgcHJvZHVjZSBhbiBhcnJheSBkZXNj cmlwdG9yIHRoYXQgZGVzY3JpYmVzIHRoZSBzbGljZSBpbiBwbGFjZSwKKytvciBpdCBtYXkgcmVw YWNrIHRoZSBzbGljZSwgY29weWluZyB0aGUgZWxlbWVudHMgb2YgdGhlIHNsaWNlIGludG8gYQor K25ldyByZWdpb24gb2YgbWVtb3J5LgorKworK1doZW4gdGhpcyBzZXR0aW5nIGlzIG9uLCB0aGVu IEB2YWx1ZXtHREJOfSB3aWxsIGFsc28gcmVwYWNrIGFycmF5Cisrc2xpY2VzIGluIHNvbWUgc2l0 dWF0aW9ucy4gIFdoZW4gdGhpcyBzZXR0aW5nIGlzIG9mZiwgdGhlbgorK0B2YWx1ZXtHREJOfSB3 aWxsIGNyZWF0ZSBhcnJheSBkZXNjcmlwdG9ycyBmb3Igc2xpY2VzIHRoYXQgcmVmZXJlbmNlCisr dGhlIG9yaWdpbmFsIGRhdGEgaW4gcGxhY2UuCisrCisrQHZhbHVle0dEQk59IHdpbGwgbmV2ZXIg cmVwYWNrIGFuIGFycmF5IHNsaWNlIGlmIHRoZSBkYXRhIGZvciB0aGUKKytzbGljZSBpcyBjb250 aWd1b3VzIHdpdGhpbiB0aGUgb3JpZ2luYWwgYXJyYXkuCisrCisrQHZhbHVle0dEQk59IHdpbGwg YWx3YXlzIHJlcGFjayBzdHJpbmcgc2xpY2VzIGlmIHRoZSBkYXRhIGZvciB0aGUKKytzbGljZSBp cyBub24tY29udGlndW91cyB3aXRoaW4gdGhlIG9yaWdpbmFsIHN0cmluZyBhcyBAdmFsdWV7R0RC Tn0KKytkb2VzIG5vdCBzdXBwb3J0IHByaW50aW5nIG5vbi1jb250aWd1b3VzIHN0cmluZ3MuCisr CisrVGhlIGRlZmF1bHQgZm9yIHRoaXMgc2V0dGluZyBpcyBAY29kZXtvZmZ9LgorIEBlbmQgdGFi bGUKKyAKKyBAbm9kZSBQYXNjYWwKK0BAIC0yNjUwNyw2ICsyNjUzMCwxNiBAQCBTaG93IHRoZSBj dXJyZW50IHN0YXRlIG9mIEZyZWVCU0QgTFdQIGRlYnVnZ2luZyBtZXNzYWdlcy4KKyBUdXJucyBv biBvciBvZmYgZGVidWdnaW5nIG1lc3NhZ2VzIGZyb20gdGhlIEZyZWVCU0QgbmF0aXZlIHRhcmdl dC4KKyBAaXRlbSBzaG93IGRlYnVnIGZic2QtbmF0CisgU2hvdyB0aGUgY3VycmVudCBzdGF0ZSBv ZiBGcmVlQlNEIG5hdGl2ZSB0YXJnZXQgZGVidWdnaW5nIG1lc3NhZ2VzLgorKworK0BpdGVtIHNl dCBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcKKytAY2luZGV4IGZvcnRyYW4gYXJyYXkgc2xp Y2luZyBkZWJ1Z2dpbmcgaW5mbworK1R1cm5zIG9uIG9yIG9mZiBkaXNwbGF5IG9mIEB2YWx1ZXtH REJOfSBGb3J0cmFuIGFycmF5IHNsaWNpbmcKKytkZWJ1Z2dpbmcgaW5mby4gIFRoZSBkZWZhdWx0 IGlzIG9mZi4KKysKKytAaXRlbSBzaG93IGRlYnVnIGZvcnRyYW4tYXJyYXktc2xpY2luZworK0Rp c3BsYXlzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGRpc3BsYXlpbmcgQHZhbHVle0dEQk59IEZvcnRy YW4gYXJyYXkKKytzbGljaW5nIGRlYnVnZ2luZyBpbmZvLgorKworIEBpdGVtIHNldCBkZWJ1ZyBm cmFtZQorIEBjaW5kZXggZnJhbWUgZGVidWdnaW5nIGluZm8KKyBUdXJucyBvbiBvciBvZmYgZGlz cGxheSBvZiBAdmFsdWV7R0RCTn0gZnJhbWUgZGVidWdnaW5nIGluZm8uICBUaGUKK2RpZmYgLS1n aXQgYS9nZGIvZi1hcnJheS13YWxrZXIuaCBiL2dkYi9mLWFycmF5LXdhbGtlci5oCituZXcgZmls ZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL2YtYXJyYXktd2Fsa2VyLmgK K0BAIC0wLDAgKzEsMjY1IEBACisrLyogQ29weXJpZ2h0IChDKSAyMDIwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrLyogU3VwcG9ydCBj bGFzc2VzIHRvIHdyYXAgdXAgdGhlIHByb2Nlc3Mgb2YgaXRlcmF0aW5nIG92ZXIgYQorKyAgIG11 bHRpLWRpbWVuc2lvbmFsIEZvcnRyYW4gYXJyYXkuICAqLworKworKyNpZm5kZWYgRl9BUlJBWV9X QUxLRVJfSAorKyNkZWZpbmUgRl9BUlJBWV9XQUxLRVJfSAorKworKyNpbmNsdWRlICJkZWZzLmgi CisrI2luY2x1ZGUgImdkYnR5cGVzLmgiCisrI2luY2x1ZGUgImYtbGFuZy5oIgorKworKy8qIENs YXNzIGZvciBjYWxjdWxhdGluZyB0aGUgYnl0ZSBvZmZzZXQgZm9yIGVsZW1lbnRzIHdpdGhpbiBh IHNpbmdsZQorKyAgIGRpbWVuc2lvbiBvZiBhIEZvcnRyYW4gYXJyYXkuICAqLworK2NsYXNzIGZv cnRyYW5fYXJyYXlfb2Zmc2V0X2NhbGN1bGF0b3IKKyt7CisrcHVibGljOgorKyAgLyogQ3JlYXRl IGEgbmV3IG9mZnNldCBjYWxjdWxhdG9yIGZvciBUWVBFLCB3aGljaCBpcyBlaXRoZXIgYW4gYXJy YXkgb3IgYQorKyAgICAgc3RyaW5nLiAgKi8KKysgIGV4cGxpY2l0IGZvcnRyYW5fYXJyYXlfb2Zm c2V0X2NhbGN1bGF0b3IgKHN0cnVjdCB0eXBlICp0eXBlKQorKyAgeworKyAgICAvKiBWYWxpZGF0 ZSB0aGUgdHlwZS4gICovCisrICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKKysgICAg aWYgKHR5cGUtPmNvZGUgKCkgIT0gVFlQRV9DT0RFX0FSUkFZCisrCSYmICh0eXBlLT5jb2RlICgp ICE9IFRZUEVfQ09ERV9TVFJJTkcpKQorKyAgICAgIGVycm9yIChfKCJjYW4gb25seSBjb21wdXRl IG9mZnNldHMgZm9yIGFycmF5cyBhbmQgc3RyaW5ncyIpKTsKKysKKysgICAgLyogR2V0IHRoZSBy YW5nZSwgYW5kIGV4dHJhY3QgdGhlIGJvdW5kcy4gICovCisrICAgIHN0cnVjdCB0eXBlICpyYW5n ZV90eXBlID0gdHlwZS0+aW5kZXhfdHlwZSAoKTsKKysgICAgaWYgKCFnZXRfZGlzY3JldGVfYm91 bmRzIChyYW5nZV90eXBlLCAmbV9sb3dlcmJvdW5kLCAmbV91cHBlcmJvdW5kKSkKKysgICAgICBl cnJvciAoInVuYWJsZSB0byByZWFkIGFycmF5IGJvdW5kcyIpOworKworKyAgICAvKiBGaWd1cmUg b3V0IHRoZSBzdHJpZGUgZm9yIHRoaXMgYXJyYXkuICAqLworKyAgICBzdHJ1Y3QgdHlwZSAqZWx0 X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICAgIG1f c3RyaWRlID0gdHlwZS0+aW5kZXhfdHlwZSAoKS0+Ym91bmRzICgpLT5iaXRfc3RyaWRlICgpOwor KyAgICBpZiAobV9zdHJpZGUgPT0gMCkKKysgICAgICBtX3N0cmlkZSA9IHR5cGVfbGVuZ3RoX3Vu aXRzIChlbHRfdHlwZSk7CisrICAgIGVsc2UKKysgICAgICB7CisrCXN0cnVjdCBnZGJhcmNoICph cmNoID0gZ2V0X3R5cGVfYXJjaCAoZWx0X3R5cGUpOworKwlpbnQgdW5pdF9zaXplID0gZ2RiYXJj aF9hZGRyZXNzYWJsZV9tZW1vcnlfdW5pdF9zaXplIChhcmNoKTsKKysJbV9zdHJpZGUgLz0gKHVu aXRfc2l6ZSAqIDgpOworKyAgICAgIH0KKysgIH07CisrCisrICAvKiBHZXQgdGhlIGJ5dGUgb2Zm c2V0IGZvciBlbGVtZW50IElOREVYIHdpdGhpbiB0aGUgdHlwZSB3ZSBhcmUgd29ya2luZworKyAg ICAgb24uICBUaGVyZSBpcyBubyBib3VuZHMgY2hlY2tpbmcgZG9uZSBvbiBJTkRFWC4gIElmIHRo ZSBzdHJpZGUgaXMKKysgICAgIG5lZ2F0aXZlIHRoZW4gd2Ugc3RpbGwgYXNzdW1lIHRoYXQgdGhl IGJhc2UgYWRkcmVzcyAoZm9yIHRoZSBhcnJheQorKyAgICAgb2JqZWN0KSBwb2ludHMgdG8gdGhl IGVsZW1lbnQgd2l0aCB0aGUgbG93ZXN0IG1lbW9yeSBhZGRyZXNzLCB3ZSB0aGVuCisrICAgICBj YWxjdWxhdGUgYW4gb2Zmc2V0IGFzc3VtaW5nIHRoYXQgaW5kZXggMCB3aWxsIGJlIHRoZSBlbGVt ZW50IGF0IHRoZQorKyAgICAgaGlnaGVzdCBhZGRyZXNzLCBpbmRleCAxIHRoZSBuZXh0IGhpZ2hl c3QsIGFuZCBzbyBvbi4gIFRoaXMgaXMgbm90CisrICAgICBxdWl0ZSBob3cgRm9ydHJhbiB3b3Jr cyBpbiByZWFsaXR5OyBpbiByZWFsaXR5IHRoZSBiYXNlIGFkZHJlc3Mgb2YKKysgICAgIHRoZSBv YmplY3Qgd291bGQgcG9pbnQgYXQgdGhlIGVsZW1lbnQgd2l0aCB0aGUgaGlnaGVzdCBhZGRyZXNz LCBhbmQKKysgICAgIHdlIHdvdWxkIGluZGV4IGJhY2t3YXJkcyBmcm9tIHRoZXJlIGluIHRoZSAi bm9ybWFsIiB3YXksIGhvd2V2ZXIsCisrICAgICBHREIncyBjdXJyZW50IHZhbHVlIGNvbnRlbnRz IG1vZGVsIGRvZXNuJ3Qgc3VwcG9ydCBoYXZpbmcgdGhlIGJhc2UKKysgICAgIGFkZHJlc3MgYmUg bmVhciB0byB0aGUgZW5kIG9mIHRoZSB2YWx1ZSBjb250ZW50cywgc28gd2UgY3VycmVudGx5Cisr ICAgICBhZGp1c3QgdGhlIGJhc2UgYWRkcmVzcyBvZiBGb3J0cmFuIGFycmF5cyB3aXRoIG5lZ2F0 aXZlIHN0cmlkZXMgc28KKysgICAgIHRoZWlyIGJhc2UgYWRkcmVzcyBwb2ludHMgYXQgdGhlIGxv d2VzdCBtZW1vcnkgYWRkcmVzcy4gIFRoaXMgY29kZQorKyAgICAgaGVyZSBpcyBwYXJ0IG9mIHdv cmtpbmcgYXJvdW5kIHRoaXMgd2VpcmRuZXNzLiAgKi8KKysgIExPTkdFU1QgaW5kZXhfb2Zmc2V0 IChMT05HRVNUIGluZGV4KQorKyAgeworKyAgICBMT05HRVNUIG9mZnNldDsKKysgICAgaWYgKG1f c3RyaWRlIDwgMCkKKysgICAgICBvZmZzZXQgPSBzdGQ6OmFicyAobV9zdHJpZGUpICogKG1fdXBw ZXJib3VuZCAtIGluZGV4KTsKKysgICAgZWxzZQorKyAgICAgIG9mZnNldCA9IHN0ZDo6YWJzICht X3N0cmlkZSkgKiAoaW5kZXggLSBtX2xvd2VyYm91bmQpOworKyAgICByZXR1cm4gb2Zmc2V0Owor KyAgfQorKworK3ByaXZhdGU6CisrCisrICAvKiBUaGUgc3RyaWRlIGZvciB0aGUgdHlwZSB3ZSBh cmUgd29ya2luZyB3aXRoLiAgKi8KKysgIExPTkdFU1QgbV9zdHJpZGU7CisrCisrICAvKiBUaGUg dXBwZXIgYm91bmQgZm9yIHRoZSB0eXBlIHdlIGFyZSB3b3JraW5nIHdpdGguICAqLworKyAgTE9O R0VTVCBtX3VwcGVyYm91bmQ7CisrCisrICAvKiBUaGUgbG93ZXIgYm91bmQgZm9yIHRoZSB0eXBl IHdlIGFyZSB3b3JraW5nIHdpdGguICAqLworKyAgTE9OR0VTVCBtX2xvd2VyYm91bmQ7CisrfTsK KysKKysvKiBBIGJhc2UgY2xhc3MgdXNlZCBieSBmb3J0cmFuX2FycmF5X3dhbGtlci4gIFRoZXJl J3Mgbm8gdmlydHVhbCBtZXRob2RzCisrICAgaGVyZSwgc3ViLWNsYXNzZXMgc2hvdWxkIGp1c3Qg b3ZlcnJpZGUgdGhlIGZ1bmN0aW9ucyB0aGV5IHdhbnQgaW4gb3JkZXIKKysgICB0byBzcGVjaWFs aXNlIHRoZSBiZWhhdmlvdXIgdG8gdGhlaXIgbmVlZHMuICBUaGUgZnVuY3Rpb25hbGl0eQorKyAg IHByb3ZpZGVkIGluIHRoZXNlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIHdpbGwgdmlzaXQgZXZl cnkgYXJyYXkKKysgICBlbGVtZW50LCBidXQgZG8gbm90aGluZyBmb3IgZWFjaCBlbGVtZW50LiAg Ki8KKysKKytzdHJ1Y3QgZm9ydHJhbl9hcnJheV93YWxrZXJfYmFzZV9pbXBsCisreworKyAgLyog Q2FsbGVkIHdoZW4gaXRlcmF0aW5nIGJldHdlZW4gdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZHMg b2YgZWFjaAorKyAgICAgZGltZW5zaW9uIG9mIHRoZSBhcnJheS4gIFJldHVybiB0cnVlIGlmIEdE QiBzaG91bGQgY29udGludWUgaXRlcmF0aW5nLAorKyAgICAgb3RoZXJ3aXNlLCByZXR1cm4gZmFs c2UuCisrCisrICAgICBTSE9VTERfQ09OVElOVUUgaW5kaWNhdGVzIGlmIEdEQiBpcyBnb2luZyB0 byBzdG9wIGFueXdheSwgYW5kIHNob3VsZAorKyAgICAgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0 aW9uIHdoZW4gZGVjaWRpbmcgd2hhdCB0byByZXR1cm4uICBJZgorKyAgICAgU0hPVUxEX0NPTlRJ TlVFIGlzIGZhbHNlIHRoZW4gdGhpcyBmdW5jdGlvbiBtdXN0IGFsc28gcmV0dXJuIGZhbHNlLAor KyAgICAgdGhlIGZ1bmN0aW9uIGlzIHN0aWxsIGNhbGxlZCB0aG91Z2ggaW4gY2FzZSBleHRyYSB3 b3JrIG5lZWRzIHRvIGJlCisrICAgICBkb25lIGFzIHBhcnQgb2YgdGhlIHN0b3BwaW5nIHByb2Nl c3MuICAqLworKyAgYm9vbCBjb250aW51ZV93YWxraW5nIChib29sIHNob3VsZF9jb250aW51ZSkK KysgIHsgcmV0dXJuIHNob3VsZF9jb250aW51ZTsgfQorKworKyAgLyogQ2FsbGVkIHdoZW4gR0RC IHN0YXJ0cyBpdGVyYXRpbmcgb3ZlciBhIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuICBUaGUKKysg ICAgIGFyZ3VtZW50IElOTkVSX1AgaXMgdHJ1ZSBmb3IgdGhlIGlubmVyIG1vc3QgZGltZW5zaW9u ICh0aGUgZGltZW5zaW9uCisrICAgICBjb250YWluaW5nIHRoZSBhY3R1YWwgZWxlbWVudHMgb2Yg dGhlIGFycmF5KSwgYW5kIGZhbHNlIGZvciBtb3JlIG91dGVyCisrICAgICBkaW1lbnNpb25zLiAg Rm9yIGEgY29uY3JldGUgZXhhbXBsZSBvZiBob3cgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKKysg ICAgIHNlZSB0aGUgY29tbWVudCBvbiBwcm9jZXNzX2VsZW1lbnQgYmVsb3cuICAqLworKyAgdm9p ZCBzdGFydF9kaW1lbnNpb24gKGJvb2wgaW5uZXJfcCkKKysgIHsgLyogTm90aGluZy4gICovIH0K KysKKysgIC8qIENhbGxlZCB3aGVuIEdEQiBmaW5pc2hlcyBpdGVyYXRpbmcgb3ZlciBhIGRpbWVu c2lvbiBvZiB0aGUgYXJyYXkuICBUaGUKKysgICAgIGFyZ3VtZW50IElOTkVSX1AgaXMgdHJ1ZSBm b3IgdGhlIGlubmVyIG1vc3QgZGltZW5zaW9uICh0aGUgZGltZW5zaW9uCisrICAgICBjb250YWlu aW5nIHRoZSBhY3R1YWwgZWxlbWVudHMgb2YgdGhlIGFycmF5KSwgYW5kIGZhbHNlIGZvciBtb3Jl IG91dGVyCisrICAgICBkaW1lbnNpb25zLiAgTEFTVF9QIGlzIHRydWUgZm9yIHRoZSBsYXN0IGNh bGwgYXQgYSBwYXJ0aWN1bGFyCisrICAgICBkaW1lbnNpb24uICBGb3IgYSBjb25jcmV0ZSBleGFt cGxlIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAorKyAgICAgc2VlIHRoZSBjb21tZW50 IG9uIHByb2Nlc3NfZWxlbWVudCBiZWxvdy4gICovCisrICB2b2lkIGZpbmlzaF9kaW1lbnNpb24g KGJvb2wgaW5uZXJfcCwgYm9vbCBsYXN0X3ApCisrICB7IC8qIE5vdGhpbmcuICAqLyB9CisrCisr ICAvKiBDYWxsZWQgd2hlbiBwcm9jZXNzaW5nIHRoZSBpbm5lciBtb3N0IGRpbWVuc2lvbiBvZiB0 aGUgYXJyYXksIGZvcgorKyAgICAgZXZlcnkgZWxlbWVudCBpbiB0aGUgYXJyYXkuICBFTFRfVFlQ RSBpcyB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCBiZWluZworKyAgICAgZXh0cmFjdGVkLCBhbmQg RUxUX09GRiBpcyB0aGUgb2Zmc2V0IG9mIHRoZSBlbGVtZW50IGZyb20gdGhlIHN0YXJ0IG9mCisr ICAgICBhcnJheSBiZWluZyB3YWxrZWQsIGFuZCBMQVNUX1AgaXMgdHJ1ZSBvbmx5IHdoZW4gdGhp cyBpcyB0aGUgbGFzdAorKyAgICAgZWxlbWVudCB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIGluIHRo aXMgZGltZW5zaW9uLgorKworKyAgICAgR2l2ZW4gdGhpcyB0d28gZGltZW5zaW9uYWwgYXJyYXkg KCgxLCAyKSAoMywgNCkpLCB0aGUgY2FsbHMgdG8KKysgICAgIHN0YXJ0X2RpbWVuc2lvbiwgcHJv Y2Vzc19lbGVtZW50LCBhbmQgZmluaXNoX2RpbWVuc2lvbiBsb29rIGxpa2UgdGhpczoKKysKKysg ICAgIHN0YXJ0X2RpbWVuc2lvbiAoZmFsc2UpOworKyAgICAgICBzdGFydF9kaW1lbnNpb24gKHRy dWUpOworKyAgICAgICAgIHByb2Nlc3NfZWxlbWVudCAoVFlQRSwgT0ZGU0VULCBmYWxzZSk7Cisr ICAgICAgICAgcHJvY2Vzc19lbGVtZW50IChUWVBFLCBPRkZTRVQsIHRydWUpOworKyAgICAgICBm aW5pc2hfZGltZW5zaW9uICh0cnVlLCBmYWxzZSk7CisrICAgICAgIHN0YXJ0X2RpbWVuc2lvbiAo dHJ1ZSk7CisrICAgICAgICAgcHJvY2Vzc19lbGVtZW50IChUWVBFLCBPRkZTRVQsIGZhbHNlKTsK KysgICAgICAgICBwcm9jZXNzX2VsZW1lbnQgKFRZUEUsIE9GRlNFVCwgdHJ1ZSk7CisrICAgICAg IGZpbmlzaF9kaW1lbnNpb24gKHRydWUsIHRydWUpOworKyAgICAgZmluaXNoX2RpbWVuc2lvbiAo ZmFsc2UsIHRydWUpOyAgKi8KKysgIHZvaWQgcHJvY2Vzc19lbGVtZW50IChzdHJ1Y3QgdHlwZSAq ZWx0X3R5cGUsIExPTkdFU1QgZWx0X29mZiwgYm9vbCBsYXN0X3ApCisrICB7IC8qIE5vdGhpbmcu ICAqLyB9CisrfTsKKysKKysvKiBBIGNsYXNzIHRvIHdyYXAgdXAgdGhlIHByb2Nlc3Mgb2YgaXRl cmF0aW5nIG92ZXIgYSBtdWx0aS1kaW1lbnNpb25hbAorKyAgIEZvcnRyYW4gYXJyYXkuICBJTVBM IGlzIHVzZWQgdG8gc3BlY2lhbGlzZSB3aGF0IGhhcHBlbnMgYXMgd2Ugd2FsayBvdmVyCisrICAg dGhlIGFycmF5LiAgU2VlIGNsYXNzIEZPUlRSQU5fQVJSQVlfV0FMS0VSX0JBU0VfSU1QTCAoYWJv dmUpIGZvciB0aGUKKysgICBtZXRob2RzIHRoYW4gY2FuIGJlIHVzZWQgdG8gY3VzdG9taXNlIHRo ZSBhcnJheSB3YWxrLiAgKi8KKyt0ZW1wbGF0ZTx0eXBlbmFtZSBJbXBsPgorK2NsYXNzIGZvcnRy YW5fYXJyYXlfd2Fsa2VyCisreworKyAgLyogRW5zdXJlIHRoYXQgSW1wbCBpcyBkZXJpdmVkIGZy b20gdGhlIHJlcXVpcmVkIGJhc2UgY2xhc3MuICBUaGlzIGp1c3QKKysgICAgIGVuc3VyZXMgdGhh dCBhbGwgb2YgdGhlIHJlcXVpcmVkIEFQSSBtZXRob2RzIGFyZSBhdmFpbGFibGUgYW5kIGhhdmUg YQorKyAgICAgc2Vuc2libGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4gICovCisrICBnZGJfc3Rh dGljX2Fzc2VydCAoKHN0ZDo6aXNfYmFzZV9vZjxmb3J0cmFuX2FycmF5X3dhbGtlcl9iYXNlX2lt cGwsSW1wbD46OnZhbHVlKSk7CisrCisrcHVibGljOgorKyAgLyogQ3JlYXRlIGEgbmV3IGFycmF5 IHdhbGtlci4gIFRZUEUgaXMgdGhlIHR5cGUgb2YgdGhlIGFycmF5IGJlaW5nIHdhbGtlZAorKyAg ICAgb3ZlciwgYW5kIEFERFJFU1MgaXMgdGhlIGJhc2UgYWRkcmVzcyBmb3IgdGhlIG9iamVjdCBv ZiBUWVBFIGluCisrICAgICBtZW1vcnkuICBBbGwgb3RoZXIgYXJndW1lbnRzIGFyZSBmb3J3YXJk ZWQgdG8gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZQorKyAgICAgdGVtcGxhdGUgcGFyYW1ldGVyIGNs YXNzIElNUEwuICAqLworKyAgdGVtcGxhdGUgPHR5cGVuYW1lIC4uLkFyZ3M+CisrICBmb3J0cmFu X2FycmF5X3dhbGtlciAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyZXNzLAorKwkJ CUFyZ3MuLi4gYXJncykKKysgICAgOiBtX3R5cGUgKHR5cGUpLAorKyAgICAgIG1fYWRkcmVzcyAo YWRkcmVzcyksCisrICAgICAgbV9pbXBsICh0eXBlLCBhZGRyZXNzLCBhcmdzLi4uKQorKyAgewor KyAgICBtX25kaW1lbnNpb25zID0gIGNhbGNfZjc3X2FycmF5X2RpbXMgKG1fdHlwZSk7CisrICB9 CisrCisrICAvKiBXYWxrIHRoZSBhcnJheS4gICovCisrICB2b2lkCisrICB3YWxrICgpCisrICB7 CisrICAgIHdhbGtfMSAoMSwgbV90eXBlLCAwLCBmYWxzZSk7CisrICB9CisrCisrcHJpdmF0ZToK KysgIC8qIFRoZSBjb3JlIG9mIHRoZSBhcnJheSB3YWxraW5nIGFsZ29yaXRobS4gIE5TUyBpcyB0 aGUgY3VycmVudAorKyAgICAgZGltZW5zaW9uIG51bWJlciBiZWluZyBwcm9jZXNzZWQsIFRZUEUg aXMgdGhlIHR5cGUgb2YgdGhpcyBkaW1lbnNpb24sCisrICAgICBhbmQgT0ZGU0VUIGlzIHRoZSBv ZmZzZXQgKGluIGJ5dGVzKSBmb3IgdGhlIHN0YXJ0IG9mIHRoaXMgZGltZW5zaW9uLiAgKi8KKysg IHZvaWQKKysgIHdhbGtfMSAoaW50IG5zcywgc3RydWN0IHR5cGUgKnR5cGUsIGludCBvZmZzZXQs IGJvb2wgbGFzdF9wKQorKyAgeworKyAgICAvKiBFeHRyYWN0IHRoZSByYW5nZSwgYW5kIGdldCBs b3dlciBhbmQgdXBwZXIgYm91bmRzLiAgKi8KKysgICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUg PSBjaGVja190eXBlZGVmICh0eXBlKS0+aW5kZXhfdHlwZSAoKTsKKysgICAgTE9OR0VTVCBsb3dl cmJvdW5kLCB1cHBlcmJvdW5kOworKyAgICBpZiAoIWdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdl X3R5cGUsICZsb3dlcmJvdW5kLCAmdXBwZXJib3VuZCkpCisrICAgICAgZXJyb3IgKCJmYWlsZWQg dG8gZ2V0IHJhbmdlIGJvdW5kcyIpOworKworKyAgICAvKiBDQUxDIGlzIHVzZWQgdG8gY2FsY3Vs YXRlIHRoZSBvZmZzZXRzIGZvciBlYWNoIGVsZW1lbnQgaW4gdGhpcworKyAgICAgICBkaW1lbnNp b24uICAqLworKyAgICBmb3J0cmFuX2FycmF5X29mZnNldF9jYWxjdWxhdG9yIGNhbGMgKHR5cGUp OworKworKyAgICBtX2ltcGwuc3RhcnRfZGltZW5zaW9uIChuc3MgPT0gbV9uZGltZW5zaW9ucyk7 CisrCisrICAgIGlmIChuc3MgIT0gbV9uZGltZW5zaW9ucykKKysgICAgICB7CisrCS8qIEZvciBk aW1lbnNpb25zIG90aGVyIHRoYW4gdGhlIGlubmVyIG1vc3QsIHdhbGsgZWFjaCBlbGVtZW50IGFu ZAorKwkgICByZWN1cnNlIHdoaWxlIHBlZWxpbmcgb2ZmIG9uZSBtb3JlIGRpbWVuc2lvbiBvZiB0 aGUgYXJyYXkuICAqLworKwlmb3IgKExPTkdFU1QgaSA9IGxvd2VyYm91bmQ7CisrCSAgICAgbV9p bXBsLmNvbnRpbnVlX3dhbGtpbmcgKGkgPCB1cHBlcmJvdW5kICsgMSk7CisrCSAgICAgaSsrKQor KwkgIHsKKysJICAgIC8qIFVzZSB0aGUgaW5kZXggYW5kIHRoZSBzdHJpZGUgdG8gd29yayBvdXQg YSBuZXcgb2Zmc2V0LiAgKi8KKysJICAgIExPTkdFU1QgbmV3X29mZnNldCA9IG9mZnNldCArIGNh bGMuaW5kZXhfb2Zmc2V0IChpKTsKKysKKysJICAgIC8qIE5vdyBwcmludCB0aGUgbG93ZXIgZGlt ZW5zaW9uLiAgKi8KKysJICAgIHN0cnVjdCB0eXBlICpzdWJhcnJheV90eXBlCisrCSAgICAgID0g VFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOworKwkgICAgd2Fsa18xIChu c3MgKyAxLCBzdWJhcnJheV90eXBlLCBuZXdfb2Zmc2V0LCAoaSA9PSB1cHBlcmJvdW5kKSk7Cisr CSAgfQorKyAgICAgIH0KKysgICAgZWxzZQorKyAgICAgIHsKKysJLyogRm9yIHRoZSBpbm5lciBt b3N0IGRpbWVuc2lvbiBvZiB0aGUgYXJyYXksIHByb2Nlc3MgZWFjaCBlbGVtZW50CisrCSAgIHdp dGhpbiB0aGlzIGRpbWVuc2lvbi4gICovCisrCWZvciAoTE9OR0VTVCBpID0gbG93ZXJib3VuZDsK KysJICAgICBtX2ltcGwuY29udGludWVfd2Fsa2luZyAoaSA8IHVwcGVyYm91bmQgKyAxKTsKKysJ ICAgICBpKyspCisrCSAgeworKwkgICAgTE9OR0VTVCBlbHRfb2ZmID0gb2Zmc2V0ICsgY2FsYy5p bmRleF9vZmZzZXQgKGkpOworKworKwkgICAgc3RydWN0IHR5cGUgKmVsdF90eXBlID0gY2hlY2tf dHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworKwkgICAgaWYgKGlzX2R5bmFtaWNf dHlwZSAoZWx0X3R5cGUpKQorKwkgICAgICB7CisrCQlDT1JFX0FERFIgZV9hZGRyZXNzID0gbV9h ZGRyZXNzICsgZWx0X29mZjsKKysJCWVsdF90eXBlID0gcmVzb2x2ZV9keW5hbWljX3R5cGUgKGVs dF90eXBlLCB7fSwgZV9hZGRyZXNzKTsKKysJICAgICAgfQorKworKwkgICAgbV9pbXBsLnByb2Nl c3NfZWxlbWVudCAoZWx0X3R5cGUsIGVsdF9vZmYsIChpID09IHVwcGVyYm91bmQpKTsKKysJICB9 CisrICAgICAgfQorKworKyAgICBtX2ltcGwuZmluaXNoX2RpbWVuc2lvbiAobnNzID09IG1fbmRp bWVuc2lvbnMsIGxhc3RfcCB8fCBuc3MgPT0gMSk7CisrICB9CisrCisrICAvKiBUaGUgYXJyYXkg dHlwZSBiZWluZyBwcm9jZXNzZWQuICAqLworKyAgc3RydWN0IHR5cGUgKm1fdHlwZTsKKysKKysg IC8qIFRoZSBhZGRyZXNzIGluIHRhcmdldCBtZW1vcnkgZm9yIHRoZSBvYmplY3Qgb2YgTV9UWVBF IGJlaW5nCisrICAgICBwcm9jZXNzZWQuICBUaGlzIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIHJl c29sdmUgZHluYW1pYyB0eXBlcy4gICovCisrICBDT1JFX0FERFIgbV9hZGRyZXNzOworKworKyAg LyogQW4gaW5zdGFuY2Ugb2YgdGhlIHRlbXBsYXRlIHNwZWNpYWxpc2F0aW9uIGNsYXNzLiAgKi8K KysgIEltcGwgbV9pbXBsOworKworKyAgLyogVGhlIHRvdGFsIG51bWJlciBvZiBkaW1lbnNpb25z IGluIE1fVFlQRS4gICovCisrICBpbnQgbV9uZGltZW5zaW9uczsKKyt9OworKworKyNlbmRpZiAv KiBGX0FSUkFZX1dBTEtFUl9IICovCitkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2Yt bGFuZy5jCistLS0gYS9nZGIvZi1sYW5nLmMKKysrKyBiL2dkYi9mLWxhbmcuYworQEAgLTM2LDkg KzM2LDM2IEBACisgI2luY2x1ZGUgImMtbGFuZy5oIgorICNpbmNsdWRlICJ0YXJnZXQtZmxvYXQu aCIKKyAjaW5jbHVkZSAiZ2RiYXJjaC5oIgorKyNpbmNsdWRlICJnZGJjbWQuaCIKKysjaW5jbHVk ZSAiZi1hcnJheS13YWxrZXIuaCIKKyAKKyAjaW5jbHVkZSA8bWF0aC5oPgorIAorKy8qIFdoZXRo ZXIgR0RCIHNob3VsZCByZXBhY2sgYXJyYXkgc2xpY2VzIGNyZWF0ZWQgYnkgdGhlIHVzZXIuICAq LworK3N0YXRpYyBib29sIHJlcGFja19hcnJheV9zbGljZXMgPSBmYWxzZTsKKysKKysvKiBJbXBs ZW1lbnQgJ3Nob3cgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzJy4gICovCisrc3RhdGljIHZv aWQKKytzaG93X3JlcGFja19hcnJheV9zbGljZXMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCisrCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAq dmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiUmVwYWNraW5nIG9mIEZv cnRyYW4gYXJyYXkgc2xpY2VzIGlzICVzLlxuIiksCisrCQkgICAgdmFsdWUpOworK30KKysKKysv KiBEZWJ1Z2dpbmcgb2YgRm9ydHJhbidzIGFycmF5IHNsaWNpbmcuICAqLworK3N0YXRpYyBib29s IGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1ZyA9IGZhbHNlOworKworKy8qIEltcGxlbWVudCAn c2hvdyBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcnLiAgKi8KKytzdGF0aWMgdm9pZAorK3No b3dfZm9ydHJhbl9hcnJheV9zbGljaW5nX2RlYnVnIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50 IGZyb21fdHR5LAorKwkJCQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLAorKwkJCQkgIGNv bnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkRlYnVn Z2luZyBvZiBGb3J0cmFuIGFycmF5IHNsaWNpbmcgaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7 CisrfQorKworIC8qIExvY2FsIGZ1bmN0aW9ucyAqLworIAorIC8qIFJldHVybiB0aGUgZW5jb2Rp bmcgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGNoYXJhY3RlciB0eXBlCitAQCAtMTE0LDU3 ICsxNDEsNiBAQCBlbnVtIGZfcHJpbWl0aXZlX3R5cGVzIHsKKyAgIG5yX2ZfcHJpbWl0aXZlX3R5 cGVzCisgfTsKKyAKKy0vKiBDYWxsZWQgZnJvbSBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IHRvIHRh a2UgYSBzbGljZSBvZiBhbiBhcnJheSBvciBhCistICAgc3RyaW5nLiAgQVJSQVkgaXMgdGhlIGFy cmF5IG9yIHN0cmluZyB0byBiZSBhY2Nlc3NlZC4gIEVYUCwgUE9TLCBhbmQKKy0gICBOT1NJREUg YXJlIGFzIGZvciBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQuICBSZXR1cm4gYSB2YWx1ZSB0aGF0 IGlzIGEKKy0gICBzbGljZSBvZiB0aGUgYXJyYXkuICAqLworLQorLXN0YXRpYyBzdHJ1Y3QgdmFs dWUgKgorLXZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKKy0JCSAgICBz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorLXsK Ky0gIGludCBwYyA9ICgqcG9zKSArIDE7CistICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3Vu ZCwgc3RyaWRlOworLSAgc3RydWN0IHR5cGUgKnJhbmdlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVf dHlwZSAoYXJyYXkpLT5pbmRleF90eXBlICgpKTsKKy0gIGVudW0gcmFuZ2VfZmxhZyByYW5nZV9m bGFnCistICAgID0gKGVudW0gcmFuZ2VfZmxhZykgbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1tw Y10ubG9uZ2NvbnN0KTsKKy0KKy0gICpwb3MgKz0gMzsKKy0KKy0gIGlmIChyYW5nZV9mbGFnICYg UkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpCistICAgIGxvd19ib3VuZCA9IHJhbmdlLT5ib3VuZHMg KCktPmxvdy5jb25zdF92YWwgKCk7CistICBlbHNlCistICAgIGxvd19ib3VuZCA9IHZhbHVlX2Fz X2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOworLQor LSAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpCistICAgIGhpZ2hf Ym91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5oaWdoLmNvbnN0X3ZhbCAoKTsKKy0gIGVsc2UKKy0g ICAgaGlnaF9ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwg ZXhwLCBwb3MsIG5vc2lkZSkpOworLQorLSAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9IQVNfU1RS SURFKQorLSAgICBzdHJpZGUgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxw dHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKKy0gIGVsc2UKKy0gICAgc3RyaWRlID0gMTsKKy0KKy0g IGlmIChzdHJpZGUgIT0gMSkKKy0gICAgZXJyb3IgKF8oIkZvcnRyYW4gYXJyYXkgc3RyaWRlcyBh cmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQiKSk7CistCistICByZXR1cm4gdmFsdWVfc2xpY2Ug KGFycmF5LCBsb3dfYm91bmQsIGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKy19CistCist LyogSGVscGVyIGZvciBza2lwcGluZyBhbGwgdGhlIGFyZ3VtZW50cyBpbiBhbiB1bmRldGVybWlu ZWQgYXJndW1lbnQgbGlzdC4KKy0gICBUaGlzIGZ1bmN0aW9uIHdhcyBkZXNpZ25lZCBmb3IgdXNl IGluIHRoZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QKKy0gICBjYXNlIG9mIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCBhcyBtdWx0aXBsZSwgYnV0IG5vdCBhbGwsIGNvZGUgcGF0aHMKKy0g ICByZXF1aXJlIGEgZ2VuZXJpYyBza2lwLiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLXNraXBfdW5k ZXRlcm1pbmVkX2FyZ2xpc3QgKGludCBuYXJncywgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50 ICpwb3MsCistCQkJICAgZW51bSBub3NpZGUgbm9zaWRlKQorLXsKKy0gIGZvciAoaW50IGkgPSAw OyBpIDwgbmFyZ3M7ICsraSkKKy0gICAgZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBv cywgbm9zaWRlKTsKKy19CistCisgLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyBm b3IgYSBGb3J0cmFuIGFycmF5IG9yIHN0cmluZy4gICovCisgCisgaW50CitAQCAtMTg5LDYgKzE2 NSwxNDUgQEAgY2FsY19mNzdfYXJyYXlfZGltcyAoc3RydWN0IHR5cGUgKmFycmF5X3R5cGUpCisg ICByZXR1cm4gbmRpbWVuOworIH0KKyAKKysvKiBBIGNsYXNzIHVzZWQgYnkgRk9SVFJBTl9WQUxV RV9TVUJBUlJBWSB3aGVuIHJlcGFja2luZyBGb3J0cmFuIGFycmF5CisrICAgc2xpY2VzLiAgVGhp cyBpcyBhIGJhc2UgY2xhc3MgZm9yIHR3byBhbHRlcm5hdGl2ZSByZXBhY2tpbmcgbWVjaGFuaXNt cywKKysgICBvbmUgZm9yIHdoZW4gcmVwYWNraW5nIGZyb20gYSBsYXp5IHZhbHVlLCBhbmQgb25l IGZvciByZXBhY2tpbmcgZnJvbSBhCisrICAgbm9uLWxhenkgKGFscmVhZHkgbG9hZGVkKSB2YWx1 ZS4gICovCisrY2xhc3MgZm9ydHJhbl9hcnJheV9yZXBhY2tlcl9iYXNlX2ltcGwKKysgIDogcHVi bGljIGZvcnRyYW5fYXJyYXlfd2Fsa2VyX2Jhc2VfaW1wbAorK3sKKytwdWJsaWM6CisrICAvKiBD b25zdHJ1Y3RvciwgREVTVCBpcyB0aGUgdmFsdWUgd2UgYXJlIHJlcGFja2luZyBpbnRvLiAgKi8K KysgIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfYmFzZV9pbXBsIChzdHJ1Y3QgdmFsdWUgKmRlc3Qp CisrICAgIDogbV9kZXN0IChkZXN0KSwKKysgICAgICBtX2Rlc3Rfb2Zmc2V0ICgwKQorKyAgeyAv KiBOb3RoaW5nLiAgKi8gfQorKworKyAgLyogV2hlbiB3ZSBzdGFydCBwcm9jZXNzaW5nIHRoZSBp bm5lciBtb3N0IGRpbWVuc2lvbiwgdGhpcyBpcyB3aGVyZSB3ZQorKyAgICAgd2lsbCBiZSBjcmVh dGluZyB2YWx1ZXMgZm9yIGVhY2ggZWxlbWVudCBhcyB3ZSBsb2FkIHRoZW0gYW5kIHRoZW4gY29w eQorKyAgICAgdGhlbSBpbnRvIHRoZSBNX0RFU1QgdmFsdWUuICBTZXQgYSB2YWx1ZSBtYXJrIHNv IHdlIGNhbiBmcmVlIHRoZXNlCisrICAgICB0ZW1wb3JhcnkgdmFsdWVzLiAgKi8KKysgIHZvaWQg c3RhcnRfZGltZW5zaW9uIChib29sIGlubmVyX3ApCisrICB7CisrICAgIGlmIChpbm5lcl9wKQor KyAgICAgIHsKKysJZ2RiX2Fzc2VydCAobV9tYXJrID09IG51bGxwdHIpOworKwltX21hcmsgPSB2 YWx1ZV9tYXJrICgpOworKyAgICAgIH0KKysgIH0KKysKKysgIC8qIFdoZW4gd2UgZmluaXNoIHBy b2Nlc3NpbmcgdGhlIGlubmVyIG1vc3QgZGltZW5zaW9uIGZyZWUgYWxsIHRlbXBvcmFyeQorKyAg ICAgdmFsdWUgdGhhdCB3ZXJlIGNyZWF0ZWQuICAqLworKyAgdm9pZCBmaW5pc2hfZGltZW5zaW9u IChib29sIGlubmVyX3AsIGJvb2wgbGFzdF9wKQorKyAgeworKyAgICBpZiAoaW5uZXJfcCkKKysg ICAgICB7CisrCWdkYl9hc3NlcnQgKG1fbWFyayAhPSBudWxscHRyKTsKKysJdmFsdWVfZnJlZV90 b19tYXJrIChtX21hcmspOworKwltX21hcmsgPSBudWxscHRyOworKyAgICAgIH0KKysgIH0KKysK Kytwcm90ZWN0ZWQ6CisrICAvKiBDb3B5IHRoZSBjb250ZW50cyBvZiBhcnJheSBlbGVtZW50IEVM VCBpbnRvIE1fREVTVCBhdCB0aGUgbmV4dAorKyAgICAgYXZhaWxhYmxlIG9mZnNldC4gICovCisr ICB2b2lkIGNvcHlfZWxlbWVudF90b19kZXN0IChzdHJ1Y3QgdmFsdWUgKmVsdCkKKysgIHsKKysg ICAgdmFsdWVfY29udGVudHNfY29weSAobV9kZXN0LCBtX2Rlc3Rfb2Zmc2V0LCBlbHQsIDAsCisr CQkJIFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlIChlbHQpKSk7CisrICAgIG1fZGVzdF9vZmZzZXQg Kz0gVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUgKGVsdCkpOworKyAgfQorKworKyAgLyogVGhlIHZh bHVlIGJlaW5nIHdyaXR0ZW4gdG8uICAqLworKyAgc3RydWN0IHZhbHVlICptX2Rlc3Q7CisrCisr ICAvKiBUaGUgYnl0ZSBvZmZzZXQgaW4gTV9ERVNUIGF0IHdoaWNoIHRoZSBuZXh0IGVsZW1lbnQg c2hvdWxkIGJlCisrICAgICB3cml0dGVuLiAgKi8KKysgIExPTkdFU1QgbV9kZXN0X29mZnNldDsK KysKKysgIC8qIFNldCB3aXRoIGEgY2FsbCB0byBWQUxVRV9NQVJLLCBhbmQgdGhlbiByZXNldCBh ZnRlciBjYWxsaW5nCisrICAgICBWQUxVRV9GUkVFX1RPX01BUksuICAqLworKyAgc3RydWN0IHZh bHVlICptX21hcmsgPSBudWxscHRyOworK307CisrCisrLyogQSBjbGFzcyB1c2VkIGJ5IEZPUlRS QU5fVkFMVUVfU1VCQVJSQVkgd2hlbiByZXBhY2tpbmcgRm9ydHJhbiBhcnJheQorKyAgIHNsaWNl cy4gIFRoaXMgY2xhc3MgaXMgc3BlY2lhbGlzZWQgZm9yIHJlcGFja2luZyBhbiBhcnJheSBzbGlj ZSBmcm9tIGEKKysgICBsYXp5IGFycmF5IHZhbHVlLCBhcyBzdWNoIGl0IGRvZXMgbm90IHJlcXVp cmUgdGhlIHBhcmVudCBhcnJheSB2YWx1ZSB0bworKyAgIGJlIGxvYWRlZCBpbnRvIEdEQidzIG1l bW9yeTsgdGhlIHBhcmVudCB2YWx1ZSBjb3VsZCBiZSBodWdlLCB3aGlsZSB0aGUKKysgICBzbGlj ZSBjb3VsZCBiZSB0aW55LiAgKi8KKytjbGFzcyBmb3J0cmFuX2xhenlfYXJyYXlfcmVwYWNrZXJf aW1wbAorKyAgOiBwdWJsaWMgZm9ydHJhbl9hcnJheV9yZXBhY2tlcl9iYXNlX2ltcGwKKyt7Cisr cHVibGljOgorKyAgLyogQ29uc3RydWN0b3IuICBUWVBFIGlzIHRoZSB0eXBlIG9mIHRoZSBzbGlj ZSBiZWluZyBsb2FkZWQgZnJvbSB0aGUKKysgICAgIHBhcmVudCB2YWx1ZSwgc28gdGhpcyB0eXBl IHdpbGwgY29ycmVjdGx5IHJlZmxlY3QgdGhlIHN0cmlkZXMgcmVxdWlyZWQKKysgICAgIHRvIGZp bmQgYWxsIG9mIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBwYXJlbnQgdmFsdWUuICBBRERSRVNTIGlz IHRoZQorKyAgICAgYWRkcmVzcyBpbiB0YXJnZXQgbWVtb3J5IG9mIHZhbHVlIG1hdGNoaW5nIFRZ UEUsIGFuZCBERVNUIGlzIHRoZSB2YWx1ZQorKyAgICAgd2UgYXJlIHJlcGFja2luZyBpbnRvLiAg Ki8KKysgIGV4cGxpY2l0IGZvcnRyYW5fbGF6eV9hcnJheV9yZXBhY2tlcl9pbXBsIChzdHJ1Y3Qg dHlwZSAqdHlwZSwKKysJCQkJCSAgICAgQ09SRV9BRERSIGFkZHJlc3MsCisrCQkJCQkgICAgIHN0 cnVjdCB2YWx1ZSAqZGVzdCkKKysgICAgOiBmb3J0cmFuX2FycmF5X3JlcGFja2VyX2Jhc2VfaW1w bCAoZGVzdCksCisrICAgICAgbV9hZGRyIChhZGRyZXNzKQorKyAgeyAvKiBOb3RoaW5nLiAgKi8g fQorKworKyAgLyogQ3JlYXRlIGEgbGF6eSB2YWx1ZSBpbiB0YXJnZXQgbWVtb3J5IHJlcHJlc2Vu dGluZyBhIHNpbmdsZSBlbGVtZW50LAorKyAgICAgdGhlbiBsb2FkIHRoZSBlbGVtZW50IGludG8g R0RCJ3MgbWVtb3J5IGFuZCBjb3B5IHRoZSBjb250ZW50cyBpbnRvIHRoZQorKyAgICAgZGVzdGlu YXRpb24gdmFsdWUuICAqLworKyAgdm9pZCBwcm9jZXNzX2VsZW1lbnQgKHN0cnVjdCB0eXBlICpl bHRfdHlwZSwgTE9OR0VTVCBlbHRfb2ZmLCBib29sIGxhc3RfcCkKKysgIHsKKysgICAgY29weV9l bGVtZW50X3RvX2Rlc3QgKHZhbHVlX2F0X2xhenkgKGVsdF90eXBlLCBtX2FkZHIgKyBlbHRfb2Zm KSk7CisrICB9CisrCisrcHJpdmF0ZToKKysgIC8qIFRoZSBhZGRyZXNzIGluIHRhcmdldCBtZW1v cnkgd2hlcmUgdGhlIHBhcmVudCB2YWx1ZSBzdGFydHMuICAqLworKyAgQ09SRV9BRERSIG1fYWRk cjsKKyt9OworKworKy8qIEEgY2xhc3MgdXNlZCBieSBGT1JUUkFOX1ZBTFVFX1NVQkFSUkFZIHdo ZW4gcmVwYWNraW5nIEZvcnRyYW4gYXJyYXkKKysgICBzbGljZXMuICBUaGlzIGNsYXNzIGlzIHNw ZWNpYWxpc2VkIGZvciByZXBhY2tpbmcgYW4gYXJyYXkgc2xpY2UgZnJvbSBhCisrICAgcHJldmlv dXNseSBsb2FkZWQgKG5vbi1sYXp5KSBhcnJheSB2YWx1ZSwgYXMgc3VjaCBpdCBmZXRjaGVzIHRo ZQorKyAgIGVsZW1lbnQgdmFsdWVzIGZyb20gdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXJlbnQgdmFs dWUuICAqLworK2NsYXNzIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfaW1wbAorKyAgOiBwdWJsaWMg Zm9ydHJhbl9hcnJheV9yZXBhY2tlcl9iYXNlX2ltcGwKKyt7CisrcHVibGljOgorKyAgLyogQ29u c3RydWN0b3IuICBUWVBFIGlzIHRoZSB0eXBlIGZvciB0aGUgYXJyYXkgc2xpY2Ugd2l0aGluIHRo ZSBwYXJlbnQKKysgICAgIHZhbHVlLCBhcyBzdWNoIGl0IGhhcyBzdHJpZGUgdmFsdWVzIGFzIHJl cXVpcmVkIHRvIGZpbmQgdGhlIGVsZW1lbnRzCisrICAgICB3aXRoaW4gdGhlIG9yaWdpbmFsIHBh cmVudCB2YWx1ZS4gIEFERFJFU1MgaXMgdGhlIGFkZHJlc3MgaW4gdGFyZ2V0CisrICAgICBtZW1v cnkgb2YgdGhlIHZhbHVlIG1hdGNoaW5nIFRZUEUuICBCQVNFX09GRlNFVCBpcyB0aGUgb2Zmc2V0 IGZyb20KKysgICAgIHRoZSBzdGFydCBvZiBWQUwncyBjb250ZW50IGJ1ZmZlciB0byB0aGUgc3Rh cnQgb2YgdGhlIG9iamVjdCBvZiBUWVBFLAorKyAgICAgVkFMIGlzIHRoZSBwYXJlbnQgb2JqZWN0 IGZyb20gd2hpY2ggd2UgYXJlIGxvYWRpbmcgdGhlIHZhbHVlLCBhbmQKKysgICAgIERFU1QgaXMg dGhlIHZhbHVlIGludG8gd2hpY2ggd2UgYXJlIHJlcGFja2luZy4gICovCisrICBleHBsaWNpdCBm b3J0cmFuX2FycmF5X3JlcGFja2VyX2ltcGwgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIg YWRkcmVzcywKKysJCQkJCUxPTkdFU1QgYmFzZV9vZmZzZXQsCisrCQkJCQlzdHJ1Y3QgdmFsdWUg KnZhbCwgc3RydWN0IHZhbHVlICpkZXN0KQorKyAgICA6IGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJf YmFzZV9pbXBsIChkZXN0KSwKKysgICAgICBtX2Jhc2Vfb2Zmc2V0IChiYXNlX29mZnNldCksCisr ICAgICAgbV92YWwgKHZhbCkKKysgIHsKKysgICAgZ2RiX2Fzc2VydCAoIXZhbHVlX2xhenkgKHZh bCkpOworKyAgfQorKworKyAgLyogRXh0cmFjdCBhbiBlbGVtZW50IG9mIEVMVF9UWVBFIGF0IG9m ZnNldCAoTV9CQVNFX09GRlNFVCArIEVMVF9PRkYpCisrICAgICBmcm9tIHRoZSBjb250ZW50IGJ1 ZmZlciBvZiBNX1ZBTCB0aGVuIGNvcHkgdGhpcyBleHRyYWN0ZWQgdmFsdWUgaW50bworKyAgICAg dGhlIHJlcGFja2VkIGRlc3RpbmF0aW9uIHZhbHVlLiAgKi8KKysgIHZvaWQgcHJvY2Vzc19lbGVt ZW50IChzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUsIExPTkdFU1QgZWx0X29mZiwgYm9vbCBsYXN0X3Ap CisrICB7CisrICAgIHN0cnVjdCB2YWx1ZSAqZWx0CisrICAgICAgPSB2YWx1ZV9mcm9tX2NvbXBv bmVudCAobV92YWwsIGVsdF90eXBlLCAoZWx0X29mZiArIG1fYmFzZV9vZmZzZXQpKTsKKysgICAg Y29weV9lbGVtZW50X3RvX2Rlc3QgKGVsdCk7CisrICB9CisrCisrcHJpdmF0ZToKKysgIC8qIFRo ZSBvZmZzZXQgaW50byB0aGUgY29udGVudCBidWZmZXIgb2YgTV9WQUwgdG8gdGhlIHN0YXJ0IG9m IHRoZSBzbGljZQorKyAgICAgYmVpbmcgZXh0cmFjdGVkLiAgKi8KKysgIExPTkdFU1QgbV9iYXNl X29mZnNldDsKKysKKysgIC8qIFRoZSBwYXJlbnQgdmFsdWUgZnJvbSB3aGljaCB3ZSBhcmUgZXh0 cmFjdGluZyBhIHNsaWNlLiAgKi8KKysgIHN0cnVjdCB2YWx1ZSAqbV92YWw7CisrfTsKKysKKyAv KiBDYWxsZWQgZnJvbSBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgdG8gcGVyZm9ybSBhcnJheSBp bmRleGluZywgYW5kCisgICAgc3ViLXJhbmdlIGV4dHJhY3Rpb24sIGZvciBGb3J0cmFuLiAgQXMg d2VsbCBhcyBhcnJheXMgdGhpcyBmdW5jdGlvbgorICAgIGFsc28gaGFuZGxlcyBzdHJpbmdzIGFz IHRoZXkgY2FuIGJlIHRyZWF0ZWQgbGlrZSBhcnJheXMgb2YgY2hhcmFjdGVycy4KK0BAIC0yMDAs NTEgKzMxNSwzOTQgQEAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisgZm9ydHJhbl92YWx1ZV9zdWJh cnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKyAJCQlp bnQgKnBvcywgaW50IG5hcmdzLCBlbnVtIG5vc2lkZSBub3NpZGUpCisgeworLSAgaWYgKGV4cC0+ ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0UpCistICAgIHJldHVybiB2YWx1ZV9mOTBfc3Vi YXJyYXkgKGFycmF5LCBleHAsIHBvcywgbm9zaWRlKTsKKy0KKy0gIGlmIChub3NpZGUgPT0gRVZB TF9TS0lQKQorKyAgdHlwZSAqb3JpZ2luYWxfYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFycmF5KSk7CisrICBib29sIGlzX3N0cmluZ19wID0gb3JpZ2luYWxfYXJyYXlf dHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSSU5HOworKworKyAgLyogUGVyZm9ybSBjaGVj a3MgZm9yIEFSUkFZIG5vdCBiZWluZyBhdmFpbGFibGUuICBUaGUgc29tZXdoYXQgb3Zlcmx5Cisr ICAgICBjb21wbGV4IGxvZ2ljIGhlcmUgaXMganVzdCB0byBrZWVwIGJhY2t3YXJkIGNvbXBhdGli aWxpdHkgd2l0aCB0aGUKKysgICAgIGVycm9ycyB0aGF0IHdlIHVzZWQgdG8gZ2V0IGJlZm9yZSBG T1JUUkFOX1ZBTFVFX1NVQkFSUkFZIHdhcworKyAgICAgcmV3cml0dGVuLiAgTWF5YmUgYSBmdXR1 cmUgdGFzayB3b3VsZCBzdHJlYW1saW5lIHRoZSBlcnJvciBtZXNzYWdlcyB3ZQorKyAgICAgZ2V0 IGhlcmUsIGFuZCB1cGRhdGUgYWxsIHRoZSBleHBlY3RlZCB0ZXN0IHJlc3VsdHMuICAqLworKyAg aWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgIT0gT1BfUkFOR0UpCisgICAgIHsKKy0gICAgICBz a2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChuYXJncywgZXhwLCBwb3MsIG5vc2lkZSk7CistICAg ICAgLyogUmV0dXJuIHRoZSBkdW1teSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLwor LSAgICAgIHJldHVybiBhcnJheTsKKysgICAgICBpZiAodHlwZV9ub3RfYXNzb2NpYXRlZCAob3Jp Z2luYWxfYXJyYXlfdHlwZSkpCisrCWVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50ICh2 ZWN0b3Igbm90IGFzc29jaWF0ZWQpIikpOworKyAgICAgIGVsc2UgaWYgKHR5cGVfbm90X2FsbG9j YXRlZCAob3JpZ2luYWxfYXJyYXlfdHlwZSkpCisrCWVycm9yIChfKCJubyBzdWNoIHZlY3RvciBl bGVtZW50ICh2ZWN0b3Igbm90IGFsbG9jYXRlZCkiKSk7CisrICAgIH0KKysgIGVsc2UKKysgICAg eworKyAgICAgIGlmICh0eXBlX25vdF9hc3NvY2lhdGVkIChvcmlnaW5hbF9hcnJheV90eXBlKSkK KysJZXJyb3IgKF8oImFycmF5IG5vdCBhc3NvY2lhdGVkIikpOworKyAgICAgIGVsc2UgaWYgKHR5 cGVfbm90X2FsbG9jYXRlZCAob3JpZ2luYWxfYXJyYXlfdHlwZSkpCisrCWVycm9yIChfKCJhcnJh eSBub3QgYWxsb2NhdGVkIikpOworICAgICB9CisgCistICBMT05HRVNUIHN1YnNjcmlwdF9hcnJh eVtNQVhfRk9SVFJBTl9ESU1TXTsKKy0gIGludCBuZGltZW5zaW9ucyA9IDE7CistICBzdHJ1Y3Qg dHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisrICAvKiBG aXJzdCBjaGVjayB0aGF0IHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyBpbiB0aGUgdHlwZSB3ZSBh cmUgc2xpY2luZworKyAgICAgbWF0Y2hlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB3ZSB3ZXJl IHBhc3NlZC4gICovCisrICBpbnQgbmRpbWVuc2lvbnMgPSBjYWxjX2Y3N19hcnJheV9kaW1zIChv cmlnaW5hbF9hcnJheV90eXBlKTsKKysgIGlmIChuYXJncyAhPSBuZGltZW5zaW9ucykKKysgICAg ZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOworIAorLSAgaWYgKG5hcmdz ID4gTUFYX0ZPUlRSQU5fRElNUykKKy0gICAgZXJyb3IgKF8oIlRvbyBtYW55IHN1YnNjcmlwdHMg Zm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsKKysgIC8qIFRoaXMgd2lsbCBi ZSBpbml0aWFsaXNlZCBiZWxvdyB3aXRoIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50cyBoZWxkIGlu CisrICAgICBBUlJBWS4gICovCisrICBzdHJ1Y3QgdHlwZSAqaW5uZXJfZWxlbWVudF90eXBlOwor IAorLSAgbmRpbWVuc2lvbnMgPSBjYWxjX2Y3N19hcnJheV9kaW1zICh0eXBlKTsKKysgIC8qIEV4 dHJhY3QgdGhlIHR5cGVzIG9mIGVhY2ggYXJyYXkgZGltZW5zaW9uIGZyb20gdGhlIG9yaWdpbmFs IGFycmF5CisrICAgICB0eXBlLiAgV2UgbmVlZCB0aGVzZSBhdmFpbGFibGUgc28gd2UgY2FuIGZp bGwgaW4gdGhlIGRlZmF1bHQgdXBwZXIgYW5kCisrICAgICBsb3dlciBib3VuZHMgaWYgdGhlIHVz ZXIgcmVxdWVzdGVkIHNsaWNlIGRvZXNuJ3QgcHJvdmlkZSB0aGF0CisrICAgICBpbmZvcm1hdGlv bi4gIEFkZGl0aW9uYWxseSB1bnBhY2tpbmcgdGhlIGRpbWVuc2lvbnMgbGlrZSB0aGlzIGdpdmVz IHVzCisrICAgICB0aGUgaW5uZXIgZWxlbWVudCB0eXBlLiAgKi8KKysgIHN0ZDo6dmVjdG9yPHN0 cnVjdCB0eXBlICo+IGRpbV90eXBlczsKKysgIHsKKysgICAgZGltX3R5cGVzLnJlc2VydmUgKG5k aW1lbnNpb25zKTsKKysgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBvcmlnaW5hbF9hcnJheV90eXBl OworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG5kaW1lbnNpb25zOyArK2kpCisrICAgICAgewor KwlkaW1fdHlwZXMucHVzaF9iYWNrICh0eXBlKTsKKysJdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpOworKyAgICAgIH0KKysgICAgLyogVFlQRSBpcyBub3cgdGhlIGlubmVyIGVsZW1lbnQg dHlwZSBvZiB0aGUgYXJyYXksIHdlIHN0YXJ0IHRoZSBuZXcKKysgICAgICAgYXJyYXkgc2xpY2Ug b2ZmIGFzIHRoaXMgdHlwZSwgdGhlbiBhcyB3ZSBwcm9jZXNzIHRoZSByZXF1ZXN0ZWQgc2xpY2UK KysgICAgICAgKGZyb20gdGhlIHVzZXIpIHdlIHdyYXAgbmV3IHR5cGVzIGFyb3VuZCB0aGlzIHRv IGJ1aWxkIHVwIHRoZSBmaW5hbAorKyAgICAgICBzbGljZSB0eXBlLiAgKi8KKysgICAgaW5uZXJf ZWxlbWVudF90eXBlID0gdHlwZTsKKysgIH0KKyAKKy0gIGlmIChuYXJncyAhPSBuZGltZW5zaW9u cykKKy0gICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOworKyAgLyog QXMgd2UgYW5hbHlzZSB0aGUgbmV3IHNsaWNlIHR5cGUgd2UgbmVlZCB0byB1bmRlcnN0YW5kIGlm IHRoZSBkYXRhCisrICAgICBiZWluZyByZWZlcmVuY2VkIGlzIGNvbnRpZ3VvdXMuICBEbyBkZWNp ZGUgdGhpcyB3ZSBtdXN0IHRyYWNrIHRoZSBzaXplCisrICAgICBvZiBhbiBlbGVtZW50IGF0IGVh Y2ggZGltZW5zaW9uIG9mIHRoZSBuZXcgc2xpY2UgYXJyYXkuICBJbml0aWFsbHkgdGhlCisrICAg ICBlbGVtZW50cyBvZiB0aGUgaW5uZXIgbW9zdCBkaW1lbnNpb24gb2YgdGhlIGFycmF5IGFyZSB0 aGUgc2FtZSBpbm5lcgorKyAgICAgbW9zdCBlbGVtZW50cyBhcyB0aGUgb3JpZ2luYWwgQVJSQVku ICAqLworKyAgTE9OR0VTVCBzbGljZV9lbGVtZW50X3NpemUgPSBUWVBFX0xFTkdUSCAoaW5uZXJf ZWxlbWVudF90eXBlKTsKKysKKysgIC8qIFN0YXJ0IG9mZiBhc3N1bWluZyBhbGwgZGF0YSBpcyBj b250aWd1b3VzLCB0aGlzIHdpbGwgYmUgc2V0IHRvIGZhbHNlCisrICAgICBpZiBhY2Nlc3MgdG8g YW55IGRpbWVuc2lvbiByZXN1bHRzIGluIG5vbi1jb250aWd1b3VzIGRhdGEuICAqLworKyAgYm9v bCBpc19hbGxfY29udGlndW91cyA9IHRydWU7CisrCisrICAvKiBUaGUgVE9UQUxfT0ZGU0VUIGlz IHRoZSBkaXN0YW5jZSBpbiBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUKKysgICAgIG9yaWdp bmFsIEFSUkFZIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV3IHNsaWNlLiAgVGhpcyBpcyBjYWxjdWxh dGVkIGFzCisrICAgICB3ZSBwcm9jZXNzIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB1c2VyLiAg Ki8KKysgIExPTkdFU1QgdG90YWxfb2Zmc2V0ID0gMDsKKysKKysgIC8qIEEgc3RydWN0dXJlIHJl cHJlc2VudGluZyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGRpbWVuc2lvbiBvZiB0aGUKKysgICAg IHJlc3VsdGluZyBzbGljZS4gICovCisrICBzdHJ1Y3Qgc2xpY2VfZGltCisrICB7CisrICAgIC8q IENvbnN0cnVjdG9yLiAgKi8KKysgICAgc2xpY2VfZGltIChMT05HRVNUIGwsIExPTkdFU1QgaCwg TE9OR0VTVCBzLCBzdHJ1Y3QgdHlwZSAqaWR4KQorKyAgICAgIDogbG93IChsKSwKKysJaGlnaCAo aCksCisrCXN0cmlkZSAocyksCisrCWluZGV4IChpZHgpCisrICAgIHsgLyogTm90aGluZy4gICov IH0KKysKKysgICAgLyogVGhlIGxvdyBib3VuZCBmb3IgdGhpcyBkaW1lbnNpb24gb2YgdGhlIHNs aWNlLiAgKi8KKysgICAgTE9OR0VTVCBsb3c7CisrCisrICAgIC8qIFRoZSBoaWdoIGJvdW5kIGZv ciB0aGlzIGRpbWVuc2lvbiBvZiB0aGUgc2xpY2UuICAqLworKyAgICBMT05HRVNUIGhpZ2g7Cisr CisrICAgIC8qIFRoZSBieXRlIHN0cmlkZSBmb3IgdGhpcyBkaW1lbnNpb24gb2YgdGhlIHNsaWNl LiAgKi8KKysgICAgTE9OR0VTVCBzdHJpZGU7CisrCisrICAgIHN0cnVjdCB0eXBlICppbmRleDsK KysgIH07CisrCisrICAvKiBUaGUgZGltZW5zaW9ucyBvZiB0aGUgcmVzdWx0aW5nIHNsaWNlLiAg Ki8KKysgIHN0ZDo6dmVjdG9yPHNsaWNlX2RpbT4gc2xpY2VfZGltczsKKysKKysgIC8qIFByb2Nl c3MgdGhlIGluY29taW5nIGFyZ3VtZW50cy4gICBUaGVzZSBhcmd1bWVudHMgYXJlIGluIHRoZSBy ZXZlcnNlCisrICAgICBvcmRlciB0byB0aGUgYXJyYXkgZGltZW5zaW9ucywgdGhhdCBpcyB0aGUg Zmlyc3QgYXJndW1lbnQgcmVmZXJzIHRvCisrICAgICB0aGUgbGFzdCBhcnJheSBkaW1lbnNpb24u ICAqLworKyAgaWYgKGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1ZykKKysgICAgZGVidWdfcHJp bnRmICgiUHJvY2Vzc2luZyBhcnJheSBhY2Nlc3M6XG4iKTsKKysgIGZvciAoaW50IGkgPSAwOyBp IDwgbmFyZ3M7ICsraSkKKysgICAgeworKyAgICAgIC8qIEZvciBlYWNoIGRpbWVuc2lvbiBvZiB0 aGUgYXJyYXkgdGhlIHVzZXIgd2lsbCBoYXZlIGVpdGhlciBwcm92aWRlZAorKwkgYSByYW5nZWQg YWNjZXNzIHdpdGggb3B0aW9uYWwgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kLCBhbmQKKysJIHN0 cmlkZSwgb3IgdGhlIHVzZXIgd2lsbCBoYXZlIHN1cHBsaWVkIGEgc2luZ2xlIGluZGV4LiAgKi8K KysgICAgICBzdHJ1Y3QgdHlwZSAqZGltX3R5cGUgPSBkaW1fdHlwZXNbbmRpbWVuc2lvbnMgLSAo aSArIDEpXTsKKysgICAgICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5HRSkK KysJeworKwkgIGludCBwYyA9ICgqcG9zKSArIDE7CisrCSAgZW51bSByYW5nZV9mbGFnIHJhbmdl X2ZsYWcgPSAoZW51bSByYW5nZV9mbGFnKSBleHAtPmVsdHNbcGNdLmxvbmdjb25zdDsKKysJICAq cG9zICs9IDM7CisrCisrCSAgTE9OR0VTVCBsb3csIGhpZ2gsIHN0cmlkZTsKKysJICBsb3cgPSBo aWdoID0gc3RyaWRlID0gMDsKKysKKysJICBpZiAoKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9V TkRfREVGQVVMVCkgPT0gMCkKKysJICAgIGxvdyA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1 YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOworKwkgIGVsc2UKKysJICAgIGxvdyA9 IGY3N19nZXRfbG93ZXJib3VuZCAoZGltX3R5cGUpOworKwkgIGlmICgocmFuZ2VfZmxhZyAmIFJB TkdFX0hJR0hfQk9VTkRfREVGQVVMVCkgPT0gMCkKKysJICAgIGhpZ2ggPSB2YWx1ZV9hc19sb25n IChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKKysJICBlbHNl CisrCSAgICBoaWdoID0gZjc3X2dldF91cHBlcmJvdW5kIChkaW1fdHlwZSk7CisrCSAgaWYgKChy YW5nZV9mbGFnICYgUkFOR0VfSEFTX1NUUklERSkgPT0gUkFOR0VfSEFTX1NUUklERSkKKysJICAg IHN0cmlkZSA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBw b3MsIG5vc2lkZSkpOworKwkgIGVsc2UKKysJICAgIHN0cmlkZSA9IDE7CisrCisrCSAgaWYgKHN0 cmlkZSA9PSAwKQorKwkgICAgZXJyb3IgKF8oInN0cmlkZSBtdXN0IG5vdCBiZSAwIikpOworKwor KwkgIC8qIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGRpbWVuc2lvbiBpbiB0aGUgb3JpZ2lu YWwgQVJSQVkuICAqLworKwkgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IFRZUEVfVEFSR0VU X1RZUEUgKGRpbV90eXBlKTsKKysJICBzdHJ1Y3QgdHlwZSAqaW5kZXhfdHlwZSA9IGRpbV90eXBl LT5pbmRleF90eXBlICgpOworKwkgIExPTkdFU1QgbGIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKGRp bV90eXBlKTsKKysJICBMT05HRVNUIHViID0gZjc3X2dldF91cHBlcmJvdW5kIChkaW1fdHlwZSk7 CisrCSAgTE9OR0VTVCBzZCA9IGluZGV4X3R5cGUtPmJpdF9zdHJpZGUgKCk7CisrCSAgaWYgKHNk ID09IDApCisrCSAgICBzZCA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSkgKiA4OworKworKwkg IGlmIChmb3J0cmFuX2FycmF5X3NsaWNpbmdfZGVidWcpCisrCSAgICB7CisrCSAgICAgIGRlYnVn X3ByaW50ZiAoInwtPiBSYW5nZSBhY2Nlc3NcbiIpOworKwkgICAgICBzdGQ6OnN0cmluZyBzdHIg PSB0eXBlX3RvX3N0cmluZyAoZGltX3R5cGUpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAg fC0+IFR5cGU6ICVzXG4iLCBzdHIuY19zdHIgKCkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8 ICAgfC0+IEFycmF5OlxuIik7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IExv dyBib3VuZDogJWxkXG4iLCBsYik7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+ IEhpZ2ggYm91bmQ6ICVsZFxuIiwgdWIpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAg IHwtPiBCaXQgc3RyaWRlOiAlbGRcbiIsIHNkKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAg IHwgICB8LT4gQnl0ZSBzdHJpZGU6ICVsZFxuIiwgc2QgLyA4KTsKKysJICAgICAgZGVidWdfcHJp bnRmICgifCAgIHwgICB8LT4gVHlwZSBzaXplOiAlbGRcbiIsCisrCQkJICAgIFRZUEVfTEVOR1RI IChkaW1fdHlwZSkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgICctPiBUYXJnZXQg dHlwZSBzaXplOiAlbGRcbiIsCisrCQkJICAgIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSkpOwor KwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfC0+IEFjY2Vzc2luZzpcbiIpOworKwkgICAgICBk ZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVsZFxuIiwKKysJCQkgICAgbG93 KTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gSGlnaCBib3VuZDogJWxkXG4i LAorKwkJCSAgICBoaWdoKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICAnLT4gRWxl bWVudCBzdHJpZGU6ICVsZFxuIiwKKysJCQkgICAgc3RyaWRlKTsKKysJICAgIH0KKysKKysJICAv KiBDaGVjayB0aGUgdXNlciBoYXNuJ3QgYXNrZWQgZm9yIHNvbWV0aGluZyBpbnZhbGlkLiAgKi8K KysJICBpZiAoaGlnaCA+IHViIHx8IGxvdyA8IGxiKQorKwkgICAgZXJyb3IgKF8oImFycmF5IHN1 YnNjcmlwdCBvdXQgb2YgYm91bmRzIikpOworKworKwkgIC8qIENhbGN1bGF0ZSB3aGF0IHRoaXMg ZGltZW5zaW9uIG9mIHRoZSBuZXcgc2xpY2UgYXJyYXkgd2lsbCBsb29rCisrCSAgICAgbGlrZS4g IE9GRlNFVCBpcyB0aGUgYnl0ZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCisrCSAgICAg cHJldmlvdXMgKG1vcmUgb3V0ZXIpIGRpbWVuc2lvbiB0byB0aGUgc3RhcnQgb2YgdGhpcworKwkg ICAgIGRpbWVuc2lvbi4gIEVfQ09VTlQgaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGlz CisrCSAgICAgZGltZW5zaW9uLiAgUkVNQUlOREVSIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMg cmVtYWluaW5nCisrCSAgICAgYmV0d2VlbiB0aGUgbGFzdCBpbmNsdWRlZCBlbGVtZW50IGFuZCB0 aGUgdXBwZXIgYm91bmQuICBGb3IKKysJICAgICBleGFtcGxlIGFuIGFjY2VzcyAnMTo2OjInIHdp bGwgaW5jbHVkZSBlbGVtZW50cyAxLCAzLCA1IGFuZAorKwkgICAgIGhhdmUgYSByZW1haW5kZXIg b2YgMSAoZWxlbWVudCAjNikuICAqLworKwkgIExPTkdFU1QgbG93ZXN0ID0gc3RkOjptaW4gKGxv dywgaGlnaCk7CisrCSAgTE9OR0VTVCBvZmZzZXQgPSAoc2QgLyA4KSAqIChsb3dlc3QgLSBsYik7 CisrCSAgTE9OR0VTVCBlX2NvdW50ID0gc3RkOjphYnMgKGhpZ2ggLSBsb3cpICsgMTsKKysJICBl X2NvdW50ID0gKGVfY291bnQgKyAoc3RkOjphYnMgKHN0cmlkZSkgLSAxKSkgLyBzdGQ6OmFicyAo c3RyaWRlKTsKKysJICBMT05HRVNUIG5ld19sb3cgPSAxOworKwkgIExPTkdFU1QgbmV3X2hpZ2gg PSBuZXdfbG93ICsgZV9jb3VudCAtIDE7CisrCSAgTE9OR0VTVCBuZXdfc3RyaWRlID0gKHNkICog c3RyaWRlKSAvIDg7CisrCSAgTE9OR0VTVCBsYXN0X2VsZW0gPSBsb3cgKyAoKGVfY291bnQgLSAx KSAqIHN0cmlkZSk7CisrCSAgTE9OR0VTVCByZW1haW5kZXIgPSBoaWdoIC0gbGFzdF9lbGVtOwor KwkgIGlmIChsb3cgPiBoaWdoKQorKwkgICAgeworKwkgICAgICBvZmZzZXQgKz0gc3RkOjphYnMg KHJlbWFpbmRlcikgKiBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpOworKwkgICAgICBpZiAoc3Ry aWRlID4gMCkKKysJCWVycm9yIChfKCJpbmNvcnJlY3Qgc3RyaWRlIGFuZCBib3VuZGFyeSBjb21i aW5hdGlvbiIpKTsKKysJICAgIH0KKysJICBlbHNlIGlmIChzdHJpZGUgPCAwKQorKwkgICAgZXJy b3IgKF8oImluY29ycmVjdCBzdHJpZGUgYW5kIGJvdW5kYXJ5IGNvbWJpbmF0aW9uIikpOworKwor KwkgIC8qIElzIHRoZSBkYXRhIHdpdGhpbiB0aGlzIGRpbWVuc2lvbiBjb250aWd1b3VzPyAgSXQg aXMgaWYgdGhlCisrCSAgICAgbmV3bHkgY29tcHV0ZWQgc3RyaWRlIGlzIHRoZSBzYW1lIHNpemUg YXMgYSBzaW5nbGUgZWxlbWVudCBvZgorKwkgICAgIHRoaXMgZGltZW5zaW9uLiAgKi8KKysJICBi b29sIGlzX2RpbV9jb250aWd1b3VzID0gKG5ld19zdHJpZGUgPT0gc2xpY2VfZWxlbWVudF9zaXpl KTsKKysJICBpc19hbGxfY29udGlndW91cyAmPSBpc19kaW1fY29udGlndW91czsKKysKKysJICBp ZiAoZm9ydHJhbl9hcnJheV9zbGljaW5nX2RlYnVnKQorKwkgICAgeworKwkgICAgICBkZWJ1Z19w cmludGYgKCJ8ICAgJy0+IFJlc3VsdHM6XG4iKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAg ICAgICB8LT4gT2Zmc2V0ID0gJWxkXG4iLCBvZmZzZXQpOworKwkgICAgICBkZWJ1Z19wcmludGYg KCJ8ICAgICAgIHwtPiBFbGVtZW50cyA9ICVsZFxuIiwgZV9jb3VudCk7CisrCSAgICAgIGRlYnVn X3ByaW50ZiAoInwgICAgICAgfC0+IExvdyBib3VuZCA9ICVsZFxuIiwgbmV3X2xvdyk7CisrCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IEhpZ2ggYm91bmQgPSAlbGRcbiIsIG5ld19o aWdoKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gQnl0ZSBzdHJpZGUgPSAl bGRcbiIsIG5ld19zdHJpZGUpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBM YXN0IGVsZW1lbnQgPSAlbGRcbiIsIGxhc3RfZWxlbSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAo InwgICAgICAgfC0+IFJlbWFpbmRlciA9ICVsZFxuIiwgcmVtYWluZGVyKTsKKysJICAgICAgZGVi dWdfcHJpbnRmICgifCAgICAgICAnLT4gQ29udGlndW91cyA9ICVzXG4iLAorKwkJCSAgICAoaXNf ZGltX2NvbnRpZ3VvdXMgPyAiWWVzIiA6ICJObyIpKTsKKysJICAgIH0KKysKKysJICAvKiBGaWd1 cmUgb3V0IGhvdyBiaWcgKGluIGJ5dGVzKSBhbiBlbGVtZW50IG9mIHRoaXMgZGltZW5zaW9uIG9m CisrCSAgICAgdGhlIG5ldyBhcnJheSBzbGljZSB3aWxsIGJlLiAgKi8KKysJICBzbGljZV9lbGVt ZW50X3NpemUgPSBzdGQ6OmFicyAobmV3X3N0cmlkZSAqIGVfY291bnQpOworKworKwkgIHNsaWNl X2RpbXMuZW1wbGFjZV9iYWNrIChuZXdfbG93LCBuZXdfaGlnaCwgbmV3X3N0cmlkZSwKKysJCQkJ ICAgaW5kZXhfdHlwZSk7CisrCisrCSAgLyogVXBkYXRlIHRoZSB0b3RhbCBvZmZzZXQuICAqLwor KwkgIHRvdGFsX29mZnNldCArPSBvZmZzZXQ7CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICAv KiBUaGVyZSBpcyBhIHNpbmdsZSBpbmRleCBmb3IgdGhpcyBkaW1lbnNpb24uICAqLworKwkgIExP TkdFU1QgaW5kZXgKKysJICAgID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwX3dpdGhf Y29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpKTsKKysKKysJICAvKiBHZXQgaW5mb3JtYXRpb24g YWJvdXQgdGhpcyBkaW1lbnNpb24gaW4gdGhlIG9yaWdpbmFsIEFSUkFZLiAgKi8KKysJICBzdHJ1 Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChkaW1fdHlwZSk7CisrCSAg c3RydWN0IHR5cGUgKmluZGV4X3R5cGUgPSBkaW1fdHlwZS0+aW5kZXhfdHlwZSAoKTsKKysJICBM T05HRVNUIGxiID0gZjc3X2dldF9sb3dlcmJvdW5kIChkaW1fdHlwZSk7CisrCSAgTE9OR0VTVCB1 YiA9IGY3N19nZXRfdXBwZXJib3VuZCAoZGltX3R5cGUpOworKwkgIExPTkdFU1Qgc2QgPSBpbmRl eF90eXBlLT5iaXRfc3RyaWRlICgpIC8gODsKKysJICBpZiAoc2QgPT0gMCkKKysJICAgIHNkID0g VFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKKysKKysJICBpZiAoZm9ydHJhbl9hcnJheV9zbGlj aW5nX2RlYnVnKQorKwkgICAgeworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8LT4gSW5kZXggYWNj ZXNzXG4iKTsKKysJICAgICAgc3RkOjpzdHJpbmcgc3RyID0gdHlwZV90b19zdHJpbmcgKGRpbV90 eXBlKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBUeXBlOiAlc1xuIiwgc3RyLmNf c3RyICgpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBBcnJheTpcbiIpOworKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVsZFxuIiwgbGIpOwor KwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBIaWdoIGJvdW5kOiAlbGRcbiIsIHVi KTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQnl0ZSBzdHJpZGU6ICVsZFxu Iiwgc2QpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBUeXBlIHNpemU6ICVs ZFxuIiwgVFlQRV9MRU5HVEggKGRpbV90eXBlKSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwg ICB8ICAgJy0+IFRhcmdldCB0eXBlIHNpemU6ICVsZFxuIiwKKysJCQkgICAgVFlQRV9MRU5HVEgg KHRhcmdldF90eXBlKSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAnLT4gQWNjZXNzaW5n OlxuIik7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgJy0+IEluZGV4OiAlbGRcbiIs IGluZGV4KTsKKysJICAgIH0KKysKKysJICAvKiBJZiB0aGUgYXJyYXkgaGFzIGFjdHVhbCBjb250 ZW50IHRoZW4gY2hlY2sgdGhlIGluZGV4IGlzIGluCisrCSAgICAgYm91bmRzLiAgQW4gYXJyYXkg d2l0aG91dCBjb250ZW50IChhbiB1bmJvdW5kIGFycmF5KSBkb2Vzbid0CisrCSAgICAgaGF2ZSBh IGtub3duIHVwcGVyIGJvdW5kLCBzbyBkb24ndCBlcnJvciBjaGVjayBpbiB0aGF0CisrCSAgICAg c2l0dWF0aW9uLiAgKi8KKysJICBpZiAoaW5kZXggPCBsYgorKwkgICAgICB8fCAoZGltX3R5cGUt PmluZGV4X3R5cGUgKCktPmJvdW5kcyAoKS0+aGlnaC5raW5kICgpICE9IFBST1BfVU5ERUZJTkVE CisrCQkgICYmIGluZGV4ID4gdWIpCisrCSAgICAgIHx8IChWQUxVRV9MVkFMIChhcnJheSkgIT0g bHZhbF9tZW1vcnkKKysJCSAgJiYgZGltX3R5cGUtPmluZGV4X3R5cGUgKCktPmJvdW5kcyAoKS0+ aGlnaC5raW5kICgpID09IFBST1BfVU5ERUZJTkVEKSkKKysJICAgIHsKKysJICAgICAgaWYgKHR5 cGVfbm90X2Fzc29jaWF0ZWQgKGRpbV90eXBlKSkKKysJCWVycm9yIChfKCJubyBzdWNoIHZlY3Rv ciBlbGVtZW50ICh2ZWN0b3Igbm90IGFzc29jaWF0ZWQpIikpOworKwkgICAgICBlbHNlIGlmICh0 eXBlX25vdF9hbGxvY2F0ZWQgKGRpbV90eXBlKSkKKysJCWVycm9yIChfKCJubyBzdWNoIHZlY3Rv ciBlbGVtZW50ICh2ZWN0b3Igbm90IGFsbG9jYXRlZCkiKSk7CisrCSAgICAgIGVsc2UKKysJCWVy cm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworKwkgICAgfQorIAorLSAgZ2RiX2Fz c2VydCAobmFyZ3MgPiAwKTsKKysJICAvKiBDYWxjdWxhdGUgdXNpbmcgdGhlIHR5cGUgc3RyaWRl LCBub3QgdGhlIHRhcmdldCB0eXBlIHNpemUuICAqLworKwkgIExPTkdFU1Qgb2Zmc2V0ID0gc2Qg KiAoaW5kZXggLSBsYik7CisrCSAgdG90YWxfb2Zmc2V0ICs9IG9mZnNldDsKKysJfQorKyAgICB9 CisgCistICAvKiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3Jp cHQgZXhwcmVzc2lvbiBsZXQgdXMKKy0gICAgIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMg ZWxlbWVudCBleGlzdHMgaW4gdGhlIGFycmF5LiAgKi8KKysgIGlmIChub3NpZGUgPT0gRVZBTF9T S0lQKQorKyAgICByZXR1cm4gYXJyYXk7CisgCistICAvKiBUYWtlIGFycmF5IGluZGljZXMgbGVm dCB0byByaWdodC4gICovCistICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyBpKyspCisrICAv KiBCdWlsZCBhIHR5cGUgdGhhdCByZXByZXNlbnRzIHRoZSBuZXcgYXJyYXkgc2xpY2UgaW4gdGhl IHRhcmdldCBtZW1vcnkKKysgICAgIG9mIHRoZSBvcmlnaW5hbCBBUlJBWSwgdGhpcyB0eXBlIG1h a2VzIHVzZSBvZiBzdHJpZGVzIHRvIGNvcnJlY3RseQorKyAgICAgZmluZCBvbmx5IHRob3NlIGVs ZW1lbnRzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIG5ldyBzbGljZS4gICovCisrICBzdHJ1Y3QgdHlw ZSAqYXJyYXlfc2xpY2VfdHlwZSA9IGlubmVyX2VsZW1lbnRfdHlwZTsKKysgIGZvciAoY29uc3Qg YXV0byAmZCA6IHNsaWNlX2RpbXMpCisgICAgIHsKKy0gICAgICAvKiBFdmFsdWF0ZSBlYWNoIHN1 YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3LiAgKi8KKy0gICAgICB2 YWx1ZSAqYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9z aWRlKTsKKysgICAgICAvKiBDcmVhdGUgdGhlIHJhbmdlLiAgKi8KKysgICAgICBkeW5hbWljX3By b3AgcF9sb3csIHBfaGlnaCwgcF9zdHJpZGU7CisrCisrICAgICAgcF9sb3cuc2V0X2NvbnN0X3Zh bCAoZC5sb3cpOworKyAgICAgIHBfaGlnaC5zZXRfY29uc3RfdmFsIChkLmhpZ2gpOworKyAgICAg IHBfc3RyaWRlLnNldF9jb25zdF92YWwgKGQuc3RyaWRlKTsKKysKKysgICAgICBzdHJ1Y3QgdHlw ZSAqbmV3X3JhbmdlCisrCT0gY3JlYXRlX3JhbmdlX3R5cGVfd2l0aF9zdHJpZGUgKChzdHJ1Y3Qg dHlwZSAqKSBOVUxMLAorKwkJCQkJIFRZUEVfVEFSR0VUX1RZUEUgKGQuaW5kZXgpLAorKwkJCQkJ ICZwX2xvdywgJnBfaGlnaCwgMCwgJnBfc3RyaWRlLAorKwkJCQkJIHRydWUpOworKyAgICAgIGFy cmF5X3NsaWNlX3R5cGUKKysJPSBjcmVhdGVfYXJyYXlfdHlwZSAobnVsbHB0ciwgYXJyYXlfc2xp Y2VfdHlwZSwgbmV3X3JhbmdlKTsKKysgICAgfQorIAorLSAgICAgIC8qIEZpbGwgaW4gdGhlIHN1 YnNjcmlwdCBhcnJheS4gICovCistICAgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNf bG9uZyAoYXJnMik7CisrICBpZiAoZm9ydHJhbl9hcnJheV9zbGljaW5nX2RlYnVnKQorKyAgICB7 CisrICAgICAgZGVidWdfcHJpbnRmICgiJy0+IEZpbmFsIHJlc3VsdDpcbiIpOworKyAgICAgIGRl YnVnX3ByaW50ZiAoIiAgICB8LT4gVHlwZTogJXNcbiIsCisrCQkgICAgdHlwZV90b19zdHJpbmcg KGFycmF5X3NsaWNlX3R5cGUpLmNfc3RyICgpKTsKKysgICAgICBkZWJ1Z19wcmludGYgKCIgICAg fC0+IFRvdGFsIG9mZnNldDogJWxkXG4iLCB0b3RhbF9vZmZzZXQpOworKyAgICAgIGRlYnVnX3By aW50ZiAoIiAgICB8LT4gQmFzZSBhZGRyZXNzOiAlc1xuIiwKKysJCSAgICBjb3JlX2FkZHJfdG9f c3RyaW5nICh2YWx1ZV9hZGRyZXNzIChhcnJheSkpKTsKKysgICAgICBkZWJ1Z19wcmludGYgKCIg ICAgJy0+IENvbnRpZ3VvdXMgPSAlc1xuIiwKKysJCSAgICAoaXNfYWxsX2NvbnRpZ3VvdXMgPyAi WWVzIiA6ICJObyIpKTsKKyAgICAgfQorIAorLSAgLyogSW50ZXJuYWwgdHlwZSBvZiBhcnJheSBp cyBhcnJhbmdlZCByaWdodCB0byBsZWZ0LiAgKi8KKy0gIGZvciAoaW50IGkgPSBuYXJnczsgaSA+ IDA7IGktLSkKKysgIC8qIFNob3VsZCB3ZSByZXBhY2sgdGhpcyBhcnJheSBzbGljZT8gICovCisr ICBpZiAoIWlzX2FsbF9jb250aWd1b3VzICYmIChyZXBhY2tfYXJyYXlfc2xpY2VzIHx8IGlzX3N0 cmluZ19wKSkKKyAgICAgeworLSAgICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKKy0gICAgICBMT05HRVNUIGluZGV4ID0gc3Vi c2NyaXB0X2FycmF5W2kgLSAxXTsKKysgICAgICAvKiBCdWlsZCBhIHR5cGUgZm9yIHRoZSByZXBh Y2tlZCBzbGljZS4gICovCisrICAgICAgc3RydWN0IHR5cGUgKnJlcGFja2VkX2FycmF5X3R5cGUg PSBpbm5lcl9lbGVtZW50X3R5cGU7CisrICAgICAgZm9yIChjb25zdCBhdXRvICZkIDogc2xpY2Vf ZGltcykKKysJeworKwkgIC8qIENyZWF0ZSB0aGUgcmFuZ2UuICAqLworKwkgIGR5bmFtaWNfcHJv cCBwX2xvdywgcF9oaWdoLCBwX3N0cmlkZTsKKysKKysJICBwX2xvdy5zZXRfY29uc3RfdmFsIChk Lmxvdyk7CisrCSAgcF9oaWdoLnNldF9jb25zdF92YWwgKGQuaGlnaCk7CisrCSAgcF9zdHJpZGUu c2V0X2NvbnN0X3ZhbCAoVFlQRV9MRU5HVEggKHJlcGFja2VkX2FycmF5X3R5cGUpKTsKKysKKysJ ICBzdHJ1Y3QgdHlwZSAqbmV3X3JhbmdlCisrCSAgICA9IGNyZWF0ZV9yYW5nZV90eXBlX3dpdGhf c3RyaWRlICgoc3RydWN0IHR5cGUgKikgTlVMTCwKKysJCQkJCSAgICAgVFlQRV9UQVJHRVRfVFlQ RSAoZC5pbmRleCksCisrCQkJCQkgICAgICZwX2xvdywgJnBfaGlnaCwgMCwgJnBfc3RyaWRlLAor KwkJCQkJICAgICB0cnVlKTsKKysJICByZXBhY2tlZF9hcnJheV90eXBlCisrCSAgICA9IGNyZWF0 ZV9hcnJheV90eXBlIChudWxscHRyLCByZXBhY2tlZF9hcnJheV90eXBlLCBuZXdfcmFuZ2UpOwor Kwl9CisgCistICAgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBp bmRleCwKKy0JCQkJCWY3N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOworKyAgICAgIC8q IE5vdyBjb3B5IHRoZSBlbGVtZW50cyBmcm9tIHRoZSBvcmlnaW5hbCBBUlJBWSBpbnRvIHRoZSBw YWNrZWQKKysJIGFycmF5IHZhbHVlIERFU1QuICAqLworKyAgICAgIHN0cnVjdCB2YWx1ZSAqZGVz dCA9IGFsbG9jYXRlX3ZhbHVlIChyZXBhY2tlZF9hcnJheV90eXBlKTsKKysgICAgICBpZiAodmFs dWVfbGF6eSAoYXJyYXkpCisrCSAgfHwgKHRvdGFsX29mZnNldCArIFRZUEVfTEVOR1RIIChhcnJh eV9zbGljZV90eXBlKQorKwkgICAgICA+IFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmICh2YWx1 ZV90eXBlIChhcnJheSkpKSkpCisrCXsKKysJICBmb3J0cmFuX2FycmF5X3dhbGtlcjxmb3J0cmFu X2xhenlfYXJyYXlfcmVwYWNrZXJfaW1wbD4gcAorKwkgICAgKGFycmF5X3NsaWNlX3R5cGUsIHZh bHVlX2FkZHJlc3MgKGFycmF5KSArIHRvdGFsX29mZnNldCwgZGVzdCk7CisrCSAgcC53YWxrICgp OworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgZm9ydHJhbl9hcnJheV93YWxrZXI8Zm9ydHJh bl9hcnJheV9yZXBhY2tlcl9pbXBsPiBwCisrCSAgICAoYXJyYXlfc2xpY2VfdHlwZSwgdmFsdWVf YWRkcmVzcyAoYXJyYXkpICsgdG90YWxfb2Zmc2V0LAorKwkgICAgIHRvdGFsX29mZnNldCwgYXJy YXksIGRlc3QpOworKwkgIHAud2FsayAoKTsKKysJfQorKyAgICAgIGFycmF5ID0gZGVzdDsKKysg ICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgaWYgKFZBTFVFX0xWQUwgKGFycmF5KSA9PSBs dmFsX21lbW9yeSkKKysJeworKwkgIC8qIElmIHRoZSB2YWx1ZSB3ZSdyZSB0YWtpbmcgYSBzbGlj ZSBmcm9tIGlzIG5vdCB5ZXQgbG9hZGVkLCBvcgorKwkgICAgIHRoZSByZXF1ZXN0ZWQgc2xpY2Ug aXMgb3V0c2lkZSB0aGUgdmFsdWVzIGNvbnRlbnQgcmFuZ2UgdGhlbgorKwkgICAgIGp1c3QgY3Jl YXRlIGEgbmV3IGxhenkgdmFsdWUgcG9pbnRpbmcgYXQgdGhlIG1lbW9yeSB3aGVyZSB0aGUKKysJ ICAgICBjb250ZW50cyB3ZSdyZSBsb29raW5nIGZvciBleGlzdC4gICovCisrCSAgaWYgKHZhbHVl X2xhenkgKGFycmF5KQorKwkgICAgICB8fCAodG90YWxfb2Zmc2V0ICsgVFlQRV9MRU5HVEggKGFy cmF5X3NsaWNlX3R5cGUpCisrCQkgID4gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFycmF5KSkpKSkKKysJICAgIGFycmF5ID0gdmFsdWVfYXRfbGF6eSAoYXJyYXlfc2xp Y2VfdHlwZSwKKysJCQkJICAgdmFsdWVfYWRkcmVzcyAoYXJyYXkpICsgdG90YWxfb2Zmc2V0KTsK KysJICBlbHNlCisrCSAgICBhcnJheSA9IHZhbHVlX2Zyb21fY29udGVudHNfYW5kX2FkZHJlc3Mg KGFycmF5X3NsaWNlX3R5cGUsCisrCQkJCQkJICAgICAodmFsdWVfY29udGVudHMgKGFycmF5KQor KwkJCQkJCSAgICAgICsgdG90YWxfb2Zmc2V0KSwKKysJCQkJCQkgICAgICh2YWx1ZV9hZGRyZXNz IChhcnJheSkKKysJCQkJCQkgICAgICArIHRvdGFsX29mZnNldCkpOworKwl9CisrICAgICAgZWxz ZSBpZiAoIXZhbHVlX2xhenkgKGFycmF5KSkKKysJeworKwkgIGNvbnN0IHZvaWQgKnZhbGFkZHIg PSB2YWx1ZV9jb250ZW50cyAoYXJyYXkpICsgdG90YWxfb2Zmc2V0OworKwkgIGFycmF5ID0gYWxs b2NhdGVfdmFsdWUgKGFycmF5X3NsaWNlX3R5cGUpOworKwkgIG1lbWNweSAodmFsdWVfY29udGVu dHNfcmF3IChhcnJheSksIHZhbGFkZHIsIFRZUEVfTEVOR1RIIChhcnJheV9zbGljZV90eXBlKSk7 CisrCX0KKysgICAgICBlbHNlCisrCWVycm9yIChfKCJjYW5ub3Qgc3Vic2NyaXB0IGFycmF5cyB0 aGF0IGFyZSBub3QgaW4gbWVtb3J5IikpOworICAgICB9CisgCisgICByZXR1cm4gYXJyYXk7CitA QCAtMTAzMSwxMSArMTQ4OSw1MCBAQCBidWlsdGluX2ZfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpCisgICByZXR1cm4gKGNvbnN0IHN0cnVjdCBidWlsdGluX2ZfdHlwZSAqKSBnZGJhcmNo X2RhdGEgKGdkYmFyY2gsIGZfdHlwZV9kYXRhKTsKKyB9CisgCisrLyogQ29tbWFuZC1saXN0IGZv ciB0aGUgInNldC9zaG93IGZvcnRyYW4iIHByZWZpeCBjb21tYW5kLiAgKi8KKytzdGF0aWMgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKnNldF9mb3J0cmFuX2xpc3Q7Cisrc3RhdGljIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpzaG93X2ZvcnRyYW5fbGlzdDsKKysKKyB2b2lkIF9pbml0aWFsaXpl X2ZfbGFuZ3VhZ2UgKCk7Cisgdm9pZAorIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2UgKCkKKyB7Cisg ICBmX3R5cGVfZGF0YSA9IGdkYmFyY2hfZGF0YV9yZWdpc3Rlcl9wb3N0X2luaXQgKGJ1aWxkX2Zv cnRyYW5fdHlwZXMpOworKworKyAgYWRkX2Jhc2ljX3ByZWZpeF9jbWQgKCJmb3J0cmFuIiwgbm9f Y2xhc3MsCisrCQkJXygiUHJlZml4IGNvbW1hbmQgZm9yIGNoYW5naW5nIEZvcnRyYW4tc3BlY2lm aWMgc2V0dGluZ3MuIiksCisrCQkJJnNldF9mb3J0cmFuX2xpc3QsICJzZXQgZm9ydHJhbiAiLCAw LCAmc2V0bGlzdCk7CisrCisrICBhZGRfc2hvd19wcmVmaXhfY21kICgiZm9ydHJhbiIsIG5vX2Ns YXNzLAorKwkJICAgICAgIF8oIkdlbmVyaWMgY29tbWFuZCBmb3Igc2hvd2luZyBGb3J0cmFuLXNw ZWNpZmljIHNldHRpbmdzLiIpLAorKwkJICAgICAgICZzaG93X2ZvcnRyYW5fbGlzdCwgInNob3cg Zm9ydHJhbiAiLCAwLCAmc2hvd2xpc3QpOworKworKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQg KCJyZXBhY2stYXJyYXktc2xpY2VzIiwgY2xhc3NfdmFycywKKysJCQkgICAmcmVwYWNrX2FycmF5 X3NsaWNlcywgXygiXAorK0VuYWJsZSBvciBkaXNhYmxlIHJlcGFja2luZyBvZiBub24tY29udGln dW91cyBhcnJheSBzbGljZXMuIiksIF8oIlwKKytTaG93IHdoZXRoZXIgbm9uLWNvbnRpZ3VvdXMg YXJyYXkgc2xpY2VzIGFyZSByZXBhY2tlZC4iKSwgXygiXAorK1doZW4gdGhlIHVzZXIgcmVxdWVz dHMgYSBzbGljZSBvZiBhIEZvcnRyYW4gYXJyYXkgdGhlbiB3ZSBjYW4gZWl0aGVyIHJldHVyblxu XAorK2EgZGVzY3JpcHRvciB0aGF0IGRlc2NyaWJlcyB0aGUgYXJyYXkgaW4gcGxhY2UgKHVzaW5n IHRoZSBvcmlnaW5hbCBhcnJheSBkYXRhXG5cCisraW4gaXRzIGV4aXN0aW5nIGxvY2F0aW9uKSBv ciB0aGUgb3JpZ2luYWwgZGF0YSBjYW4gYmUgcmVwYWNrZWQgKGNvcGllZCkgdG8gYVxuXAorK25l dyBsb2NhdGlvbi5cblwKKytcblwKKytXaGVuIHRoZSBjb250ZW50IG9mIHRoZSBhcnJheSBzbGlj ZSBpcyBjb250aWd1b3VzIHdpdGhpbiB0aGUgb3JpZ2luYWwgYXJyYXlcblwKKyt0aGVuIHRoZSBy ZXN1bHQgd2lsbCBuZXZlciBiZSByZXBhY2tlZCwgYnV0IHdoZW4gdGhlIGRhdGEgZm9yIHRoZSBu ZXcgYXJyYXlcblwKKytpcyBub24tY29udGlndW91cyB3aXRoaW4gdGhlIG9yaWdpbmFsIGFycmF5 IHJlcGFja2luZyB3aWxsIG9ubHkgYmUgcGVyZm9ybWVkXG5cCisrd2hlbiB0aGlzIHNldHRpbmcg aXMgb24uIiksCisrCQkJICAgTlVMTCwKKysJCQkgICBzaG93X3JlcGFja19hcnJheV9zbGljZXMs CisrCQkJICAgJnNldF9mb3J0cmFuX2xpc3QsICZzaG93X2ZvcnRyYW5fbGlzdCk7CisrCisrICAv KiBEZWJ1ZyBGb3J0cmFuJ3MgYXJyYXkgc2xpY2luZyBsb2dpYy4gICovCisrICBhZGRfc2V0c2hv d19ib29sZWFuX2NtZCAoImZvcnRyYW4tYXJyYXktc2xpY2luZyIsIGNsYXNzX21haW50ZW5hbmNl LAorKwkJCSAgICZmb3J0cmFuX2FycmF5X3NsaWNpbmdfZGVidWcsIF8oIlwKKytTZXQgZGVidWdn aW5nIG9mIEZvcnRyYW4gYXJyYXkgc2xpY2luZy4iKSwgXygiXAorK1Nob3cgZGVidWdnaW5nIG9m IEZvcnRyYW4gYXJyYXkgc2xpY2luZy4iKSwgXygiXAorK1doZW4gb24sIGRlYnVnZ2luZyBvZiBG b3J0cmFuIGFycmF5IHNsaWNpbmcgaXMgZW5hYmxlZC4iKSwKKysJCQkgICAgTlVMTCwKKysJCQkg ICAgc2hvd19mb3J0cmFuX2FycmF5X3NsaWNpbmdfZGVidWcsCisrCQkJICAgICZzZXRkZWJ1Z2xp c3QsICZzaG93ZGVidWdsaXN0KTsKKyB9CisgCisgLyogU2VlIGYtbGFuZy5oLiAgKi8KK0BAIC0x MDc0LDMgKzE1NzEsNTYgQEAgZm9ydHJhbl9wcmVzZXJ2ZV9hcmdfcG9pbnRlciAoc3RydWN0IHZh bHVlICphcmcsIHN0cnVjdCB0eXBlICp0eXBlKQorICAgICByZXR1cm4gdmFsdWVfdHlwZSAoYXJn KTsKKyAgIHJldHVybiB0eXBlOworIH0KKysKKysvKiBTZWUgZi1sYW5nLmguICAqLworKworK0NP UkVfQUREUgorK2ZvcnRyYW5fYWRqdXN0X2R5bmFtaWNfYXJyYXlfYmFzZV9hZGRyZXNzX2hhY2sg KHN0cnVjdCB0eXBlICp0eXBlLAorKwkJCQkJCUNPUkVfQUREUiBhZGRyZXNzKQorK3sKKysgIGdk Yl9hc3NlcnQgKHR5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0FSUkFZKTsKKysKKysgIGludCBu ZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOworKyAgTE9OR0VTVCB0b3Rh bF9vZmZzZXQgPSAwOworKworKyAgLyogV2FsayB0aHJvdWdoIGVhY2ggb2YgdGhlIGRpbWVuc2lv bnMgb2YgdGhpcyBhcnJheSB0eXBlIGFuZCBmaWd1cmUgb3V0CisrICAgICBpZiBhbnkgb2YgdGhl IGRpbWVuc2lvbnMgYXJlICJiYWNrd2FyZHMiLCB0aGF0IGlzIHRoZSBiYXNlIGFkZHJlc3MKKysg ICAgIGZvciB0aGlzIGRpbWVuc2lvbiBwb2ludHMgdG8gdGhlIGVsZW1lbnQgYXQgdGhlIGhpZ2hl c3QgbWVtb3J5CisrICAgICBhZGRyZXNzIGFuZCB0aGUgc3RyaWRlIGlzIG5lZ2F0aXZlLiAgKi8K KysgIHN0cnVjdCB0eXBlICp0bXBfdHlwZSA9IHR5cGU7CisrICBmb3IgKGludCBpID0gMCA7IGkg PCBuZGltZW5zaW9uczsgKytpKQorKyAgICB7CisrICAgICAgLyogR3JhYiB0aGUgcmFuZ2UgZm9y IHRoaXMgZGltZW5zaW9uIGFuZCBleHRyYWN0IHRoZSBsb3dlciBhbmQgdXBwZXIKKysJIGJvdW5k cy4gICovCisrICAgICAgdG1wX3R5cGUgPSBjaGVja190eXBlZGVmICh0bXBfdHlwZSk7CisrICAg ICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSB0bXBfdHlwZS0+aW5kZXhfdHlwZSAoKTsKKysg ICAgICBMT05HRVNUIGxvd2VyYm91bmQsIHVwcGVyYm91bmQsIHN0cmlkZTsKKysgICAgICBpZiAo IWdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dlcmJvdW5kLCAmdXBwZXJib3Vu ZCkpCisrCWVycm9yICgiZmFpbGVkIHRvIGdldCByYW5nZSBib3VuZHMiKTsKKysKKysgICAgICAv KiBGaWd1cmUgb3V0IHRoZSBzdHJpZGUgZm9yIHRoaXMgZGltZW5zaW9uLiAgKi8KKysgICAgICBz dHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0 bXBfdHlwZSkpOworKyAgICAgIHN0cmlkZSA9IHRtcF90eXBlLT5pbmRleF90eXBlICgpLT5ib3Vu ZHMgKCktPmJpdF9zdHJpZGUgKCk7CisrICAgICAgaWYgKHN0cmlkZSA9PSAwKQorKwlzdHJpZGUg PSB0eXBlX2xlbmd0aF91bml0cyAoZWx0X3R5cGUpOworKyAgICAgIGVsc2UKKysJeworKwkgIHN0 cnVjdCBnZGJhcmNoICphcmNoID0gZ2V0X3R5cGVfYXJjaCAoZWx0X3R5cGUpOworKwkgIGludCB1 bml0X3NpemUgPSBnZGJhcmNoX2FkZHJlc3NhYmxlX21lbW9yeV91bml0X3NpemUgKGFyY2gpOwor KwkgIHN0cmlkZSAvPSAodW5pdF9zaXplICogOCk7CisrCX0KKysKKysgICAgICAvKiBJZiB0aGlz IGRpbWVuc2lvbiBpcyAiYmFja3dhcmQiIHRoZW4gZmlndXJlIG91dCB0aGUgb2Zmc2V0CisrCSBh ZGp1c3RtZW50IHJlcXVpcmVkIHRvIHBvaW50IHRvIHRoZSBlbGVtZW50IGF0IHRoZSBsb3dlc3Qg bWVtb3J5CisrCSBhZGRyZXNzLCBhbmQgYWRkIHRoaXMgdG8gdGhlIHRvdGFsIG9mZnNldC4gICov CisrICAgICAgTE9OR0VTVCBvZmZzZXQgPSAwOworKyAgICAgIGlmIChzdHJpZGUgPCAwICYmIGxv d2VyYm91bmQgPCB1cHBlcmJvdW5kKQorKwlvZmZzZXQgPSAodXBwZXJib3VuZCAtIGxvd2VyYm91 bmQpICogc3RyaWRlOworKyAgICAgIHRvdGFsX29mZnNldCArPSBvZmZzZXQ7CisrICAgICAgdG1w X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSk7CisrICAgIH0KKysKKysgIC8qIEFk anVzdCB0aGUgYWRkcmVzcyBvZiB0aGlzIG9iamVjdCBhbmQgcmV0dXJuIGl0LiAgKi8KKysgIGFk ZHJlc3MgKz0gdG90YWxfb2Zmc2V0OworKyAgcmV0dXJuIGFkZHJlc3M7CisrfQorZGlmZiAtLWdp dCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxhbmcuaAorLS0tIGEvZ2RiL2YtbGFuZy5oCisrKysg Yi9nZGIvZi1sYW5nLmgKK0BAIC02NCw3ICs2NCw2IEBAIGV4dGVybiB2b2lkIGY3N19nZXRfZHlu YW1pY19hcnJheV9sZW5ndGggKHN0cnVjdCB0eXBlICopOworIAorIGV4dGVybiBpbnQgY2FsY19m NzdfYXJyYXlfZGltcyAoc3RydWN0IHR5cGUgKik7CisgCistCisgLyogRm9ydHJhbiAoRjc3KSB0 eXBlcyAqLworIAorIHN0cnVjdCBidWlsdGluX2ZfdHlwZQorQEAgLTEyMiw0ICsxMjEsMjIgQEAg ZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqZm9ydHJhbl9hcmd1bWVudF9jb252ZXJ0IChzdHJ1Y3QgdmFs dWUgKnZhbHVlLAorIGV4dGVybiBzdHJ1Y3QgdHlwZSAqZm9ydHJhbl9wcmVzZXJ2ZV9hcmdfcG9p bnRlciAoc3RydWN0IHZhbHVlICphcmcsCisgCQkJCQkJICBzdHJ1Y3QgdHlwZSAqdHlwZSk7Cisg CisrLyogRm9ydHJhbiBhcnJheXMgY2FuIGhhdmUgYSBuZWdhdGl2ZSBzdHJpZGUuICBXaGVuIHRo aXMgaGFwcGVucyBpdCBpcworKyAgIG9mdGVuIHRoZSBjYXNlIHRoYXQgdGhlIGJhc2UgYWRkcmVz cyBmb3IgYW4gb2JqZWN0IGlzIG5vdCB0aGUgbG93ZXN0CisrICAgYWRkcmVzcyBvY2N1cGllZCBi eSB0aGF0IG9iamVjdC4gIEZvciBleGFtcGxlLCBhbiBhcnJheSBzbGljZSAoMTA6MTotMSkKKysg ICB3aWxsIGJlIGVuY29kZWQgd2l0aCBsb3dlciBib3VuZCAxLCB1cHBlciBib3VuZCAxMCwgYSBz dHJpZGUgb2YKKysgICAtRUxFTUVOVF9TSVpFLCBhbmQgaGF2ZSBhIGJhc2UgYWRkcmVzcyBwb2lu dGVyIHRoYXQgcG9pbnRzIGF0IHRoZQorKyAgIGVsZW1lbnQgd2l0aCB0aGUgaGlnaGVzdCBhZGRy ZXNzIGluIG1lbW9yeS4KKysKKysgICBUaGlzIHJlYWxseSBkb2Vzbid0IHBsYXkgd2VsbCB3aXRo IG91ciBjdXJyZW50IG1vZGVsIG9mIHZhbHVlIGNvbnRlbnRzLAorKyAgIGJ1dCBjb3VsZCBlYXNp bHkgcmVxdWlyZSBhIHNpZ25pZmljYW50IHVwZGF0ZSBpbiBvcmRlciB0byBiZSBzdXBwb3J0ZWQK KysgICAiY29ycmVjdGx5Ii4KKysKKysgICBGb3Igbm93LCB3ZSBtYW51YWxseSBmb3JjZSB0aGUg YmFzZSBhZGRyZXNzIHRvIGJlIHRoZSBsb3dlc3QgYWRkcmVzc2VkCisrICAgZWxlbWVudCBoZXJl LiAgWWVzLCB0aGlzIHdpbGwgYnJlYWsgc29tZSB0aGluZ3MsIGJ1dCBpdCBmaXhlcyBvdGhlcgor KyAgIHRoaW5ncy4gIFRoZSBob3BlIGlzIHRoYXQgaXQgZml4ZXMgbW9yZSB0aGFuIGl0IGJyZWFr cy4gICovCisrCisrZXh0ZXJuIENPUkVfQUREUiBmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5 X2Jhc2VfYWRkcmVzc19oYWNrCisrCShzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHJl c3MpOworKworICNlbmRpZiAvKiBGX0xBTkdfSCAqLworZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHBy aW50LmMgYi9nZGIvZi12YWxwcmludC5jCistLS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9n ZGIvZi12YWxwcmludC5jCitAQCAtMzUsNiArMzUsNyBAQAorICNpbmNsdWRlICJkaWN0aW9uYXJ5 LmgiCisgI2luY2x1ZGUgImNsaS9jbGktc3R5bGUuaCIKKyAjaW5jbHVkZSAiZ2RiYXJjaC5oIgor KyNpbmNsdWRlICJmLWFycmF5LXdhbGtlci5oIgorIAorIHN0YXRpYyB2b2lkIGY3N19nZXRfZHlu YW1pY19sZW5ndGhfb2ZfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAqKTsKKyAKK0BAIC0xMDAsMTAw ICsxMDEsMTAzIEBAIGY3N19nZXRfZHluYW1pY19sZW5ndGhfb2ZfYWdncmVnYXRlIChzdHJ1Y3Qg dHlwZSAqdHlwZSkKKyAgICAgKiBUWVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJH RVRfVFlQRSAodHlwZSkpKTsKKyB9CisgCistLyogQWN0dWFsIGZ1bmN0aW9uIHdoaWNoIHByaW50 cyBvdXQgRjc3IGFycmF5cywgVmFsYWRkciA9PSBhZGRyZXNzIGluIAorLSAgIHRoZSBzdXBlcmlv ci4gIEFkZHJlc3MgPT0gdGhlIGFkZHJlc3MgaW4gdGhlIGluZmVyaW9yLiAgKi8KKysvKiBBIGNs YXNzIHVzZWQgYnkgRk9SVFJBTl9QUklOVF9BUlJBWSBhcyBhIHNwZWNpYWxpc2F0aW9uIG9mIHRo ZSBhcnJheQorKyAgIHdhbGtpbmcgdGVtcGxhdGUuICBUaGlzIHNwZWNpYWxpc2F0aW9uIHByaW50 cyBGb3J0cmFuIGFycmF5cy4gICovCisgCistc3RhdGljIHZvaWQKKy1mNzdfcHJpbnRfYXJyYXlf MSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKy0JCSAgIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAorLQkJICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9B RERSIGFkZHJlc3MsCistCQkgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwK Ky0JCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAorLQkJICAgY29uc3Qgc3RydWN0IHZhbHVl X3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCistCQkgICBpbnQgKmVsdHMpCisrY2xhc3MgZm9ydHJh bl9hcnJheV9wcmludGVyX2ltcGwgOiBwdWJsaWMgZm9ydHJhbl9hcnJheV93YWxrZXJfYmFzZV9p bXBsCisgeworLSAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBjaGVja190eXBlZGVmICh0eXBl KS0+aW5kZXhfdHlwZSAoKTsKKy0gIENPUkVfQUREUiBhZGRyID0gYWRkcmVzcyArIGVtYmVkZGVk X29mZnNldDsKKy0gIExPTkdFU1QgbG93ZXJib3VuZCwgdXBwZXJib3VuZDsKKy0gIExPTkdFU1Qg aTsKKy0KKy0gIGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dlcmJvdW5kLCAm dXBwZXJib3VuZCk7CistCistICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQorLSAgICB7CistICAg ICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKKy0gICAg ICBzaXplX3QgZGltX3NpemUgPSB0eXBlX2xlbmd0aF91bml0cyAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkpOworLSAgICAgIGludCB1bml0X3NpemUgPSBnZGJhcmNoX2FkZHJlc3NhYmxlX21lbW9y eV91bml0X3NpemUgKGdkYmFyY2gpOworLSAgICAgIHNpemVfdCBieXRlX3N0cmlkZSA9IHR5cGUt PmJpdF9zdHJpZGUgKCkgLyAodW5pdF9zaXplICogOCk7CistICAgICAgaWYgKGJ5dGVfc3RyaWRl ID09IDApCistCWJ5dGVfc3RyaWRlID0gZGltX3NpemU7CistICAgICAgc2l6ZV90IG9mZnMgPSAw OworLQorLSAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7CistCSAgIChpIDwgdXBwZXJib3VuZCAr IDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7CistCSAgIGkrKykKKy0JeworLQkg IHN0cnVjdCB2YWx1ZSAqc3ViYXJyYXkgPSB2YWx1ZV9mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNz CistCSAgICAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmlu dGluZ19jb25zdCAodmFsKQorLQkgICAgICsgb2ZmcywgYWRkciArIG9mZnMpOworLQorLQkgIGZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsKKy0JICBmNzdfcHJpbnRfYXJyYXlfMSAobnNz ICsgMSwgbmRpbWVuc2lvbnMsIHZhbHVlX3R5cGUgKHN1YmFycmF5KSwKKy0JCQkgICAgIHZhbHVl X2NvbnRlbnRzX2Zvcl9wcmludGluZyAoc3ViYXJyYXkpLAorLQkJCSAgICAgdmFsdWVfZW1iZWRk ZWRfb2Zmc2V0IChzdWJhcnJheSksCistCQkJICAgICB2YWx1ZV9hZGRyZXNzIChzdWJhcnJheSks CistCQkJICAgICBzdHJlYW0sIHJlY3Vyc2UsIHN1YmFycmF5LCBvcHRpb25zLCBlbHRzKTsKKy0J ICBvZmZzICs9IGJ5dGVfc3RyaWRlOworLQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiki KTsKKy0KKy0JICBpZiAoaSA8IHVwcGVyYm91bmQpCistCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICIgIik7CistCX0KKy0gICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4 ICYmIGkgPCB1cHBlcmJvdW5kKQorLQlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsK Ky0gICAgfQorLSAgZWxzZQorLSAgICB7CistICAgICAgZm9yIChpID0gbG93ZXJib3VuZDsgaSA8 IHVwcGVyYm91bmQgKyAxICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7CistCSAgIGkr KywgKCplbHRzKSsrKQorLQl7CistCSAgc3RydWN0IHZhbHVlICplbHQgPSB2YWx1ZV9zdWJzY3Jp cHQgKChzdHJ1Y3QgdmFsdWUgKil2YWwsIGkpOworLQorLQkgIGNvbW1vbl92YWxfcHJpbnQgKGVs dCwgc3RyZWFtLCByZWN1cnNlLCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdlKTsKKy0KKy0JICBp ZiAoaSAhPSB1cHBlcmJvdW5kKQorLQkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLCAi KTsKKy0KKy0JICBpZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCistCSAgICAg ICYmIChpICE9IHVwcGVyYm91bmQpKQorLQkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi Li4uIik7CistCX0KKy0gICAgfQorLX0KKytwdWJsaWM6CisrICAvKiBDb25zdHJ1Y3Rvci4gIFRZ UEUgaXMgdGhlIGFycmF5IHR5cGUgYmVpbmcgcHJpbnRlZCwgQUREUkVTUyBpcyB0aGUKKysgICAg IGFkZHJlc3MgaW4gdGFyZ2V0IG1lbW9yeSBmb3IgdGhlIG9iamVjdCBvZiBUWVBFIGJlaW5nIHBy aW50ZWQuICBWQUwgaXMKKysgICAgIHRoZSBHREIgdmFsdWUgKG9mIFRZUEUpIGJlaW5nIHByaW50 ZWQuICBTVFJFQU0gaXMgd2hlcmUgdG8gcHJpbnQgdG8sCisrICAgICBSRUNPVVJTRSBpcyBwYXNz ZWQgdGhyb3VnaCAoYW5kIHByZXZlbnRzIGluZmluaXRlIHJlY3Vyc2lvbiksIGFuZAorKyAgICAg T1BUSU9OUyBhcmUgdGhlIHByaW50aW5nIGNvbnRyb2wgb3B0aW9ucy4gICovCisrICBleHBsaWNp dCBmb3J0cmFuX2FycmF5X3ByaW50ZXJfaW1wbCAoc3RydWN0IHR5cGUgKnR5cGUsCisrCQkJCSAg ICAgICBDT1JFX0FERFIgYWRkcmVzcywKKysJCQkJICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsLAor KwkJCQkgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKysJCQkJICAgICAgIGludCByZWN1 cnNlLAorKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMpCisrICAgIDogbV9lbHRzICgwKSwKKysgICAgICBtX3ZhbCAodmFsKSwKKysgICAgICBtX3N0 cmVhbSAoc3RyZWFtKSwKKysgICAgICBtX3JlY3Vyc2UgKHJlY3Vyc2UpLAorKyAgICAgIG1fb3B0 aW9ucyAob3B0aW9ucykKKysgIHsgLyogTm90aGluZy4gICovIH0KKysKKysgIC8qIENhbGxlZCB3 aGlsZSBpdGVyYXRpbmcgb3ZlciB0aGUgYXJyYXkgYm91bmRzLiAgV2hlbiBTSE9VTERfQ09OVElO VUUgaXMKKysgICAgIGZhbHNlIHRoZW4gd2UgbXVzdCByZXR1cm4gZmFsc2UsIGFzIHdlIGhhdmUg cmVhY2hlZCB0aGUgZW5kIG9mIHRoZQorKyAgICAgYXJyYXkgYm91bmRzIGZvciB0aGlzIGRpbWVu c2lvbi4gIEhvd2V2ZXIsIHdlIGFsc28gcmV0dXJuIGZhbHNlIGlmIHdlCisrICAgICBoYXZlIHBy aW50ZWQgdG9vIG1hbnkgZWxlbWVudHMgKGFmdGVyIHByaW50aW5nICcuLi4nKS4gIEluIGFsbCBv dGhlcgorKyAgICAgY2FzZXMsIHJldHVybiB0cnVlLiAgKi8KKysgIGJvb2wgY29udGludWVfd2Fs a2luZyAoYm9vbCBzaG91bGRfY29udGludWUpCisrICB7CisrICAgIGJvb2wgY29udCA9IHNob3Vs ZF9jb250aW51ZSAmJiAobV9lbHRzIDwgbV9vcHRpb25zLT5wcmludF9tYXgpOworKyAgICBpZiAo IWNvbnQgJiYgc2hvdWxkX2NvbnRpbnVlKQorKyAgICAgIGZwdXRzX2ZpbHRlcmVkICgiLi4uIiwg bV9zdHJlYW0pOworKyAgICByZXR1cm4gY29udDsKKysgIH0KKysKKysgIC8qIENhbGxlZCB3aGVu IHdlIHN0YXJ0IGl0ZXJhdGluZyBvdmVyIGEgZGltZW5zaW9uLiAgSWYgaXQncyBub3QgdGhlCisr ICAgICBpbm5lciBtb3N0IGRpbWVuc2lvbiB0aGVuIHByaW50IGFuIG9wZW5pbmcgJygnIGNoYXJh Y3Rlci4gICovCisrICB2b2lkIHN0YXJ0X2RpbWVuc2lvbiAoYm9vbCBpbm5lcl9wKQorKyAgewor KyAgICBmcHV0c19maWx0ZXJlZCAoIigiLCBtX3N0cmVhbSk7CisrICB9CisrCisrICAvKiBDYWxs ZWQgd2hlbiB3ZSBmaW5pc2ggcHJvY2Vzc2luZyBhIGJhdGNoIG9mIGl0ZW1zIHdpdGhpbiBhIGRp bWVuc2lvbgorKyAgICAgb2YgdGhlIGFycmF5LiAgRGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyBp cyB0aGUgaW5uZXIgbW9zdCBkaW1lbnNpb24KKysgICAgIG9yIG5vdCB3ZSBwcmludCBkaWZmZXJl bnQgdGhpbmdzLCBidXQgdGhpcyBpcyBhbGwgYWJvdXQgYWRkaW5nCisrICAgICBzZXBhcmF0b3Jz IGJldHdlZW4gZWxlbWVudHMsIGFuZCBkaW1lbnNpb25zIG9mIHRoZSBhcnJheS4gICovCisrICB2 b2lkIGZpbmlzaF9kaW1lbnNpb24gKGJvb2wgaW5uZXJfcCwgYm9vbCBsYXN0X3ApCisrICB7Cisr ICAgIGZwdXRzX2ZpbHRlcmVkICgiKSIsIG1fc3RyZWFtKTsKKysgICAgaWYgKCFsYXN0X3ApCisr ICAgICAgZnB1dHNfZmlsdGVyZWQgKCIgIiwgbV9zdHJlYW0pOworKyAgfQorKworKyAgLyogQ2Fs bGVkIHRvIHByb2Nlc3MgYW4gZWxlbWVudCBvZiBFTFRfVFlQRSBhdCBvZmZzZXQgRUxUX09GRiBm cm9tIHRoZQorKyAgICAgc3RhcnQgb2YgdGhlIHBhcmVudCBvYmplY3QuICAqLworKyAgdm9pZCBw cm9jZXNzX2VsZW1lbnQgKHN0cnVjdCB0eXBlICplbHRfdHlwZSwgTE9OR0VTVCBlbHRfb2ZmLCBi b29sIGxhc3RfcCkKKysgIHsKKysgICAgLyogRXh0cmFjdCB0aGUgZWxlbWVudCB2YWx1ZSBmcm9t IHRoZSBwYXJlbnQgdmFsdWUuICAqLworKyAgICBzdHJ1Y3QgdmFsdWUgKmVfdmFsCisrICAgICAg PSB2YWx1ZV9mcm9tX2NvbXBvbmVudCAobV92YWwsIGVsdF90eXBlLCBlbHRfb2ZmKTsKKysgICAg Y29tbW9uX3ZhbF9wcmludCAoZV92YWwsIG1fc3RyZWFtLCBtX3JlY3Vyc2UsIG1fb3B0aW9ucywg Y3VycmVudF9sYW5ndWFnZSk7CisrICAgIGlmICghbGFzdF9wKQorKyAgICAgIGZwdXRzX2ZpbHRl cmVkICgiLCAiLCBtX3N0cmVhbSk7CisrICAgICsrbV9lbHRzOworKyAgfQorKworK3ByaXZhdGU6 CisrICAvKiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHByaW50ZWQgc28gZmFyLiAgKi8KKysgIGlu dCBtX2VsdHM7CisrCisrICAvKiBUaGUgdmFsdWUgZnJvbSB3aGljaCB3ZSBhcmUgcHJpbnRpbmcg ZWxlbWVudHMuICAqLworKyAgc3RydWN0IHZhbHVlICptX3ZhbDsKKysKKysgIC8qIFRoZSBzdHJl YW0gd2Ugc2hvdWxkIHByaW50IHRvby4gICovCisrICBzdHJ1Y3QgdWlfZmlsZSAqbV9zdHJlYW07 CisrCisrICAvKiBUaGUgcmVjdXJzaW9uIGNvdW50ZXIsIHBhc3NlZCB0aHJvdWdoIHdoZW4gd2Ug cHJpbnQgZWFjaCBlbGVtZW50LiAgKi8KKysgIGludCBtX3JlY3Vyc2U7CisrCisrICAvKiBUaGUg cHJpbnQgY29udHJvbCBvcHRpb25zLiAgR2l2ZXMgdXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVs ZW1lbnRzIHRvCisrICAgICBwcmludCwgYW5kIGlzIHBhc3NlZCB0aHJvdWdoIHRvIGVhY2ggZWxl bWVudCB0aGF0IHdlIHByaW50LiAgKi8KKysgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICptX29wdGlvbnMgPSBudWxscHRyOworK307CisgCistLyogVGhpcyBmdW5jdGlvbiBnZXRz IGNhbGxlZCB0byBwcmludCBhbiBGNzcgYXJyYXksIHdlIHNldCB1cCBzb21lIAorLSAgIHN0dWZm IGFuZCB0aGVuIGltbWVkaWF0ZWx5IGNhbGwgZjc3X3ByaW50X2FycmF5XzEoKS4gICovCisrLyog VGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCB0byBwcmludCBhIEZvcnRyYW4gYXJyYXkuICAqLwor IAorIHN0YXRpYyB2b2lkCistZjc3X3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCistCQkgaW50IGVtYmVkZGVkX29mZnNldCwKKy0JCSBDT1JF X0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKKy0JCSBpbnQgcmVjdXJzZSwK Ky0JCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKKy0JCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqb3B0aW9ucykKKytmb3J0cmFuX3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAq dHlwZSwgQ09SRV9BRERSIGFkZHJlc3MsCisrCQkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IGludCByZWN1cnNlLAorKwkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKKysJCSAgICAg Y29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCisgeworLSAgaW50IG5k aW1lbnNpb25zOworLSAgaW50IGVsdHMgPSAwOworLQorLSAgbmRpbWVuc2lvbnMgPSBjYWxjX2Y3 N19hcnJheV9kaW1zICh0eXBlKTsKKy0KKy0gIGlmIChuZGltZW5zaW9ucyA+IE1BWF9GT1JUUkFO X0RJTVMgfHwgbmRpbWVuc2lvbnMgPCAwKQorLSAgICBlcnJvciAoXygiXAorLVR5cGUgbm9kZSBj b3JydXB0ISBGNzcgYXJyYXlzIGNhbm5vdCBoYXZlICVkIHN1YnNjcmlwdHMgKCVkIE1heCkiKSwK Ky0JICAgbmRpbWVuc2lvbnMsIE1BWF9GT1JUUkFOX0RJTVMpOworLQorLSAgZjc3X3ByaW50X2Fy cmF5XzEgKDEsIG5kaW1lbnNpb25zLCB0eXBlLCB2YWxhZGRyLCBlbWJlZGRlZF9vZmZzZXQsCist CQkgICAgIGFkZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25zLCAmZWx0cyk7Cisr ICBmb3J0cmFuX2FycmF5X3dhbGtlcjxmb3J0cmFuX2FycmF5X3ByaW50ZXJfaW1wbD4gcAorKyAg ICAodHlwZSwgYWRkcmVzcywgKHN0cnVjdCB2YWx1ZSAqKSB2YWwsIHN0cmVhbSwgcmVjdXJzZSwg b3B0aW9ucyk7CisrICBwLndhbGsgKCk7CisgfQorIAwKKyAKK0BAIC0yMzYsMTIgKzI0MCw3IEBA IGZfdmFsdWVfcHJpbnRfaW5uZXIgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLCBpbnQgcmVjdXJzZSwKKyAKKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CisgICAg ICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLT5jb2RlICgpICE9IFRZUEVfQ09ERV9DSEFS KQorLQl7CistCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCIpOworLQkgIGY3N19wcmlu dF9hcnJheSAodHlwZSwgdmFsYWRkciwgMCwKKy0JCQkgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vy c2UsIHZhbCwgb3B0aW9ucyk7CistCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOwor LQl9CisrCWZvcnRyYW5fcHJpbnRfYXJyYXkgKHR5cGUsIGFkZHJlc3MsIHN0cmVhbSwgcmVjdXJz ZSwgdmFsLCBvcHRpb25zKTsKKyAgICAgICBlbHNlCisgCXsKKyAJICBzdHJ1Y3QgdHlwZSAqY2hf dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOworZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBl cy5jIGIvZ2RiL2dkYnR5cGVzLmMKKy0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIvZ2Ri dHlwZXMuYworQEAgLTM5LDYgKzM5LDcgQEAKKyAjaW5jbHVkZSAiZHdhcmYyL2xvYy5oIgorICNp bmNsdWRlICJnZGJjb3JlLmgiCisgI2luY2x1ZGUgImZsb2F0Zm9ybWF0LmgiCisrI2luY2x1ZGUg ImYtbGFuZy5oIgorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgLyogSW5pdGlhbGl6ZSBCQURO RVNTIGNvbnN0YW50cy4gICovCitAQCAtMjY5NSw3ICsyNjk2LDE2IEBAIHJlc29sdmVfZHluYW1p Y190eXBlX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAgIHByb3AgPSBUWVBFX0RBVEFf TE9DQVRJT04gKHJlc29sdmVkX3R5cGUpOworICAgaWYgKHByb3AgIT0gTlVMTAorICAgICAgICYm IGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgTlVMTCwgYWRkcl9zdGFjaywgJnZhbHVl KSkKKy0gICAgcHJvcC0+c2V0X2NvbnN0X3ZhbCAodmFsdWUpOworKyAgICB7CisrICAgICAgLyog U3RhcnQgb2YgRm9ydHJhbiBoYWNrLiAgU2VlIGNvbW1lbnQgaW4gZi1sYW5nLmggZm9yIHdoYXQg aXMgZ29pbmcKKysJIG9uIGhlcmUuKi8KKysgICAgICBpZiAoY3VycmVudF9sYW5ndWFnZS0+bGFf bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbgorKwkgICYmIHJlc29sdmVkX3R5cGUtPmNvZGUg KCkgPT0gVFlQRV9DT0RFX0FSUkFZKQorKwl2YWx1ZSA9IGZvcnRyYW5fYWRqdXN0X2R5bmFtaWNf YXJyYXlfYmFzZV9hZGRyZXNzX2hhY2sgKHJlc29sdmVkX3R5cGUsCisrCQkJCQkJCQl2YWx1ZSk7 CisrICAgICAgLyogRW5kIG9mIEZvcnRyYW4gaGFjay4gICovCisrICAgICAgcHJvcC0+c2V0X2Nv bnN0X3ZhbCAodmFsdWUpOworKyAgICB9CisgCisgICByZXR1cm4gcmVzb2x2ZWRfdHlwZTsKKyB9 CitAQCAtMzYwMCw5ICszNjEwLDExIEBAIGlzX3NjYWxhcl90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0 IHR5cGUgKnQpCisgICAgICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CisgICAgICAg c3RydWN0IHR5cGUgKmVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAo dCkpOworIAorLSAgICAgIGdldF9kaXNjcmV0ZV9ib3VuZHMgKHQtPmluZGV4X3R5cGUgKCksICZs b3dfYm91bmQsICZoaWdoX2JvdW5kKTsKKy0KKy0gICAgICByZXR1cm4gaGlnaF9ib3VuZCA9PSBs b3dfYm91bmQgJiYgaXNfc2NhbGFyX3R5cGVfcmVjdXJzaXZlIChlbHRfdHlwZSk7CisrICAgICAg aWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHQtPmluZGV4X3R5cGUgKCksICZsb3dfYm91bmQsICZo aWdoX2JvdW5kKSkKKysJcmV0dXJuIChoaWdoX2JvdW5kID09IGxvd19ib3VuZAorKwkgICAgICAg ICYmIGlzX3NjYWxhcl90eXBlX3JlY3Vyc2l2ZSAoZWx0X3R5cGUpKTsKKysgICAgICBlbHNlCisr CXJldHVybiAwOworICAgICB9CisgICAvKiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgc3RydWN0IHdp dGggb25lIGVsZW1lbnQ/ICAqLworICAgZWxzZSBpZiAodC0+Y29kZSAoKSA9PSBUWVBFX0NPREVf U1RSVUNUICYmIHQtPm51bV9maWVsZHMgKCkgPT0gMSkKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9hcnJheS1zbGljZXMtYmFkLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJh ZC5leHAKK0BAIC0wLDAgKzEsNjkgQEAKKysjIENvcHlyaWdodCAyMDIwIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPiAuCisrCisr IyBUZXN0IGludmFsaWQgZWxlbWVudCBhbmQgc2xpY2UgYXJyYXkgYWNjZXNzZXMuCisrCisraWYg e1tza2lwX2ZvcnRyYW5fdGVzdHNdfSB7IHJldHVybiAtMSB9CisrCisrc3RhbmRhcmRfdGVzdGZp bGUgIi5mOTAiCisrbG9hZF9saWIgZm9ydHJhbi5leHAKKysKKytpZiB7W3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKwkge2RlYnVn IGY5MH1dfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW2ZvcnRyYW5fcnVudG9fbWFp bl0geworKyAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorKyAgICByZXR1cm4g LTEKKyt9CisrCisrIyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxh eSBNZXNzYWdlIEJyZWFrcG9pbnQiXQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJGaXJzdCBCcmVha3BvaW50Il0KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAiU2Vjb25kIEJyZWFrcG9pbnQiXQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0KKysKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiRmlyc3QgQnJlYWtwb2ludCIKKysKKysjIEFjY2VzcyBub3QgeWV0IGFsbG9jYXRlZCBhcnJh eS4KKytnZGJfdGVzdCAicHJpbnQgb3RoZXIiICIgPSA8bm90IGFsbG9jYXRlZD4iCisrZ2RiX3Rl c3QgInByaW50IG90aGVyKDA6NCwyOjMpIiAiYXJyYXkgbm90IGFsbG9jYXRlZCIKKytnZGJfdGVz dCAicHJpbnQgb3RoZXIoMSwxKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgXFwodmVjdG9yIG5v dCBhbGxvY2F0ZWRcXCkiCisrCisrIyBBY2Nlc3Mgbm90IHlldCBhc3NvY2lhdGVkIHBvaW50ZXIu CisrZ2RiX3Rlc3QgInByaW50IHBvaW50ZXIyZCIgIiA9IDxub3QgYXNzb2NpYXRlZD4iCisrZ2Ri X3Rlc3QgInByaW50IHBvaW50ZXIyZCgxOjIsMToyKSIgImFycmF5IG5vdCBhc3NvY2lhdGVkIgor K2dkYl90ZXN0ICJwcmludCBwb2ludGVyMmQoMSwxKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQg XFwodmVjdG9yIG5vdCBhc3NvY2lhdGVkXFwpIgorKworK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJTZWNvbmQgQnJlYWtwb2ludCIKKysKKysjIEFjY2Vzc2luZyBqdXN0IG91dHNpZGUgdGhl IGFycmF5cy4KKytmb3JlYWNoIG5hbWUge2FycmF5IHBvaW50ZXIyZCBvdGhlcn0geworKyAgICBn ZGJfdGVzdCAicHJpbnQgJG5hbWUgKDA6LDopIiAiYXJyYXkgc3Vic2NyaXB0IG91dCBvZiBib3Vu ZHMiCisrICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSAoOjExLDopIiAiYXJyYXkgc3Vic2NyaXB0 IG91dCBvZiBib3VuZHMiCisrICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSAoOiwwOikiICJhcnJh eSBzdWJzY3JpcHQgb3V0IG9mIGJvdW5kcyIKKysgICAgZ2RiX3Rlc3QgInByaW50ICRuYW1lICg6 LDoxMSkiICJhcnJheSBzdWJzY3JpcHQgb3V0IG9mIGJvdW5kcyIKKysKKysgICAgZ2RiX3Rlc3Qg InByaW50ICRuYW1lICgwLDopIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIKKysgICAgZ2RiX3Rl c3QgInByaW50ICRuYW1lICgxMSw6KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiCisrICAgIGdk Yl90ZXN0ICJwcmludCAkbmFtZSAoOiwwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiCisrICAg IGdkYl90ZXN0ICJwcmludCAkbmFtZSAoOiwxMSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50Igor K30KKysKKysjIFN0cmlkZSBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uLgorK2dkYl90ZXN0ICJwcmlu dCBhcnJheSAoMToxMDotMSw6KSIgImluY29ycmVjdCBzdHJpZGUgYW5kIGJvdW5kYXJ5IGNvbWJp bmF0aW9uIgorK2dkYl90ZXN0ICJwcmludCBhcnJheSAoOiwxOjEwOi0xKSIgImluY29ycmVjdCBz dHJpZGUgYW5kIGJvdW5kYXJ5IGNvbWJpbmF0aW9uIgorK2dkYl90ZXN0ICJwcmludCBhcnJheSAo MTA6MToxLDopIiAiaW5jb3JyZWN0IHN0cmlkZSBhbmQgYm91bmRhcnkgY29tYmluYXRpb24iCisr Z2RiX3Rlc3QgInByaW50IGFycmF5ICg6LDEwOjE6MSkiICJpbmNvcnJlY3Qgc3RyaWRlIGFuZCBi b3VuZGFyeSBjb21iaW5hdGlvbiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2FycmF5LXNsaWNlcy1iYWQuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJh eS1zbGljZXMtYmFkLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5mOTAKK0BAIC0w LDAgKzEsNDIgQEAKKyshIENvcHlyaWdodCAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysh IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIQorKyEgU3RhcnQg b2YgdGVzdCBwcm9ncmFtLgorKyEKKytwcm9ncmFtIHRlc3QKKysKKysgICEgRGVjbGFyZSB2YXJp YWJsZXMgdXNlZCBpbiB0aGlzIHRlc3QuCisrICBpbnRlZ2VyLCBkaW1lbnNpb24gKDE6MTAsMTox MCkgOjogYXJyYXkKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IG90aGVyICg6LCA6KQorKyAg aW50ZWdlciwgZGltZW5zaW9uKDosOiksIHBvaW50ZXIgOjogcG9pbnRlcjJkID0+IG51bGwoKQor KyAgaW50ZWdlciwgZGltZW5zaW9uKDE6MTAsMToxMCksIHRhcmdldCA6OiB0YXJyYXkKKysKKysg IHByaW50ICosICIiICEgRmlyc3QgQnJlYWtwb2ludC4KKysKKysgICEgQWxsb2NhdGUgb3IgYXNz b2NpYXRlIGFueSB2YXJpYWJsZXMgYXMgbmVlZGVkLgorKyAgYWxsb2NhdGUgKG90aGVyICgxOjEw LCAxOjEwKSkKKysgIHBvaW50ZXIyZCA9PiB0YXJyYXkKKysgIGFycmF5ID0gMAorKworKyAgcHJp bnQgKiwgIiIgISBTZWNvbmQgQnJlYWtwb2ludC4KKysKKysgICEgQWxsIGRvbmUuICBEZWFsbG9j YXRlLgorKyAgZGVhbGxvY2F0ZSAob3RoZXIpCisrCisrICAhIEdEQiBjYXRjaGVzIHRoaXMgZmlu YWwgYnJlYWtwb2ludCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSB0ZXN0LgorKyAgcHJpbnQg KiwgIiIgISBGaW5hbCBCcmVha3BvaW50LgorKworK2VuZCBwcm9ncmFtIHRlc3QKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZXhw CituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5leHAKK0BAIC0wLDAgKzEsMTEx IEBACisrIyBDb3B5cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysj CisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gLgorKworKyMgQ3JlYXRlIGEgc2xpY2Ugb2Yg YW4gYXJyYXksIHRoZW4gdGFrZSBhIHNsaWNlIG9mIHRoYXQgc2xpY2UuCisrCisraWYge1tza2lw X2ZvcnRyYW5fdGVzdHNdfSB7IHJldHVybiAtMSB9CisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5m OTAiCisrbG9hZF9saWIgZm9ydHJhbi5leHAKKysKKytpZiB7W3ByZXBhcmVfZm9yX3Rlc3Rpbmcg JHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKwkge2RlYnVnIGY5MH1d fSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0gewor KyAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorKyAgICByZXR1cm4gLTEKKyt9 CisrCisrIyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBNZXNz YWdlIEJyZWFrcG9pbnQiXQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJT dG9wIEhlcmUiXQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBC cmVha3BvaW50Il0KKysKKysjIFdlJ3JlIGdvaW5nIHRvIHByaW50IHNvbWUgcmVhc29uYWJseSBs YXJnZSBhcnJheXMuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgcHJpbnQgZWxlbWVudHMgdW5s aW1pdGVkIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJTdG9wIEhlcmUiCisrCisr IyBQcmludCBhIHNsaWNlLCBjYXB0dXJlIHRoZSBjb252ZW5pZW5jZSB2YXJpYWJsZSBuYW1lIGNy ZWF0ZWQuCisrc2V0IGNtZCAicHJpbnQgYXJyYXkgKDE6MTA6MiwgMToxMDoyKSIKKytnZGJfdGVz dF9tdWx0aXBsZSAkY21kICRjbWQgeworKyAgICAtcmUgIlxyXG5cXFwkKFxcZCspID0gLipcclxu JGdkYl9wcm9tcHQgJCIgeworKwlzZXQgdmFybmFtZSAiXCQkZXhwZWN0X291dCgxLHN0cmluZyki CisrICAgIH0KKyt9CisrCisrIyBOb3cgY2hlY2sgdGhhdCB3ZSBjYW4gY29ycmVjdGx5IGV4dHJh Y3QgYWxsIHRoZSBlbGVtZW50cyBmcm9tIHRoaXMKKysjIHNsaWNlLgorK2ZvciB7IHNldCBqIDEg fSB7ICRqIDwgNiB9IHsgaW5jciBqIH0geworKyAgICBmb3IgeyBzZXQgaSAxIH0geyAkaSA8IDYg fSB7IGluY3IgaSB9IHsKKysJc2V0IHZhbCBbZXhwciAoKCgkaSAtIDEpICogMikgKyAoKCRqIC0g MSkgKiAyMCkpICsgMV0KKysJZ2RiX3Rlc3QgInByaW50ICR7dmFybmFtZX0gKCRpLCRqKSIgIiA9 ICR2YWwiCisrICAgIH0KKyt9CisrCisrIyBOb3cgdGFrZSBhIHNsaWNlIG9mIHRoZSBzbGljZS4K KytnZGJfdGVzdCAicHJpbnQgJHt2YXJuYW1lfSAoMzo1LCAzOjUpIiBcCisrICAgICIgPSBcXChc XCg0NSwgNDcsIDQ5XFwpIFxcKDY1LCA2NywgNjlcXCkgXFwoODUsIDg3LCA4OVxcKVxcKSIKKysK KysjIE5vdyB0YWtlIGEgZGlmZmVyZW50IHNsaWNlIG9mIGEgc2xpY2UuCisrc2V0IGNtZCAicHJp bnQgJHt2YXJuYW1lfSAoMTo1OjIsIDE6NToyKSIKKytnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRj bWQgeworKyAgICAtcmUgIlxyXG5cXFwkKFxcZCspID0gXFwoXFwoMSwgNSwgOVxcKSBcXCg0MSwg NDUsIDQ5XFwpIFxcKDgxLCA4NSwgODlcXClcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXQg dmFybmFtZSAiXCQkZXhwZWN0X291dCgxLHN0cmluZykiCisrCXBhc3MgJGdkYl90ZXN0X25hbWUK KysgICAgfQorK30KKysKKysjIE5vdyB0YWtlIGEgc2xpY2UgZnJvbSB0aGUgc2xpY2UsIG9mIGEg c2xpY2UhCisrc2V0IGNtZCAicHJpbnQgJHt2YXJuYW1lfSAoMTozOjIsIDE6MzoyKSIKKytnZGJf dGVzdF9tdWx0aXBsZSAkY21kICRjbWQgeworKyAgICAtcmUgIlxyXG5cXFwkKFxcZCspID0gXFwo XFwoMSwgOVxcKSBcXCg4MSwgODlcXClcXClcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXQgdmFy bmFtZSAiXCQkZXhwZWN0X291dCgxLHN0cmluZykiCisrCXBhc3MgJGdkYl90ZXN0X25hbWUKKysg ICAgfQorK30KKysKKysjIEFuZCBhZ2FpbiEKKytzZXQgY21kICJwcmludCAke3Zhcm5hbWV9ICgx OjI6MiwgMToyOjIpIgorK2dkYl90ZXN0X211bHRpcGxlICRjbWQgJGNtZCB7CisrICAgIC1yZSAi XHJcblxcXCQoXFxkKykgPSBcXChcXCgxXFwpXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJc2V0 IHZhcm5hbWUgIlwkJGV4cGVjdF9vdXQoMSxzdHJpbmcpIgorKwlwYXNzICRnZGJfdGVzdF9uYW1l CisrICAgIH0KKyt9CisrCisrIyBUZXN0IHRha2luZyBhIHNsaWNlIHdpdGggc3RyaWRlIG9mIGEg c3RyaW5nLiAgVGhpcyBpc24ndCBhY3R1YWxseQorKyMgc3VwcG9ydGVkIHdpdGhpbiBnZm9ydHJh biAoYXQgbGVhc3QpLCBidXQgbmF0dXJhbGx5IGRyb3BzIG91dCBvZiBob3cKKysjIEdEQiBtb2Rl bHMgYXJyYXlzIGFuZCBzdHJpbmdzIGluIGEgc2ltaWxhciB3YXksIHNvIHdlIG1heSBhcyB3ZWxs CisrIyB0ZXN0IHRoYXQgdGhpcyBpcyBzdGlsbCB3b3JraW5nLgorK2dkYl90ZXN0ICJwcmludCBz dHIgKDE6MjY6MikiICIgPSAnYWNlZ2lrbW9xc3V3eSciCisrZ2RiX3Rlc3QgInByaW50IHN0ciAo MjY6MTotMSkiICIgPSAnenl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmEnIgorK2dkYl90ZXN0ICJw cmludCBzdHIgKDI2OjE6LTIpIiAiID0gJ3p4dnRycG5samhmZGInIgorKworKyMgTm93IHRlc3Qg dGhlIG1lbW9yeSByZXF1aXJlbWVudHMgb2YgdGFraW5nIGEgc2xpY2UgZnJvbSBhbiBhcnJheS4K KysjIFRoZSBpZGVhIGlzIHRoYXQgd2Ugc2hvdWxkbid0IHJlcXVpcmUgbW9yZSBtZW1vcnkgdG8g ZXh0cmFjdCBhIHNsaWNlCisrIyB0aGFuIHRoZSBzaXplIG9mIHRoZSBzbGljZS4KKysjCisrIyBU aGlzIHdpbGwgb25seSB3b3JrIGlmIGFycmF5IHJlcGFja2luZyBpcyB0dXJuZWQgb24sIG90aGVy d2lzZSBHREIKKysjIHdpbGwgY3JlYXRlIHRoZSBzbGljZSBieSBnZW5lcmF0aW5nIGEgbmV3IHR5 cGUgdGhhdCBzaXRzIG92ZXIgdGhlCisrIyBleGlzdGluZyB2YWx1ZSBpbiBtZW1vcnkuCisrZ2Ri X3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzIG9uIgorK3Nl dCBlbGVtZW50X3NpemUgW2dldF9pbnRlZ2VyX3ZhbHVlb2YgInNpemVvZiAoYXJyYXkgKDEsMSkp IiAidW5rbm93biJdCisrc2V0IHNsaWNlX3NpemUgW2V4cHIgJGVsZW1lbnRfc2l6ZSAqIDRdCisr Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgbWF4LXZhbHVlLXNpemUgJHNsaWNlX3NpemUiCisrZ2Ri X3Rlc3QgInByaW50IGFycmF5ICgxOjIsIDE6MikiICI9IFxcKFxcKDEsIDJcXCkgXFwoMTEsIDEy XFwpXFwpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheSAoMjozLCAyOjMpIiAiPSBcXChcXCgxMiwg MTNcXCkgXFwoMjIsIDIzXFwpXFwpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheSAoMjo1OjIsIDI6 NToyKSIgIj0gXFwoXFwoMTIsIDE0XFwpIFxcKDMyLCAzNFxcKVxcKSIKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmY5MCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZjkwCituZXcg ZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5mOTAKK0BAIC0wLDAgKzEsOTYgQEAKKysh IENvcHlyaWdodCAyMDIwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIQorKyEgU3RhcnQgb2YgdGVzdCBwcm9ncmFt LgorKyEKKytwcm9ncmFtIHRlc3QKKysgIGludGVnZXIsIGRpbWVuc2lvbiAoMToxMCwxOjExKSA6 OiBhcnJheQorKyAgY2hhcmFjdGVyIChsZW49MjYpIDo6IHN0ciA9ICJhYmNkZWZnaGlqa2xtbm9w cXJzdHV2d3h5eiIKKysKKysgIGNhbGwgZmlsbF9hcnJheV8yZCAoYXJyYXkpCisrCisrICAhIEdE QiBjYXRjaGVzIHRoaXMgZmluYWwgYnJlYWtwb2ludCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRo ZSB0ZXN0LgorKyAgcHJpbnQgKiwgIiIgISBTdG9wIEhlcmUKKysKKysgIHByaW50ICosIGFycmF5 CisrICBwcmludCAqLCBzdHIKKysKKysgICEgR0RCIGNhdGNoZXMgdGhpcyBmaW5hbCBicmVha3Bv aW50IHRvIGluZGljYXRlIHRoZSBlbmQgb2YgdGhlIHRlc3QuCisrICBwcmludCAqLCAiIiAhIEZp bmFsIEJyZWFrcG9pbnQuCisrCisrY29udGFpbnMKKysKKysgICEgRmlsbCBhIDFEIGFycmF5IHdp dGggYSB1bmlxdWUgcG9zaXRpdmUgaW50ZWdlciBpbiBlYWNoIGVsZW1lbnQuCisrICBzdWJyb3V0 aW5lIGZpbGxfYXJyYXlfMWQgKGFycmF5KQorKyAgICBpbnRlZ2VyLCBkaW1lbnNpb24gKDopIDo6 IGFycmF5CisrICAgIGludGVnZXIgOjogY291bnRlcgorKworKyAgICBjb3VudGVyID0gMQorKyAg ICBkbyBqPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwgMQorKyAgICAgICBh cnJheSAoaikgPSBjb3VudGVyCisrICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMQorKyAgICBl bmQgZG8KKysgIGVuZCBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfMWQKKysKKysgICEgRmlsbCBhIDJE IGFycmF5IHdpdGggYSB1bmlxdWUgcG9zaXRpdmUgaW50ZWdlciBpbiBlYWNoIGVsZW1lbnQuCisr ICBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfMmQgKGFycmF5KQorKyAgICBpbnRlZ2VyLCBkaW1lbnNp b24gKDosOikgOjogYXJyYXkKKysgICAgaW50ZWdlciA6OiBjb3VudGVyCisrCisrICAgIGNvdW50 ZXIgPSAxCisrICAgIGRvIGk9TEJPVU5EIChhcnJheSwgMiksIFVCT1VORCAoYXJyYXksIDIpLCAx CisrICAgICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCisr ICAgICAgICAgIGFycmF5IChqLGkpID0gY291bnRlcgorKyAgICAgICAgICBjb3VudGVyID0gY291 bnRlciArIDEKKysgICAgICAgZW5kIGRvCisrICAgIGVuZCBkbworKyAgZW5kIHN1YnJvdXRpbmUg ZmlsbF9hcnJheV8yZAorKworKyAgISBGaWxsIGEgM0QgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3Np dGl2ZSBpbnRlZ2VyIGluIGVhY2ggZWxlbWVudC4KKysgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV8z ZCAoYXJyYXkpCisrICAgIGludGVnZXIsIGRpbWVuc2lvbiAoOiw6LDopIDo6IGFycmF5CisrICAg IGludGVnZXIgOjogY291bnRlcgorKworKyAgICBjb3VudGVyID0gMQorKyAgICBkbyBpPUxCT1VO RCAoYXJyYXksIDMpLCBVQk9VTkQgKGFycmF5LCAzKSwgMQorKyAgICAgICBkbyBqPUxCT1VORCAo YXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorKyAgICAgICAgICBkbyBrPUxCT1VORCAo YXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwgMQorKyAgICAgICAgICAgICBhcnJheSAoaywg aixpKSA9IGNvdW50ZXIKKysgICAgICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxCisrICAg ICAgICAgIGVuZCBkbworKyAgICAgICBlbmQgZG8KKysgICAgZW5kIGRvCisrICBlbmQgc3Vicm91 dGluZSBmaWxsX2FycmF5XzNkCisrCisrICAhIEZpbGwgYSA0RCBhcnJheSB3aXRoIGEgdW5pcXVl IHBvc2l0aXZlIGludGVnZXIgaW4gZWFjaCBlbGVtZW50LgorKyAgc3Vicm91dGluZSBmaWxsX2Fy cmF5XzRkIChhcnJheSkKKysgICAgaW50ZWdlciwgZGltZW5zaW9uICg6LDosOiw6KSA6OiBhcnJh eQorKyAgICBpbnRlZ2VyIDo6IGNvdW50ZXIKKysKKysgICAgY291bnRlciA9IDEKKysgICAgZG8g aT1MQk9VTkQgKGFycmF5LCA0KSwgVUJPVU5EIChhcnJheSwgNCksIDEKKysgICAgICAgZG8gaj1M Qk9VTkQgKGFycmF5LCAzKSwgVUJPVU5EIChhcnJheSwgMyksIDEKKysgICAgICAgICAgZG8gaz1M Qk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKKysgICAgICAgICAgICAgZG8g bD1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKysgICAgICAgICAgICAg ICAgYXJyYXkgKGwsIGssIGosaSkgPSBjb3VudGVyCisrICAgICAgICAgICAgICAgIGNvdW50ZXIg PSBjb3VudGVyICsgMQorKyAgICAgICAgICAgICBlbmQgZG8KKysgICAgICAgICAgZW5kIGRvCisr ICAgICAgIGVuZCBkbworKyAgICBlbmQgZG8KKysgICAgcHJpbnQgKiwgIiIKKysgIGVuZCBzdWJy b3V0aW5lIGZpbGxfYXJyYXlfNGQKKytlbmQgcHJvZ3JhbSB0ZXN0CitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2FycmF5LXNsaWNlcy5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJy YXktc2xpY2VzLmV4cAorQEAgLTE4LDYgKzE4LDIxIEBACisgIyB0aGUgc3Vicm91dGluZS4gIFRo aXMgc2hvdWxkIGV4ZXJjaXNlIEdEQidzIGFiaWxpdHkgdG8gaGFuZGxlCisgIyBkaWZmZXJlbnQg c3RyaWRlcyBmb3IgdGhlIGRpZmZlcmVudCBkaW1lbnNpb25zLgorIAorKyMgVGVzdGluZyBHREIn cyBhYmlsaXR5IHRvIHByaW50IGFycmF5IChhbmQgc3RyaW5nKSBzbGljZXMsIGluY2x1ZGluZwor KyMgc2xpY2VzIHRoYXQgbWFrZSB1c2Ugb2YgYXJyYXkgc3RyaWRlcy4KKysjCisrIyBJbiB0aGUg Rm9ydHJhbiBjb2RlIHZhcmlvdXMgYXJyYXlzIG9mIGRpZmZlcmVudCByYW5rcyBhcmUgZmlsbGVk CisrIyB3aXRoIGRhdGEsIGFuZCBzbGljZXMgYXJlIHBhc3NlZCB0byBhIHNlcmllcyBvZiBzaG93 IGZ1bmN0aW9ucy4KKysjCisrIyBJbiB0aGlzIHRlc3Qgc2NyaXB0IHdlIGJyZWFrIGluIGVhY2gg b2YgdGhlIHNob3cgZnVuY3Rpb25zLCBwcmludAorKyMgdGhlIGFycmF5IHNsaWNlIHRoYXQgd2Fz IHBhc3NlZCBpbiwgYW5kIHRoZW4gbW92ZSB1cCB0aGUgc3RhY2sgdG8KKysjIHRoZSBwYXJlbnQg ZnJhbWUgYW5kIGNoZWNrIEdEQiBjYW4gbWFudWFsbHkgZXh0cmFjdCB0aGUgc2FtZSBzbGljZS4K KysjCisrIyBUaGlzIHRlc3QgYWxzbyBjaGVja3MgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkg c2xpY2UgcGFzc2VkIHRvIHRoZQorKyMgZnVuY3Rpb24gKHNvIGFzIGV4dHJhY3RlZCBhbmQgZGVz Y3JpYmVkIGJ5IHRoZSBjb21waWxlciBhbmQgdGhlCisrIyBkZWJ1ZyBpbmZvcm1hdGlvbikgbWF0 Y2hlcyB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UgbWFudWFsbHkgZXh0cmFjdGVkCisrIyBieSBHREIu CisrCisgaWYge1tza2lwX2ZvcnRyYW5fdGVzdHNdfSB7IHJldHVybiAtMSB9CisgCisgc3RhbmRh cmRfdGVzdGZpbGUgIi5mOTAiCitAQCAtMjgsNTcgKzQzLDIyNCBAQCBpZiB7W3ByZXBhcmVfZm9y X3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorICAgICBy ZXR1cm4gLTEKKyB9CisgCistaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKKy0gICAgdW50ZXN0 ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKKy0gICAgcmV0dXJuIC0xCisrIyBUYWtlcyB0aGUg bmFtZSBvZiBhbiBhcnJheSBzbGljZSBhcyB1c2VkIGluIHRoZSB0ZXN0IHNvdXJjZSwgYW5kIGV4 dHJhY3RzCisrIyB0aGUgYmFzZSBhcnJheSBuYW1lLiAgRm9yIGV4YW1wbGU6ICdhcnJheSAoMSwy KScgYmVjb21lcyAnYXJyYXknLgorK3Byb2MgYXJyYXlfc2xpY2VfdG9fdmFyIHsgc2xpY2Vfc3Ry IH0geworKyAgICByZWdleHAgIl4oPzpcXHMqXFwoKSooXFteKCBcdFxdKykiICRzbGljZV9zdHIg bWF0Y2h2YXIgdmFybmFtZQorKyAgICByZXR1cm4gJHZhcm5hbWUKKyB9CisgCistZ2RiX2JyZWFr cG9pbnQgInNob3ciCistZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkZpbmFs IEJyZWFrcG9pbnQiXQorLQorLXNldCBhcnJheV9jb250ZW50cyBcCistICAgIFtsaXN0IFwKKy0J ICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcKSBcXCgxMSwgMTIsIDEz LCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxcKSBcXCgyMSwgMjIsIDIzLCAyNCwgMjUsIDI2 LCAyNywgMjgsIDI5LCAzMFxcKSBcXCgzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5 LCA0MFxcKSBcXCg0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MFxcKSBcXCg1 MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MFxcKSBcXCg2MSwgNjIsIDYzLCA2 NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MFxcKSBcXCg3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3 NywgNzgsIDc5LCA4MFxcKSBcXCg4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5 MFxcKSBcXCg5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDBcXClcXCkiIFwK Ky0JICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1XFwpIFxcKDExLCAxMiwgMTMsIDE0LCAxNVxcKSBc XCgyMSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoMzEsIDMyLCAzMywgMzQsIDM1XFwpIFxcKDQxLCA0 MiwgNDMsIDQ0LCA0NVxcKVxcKSIgXAorLQkgIiA9IFxcKFxcKDEsIDMsIDUsIDcsIDlcXCkgXFwo MjEsIDIzLCAyNSwgMjcsIDI5XFwpIFxcKDQxLCA0MywgNDUsIDQ3LCA0OVxcKSBcXCg2MSwgNjMs IDY1LCA2NywgNjlcXCkgXFwoODEsIDgzLCA4NSwgODcsIDg5XFwpXFwpIiBcCistCSAiID0gXFwo XFwoMSwgNCwgNywgMTBcXCkgXFwoMjEsIDI0LCAyNywgMzBcXCkgXFwoNDEsIDQ0LCA0NywgNTBc XCkgXFwoNjEsIDY0LCA2NywgNzBcXCkgXFwoODEsIDg0LCA4NywgOTBcXClcXCkiIFwKKy0JICIg PSBcXChcXCgxLCA1LCA5XFwpIFxcKDMxLCAzNSwgMzlcXCkgXFwoNjEsIDY1LCA2OVxcKSBcXCg5 MSwgOTUsIDk5XFwpXFwpIiBcCistCSAiID0gXFwoXFwoLTI2LCAtMjUsIC0yNCwgLTIzLCAtMjIs IC0yMSwgLTIwLCAtMTksIC0xOCwgLTE3XFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0xNiwgLTE1LCAt MTQsIC0xMywgLTEyLCAtMTEsIC0xMFxcKSBcXCgtMTIsIC0xMSwgLTEwLCAtOSwgLTgsIC03LCAt NiwgLTUsIC00LCAtM1xcKSBcXCgtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIsIDMsIDRcXCkg XFwoMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExXFwpIFxcKDksIDEwLCAxMSwgMTIsIDEz LCAxNCwgMTUsIDE2LCAxNywgMThcXCkgXFwoMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIz LCAyNCwgMjVcXCkgXFwoMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzJcXCkg XFwoMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzlcXCkgXFwoMzcsIDM4LCAz OSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDZcXClcXCkiIFwKKy0JICIgPSBcXChcXCgtMjYs IC0yNSwgLTI0LCAtMjMsIC0yMiwgLTIxXFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0xNiwgLTE1LCAt MTRcXCkgXFwoLTEyLCAtMTEsIC0xMCwgLTksIC04LCAtN1xcKVxcKSIgXAorLQkgIiA9IFxcKFxc KC0yNiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKC01LCAtMywgLTEsIDEsIDNcXCkgXFwoMTYs IDE4LCAyMCwgMjIsIDI0XFwpIFxcKDM3LCAzOSwgNDEsIDQzLCA0NVxcKVxcKSIgXQorLQorLXNl dCBtZXNzYWdlX3N0cmluZ3MgXAorLSAgICBbbGlzdCBcCistCSAiID0gJ2FycmF5JyIgXAorLQkg IiA9ICdhcnJheSBcXCgxOjUsMTo1XFwpJyIgXAorLQkgIiA9ICdhcnJheSBcXCgxOjEwOjIsMTox MDoyXFwpJyIgXAorLQkgIiA9ICdhcnJheSBcXCgxOjEwOjMsMToxMDoyXFwpJyIgXAorLQkgIiA9 ICdhcnJheSBcXCgxOjEwOjUsMToxMDozXFwpJyIgXQorLQorLXNldCBpIDAKKy1mb3JlYWNoIHJl c3VsdCAkYXJyYXlfY29udGVudHMgbXNnICRtZXNzYWdlX3N0cmluZ3MgeworLSAgICBpbmNyIGkK Ky0gICAgd2l0aF90ZXN0X3ByZWZpeCAidGVzdCAkaSIgeworLQlnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAic2hvdyIKKy0JZ2RiX3Rlc3QgInAgYXJyYXkiICRyZXN1bHQKKy0JZ2RiX3Rlc3Qg InAgbWVzc2FnZSIgIiRtc2ciCisrcHJvYyBydW5fdGVzdCB7IHJlcGFjayB9IHsKKysgICAgZ2xv YmFsIGJpbmZpbGUgZ2RiX3Byb21wdAorKworKyAgICBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0K KysKKysgICAgaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKKysJdW50ZXN0ZWQgImNvdWxkIG5v dCBydW4gdG8gbWFpbiIKKysJcmV0dXJuIC0xCisgICAgIH0KKy19CisgCistZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImNvbnRpbnVlIHRvIEZpbmFsIEJyZWFrcG9pbnQiCisrICAgIGdkYl90 ZXN0X25vX291dHB1dCAic2V0IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyAkcmVwYWNrIgor KworKyAgICAjIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5IE1l c3NhZ2UgQnJlYWtwb2ludCJdCisrICAgIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJEaXNwbGF5IEVsZW1lbnQiXQorKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAiRGlzcGxheSBTdHJpbmciXQorKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiRGlzcGxheSBBcnJheSBTbGljZSAxRCJdCisrICAgIGdkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5IEFycmF5IFNsaWNlIDJEIl0KKysgICAgZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgQXJyYXkgU2xpY2UgM0Qi XQorKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBBcnJh eSBTbGljZSA0RCJdCisrICAgIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJG aW5hbCBCcmVha3BvaW50Il0KKysKKysgICAgIyBXZSdyZSBnb2luZyB0byBwcmludCBzb21lIHJl YXNvbmFibHkgbGFyZ2UgYXJyYXlzLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBwcmlu dCBlbGVtZW50cyB1bmxpbWl0ZWQiCisrCisrICAgIHNldCBmb3VuZF9maW5hbF9icmVha3BvaW50 IGZhbHNlCisrCisrICAgICMgV2UgcGxhY2UgYSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHRlc3Rz IHRoYXQgY2FuIGJlIHJ1biwganVzdCBpbgorKyAgICAjIGNhc2Ugc29tZXRoaW5nIGdvZXMgd3Jv bmcsIGFuZCBHREIgZ2V0cyBzdHVjayBpbiBhbiBsb29wIGhlcmUuCisrICAgIHNldCB0ZXN0X2Nv dW50IDAKKysgICAgd2hpbGUgeyAkdGVzdF9jb3VudCA8IDUwMCB9IHsKKysJd2l0aF90ZXN0X3By ZWZpeCAidGVzdCAkdGVzdF9jb3VudCIgeworKwkgICAgaW5jciB0ZXN0X2NvdW50CisrCisrCSAg ICBzZXQgZm91bmRfZmluYWxfYnJlYWtwb2ludCBmYWxzZQorKwkgICAgc2V0IGV4cGVjdGVkX3Jl c3VsdCAiIgorKwkgICAgc2V0IGZ1bmNfbmFtZSAiIgorKwkgICAgZ2RiX3Rlc3RfbXVsdGlwbGUg ImNvbnRpbnVlIiAiY29udGludWUiIHsKKysJCS1yZSAiLipHREIgPSAoXFteXHJcblxdKylcclxu IiB7CisrCQkgICAgc2V0IGV4cGVjdGVkX3Jlc3VsdCAkZXhwZWN0X291dCgxLHN0cmluZykKKysJ CSAgICBleHBfY29udGludWUKKysJCX0KKysJCS1yZSAiISBEaXNwbGF5IEVsZW1lbnQiIHsKKysJ CSAgICBzZXQgZnVuY19uYW1lICJzaG93X2VsZW0iCisrCQkgICAgZXhwX2NvbnRpbnVlCisrCQl9 CisrCQktcmUgIiEgRGlzcGxheSBTdHJpbmciIHsKKysJCSAgICBzZXQgZnVuY19uYW1lICJzaG93 X3N0ciIKKysJCSAgICBleHBfY29udGludWUKKysJCX0KKysJCS1yZSAiISBEaXNwbGF5IEFycmF5 IFNsaWNlICguKUQiIHsKKysJCSAgICBzZXQgZnVuY19uYW1lICJzaG93XyRleHBlY3Rfb3V0KDEs c3RyaW5nKWQiCisrCQkgICAgZXhwX2NvbnRpbnVlCisrCQl9CisrCQktcmUgIiEgRmluYWwgQnJl YWtwb2ludCIgeworKwkJICAgIHNldCBmb3VuZF9maW5hbF9icmVha3BvaW50IHRydWUKKysJCSAg ICBleHBfY29udGludWUKKysJCX0KKysJCS1yZSAiJGdkYl9wcm9tcHQgJCIgeworKwkJICAgICMg V2UncmUgZG9uZS4KKysJCX0KKysJICAgIH0KKyAKKy0jIE5leHQgdGVzdCB0aGF0IGFza2luZyBm b3IgYW4gYXJyYXkgd2l0aCBzdHJpZGUgYXQgdGhlIENMSSBnaXZlcyBhbgorLSMgZXJyb3IuCist Y2xlYW5fcmVzdGFydCAke3Rlc3RmaWxlfQorKwkgICAgaWYgKCRmb3VuZF9maW5hbF9icmVha3Bv aW50KSB7CisrCQlicmVhaworKwkgICAgfQorIAorLWlmICFbZm9ydHJhbl9ydW50b19tYWluXSB0 aGVuIHsKKy0gICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKKy0gICAgY29udGludWUK KysJICAgICMgV2Ugd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgbGluZSBpbiB0aGUgcHJldmlv dXMgZnJhbWUgdGhhdAorKwkgICAgIyBjYWxsZWQgdGhlIGN1cnJlbnQgZnVuY3Rpb24uICBJIGNv dWxkbid0IGZpbmQgYSBiZXR0ZXIgd2F5IG9mCisrCSAgICAjIGRvaW5nIHRoaXMgdGhhbiAndXAn LCB3aGljaCB3aWxsIHByaW50IHRoZSBsaW5lLCB0aGVuICdkb3duJworKwkgICAgIyBhZ2Fpbi4K KysJICAgICMKKysJICAgICMgSSBkb24ndCB3YW50IHRvIGZpbGwgdGhlIGxvZyB3aXRoIHBhc3Nl cyBmb3IgdGhlc2UgdXAvZG93bgorKwkgICAgIyBjb21tYW5kcywgc28gd2UgZG9uJ3QgcmVwb3J0 IGFueS4gIElmIHNvbWV0aGluZyBnb2VzIHdyb25nIHRoZW4gd2UKKysJICAgICMgc2hvdWxkIGdl dCBhIGZhaWwgZnJvbSBnZGJfdGVzdF9tdWx0aXBsZS4KKysJICAgIHNldCBhcnJheV9zbGljZV9u YW1lICIiCisrCSAgICBzZXQgdW5pcXVlX2lkICIiCisrCSAgICBhcnJheSB1bnNldCByZXBsYWNl bWVudF92YXJzCisrCSAgICBhcnJheSBzZXQgcmVwbGFjZW1lbnRfdmFycyB7fQorKwkgICAgZ2Ri X3Rlc3RfbXVsdGlwbGUgInVwIiAidXAiIHsKKysJCS1yZSAiXHJcblxbMC05XF0rXFsgXHRcXStj YWxsICR7ZnVuY19uYW1lfSBcXCgoXFteXHJcblxdKylcXClcclxuJGdkYl9wcm9tcHQgJCIgewor KwkJICAgIHNldCBhcnJheV9zbGljZV9uYW1lICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKwkJfQor KwkJLXJlICJcclxuXFswLTlcXStcWyBcdFxdK2NhbGwgJHtmdW5jX25hbWV9IFxcKChcW15cclxu XF0rKVxcKVxbIFx0XF0rISBWQVJTPShcW14gXHRcclxuXF0rKVxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCQkgICAgc2V0IGFycmF5X3NsaWNlX25hbWUgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCisrCQkg ICAgc2V0IHVuaXF1ZV9pZCAkZXhwZWN0X291dCgyLHN0cmluZykKKysJCX0KKysJICAgIH0KKysJ ICAgIGlmIHskdW5pcXVlX2lkICE9ICIifSB7CisrCQlzZXQgc3RyICIiCisrCQlmb3JlYWNoIHYg W3NwbGl0ICR1bmlxdWVfaWQgLF0geworKwkJICAgIHNldCB2YWwgW2dldF9pbnRlZ2VyX3ZhbHVl b2YgIiR7dn0iICI/PyJcCisrCQkJCSAiZ2V0IHZhcmlhYmxlICckdicgZm9yICckYXJyYXlfc2xp Y2VfbmFtZSciXQorKwkJICAgIHNldCByZXBsYWNlbWVudF92YXJzKCR2KSAkdmFsCisrCQkgICAg aWYgeyRzdHIgIT0gIiJ9IHsKKysJCQlzZXQgc3RyICJTdHIsIgorKwkJICAgIH0KKysJCSAgICBz ZXQgc3RyICIkc3RyJHY9JHZhbCIKKysJCX0KKysJCXNldCB1bmlxdWVfaWQgIiAkc3RyIgorKwkg ICAgfQorKwkgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImRvd24iICJkb3duIiB7CisrCQktcmUgIlxy XG4kZ2RiX3Byb21wdCAkIiB7CisrCQkgICAgIyBEb24ndCBpc3N1ZSBhIHBhc3MgaGVyZS4KKysJ CX0KKysJICAgIH0KKysKKysJICAgICMgQ2hlY2sgd2UgaGF2ZSBhbGwgdGhlIGluZm9ybWF0aW9u IHdlIG5lZWQgdG8gc3VjY2Vzc2Z1bGx5IHJ1biBvbmUKKysJICAgICMgb2YgdGhlc2UgdGVzdHMu CisrCSAgICBpZiB7ICRleHBlY3RlZF9yZXN1bHQgPT0gIiIgfSB7CisrCQlwZXJyb3IgImZhaWxl ZCB0byBleHRyYWN0IGV4cGVjdGVkIHJlc3VsdHMiCisrCQlyZXR1cm4gMAorKwkgICAgfQorKwkg ICAgaWYgeyAkYXJyYXlfc2xpY2VfbmFtZSA9PSAiIiB9IHsKKysJCXBlcnJvciAiZmFpbGVkIHRv IGV4dHJhY3QgYXJyYXkgc2xpY2UgbmFtZSIKKysJCXJldHVybiAwCisrCSAgICB9CisrCisrCSAg ICAjIENoZWNrIEdEQiBjYW4gY29ycmVjdGx5IHByaW50IHRoZSBhcnJheSBzbGljZSB0aGF0IHdh cyBwYXNzZWQgaW50bworKwkgICAgIyB0aGUgY3VycmVudCBmcmFtZS4KKysJICAgIHNldCBwYXR0 ZXJuIFtzdHJpbmdfdG9fcmVnZXhwICIgPSAkZXhwZWN0ZWRfcmVzdWx0Il0KKysJICAgIGdkYl90 ZXN0ICJwIGFycmF5IiAiJHBhdHRlcm4iIFwKKysJCSJjaGVjayB2YWx1ZSBvZiAnJGFycmF5X3Ns aWNlX25hbWUnJHVuaXF1ZV9pZCIKKysKKysJICAgICMgR2V0IHRoZSBzaXplIG9mIHRoZSBzbGlj ZS4KKysJICAgIHNldCBzaXplX2luX3Nob3cgXAorKwkJW2dldF9pbnRlZ2VyX3ZhbHVlb2YgInNp emVvZiAoYXJyYXkpIiAic2hvd191bmtub3duIiBcCisrCQkgICAgICJnZXQgc2l6ZW9mICckYXJy YXlfc2xpY2VfbmFtZSckdW5pcXVlX2lkIGluIHNob3ciXQorKwkgICAgc2V0IGFkZHJfaW5fc2hv dyBcCisrCQlbZ2V0X2hleGFkZWNpbWFsX3ZhbHVlb2YgIiZhcnJheSIgInNob3dfdW5rbm93biIg XAorKwkJICAgICAiZ2V0IGFkZHJlc3MgJyRhcnJheV9zbGljZV9uYW1lJyR1bmlxdWVfaWQgaW4g c2hvdyJdCisrCisrCSAgICAjIE5vdyBtb3ZlIGludG8gdGhlIHByZXZpb3VzIGZyYW1lLCBhbmQg c2VlIGlmIEdEQiBjYW4gZXh0cmFjdCB0aGUKKysJICAgICMgYXJyYXkgc2xpY2UgZnJvbSB0aGUg b3JpZ2luYWwgcGFyZW50IG9iamVjdC4gIEFnYWluLCB1c2Ugb2YKKysJICAgICMgZ2RiX3Rlc3Rf bXVsdGlwbGUgdG8gYXZvaWQgZmlsbGluZyB0aGUgbG9ncyB3aXRoIHVubmVjZXNzYXJ5CisrCSAg ICAjIHBhc3Nlcy4KKysJICAgIGdkYl90ZXN0X211bHRpcGxlICJ1cCIgInVwIiB7CisrCQktcmUg IlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCQkgICAgIyBEbyBub3RoaW5nLgorKwkJfQorKwkgICAg fQorKworKwkgICAgIyBQcmludCB0aGUgYXJyYXkgc2xpY2UsIHRoaXMgd2lsbCBmb3JjZSBHREIg dG8gbWFudWFsbHkgZXh0cmFjdCB0aGUKKysJICAgICMgc2xpY2UgZnJvbSB0aGUgcGFyZW50IGFy cmF5LgorKwkgICAgZ2RiX3Rlc3QgInAgJGFycmF5X3NsaWNlX25hbWUiICIkcGF0dGVybiIgXAor KwkJImNoZWNrIGFycmF5IHNsaWNlICckYXJyYXlfc2xpY2VfbmFtZSckdW5pcXVlX2lkIGNhbiBi ZSBleHRyYWN0ZWQiCisrCisrCSAgICAjIEdldCB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UgaW4gdGhl IGNhbGxpbmcgZnJhbWUuCisrCSAgICBzZXQgc2l6ZV9pbl9wYXJlbnQgXAorKwkJW2dldF9pbnRl Z2VyX3ZhbHVlb2YgInNpemVvZiAoJGFycmF5X3NsaWNlX25hbWUpIiBcCisrCQkgICAgICJwYXJl bnRfdW5rbm93biIgXAorKwkJICAgICAiZ2V0IHNpemVvZiAnJGFycmF5X3NsaWNlX25hbWUnJHVu aXF1ZV9pZCBpbiBwYXJlbnQiXQorKworKwkgICAgIyBGaWd1cmUgb3V0IHRoZSBzdGFydCBhbmQg ZW5kIGFkZHJlc3NlcyBvZiB0aGUgZnVsbCBhcnJheSBpbiB0aGUKKysJICAgICMgcGFyZW50IGZy YW1lLgorKwkgICAgc2V0IGZ1bGxfdmFyX25hbWUgW2FycmF5X3NsaWNlX3RvX3ZhciAkYXJyYXlf c2xpY2VfbmFtZV0KKysJICAgIHNldCBzdGFydF9hZGRyIFtnZXRfaGV4YWRlY2ltYWxfdmFsdWVv ZiAiJiR7ZnVsbF92YXJfbmFtZX0iIFwKKysJCQkJInN0YXJ0IHVua25vd24iXQorKwkgICAgc2V0 IGVuZF9hZGRyIFtnZXRfaGV4YWRlY2ltYWxfdmFsdWVvZiBcCisrCQkJICAgICAgIigmJHtmdWxs X3Zhcl9uYW1lfSkgKyBzaXplb2YgKCR7ZnVsbF92YXJfbmFtZX0pIiBcCisrCQkJICAgICAgImVu ZCB1bmtub3duIl0KKysKKysJICAgICMgVGhlIEZvcnRyYW4gY29tcGlsZXIgY2FuIGNob29zZSB0 byBlaXRoZXIgc2VuZCBhIGRlc2NyaXB0b3IgdGhhdAorKwkgICAgIyBkZXNjcmliZXMgdGhlIGFy cmF5IHNsaWNlIHRvIHRoZSBzdWJyb3V0aW5lLCBvciBpdCBjYW4gcmVwYWNrIHRoZQorKwkgICAg IyBzbGljZSBpbnRvIGFuIGFycmF5IHNlY3Rpb24gYW5kIHNlbmQgdGhhdC4KKysJICAgICMKKysJ ICAgICMgV2UgZmluZCB0aGUgYWRkcmVzcyByYW5nZSBvZiB0aGUgb3JpZ2luYWwgYXJyYXkgaW4g dGhlIHBhcmVudCwKKysJICAgICMgYW5kIHRoZSBhZGRyZXNzIG9mIHRoZSBzbGljZSBpbiB0aGUg c2hvdyBmdW5jdGlvbiwgaWYgdGhlCisrCSAgICAjIGFkZHJlc3Mgb2YgdGhlIHNsaWNlIChmcm9t IHNob3cpIGlzIGluIHRoZSByYW5nZSBvZiB0aGUgb3JpZ2luYWwKKysJICAgICMgYXJyYXkgdGhl biByZXBhY2tpbmcgaGFzIG5vdCBvY2N1cnJlZCwgb3RoZXJ3aXNlLCB0aGUgc2xpY2UgaXMKKysJ ICAgICMgb3V0c2lkZSBvZiB0aGUgcGFyZW50LCBhbmQgcmVwYWNraW5nIG11c3QgaGF2ZSBvY2N1 cnJlZC4KKysJICAgICMKKysJICAgICMgVGhlIGdvYWwgaGVyZSBpcyB0byBjb21wYXJlIHRoZSBz aXplcyBvZiB0aGUgc2xpY2UgaW4gc2hvdyB3aXRoCisrCSAgICAjIHRoZSBzaXplIG9mIHRoZSBz bGljZSBleHRyYWN0ZWQgYnkgR0RCLiAgU28gd2UgY2FuIG9ubHkgY29tcGFyZQorKwkgICAgIyBz aXplcyB3aGVuIEdEQidzIHJlcGFja2luZyBzZXR0aW5nIG1hdGNoZXMgdGhlIHJlcGFja2luZwor KwkgICAgIyBiZWhhdmlvdXIgd2UgZ290IGZyb20gdGhlIGNvbXBpbGVyLgorKwkgICAgaWYgeyAo JGFkZHJfaW5fc2hvdyA8ICRzdGFydF9hZGRyIHx8ICRhZGRyX2luX3Nob3cgPj0gJGVuZF9hZGRy KSBcCisrCQkgPT0gKCRyZXBhY2sgPT0gIm9uIikgfSB7CisrCQlnZGJfYXNzZXJ0IHskc2l6ZV9p bl9zaG93ID09ICRzaXplX2luX3BhcmVudH0gXAorKwkJICAgICJjaGVjayBzaXplcyBtYXRjaCIK KysJICAgIH0gZWxzZWlmIHsgJHJlcGFjayA9PSAib2ZmIiB9IHsKKysJCSMgR0RCJ3MgcmVwYWNr aW5nIGlzIG9mZiAoc28gc2xpY2VzIGFyZSBsZWZ0IHVucGFja2VkKSwgYnV0CisrCQkjIHRoZSBj b21waWxlciBkaWQgcGFjayB0aGlzIG9uZS4gIEFzIGEgcmVzdWx0IHdlIGNhbid0CisrCQkjIGNv bXBhcmUgdGhlIHNpemVzIGJldHdlZW4gdGhlIGNvbXBpbGVyJ3Mgc2xpY2UgYW5kIEdEQidzCisr CQkjIHNsaWNlLgorKwkJdmVyYm9zZSAtbG9nICJzbGljZSAnJGFycmF5X3NsaWNlX25hbWUnIHdh cyByZXBhY2tlZCwgc2l6ZXMgY2FuJ3QgYmUgY29tcGFyZWQiCisrCSAgICB9IGVsc2UgeworKwkJ IyBMaWtlIHRoZSBhYm92ZSwgYnV0IHRoZSByZXZlcnNlLCBHREIncyByZXBhY2tpbmcgaXMgb24s IGJ1dAorKwkJIyB0aGUgY29tcGlsZXIgZGlkbid0IHJlcGFjayB0aGlzIHNsaWNlLgorKwkJdmVy Ym9zZSAtbG9nICJzbGljZSAnJGFycmF5X3NsaWNlX25hbWUnIHdhcyBub3QgcmVwYWNrZWQsIHNp emVzIGNhbid0IGJlIGNvbXBhcmVkIgorKwkgICAgfQorKworKwkgICAgIyBJZiB0aGUgYXJyYXkg bmFtZSB3ZSBqdXN0IHRlc3RlZCBpbmNsdWRlZCB2YXJpYWJsZSBuYW1lcywgdGhlbgorKwkgICAg IyB0ZXN0IGFnYWluIHdpdGggYWxsIHRoZSB2YXJpYWJsZXMgZXhwYW5kZWQuCisrCSAgICBpZiB7 JHVuaXF1ZV9pZCAhPSAiIn0geworKwkJZm9yZWFjaCB2IFthcnJheSBuYW1lcyByZXBsYWNlbWVu dF92YXJzXSB7CisrCQkgICAgc2V0IHZhbCAkcmVwbGFjZW1lbnRfdmFycygkdikKKysJCSAgICBz ZXQgYXJyYXlfc2xpY2VfbmFtZSBcCisrCQkJW3JlZ3N1YiAiXFx5JHt2fVxceSIgJGFycmF5X3Ns aWNlX25hbWUgJHZhbF0KKysJCX0KKysJCWdkYl90ZXN0ICJwICRhcnJheV9zbGljZV9uYW1lIiAi JHBhdHRlcm4iIFwKKysJCSAgICAiY2hlY2sgYXJyYXkgc2xpY2UgJyRhcnJheV9zbGljZV9uYW1l JyR1bmlxdWVfaWQgY2FuIGJlIGV4dHJhY3RlZCwgd2l0aCB2YXJpYWJsZXMgZXhwYW5kZWQiCisr CSAgICB9CisrCX0KKysgICAgfQorKworKyAgICAjIEVuc3VyZSB3ZSByZWFjaGVkIHRoZSBmaW5h bCBicmVha3BvaW50LiAgSWYgbW9yZSB0ZXN0cyBoYXZlIGJlZW4gYWRkZWQKKysgICAgIyB0byB0 aGUgdGVzdCBzY3JpcHQsIGFuZCB0aGlzIHN0YXJ0cyBmYWlsaW5nLCB0aGVuIHRoZSBzYWZldHkg J3doaWxlJworKyAgICAjIGxvb3AgYWJvdmUgbWlnaHQgbmVlZCB0byBiZSBpbmNyZWFzZWQuCisr ICAgIGdkYl9hc3NlcnQgeyRmb3VuZF9maW5hbF9icmVha3BvaW50fSAicmFuIGFsbCB0ZXN0cyIK KyB9CisgCistZ2RiX2JyZWFrcG9pbnQgInNob3ciCistZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgInNob3ciCistZ2RiX3Rlc3QgInVwIiAiLioiCistZ2RiX3Rlc3QgInAgYXJyYXkgKDE6MTA6 MiwgMToxMDoyKSIgXAorLSAgICAiRm9ydHJhbiBhcnJheSBzdHJpZGVzIGFyZSBub3QgY3VycmVu dGx5IHN1cHBvcnRlZCIgXAorLSAgICAidXNpbmcgYXJyYXkgc3RyaWRlIGdpdmVzIGFuIGVycm9y IgorK2ZvcmVhY2hfd2l0aF9wcmVmaXggcmVwYWNrIHsgb24gb2ZmIH0geworKyAgICBydW5fdGVz dCAkcmVwYWNrCisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJy YXktc2xpY2VzLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmY5 MAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZjkwCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5mOTAKK0BAIC0xMyw1OCAr MTMsMzY4IEBACisgISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCistc3Vicm91dGluZSBz aG93IChtZXNzYWdlLCBhcnJheSkKKy0gIGNoYXJhY3RlciAobGVuPSopIDo6IG1lc3NhZ2UKKytz dWJyb3V0aW5lIHNob3dfZWxlbSAoYXJyYXkpCisrICBpbnRlZ2VyIDo6IGFycmF5CisrCisrICBw cmludCAqLCAiIgorKyAgcHJpbnQgKiwgIkV4cGVjdGVkIEdEQiBPdXRwdXQ6IgorKyAgcHJpbnQg KiwgIiIKKysKKysgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiR0RCID0gIgor KyAgd3JpdGUoKiwgZm10PSIoSTApIiwgYWR2YW5jZT0ibm8iKSBhcnJheQorKyAgd3JpdGUoKiwg Zm10PSIoQSkiLCBhZHZhbmNlPSJ5ZXMiKSAiIgorKworKyAgcHJpbnQgKiwgIiIJISBEaXNwbGF5 IEVsZW1lbnQKKytlbmQgc3Vicm91dGluZSBzaG93X2VsZW0KKysKKytzdWJyb3V0aW5lIHNob3df c3RyIChhcnJheSkKKysgIGNoYXJhY3RlciAobGVuPSopIDo6IGFycmF5CisrCisrICBwcmludCAq LCAiIgorKyAgcHJpbnQgKiwgIkV4cGVjdGVkIEdEQiBPdXRwdXQ6IgorKyAgcHJpbnQgKiwgIiIK KysgIHdyaXRlICgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9ICciCisrICB3cml0 ZSAoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpIGFycmF5CisrICB3cml0ZSAoKiwgZm10PSIo QSkiLCBhZHZhbmNlPSJ5ZXMiKSAiJyIKKysKKysgIHByaW50ICosICIiCSEgRGlzcGxheSBTdHJp bmcKKytlbmQgc3Vicm91dGluZSBzaG93X3N0cgorKworK3N1YnJvdXRpbmUgc2hvd18xZCAoYXJy YXkpCisrICBpbnRlZ2VyLCBkaW1lbnNpb24gKDopIDo6IGFycmF5CisrCisrICBwcmludCAqLCAi QXJyYXkgQ29udGVudHM6IgorKyAgcHJpbnQgKiwgIiIKKysKKysgIGRvIGk9TEJPVU5EIChhcnJh eSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCisrICAgICB3cml0ZSgqLCBmbXQ9IihpNCkiLCBh ZHZhbmNlPSJubyIpIGFycmF5IChpKQorKyAgZW5kIGRvCisrCisrICBwcmludCAqLCAiIgorKyAg cHJpbnQgKiwgIkV4cGVjdGVkIEdEQiBPdXRwdXQ6IgorKyAgcHJpbnQgKiwgIiIKKysKKysgIHdy aXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiR0RCID0gKCIKKysgIGRvIGk9TEJPVU5E IChhcnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCisrICAgICBpZiAoaSA+IExCT1VORCAo YXJyYXksIDEpKSB0aGVuCisrICAgICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5v IikgIiwgIgorKyAgICAgZW5kIGlmCisrICAgICB3cml0ZSgqLCBmbXQ9IihJMCkiLCBhZHZhbmNl PSJubyIpIGFycmF5IChpKQorKyAgZW5kIGRvCisrICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFu Y2U9Im5vIikgIikiCisrCisrICBwcmludCAqLCAiIgkhIERpc3BsYXkgQXJyYXkgU2xpY2UgMUQK KytlbmQgc3Vicm91dGluZSBzaG93XzFkCisrCisrc3Vicm91dGluZSBzaG93XzJkIChhcnJheSkK KyAgIGludGVnZXIsIGRpbWVuc2lvbiAoOiw6KSA6OiBhcnJheQorIAorLSAgcHJpbnQgKiwgbWVz c2FnZQorKyAgcHJpbnQgKiwgIkFycmF5IENvbnRlbnRzOiIKKysgIHByaW50ICosICIiCisrCisg ICBkbyBpPUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorICAgICAgZG8g aj1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKyAgICAgICAgIHdyaXRl KCosIGZtdD0iKGk0KSIsIGFkdmFuY2U9Im5vIikgYXJyYXkgKGosIGkpCisgICAgICBlbmQgZG8K KyAgICAgIHByaW50ICosICIiCistIGVuZCBkbworLSBwcmludCAqLCBhcnJheQorLSBwcmludCAq LCAiIgorKyAgZW5kIGRvCisgCistZW5kIHN1YnJvdXRpbmUgc2hvdworKyAgcHJpbnQgKiwgIiIK KysgIHByaW50ICosICJFeHBlY3RlZCBHREIgT3V0cHV0OiIKKysgIHByaW50ICosICIiCisgCist cHJvZ3JhbSB0ZXN0CisrICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9 ICgiCisrICBkbyBpPUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorKyAg ICAgaWYgKGkgPiBMQk9VTkQgKGFycmF5LCAyKSkgdGhlbgorKyAgICAgICAgd3JpdGUoKiwgZm10 PSIoQSkiLCBhZHZhbmNlPSJubyIpICIgIgorKyAgICAgZW5kIGlmCisrICAgICB3cml0ZSgqLCBm bXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIigiCisrICAgICBkbyBqPUxCT1VORCAoYXJyYXksIDEp LCBVQk9VTkQgKGFycmF5LCAxKSwgMQorKyAgICAgICAgaWYgKGogPiBMQk9VTkQgKGFycmF5LCAx KSkgdGhlbgorKyAgICAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIs ICIKKysgICAgICAgIGVuZCBpZgorKyAgICAgICAgd3JpdGUoKiwgZm10PSIoSTApIiwgYWR2YW5j ZT0ibm8iKSBhcnJheSAoaiwgaSkKKysgICAgIGVuZCBkbworKyAgICAgd3JpdGUoKiwgZm10PSIo QSkiLCBhZHZhbmNlPSJubyIpICIpIgorKyAgZW5kIGRvCisrICB3cml0ZSgqLCBmbXQ9IihBKSIs IGFkdmFuY2U9InllcyIpICIpIgorKworKyAgcHJpbnQgKiwgIiIJISBEaXNwbGF5IEFycmF5IFNs aWNlIDJECisrZW5kIHN1YnJvdXRpbmUgc2hvd18yZAorKworK3N1YnJvdXRpbmUgc2hvd18zZCAo YXJyYXkpCisrICBpbnRlZ2VyLCBkaW1lbnNpb24gKDosOiw6KSA6OiBhcnJheQorKworKyAgcHJp bnQgKiwgIiIKKysgIHByaW50ICosICJFeHBlY3RlZCBHREIgT3V0cHV0OiIKKysgIHByaW50ICos ICIiCisrCisrICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9ICgiCisr ICBkbyBpPUxCT1VORCAoYXJyYXksIDMpLCBVQk9VTkQgKGFycmF5LCAzKSwgMQorKyAgICAgaWYg KGkgPiBMQk9VTkQgKGFycmF5LCAzKSkgdGhlbgorKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSki LCBhZHZhbmNlPSJubyIpICIgIgorKyAgICAgZW5kIGlmCisrICAgICB3cml0ZSgqLCBmbXQ9IihB KSIsIGFkdmFuY2U9Im5vIikgIigiCisrICAgICBkbyBqPUxCT1VORCAoYXJyYXksIDIpLCBVQk9V TkQgKGFycmF5LCAyKSwgMQorKyAgICAgICAgaWYgKGogPiBMQk9VTkQgKGFycmF5LCAyKSkgdGhl bgorKyAgICAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIgIgorKyAg ICAgICAgZW5kIGlmCisrICAgICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikg IigiCisrICAgICAgICBkbyBrPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwg MQorKyAgICAgICAgICAgaWYgKGsgPiBMQk9VTkQgKGFycmF5LCAxKSkgdGhlbgorKyAgICAgICAg ICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIsICIKKysgICAgICAgICAg IGVuZCBpZgorKyAgICAgICAgICAgd3JpdGUoKiwgZm10PSIoSTApIiwgYWR2YW5jZT0ibm8iKSBh cnJheSAoaywgaiwgaSkKKysgICAgICAgIGVuZCBkbworKyAgICAgICAgd3JpdGUoKiwgZm10PSIo QSkiLCBhZHZhbmNlPSJubyIpICIpIgorKyAgICAgZW5kIGRvCisrICAgICB3cml0ZSgqLCBmbXQ9 IihBKSIsIGFkdmFuY2U9Im5vIikgIikiCisrICBlbmQgZG8KKysgIHdyaXRlKCosIGZtdD0iKEEp IiwgYWR2YW5jZT0ieWVzIikgIikiCisrCisrICBwcmludCAqLCAiIgkhIERpc3BsYXkgQXJyYXkg U2xpY2UgM0QKKytlbmQgc3Vicm91dGluZSBzaG93XzNkCisrCisrc3Vicm91dGluZSBzaG93XzRk IChhcnJheSkKKysgIGludGVnZXIsIGRpbWVuc2lvbiAoOiw6LDosOikgOjogYXJyYXkKKysKKysg IHByaW50ICosICIiCisrICBwcmludCAqLCAiRXhwZWN0ZWQgR0RCIE91dHB1dDoiCisrICBwcmlu dCAqLCAiIgorKworKyAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICJHREIgPSAo IgorKyAgZG8gaT1MQk9VTkQgKGFycmF5LCA0KSwgVUJPVU5EIChhcnJheSwgNCksIDEKKysgICAg IGlmIChpID4gTEJPVU5EIChhcnJheSwgNCkpIHRoZW4KKysgICAgICAgIHdyaXRlKCosIGZtdD0i KEEpIiwgYWR2YW5jZT0ibm8iKSAiICIKKysgICAgIGVuZCBpZgorKyAgICAgd3JpdGUoKiwgZm10 PSIoQSkiLCBhZHZhbmNlPSJubyIpICIoIgorKyAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAzKSwg VUJPVU5EIChhcnJheSwgMyksIDEKKysgICAgICAgIGlmIChqID4gTEJPVU5EIChhcnJheSwgMykp IHRoZW4KKysgICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiICIK KysgICAgICAgIGVuZCBpZgorKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJu byIpICIoIgorKworKyAgICAgICAgZG8gaz1MQk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJh eSwgMiksIDEKKysgICAgICAgICAgIGlmIChrID4gTEJPVU5EIChhcnJheSwgMikpIHRoZW4KKysg ICAgICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiICIKKysgICAg ICAgICAgIGVuZCBpZgorKyAgICAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJu byIpICIoIgorKyAgICAgICAgICAgZG8gbD1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJh eSwgMSksIDEKKysgICAgICAgICAgICAgIGlmIChsID4gTEJPVU5EIChhcnJheSwgMSkpIHRoZW4K KysgICAgICAgICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiLCAi CisrICAgICAgICAgICAgICBlbmQgaWYKKysgICAgICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEkw KSIsIGFkdmFuY2U9Im5vIikgYXJyYXkgKGwsIGssIGosIGkpCisrICAgICAgICAgICBlbmQgZG8K KysgICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKSIKKysgICAg ICAgIGVuZCBkbworKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIp IgorKyAgICAgZW5kIGRvCisrICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikg IikiCisrICBlbmQgZG8KKysgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ieWVzIikgIiki CisrCisrICBwcmludCAqLCAiIgkhIERpc3BsYXkgQXJyYXkgU2xpY2UgNEQKKytlbmQgc3Vicm91 dGluZSBzaG93XzRkCisgCisrIQorKyEgU3RhcnQgb2YgdGVzdCBwcm9ncmFtLgorKyEKKytwcm9n cmFtIHRlc3QKKyAgIGludGVyZmFjZQorLSAgICAgc3Vicm91dGluZSBzaG93IChtZXNzYWdlLCBh cnJheSkKKy0gICAgICAgY2hhcmFjdGVyIChsZW49KikgOjogbWVzc2FnZQorKyAgICAgc3Vicm91 dGluZSBzaG93X3N0ciAoYXJyYXkpCisrICAgICAgIGNoYXJhY3RlciAobGVuPSopIDo6IGFycmF5 CisrICAgICBlbmQgc3Vicm91dGluZSBzaG93X3N0cgorKworKyAgICAgc3Vicm91dGluZSBzaG93 XzFkIChhcnJheSkKKysgICAgICAgaW50ZWdlciwgZGltZW5zaW9uICg6KSA6OiBhcnJheQorKyAg ICAgZW5kIHN1YnJvdXRpbmUgc2hvd18xZAorKworKyAgICAgc3Vicm91dGluZSBzaG93XzJkIChh cnJheSkKKyAgICAgICAgaW50ZWdlciwgZGltZW5zaW9uKDosOikgOjogYXJyYXkKKy0gICAgIGVu ZCBzdWJyb3V0aW5lIHNob3cKKysgICAgIGVuZCBzdWJyb3V0aW5lIHNob3dfMmQKKysKKysgICAg IHN1YnJvdXRpbmUgc2hvd18zZCAoYXJyYXkpCisrICAgICAgIGludGVnZXIsIGRpbWVuc2lvbig6 LDosOikgOjogYXJyYXkKKysgICAgIGVuZCBzdWJyb3V0aW5lIHNob3dfM2QKKysKKysgICAgIHN1 YnJvdXRpbmUgc2hvd180ZCAoYXJyYXkpCisrICAgICAgIGludGVnZXIsIGRpbWVuc2lvbig6LDos Oiw6KSA6OiBhcnJheQorKyAgICAgZW5kIHN1YnJvdXRpbmUgc2hvd180ZAorICAgZW5kIGludGVy ZmFjZQorIAorKyAgISBEZWNsYXJlIHZhcmlhYmxlcyB1c2VkIGluIHRoaXMgdGVzdC4KKysgIGlu dGVnZXIsIGRpbWVuc2lvbiAoLTEwOi0xLC0xMDotMikgOjogbmVnX2FycmF5CisgICBpbnRlZ2Vy LCBkaW1lbnNpb24gKDE6MTAsMToxMCkgOjogYXJyYXkKKyAgIGludGVnZXIsIGFsbG9jYXRhYmxl IDo6IG90aGVyICg6LCA6KQorKyAgY2hhcmFjdGVyIChsZW49MjYpIDo6IHN0cl8xID0gImFiY2Rl ZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgorKyAgaW50ZWdlciwgZGltZW5zaW9uICgtMjoyLC0yOjIs LTI6MikgOjogYXJyYXkzZAorKyAgaW50ZWdlciwgZGltZW5zaW9uICgtMzozLDc6MTAsLTM6Mywt MTA6LTcpIDo6IGFycmF5NGQKKysgIGludGVnZXIsIGRpbWVuc2lvbiAoMTA6MjApIDo6IGFycmF5 MWQKKysgIGludGVnZXIsIGRpbWVuc2lvbig6LDopLCBwb2ludGVyIDo6IHBvaW50ZXIyZCA9PiBu dWxsKCkKKysgIGludGVnZXIsIGRpbWVuc2lvbigtMTo5LC0xOjkpLCB0YXJnZXQgOjogdGFycmF5 CisgCisrICAhIEFsbG9jYXRlIG9yIGFzc29jaWF0ZSBhbnkgdmFyaWFibGVzIGFzIG5lZWRlZC4K KyAgIGFsbG9jYXRlIChvdGhlciAoLTU6NCwgLTI6NykpCisrICBwb2ludGVyMmQgPT4gdGFycmF5 CisgCistICBkbyBpPUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorLSAg ICAgZG8gaj1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKy0gICAgICAg IGFycmF5IChqLGkpID0gKChpIC0gMSkgKiBVQk9VTkQgKGFycmF5LCAyKSkgKyBqCistICAgICBl bmQgZG8KKy0gIGVuZCBkbworKyAgISBGaWxsIGFycmF5cyB3aXRoIGNvbnRlbnRzIHJlYWR5IGZv ciB0ZXN0aW5nLgorKyAgY2FsbCBmaWxsX2FycmF5XzFkIChhcnJheTFkKQorKworKyAgY2FsbCBm aWxsX2FycmF5XzJkIChuZWdfYXJyYXkpCisrICBjYWxsIGZpbGxfYXJyYXlfMmQgKGFycmF5KQor KyAgY2FsbCBmaWxsX2FycmF5XzJkIChvdGhlcikKKysgIGNhbGwgZmlsbF9hcnJheV8yZCAodGFy cmF5KQorKworKyAgY2FsbCBmaWxsX2FycmF5XzNkIChhcnJheTNkKQorKyAgY2FsbCBmaWxsX2Fy cmF5XzRkIChhcnJheTRkKQorKworKyAgISBUaGUgdGVzdHMuICBFYWNoIGNhbGwgdG8gYSBzaG93 XyogZnVuY3Rpb24gbXVzdCBoYXZlIGEgdW5pcXVlIHNldAorKyAgISBvZiBhcmd1bWVudHMgYXMg R0RCIHVzZXMgdGhlIGFyZ3VtZW50cyBhcmUgcGFydCBvZiB0aGUgdGVzdCBuYW1lCisrICAhIHN0 cmluZywgc28gZHVwbGljYXRlIGFyZ3VtZW50cyB3aWxsIHJlc3VsdCBpbiBkdXBsaWNhdGUgdGVz dAorKyAgISBuYW1lcy4KKysgICEKKysgICEgSWYgYSBzaG93XyogbGluZSBlbmRzIHdpdGggVkFS Uz0uLi4gd2hlcmUgJy4uLicgaXMgYSBjb21tYQorKyAgISBzZXBhcmF0ZWQgbGlzdCBvZiB2YXJp YWJsZSBuYW1lcywgdGhlc2UgdmFyaWFibGVzIGFyZSBhc3N1bWVkIHRvCisrICAhIGJlIHBhcnQg b2YgdGhlIGNhbGwgbGluZSwgYW5kIHdpbGwgYmUgZXhwYW5kZWQgYnkgdGhlIHRlc3Qgc2NyaXB0 LAorKyAgISBmb3IgZXhhbXBsZToKKysgICEKKysgICEgICAgIGRvIHg9MSw5LDEKKysgICEgICAg ICAgZG8geT14LDEwLDEKKysgICEgICAgICAgICBjYWxsIHNob3dfMWQgKHNvbWVfYXJyYXkgKHgs eSkpCSEgVkFSUz14LHkKKysgICEgICAgICAgZW5kIGRvCisrICAhICAgICBlbmQgZG8KKysgICEK KysgICEgSW4gdGhpcyBleGFtcGxlIHRoZSB0ZXN0IHNjcmlwdCB3aWxsIGF1dG9tYXRpY2FsbHkg ZXhwYW5kICd4JyBhbmQKKysgICEgJ3knIGluIG9yZGVyIHRvIGJldHRlciB0ZXN0IGRpZmZlcmVu dCBhc3BlY3RzIG9mIEdEQi4gIERvIHRha2UKKysgICEgY2FyZSwgdGhlIGV4cGFuc2lvbiBpcyBu b3QgdmVyeSAic21hcnQiLCBzbyB0cnkgdG8gYXZvaWQgY2xhc2hpbmcKKysgICEgd2l0aCBvdGhl ciB0ZXh0IG9uIHRoZSBsaW5lLCBpbiB0aGUgZXhhbXBsZSBhYm92ZSwgYXZvaWQgdmFyaWFibGVz CisrICAhIG5hbWVkICdzb21lJyBvciAnYXJyYXknLCBhcyB0aGVzZSB3aWxsIGxpa2VseSBjbGFz aCB3aXRoCisrICAhICdzb21lX2FycmF5Jy4KKysgIGNhbGwgc2hvd19zdHIgKHN0cl8xKQorKyAg Y2FsbCBzaG93X3N0ciAoc3RyXzEgKDE6MjApKQorKyAgY2FsbCBzaG93X3N0ciAoc3RyXzEgKDEw OjIwKSkKKyAKKy0gIGRvIGk9TEJPVU5EIChvdGhlciwgMiksIFVCT1VORCAob3RoZXIsIDIpLCAx CistICAgICBkbyBqPUxCT1VORCAob3RoZXIsIDEpLCBVQk9VTkQgKG90aGVyLCAxKSwgMQorLSAg ICAgICAgb3RoZXIgKGosaSkgPSAoKGkgLSAxKSAqIFVCT1VORCAob3RoZXIsIDIpKSArIGoKKysg IGNhbGwgc2hvd19lbGVtIChhcnJheTFkICgxMSkpCisrICBjYWxsIHNob3dfZWxlbSAocG9pbnRl cjJkICgyLDMpKQorKworKyAgY2FsbCBzaG93XzFkIChhcnJheTFkKQorKyAgY2FsbCBzaG93XzFk IChhcnJheTFkICgxMzoxNykpCisrICBjYWxsIHNob3dfMWQgKGFycmF5MWQgKDE3OjEzOi0xKSkK KysgIGNhbGwgc2hvd18xZCAoYXJyYXkgKDE6NSwxKSkKKysgIGNhbGwgc2hvd18xZCAoYXJyYXk0 ZCAoMSw3LDMsOikpCisrICBjYWxsIHNob3dfMWQgKHBvaW50ZXIyZCAoLTE6MywgMikpCisrICBj YWxsIHNob3dfMWQgKHBvaW50ZXIyZCAoLTEsIDI6NCkpCisrCisrICAhIEVuY2xvc2luZyB0aGUg YXJyYXkgc2xpY2UgYXJndW1lbnQgaW4gKC4uLikgY2F1c2VzcyBnZm9ydHJhbiB0bworKyAgISBy ZXBhY2sgdGhlIGFycmF5LgorKyAgY2FsbCBzaG93XzFkICgoYXJyYXkgKDE6NSwxKSkpCisrCisr ICBjYWxsIHNob3dfMmQgKHBvaW50ZXIyZCkKKysgIGNhbGwgc2hvd18yZCAoYXJyYXkpCisrICBj YWxsIHNob3dfMmQgKGFycmF5ICgxOjUsMTo1KSkKKysgIGRvIGk9MSwxMCwyCisrICAgICBkbyBq PTEsMTAsMworKyAgICAgICAgY2FsbCBzaG93XzJkIChhcnJheSAoMToxMDppLDE6MTA6aikpCSEg VkFSUz1pLGoKKysgICAgICAgIGNhbGwgc2hvd18yZCAoYXJyYXkgKDEwOjE6LWksMToxMDpqKSkJ ISBWQVJTPWksagorKyAgICAgICAgY2FsbCBzaG93XzJkIChhcnJheSAoMTA6MTotaSwxMDoxOi1q KSkJISBWQVJTPWksagorKyAgICAgICAgY2FsbCBzaG93XzJkIChhcnJheSAoMToxMDppLDEwOjE6 LWopKQkhIFZBUlM9aSxqCisgICAgICBlbmQgZG8KKyAgIGVuZCBkbworKyAgY2FsbCBzaG93XzJk IChhcnJheSAoNjoyOi0xLDM6OSkpCisrICBjYWxsIHNob3dfMmQgKGFycmF5ICgxOjEwOjIsIDE6 MTA6MikpCisrICBjYWxsIHNob3dfMmQgKG90aGVyKQorKyAgY2FsbCBzaG93XzJkIChvdGhlciAo LTU6MCwgLTI6MCkpCisrICBjYWxsIHNob3dfMmQgKG90aGVyICgtNTo0OjIsIC0yOjc6MykpCisr ICBjYWxsIHNob3dfMmQgKG5lZ19hcnJheSkKKysgIGNhbGwgc2hvd18yZCAobmVnX2FycmF5ICgt MTA6LTMsLTg6LTQ6MikpCisrCisrICAhIEVuY2xvc2luZyB0aGUgYXJyYXkgc2xpY2UgYXJndW1l bnQgaW4gKC4uLikgY2F1c2VzcyBnZm9ydHJhbiB0bworKyAgISByZXBhY2sgdGhlIGFycmF5Lgor KyAgY2FsbCBzaG93XzJkICgoYXJyYXkgKDE6MTA6MywgMToxMDoyKSkpCisrICBjYWxsIHNob3df MmQgKChuZWdfYXJyYXkgKC0xMDotMywtODotNDoyKSkpCisgCistICBjYWxsIHNob3cgKCJhcnJh eSIsIGFycmF5KQorLSAgY2FsbCBzaG93ICgiYXJyYXkgKDE6NSwxOjUpIiwgYXJyYXkgKDE6NSwx OjUpKQorLSAgY2FsbCBzaG93ICgiYXJyYXkgKDE6MTA6MiwxOjEwOjIpIiwgYXJyYXkgKDE6MTA6 MiwxOjEwOjIpKQorLSAgY2FsbCBzaG93ICgiYXJyYXkgKDE6MTA6MywxOjEwOjIpIiwgYXJyYXkg KDE6MTA6MywxOjEwOjIpKQorLSAgY2FsbCBzaG93ICgiYXJyYXkgKDE6MTA6NSwxOjEwOjMpIiwg YXJyYXkgKDE6MTA6NCwxOjEwOjMpKQorKyAgY2FsbCBzaG93XzNkIChhcnJheTNkKQorKyAgY2Fs bCBzaG93XzNkIChhcnJheTNkKC0xOjEsLTE6MSwtMToxKSkKKysgIGNhbGwgc2hvd18zZCAoYXJy YXkzZCgxOi0xOi0xLDE6LTE6LTEsMTotMTotMSkpCisgCistICBjYWxsIHNob3cgKCJvdGhlciIs IG90aGVyKQorLSAgY2FsbCBzaG93ICgib3RoZXIgKC01OjAsIC0yOjApIiwgb3RoZXIgKC01OjAs IC0yOjApKQorLSAgY2FsbCBzaG93ICgib3RoZXIgKC01OjQ6MiwgLTI6NzozKSIsIG90aGVyICgt NTo0OjIsIC0yOjc6MykpCisrICAhIEVuY2xvc2luZyB0aGUgYXJyYXkgc2xpY2UgYXJndW1lbnQg aW4gKC4uLikgY2F1c2VzcyBnZm9ydHJhbiB0bworKyAgISByZXBhY2sgdGhlIGFycmF5LgorKyAg Y2FsbCBzaG93XzNkICgoYXJyYXkzZCgxOi0xOi0xLDE6LTE6LTEsMTotMTotMSkpKQorIAorKyAg Y2FsbCBzaG93XzRkIChhcnJheTRkKQorKyAgY2FsbCBzaG93XzRkIChhcnJheTRkICgtMzowLDEw Ojc6LTEsMDozLC03Oi0xMDotMSkpCisrICBjYWxsIHNob3dfNGQgKGFycmF5NGQgKDM6MDotMSwg MTA6NzotMSwgOiwgLTc6LTEwOi0xKSkKKysKKysgICEgRW5jbG9zaW5nIHRoZSBhcnJheSBzbGlj ZSBhcmd1bWVudCBpbiAoLi4uKSBjYXVzZXNzIGdmb3J0cmFuIHRvCisrICAhIHJlcGFjayB0aGUg YXJyYXkuCisrICBjYWxsIHNob3dfNGQgKChhcnJheTRkICgzOi0yOi0yLCAxMDo3Oi0yLCA6LCAt NzotMTA6LTEpKSkKKysKKysgICEgQWxsIGRvbmUuICBEZWFsbG9jYXRlLgorICAgZGVhbGxvY2F0 ZSAob3RoZXIpCisrCisrICAhIEdEQiBjYXRjaGVzIHRoaXMgZmluYWwgYnJlYWtwb2ludCB0byBp bmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSB0ZXN0LgorICAgcHJpbnQgKiwgIiIgISBGaW5hbCBCcmVh a3BvaW50LgorKworK2NvbnRhaW5zCisrCisrICAhIEZpbGwgYSAxRCBhcnJheSB3aXRoIGEgdW5p cXVlIHBvc2l0aXZlIGludGVnZXIgaW4gZWFjaCBlbGVtZW50LgorKyAgc3Vicm91dGluZSBmaWxs X2FycmF5XzFkIChhcnJheSkKKysgICAgaW50ZWdlciwgZGltZW5zaW9uICg6KSA6OiBhcnJheQor KyAgICBpbnRlZ2VyIDo6IGNvdW50ZXIKKysKKysgICAgY291bnRlciA9IDEKKysgICAgZG8gaj1M Qk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKKysgICAgICAgYXJyYXkgKGop ID0gY291bnRlcgorKyAgICAgICBjb3VudGVyID0gY291bnRlciArIDEKKysgICAgZW5kIGRvCisr ICBlbmQgc3Vicm91dGluZSBmaWxsX2FycmF5XzFkCisrCisrICAhIEZpbGwgYSAyRCBhcnJheSB3 aXRoIGEgdW5pcXVlIHBvc2l0aXZlIGludGVnZXIgaW4gZWFjaCBlbGVtZW50LgorKyAgc3Vicm91 dGluZSBmaWxsX2FycmF5XzJkIChhcnJheSkKKysgICAgaW50ZWdlciwgZGltZW5zaW9uICg6LDop IDo6IGFycmF5CisrICAgIGludGVnZXIgOjogY291bnRlcgorKworKyAgICBjb3VudGVyID0gMQor KyAgICBkbyBpPUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQorKyAgICAg ICBkbyBqPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwgMQorKyAgICAgICAg ICBhcnJheSAoaixpKSA9IGNvdW50ZXIKKysgICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAx CisrICAgICAgIGVuZCBkbworKyAgICBlbmQgZG8KKysgIGVuZCBzdWJyb3V0aW5lIGZpbGxfYXJy YXlfMmQKKysKKysgICEgRmlsbCBhIDNEIGFycmF5IHdpdGggYSB1bmlxdWUgcG9zaXRpdmUgaW50 ZWdlciBpbiBlYWNoIGVsZW1lbnQuCisrICBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfM2QgKGFycmF5 KQorKyAgICBpbnRlZ2VyLCBkaW1lbnNpb24gKDosOiw6KSA6OiBhcnJheQorKyAgICBpbnRlZ2Vy IDo6IGNvdW50ZXIKKysKKysgICAgY291bnRlciA9IDEKKysgICAgZG8gaT1MQk9VTkQgKGFycmF5 LCAzKSwgVUJPVU5EIChhcnJheSwgMyksIDEKKysgICAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAy KSwgVUJPVU5EIChhcnJheSwgMiksIDEKKysgICAgICAgICAgZG8gaz1MQk9VTkQgKGFycmF5LCAx KSwgVUJPVU5EIChhcnJheSwgMSksIDEKKysgICAgICAgICAgICAgYXJyYXkgKGssIGosaSkgPSBj b3VudGVyCisrICAgICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMQorKyAgICAgICAgICBl bmQgZG8KKysgICAgICAgZW5kIGRvCisrICAgIGVuZCBkbworKyAgZW5kIHN1YnJvdXRpbmUgZmls bF9hcnJheV8zZAorKworKyAgISBGaWxsIGEgNEQgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3NpdGl2 ZSBpbnRlZ2VyIGluIGVhY2ggZWxlbWVudC4KKysgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV80ZCAo YXJyYXkpCisrICAgIGludGVnZXIsIGRpbWVuc2lvbiAoOiw6LDosOikgOjogYXJyYXkKKysgICAg aW50ZWdlciA6OiBjb3VudGVyCisrCisrICAgIGNvdW50ZXIgPSAxCisrICAgIGRvIGk9TEJPVU5E IChhcnJheSwgNCksIFVCT1VORCAoYXJyYXksIDQpLCAxCisrICAgICAgIGRvIGo9TEJPVU5EIChh cnJheSwgMyksIFVCT1VORCAoYXJyYXksIDMpLCAxCisrICAgICAgICAgIGRvIGs9TEJPVU5EIChh cnJheSwgMiksIFVCT1VORCAoYXJyYXksIDIpLCAxCisrICAgICAgICAgICAgIGRvIGw9TEJPVU5E IChhcnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCisrICAgICAgICAgICAgICAgIGFycmF5 IChsLCBrLCBqLGkpID0gY291bnRlcgorKyAgICAgICAgICAgICAgICBjb3VudGVyID0gY291bnRl ciArIDEKKysgICAgICAgICAgICAgZW5kIGRvCisrICAgICAgICAgIGVuZCBkbworKyAgICAgICBl bmQgZG8KKysgICAgZW5kIGRvCisrICAgIHByaW50ICosICIiCisrICBlbmQgc3Vicm91dGluZSBm aWxsX2FycmF5XzRkCisgZW5kIHByb2dyYW0gdGVzdAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1zaXplb2YuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXpl b2YuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCitA QCAtNDQsNyArNDQsNyBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1hbGxvY2F0 ZWQiCisgZ2RiX3Rlc3QgInByaW50IHNpemVvZih2bGExKSIgIiA9IDQwMDAiICJwcmludCBzaXpl b2YgYWxsb2NhdGVkIHZsYTEiCisgZ2RiX3Rlc3QgInByaW50IHNpemVvZih2bGExKDMsMiwxKSki ICI0IiBcCisgICAgICJwcmludCBzaXplb2YgZWxlbWVudCBmcm9tIGFsbG9jYXRlZCB2bGExIgor LWdkYl90ZXN0ICJwcmludCBzaXplb2YodmxhMSgzOjQsMiwxKSkiICI4MDAiIFwKKytnZGJfdGVz dCAicHJpbnQgc2l6ZW9mKHZsYTEoMzo0LDIsMSkpIiAiOCIgXAorICAgICAicHJpbnQgc2l6ZW9m IHNsaWNlZCB2bGExIgorIAorICMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gdW5kZWZpbmVkIHBv aW50ZXIgdG8gVkxBIChkYW5nbGluZykKK0BAIC02MSw3ICs2MSw3IEBAIGdkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCisgZ2RiX3Rlc3QgInByaW50IHNpemVvZihw dmxhKSIgIiA9IDQwMDAiICJwcmludCBzaXplb2YgYXNzb2NpYXRlZCBwdmxhIgorIGdkYl90ZXN0 ICJwcmludCBzaXplb2YocHZsYSgzLDIsMSkpIiAiNCIgXAorICAgICAicHJpbnQgc2l6ZW9mIGVs ZW1lbnQgZnJvbSBhc3NvY2lhdGVkIHB2bGEiCistZ2RiX3Rlc3QgInByaW50IHNpemVvZihwdmxh KDM6NCwyLDEpKSIgIjgwMCIgInByaW50IHNpemVvZiBzbGljZWQgcHZsYSIKKytnZGJfdGVzdCAi cHJpbnQgc2l6ZW9mKHB2bGEoMzo0LDIsMSkpIiAiOCIgInByaW50IHNpemVvZiBzbGljZWQgcHZs YSIKKyAKKyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1uZWctYm91 bmRzLXYxIl0KKyBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1uZWctYm91bmRzLXYx IgoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXN0cmlkZXMtaW4t ZXhwcmVzc2lvbnMucGF0Y2ggYi9nZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVz LWluLWV4cHJlc3Npb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmMyM2VjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJh eS1zdHJpZGVzLWluLWV4cHJlc3Npb25zLnBhdGNoCkBAIC0wLDAgKzEsMTkzIEBACitGcm9tIEZF RE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4gQnVldHRu ZXIgPGtldmluYkByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAyMjozMDozMiAt MDcwMAorU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc3RyaWRlcy1pbi1l eHByZXNzaW9ucy5wYXRjaAorCis7OyBbZm9ydHJhbl0gQmFja3BvcnQgQW5kcmV3IEJ1cmdlc3Mn cyBjb21taXQgd2hpY2ggYWRkcyBzdXBwb3J0Cis7OyBmb3IgYXJyYXkgc3RyaWRlcyBpbiBleHBy ZXNzaW9ucy4KKworZ2RiL2ZvcnRyYW46IGFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGFycmF5IHN0 cmlkZXMgaW4gZXhwcmVzc2lvbnMKKworV2l0aCB0aGlzIGNvbW1pdCBHREIgbm93IHVuZGVyc3Rh bmRzIHRoZSBzeW50YXggb2YgRm9ydHJhbiBhcnJheQorc3RyaWRlcywgYSB1c2VyIGNhbiB0eXBl IGFuIGV4cHJlc3Npb24gaW5jbHVkaW5nIGFuIGFycmF5IHN0cmlkZSwgYnV0Cit0aGV5IHdpbGwg b25seSBnZXQgYW4gZXJyb3IgaW5mb3JtaW5nIHRoZW0gdGhhdCBhcnJheSBzdHJpZGVzIGFyZSBu b3QKK3N1cHBvcnRlZC4KKworVGhpcyBhbG9uZSBpcyBhbiBpbXByb3ZlbWVudCBvbiB3aGF0IHdl IGhhZCBiZWZvcmUgaW4gR0RCLCBiZXR0ZXIgdG8KK2dpdmUgdGhlIHVzZXIgYSBoZWxwZnVsIG1l c3NhZ2UgdGhhdCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBpcyBub3QKK3N1cHBvcnRlZCB0aGFuIHRv IGp1c3QgY2xhaW0gYSBzeW50YXggZXJyb3IuCisKK0JlZm9yZToKKworICAoZ2RiKSBwIGFycmF5 ICgxOjEwOjIsIDI6MTA6MikKKyAgQSBzeW50YXggZXJyb3IgaW4gZXhwcmVzc2lvbiwgbmVhciBg OjIsIDI6MTA6MiknLgorCitOb3c6CisKKyAgKGdkYikgcCBhcnJheSAoMToxMDoyLCAyOjEwOjIp CisgIEZvcnRyYW4gYXJyYXkgc3RyaWRlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQKKwor TGF0ZXIgY29tbWl0cyB3aWxsIGFsbG93IEdEQiB0byBoYW5kbGUgYXJyYXkgc3RyaWRlcyBjb3Jy ZWN0bHkuCisKK2dkYi9DaGFuZ2VMb2c6CisKKwkqIGV4cHByaW50LmMgKGR1bXBfc3ViZXhwX2Jv ZHlfc3RhbmRhcmQpOiBQcmludCBSQU5HRV9IQVNfU1RSSURFLgorCSogZXhwcmVzc2lvbi5oIChl bnVtIHJhbmdlX3R5cGUpOiBBZGQgUkFOR0VfSEFTX1NUUklERS4KKwkqIGYtZXhwLnkgKGFyZ2xp c3QpOiBBbGxvdyBmb3IgYSBzZXJpZXMgb2Ygc3VicmFuZ2VzLgorCShzdWJyYW5nZSk6IEFkZCBj YXNlcyBmb3Igc3VicmFuZ2VzIHdpdGggc3RyaWRlcy4KKwkqIGYtbGFuZy5jICh2YWx1ZV9mOTBf c3ViYXJyYXkpOiBDYXRjaCB1c2Ugb2YgYXJyYXkgc3RyaWRlcyBhbmQKKwl0aHJvdyBhbiBlcnJv ci4KKwkqIHBhcnNlLmMgKG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCk6IEhhbmRsZSBSQU5HRV9I QVNfU1RSSURFLgorCitnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKKworCSogZ2RiLmZvcnRyYW4v YXJyYXktc2xpY2VzLmV4cDogQWRkIGEgbmV3IHRlc3QuCisKK2RpZmYgLS1naXQgYS9nZGIvZXhw cHJpbnQuYyBiL2dkYi9leHBwcmludC5jCistLS0gYS9nZGIvZXhwcHJpbnQuYworKysrIGIvZ2Ri L2V4cHByaW50LmMKK0BAIC0xMTE4LDEyICsxMTE4LDE2IEBAIGR1bXBfc3ViZXhwX2JvZHlfc3Rh bmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCWZwdXRzX2ZpbHRlcmVkICgiLi4iLCBz dHJlYW0pOworIAlpZiAoIShyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkK KyAJICBmcHV0c19maWx0ZXJlZCAoIkVYUCIsIHN0cmVhbSk7CisrCWlmIChyYW5nZV9mbGFnICYg UkFOR0VfSEFTX1NUUklERSkKKysJICBmcHV0c19maWx0ZXJlZCAoIjpFWFAiLCBzdHJlYW0pOwor IAlmcHV0c19maWx0ZXJlZCAoIiciLCBzdHJlYW0pOworIAorIAlpZiAoIShyYW5nZV9mbGFnICYg UkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQorIAkgIGVsdCA9IGR1bXBfc3ViZXhwIChleHAsIHN0 cmVhbSwgZWx0KTsKKyAJaWYgKCEocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVM VCkpCisgCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworKwlpZiAocmFu Z2VfZmxhZyAmIFJBTkdFX0hBU19TVFJJREUpCisrCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwg c3RyZWFtLCBlbHQpOworICAgICAgIH0KKyAgICAgICBicmVhazsKKyAKK2RpZmYgLS1naXQgYS9n ZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24uaAorLS0tIGEvZ2RiL2V4cHJlc3Npb24u aAorKysrIGIvZ2RiL2V4cHJlc3Npb24uaAorQEAgLTE5OSw2ICsxOTksOSBAQCBlbnVtIHJhbmdl X2ZsYWcgOiB1bnNpZ25lZAorIAorICAgLyogVGhlIGhpZ2ggYm91bmQgb2YgdGhpcyByYW5nZSBp cyBleGNsdXNpdmUuICAqLworICAgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUgPSAxIDw8IDIs CisrCisrICAvKiBUaGUgcmFuZ2UgaGFzIGEgc3RyaWRlLiAgKi8KKysgIFJBTkdFX0hBU19TVFJJ REUgPSAxIDw8IDMsCisgfTsKKyAKKyBERUZfRU5VTV9GTEFHU19UWVBFIChlbnVtIHJhbmdlX2Zs YWcsIHJhbmdlX2ZsYWdzKTsKK2RpZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55 CistLS0gYS9nZGIvZi1leHAueQorKysrIGIvZ2RiL2YtZXhwLnkKK0BAIC0yODQsNiArMjg0LDEw IEBAIGFyZ2xpc3QJOglhcmdsaXN0ICcsJyBleHAgICAlcHJlYyBBQk9WRV9DT01NQQorIAkJCXsg cHN0YXRlLT5hcmdsaXN0X2xlbisrOyB9CisgCTsKKyAKKythcmdsaXN0CToJYXJnbGlzdCAnLCcg c3VicmFuZ2UgICAlcHJlYyBBQk9WRV9DT01NQQorKwkJCXsgcHN0YXRlLT5hcmdsaXN0X2xlbisr OyB9CisrCTsKKysKKyAvKiBUaGVyZSBhcmUgZm91ciBzb3J0cyBvZiBzdWJyYW5nZSB0eXBlcyBp biBGOTAuICAqLworIAorIHN1YnJhbmdlOglleHAgJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQor QEAgLTMxNCw2ICszMTgsMzggQEAgc3VicmFuZ2U6CSc6JwklcHJlYyBBQk9WRV9DT01NQQorIAkJ CSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9CisgCTsKKyAKKysv KiBBbmQgZWFjaCBvZiB0aGUgZm91ciBzdWJyYW5nZSB0eXBlcyBjYW4gYWxzbyBoYXZlIGEgc3Ry aWRlLiAgKi8KKytzdWJyYW5nZToJZXhwICc6JyBleHAgJzonIGV4cAklcHJlYyBBQk9WRV9DT01N QQorKwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOworKwkJCSAg d3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFJBTkdFX0hBU19TVFJJREUpOworKwkJCSAg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9CisrCTsKKysKKytzdWJy YW5nZToJZXhwICc6JyAnOicgZXhwCSVwcmVjIEFCT1ZFX0NPTU1BCisrCQkJeyB3cml0ZV9leHBf ZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7CisrCQkJICB3cml0ZV9leHBfZWx0X2xvbmdj c3QgKHBzdGF0ZSwKKysJCQkJCQkgKFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVAorKwkJCQkJCSAg fCBSQU5HRV9IQVNfU1RSSURFKSk7CisrCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRl LCBPUF9SQU5HRSk7IH0KKysJOworKworK3N1YnJhbmdlOgknOicgZXhwICc6JyBleHAJJXByZWMg QUJPVkVfQ09NTUEKKysJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdF KTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAorKwkJCQkJCSAoUkFOR0Vf TE9XX0JPVU5EX0RFRkFVTFQKKysJCQkJCQkgIHwgUkFOR0VfSEFTX1NUUklERSkpOworKwkJCSAg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9CisrCTsKKysKKytzdWJy YW5nZToJJzonICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKKysJCQl7IHdyaXRlX2V4cF9lbHRf b3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKKysJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAo cHN0YXRlLAorKwkJCQkJCSAoUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQKKysJCQkJCQkgIHwgUkFO R0VfSElHSF9CT1VORF9ERUZBVUxUCisrCQkJCQkJICB8IFJBTkdFX0hBU19TVFJJREUpKTsKKysJ CQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQorKwk7CisrCisg Y29tcGxleG51bTogICAgIGV4cCAnLCcgZXhwIAorICAgICAgICAgICAgICAgICAJeyB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgIDsKK2RpZmYgLS1naXQgYS9nZGIvZi1sYW5n LmMgYi9nZGIvZi1sYW5nLmMKKy0tLSBhL2dkYi9mLWxhbmcuYworKysrIGIvZ2RiL2YtbGFuZy5j CitAQCAtMTI0LDcgKzEyNCw3IEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICph cnJheSwKKyAJCSAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3Np ZGUgbm9zaWRlKQorIHsKKyAgIGludCBwYyA9ICgqcG9zKSArIDE7CistICBMT05HRVNUIGxvd19i b3VuZCwgaGlnaF9ib3VuZDsKKysgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kLCBzdHJp ZGU7CisgICBzdHJ1Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChh cnJheSktPmluZGV4X3R5cGUgKCkpOworICAgZW51bSByYW5nZV9mbGFnIHJhbmdlX2ZsYWcKKyAg ICAgPSAoZW51bSByYW5nZV9mbGFnKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25n Y29uc3QpOworQEAgLTE0MSw2ICsxNDEsMTQgQEAgdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3Qg dmFsdWUgKmFycmF5LAorICAgZWxzZQorICAgICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAo ZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7CisgCisrICBpZiAo cmFuZ2VfZmxhZyAmIFJBTkdFX0hBU19TVFJJREUpCisrICAgIHN0cmlkZSA9IHZhbHVlX2FzX2xv bmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOworKyAgZWxz ZQorKyAgICBzdHJpZGUgPSAxOworKworKyAgaWYgKHN0cmlkZSAhPSAxKQorKyAgICBlcnJvciAo XygiRm9ydHJhbiBhcnJheSBzdHJpZGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCIpKTsK KysKKyAgIHJldHVybiB2YWx1ZV9zbGljZSAoYXJyYXksIGxvd19ib3VuZCwgaGlnaF9ib3VuZCAt IGxvd19ib3VuZCArIDEpOworIH0KKyAKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9w YXJzZS5jCistLS0gYS9nZGIvcGFyc2UuYworKysrIGIvZ2RiL3BhcnNlLmMKK0BAIC05MjQsNiAr OTI0LDggQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwciwgaW50IGVuZHBvcywKKyAgICAgICAvKiBBc3N1bWUgdGhlIHJhbmdlIGhhcyAyIGFy Z3VtZW50cyAobG93IGJvdW5kIGFuZCBoaWdoIGJvdW5kKSwgdGhlbgorIAkgcmVkdWNlIHRoZSBh cmd1bWVudCBjb3VudCBpZiBhbnkgYm91bmRzIGFyZSBzZXQgdG8gZGVmYXVsdC4gICovCisgICAg ICAgYXJncyA9IDI7CisrICAgICAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9IQVNfU1RSSURFKQor KwkrK2FyZ3M7CisgICAgICAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVM VCkKKyAJLS1hcmdzOworICAgICAgIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9E RUZBVUxUKQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xp Y2VzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAKK0BAIC02NiwzICs2NiwxOSBA QCBmb3JlYWNoIHJlc3VsdCAkYXJyYXlfY29udGVudHMgbXNnICRtZXNzYWdlX3N0cmluZ3Mgewor IH0KKyAKKyBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiY29udGludWUgdG8gRmluYWwgQnJl YWtwb2ludCIKKysKKysjIE5leHQgdGVzdCB0aGF0IGFza2luZyBmb3IgYW4gYXJyYXkgd2l0aCBz dHJpZGUgYXQgdGhlIENMSSBnaXZlcyBhbgorKyMgZXJyb3IuCisrY2xlYW5fcmVzdGFydCAke3Rl c3RmaWxlfQorKworK2lmICFbZm9ydHJhbl9ydW50b19tYWluXSB0aGVuIHsKKysgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX2JyZWFr cG9pbnQgInNob3ciCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInNob3ciCisrZ2RiX3Rl c3QgInVwIiAiLioiCisrZ2RiX3Rlc3QgInAgYXJyYXkgKDE6MTA6MiwgMToxMDoyKSIgXAorKyAg ICAiRm9ydHJhbiBhcnJheSBzdHJpZGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCIgXAor KyAgICAidXNpbmcgYXJyYXkgc3RyaWRlIGdpdmVzIGFuIGVycm9yIgoKZGlmZiAtLWdpdCBhL2dk Yi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Npb24tZXZhbHVhdGlv bi5wYXRjaCBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Np b24tZXZhbHVhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43 YjYyMDIyCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4t dXAtYXJyYXktZXhwcmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjA5IEBACitG cm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4g QnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNjo1 MzoyMiAtMDcwMAorU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJy YXktZXhwcmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNoCisKKzs7IFtmb3J0cmFuXSBCYWNrcG9ydCBB bmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCBjbGVhbnMgdXAKKzs7IGFycmF5L3N0cmluZyBl eHByZXNzaW9uIGV2YWx1YXRpb24uCisKK2dkYi9mb3J0cmFuOiBDbGVhbiB1cCBhcnJheS9zdHJp bmcgZXhwcmVzc2lvbiBldmFsdWF0aW9uCisKK1RoaXMgY29tbWl0IGlzIGEgcmVmYWN0b3Igb2Yg cGFydCBvZiB0aGUgRm9ydHJhbiBhcnJheSBhbmQgc3RyaW5nCitoYW5kbGluZyBjb2RlLgorCitU aGUgY3VycmVudCBjb2RlIGlzIHNwbGl0IGludG8gdHdvIGJsb2NrcywgbGlua2VkLCB3ZWlyZGx5 LCB3aXRoIGEKK2dvdG8uICBBZnRlciB0aGlzIGNvbW1pdCBhbGwgdGhlIGNvZGUgaXMgbW92ZWQg dG8gaXRzIG93biBmdW5jdGlvbiwKK2FuZCBhcnJheXMgYW5kIHN0cmluZ3MgYXJlIG5vdyBoYW5k bGVkIHVzaW5nIHRoZSBzYW1lIGNvZGU7IHRoaXMgd2lsbAorYmUgdXNlZnVsIGxhdGVyIHdoZW4g SSB3YW50IHRvIGFkZCBhcnJheSBzdHJpZGUgc3VwcG9ydCB3aGVyZSBzdHJpbmdzCit3aWxsIHdh bnQgdG8gYmUgdHJlYXRlZCBqdXN0IGxpa2UgYXJyYXlzLCBidXQgaXMgYSBnb29kIGNsZWFuIHVw IGV2ZW4KK3dpdGhvdXQgdGhlIGFycmF5IHN0cmlkZSB3b3JrLCB3aGljaCBpcyB3aHkgSSdtIG1l cmdpbmcgaXQgbm93LgorCitGb3Igbm93IHRoZSBuZXcgZnVuY3Rpb24gaXMgYWRkZWQgYXMgYSBz dGF0aWMgd2l0aGluIGV2YWwuYywgZXZlbgordGhvdWdoIHRoZSBmdW5jdGlvbiBpcyBGb3J0cmFu IG9ubHkuICBBIGZvbGxvd2luZyBjb21taXQgd2lsbCByZW1vdmUKK3NvbWUgb2YgdGhlIEZvcnRy YW4gc3BlY2lmaWMgY29kZSBmcm9tIGV2YWwuYyBpbnRvIG9uZSBvZiB0aGUgRm9ydHJhbgorc3Bl Y2lmaWMgZmlsZXMsIGluY2x1ZGluZyB0aGlzIG5ldyBmdW5jdGlvbi4KKworVGhlcmUgc2hvdWxk IGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgorCitnZGIvQ2hh bmdlTG9nOgorCisJKiBldmFsLmMgKGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBOZXcgZnVuY3Rp b24sIGNvbnRlbnQgaXMgdGFrZW4KKwlmcm9tLi4uCisJKGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCk6IC4uLmhlcmUsIGluIHR3byBwbGFjZXMuICBOb3cgYXJyYXlzCisJYW5kIHN0cmluZ3MgYm90 aCBjYWxsIHRoZSBuZXcgZnVuY3Rpb24uCisJKGNhbGNfZjc3X2FycmF5X2RpbXMpOiBBZGQgaGVh ZGVyIGNvbW1lbnQsIGhhbmRsZSBzdHJpbmdzLgorCitkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBi L2dkYi9ldmFsLmMKKy0tLSBhL2dkYi9ldmFsLmMKKysrKyBiL2dkYi9ldmFsLmMKK0BAIC0xMjYw LDYgKzEyNjAsNjcgQEAgaXNfaW50ZWdyYWxfb3JfaW50ZWdyYWxfcmVmZXJlbmNlIChzdHJ1Y3Qg dHlwZSAqdHlwZSkKKyAJICAmJiBpc19pbnRlZ3JhbF90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSkpOworIH0KKyAKKysvKiBDYWxsZWQgZnJvbSBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg dG8gcGVyZm9ybSBhcnJheSBpbmRleGluZywgYW5kCisrICAgc3ViLXJhbmdlIGV4dHJhY3Rpb24s IGZvciBGb3J0cmFuLiAgQXMgd2VsbCBhcyBhcnJheXMgdGhpcyBmdW5jdGlvbgorKyAgIGFsc28g aGFuZGxlcyBzdHJpbmdzIGFzIHRoZXkgY2FuIGJlIHRyZWF0ZWQgbGlrZSBhcnJheXMgb2YgY2hh cmFjdGVycy4KKysgICBBUlJBWSBpcyB0aGUgYXJyYXkgb3Igc3RyaW5nIGJlaW5nIGFjY2Vzc2Vk LiAgRVhQLCBQT1MsIGFuZCBOT1NJREUgYXJlCisrICAgYXMgZm9yIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCwgYW5kIE5BUkdTIGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCisrICAgaW4gdGhp cyBhY2Nlc3MgKGUuZy4gJ2FycmF5ICgxLDIsMyknIHdvdWxkIGJlIE5BUkdTIDMpLiAgKi8KKysK KytzdGF0aWMgc3RydWN0IHZhbHVlICoKKytmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChzdHJ1Y3Qg dmFsdWUgKmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorKwkJCWludCAqcG9zLCBpbnQg bmFyZ3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKKyt7CisrICBpZiAoZXhwLT5lbHRzWypwb3NdLm9w Y29kZSA9PSBPUF9SQU5HRSkKKysgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJyYXks IGV4cCwgcG9zLCBub3NpZGUpOworKworKyAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCisrICAg IHsKKysgICAgICBza2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChuYXJncywgZXhwLCBwb3MsIG5v c2lkZSk7CisrICAgICAgLyogUmV0dXJuIHRoZSBkdW1teSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0 IHR5cGUuICAqLworKyAgICAgIHJldHVybiBhcnJheTsKKysgICAgfQorKworKyAgTE9OR0VTVCBz dWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CisrICBpbnQgbmRpbWVuc2lvbnMgPSAx OworKyAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJh eSkpOworKworKyAgaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKKysgICAgZXJyb3IgKF8o IlRvbyBtYW55IHN1YnNjcmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1T KTsKKysKKysgIG5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7CisrCisr ICBpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCisrICAgIGVycm9yIChfKCJXcm9uZyBudW1iZXIg b2Ygc3Vic2NyaXB0cyIpKTsKKysKKysgIGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7CisrCisrICAv KiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhwcmVz c2lvbiBsZXQgdXMKKysgICAgIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMgZWxlbWVudCBl eGlzdHMgaW4gdGhlIGFycmF5LiAgKi8KKysKKysgIC8qIFRha2UgYXJyYXkgaW5kaWNlcyBsZWZ0 IHRvIHJpZ2h0LiAgKi8KKysgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKKysgICAg eworKyAgICAgIC8qIEV2YWx1YXRlIGVhY2ggc3Vic2NyaXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwg aW50ZWdlciBpbiBGNzcuICAqLworKyAgICAgIHZhbHVlICphcmcyID0gZXZhbHVhdGVfc3ViZXhw X3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOworKworKyAgICAgIC8qIEZpbGwgaW4g dGhlIHN1YnNjcmlwdCBhcnJheS4gICovCisrICAgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFs dWVfYXNfbG9uZyAoYXJnMik7CisrICAgIH0KKysKKysgIC8qIEludGVybmFsIHR5cGUgb2YgYXJy YXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICovCisrICBmb3IgKGludCBpID0gbmFyZ3M7 IGkgPiAwOyBpLS0pCisrICAgIHsKKysgICAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNo ZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisrICAgICAgTE9OR0VTVCBpbmRleCA9 IHN1YnNjcmlwdF9hcnJheVtpIC0gMV07CisrCisrICAgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3Jp cHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKKysJCQkJCWY3N19nZXRfbG93ZXJib3VuZCAoYXJy YXlfdHlwZSkpOworKyAgICB9CisrCisrICByZXR1cm4gYXJyYXk7CisrfQorKworIHN0cnVjdCB2 YWx1ZSAqCisgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5 cGUsCisgCQkJICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKK0BAIC0xOTUzLDMz ICsyMDE0LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0 X3R5cGUsCisgICAgICAgc3dpdGNoIChjb2RlKQorIAl7CisgCWNhc2UgVFlQRV9DT0RFX0FSUkFZ OgorLQkgIGlmIChleHAtPmVsdHNbKnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQorLQkgICAgcmV0 dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7CistCSAgZWxz ZQorLQkgICAgeworLQkgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKKy0JCXsKKy0JCSAg c2tpcF91bmRldGVybWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOworLQkJ ICAvKiBSZXR1cm4gdGhlIGR1bW15IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4gICovCist CQkgIHJldHVybiBhcmcxOworLQkJfQorLQkgICAgICBnb3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7 CistCSAgICB9CistCisgCWNhc2UgVFlQRV9DT0RFX1NUUklORzoKKy0JICBpZiAoZXhwLT5lbHRz Wypwb3NdLm9wY29kZSA9PSBPUF9SQU5HRSkKKy0JICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJy YXkgKGFyZzEsIGV4cCwgcG9zLCBub3NpZGUpOworLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAg aWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCistCQl7CistCQkgIHNraXBfdW5kZXRlcm1pbmVkX2Fy Z2xpc3QgKG5hcmdzLCBleHAsIHBvcywgbm9zaWRlKTsKKy0JCSAgLyogUmV0dXJuIHRoZSBkdW1t eSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLworLQkJICByZXR1cm4gYXJnMTsKKy0J CX0KKy0JICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBv cywgbm9zaWRlKTsKKy0JICAgICAgcmV0dXJuIHZhbHVlX3N1YnNjcmlwdCAoYXJnMSwgdmFsdWVf YXNfbG9uZyAoYXJnMikpOworLQkgICAgfQorKwkgIHJldHVybiBmb3J0cmFuX3ZhbHVlX3N1YmFy cmF5IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7CisgCisgCWNhc2UgVFlQRV9DT0RF X1BUUjoKKyAJY2FzZSBUWVBFX0NPREVfRlVOQzoKK0BAIC0yNDAwLDQ5ICsyNDM2LDYgQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCX0KKyAg ICAgICByZXR1cm4gKGFyZzEpOworIAorLSAgICBtdWx0aV9mNzdfc3Vic2NyaXB0OgorLSAgICAg IHsKKy0JTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CistCWludCBu ZGltZW5zaW9ucyA9IDEsIGk7CistCXN0cnVjdCB2YWx1ZSAqYXJyYXkgPSBhcmcxOworLQorLQlp ZiAobmFyZ3MgPiBNQVhfRk9SVFJBTl9ESU1TKQorLQkgIGVycm9yIChfKCJUb28gbWFueSBzdWJz Y3JpcHRzIGZvciBGNzcgKCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7CistCistCW5kaW1l bnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7CistCistCWlmIChuYXJncyAhPSBu ZGltZW5zaW9ucykKKy0JICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMiKSk7 CistCistCWdkYl9hc3NlcnQgKG5hcmdzID4gMCk7CistCistCS8qIE5vdyB0aGF0IHdlIGtub3cg d2UgaGF2ZSBhIGxlZ2FsIGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9uIAorLQkgICBsZXQgdXMg YWN0dWFsbHkgZmluZCBvdXQgd2hlcmUgdGhpcyBlbGVtZW50IGV4aXN0cyBpbiB0aGUgYXJyYXku ICAqLworLQorLQkvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4gICovCistCWZv ciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQorLQkgIHsKKy0JICAgIC8qIEV2YWx1YXRlIGVhY2gg c3Vic2NyaXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBGNzcuICAqLworLQkgICAg YXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsK Ky0KKy0JICAgIC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJheS4gICovCistCistCSAgICBz dWJzY3JpcHRfYXJyYXlbaV0gPSB2YWx1ZV9hc19sb25nIChhcmcyKTsKKy0JICB9CistCistCS8q IEludGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICovCist CWZvciAoaSA9IG5hcmdzOyBpID4gMDsgaS0tKQorLQkgIHsKKy0JICAgIHN0cnVjdCB0eXBlICph cnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKKy0JICAgIExP TkdFU1QgaW5kZXggPSBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOworLQorLQkgICAgYXJyYXkgPSB2 YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKKy0JCQkJCSAgICAgIGY3N19n ZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOworLQkgIH0KKy0KKy0JcmV0dXJuIGFycmF5Owor LSAgICAgIH0KKy0KKyAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKKyAgICAgICBhcmcxID0g ZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKKyAgICAgICBpZiAo bm9zaWRlID09IEVWQUxfU0tJUCkKK0BAIC0zMzU0LDEyICszMzQ3LDE3IEBAIHBhcnNlX2FuZF9l dmFsX3R5cGUgKGNoYXIgKnAsIGludCBsZW5ndGgpCisgICByZXR1cm4gZXhwci0+ZWx0c1sxXS50 eXBlOworIH0KKyAKKysvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGZvciBhIEZv cnRyYW4gYXJyYXkgb3Igc3RyaW5nLiAgKi8KKysKKyBpbnQKKyBjYWxjX2Y3N19hcnJheV9kaW1z IChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKKyB7CisgICBpbnQgbmRpbWVuID0gMTsKKyAgIHN0 cnVjdCB0eXBlICp0bXBfdHlwZTsKKyAKKysgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSA9PSBU WVBFX0NPREVfU1RSSU5HKSkKKysgICAgcmV0dXJuIDE7CisrCisgICBpZiAoKGFycmF5X3R5cGUt PmNvZGUgKCkgIT0gVFlQRV9DT0RFX0FSUkFZKSkKKyAgICAgZXJyb3IgKF8oIkNhbid0IGdldCBk aW1lbnNpb25zIGZvciBhIG5vbi1hcnJheSB0eXBlIikpOworIAoKZGlmZiAtLWdpdCBhL2dkYi1y aGJ6MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1pbi1mLWxhbmcuYy5w YXRjaCBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1p bi1mLWxhbmcuYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2Ri ODI4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tZml4LXR5cGUt Zm9ybWF0LW1pc21hdGNoLWluLWYtbGFuZy5jLnBhdGNoCkBAIC0wLDAgKzEsMTI4IEBACitGcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2V2aW4gQnVl dHRuZXIgPGtldmluYkByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyNSBNYXkgMjAyMSAxNzozNDo1 NyAtMDcwMAorU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tZml4LXR5cGUtZm9ybWF0 LW1pc21hdGNoLWluLWYtbGFuZy5jLnBhdGNoCisKKzs7IFtmb3J0cmFuXSBCYWNrcG9ydCBTaW1v biBNYXJjaGkncyBjb21taXQgd2hpY2ggZml4ZXMgYSAzMi1iaXQgYnVpbGQKKzs7IHByb2JsZW0g aW4gZ2RiL2YtbGFuZy5jLgorCitnZGI6IGZpeCBmb3JtYXQgc3RyaW5nIHdhcm5pbmdzIGluIGYt bGFuZy5jCisKK0kgZ2V0IGEgYnVuY2ggb2YgdGhlc2Ugd2FybmluZ3Mgd2hlbiBjb21waWxpbmcg Zm9yIGkzODYgKDMyLWJpdCk6CisKKyAgICAgIENYWCAgICBmLWxhbmcubworICAgIC9ob21lL3Np bWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9mLWxhbmcuYzogSW4gZnVuY3Rpb24gJ3ZhbHVlKiBm b3J0cmFuX3ZhbHVlX3N1YmFycmF5KHZhbHVlKiwgZXhwcmVzc2lvbiosIGludCosIGludCwgbm9z aWRlKSc6CisgICAgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2YtbGFuZy5jOjQ1 Mzo0ODogZXJyb3I6IGZvcm1hdCAnJWxkJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcg aW50JywgYnV0IGFyZ3VtZW50IDIgaGFzIHR5cGUgJ0xPTkdFU1QnIHtha2EgJ2xvbmcgbG9uZyBp bnQnfSBbLVdlcnJvcj1mb3JtYXQ9XQorICAgICAgNDUzIHwgICAgICAgIGRlYnVnX3ByaW50ZiAo InwgICB8ICAgfC0+IExvdyBib3VuZDogJWxkXG4iLCBsYik7CisgICAgICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fl4gICAgIH5+CisgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg IHwKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgTE9OR0VTVCB7YWthIGxvbmcgbG9uZyBpbnR9CisgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaW50CisgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlbGxk CisKK0ZpeCB0aGVtIGJ5IHVzaW5nIHBsb25nZXN0L3B1bG9uZ2VzdC4KKworZ2RiL0NoYW5nZUxv ZzoKKworCSogZi1sYW5nLmMgKGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBVc2UgcGxvbmdlc3Qv cHVsb25nZXN0LgorCitDaGFuZ2UtSWQ6IEk2NjZlYWQ1NTkzNjUzZDVhMWEzZGFiMmZmZGM3Mjk0 MmM5MjhjN2QyCisKK2RpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmMgYi9nZGIvZi1sYW5nLmMKKy0t LSBhL2dkYi9mLWxhbmcuYworKysrIGIvZ2RiL2YtbGFuZy5jCitAQCAtNDYzLDIxICs0NjMsMjEg QEAgZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwKKyAJICAgICAgc3RkOjpzdHJpbmcgc3RyID0gdHlwZV90b19zdHJpbmcg KGRpbV90eXBlKTsKKyAJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBUeXBlOiAlc1xuIiwg c3RyLmNfc3RyICgpKTsKKyAJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBBcnJheTpcbiIp OworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVsZFxuIiwg bGIpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBIaWdoIGJvdW5kOiAlbGRc biIsIHViKTsKKy0JICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQml0IHN0cmlkZTog JWxkXG4iLCBzZCk7CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJ5dGUgc3Ry aWRlOiAlbGRcbiIsIHNkIC8gOCk7CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+ IFR5cGUgc2l6ZTogJWxkXG4iLAorLQkJCSAgICBUWVBFX0xFTkdUSCAoZGltX3R5cGUpKTsKKy0J ICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICAnLT4gVGFyZ2V0IHR5cGUgc2l6ZTogJWxkXG4i LAorLQkJCSAgICBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpKTsKKysJICAgICAgZGVidWdfcHJp bnRmICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAlc1xuIiwgcGxvbmdlc3QgKGxiKSk7CisrCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEhpZ2ggYm91bmQ6ICVzXG4iLCBwbG9uZ2Vz dCAodWIpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQml0IHN0cmlkZTog JXNcbiIsIHBsb25nZXN0IChzZCkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwt PiBCeXRlIHN0cmlkZTogJXNcbiIsIHBsb25nZXN0IChzZCAvIDgpKTsKKysJICAgICAgZGVidWdf cHJpbnRmICgifCAgIHwgICB8LT4gVHlwZSBzaXplOiAlc1xuIiwKKysJCQkgICAgcHVsb25nZXN0 IChUWVBFX0xFTkdUSCAoZGltX3R5cGUpKSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8 ICAgJy0+IFRhcmdldCB0eXBlIHNpemU6ICVzXG4iLAorKwkJCSAgICBwdWxvbmdlc3QgKFRZUEVf TEVOR1RIICh0YXJnZXRfdHlwZSkpKTsKKyAJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBB Y2Nlc3Npbmc6XG4iKTsKKy0JICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gTG93IGJv dW5kOiAlbGRcbiIsCistCQkJICAgIGxvdyk7CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8 ICAgfC0+IEhpZ2ggYm91bmQ6ICVsZFxuIiwKKy0JCQkgICAgaGlnaCk7CistCSAgICAgIGRlYnVn X3ByaW50ZiAoInwgICB8ICAgJy0+IEVsZW1lbnQgc3RyaWRlOiAlbGRcbiIsCistCQkJICAgIHN0 cmlkZSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IExvdyBib3VuZDogJXNc biIsCisrCQkJICAgIHBsb25nZXN0IChsb3cpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAg IHwgICB8LT4gSGlnaCBib3VuZDogJXNcbiIsCisrCQkJICAgIHBsb25nZXN0IChoaWdoKSk7Cisr CSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgJy0+IEVsZW1lbnQgc3RyaWRlOiAlc1xuIiwK KysJCQkgICAgcGxvbmdlc3QgKHN0cmlkZSkpOworIAkgICAgfQorIAorIAkgIC8qIENoZWNrIHRo ZSB1c2VyIGhhc24ndCBhc2tlZCBmb3Igc29tZXRoaW5nIGludmFsaWQuICAqLworQEAgLTUxOSwx MyArNTE5LDE3IEBAIGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXks IHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgCSAgaWYgKGZvcnRyYW5fYXJyYXlfc2xpY2luZ19k ZWJ1ZykKKyAJICAgIHsKKyAJICAgICAgZGVidWdfcHJpbnRmICgifCAgICctPiBSZXN1bHRzOlxu Iik7CistCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IE9mZnNldCA9ICVsZFxuIiwg b2Zmc2V0KTsKKy0JICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gRWxlbWVudHMgPSAl bGRcbiIsIGVfY291bnQpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBMb3cg Ym91bmQgPSAlbGRcbiIsIG5ld19sb3cpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAg IHwtPiBIaWdoIGJvdW5kID0gJWxkXG4iLCBuZXdfaGlnaCk7CistCSAgICAgIGRlYnVnX3ByaW50 ZiAoInwgICAgICAgfC0+IEJ5dGUgc3RyaWRlID0gJWxkXG4iLCBuZXdfc3RyaWRlKTsKKy0JICAg ICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gTGFzdCBlbGVtZW50ID0gJWxkXG4iLCBsYXN0 X2VsZW0pOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBSZW1haW5kZXIgPSAl bGRcbiIsIHJlbWFpbmRlcik7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IE9m ZnNldCA9ICVzXG4iLCBwbG9uZ2VzdCAob2Zmc2V0KSk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAo InwgICAgICAgfC0+IEVsZW1lbnRzID0gJXNcbiIsIHBsb25nZXN0IChlX2NvdW50KSk7CisrCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IExvdyBib3VuZCA9ICVzXG4iLCBwbG9uZ2Vz dCAobmV3X2xvdykpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBIaWdoIGJv dW5kID0gJXNcbiIsCisrCQkJICAgIHBsb25nZXN0IChuZXdfaGlnaCkpOworKwkgICAgICBkZWJ1 Z19wcmludGYgKCJ8ICAgICAgIHwtPiBCeXRlIHN0cmlkZSA9ICVzXG4iLAorKwkJCSAgICBwbG9u Z2VzdCAobmV3X3N0cmlkZSkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBM YXN0IGVsZW1lbnQgPSAlc1xuIiwKKysJCQkgICAgcGxvbmdlc3QgKGxhc3RfZWxlbSkpOworKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBSZW1haW5kZXIgPSAlc1xuIiwKKysJCQkg ICAgcGxvbmdlc3QgKHJlbWFpbmRlcikpOworIAkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAg ICctPiBDb250aWd1b3VzID0gJXNcbiIsCisgCQkJICAgIChpc19kaW1fY29udGlndW91cyA/ICJZ ZXMiIDogIk5vIikpOworIAkgICAgfQorQEAgLTU2MSwxNCArNTY1LDE2IEBAIGZvcnRyYW5fdmFs dWVfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAs CisgCSAgICAgIHN0ZDo6c3RyaW5nIHN0ciA9IHR5cGVfdG9fc3RyaW5nIChkaW1fdHlwZSk7Cisg CSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gVHlwZTogJXNcbiIsIHN0ci5jX3N0ciAoKSk7 CisgCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gQXJyYXk6XG4iKTsKKy0JICAgICAgZGVi dWdfcHJpbnRmICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAlbGRcbiIsIGxiKTsKKy0JICAgICAg ZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gSGlnaCBib3VuZDogJWxkXG4iLCB1Yik7CistCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJ5dGUgc3RyaWRlOiAlbGRcbiIsIHNkKTsK Ky0JICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gVHlwZSBzaXplOiAlbGRcbiIsIFRZ UEVfTEVOR1RIIChkaW1fdHlwZSkpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgICct PiBUYXJnZXQgdHlwZSBzaXplOiAlbGRcbiIsCistCQkJICAgIFRZUEVfTEVOR1RIICh0YXJnZXRf dHlwZSkpOworKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVz XG4iLCBwbG9uZ2VzdCAobGIpKTsKKysJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4g SGlnaCBib3VuZDogJXNcbiIsIHBsb25nZXN0ICh1YikpOworKwkgICAgICBkZWJ1Z19wcmludGYg KCJ8ICAgfCAgIHwtPiBCeXRlIHN0cmlkZTogJXNcbiIsIHBsb25nZXN0IChzZCkpOworKwkgICAg ICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBUeXBlIHNpemU6ICVzXG4iLAorKwkJCSAgICBw dWxvbmdlc3QgKFRZUEVfTEVOR1RIIChkaW1fdHlwZSkpKTsKKysJICAgICAgZGVidWdfcHJpbnRm ICgifCAgIHwgICAnLT4gVGFyZ2V0IHR5cGUgc2l6ZTogJXNcbiIsCisrCQkJICAgIHB1bG9uZ2Vz dCAoVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKSkpOworIAkgICAgICBkZWJ1Z19wcmludGYgKCJ8 ICAgJy0+IEFjY2Vzc2luZzpcbiIpOworLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgICct PiBJbmRleDogJWxkXG4iLCBpbmRleCk7CisrCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAg Jy0+IEluZGV4OiAlc1xuIiwKKysJCQkgICAgcGxvbmdlc3QgKGluZGV4KSk7CisgCSAgICB9Cisg CisgCSAgLyogSWYgdGhlIGFycmF5IGhhcyBhY3R1YWwgY29udGVudCB0aGVuIGNoZWNrIHRoZSBp bmRleCBpcyBpbgorQEAgLTYyNSw3ICs2MzEsOCBAQCBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChz dHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorICAgICAgIGRlYnVn X3ByaW50ZiAoIictPiBGaW5hbCByZXN1bHQ6XG4iKTsKKyAgICAgICBkZWJ1Z19wcmludGYgKCIg ICAgfC0+IFR5cGU6ICVzXG4iLAorIAkJICAgIHR5cGVfdG9fc3RyaW5nIChhcnJheV9zbGljZV90 eXBlKS5jX3N0ciAoKSk7CistICAgICAgZGVidWdfcHJpbnRmICgiICAgIHwtPiBUb3RhbCBvZmZz ZXQ6ICVsZFxuIiwgdG90YWxfb2Zmc2V0KTsKKysgICAgICBkZWJ1Z19wcmludGYgKCIgICAgfC0+ IFRvdGFsIG9mZnNldDogJXNcbiIsCisrCQkgICAgcGxvbmdlc3QgKHRvdGFsX29mZnNldCkpOwor ICAgICAgIGRlYnVnX3ByaW50ZiAoIiAgICB8LT4gQmFzZSBhZGRyZXNzOiAlc1xuIiwKKyAJCSAg ICBjb3JlX2FkZHJfdG9fc3RyaW5nICh2YWx1ZV9hZGRyZXNzIChhcnJheSkpKTsKKyAgICAgICBk ZWJ1Z19wcmludGYgKCIgICAgJy0+IENvbnRpZ3VvdXMgPSAlc1xuIiwKCmRpZmYgLS1naXQgYS9n ZGItcmhiejE5NjQxNjctZm9ydHJhbi1yYW5nZV90eXBlLXRvLXJhbmdlX2ZsYWcucGF0Y2ggYi9n ZGItcmhiejE5NjQxNjctZm9ydHJhbi1yYW5nZV90eXBlLXRvLXJhbmdlX2ZsYWcucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVkMjM5YQotLS0gL2Rldi9udWxsCisr KyBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXJhbmdlX3R5cGUtdG8tcmFuZ2VfZmxhZy5wYXRj aApAQCAtMCwwICsxLDIyNCBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KK0RhdGU6 IE1vbiwgMjQgTWF5IDIwMjEgMTc6MTU6MjcgLTA3MDAKK1N1YmplY3Q6IGdkYi1yaGJ6MTk2NDE2 Ny1mb3J0cmFuLXJhbmdlX3R5cGUtdG8tcmFuZ2VfZmxhZy5wYXRjaAorCis7OyBbZm9ydHJhbl0g QmFja3BvcnQgQW5kcmV3IEJ1cmdlc3MncyBjb21taXQgd2hpY2ggcmVuYW1lcyBlbnVtCis7OyBy YW5nZV90eXBlIHRvIGVudW0gcmFuZ2VfZmxhZy4KKworZ2RiOiByZW5hbWUgJ2VudW0gcmFuZ2Vf dHlwZScgdG8gJ2VudW0gcmFuZ2VfZmxhZycKKworVG8gYXZvaWQgY29uZnVzaW9uIHdpdGggb3Ro ZXIgcGFydHMgb2YgR0RCIHJlbGF0aW5nIHRvIHR5cGVzIGFuZAorcmFuZ2VzLCByZW5hbWUgdGhp cyBlbnVtIHRvIG1ha2UgaXQgY2xlYXJlciB0aGF0IGl0IGlzIGEgc2V0IG9mCitpbmRpdmlkdWFs IGZsYWdzIHJhdGhlciB0aGFuIGFuIGVudW1lcmF0aW9uIG9mIGRpZmZlcmVudCB0eXBlcyBvZgor cmFuZ2UuCisKK1RoZXJlIHNob3VsZCBiZSBubyB1c2VyIHZpc2libGUgY2hhbmdlcyBhZnRlciB0 aGlzIGNvbW1pdC4KKworZ2RiL0NoYW5nZUxvZzoKKworCSogZXhwcHJpbnQuYyAocHJpbnRfc3Vi ZXhwX3N0YW5kYXJkKTogQ2hhbmdlIGVudW0gcmFuZ2VfdHlwZSB0bworCXJhbmdlX2ZsYWcgYW5k IHJlbmFtZSB2YXJpYWJsZXMgdG8gbWF0Y2guCisJKGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQp OiBMaWtld2lzZS4KKwkqIGV4cHJlc3Npb24uaCAoZW51bSByYW5nZV90eXBlKTogUmVuYW1lIHRv Li4uCisJKGVudW0gcmFuZ2VfZmxhZyk6IC4uLnRoaXMuCisJKHJhbmdlX3R5cGVzKTogUmVuYW1l IHRvLi4uCisJKHJhbmdlX2ZsYWdzKTogLi4udGhpcy4KKwkqIGYtbGFuZy5jICh2YWx1ZV9mOTBf c3ViYXJyYXkpOiBDaGFuZ2UgZW51bSByYW5nZV90eXBlIHRvCisJcmFuZ2VfZmxhZyBhbmQgcmVu YW1lIHZhcmlhYmxlcyB0byBtYXRjaC4KKwkqIHBhcnNlLmMgKG9wZXJhdG9yX2xlbmd0aF9zdGFu ZGFyZCk6IExpa2V3aXNlLgorCSogcnVzdC1leHAueSAocnVzdF9wYXJzZXI6OmNvbnZlcnRfYXN0 X3RvX2V4cHJlc3Npb24pOiBDaGFuZ2UgZW51bQorCXJhbmdlX3R5cGUgdG8gcmFuZ2VfZmxhZy4K KwkqIHJ1c3QtbGFuZy5jIChydXN0X2V2YWx1YXRlX2Z1bmNhbGwpOiBMaWtld2lzZS4KKwkocnVz dF9yYW5nZSk6IExpa2V3aXNlLgorCShydXN0X2NvbXB1dGVfcmFuZ2UpOiBMaWtld2lzZS4KKwko cnVzdF9zdWJzY3JpcHQpOiBMaWtld2lzZS4KKworZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5j IGIvZ2RiL2V4cHByaW50LmMKKy0tLSBhL2dkYi9leHBwcmludC5jCisrKysgYi9nZGIvZXhwcHJp bnQuYworQEAgLTU3OCwxOSArNTc4LDE5IEBAIHByaW50X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCisgCisgICAgIGNhc2UgT1BfUkFOR0U6CisgICAg ICAgeworLQllbnVtIHJhbmdlX3R5cGUgcmFuZ2VfdHlwZTsKKysJZW51bSByYW5nZV9mbGFnIHJh bmdlX2ZsYWc7CisgCistCXJhbmdlX3R5cGUgPSAoZW51bSByYW5nZV90eXBlKQorKwlyYW5nZV9m bGFnID0gKGVudW0gcmFuZ2VfZmxhZykKKyAJICBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3Bj ICsgMV0ubG9uZ2NvbnN0KTsKKyAJKnBvcyArPSAyOworIAorLQlpZiAocmFuZ2VfdHlwZSAmIFJB TkdFX0hJR0hfQk9VTkRfRVhDTFVTSVZFKQorKwlpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hf Qk9VTkRfRVhDTFVTSVZFKQorIAkgIGZwdXRzX2ZpbHRlcmVkICgiRVhDTFVTSVZFXyIsIHN0cmVh bSk7CisgCWZwdXRzX2ZpbHRlcmVkICgiUkFOR0UoIiwgc3RyZWFtKTsKKy0JaWYgKCEocmFuZ2Vf dHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKSkKKysJaWYgKCEocmFuZ2VfZmxhZyAmIFJB TkdFX0xPV19CT1VORF9ERUZBVUxUKSkKKyAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJl YW0sIFBSRUNfQUJPVkVfQ09NTUEpOworIAlmcHV0c19maWx0ZXJlZCAoIi4uIiwgc3RyZWFtKTsK Ky0JaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCisrCWlmICgh KHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQorIAkgIHByaW50X3N1YmV4 cCAoZXhwLCBwb3MsIHN0cmVhbSwgUFJFQ19BQk9WRV9DT01NQSk7CisgCWZwdXRzX2ZpbHRlcmVk ICgiKSIsIHN0cmVhbSk7CisgCXJldHVybjsKK0BAIC0xMTA0LDI1ICsxMTA0LDI1IEBAIGR1bXBf c3ViZXhwX2JvZHlfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgICAgICAgYnJl YWs7CisgICAgIGNhc2UgT1BfUkFOR0U6CisgICAgICAgeworLQllbnVtIHJhbmdlX3R5cGUgcmFu Z2VfdHlwZTsKKysJZW51bSByYW5nZV9mbGFnIHJhbmdlX2ZsYWc7CisgCistCXJhbmdlX3R5cGUg PSAoZW51bSByYW5nZV90eXBlKQorKwlyYW5nZV9mbGFnID0gKGVudW0gcmFuZ2VfZmxhZykKKyAJ ICBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW2VsdF0ubG9uZ2NvbnN0KTsKKyAJZWx0ICs9IDI7 CisgCistCWlmIChyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUpCisrCWlm IChyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUpCisgCSAgZnB1dHNfZmls dGVyZWQgKCJFeGNsdXNpdmUiLCBzdHJlYW0pOworIAlmcHV0c19maWx0ZXJlZCAoIlJhbmdlICci LCBzdHJlYW0pOworLQlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQp KQorKwlpZiAoIShyYW5nZV9mbGFnICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQorIAkgIGZw dXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKKyAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0 cmVhbSk7CistCWlmICghKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQor KwlpZiAoIShyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkKKyAJICBmcHV0 c19maWx0ZXJlZCAoIkVYUCIsIHN0cmVhbSk7CisgCWZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0cmVh bSk7CisgCistCWlmICghKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCisr CWlmICghKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCisgCSAgZWx0ID0g ZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworLQlpZiAoIShyYW5nZV90eXBlICYgUkFO R0VfSElHSF9CT1VORF9ERUZBVUxUKSkKKysJaWYgKCEocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hf Qk9VTkRfREVGQVVMVCkpCisgCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQp OworICAgICAgIH0KKyAgICAgICBicmVhazsKK2RpZmYgLS1naXQgYS9nZGIvZXhwcmVzc2lvbi5o IGIvZ2RiL2V4cHJlc3Npb24uaAorLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAorKysrIGIvZ2RiL2V4 cHJlc3Npb24uaAorQEAgLTE4NSw3ICsxODUsNyBAQCBleHRlcm4gdm9pZCBkdW1wX3ByZWZpeF9l eHByZXNzaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBzdHJ1Y3QgdWlfZmlsZSAqKTsKKyAgICBv ciBpbmNsdXNpdmUuICBTbyB3ZSBoYXZlIHNpeCBzb3J0cyBvZiBzdWJyYW5nZS4gIFRoaXMgZW51 bWVyYXRpb24KKyAgICB0eXBlIGlzIHRvIGlkZW50aWZ5IHRoaXMuICAqLworIAorLWVudW0gcmFu Z2VfdHlwZSA6IHVuc2lnbmVkCisrZW51bSByYW5nZV9mbGFnIDogdW5zaWduZWQKKyB7CisgICAv KiBUaGlzIGlzIGEgc3RhbmRhcmQgcmFuZ2UuICBCb3RoIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91 bmRzIGFyZQorICAgICAgZGVmaW5lZCwgYW5kIHRoZSBib3VuZHMgYXJlIGluY2x1c2l2ZS4gICov CitAQCAtMjAxLDYgKzIwMSw2IEBAIGVudW0gcmFuZ2VfdHlwZSA6IHVuc2lnbmVkCisgICBSQU5H RV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSA9IDEgPDwgMiwKKyB9OworIAorLURFRl9FTlVNX0ZMQUdT X1RZUEUgKGVudW0gcmFuZ2VfdHlwZSwgcmFuZ2VfdHlwZXMpOworK0RFRl9FTlVNX0ZMQUdTX1RZ UEUgKGVudW0gcmFuZ2VfZmxhZywgcmFuZ2VfZmxhZ3MpOworIAorICNlbmRpZiAvKiAhZGVmaW5l ZCAoRVhQUkVTU0lPTl9IKSAqLworZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxh bmcuYworLS0tIGEvZ2RiL2YtbGFuZy5jCisrKysgYi9nZGIvZi1sYW5nLmMKK0BAIC0xMjYsMTcg KzEyNiwxNyBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCisgICBp bnQgcGMgPSAoKnBvcykgKyAxOworICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Cisg ICBzdHJ1Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkt PmluZGV4X3R5cGUgKCkpOworLSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUKKy0gICAgPSAo ZW51bSByYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3Qp OworKyAgZW51bSByYW5nZV9mbGFnIHJhbmdlX2ZsYWcKKysgICAgPSAoZW51bSByYW5nZV9mbGFn KSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOworIAorICAgKnBvcyAr PSAzOworIAorLSAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkKKysg IGlmIChyYW5nZV9mbGFnICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpCisgICAgIGxvd19ib3Vu ZCA9IHJhbmdlLT5ib3VuZHMgKCktPmxvdy5jb25zdF92YWwgKCk7CisgICBlbHNlCisgICAgIGxv d19ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBw b3MsIG5vc2lkZSkpOworIAorLSAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RF RkFVTFQpCisrICBpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkKKyAg ICAgaGlnaF9ib3VuZCA9IHJhbmdlLT5ib3VuZHMgKCktPmhpZ2guY29uc3RfdmFsICgpOworICAg ZWxzZQorICAgICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChu dWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9n ZGIvcGFyc2UuYworLS0tIGEvZ2RiL3BhcnNlLmMKKysrKyBiL2dkYi9wYXJzZS5jCitAQCAtNzc0 LDcgKzc3NCw3IEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJl c3Npb24gKmV4cHIsIGludCBlbmRwb3MsCisgeworICAgaW50IG9wbGVuID0gMTsKKyAgIGludCBh cmdzID0gMDsKKy0gIGVudW0gcmFuZ2VfdHlwZSByYW5nZV90eXBlOworKyAgZW51bSByYW5nZV9m bGFnIHJhbmdlX2ZsYWc7CisgICBpbnQgaTsKKyAKKyAgIGlmIChlbmRwb3MgPCAxKQorQEAgLTkx OCwxNSArOTE4LDE1IEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4 cHJlc3Npb24gKmV4cHIsIGludCBlbmRwb3MsCisgCisgICAgIGNhc2UgT1BfUkFOR0U6CisgICAg ICAgb3BsZW4gPSAzOworLSAgICAgIHJhbmdlX3R5cGUgPSAoZW51bSByYW5nZV90eXBlKQorKyAg ICAgIHJhbmdlX2ZsYWcgPSAoZW51bSByYW5nZV9mbGFnKQorIAlsb25nZXN0X3RvX2ludCAoZXhw ci0+ZWx0c1tlbmRwb3MgLSAyXS5sb25nY29uc3QpOworIAorICAgICAgIC8qIEFzc3VtZSB0aGUg cmFuZ2UgaGFzIDIgYXJndW1lbnRzIChsb3cgYm91bmQgYW5kIGhpZ2ggYm91bmQpLCB0aGVuCisg CSByZWR1Y2UgdGhlIGFyZ3VtZW50IGNvdW50IGlmIGFueSBib3VuZHMgYXJlIHNldCB0byBkZWZh dWx0LiAgKi8KKyAgICAgICBhcmdzID0gMjsKKy0gICAgICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdF X0xPV19CT1VORF9ERUZBVUxUKQorKyAgICAgIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfTE9XX0JP VU5EX0RFRkFVTFQpCisgCS0tYXJnczsKKy0gICAgICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0hJ R0hfQk9VTkRfREVGQVVMVCkKKysgICAgICBpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9V TkRfREVGQVVMVCkKKyAJLS1hcmdzOworIAorICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2dk Yi9ydXN0LWV4cC55IGIvZ2RiL3J1c3QtZXhwLnkKKy0tLSBhL2dkYi9ydXN0LWV4cC55CisrKysg Yi9nZGIvcnVzdC1leHAueQorQEAgLTI0OTIsNyArMjQ5Miw3IEBAIHJ1c3RfcGFyc2VyOjpjb252 ZXJ0X2FzdF90b19leHByZXNzaW9uIChjb25zdCBzdHJ1Y3QgcnVzdF9vcCAqb3BlcmF0aW9uLAor IAorICAgICBjYXNlIE9QX1JBTkdFOgorICAgICAgIHsKKy0JZW51bSByYW5nZV90eXBlIGtpbmQg PSAoUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUCisrCXVuc2lnbmVkIGludCBraW5kID0gKFJBTkdF X0hJR0hfQk9VTkRfREVGQVVMVAorIAkJCQl8IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKTsKKyAK KyAJaWYgKG9wZXJhdGlvbi0+bGVmdC5vcCAhPSBOVUxMKQorZGlmZiAtLWdpdCBhL2dkYi9ydXN0 LWxhbmcuYyBiL2dkYi9ydXN0LWxhbmcuYworLS0tIGEvZ2RiL3J1c3QtbGFuZy5jCisrKysgYi9n ZGIvcnVzdC1sYW5nLmMKK0BAIC0xMDcwLDcgKzEwNzAsNiBAQCBydXN0X2V2YWx1YXRlX2Z1bmNh bGwgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUp Cisgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisgcnVzdF9yYW5nZSAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKKyB7CistICBlbnVtIHJhbmdlX3R5 cGUga2luZDsKKyAgIHN0cnVjdCB2YWx1ZSAqbG93ID0gTlVMTCwgKmhpZ2ggPSBOVUxMOworICAg c3RydWN0IHZhbHVlICphZGRydmFsLCAqcmVzdWx0OworICAgQ09SRV9BRERSIGFkZHI7CitAQCAt MTA3OSw3ICsxMDc4LDggQEAgcnVzdF9yYW5nZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50 ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKKyAgIHN0cnVjdCB0eXBlICp0ZW1wX3R5cGU7Cisg ICBjb25zdCBjaGFyICpuYW1lOworIAorLSAga2luZCA9IChlbnVtIHJhbmdlX3R5cGUpIGxvbmdl c3RfdG9faW50IChleHAtPmVsdHNbKnBvcyArIDFdLmxvbmdjb25zdCk7CisrICBhdXRvIGtpbmQK KysgICAgPSAoZW51bSByYW5nZV9mbGFnKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzWypwb3Mg KyAxXS5sb25nY29uc3QpOworICAgKnBvcyArPSAzOworIAorICAgaWYgKCEoa2luZCAmIFJBTkdF X0xPV19CT1VORF9ERUZBVUxUKSkKK0BAIC0xMTY5LDcgKzExNjksNyBAQCBydXN0X3JhbmdlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorIHN0 YXRpYyB2b2lkCisgcnVzdF9jb21wdXRlX3JhbmdlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHZhbHVlICpyYW5nZSwKKyAJCSAgICBMT05HRVNUICpsb3csIExPTkdFU1QgKmhpZ2gsCistCQkg ICAgcmFuZ2VfdHlwZXMgKmtpbmQpCisrCQkgICAgcmFuZ2VfZmxhZ3MgKmtpbmQpCisgeworICAg aW50IGk7CisgCitAQCAtMTIwOSw3ICsxMjA5LDcgQEAgcnVzdF9zdWJzY3JpcHQgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUsCisgICBzdHJ1Y3Qg dHlwZSAqcmhzdHlwZTsKKyAgIExPTkdFU1QgbG93LCBoaWdoX2JvdW5kOworICAgLyogSW5pdGlh bGl6ZWQgdG8gYXBwZWFzZSB0aGUgY29tcGlsZXIuICAqLworLSAgcmFuZ2VfdHlwZXMga2luZCA9 IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUOworKyAg cmFuZ2VfZmxhZ3Mga2luZCA9IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUIHwgUkFOR0VfSElHSF9C T1VORF9ERUZBVUxUOworICAgTE9OR0VTVCBoaWdoID0gMDsKKyAgIGludCB3YW50X3NsaWNlID0g MDsKKyAKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NjQxNjctZm9ydHJhbi13aGl0ZXNwYWNlX2Fy cmF5LnBhdGNoIGIvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4td2hpdGVzcGFjZV9hcnJheS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDIxNTU5Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4td2hpdGVzcGFjZV9hcnJheS5wYXRjaApA QCAtMCwwICsxLDEzNyBAQAorRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KK0RhdGU6IE1v biwgMjQgTWF5IDIwMjEgMTc6MDc6MzYgLTA3MDAKK1N1YmplY3Q6IGdkYi1yaGJ6MTk2NDE2Ny1m b3J0cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKKworOzsgW2ZvcnRyYW5dIEJhY2twb3J0IEFu ZHJldyBCdXJnZXNzJ3MgY29tbWl0IHdoaWNoIGVsaW1pbmF0ZXMgdW5kZXNpcmFibGUKKzs7IHdo aXRlc3BhY2Ugd2hlbiBwcmludGluZyBhcnJheXMuCisKK2dkYi9mb3J0cmFuOiBDaGFuZ2Ugd2hp dGVzcGFjZSB3aGVuIHByaW50aW5nIGFycmF5cworCitUaGlzIGNvbW1pdCBtYWtlcyB0aGUgd2hp dGVzcGFjZSB1c2FnZSB3aGVuIHByaW50aW5nIEZvcnRyYW4gYXJyYXlzCittb3JlIGNvbnNpc3Rl bnQsIGFuZCBtb3JlIGlubGluZSB3aXRoIGhvdyB3ZSBwcmludCBDIGFycmF5cy4KKworQ3VycmVu dGx5IGEgMiBkaW1lbnNpb25hbCBGb3RyYW4gYXJyYXkgaXMgcHJpbnRlZCBsaWtlIHRoaXMsIEkg ZmluZAordGhlIG1hcmtlZCB3aGl0ZXNwYWNlIHVucGxlYXNhbnQ6CisKKyAgKCggMSwgMiwgMykg KCA0LCA1LCA2KSApCisgICAgXiAgICAgICAgICBeICAgICAgICBeCisKK0FmdGVyIHRoaXMgY29t bWl0IHRoZSBzYW1lIGFycmF5IGlzIHByaW50ZWQgbGlrZSB0aGlzOgorCisgICgoMSwgMiwgMykg KDQsIDUsIDYpKQorCitXaGljaCBzZWVtcyBtb3JlIGlubGluZSB3aXRoIGhvdyB3ZSBwcmludCBD IGFycmF5cywgaW4gdGhlIGNhc2Ugb2YgQworYXJyYXlzIHdlIGRvbid0IGFkZCBleHRyYSB3aGl0 ZXNwYWNlIGJlZm9yZSB0aGUgZmlyc3QgZWxlbWVudC4KKworZ2RiL0NoYW5nZUxvZzoKKworCSog Zi12YWxwcmludC5jIChmNzdfcHJpbnRfYXJyYXlfMSk6IEFkanVzdCBwcmludGluZyBvZiB3aGl0 ZXNwYWNlCisJZm9yIGFycmF5cy4KKworZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CisKKwkqIGdk Yi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHA6IFVwZGF0ZSBleHBlY3RlZCByZXN1bHRzLgorCSog Z2RiLmZvcnRyYW4vY2xhc3MtYWxsb2NhdGFibGUtYXJyYXkuZXhwOiBMaWtld2lzZS4KKwkqIGdk Yi5mb3J0cmFuL211bHRpLWRpbS5leHA6IExpa2V3aXNlLgorCSogZ2RiLmZvcnRyYW4vdmxhLXR5 cGUuZXhwOiBMaWtld2lzZS4KKwkqIGdkYi5taS9taS12bGEtZm9ydHJhbi5leHA6IExpa2V3aXNl LgorCitkaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKKy0t LSBhL2dkYi9mLXZhbHByaW50LmMKKysrKyBiL2dkYi9mLXZhbHByaW50LmMKK0BAIC0xMzcsMTQg KzEzNywxNyBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBz dHJ1Y3QgdHlwZSAqdHlwZSwKKyAJICAgIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgdmFsdWVf Y29udGVudHNfZm9yX3ByaW50aW5nX2NvbnN0ICh2YWwpCisgCSAgICAgKyBvZmZzLCBhZGRyICsg b2Zmcyk7CisgCistCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCAiKTsKKysJICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7CisgCSAgZjc3X3ByaW50X2FycmF5XzEgKG5zcyAr IDEsIG5kaW1lbnNpb25zLCB2YWx1ZV90eXBlIChzdWJhcnJheSksCisgCQkJICAgICB2YWx1ZV9j b250ZW50c19mb3JfcHJpbnRpbmcgKHN1YmFycmF5KSwKKyAJCQkgICAgIHZhbHVlX2VtYmVkZGVk X29mZnNldCAoc3ViYXJyYXkpLAorIAkJCSAgICAgdmFsdWVfYWRkcmVzcyAoc3ViYXJyYXkpLAor IAkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCBzdWJhcnJheSwgb3B0aW9ucywgZWx0cyk7CisgCSAg b2ZmcyArPSBieXRlX3N0cmlkZTsKKy0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIp OworKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKKysKKysJICBpZiAoaSA8IHVw cGVyYm91bmQpCisrCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgIik7CisgCX0KKyAg ICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCB1cHBlcmJvdW5kKQor IAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2FycmF5LXNsaWNlcy5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v YXJyYXktc2xpY2VzLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1z bGljZXMuZXhwCitAQCAtMzgsMTQgKzM4LDE0IEBAIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0KKyAKKyBzZXQgYXJyYXlfY29udGVudHMgXAor ICAgICBbbGlzdCBcCistCSAiID0gXFwoXFwoIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEw XFwpIFxcKCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxcKSBcXCggMjEs IDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzBcXCkgXFwoIDMxLCAzMiwgMzMsIDM0 LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwXFwpIFxcKCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0 NywgNDgsIDQ5LCA1MFxcKSBcXCggNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwg NjBcXCkgXFwoIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwXFwpIFxcKCA3 MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MFxcKSBcXCggODEsIDgyLCA4Mywg ODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTBcXCkgXFwoIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYs IDk3LCA5OCwgOTksIDEwMFxcKSBcXCkiIFwKKy0JICIgPSBcXChcXCggMSwgMiwgMywgNCwgNVxc KSBcXCggMTEsIDEyLCAxMywgMTQsIDE1XFwpIFxcKCAyMSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwo IDMxLCAzMiwgMzMsIDM0LCAzNVxcKSBcXCggNDEsIDQyLCA0MywgNDQsIDQ1XFwpIFxcKSIgXAor LQkgIiA9IFxcKFxcKCAxLCAzLCA1LCA3LCA5XFwpIFxcKCAyMSwgMjMsIDI1LCAyNywgMjlcXCkg XFwoIDQxLCA0MywgNDUsIDQ3LCA0OVxcKSBcXCggNjEsIDYzLCA2NSwgNjcsIDY5XFwpIFxcKCA4 MSwgODMsIDg1LCA4NywgODlcXCkgXFwpIiBcCistCSAiID0gXFwoXFwoIDEsIDQsIDcsIDEwXFwp IFxcKCAyMSwgMjQsIDI3LCAzMFxcKSBcXCggNDEsIDQ0LCA0NywgNTBcXCkgXFwoIDYxLCA2NCwg NjcsIDcwXFwpIFxcKCA4MSwgODQsIDg3LCA5MFxcKSBcXCkiIFwKKy0JICIgPSBcXChcXCggMSwg NSwgOVxcKSBcXCggMzEsIDM1LCAzOVxcKSBcXCggNjEsIDY1LCA2OVxcKSBcXCggOTEsIDk1LCA5 OVxcKSBcXCkiIFwKKy0JICIgPSBcXChcXCggLTI2LCAtMjUsIC0yNCwgLTIzLCAtMjIsIC0yMSwg LTIwLCAtMTksIC0xOCwgLTE3XFwpIFxcKCAtMTksIC0xOCwgLTE3LCAtMTYsIC0xNSwgLTE0LCAt MTMsIC0xMiwgLTExLCAtMTBcXCkgXFwoIC0xMiwgLTExLCAtMTAsIC05LCAtOCwgLTcsIC02LCAt NSwgLTQsIC0zXFwpIFxcKCAtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIsIDMsIDRcXCkgXFwo IDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMVxcKSBcXCggOSwgMTAsIDExLCAxMiwgMTMs IDE0LCAxNSwgMTYsIDE3LCAxOFxcKSBcXCggMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIz LCAyNCwgMjVcXCkgXFwoIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyXFwp IFxcKCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOVxcKSBcXCggMzcsIDM4 LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDZcXCkgXFwpIiBcCistCSAiID0gXFwoXFwo IC0yNiwgLTI1LCAtMjQsIC0yMywgLTIyLCAtMjFcXCkgXFwoIC0xOSwgLTE4LCAtMTcsIC0xNiwg LTE1LCAtMTRcXCkgXFwoIC0xMiwgLTExLCAtMTAsIC05LCAtOCwgLTdcXCkgXFwpIiBcCistCSAi ID0gXFwoXFwoIC0yNiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKCAtNSwgLTMsIC0xLCAxLCAz XFwpIFxcKCAxNiwgMTgsIDIwLCAyMiwgMjRcXCkgXFwoIDM3LCAzOSwgNDEsIDQzLCA0NVxcKSBc XCkiIF0KKysJICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcKSBcXCgx MSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxcKSBcXCgyMSwgMjIsIDIzLCAy NCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMFxcKSBcXCgzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAz NywgMzgsIDM5LCA0MFxcKSBcXCg0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1 MFxcKSBcXCg1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MFxcKSBcXCg2MSwg NjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MFxcKSBcXCg3MSwgNzIsIDczLCA3NCwg NzUsIDc2LCA3NywgNzgsIDc5LCA4MFxcKSBcXCg4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4Nywg ODgsIDg5LCA5MFxcKSBcXCg5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDBc XClcXCkiIFwKKysJICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1XFwpIFxcKDExLCAxMiwgMTMsIDE0 LCAxNVxcKSBcXCgyMSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoMzEsIDMyLCAzMywgMzQsIDM1XFwp IFxcKDQxLCA0MiwgNDMsIDQ0LCA0NVxcKVxcKSIgXAorKwkgIiA9IFxcKFxcKDEsIDMsIDUsIDcs IDlcXCkgXFwoMjEsIDIzLCAyNSwgMjcsIDI5XFwpIFxcKDQxLCA0MywgNDUsIDQ3LCA0OVxcKSBc XCg2MSwgNjMsIDY1LCA2NywgNjlcXCkgXFwoODEsIDgzLCA4NSwgODcsIDg5XFwpXFwpIiBcCisr CSAiID0gXFwoXFwoMSwgNCwgNywgMTBcXCkgXFwoMjEsIDI0LCAyNywgMzBcXCkgXFwoNDEsIDQ0 LCA0NywgNTBcXCkgXFwoNjEsIDY0LCA2NywgNzBcXCkgXFwoODEsIDg0LCA4NywgOTBcXClcXCki IFwKKysJICIgPSBcXChcXCgxLCA1LCA5XFwpIFxcKDMxLCAzNSwgMzlcXCkgXFwoNjEsIDY1LCA2 OVxcKSBcXCg5MSwgOTUsIDk5XFwpXFwpIiBcCisrCSAiID0gXFwoXFwoLTI2LCAtMjUsIC0yNCwg LTIzLCAtMjIsIC0yMSwgLTIwLCAtMTksIC0xOCwgLTE3XFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0x NiwgLTE1LCAtMTQsIC0xMywgLTEyLCAtMTEsIC0xMFxcKSBcXCgtMTIsIC0xMSwgLTEwLCAtOSwg LTgsIC03LCAtNiwgLTUsIC00LCAtM1xcKSBcXCgtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIs IDMsIDRcXCkgXFwoMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExXFwpIFxcKDksIDEwLCAx MSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThcXCkgXFwoMTYsIDE3LCAxOCwgMTksIDIwLCAy MSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAz MSwgMzJcXCkgXFwoMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzlcXCkgXFwo MzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDZcXClcXCkiIFwKKysJICIgPSBc XChcXCgtMjYsIC0yNSwgLTI0LCAtMjMsIC0yMiwgLTIxXFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0x NiwgLTE1LCAtMTRcXCkgXFwoLTEyLCAtMTEsIC0xMCwgLTksIC04LCAtN1xcKVxcKSIgXAorKwkg IiA9IFxcKFxcKC0yNiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKC01LCAtMywgLTEsIDEsIDNc XCkgXFwoMTYsIDE4LCAyMCwgMjIsIDI0XFwpIFxcKDM3LCAzOSwgNDEsIDQzLCA0NVxcKVxcKSIg XQorIAorIHNldCBtZXNzYWdlX3N0cmluZ3MgXAorICAgICBbbGlzdCBcCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jbGFzcy1hbGxvY2F0YWJsZS1hcnJheS5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NsYXNzLWFsbG9jYXRhYmxlLWFycmF5LmV4cAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jbGFzcy1hbGxvY2F0YWJsZS1hcnJheS5leHAK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY2xhc3MtYWxsb2NhdGFibGUtYXJyYXku ZXhwCitAQCAtNDAsNCArNDAsNCBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQnJlYWsg SGVyZSIKKyAjIGNldGFpbmx5IGdvaW5nIHRvIGZhaWwuCisgZ2RiX3Rlc3QgInByaW50IHRoaXMi ICIgPSBcXCggX2RhdGEgPSBcW15cclxuXF0rLCBfdnB0ciA9IFxbXlxyXG5cXStcXCkiCisgZ2Ri X3Rlc3QgInByaW50IHRoaXMlX2RhdGEiICIgPSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdGVzdF90 eXBlIFxcKVxcKSBcW15cclxuXF0rIgorLWdkYl90ZXN0ICJwcmludCB0aGlzJV9kYXRhJWIiICIg PSBcXChcXCggMSwgMiwgM1xcKSBcXCggNCwgNSwgNlxcKSBcXCkiCisrZ2RiX3Rlc3QgInByaW50 IHRoaXMlX2RhdGElYiIgIiA9IFxcKFxcKDEsIDIsIDNcXCkgXFwoNCwgNSwgNlxcKVxcKSIKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL211bHRpLWRpbS5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL211bHRpLWRpbS5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbXVsdGktZGltLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9tdWx0aS1kaW0uZXhwCitAQCAtNTcsNyArNTcsNyBAQCBnZGJfdGVzdCAicHJpbnQgZm9vKDMs Myw0KSIgXAorICAgICAicHJpbnQgYW4gaW52YWxpZCBhcnJheSBpbmRleCAoMywzLDQpIgorIAor IGdkYl90ZXN0ICJwcmludCBmb28iIFwKKy0gICAgeyA9IFwoXCggXCggMTAsIDEwXCkgXCggMTAs IDEwXCkgXCggMTAsIDEwXCkgXCkgXCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDEw XCkgXCkgXCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCkgXCggXCggMTAs IDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDIwXCkgXCkgXCl9IFwKKysgICAgeyA9IFwoXChcKDEw LCAxMFwpIFwoMTAsIDEwXCkgXCgxMCwgMTBcKVwpIFwoXCgxMCwgMTBcKSBcKDEwLCAxMFwpIFwo MTAsIDEwXClcKSBcKFwoMTAsIDEwXCkgXCgxMCwgMTBcKSBcKDEwLCAxMFwpXCkgXChcKDEwLCAx MFwpIFwoMTAsIDEwXCkgXCgxMCwgMjBcKVwpXCl9IFwKKyAgICAgInByaW50IGZ1bGwgY29udGVu dHMgb2YgdGhlIGFycmF5IgorIAorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJicmVhay12YXJpYWJsZSJdCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAor LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZXhwCitAQCAtNjYsOSArNjYsOSBAQCBnZGJf dGVzdCAicHR5cGUgdHdvdiIgXAorICAgICAgICAgICAgICAgICAgICAgICJcXHMrJGludCwgYWxs b2NhdGFibGUgOjogaXZsYTFcXFwoNSwxMiw5OVxcXCkiIFwKKyAgICAgICAgICAgICAgICAgICAg ICAiXFxzKyRpbnQsIGFsbG9jYXRhYmxlIDo6IGl2bGEyXFxcKDksMTJcXFwpIiBcCisgICAgICAg ICAgICAgICAgICAgICAgIkVuZCBUeXBlIHR3byIgXQorLWdkYl90ZXN0ICJwcmludCB0d292IiAi ID0gXFxcKCBpdmxhMSA9IFxcXChcXFwoIFxcXCggMSwgMSwgMSwgMSwgMVxcXClcCistIFxcXCgg MSwgMSwgMzIxLCAxLCAxXFxcKVwKKy0gXFxcKCAxLCAxLCAxLCAxLCAxXFxcKSAuKiIKKytnZGJf dGVzdCAicHJpbnQgdHdvdiIgIiA9IFxcXCggaXZsYTEgPSBcXFwoXFxcKFxcXCgxLCAxLCAxLCAx LCAxXFxcKVwKKysgXFxcKDEsIDEsIDMyMSwgMSwgMVxcXClcCisrIFxcXCgxLCAxLCAxLCAxLCAx XFxcKSAuKiIKKyAKKyAjIENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgYmVnaW5uIG9mIHR5 cGUKKyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidGhyZWV2LWZpbGxlZCJd CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwCistLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taS12bGEtZm9ydHJhbi5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pLXZsYS1mb3J0cmFuLmV4cAorQEAgLTE4MCw3ICsxODAsNyBAQCBtaV9ydW5fY21kCisgbWlf ZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xp bmVubyIgXAorICAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBs aW5lICRicF9saW5lbm8iCisgbWlfZ2RiX3Rlc3QgIjU5MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Np b24gcHZsYTIiIFwKKy0gICI1OTBcXF5kb25lLHZhbHVlPVwiXFwoXFwoIDIsIDIsIDIsIDIsIDJc XCkgXFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwpXCIiIFwKKysgICI1OTBcXF5kb25lLHZhbHVlPVwi XFwoXFwoMiwgMiwgMiwgMiwgMlxcKSBcXCgyLCAyLCAyLCAyLCAyXFwpXFwpXCIiIFwKKyAgICJl dmFsdWF0ZSBhc3NvY2lhdGVkIHZsYSIKKyAKKyBtaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZs YTJfYXNzb2NpYXRlZCBwdmxhMiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTY0MTY3LW1vdmUt Zm9ydHJhbi1leHByLWhhbmRsaW5nLnBhdGNoIGIvZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9ydHJh bi1leHByLWhhbmRsaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmI5MjE2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFu LWV4cHItaGFuZGxpbmcucGF0Y2gKQEAgLTAsMCArMSw3ODcgQEAKK0Zyb20gRkVET1JBX1BBVENI RVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5i QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDI0IE1heSAyMDIxIDE3OjAwOjE3IC0wNzAwCitTdWJq ZWN0OiBnZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFuLWV4cHItaGFuZGxpbmcucGF0Y2gKKwor OzsgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0IHdoaWNoIG1vdmVz IEZvcnRyYW4KKzs7IGV4cHJlc3Npb24gaGFuZGxpbmcgdG8gZi1sYW5nLmMuCisKK2dkYi9mb3J0 cmFuOiBNb3ZlIEZvcnRyYW4gZXhwcmVzc2lvbiBoYW5kbGluZyBpbnRvIGYtbGFuZy5jCisKK1Ro ZSBGb3J0cmFuIHNwZWNpZmljIE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCBpcyBjdXJyZW50 bHkgaGFuZGxlZAoraW4gdGhlIGdlbmVyaWMgZXhwcmVzc2lvbiBoYW5kbGluZyBjb2RlLiAgVGhl cmUncyBubyByZWFzb24gd2h5IHRoaXMKK3Nob3VsZCBiZSB0aGUgY2FzZSwgc28gdGhpcyBjb21t aXQgbW92ZXMgaGFuZGxpbmcgb2YgdGhpcyBpbnRvIEZvcnRyYW4KK3NwZWNpZmljIGZpbGVzLgor CitUaGVyZSBzaG91bGQgYmUgbm8gdXNlciB2aXNpYmxlIGNoYW5nZXMgYWZ0ZXIgdGhpcyBjb21t aXQuCisKK2dkYi9DaGFuZ2VMb2c6CisKKwkqIGV2YWwuYzogUmVtb3ZlICdmLWxhbmcuaCcgaW5j bHVkZS4KKwkodmFsdWVfZjkwX3N1YmFycmF5KTogTW92ZWQgdG8gZi1sYW5nLmMuCisJKGV2YWxf Y2FsbCk6IFJlbmFtZWQgdG8uLi4KKwkoZXZhbHVhdGVfc3ViZXhwX2RvX2NhbGwpOiAuLi50aGlz LCBpcyBubyBsb25nZXIgc3RhdGljLCBoZWFkZXIKKwljb21tZW50IG1vdmVkIGludG8gaGVhZGVy IGZpbGUuCisJKGV2YWx1YXRlX2Z1bmNhbGwpOiBVcGRhdGUgY2FsbCB0byBldmFsX2NhbGwuCisJ KHNraXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3QpOiBNb3ZlZCB0byBmLWxhbmcuYy4KKwkoZm9ydHJh bl92YWx1ZV9zdWJhcnJheSk6IExpa2V3aXNlLgorCShldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQp OiBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QgaGFuZGxpbmcKKwltb3ZlZCB0byBldmFsdWF0 ZV9zdWJleHBfZi4KKwkoY2FsY19mNzdfYXJyYXlfZGltcyk6IE1vdmVkIHRvIGYtbGFuZy5jCisJ KiBleHBwcmludC5jIChwcmludF9zdWJleHBfZnVuY2FsbCk6IE5ldyBmdW5jdGlvbi4KKwkocHJp bnRfc3ViZXhwX3N0YW5kYXJkKTogT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUIGhhbmRsaW5n CisJbW92ZWQgdG8gcHJpbnRfc3ViZXhwX2YsIE9QX0ZVTkNBTEwgdXNlcyBuZXcgZnVuY3Rpb24u CisJKGR1bXBfc3ViZXhwX2JvZHlfZnVuY2FsbCk6IE5ldyBmdW5jdGlvbi4KKwkoZHVtcF9zdWJl eHBfYm9keV9zdGFuZGFyZCk6IE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCBoYW5kbGluZwor CW1vdmVkIHRvIGR1bXBfc3ViZXhwX2YsIE9QX0ZVTkNBTEwgdXNlcyBuZXcgZnVuY3Rpb24uCisJ KiBleHByZXNzaW9uLmggKGV2YWx1YXRlX3N1YmV4cF9kb19jYWxsKTogRGVjbGFyZS4KKwkqIGYt bGFuZy5jICh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBNb3ZlZCBmcm9tIGV2YWwuYy4KKwkoc2tpcF91 bmRldGVybWluZWRfYXJnbGlzdCk6IExpa2V3aXNlLgorCShjYWxjX2Y3N19hcnJheV9kaW1zKTog TGlrZXdpc2UuCisJKGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBMaWtld2lzZS4KKwkoZXZhbHVh dGVfc3ViZXhwX2YpOiBBZGQgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUIHN1cHBvcnQuCisJ KG9wZXJhdG9yX2xlbmd0aF9mKTogTGlrZXdpc2UuCisJKHByaW50X3N1YmV4cF9mKTogTGlrZXdp c2UuCisJKGR1bXBfc3ViZXhwX2JvZHlfZik6IExpa2V3aXNlLgorCSogZm9ydHJhbi1vcGVyYXRv ci5kZWYgKE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCk6IE1vdmUKKwlkZWNsYXJhdGlvbiBv ZiB0aGlzIG9wZXJhdGlvbiB0byBoZXJlLgorCSogcGFyc2UuYyAob3BlcmF0b3JfbGVuZ3RoX3N0 YW5kYXJkKTogT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUCisJc3VwcG9ydCBtb3ZlZCB0byBv cGVyYXRvcl9sZW5ndGhfZi4KKwkqIHBhcnNlci1kZWZzLmggKGR1bXBfc3ViZXhwX2JvZHlfZnVu Y2FsbCk6IERlY2xhcmUuCisJKHByaW50X3N1YmV4cF9mdW5jYWxsKTogRGVjbGFyZS4KKwkqIHN0 ZC1vcGVyYXRvci5kZWYgKE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCk6IE1vdmVkIHRvCisJ Zm9ydHJhbi1vcGVyYXRvci5kZWYuCisKK2RpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2 YWwuYworLS0tIGEvZ2RiL2V2YWwuYworKysrIGIvZ2RiL2V2YWwuYworQEAgLTI2LDcgKzI2LDYg QEAKKyAjaW5jbHVkZSAiZnJhbWUuaCIKKyAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCisgI2luY2x1 ZGUgImxhbmd1YWdlLmgiCQkvKiBGb3IgQ0FTVF9JU19DT05WRVJTSU9OLiAgKi8KKy0jaW5jbHVk ZSAiZi1sYW5nLmgiCQkvKiBGb3IgYXJyYXkgYm91bmQgc3R1ZmYuICAqLworICNpbmNsdWRlICJj cC1hYmkuaCIKKyAjaW5jbHVkZSAiaW5mY2FsbC5oIgorICNpbmNsdWRlICJvYmpjLWxhbmcuaCIK K0BAIC0zNzEsMzIgKzM3MCw2IEBAIGluaXRfYXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVlICph cnJheSwgc3RydWN0IHZhbHVlICplbGVtZW50LAorICAgcmV0dXJuIGluZGV4OworIH0KKyAKKy1z dGF0aWMgc3RydWN0IHZhbHVlICoKKy12YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAq YXJyYXksCistCQkgICAgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9z aWRlIG5vc2lkZSkKKy17CistICBpbnQgcGMgPSAoKnBvcykgKyAxOworLSAgTE9OR0VTVCBsb3df Ym91bmQsIGhpZ2hfYm91bmQ7CistICBzdHJ1Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlIChhcnJheSktPmluZGV4X3R5cGUgKCkpOworLSAgZW51bSByYW5nZV90eXBl IHJhbmdlX3R5cGUKKy0gICAgPSAoZW51bSByYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhw LT5lbHRzW3BjXS5sb25nY29uc3QpOworLSAKKy0gICpwb3MgKz0gMzsKKy0KKy0gIGlmIChyYW5n ZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9E RUZBVUxUKQorLSAgICBsb3dfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5sb3cuY29uc3RfdmFs ICgpOworLSAgZWxzZQorLSAgICBsb3dfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9z dWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKKy0KKy0gIGlmIChyYW5nZV90eXBl ID09IEhJR0hfQk9VTkRfREVGQVVMVCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVM VCkKKy0gICAgaGlnaF9ib3VuZCA9IHJhbmdlLT5ib3VuZHMgKCktPmhpZ2guY29uc3RfdmFsICgp OworLSAgZWxzZQorLSAgICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3Vi ZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7CistCistICByZXR1cm4gdmFsdWVfc2xp Y2UgKGFycmF5LCBsb3dfYm91bmQsIGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKy19Cist CistCisgLyogUHJvbW90ZSB2YWx1ZSBBUkcxIGFzIGFwcHJvcHJpYXRlIGJlZm9yZSBwZXJmb3Jt aW5nIGEgdW5hcnkgb3BlcmF0aW9uCisgICAgb24gdGhpcyBhcmd1bWVudC4KKyAgICBJZiB0aGUg cmVzdWx0IGlzIG5vdCBhcHByb3ByaWF0ZSBmb3IgYW55IHBhcnRpY3VsYXIgbGFuZ3VhZ2UgdGhl biBpdAorQEAgLTc0OSwxNyArNzIyLDEzIEBAIGV2YWxfc2tpcF92YWx1ZSAoZXhwcmVzc2lvbiAq ZXhwKQorICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChleHAtPmdk YmFyY2gpLT5idWlsdGluX2ludCwgMSk7CisgfQorIAorLS8qIEV2YWx1YXRlIGEgZnVuY3Rpb24g Y2FsbC4gIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgaXMgaW4KKy0gICBBUkdWRUNbMF0gYW5k IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBhcmUgaW4KKy0gICBBUkdWRUNb MS4uTkFSR1NdLiAgRlVOQ1RJT05fTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24sIGlm CistICAga25vd24uICBERUZBVUxUX1JFVFVSTl9UWVBFIGlzIHVzZWQgYXMgdGhlIGZ1bmN0aW9u J3MgcmV0dXJuIHR5cGUKKy0gICBpZiB0aGUgcmV0dXJuIHR5cGUgaXMgdW5rbm93bi4gICovCisr LyogU2VlIGV4cHJlc3Npb24uaC4gICovCisgCistc3RhdGljIHZhbHVlICoKKy1ldmFsX2NhbGwg KGV4cHJlc3Npb24gKmV4cCwgZW51bSBub3NpZGUgbm9zaWRlLAorLQkgICBpbnQgbmFyZ3MsIHZh bHVlICoqYXJndmVjLAorLQkgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLAorLQkgICB0eXBl ICpkZWZhdWx0X3JldHVybl90eXBlKQorK3ZhbHVlICoKKytldmFsdWF0ZV9zdWJleHBfZG9fY2Fs bCAoZXhwcmVzc2lvbiAqZXhwLCBlbnVtIG5vc2lkZSBub3NpZGUsCisrCQkJIGludCBuYXJncywg dmFsdWUgKiphcmd2ZWMsCisrCQkJIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCisrCQkJIHR5 cGUgKmRlZmF1bHRfcmV0dXJuX3R5cGUpCisgeworICAgaWYgKGFyZ3ZlY1swXSA9PSBOVUxMKQor ICAgICBlcnJvciAoXygiQ2Fubm90IGV2YWx1YXRlIGZ1bmN0aW9uIC0tIG1heSBiZSBpbmxpbmVk IikpOworQEAgLTEyMzAsMjAgKzExOTksOCBAQCBldmFsdWF0ZV9mdW5jYWxsICh0eXBlICpleHBl Y3RfdHlwZSwgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAgICAgICAvKiBOb3RoaW5nIHRv IGJlIGRvbmU7IGFyZ3ZlYyBhbHJlYWR5IGNvcnJlY3RseSBzZXQgdXAuICAqLworICAgICB9Cisg CistICByZXR1cm4gZXZhbF9jYWxsIChleHAsIG5vc2lkZSwgbmFyZ3MsIGFyZ3ZlYywgdmFyX2Z1 bmNfbmFtZSwgZXhwZWN0X3R5cGUpOworLX0KKy0KKy0vKiBIZWxwZXIgZm9yIHNraXBwaW5nIGFs bCB0aGUgYXJndW1lbnRzIGluIGFuIHVuZGV0ZXJtaW5lZCBhcmd1bWVudCBsaXN0LgorLSAgIFRo aXMgZnVuY3Rpb24gd2FzIGRlc2lnbmVkIGZvciB1c2UgaW4gdGhlIE9QX0Y3N19VTkRFVEVSTUlO RURfQVJHTElTVAorLSAgIGNhc2Ugb2YgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIGFzIG11bHRp cGxlLCBidXQgbm90IGFsbCwgY29kZSBwYXRocworLSAgIHJlcXVpcmUgYSBnZW5lcmljIHNraXAu ICAqLworLQorLXN0YXRpYyB2b2lkCistc2tpcF91bmRldGVybWluZWRfYXJnbGlzdCAoaW50IG5h cmdzLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKy0JCQkgICBlbnVtIG5vc2lk ZSBub3NpZGUpCisteworLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgKytpKQorLSAgICBl dmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpOworKyAgcmV0dXJuIGV2 YWx1YXRlX3N1YmV4cF9kb19jYWxsIChleHAsIG5vc2lkZSwgbmFyZ3MsIGFyZ3ZlYywKKysJCQkJ ICB2YXJfZnVuY19uYW1lLCBleHBlY3RfdHlwZSk7CisgfQorIAorIC8qIFJldHVybiB0cnVlIGlm IHR5cGUgaXMgaW50ZWdyYWwgb3IgcmVmZXJlbmNlIHRvIGludGVncmFsICovCitAQCAtMTI2MCw2 NyArMTIxNyw2IEBAIGlzX2ludGVncmFsX29yX2ludGVncmFsX3JlZmVyZW5jZSAoc3RydWN0IHR5 cGUgKnR5cGUpCisgCSAgJiYgaXNfaW50ZWdyYWxfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpKTsKKyB9CisgCistLyogQ2FsbGVkIGZyb20gZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIHRv IHBlcmZvcm0gYXJyYXkgaW5kZXhpbmcsIGFuZAorLSAgIHN1Yi1yYW5nZSBleHRyYWN0aW9uLCBm b3IgRm9ydHJhbi4gIEFzIHdlbGwgYXMgYXJyYXlzIHRoaXMgZnVuY3Rpb24KKy0gICBhbHNvIGhh bmRsZXMgc3RyaW5ncyBhcyB0aGV5IGNhbiBiZSB0cmVhdGVkIGxpa2UgYXJyYXlzIG9mIGNoYXJh Y3RlcnMuCistICAgQVJSQVkgaXMgdGhlIGFycmF5IG9yIHN0cmluZyBiZWluZyBhY2Nlc3NlZC4g IEVYUCwgUE9TLCBhbmQgTk9TSURFIGFyZQorLSAgIGFzIGZvciBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQsIGFuZCBOQVJHUyBpcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cworLSAgIGluIHRoaXMg YWNjZXNzIChlLmcuICdhcnJheSAoMSwyLDMpJyB3b3VsZCBiZSBOQVJHUyAzKS4gICovCistCist c3RhdGljIHN0cnVjdCB2YWx1ZSAqCistZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoc3RydWN0IHZh bHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKy0JCQlpbnQgKnBvcywgaW50IG5h cmdzLCBlbnVtIG5vc2lkZSBub3NpZGUpCisteworLSAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNv ZGUgPT0gT1BfUkFOR0UpCistICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFycmF5LCBl eHAsIHBvcywgbm9zaWRlKTsKKy0KKy0gIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQorLSAgICB7 CistICAgICAgc2tpcF91bmRldGVybWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3Np ZGUpOworLSAgICAgIC8qIFJldHVybiB0aGUgZHVtbXkgdmFsdWUgd2l0aCB0aGUgY29ycmVjdCB0 eXBlLiAgKi8KKy0gICAgICByZXR1cm4gYXJyYXk7CistICAgIH0KKy0KKy0gIExPTkdFU1Qgc3Vi c2NyaXB0X2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOworLSAgaW50IG5kaW1lbnNpb25zID0gMTsK Ky0gIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkp KTsKKy0KKy0gIGlmIChuYXJncyA+IE1BWF9GT1JUUkFOX0RJTVMpCistICAgIGVycm9yIChfKCJU b28gbWFueSBzdWJzY3JpcHRzIGZvciBGNzcgKCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7 CistCistICBuZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOworLQorLSAg aWYgKG5hcmdzICE9IG5kaW1lbnNpb25zKQorLSAgICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9m IHN1YnNjcmlwdHMiKSk7CistCistICBnZGJfYXNzZXJ0IChuYXJncyA+IDApOworLQorLSAgLyog Tm93IHRoYXQgd2Uga25vdyB3ZSBoYXZlIGEgbGVnYWwgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Np b24gbGV0IHVzCistICAgICBhY3R1YWxseSBmaW5kIG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhp c3RzIGluIHRoZSBhcnJheS4gICovCistCistICAvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0 byByaWdodC4gICovCistICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyBpKyspCistICAgIHsK Ky0gICAgICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGlu dGVnZXIgaW4gRjc3LiAgKi8KKy0gICAgICB2YWx1ZSAqYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93 aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKKy0KKy0gICAgICAvKiBGaWxsIGluIHRo ZSBzdWJzY3JpcHQgYXJyYXkuICAqLworLSAgICAgIHN1YnNjcmlwdF9hcnJheVtpXSA9IHZhbHVl X2FzX2xvbmcgKGFyZzIpOworLSAgICB9CistCistICAvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5 IGlzIGFycmFuZ2VkIHJpZ2h0IHRvIGxlZnQuICAqLworLSAgZm9yIChpbnQgaSA9IG5hcmdzOyBp ID4gMDsgaS0tKQorLSAgICB7CistICAgICAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOworLSAgICAgIExPTkdFU1QgaW5kZXggPSBz dWJzY3JpcHRfYXJyYXlbaSAtIDFdOworLQorLSAgICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0 ZWRfcnZhbHVlIChhcnJheSwgaW5kZXgsCistCQkJCQlmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5 X3R5cGUpKTsKKy0gICAgfQorLQorLSAgcmV0dXJuIGFycmF5OworLX0KKy0KKyBzdHJ1Y3QgdmFs dWUgKgorIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBl LAorIAkJCSAgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCitAQCAtMTMzNSw3ICsx MjMxLDYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5 cGUsCisgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKKyAgIGludCBuYXJnczsKKyAgIHN0cnVjdCB2YWx1 ZSAqKmFyZ3ZlYzsKKy0gIGludCBjb2RlOworICAgaW50IGl4OworICAgbG9uZyBtZW1fb2Zmc2V0 OworICAgc3RydWN0IHR5cGUgKiphcmdfdHlwZXM7CitAQCAtMTk3Niw4NCArMTg3MSw2IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICBj YXNlIE9QX0ZVTkNBTEw6CisgICAgICAgcmV0dXJuIGV2YWx1YXRlX2Z1bmNhbGwgKGV4cGVjdF90 eXBlLCBleHAsIHBvcywgbm9zaWRlKTsKKyAKKy0gICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVE X0FSR0xJU1Q6CistCistICAgICAgLyogUmVtZW1iZXIgdGhhdCBpbiBGNzcsIGZ1bmN0aW9ucywg c3Vic3RyaW5nIG9wcyBhbmQgCistICAgICAgICAgYXJyYXkgc3Vic2NyaXB0IG9wZXJhdGlvbnMg Y2Fubm90IGJlIGRpc2FtYmlndWF0ZWQgCistICAgICAgICAgYXQgcGFyc2UgdGltZS4gIFdlIGhh dmUgbWFkZSBhbGwgYXJyYXkgc3Vic2NyaXB0IG9wZXJhdGlvbnMsIAorLSAgICAgICAgIHN1YnN0 cmluZyBvcGVyYXRpb25zIGFzIHdlbGwgYXMgZnVuY3Rpb24gY2FsbHMgIGNvbWUgaGVyZSAKKy0g ICAgICAgICBhbmQgd2Ugbm93IGhhdmUgdG8gZGlzY292ZXIgd2hhdCB0aGUgaGVjayB0aGlzIHRo aW5nIGFjdHVhbGx5IHdhcy4KKy0gICAgICAgICBJZiBpdCBpcyBhIGZ1bmN0aW9uLCB3ZSBwcm9j ZXNzIGp1c3QgYXMgaWYgd2UgZ290IGFuIE9QX0ZVTkNBTEwuICAqLworLQorLSAgICAgIG5hcmdz ID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1twYyArIDFdLmxvbmdjb25zdCk7CistICAgICAg KCpwb3MpICs9IDI7CistCistICAgICAgLyogRmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUg d2UgYXJlIGRlYWxpbmcgd2l0aC4gICovCistICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAo bnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7CistICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHZhbHVlX3R5cGUgKGFyZzEpKTsKKy0gICAgICBjb2RlID0gdHlwZS0+Y29kZSAoKTsKKy0KKy0g ICAgICBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSKQorLQl7CistCSAgLyogRm9ydHJhbiBhbHdh eXMgcGFzc2VzIHZhcmlhYmxlIHRvIHN1YnJvdXRpbmVzIGFzIHBvaW50ZXIuCistCSAgICAgU28g d2UgbmVlZCB0byBsb29rIGludG8gaXRzIHRhcmdldCB0eXBlIHRvIHNlZSBpZiBpdCBpcworLQkg ICAgIGFycmF5LCBzdHJpbmcgb3IgZnVuY3Rpb24uICBJZiBpdCBpcywgd2UgbmVlZCB0byBzd2l0 Y2gKKy0JICAgICB0byB0aGUgdGFyZ2V0IHZhbHVlIHRoZSBvcmlnaW5hbCBvbmUgcG9pbnRzIHRv LiAgKi8gCistCSAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSkpOworLQorLQkgIGlmICh0YXJnZXRfdHlwZS0+Y29kZSAoKSA9 PSBUWVBFX0NPREVfQVJSQVkKKy0JICAgICAgfHwgdGFyZ2V0X3R5cGUtPmNvZGUgKCkgPT0gVFlQ RV9DT0RFX1NUUklORworLQkgICAgICB8fCB0YXJnZXRfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NP REVfRlVOQykKKy0JICAgIHsKKy0JICAgICAgYXJnMSA9IHZhbHVlX2luZCAoYXJnMSk7CistCSAg ICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CistCSAgICAgIGNv ZGUgPSB0eXBlLT5jb2RlICgpOworLQkgICAgfQorLQl9IAorLQorLSAgICAgIHN3aXRjaCAoY29k ZSkKKy0JeworLQljYXNlIFRZUEVfQ09ERV9BUlJBWToKKy0JY2FzZSBUWVBFX0NPREVfU1RSSU5H OgorLQkgIHJldHVybiBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbmFy Z3MsIG5vc2lkZSk7CistCistCWNhc2UgVFlQRV9DT0RFX1BUUjoKKy0JY2FzZSBUWVBFX0NPREVf RlVOQzoKKy0JY2FzZSBUWVBFX0NPREVfSU5URVJOQUxfRlVOQ1RJT046CistCSAgLyogSXQncyBh IGZ1bmN0aW9uIGNhbGwuICAqLworLQkgIC8qIEFsbG9jYXRlIGFyZyB2ZWN0b3IsIGluY2x1ZGlu ZyBzcGFjZSBmb3IgdGhlIGZ1bmN0aW9uIHRvIGJlCistCSAgICAgY2FsbGVkIGluIGFyZ3ZlY1sw XSBhbmQgYSB0ZXJtaW5hdGluZyBOVUxMLiAgKi8KKy0JICBhcmd2ZWMgPSAoc3RydWN0IHZhbHVl ICoqKQorLQkgICAgYWxsb2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZSAqKSAqIChuYXJncyArIDIp KTsKKy0JICBhcmd2ZWNbMF0gPSBhcmcxOworLQkgIHRlbSA9IDE7CistCSAgZm9yICg7IHRlbSA8 PSBuYXJnczsgdGVtKyspCistCSAgICB7CistCSAgICAgIGFyZ3ZlY1t0ZW1dID0gZXZhbHVhdGVf c3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOworLQkgICAgICAvKiBBcmd1 bWVudHMgaW4gRm9ydHJhbiBhcmUgcGFzc2VkIGJ5IGFkZHJlc3MuICBDb2VyY2UgdGhlCistCQkg YXJndW1lbnRzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdmFsdWVfYXJnX2NvZXJjZSBhcyBvdGhlcndp c2UKKy0JCSB0aGUgY2FsbCB0byBtYWxsb2MgdG8gcGxhY2UgdGhlIG5vbi1sdmFsdWUgcGFyYW1l dGVycyBpbgorLQkJIHRhcmdldCBtZW1vcnkgaXMgaGl0IGJ5IHRoaXMgRm9ydHJhbiBzcGVjaWZp YyBsb2dpYy4gIFRoaXMKKy0JCSByZXN1bHRzIGluIG1hbGxvYyBiZWluZyBjYWxsZWQgd2l0aCBh IHBvaW50ZXIgdG8gYW4gaW50ZWdlcgorLQkJIGZvbGxvd2VkIGJ5IGFuIGF0dGVtcHQgdG8gbWFs bG9jIHRoZSBhcmd1bWVudHMgdG8gbWFsbG9jIGluCistCQkgdGFyZ2V0IG1lbW9yeS4gIEluZmlu aXRlIHJlY3Vyc2lvbiBlbnN1ZXMuICAqLworLQkgICAgICBpZiAoY29kZSA9PSBUWVBFX0NPREVf UFRSIHx8IGNvZGUgPT0gVFlQRV9DT0RFX0ZVTkMpCistCQl7CistCQkgIGJvb2wgaXNfYXJ0aWZp Y2lhbAorLQkJICAgID0gVFlQRV9GSUVMRF9BUlRJRklDSUFMICh2YWx1ZV90eXBlIChhcmcxKSwg dGVtIC0gMSk7CistCQkgIGFyZ3ZlY1t0ZW1dID0gZm9ydHJhbl9hcmd1bWVudF9jb252ZXJ0IChh cmd2ZWNbdGVtXSwKKy0JCQkJCQkJICBpc19hcnRpZmljaWFsKTsKKy0JCX0KKy0JICAgIH0KKy0J ICBhcmd2ZWNbdGVtXSA9IDA7CS8qIHNpZ25hbCBlbmQgb2YgYXJnbGlzdCAqLworLQkgIGlmIChu b3NpZGUgPT0gRVZBTF9TS0lQKQorLQkgICAgcmV0dXJuIGV2YWxfc2tpcF92YWx1ZSAoZXhwKTsK Ky0JICByZXR1cm4gZXZhbF9jYWxsIChleHAsIG5vc2lkZSwgbmFyZ3MsIGFyZ3ZlYywgTlVMTCwg ZXhwZWN0X3R5cGUpOworLQorLQlkZWZhdWx0OgorLQkgIGVycm9yIChfKCJDYW5ub3QgcGVyZm9y bSBzdWJzdHJpbmcgb24gdGhpcyB0eXBlIikpOworLQl9CistCisgICAgIGNhc2UgT1BfQ09NUExF WDoKKyAgICAgICAvKiBXZSBoYXZlIGEgY29tcGxleCBudW1iZXIsIFRoZXJlIHNob3VsZCBiZSAy IGZsb2F0aW5nIAorICAgICAgICAgIHBvaW50IG51bWJlcnMgdGhhdCBjb21wb3NlIGl0LiAgKi8K K0BAIC0zMzQ2LDI3ICszMTYzLDMgQEAgcGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50 IGxlbmd0aCkKKyAgICAgZXJyb3IgKF8oIkludGVybmFsIGVycm9yIGluIGV2YWxfdHlwZS4iKSk7 CisgICByZXR1cm4gZXhwci0+ZWx0c1sxXS50eXBlOworIH0KKy0KKy0vKiBSZXR1cm4gdGhlIG51 bWJlciBvZiBkaW1lbnNpb25zIGZvciBhIEZvcnRyYW4gYXJyYXkgb3Igc3RyaW5nLiAgKi8KKy0K Ky1pbnQKKy1jYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKKy17 CistICBpbnQgbmRpbWVuID0gMTsKKy0gIHN0cnVjdCB0eXBlICp0bXBfdHlwZTsKKy0KKy0gIGlm ICgoYXJyYXlfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSSU5HKSkKKy0gICAgcmV0dXJu IDE7CistCistICBpZiAoKGFycmF5X3R5cGUtPmNvZGUgKCkgIT0gVFlQRV9DT0RFX0FSUkFZKSkK Ky0gICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBhIG5vbi1hcnJheSB0eXBl IikpOworLQorLSAgdG1wX3R5cGUgPSBhcnJheV90eXBlOworLQorLSAgd2hpbGUgKCh0bXBfdHlw ZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSkpCistICAgIHsKKy0gICAgICBpZiAodG1w X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0FSUkFZKQorLQkrK25kaW1lbjsKKy0gICAgfQor LSAgcmV0dXJuIG5kaW1lbjsKKy19CitkaWZmIC0tZ2l0IGEvZ2RiL2V4cHByaW50LmMgYi9nZGIv ZXhwcHJpbnQuYworLS0tIGEvZ2RiL2V4cHByaW50LmMKKysrKyBiL2dkYi9leHBwcmludC5jCitA QCAtNTMsNiArNTMsMjUgQEAgcHJpbnRfc3ViZXhwIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBp bnQgKnBvcywKKyAgIGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfZXhwX2Rlc2MtPnByaW50X3N1YmV4 cCAoZXhwLCBwb3MsIHN0cmVhbSwgcHJlYyk7CisgfQorIAorKy8qIFNlZSBwYXJzZXItZGVmcy5o LiAgKi8KKysKKyt2b2lkCisrcHJpbnRfc3ViZXhwX2Z1bmNhbGwgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCAqcG9zLAorKwkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKKyt7Cisr ICAoKnBvcykgKz0gMjsKKysgIHVuc2lnbmVkIG5hcmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ ZWx0c1sqcG9zXS5sb25nY29uc3QpOworKyAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFt LCBQUkVDX1NVRkZJWCk7CisrICBmcHV0c19maWx0ZXJlZCAoIiAoIiwgc3RyZWFtKTsKKysgIGZv ciAodW5zaWduZWQgdGVtID0gMDsgdGVtIDwgbmFyZ3M7IHRlbSsrKQorKyAgICB7CisrICAgICAg aWYgKHRlbSAhPSAwKQorKwlmcHV0c19maWx0ZXJlZCAoIiwgIiwgc3RyZWFtKTsKKysgICAgICBw cmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEpOworKyAgICB9 CisrICBmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOworK30KKysKKyAvKiBTdGFuZGFyZCBp bXBsZW1lbnRhdGlvbiBvZiBwcmludF9zdWJleHAgZm9yIHVzZSBpbiBsYW5ndWFnZV9kZWZuCisg ICAgdmVjdG9ycy4gICovCisgdm9pZAorQEAgLTE4NywxOCArMjA2LDcgQEAgcHJpbnRfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAgICAgICByZXR1 cm47CisgCisgICAgIGNhc2UgT1BfRlVOQ0FMTDoKKy0gICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1J TkVEX0FSR0xJU1Q6CistICAgICAgKCpwb3MpICs9IDI7CistICAgICAgbmFyZ3MgPSBsb25nZXN0 X3RvX2ludCAoZXhwLT5lbHRzW3BjICsgMV0ubG9uZ2NvbnN0KTsKKy0gICAgICBwcmludF9zdWJl eHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfU1VGRklYKTsKKy0gICAgICBmcHV0c19maWx0ZXJl ZCAoIiAoIiwgc3RyZWFtKTsKKy0gICAgICBmb3IgKHRlbSA9IDA7IHRlbSA8IG5hcmdzOyB0ZW0r KykKKy0JeworLQkgIGlmICh0ZW0gIT0gMCkKKy0JICAgIGZwdXRzX2ZpbHRlcmVkICgiLCAiLCBz dHJlYW0pOworLQkgIHByaW50X3N1YmV4cCAoZXhwLCBwb3MsIHN0cmVhbSwgUFJFQ19BQk9WRV9D T01NQSk7CistCX0KKy0gICAgICBmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOworKyAgICAg IHByaW50X3N1YmV4cF9mdW5jYWxsIChleHAsIHBvcywgc3RyZWFtKTsKKyAgICAgICByZXR1cm47 CisgCisgICAgIGNhc2UgT1BfTkFNRToKK0BAIC03OTYsNiArODA0LDIyIEBAIGR1bXBfc3ViZXhw X2JvZHkgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCBlbHQpCisgICByZXR1cm4gZXhwLT5sYW5ndWFnZV9kZWZuLT5sYV9leHBfZGVzYy0+ZHVtcF9z dWJleHBfYm9keSAoZXhwLCBzdHJlYW0sIGVsdCk7CisgfQorIAorKy8qIFNlZSBwYXJzZXItZGVm cy5oLiAgKi8KKysKKytpbnQKKytkdW1wX3N1YmV4cF9ib2R5X2Z1bmNhbGwgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsCisrCQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgZWx0KQorK3sK KysgIGludCBuYXJncyA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbZWx0XS5sb25nY29uc3Qp OworKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiTnVtYmVyIG9mIGFyZ3M6ICVkIiwgbmFy Z3MpOworKyAgZWx0ICs9IDI7CisrCisrICBmb3IgKGludCBpID0gMTsgaSA8PSBuYXJncyArIDE7 IGkrKykKKysgICAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworKworKyAg cmV0dXJuIGVsdDsKKyt9CisrCisgLyogRGVmYXVsdCB2YWx1ZSBmb3Igc3ViZXhwX2JvZHkgaW4g ZXhwX2Rlc2NyaXB0b3IgdmVjdG9yLiAgKi8KKyAKKyBpbnQKK0BAIC05MzEsMTggKzk1NSw3IEBA IGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCisgICAg ICAgZWx0ICs9IDI7CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgT1BfRlVOQ0FMTDoKKy0gICAg Y2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1Q6CistICAgICAgeworLQlpbnQgaSwgbmFy Z3M7CistCistCW5hcmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1tlbHRdLmxvbmdjb25z dCk7CistCistCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIk51bWJlciBvZiBhcmdzOiAlZCIs IG5hcmdzKTsKKy0JZWx0ICs9IDI7CistCistCWZvciAoaSA9IDE7IGkgPD0gbmFyZ3MgKyAxOyBp KyspCistCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOworLSAgICAgIH0K KysgICAgICBlbHQgPSBkdW1wX3N1YmV4cF9ib2R5X2Z1bmNhbGwgKGV4cCwgc3RyZWFtLCBlbHQp OworICAgICAgIGJyZWFrOworICAgICBjYXNlIE9QX0FSUkFZOgorICAgICAgIHsKK2RpZmYgLS1n aXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24uaAorLS0tIGEvZ2RiL2V4cHJl c3Npb24uaAorKysrIGIvZ2RiL2V4cHJlc3Npb24uaAorQEAgLTE1NSw2ICsxNTUsMTggQEAgZW51 bSBub3NpZGUKKyBleHRlcm4gc3RydWN0IHZhbHVlICpldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQK KyAgIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQgKiwgZW51bSBub3Np ZGUpOworIAorKy8qIEV2YWx1YXRlIGEgZnVuY3Rpb24gY2FsbC4gIFRoZSBmdW5jdGlvbiB0byBi ZSBjYWxsZWQgaXMgaW4gQVJHVkVDWzBdIGFuZAorKyAgIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRv IHRoZSBmdW5jdGlvbiBhcmUgaW4gQVJHVkVDWzEuLk5BUkdTXS4KKysgICBGVU5DVElPTl9OQU1F IGlzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiwgaWYga25vd24uCisrICAgREVGQVVMVF9SRVRV Uk5fVFlQRSBpcyB1c2VkIGFzIHRoZSBmdW5jdGlvbidzIHJldHVybiB0eXBlIGlmIHRoZSByZXR1 cm4KKysgICB0eXBlIGlzIHVua25vd24uICAqLworKworK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKmV2 YWx1YXRlX3N1YmV4cF9kb19jYWxsIChleHByZXNzaW9uICpleHAsCisrCQkJCQkgICAgICBlbnVt IG5vc2lkZSBub3NpZGUsCisrCQkJCQkgICAgICBpbnQgbmFyZ3MsIHZhbHVlICoqYXJndmVjLAor KwkJCQkJICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKKysJCQkJCSAgICAgIHR5cGUg KmRlZmF1bHRfcmV0dXJuX3R5cGUpOworKworIC8qIEZyb20gZXhwcHJpbnQuYyAqLworIAorIGV4 dGVybiB2b2lkIHByaW50X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1 aV9maWxlICopOworZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxhbmcuYworLS0t IGEvZ2RiL2YtbGFuZy5jCisrKysgYi9nZGIvZi1sYW5nLmMKK0BAIC0xMTQsNiArMTE0LDEzNCBA QCBlbnVtIGZfcHJpbWl0aXZlX3R5cGVzIHsKKyAgIG5yX2ZfcHJpbWl0aXZlX3R5cGVzCisgfTsK KyAKKysvKiBDYWxsZWQgZnJvbSBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IHRvIHRha2UgYSBzbGlj ZSBvZiBhbiBhcnJheSBvciBhCisrICAgc3RyaW5nLiAgQVJSQVkgaXMgdGhlIGFycmF5IG9yIHN0 cmluZyB0byBiZSBhY2Nlc3NlZC4gIEVYUCwgUE9TLCBhbmQKKysgICBOT1NJREUgYXJlIGFzIGZv ciBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQuICBSZXR1cm4gYSB2YWx1ZSB0aGF0IGlzIGEKKysg ICBzbGljZSBvZiB0aGUgYXJyYXkuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK3Zh bHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKKysJCSAgICBzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQorK3sKKysgIGludCBw YyA9ICgqcG9zKSArIDE7CisrICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgIHN0 cnVjdCB0eXBlICpyYW5nZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KS0+aW5k ZXhfdHlwZSAoKSk7CisrICBlbnVtIHJhbmdlX3R5cGUgcmFuZ2VfdHlwZQorKyAgICA9IChlbnVt IHJhbmdlX3R5cGUpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7Cisr CisrICAqcG9zICs9IDM7CisrCisrICBpZiAocmFuZ2VfdHlwZSA9PSBMT1dfQk9VTkRfREVGQVVM VCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKKysgICAgbG93X2JvdW5kID0g cmFuZ2UtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKTsKKysgIGVsc2UKKysgICAgbG93X2Jv dW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywg bm9zaWRlKSk7CisrCisrICBpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwg cmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCisrICAgIGhpZ2hfYm91bmQgPSByYW5n ZS0+Ym91bmRzICgpLT5oaWdoLmNvbnN0X3ZhbCAoKTsKKysgIGVsc2UKKysgICAgaGlnaF9ib3Vu ZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5v c2lkZSkpOworKworKyAgcmV0dXJuIHZhbHVlX3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdo X2JvdW5kIC0gbG93X2JvdW5kICsgMSk7CisrfQorKworKy8qIEhlbHBlciBmb3Igc2tpcHBpbmcg YWxsIHRoZSBhcmd1bWVudHMgaW4gYW4gdW5kZXRlcm1pbmVkIGFyZ3VtZW50IGxpc3QuCisrICAg VGhpcyBmdW5jdGlvbiB3YXMgZGVzaWduZWQgZm9yIHVzZSBpbiB0aGUgT1BfRjc3X1VOREVURVJN SU5FRF9BUkdMSVNUCisrICAgY2FzZSBvZiBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgYXMgbXVs dGlwbGUsIGJ1dCBub3QgYWxsLCBjb2RlIHBhdGhzCisrICAgcmVxdWlyZSBhIGdlbmVyaWMgc2tp cC4gICovCisrCisrc3RhdGljIHZvaWQKKytza2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChpbnQg bmFyZ3MsIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAorKwkJCSAgIGVudW0gbm9z aWRlIG5vc2lkZSkKKyt7CisrICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyArK2kpCisrICAg IGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7CisrfQorKworKy8q IFJldHVybiB0aGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMgZm9yIGEgRm9ydHJhbiBhcnJheSBvciBz dHJpbmcuICAqLworKworK2ludAorK2NhbGNfZjc3X2FycmF5X2RpbXMgKHN0cnVjdCB0eXBlICph cnJheV90eXBlKQorK3sKKysgIGludCBuZGltZW4gPSAxOworKyAgc3RydWN0IHR5cGUgKnRtcF90 eXBlOworKworKyAgaWYgKChhcnJheV90eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9TVFJJTkcp KQorKyAgICByZXR1cm4gMTsKKysKKysgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSAhPSBUWVBF X0NPREVfQVJSQVkpKQorKyAgICBlcnJvciAoXygiQ2FuJ3QgZ2V0IGRpbWVuc2lvbnMgZm9yIGEg bm9uLWFycmF5IHR5cGUiKSk7CisrCisrICB0bXBfdHlwZSA9IGFycmF5X3R5cGU7CisrCisrICB3 aGlsZSAoKHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKSkKKysgICAgewor KyAgICAgIGlmICh0bXBfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfQVJSQVkpCisrCSsrbmRp bWVuOworKyAgICB9CisrICByZXR1cm4gbmRpbWVuOworK30KKysKKysvKiBDYWxsZWQgZnJvbSBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgdG8gcGVyZm9ybSBhcnJheSBpbmRleGluZywgYW5kCisr ICAgc3ViLXJhbmdlIGV4dHJhY3Rpb24sIGZvciBGb3J0cmFuLiAgQXMgd2VsbCBhcyBhcnJheXMg dGhpcyBmdW5jdGlvbgorKyAgIGFsc28gaGFuZGxlcyBzdHJpbmdzIGFzIHRoZXkgY2FuIGJlIHRy ZWF0ZWQgbGlrZSBhcnJheXMgb2YgY2hhcmFjdGVycy4KKysgICBBUlJBWSBpcyB0aGUgYXJyYXkg b3Igc3RyaW5nIGJlaW5nIGFjY2Vzc2VkLiAgRVhQLCBQT1MsIGFuZCBOT1NJREUgYXJlCisrICAg YXMgZm9yIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCwgYW5kIE5BUkdTIGlzIHRoZSBudW1iZXIg b2YgYXJndW1lbnRzCisrICAgaW4gdGhpcyBhY2Nlc3MgKGUuZy4gJ2FycmF5ICgxLDIsMyknIHdv dWxkIGJlIE5BUkdTIDMpLiAgKi8KKysKKytzdGF0aWMgc3RydWN0IHZhbHVlICoKKytmb3J0cmFu X3ZhbHVlX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLAorKwkJCWludCAqcG9zLCBpbnQgbmFyZ3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKKyt7Cisr ICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5HRSkKKysgICAgcmV0dXJuIHZh bHVlX2Y5MF9zdWJhcnJheSAoYXJyYXksIGV4cCwgcG9zLCBub3NpZGUpOworKworKyAgaWYgKG5v c2lkZSA9PSBFVkFMX1NLSVApCisrICAgIHsKKysgICAgICBza2lwX3VuZGV0ZXJtaW5lZF9hcmds aXN0IChuYXJncywgZXhwLCBwb3MsIG5vc2lkZSk7CisrICAgICAgLyogUmV0dXJuIHRoZSBkdW1t eSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLworKyAgICAgIHJldHVybiBhcnJheTsK KysgICAgfQorKworKyAgTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107 CisrICBpbnQgbmRpbWVuc2lvbnMgPSAxOworKyAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190 eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOworKworKyAgaWYgKG5hcmdzID4gTUFYX0ZPUlRS QU5fRElNUykKKysgICAgZXJyb3IgKF8oIlRvbyBtYW55IHN1YnNjcmlwdHMgZm9yIEY3NyAoJWQg TWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsKKysKKysgIG5kaW1lbnNpb25zID0gY2FsY19mNzdf YXJyYXlfZGltcyAodHlwZSk7CisrCisrICBpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCisrICAg IGVycm9yIChfKCJXcm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIpKTsKKysKKysgIGdkYl9hc3Nl cnQgKG5hcmdzID4gMCk7CisrCisrICAvKiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdh bCBhcnJheSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBsZXQgdXMKKysgICAgIGFjdHVhbGx5IGZpbmQg b3V0IHdoZXJlIHRoaXMgZWxlbWVudCBleGlzdHMgaW4gdGhlIGFycmF5LiAgKi8KKysKKysgIC8q IFRha2UgYXJyYXkgaW5kaWNlcyBsZWZ0IHRvIHJpZ2h0LiAgKi8KKysgIGZvciAoaW50IGkgPSAw OyBpIDwgbmFyZ3M7IGkrKykKKysgICAgeworKyAgICAgIC8qIEV2YWx1YXRlIGVhY2ggc3Vic2Ny aXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBGNzcuICAqLworKyAgICAgIHZhbHVl ICphcmcyID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUp OworKworKyAgICAgIC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJheS4gICovCisrICAgICAg c3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNfbG9uZyAoYXJnMik7CisrICAgIH0KKysKKysg IC8qIEludGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICov CisrICBmb3IgKGludCBpID0gbmFyZ3M7IGkgPiAwOyBpLS0pCisrICAgIHsKKysgICAgICBzdHJ1 Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7 CisrICAgICAgTE9OR0VTVCBpbmRleCA9IHN1YnNjcmlwdF9hcnJheVtpIC0gMV07CisrCisrICAg ICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKKysJCQkJ CWY3N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOworKyAgICB9CisrCisrICByZXR1cm4g YXJyYXk7CisrfQorKworIC8qIFNwZWNpYWwgZXhwcmVzc2lvbiBldmFsdWF0aW9uIGNhc2VzIGZv ciBGb3J0cmFuLiAgKi8KKyAKKyBzdGF0aWMgc3RydWN0IHZhbHVlICoKK0BAIC0yODUsNiArNDEz LDg3IEBAIGV2YWx1YXRlX3N1YmV4cF9mIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsIHN0cnVj dCBleHByZXNzaW9uICpleHAsCisgCQkJCSAgIFRZUEVfTEVOR1RIICh0eXBlKSk7CisgICAgICAg cmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5i dWlsdGluX2ludCwKKyAJCQkJIFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkp OworKworKworKyAgICBjYXNlIE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVDoKKysgICAgICAv KiBSZW1lbWJlciB0aGF0IGluIEY3NywgZnVuY3Rpb25zLCBzdWJzdHJpbmcgb3BzIGFuZCBhcnJh eSBzdWJzY3JpcHQKKysgICAgICAgICBvcGVyYXRpb25zIGNhbm5vdCBiZSBkaXNhbWJpZ3VhdGVk IGF0IHBhcnNlIHRpbWUuICBXZSBoYXZlIG1hZGUKKysgICAgICAgICBhbGwgYXJyYXkgc3Vic2Ny aXB0IG9wZXJhdGlvbnMsIHN1YnN0cmluZyBvcGVyYXRpb25zIGFzIHdlbGwgYXMKKysgICAgICAg ICBmdW5jdGlvbiBjYWxscyBjb21lIGhlcmUgYW5kIHdlIG5vdyBoYXZlIHRvIGRpc2NvdmVyIHdo YXQgdGhlIGhlY2sKKysgICAgICAgICB0aGlzIHRoaW5nIGFjdHVhbGx5IHdhcy4gIElmIGl0IGlz IGEgZnVuY3Rpb24sIHdlIHByb2Nlc3MganVzdCBhcworKyAgICAgICAgIGlmIHdlIGdvdCBhbiBP UF9GVU5DQUxMLiAgKi8KKysgICAgICBpbnQgbmFyZ3MgPSBsb25nZXN0X3RvX2ludCAoZXhwLT5l bHRzW3BjICsgMV0ubG9uZ2NvbnN0KTsKKysgICAgICAoKnBvcykgKz0gMjsKKysKKysgICAgICAv KiBGaXJzdCBkZXRlcm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8K KysgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRl KTsKKysgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworKyAg ICAgIGVudW0gdHlwZV9jb2RlIGNvZGUgPSB0eXBlLT5jb2RlICgpOworKworKyAgICAgIGlmIChj b2RlID09IFRZUEVfQ09ERV9QVFIpCisrCXsKKysJICAvKiBGb3J0cmFuIGFsd2F5cyBwYXNzZXMg dmFyaWFibGUgdG8gc3Vicm91dGluZXMgYXMgcG9pbnRlci4KKysJICAgICBTbyB3ZSBuZWVkIHRv IGxvb2sgaW50byBpdHMgdGFyZ2V0IHR5cGUgdG8gc2VlIGlmIGl0IGlzCisrCSAgICAgYXJyYXks IHN0cmluZyBvciBmdW5jdGlvbi4gIElmIGl0IGlzLCB3ZSBuZWVkIHRvIHN3aXRjaAorKwkgICAg IHRvIHRoZSB0YXJnZXQgdmFsdWUgdGhlIG9yaWdpbmFsIG9uZSBwb2ludHMgdG8uICAqLworKwkg IHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKTsKKysKKysJICBpZiAodGFyZ2V0X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RF X0FSUkFZCisrCSAgICAgIHx8IHRhcmdldF90eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9TVFJJ TkcKKysJICAgICAgfHwgdGFyZ2V0X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0ZVTkMpCisr CSAgICB7CisrCSAgICAgIGFyZzEgPSB2YWx1ZV9pbmQgKGFyZzEpOworKwkgICAgICB0eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworKwkgICAgICBjb2RlID0gdHlwZS0+ Y29kZSAoKTsKKysJICAgIH0KKysJfQorKworKyAgICAgIHN3aXRjaCAoY29kZSkKKysJeworKwlj YXNlIFRZUEVfQ09ERV9BUlJBWToKKysJY2FzZSBUWVBFX0NPREVfU1RSSU5HOgorKwkgIHJldHVy biBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7 CisrCisrCWNhc2UgVFlQRV9DT0RFX1BUUjoKKysJY2FzZSBUWVBFX0NPREVfRlVOQzoKKysJY2Fz ZSBUWVBFX0NPREVfSU5URVJOQUxfRlVOQ1RJT046CisrCSAgeworKwkgICAgLyogSXQncyBhIGZ1 bmN0aW9uIGNhbGwuICBBbGxvY2F0ZSBhcmcgdmVjdG9yLCBpbmNsdWRpbmcKKysJICAgIHNwYWNl IGZvciB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGluIGFyZ3ZlY1swXSBhbmQgYQorKwkgICAg dGVybWluYXRpb24gTlVMTC4gICovCisrCSAgICBzdHJ1Y3QgdmFsdWUgKiphcmd2ZWMgPSAoc3Ry dWN0IHZhbHVlICoqKQorKwkgICAgICBhbGxvY2EgKHNpemVvZiAoc3RydWN0IHZhbHVlICopICog KG5hcmdzICsgMikpOworKwkgICAgYXJndmVjWzBdID0gYXJnMTsKKysJICAgIGludCB0ZW0gPSAx OworKwkgICAgZm9yICg7IHRlbSA8PSBuYXJnczsgdGVtKyspCisrCSAgICAgIHsKKysJCWFyZ3Zl Y1t0ZW1dID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUp OworKwkJLyogQXJndW1lbnRzIGluIEZvcnRyYW4gYXJlIHBhc3NlZCBieSBhZGRyZXNzLiAgQ29l cmNlIHRoZQorKwkJICAgYXJndW1lbnRzIGhlcmUgcmF0aGVyIHRoYW4gaW4gdmFsdWVfYXJnX2Nv ZXJjZSBhcworKwkJICAgb3RoZXJ3aXNlIHRoZSBjYWxsIHRvIG1hbGxvYyB0byBwbGFjZSB0aGUg bm9uLWx2YWx1ZQorKwkJICAgcGFyYW1ldGVycyBpbiB0YXJnZXQgbWVtb3J5IGlzIGhpdCBieSB0 aGlzIEZvcnRyYW4KKysJCSAgIHNwZWNpZmljIGxvZ2ljLiAgVGhpcyByZXN1bHRzIGluIG1hbGxv YyBiZWluZyBjYWxsZWQKKysJCSAgIHdpdGggYSBwb2ludGVyIHRvIGFuIGludGVnZXIgZm9sbG93 ZWQgYnkgYW4gYXR0ZW1wdCB0bworKwkJICAgbWFsbG9jIHRoZSBhcmd1bWVudHMgdG8gbWFsbG9j IGluIHRhcmdldCBtZW1vcnkuCisrCQkgICBJbmZpbml0ZSByZWN1cnNpb24gZW5zdWVzLiAgKi8K KysJCWlmIChjb2RlID09IFRZUEVfQ09ERV9QVFIgfHwgY29kZSA9PSBUWVBFX0NPREVfRlVOQykK KysJCSAgeworKwkJICAgIGJvb2wgaXNfYXJ0aWZpY2lhbAorKwkJICAgICAgPSBUWVBFX0ZJRUxE X0FSVElGSUNJQUwgKHZhbHVlX3R5cGUgKGFyZzEpLCB0ZW0gLSAxKTsKKysJCSAgICBhcmd2ZWNb dGVtXSA9IGZvcnRyYW5fYXJndW1lbnRfY29udmVydCAoYXJndmVjW3RlbV0sCisrCQkJCQkJCSAg ICBpc19hcnRpZmljaWFsKTsKKysJCSAgfQorKwkgICAgICB9CisrCSAgICBhcmd2ZWNbdGVtXSA9 IDA7CS8qIHNpZ25hbCBlbmQgb2YgYXJnbGlzdCAqLworKwkgICAgaWYgKG5vc2lkZSA9PSBFVkFM X1NLSVApCisrCSAgICAgIHJldHVybiBldmFsX3NraXBfdmFsdWUgKGV4cCk7CisrCSAgICByZXR1 cm4gZXZhbHVhdGVfc3ViZXhwX2RvX2NhbGwgKGV4cCwgbm9zaWRlLCBuYXJncywgYXJndmVjLCBO VUxMLAorKwkJCQkJICAgIGV4cGVjdF90eXBlKTsKKysJICB9CisrCisrCWRlZmF1bHQ6CisrCSAg ZXJyb3IgKF8oIkNhbm5vdCBwZXJmb3JtIHN1YnN0cmluZyBvbiB0aGlzIHR5cGUiKSk7CisrCX0K KyAgICAgfQorIAorICAgLyogU2hvdWxkIGJlIHVucmVhY2hhYmxlLiAgKi8KK0BAIC0zMTgsNiAr NTI3LDExIEBAIG9wZXJhdG9yX2xlbmd0aF9mIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgcGMsIGludCAqb3BsZW5wLAorICAgICAgIG9wbGVuID0gMTsKKyAgICAgICBhcmdzID0g MjsKKyAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJ U1Q6CisrICAgICAgb3BsZW4gPSAzOworKyAgICAgIGFyZ3MgPSAxICsgbG9uZ2VzdF90b19pbnQg KGV4cC0+ZWx0c1twYyAtIDJdLmxvbmdjb25zdCk7CisrICAgICAgYnJlYWs7CisgICAgIH0KKyAK KyAgICpvcGxlbnAgPSBvcGxlbjsKK0BAIC0zOTAsNiArNjA0LDEwIEBAIHByaW50X3N1YmV4cF9m IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKKyAgICAgY2FzZSBCSU5PUF9GT1JU UkFOX01PRFVMTzoKKyAgICAgICBwcmludF9iaW5vcF9zdWJleHBfZiAoZXhwLCBwb3MsIHN0cmVh bSwgcHJlYywgIk1PRFVMTyIpOworICAgICAgIHJldHVybjsKKysKKysgICAgY2FzZSBPUF9GNzdf VU5ERVRFUk1JTkVEX0FSR0xJU1Q6CisrICAgICAgcHJpbnRfc3ViZXhwX2Z1bmNhbGwgKGV4cCwg cG9zLCBzdHJlYW0pOworKyAgICAgIHJldHVybjsKKyAgICAgfQorIH0KKyAKK0BAIC00MzIsNiAr NjUwLDkgQEAgZHVtcF9zdWJleHBfYm9keV9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorICAg ICBjYXNlIEJJTk9QX0ZPUlRSQU5fTU9EVUxPOgorICAgICAgIG9wZXJhdG9yX2xlbmd0aF9mIChl eHAsIChlbHQgKyAxKSwgJm9wbGVuLCAmbmFyZ3MpOworICAgICAgIGJyZWFrOworKworKyAgICBj YXNlIE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVDoKKysgICAgICByZXR1cm4gZHVtcF9zdWJl eHBfYm9keV9mdW5jYWxsIChleHAsIHN0cmVhbSwgZWx0KTsKKyAgICAgfQorIAorICAgZWx0ICs9 IG9wbGVuOworZGlmZiAtLWdpdCBhL2dkYi9mb3J0cmFuLW9wZXJhdG9yLmRlZiBiL2dkYi9mb3J0 cmFuLW9wZXJhdG9yLmRlZgorLS0tIGEvZ2RiL2ZvcnRyYW4tb3BlcmF0b3IuZGVmCisrKysgYi9n ZGIvZm9ydHJhbi1vcGVyYXRvci5kZWYKK0BAIC0xNyw2ICsxNywxNCBAQAorICAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorKy8qIFRoaXMgaXMgRVhBQ1RMWSBsaWtlIE9QX0ZV TkNBTEwgYnV0IGlzIHNlbWFudGljYWxseSBkaWZmZXJlbnQuCisrICAgSW4gRjc3LCBhcnJheSBz dWJzY3JpcHQgZXhwcmVzc2lvbnMsIHN1YnN0cmluZyBleHByZXNzaW9ucyBhbmQKKysgICBmdW5j dGlvbiBjYWxscyBhcmUgYWxsIGV4YWN0bHkgdGhlIHNhbWUgc3ludGFjdGljYWxseS4gIFRoZXkK KysgICBtYXkgb25seSBiZSBkaXNhbWJpZ3VhdGVkIGF0IHJ1bnRpbWUuICBUaHVzIHRoaXMgb3Bl cmF0b3IsCisrICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgd2UgaGF2ZSBmb3VuZCBzb21ldGhpbmcg b2YgdGhlIGZvcm0KKysgICA8bmFtZT4gKCA8c3R1ZmY+ICkuICAqLworK09QIChPUF9GNzdfVU5E RVRFUk1JTkVEX0FSR0xJU1QpCisrCisgLyogU2luZ2xlIG9wZXJhbmQgYnVpbHRpbnMuICAqLwor IE9QIChVTk9QX0ZPUlRSQU5fS0lORCkKKyBPUCAoVU5PUF9GT1JUUkFOX0ZMT09SKQorZGlmZiAt LWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKKy0tLSBhL2dkYi9wYXJzZS5jCisrKysg Yi9nZGIvcGFyc2UuYworQEAgLTgxNyw3ICs4MTcsNiBAQCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRh cmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9zLAorICAgICAgIGJy ZWFrOworIAorICAgICBjYXNlIE9QX0ZVTkNBTEw6CistICAgIGNhc2UgT1BfRjc3X1VOREVURVJN SU5FRF9BUkdMSVNUOgorICAgICAgIG9wbGVuID0gMzsKKyAgICAgICBhcmdzID0gMSArIGxvbmdl c3RfdG9faW50IChleHByLT5lbHRzW2VuZHBvcyAtIDJdLmxvbmdjb25zdCk7CisgICAgICAgYnJl YWs7CitkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlci1kZWZzLmggYi9nZGIvcGFyc2VyLWRlZnMuaAor LS0tIGEvZ2RiL3BhcnNlci1kZWZzLmgKKysrKyBiL2dkYi9wYXJzZXItZGVmcy5oCitAQCAtMzM4 LDYgKzMzOCwxMyBAQCBleHRlcm4gaW50IGR1bXBfc3ViZXhwIChzdHJ1Y3QgZXhwcmVzc2lvbiAq LCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQpOworIGV4dGVybiBpbnQgZHVtcF9zdWJleHBfYm9keV9z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgCisgCQkJCSAgICAgIHN0cnVjdCB1aV9maWxl ICosIGludCk7CisgCisrLyogRHVtcCAodG8gU1RSRUFNKSBhIGZ1bmN0aW9uIGNhbGwgbGlrZSBl eHByZXNzaW9uIGF0IHBvc2l0aW9uIEVMVCBpbiB0aGUKKysgICBleHByZXNzaW9uIGFycmF5IEVY UC4gIFJldHVybiBhIG5ldyB2YWx1ZSBmb3IgRUxUIGp1c3QgYWZ0ZXIgdGhlCisrICAgZnVuY3Rp b24gY2FsbCBleHByZXNzaW9uLiAgKi8KKysKKytleHRlcm4gaW50IGR1bXBfc3ViZXhwX2JvZHlf ZnVuY2FsbCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKysJCQkJICAgICBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgZWx0KTsKKysKKyBleHRlcm4gdm9pZCBvcGVyYXRvcl9sZW5ndGggKGNv bnN0IHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICosIGludCAqKTsKKyAKKyBleHRlcm4g dm9pZCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICos IGludCwgaW50ICosCitAQCAtNDQwLDYgKzQ0NywxNSBAQCBleHRlcm4gdm9pZCBwcmludF9zdWJl eHAgKHN0cnVjdCBleHByZXNzaW9uICosIGludCAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAorIGV4dGVy biB2b2lkIHByaW50X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgaW50ICos IAorIAkJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqLCBlbnVtIHByZWNlZGVuY2UpOworIAorKy8qIFBy aW50IGEgZnVuY3Rpb24gY2FsbCBsaWtlIGV4cHJlc3Npb24gdG8gU1RSRUFNLiAgVGhpcyBpcyBj YWxsZWQgYXMgYQorKyAgIGhlbHBlciBmdW5jdGlvbiBieSB3aGljaCBwb2ludCB0aGUgZXhwcmVz c2lvbiBub2RlIGlkZW50aWZ5aW5nIHRoaXMgYXMgYQorKyAgIGZ1bmN0aW9uIGNhbGwgaGFzIGFs cmVhZHkgYmVlbiBzdHJpcHBlZCBvZmYgYW5kIFBPUyBzaG91bGQgcG9pbnQgdG8gdGhlCisrICAg bnVtYmVyIG9mIGZ1bmN0aW9uIGNhbGwgYXJndW1lbnRzLiAgRVhQIGlzIHRoZSBvYmplY3QgY29u dGFpbmluZyB0aGUKKysgICBsaXN0IG9mIGV4cHJlc3Npb24gZWxlbWVudHMuICAqLworKworK2V4 dGVybiB2b2lkIHByaW50X3N1YmV4cF9mdW5jYWxsIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBp bnQgKnBvcywKKysJCQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKKysKKyAvKiBGdW5jdGlv biB1c2VkIHRvIGF2b2lkIGRpcmVjdCBjYWxscyB0byBmcHJpbnRmCisgICAgaW4gdGhlIGNvZGUg Z2VuZXJhdGVkIGJ5IHRoZSBiaXNvbiBwYXJzZXIuICAqLworIAorZGlmZiAtLWdpdCBhL2dkYi9z dGQtb3BlcmF0b3IuZGVmIGIvZ2RiL3N0ZC1vcGVyYXRvci5kZWYKKy0tLSBhL2dkYi9zdGQtb3Bl cmF0b3IuZGVmCisrKysgYi9nZGIvc3RkLW9wZXJhdG9yLmRlZgorQEAgLTE2OCwxNCArMTY4LDYg QEAgT1AgKE9QX0ZVTkNBTEwpCisgICAgcG9pbnRlci4gIFRoaXMgaXMgYW4gT2JqZWN0aXZlIEMg bWVzc2FnZS4gICovCisgT1AgKE9QX09CSkNfTVNHQ0FMTCkKKyAKKy0vKiBUaGlzIGlzIEVYQUNU TFkgbGlrZSBPUF9GVU5DQUxMIGJ1dCBpcyBzZW1hbnRpY2FsbHkgZGlmZmVyZW50LgorLSAgIElu IEY3NywgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Npb25zLCBzdWJzdHJpbmcgZXhwcmVzc2lvbnMg YW5kCistICAgZnVuY3Rpb24gY2FsbHMgYXJlIGFsbCBleGFjdGx5IHRoZSBzYW1lIHN5bnRhY3Rp Y2FsbHkuICBUaGV5CistICAgbWF5IG9ubHkgYmUgZGlzYW1iaWd1YXRlZCBhdCBydW50aW1lLiAg VGh1cyB0aGlzIG9wZXJhdG9yLAorLSAgIHdoaWNoIGluZGljYXRlcyB0aGF0IHdlIGhhdmUgZm91 bmQgc29tZXRoaW5nIG9mIHRoZSBmb3JtCistICAgPG5hbWU+ICggPHN0dWZmPiApLiAgKi8KKy1P UCAoT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUKQorLQorIC8qIE9QX0NPTVBMRVggdGFrZXMg YSB0eXBlIGluIHRoZSBmb2xsb3dpbmcgZWxlbWVudCwgZm9sbG93ZWQgYnkgYW5vdGhlcgorICAg IE9QX0NPTVBMRVgsIG1ha2luZyB0aHJlZSBleHBfZWxlbWVudHMuICBJdCBpcyBmb2xsb3dlZCBi eSB0d28gZG91YmxlCisgICAgYXJncywgYW5kIGNvbnZlcnRzIHRoZW0gaW50byBhIGNvbXBsZXgg bnVtYmVyIG9mIHRoZSBnaXZlbiB0eXBlLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVs LWZpeC1wcmludC1jaGFyLWFycmF5LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC1maXgtcHJpbnQtY2hh ci1hcnJheS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA1MDhkYS4uMDAw MDAwMAotLS0gYS9nZGItdmxhLWludGVsLWZpeC1wcmludC1jaGFyLWFycmF5LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlcmdpbyBEdXJpZ2FuIEp1bmlvciA8c2VyZ2lvZGpAcmVk aGF0LmNvbT4KLURhdGU6IFRodSwgNyBEZWMgMjAxNyAxNjoyMDozMSAtMDUwMAotU3ViamVjdDog Z2RiLXZsYS1pbnRlbC1maXgtcHJpbnQtY2hhci1hcnJheS5wYXRjaAotCi07OyBSZXZlcnQgdXBz dHJlYW0gY29tbWl0IDQ2OTQxMmRkOWNjYzRkZTU4NzRmZDMyOTliMTA1ODMzZjM2YjM0Y2QKLQot UmV2ZXJ0IGNvbW1pdCAob25seSB0aGUgcGFydCB0b3VjaGluZyBnZGIvZi12YWxwcmludC5jKToK LQotICBjb21taXQgNDY5NDEyZGQ5Y2NjNGRlNTg3NGZkMzI5OWIxMDU4MzNmMzZiMzRjZAotICBB dXRob3I6IENocmlzdG9waCBXZWlubWFubiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29t PgotICBEYXRlOiAgIEZyaSBTZXAgOCAxNToxMTo0NyAyMDE3ICswMjAwCi0KLSAgICAgIFJlbW92 ZSBDL0MrKyByZWxldmFudCBjb2RlIGluIEZvcnRyYW4gc3BlY2lmaWMgZmlsZS4KLQotICAgICAg UmVtb3ZlIGNvZGUgcmVsZXZhbnQgZm9yIHByaW50aW5nIEMvQysrIEludGVnZXIgdmFsdWVzIGlu IGEKLSAgICAgIEZvcnRyYW4gc3BlY2lmaWMgZmlsZSB0byB1bmlmeSBwcmludGluZyBvZiBGb3J0 cmFuIHZhbHVlcy4KLSAgICAgIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBvdXRwdXQuCi0KLUFu ZCBhZGp1c3QgaXRzIHRlc3RjYXNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBi L2dkYi9mLXZhbHByaW50LmMKLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZh bHByaW50LmMKLUBAIC0zMTAsNyArMzEwLDIxIEBAIGZfdmFsdWVfcHJpbnRfaW5uZXIgKHN0cnVj dCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKLSAJICB2 YWx1ZV9wcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWwsICZvcHRzLCAwLCBzdHJlYW0pOwotIAl9 Ci0gICAgICAgZWxzZQotLQl2YWx1ZV9wcmludF9zY2FsYXJfZm9ybWF0dGVkICh2YWwsIG9wdGlv bnMsIDAsIHN0cmVhbSk7Ci0rCXsKLSsJICB2YWx1ZV9wcmludF9zY2FsYXJfZm9ybWF0dGVkICh2 YWwsIG9wdGlvbnMsIDAsIHN0cmVhbSk7Ci0rCSAgLyogQyBhbmQgQysrIGhhcyBubyBzaW5nbGUg Ynl0ZSBpbnQgdHlwZSwgY2hhciBpcyB1c2VkIGluc3RlYWQuCi0rCSAgICAgU2luY2Ugd2UgZG9u J3Qga25vdyB3aGV0aGVyIHRoZSB2YWx1ZSBpcyByZWFsbHkgaW50ZW5kZWQgdG8KLSsJICAgICBi ZSB1c2VkIGFzIGFuIGludGVnZXIgb3IgYSBjaGFyYWN0ZXIsIHByaW50IHRoZSBjaGFyYWN0ZXIK LSsJICAgICBlcXVpdmFsZW50IGFzIHdlbGwuICAqLwotKwkgIGlmIChUWVBFX0xFTkdUSCAodHlw ZSkgPT0gMSkKLSsJICAgIHsKLSsJICAgICAgTE9OR0VTVCBjOwotKwotKwkgICAgICBmcHV0c19m aWx0ZXJlZCAoIiAiLCBzdHJlYW0pOwotKwkgICAgICBjID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZh bGFkZHIpOwotKwkgICAgICBMQV9QUklOVF9DSEFSICgodW5zaWduZWQgY2hhcikgYywgdHlwZSwg c3RyZWFtKTsKLSsJICAgIH0KLSsJfQotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIFRZUEVf Q09ERV9TVFJVQ1Q6Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wcmlu dGluZy10eXBlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ByaW50aW5nLXR5cGVz LmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9wcmludGluZy10eXBlcy5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vcHJpbnRpbmctdHlwZXMuZXhwCi1AQCAt MzAsNyArMzAsNyBAQCBpZiB7IVtmb3J0cmFuX3J1bnRvX21haW5dfSB0aGVuIHsKLSBnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAid3JpdGUiXQotIGdkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJ3cml0ZSIKLSAKLS1nZGJfdGVzdCAicHJpbnQgb25lQnl0ZSIJIiA9IDEiCi0r Z2RiX3Rlc3QgInByaW50IG9uZUJ5dGUiCSIgPSAxIFwnXFxcXDAwMVwnIgotIGdkYl90ZXN0ICJw cmludCB0d29ieXRlcyIJIiA9IDIiCi0gZ2RiX3Rlc3QgInByaW50IGNodmFsdWUiCSIgPSBcJ2Fc JyIKLSBnZGJfdGVzdCAicHJpbnQgbG9ndmFsdWUiCSIgPSBcLlRSVUVcLiIKCmRpZmYgLS1naXQg YS9nZGItdmxhLWludGVsLWZvcnRyYW4tc3RyaWRlcy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtZm9y dHJhbi1zdHJpZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmY4YmRi Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtZm9ydHJhbi1zdHJpZGVzLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTc3OCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVkb3JhIEdEQiBwYXRjaGVzIDxpbnZhbGlkQGVtYWls LmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMjE6MDc6NTAgKzAyMDAKLVN1YmplY3Q6IGdk Yi12bGEtaW50ZWwtZm9ydHJhbi1zdHJpZGVzLnBhdGNoCi0KLTs7IFZMQSAoRm9ydHJhbiBkeW5h bWljIGFycmF5cykgZnJvbSBJbnRlbCArIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSB0ZXN0cy4K LTs7PXB1c2gKLQotZ2l0IGRpZmYgLS1zdGF0IC1wIGdkYi9tYXN0ZXIuLi5nZGIvdXNlcnMvYmhl Y2tlbC9mb3J0cmFuLXN0cmlkZXMKLWRiZmQ3MTQwYmY0YzA1MDBkMWY1ZDE5MmJlNzgxZjgzZjc4 Zjc5MjIKLQotIGdkYi9kd2FyZjJsb2MuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NDYgKystCi0gZ2RiL2R3YXJmMmxvYy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg NiArCi0gZ2RiL2R3YXJmMnJlYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyAr LQotIGdkYi9ldmFsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzOTEgKysr KysrKysrKysrKysrKysrKysrLS0tLS0KLSBnZGIvZXhwcHJpbnQuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIwICstCi0gZ2RiL2V4cHJlc3Npb24uaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAxOCArLQotIGdkYi9mLWV4cC55ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNDIgKystCi0gZ2RiL2YtdmFscHJpbnQuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgOCArLQotIGdkYi9nZGJ0eXBlcy5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMzQgKystCi0gZ2RiL2dkYnR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAxOCArLQotIGdkYi9wYXJzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMjQgKy0KLSBnZGIvcnVzdC1leHAueSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDEyICstCi0gZ2RiL3J1c3QtbGFuZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxNyArLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5leHAgfCA0 MjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RhdGljLWFycmF5cy5mOTAgfCAgNTUgKysrKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vdmxhLXB0eXBlLmV4cCAgICAgfCAgIDQgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXNpemVvZi5leHAgICAgfCAgIDQgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXN0cmlkZS5leHAgICAgfCAgNDQgKysrCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEt c3RyaWRlLmY5MCAgICB8ICAyOSArKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5 MCAgICAgICAgICAgfCAgMTAgKwotIGdkYi92YWxhcml0aC5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMTAgKy0KLSBnZGIvdmFsb3BzLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgMTk3ICsrKysrKysrKysrLS0KLSBnZGIvdmFsdWUuaCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsKLSAyMyBmaWxlcyBjaGFuZ2VkLCAxMjQyIGluc2VydGlv bnMoKyksIDE4MyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIv ZXZhbC5jCi0tLS0gYS9nZGIvZXZhbC5jCi0rKysgYi9nZGIvZXZhbC5jCi1AQCAtMzcxLDI5ICsz NzEsMzIzIEBAIGluaXRfYXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0 IHZhbHVlICplbGVtZW50LAotICAgcmV0dXJuIGluZGV4OwotIH0KLSAKLSsvKiBFdmFsdWF0ZXMg YW55IG9wZXJhdGlvbiBvbiBGb3J0cmFuIGFycmF5cyBvciBzdHJpbmdzIHdpdGggYXQgbGVhc3QK LSsgICBvbmUgdXNlciBwcm92aWRlZCBwYXJhbWV0ZXIuICBFeHBlY3RzIHRoZSBpbnB1dCBBUlJB WSB0byBiZSBlaXRoZXIKLSsgICBhbiBhcnJheSwgb3IgYSBzdHJpbmcuICBFdmFsdWF0ZXMgRVhQ IGJ5IGluY3JlbWVudGluZyBQT1MsIGFuZAotKyAgIHdyaXRlcyB0aGUgY29udGVudCBmcm9tIHRo ZSBlbHQgc3RhY2sgaW50byBhIGxvY2FsIHN0cnVjdC4gIE5BUkdTCi0rICAgc3BlY2lmaWVzIG51 bWJlciBvZiBsaXRlcmFsIG9yIHJhbmdlIGFyZ3VtZW50cyB0aGUgdXNlciBwcm92aWRlZC4KLSsg ICBOQVJHUyBtdXN0IGJlIHRoZSBzYW1lIG51bWJlciBhcyBBUlJBWSBoYXMgZGltZW5zaW9ucy4g ICovCi0rCi0gc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0tdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1 Y3QgdmFsdWUgKmFycmF5LAotLQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9z LCBlbnVtIG5vc2lkZSBub3NpZGUpCi0rdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUg KmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotKwkJICAgIGludCAqcG9zLCBpbnQgbmFy Z3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKLSB7Ci0tICBpbnQgcGMgPSAoKnBvcykgKyAxOwotLSAg TE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0tICBzdHJ1Y3QgdHlwZSAqcmFuZ2UgPSBj aGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSktPmluZGV4X3R5cGUgKCkpOwotLSAgZW51 bSByYW5nZV90eXBlIHJhbmdlX3R5cGUKLS0gICAgPSAoZW51bSByYW5nZV90eXBlKSBsb25nZXN0 X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOwotLSAKLS0gICpwb3MgKz0gMzsKLS0K LS0gIGlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0g Qk9USF9CT1VORF9ERUZBVUxUKQotLSAgICBsb3dfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5s b3cuY29uc3RfdmFsICgpOwotLSAgZWxzZQotLSAgICBsb3dfYm91bmQgPSB2YWx1ZV9hc19sb25n IChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLSsgIGludCBp LCBkaW1fY291bnQgPSAwOwotKyAgc3RydWN0IHZhbHVlICpuZXdfYXJyYXkgPSBhcnJheTsKLSsg IHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAobmV3 X2FycmF5KSk7Ci0rICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGU7Ci0rCi0rICB0eXBlZGVmIHN0cnVj dAotKyAgewotKyAgICBlbnVtIHJhbmdlX3R5cGUgZjkwX3JhbmdlX3R5cGU7Ci0rICAgIExPTkdF U1QgbG93LCBoaWdoLCBzdHJpZGU7Ci0rICB9IHN1YnNjcmlwdF9yYW5nZTsKLSsKLSsgIHR5cGVk ZWYgZW51bSBzdWJzY3JpcHRfa2luZAotKyAgewotKyAgICBTVUJTQ1JJUFRfUkFOR0UsICAgIC8q IGUuZy4gIihsb3dib3VuZDpoaWdoYm91bmQpIiAgKi8KLSsgICAgU1VCU0NSSVBUX0lOREVYICAg IC8qIGUuZy4gIihsaXRlcmFsKSIgICovCi0rICB9IGtpbmQ7Ci0rCi0rICAvKiBMb2NhbCBzdHJ1 Y3QgdG8gaG9sZCB1c2VyIGRhdGEgZm9yIEZvcnRyYW4gc3ViYXJyYXkgZGltZW5zaW9ucy4gICov Ci0rICBzdHJ1Y3Qgc3Vic2NyaXB0X3N0b3JlCi0rICB7Ci0rICAgIC8qIEZvciBldmVyeSBkaW1l bnNpb24sIHdlIGFyZSBlaXRoZXIgd29ya2luZyBvbiBhIHJhbmdlIG9yIGFuIGluZGV4Ci0rICAg ICAgIGV4cHJlc3Npb24sIHNvIHdlIHN0b3JlIHRoaXMgaW5mbyBzZXBhcmF0ZWx5IGZvciBsYXRl ci4gICovCi0rICAgIGVudW0gc3Vic2NyaXB0X2tpbmQga2luZDsKLSsKLSsgICAgLyogV2UgYWxz byBzdG9yZSBlaXRoZXIgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBpbmZvLCBvciB0aGUgaW5k ZXgKLSsgICAgICAgbnVtYmVyLiAgQmVmb3JlIGV2YWx1YXRpb24gb2YgdGhlIGlucHV0IHZhbHVl cywgd2UgZG8gbm90IGtub3cgaWYgd2UgYXJlCi0rICAgICAgIGFjdHVhbGx5IHdvcmtpbmcgb24g YSByYW5nZSBvZiByYW5nZXMsIG9yIGFuIGluZGV4IGluIGEgcmFuZ2UuICBTbyBhcyBhCi0rICAg ICAgIGZpcnN0IHN0ZXAgd2Ugc3RvcmUgYWxsIGlucHV0IGluIGEgdW5pb24uICBUaGUgYXJyYXkg Y2FsY3VsYXRpb24gaXRzZWxmCi0rICAgICAgIGRlYWxzIHdpdGggdGhpcyBsYXRlciBvbi4gICov Ci0rICAgIHVuaW9uIGVsZW1lbnRfcmFuZ2UKLSsgICAgewotKyAgICAgIHN1YnNjcmlwdF9yYW5n ZSByYW5nZTsKLSsgICAgICBMT05HRVNUIG51bWJlcjsKLSsgICAgfSBVOwotKyAgfSAqc3Vic2Ny aXB0X2FycmF5OwotKwotKyAgLyogQ2hlY2sgaWYgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcHJv dmlkZWQgYnkgdGhlIHVzZXIgbWF0Y2hlcwotKyAgICAgdGhlIG51bWJlciBvZiBkaW1lbnNpb24g b2YgdGhlIGFycmF5LiAgQSBzdHJpbmcgaGFzIG9ubHkgb25lCi0rICAgICBkaW1lbnNpb24uICAq LwotKyAgaWYgKG5hcmdzICE9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHZhbHVlX3R5cGUgKG5ld19h cnJheSkpKQotKyAgICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMiKSk7Ci0r Ci0rICBzdWJzY3JpcHRfYXJyYXkgPSAoc3RydWN0IHN1YnNjcmlwdF9zdG9yZSopIGFsbG9jYSAo c2l6ZW9mICgqc3Vic2NyaXB0X2FycmF5KSAqIG5hcmdzKTsKLSsKLSsgIC8qIFBhcnNlIHRoZSB1 c2VyIGlucHV0IGludG8gdGhlIFNVQlNDUklQVF9BUlJBWSB0byBzdG9yZSBpdC4gIFdlIG5lZWQK LSsgICAgIHRvIGV2YWx1YXRlIGl0IGZpcnN0LCBhcyB0aGUgaW5wdXQgaXMgZnJvbSBsZWZ0LXRv LXJpZ2h0LiAgVGhlCi0rICAgICBhcnJheSBpcyBzdG9yZWQgZnJvbSByaWdodC10by1sZWZ0LiAg U28gd2UgaGF2ZSB0byB1c2UgdGhlIHVzZXIKLSsgICAgIGlucHV0IGluIHJldmVyc2Ugb3JkZXIu ICBMYXRlciBvbiwgd2UgbmVlZCB0aGUgaW5wdXQgaW5mb3JtYXRpb24gdG8KLSsgICAgIHJlLWNh bGN1bGF0ZSB0aGUgb3V0cHV0IGFycmF5LiAgRm9yIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5cywg d2UKLSsgICAgIGNhbiBiZSBkZWFsaW5nIHdpdGggYW55IHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9m IHJhbmdlcyBhbmQgaW5kaWNlcwotKyAgICAgZm9yIGV2ZXJ5IGRpbWVuc2lvbi4gICovCi0rICBm b3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLSsgICAgewotKyAgICAgIHN0cnVjdCBzdWJzY3Jp cHRfc3RvcmUgKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJheVtpXTsKLSsKLSsgICAgICAvKiBUaGUg dXNlciBpbnB1dCBpcyBhIHJhbmdlLCB3aXRoIG9yIHdpdGhvdXQgbG93ZXIgYW5kIHVwcGVyIGJv dW5kLgotKwkgRS5nLjogInAgYXJyeSgyOjUpIiwgInAgYXJyeSggOjUpIiwgInAgYXJyeSggOiAp IiwgZXRjLiAgKi8KLSsgICAgICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5H RSkKLSsJewotKwkgIGludCBwYyA9ICgqcG9zKSArIDE7Ci0rCSAgc3Vic2NyaXB0X3JhbmdlICpy YW5nZTsKLSsKLSsJICBpbmRleC0+a2luZCA9IFNVQlNDUklQVF9SQU5HRTsKLSsJICByYW5nZSA9 ICZpbmRleC0+VS5yYW5nZTsKLSsKLSsJICAqcG9zICs9IDM7Ci0rCSAgcmFuZ2UtPmY5MF9yYW5n ZV90eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkgZXhwLT5lbHRzW3BjXS5sb25nY29uc3Q7Ci0rCi0r CSAgLyogSWYgYSBsb3dlciBib3VuZCB3YXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIsIHRoZSBiaXQg aGFzIGJlZW4KLSsJICAgICBzZXQgYW5kIHdlIGNhbiBhc3NpZ24gdGhlIHZhbHVlIGZyb20gdGhl IGVsdCBzdGFjay4gIFNhbWUgZm9yCi0rCSAgICAgdXBwZXIgYm91bmQuICAqLwotKwkgIGlmICgo cmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKQotKwkgICAgICA9PSBT VUJBUlJBWV9MT1dfQk9VTkQpCi0rCSAgICByYW5nZS0+bG93ID0gdmFsdWVfYXNfbG9uZyAoZXZh bHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsCi0rCQkJCQkJCSBwb3MsIG5vc2lkZSkpOwotKwkg IGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VORCkKLSsJICAg ICAgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKLSsJICAgIHJhbmdlLT5oaWdoID0gdmFsdWVfYXNf bG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsCi0rCQkJCQkJCSAgcG9zLCBub3Np ZGUpKTsKLSsKLSsJICAvKiBBc3NpZ24gdGhlIHVzZXIncyBzdHJpZGUgdmFsdWUgaWYgcHJvdmlk ZWQuICAqLwotKwkgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VCQVJSQVlfU1RSSURF KSA9PSBTVUJBUlJBWV9TVFJJREUpCi0rCSAgICByYW5nZS0+c3RyaWRlID0gdmFsdWVfYXNfbG9u ZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsCi0rCQkJCQkJCSAgICAgcG9zLCBub3Np ZGUpKTsKLSsKLSsJICAvKiBBc3NpZ24gdGhlIGRlZmF1bHQgc3RyaWRlIHZhbHVlICcxJy4gICov Ci0rCSAgZWxzZQotKwkgICAgcmFuZ2UtPnN0cmlkZSA9IDE7Ci0gCi0tICBpZiAocmFuZ2VfdHlw ZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFV TFQpCi0tICAgIGhpZ2hfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5oaWdoLmNvbnN0X3ZhbCAo KTsKLS0gIGVsc2UKLS0gICAgaGlnaF9ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1 YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOwotKwkgIC8qIENoZWNrIHRoZSBwcm92 aWRlZCBzdHJpZGUgdmFsdWUgaXMgaWxsZWdhbCwgYWthICcwJy4gICovCi0rCSAgaWYgKHJhbmdl LT5zdHJpZGUgPT0gMCkKLSsJICAgIGVycm9yIChfKCJTdHJpZGUgbXVzdCBub3QgYmUgMCIpKTsK LSsJfQotKyAgICAgIC8qIFVzZXIgaW5wdXQgaXMgYW4gaW5kZXguICBFLmcuOiAicCBhcnJ5KDUp Ii4gICovCi0rICAgICAgZWxzZQotKwl7Ci0rCSAgc3RydWN0IHZhbHVlICp2YWw7Ci0rCi0rCSAg aW5kZXgtPmtpbmQgPSBTVUJTQ1JJUFRfSU5ERVg7Ci0rCi0rCSAgLyogRXZhbHVhdGUgZWFjaCBz dWJzY3JpcHQ7IGl0IG11c3QgYmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gIFRoaXMKLSsJICAg ICBlbnN1cmVzIHRoZSB2YWxpZGl0eSBvZiB0aGUgcHJvdmlkZWQgaW5kZXguICAqLwotKwkgIHZh bCA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLSsJ ICBpbmRleC0+VS5udW1iZXIgPSB2YWx1ZV9hc19sb25nICh2YWwpOwotKwl9Ci0rCi0rICAgIH0K LSsKLSsgIC8qIFRyYXZlcnNlIHRoZSBhcnJheSBmcm9tIHJpZ2h0IHRvIGxlZnQgYW5kIHNldCB0 aGUgaGlnaCBhbmQgbG93IGJvdW5kcwotKyAgICAgZm9yIGxhdGVyIHVzZS4gICovCi0rICBmb3Ig KGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN1YnNj cmlwdF9zdG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOwotKyAgICAgIHN0cnVjdCB0 eXBlICppbmRleF90eXBlID0gYXJyYXlfdHlwZS0+aW5kZXhfdHlwZSAoKTsKLSsKLSsgICAgICBz d2l0Y2ggKGluZGV4LT5raW5kKQotKwl7Ci0rCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgotKwkgIHsK LSsKLSsJICAgIC8qIFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhl IHVzZXIsIHdlIG11c3QKLSsJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkg YXMgYSByYW5nZS4gIFdlIHNpbXBseQotKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGlj aCB0ZWxscyB1cyBob3cgbWFueSB0aW1lcyB3ZSBhcmUKLSsJICAgICAgIGNhbGxpbmcgVkFMVUVf U0xJQ0VfMS4gICovCi0rCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJh bmdlOwotKwotKwkgICAgLyogSWYgbm8gbG93ZXIgYm91bmQgd2FzIHByb3ZpZGVkIGJ5IHRoZSB1 c2VyLCB3ZSB0YWtlIHRoZQotKwkgICAgICAgZGVmYXVsdCBib3VuZGFyeS4gIFNhbWUgZm9yIHRo ZSBoaWdoIGJvdW5kLiAgKi8KLSsJICAgIGlmICgocmFuZ2UtPmY5MF9yYW5nZV90eXBlICYgU1VC QVJSQVlfTE9XX0JPVU5EKSA9PSAwKQotKwkgICAgICByYW5nZS0+bG93ID0gaW5kZXhfdHlwZS0+ Ym91bmRzICgpLT5sb3cuY29uc3RfdmFsICgpOwotKwotKwkgICAgaWYgKChyYW5nZS0+ZjkwX3Jh bmdlX3R5cGUgJiBTVUJBUlJBWV9ISUdIX0JPVU5EKSA9PSAwKQotKwkgICAgICByYW5nZS0+aGln aCA9IGluZGV4X3R5cGUtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0rCi0rCSAgICAv KiBCb3RoIHVzZXIgcHJvdmlkZWQgbG93IGFuZCBoaWdoIGJvdW5kIGhhdmUgdG8gYmUgaW5zaWRl IHRoZQotKwkgICAgICAgYXJyYXkgYm91bmRzLiAgVGhyb3cgYW4gZXJyb3IgaWYgbm90LiAgKi8K LSsJICAgIGlmIChyYW5nZS0+bG93IDwgaW5kZXhfdHlwZS0+Ym91bmRzICgpLT5sb3cuY29uc3Rf dmFsICgpCi0rCQl8fCByYW5nZS0+bG93ID4gaW5kZXhfdHlwZS0+Ym91bmRzICgpLT5oaWdoLmNv bnN0X3ZhbCAoKQotKwkJfHwgcmFuZ2UtPmhpZ2ggPCBpbmRleF90eXBlLT5ib3VuZHMgKCktPmxv dy5jb25zdF92YWwgKCkKLSsJCXx8IHJhbmdlLT5oaWdoID4gaW5kZXhfdHlwZS0+Ym91bmRzICgp LT5oaWdoLmNvbnN0X3ZhbCAoKSkKLSsJICAgICAgZXJyb3IgKF8oInByb3ZpZGVkIGJvdW5kKHMp IG91dHNpZGUgYXJyYXkgYm91bmQocykiKSk7Ci0rCi0rCSAgICAvKiBGb3IgYSBuZWdhdGl2ZSBz dHJpZGUgdGhlIGxvd2VyIGJvdW5kYXJ5IG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhlCi0rCSAgICAg ICB1cHBlciBib3VuZGFyeS4KLSsJICAgICAgIEZvciBhIHBvc2l0aXZlIHN0cmlkZSB0aGUgbG93 ZXIgYm91bmRhcnkgbXVzdCBiZSBzbWFsbGVyIHRoYW4gdGhlCi0rCSAgICAgICB1cHBlciBib3Vu ZGFyeS4gICovCi0rCSAgICBpZiAoKHJhbmdlLT5zdHJpZGUgPCAwICYmIHJhbmdlLT5sb3cgPCBy YW5nZS0+aGlnaCkKLSsJCXx8IChyYW5nZS0+c3RyaWRlID4gMCAmJiByYW5nZS0+bG93ID4gcmFu Z2UtPmhpZ2gpKQotKwkgICAgICBlcnJvciAoXygiV3JvbmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0 cmlkZSBhbmQgYm91bmRhcmllcyIpKTsKLSsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2Ug U1VCU0NSSVBUX0lOREVYOgotKwkgIGJyZWFrOwotKwotKwl9Ci0rCi0rICAgICAgIGFycmF5X3R5 cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKTsKLSsgICAgfQotKwotKyAgLyogUmVz ZXQgQVJSQVlfVFlQRSBiZWZvcmUgc2xpY2luZy4qLwotKyAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKHZhbHVlX3R5cGUgKG5ld19hcnJheSkpOwotKwotKyAgLyogVHJhdmVyc2UgdGhlIGFy cmF5IGZyb20gcmlnaHQgdG8gbGVmdCBhbmQgZXZhbHVhdGUgZWFjaCBjb3JyZXNwb25kaW5nCi0r ICAgICB1c2VyIGlucHV0LiAgVkFMVUVfU1VCU0NSSVBUIGlzIGNhbGxlZCBmb3IgZXZlcnkgaW5k ZXgsIHVudGlsIGEgcmFuZ2UKLSsgICAgIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLiAgQWZ0ZXIg YSByYW5nZSBleHByZXNzaW9uIGhhcyBiZWVuIGV2YWx1YXRlZCwKLSsgICAgIGV2ZXJ5IHN1YnNl cXVlbnQgZXhwcmVzc2lvbiBpcyBhbHNvIHRyZWF0ZWQgYXMgYSByYW5nZS4gICovCi0rICBmb3Ig KGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN1YnNj cmlwdF9zdG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0X2FycmF5W2ldOwotKyAgICAgIHN0cnVjdCB0 eXBlICppbmRleF90eXBlID0gYXJyYXlfdHlwZS0+aW5kZXhfdHlwZSAoKTsKLSsKLSsgICAgICBz d2l0Y2ggKGluZGV4LT5raW5kKQotKwl7Ci0rCWNhc2UgU1VCU0NSSVBUX1JBTkdFOgotKwkgIHsK LSsKLSsJICAgIC8qIFdoZW4gd2UgaGl0IHRoZSBmaXJzdCByYW5nZSBzcGVjaWZpZWQgYnkgdGhl IHVzZXIsIHdlIG11c3QKLSsJICAgICAgIHRyZWF0IGFueSBzdWJzZXF1ZW50IHVzZXIgZW50cnkg YXMgYSByYW5nZS4gIFdlIHNpbXBseQotKwkgICAgICAgaW5jcmVtZW50IERJTV9DT1VOVCB3aGlj aCB0ZWxscyB1cyBob3cgbWFueSB0aW1lcyB3ZSBhcmUKLSsJICAgICAgIGNhbGxpbmcgVkFMVUVf U0xJQ0VfMS4gICovCi0rCSAgICBzdWJzY3JpcHRfcmFuZ2UgKnJhbmdlID0gJmluZGV4LT5VLnJh bmdlOwotKwotKwkgICAgLyogRElNX0NPVU5UIGNvdW50cyBldmVyeSB1c2VyIGFyZ3VtZW50IHRo YXQgaXMgdHJlYXRlZCBhcyBhIHJhbmdlLgotKwkgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgZm9y IGV4cHJlc3Npb25zIGxpa2UgJ3ByaW50IGFycmF5KDcsIDg6OSkuCi0rCSAgICAgICBIZXJlIHRo ZSBmaXJzdCBhcmd1bWVudCBpcyBhIGxpdGVyYWwsIGJ1dCBtdXN0IGJlIHRyZWF0ZWQgYXMgYQot KwkgICAgICAgcmFuZ2UgYXJndW1lbnQgdG8gYWxsb3cgdGhlIGNvcnJlY3Qgb3V0cHV0IHJlcHJl c2VudGF0aW9uLiAgKi8KLSsJICAgIGRpbV9jb3VudCsrOwotKwotKwkgICAgbmV3X2FycmF5Ci0r CSAgICAgID0gdmFsdWVfc2xpY2VfMSAobmV3X2FycmF5LCByYW5nZS0+bG93LAotKwkJCSAgICAg ICByYW5nZS0+aGlnaCAtIHJhbmdlLT5sb3cgKyAxLAotKwkJCSAgICAgICByYW5nZS0+c3RyaWRl LCBkaW1fY291bnQpOwotKwkgIH0KLSsJICBicmVhazsKLSsKLSsJY2FzZSBTVUJTQ1JJUFRfSU5E RVg6Ci0rCSAgewotKwkgICAgLyogRElNX0NPVU5UIG9ubHkgc3RheXMgJzAnIHdoZW4gbm8gcmFu Z2UgYXJndW1lbnQgd2FzIHByb2Nlc3NlZAotKwkgICAgICAgYmVmb3JlLCBzdGFydGluZyBmcm9t IHRoZSBsYXN0IGRpbWVuc2lvbi4gIFRoaXMgd2F5IHdlIGNhbgotKwkgICAgICAgcmVkdWNlIHRo ZSBudW1iZXIgb2YgZGltZW5zaW9ucyBmcm9tIHRoZSByZXN1bHQgYXJyYXkuCi0rCSAgICAgICBI b3dldmVyLCBpZiBhIHJhbmdlIGhhcyBiZWVuIHByb2Nlc3NlZCBiZWZvcmUgYW4gaW5kZXgsIHdl Ci0rCSAgICAgICB0cmVhdCB0aGUgaW5kZXggbGlrZSBhIHJhbmdlIHdpdGggZXF1YWwgbG93LSBh bmQgaGlnaCBib3VuZHMKLSsJICAgICAgIHRvIGdldCB0aGUgdmFsdWUgb2Zmc2V0IHJpZ2h0LiAg Ki8KLSsJICAgIGlmIChkaW1fY291bnQgPT0gMCkKLSsJICAgICAgbmV3X2FycmF5Ci0rCSAgICAg ICAgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKG5ld19hcnJheSwgaW5kZXgtPlUubnVtYmVy LAotKwkJCQkJICAgIGY3N19nZXRfbG93ZXJib3VuZCAodmFsdWVfdHlwZQotKwkJCQkJCQkJICAo bmV3X2FycmF5KSkpOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlkaW1fY291bnQrKzsKLSsK LSsJCS8qIFdlIG1pZ2h0IGVuZCB1cCBoZXJlLCBiZWNhdXNlIHdlIGhhdmUgdG8gdHJlYXQgdGhl IHByb3ZpZGVkCi0rCQkgICBpbmRleCBsaWtlIGEgcmFuZ2UuIEJ1dCBub3cgVkFMVUVfU1VCU0NS SVBURURfUlZBTFVFCi0rCQkgICBjYW5ub3QgZG8gdGhlIHJhbmdlIGNoZWNrcyBmb3IgdXMuIFNv IHdlIGhhdmUgdG8gbWFrZSBzdXJlCi0rCQkgICBvdXJzZWx2ZXMgdGhhdCB0aGUgdXNlciBwcm92 aWRlZCBpbmRleCBpcyBpbnNpZGUgdGhlCi0rCQkgICBhcnJheSBib3VuZHMuICBUaHJvdyBhbiBl cnJvciBpZiBub3QuICAqLwotKwkJaWYgKGluZGV4LT5VLm51bWJlciA8IGluZGV4X3R5cGUtPmJv dW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKQotKwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IGlu ZGV4X3R5cGUtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCkpCi0rCQkgIGVycm9yIChfKCJw cm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFycmF5IGJvdW5kKHMpIikpOwotKwotKwkJaWYgKGlu ZGV4LT5VLm51bWJlciA+IGluZGV4X3R5cGUtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKQot KwkJICAgICYmIGluZGV4LT5VLm51bWJlciA+IGluZGV4X3R5cGUtPmJvdW5kcyAoKS0+aGlnaC5j b25zdF92YWwgKCkpCi0rCQkgIGVycm9yIChfKCJwcm92aWRlZCBib3VuZChzKSBvdXRzaWRlIGFy cmF5IGJvdW5kKHMpIikpOwotKwotKwkJbmV3X2FycmF5ID0gdmFsdWVfc2xpY2VfMSAobmV3X2Fy cmF5LAotKwkJCQkJICAgaW5kZXgtPlUubnVtYmVyLAotKwkJCQkJICAgMSwgLyogQ09VTlQgaXMg JzEnIGVsZW1lbnQgICovCi0rCQkJCQkgICAxLCAvKiBTVFJJREUgc2V0IHRvICcxJyAgKi8KLSsJ CQkJCSAgIGRpbV9jb3VudCk7Ci0rCSAgICAgIH0KLSsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0K LSsgICAgICBhcnJheV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSk7Ci0rICAg IH0KLSsKLSsgIC8qIFdpdGggRElNX0NPVU5UID4gMSB3ZSBjdXJyZW50bHkgaGF2ZSBhIG9uZSBk aW1lbnNpb25hbCBhcnJheSwgYnV0IGV4cGVjdAotKyAgICAgYW4gYXJyYXkgb2YgYXJyYXlzLCBk ZXBlbmRpbmcgb24gaG93IG1hbnkgcmFuZ2VzIGhhdmUgYmVlbiBwcm92aWRlZCBieQotKyAgICAg dGhlIHVzZXIuICBTbyB3ZSBuZWVkIHRvIHJlYnVpbGQgdGhlIGFycmF5IGRpbWVuc2lvbnMgZm9y IHByaW50aW5nIGl0Ci0rICAgICBjb3JyZWN0bHkuCi0rICAgICBTdGFydGluZyBmcm9tIHJpZ2h0 IHRvIGxlZnQgaW4gdGhlIHVzZXIgaW5wdXQsIGFmdGVyIHdlIGhpdCB0aGUgZmlyc3QKLSsgICAg IHJhbmdlIGFyZ3VtZW50IGV2ZXJ5IHN1YnNlcXVlbnQgYXJndW1lbnQgaXMgYWxzbyB0cmVhdGVk IGFzIGEgcmFuZ2UuCi0rICAgICBFLmcuOgotKyAgICAgInAgYXJ5KDMsIDcsIDI6MTUpIiBpbiBG b3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBidXQgd2UgY2FsY3VsYXRlZCAzCi0rICAgICBy YW5nZXMuCi0rICAgICAicCBhcnkoMywgNzoxMiwgNCkiIGluIEZvcnRyYW4gaGFzIG9ubHkgMSBk aW1lbnNpb24sIGJ1dCB3ZSBjYWxjdWxhdGVkIDIKLSsgICAgIHJhbmdlcy4KLSsgICAgICJwIGFy eSgyOjQsIDUsIDcpIiBpbiBGb3J0cmFuIGhhcyBvbmx5IDEgZGltZW5zaW9uLCBhbmQgd2UgY2Fs Y3VsYXRlZCAxCi0rICAgICByYW5nZS4gICovCi0rICBpZiAoZGltX2NvdW50ID4gMSkKLSsgICAg ewotKyAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IE5VTEw7Ci0rCi0rICAgICAgZWx0X3R5cGUgPSBU WVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlIChuZXdfYXJyYXkpKTsKLSAKLS0gIHJldHVybiB2 YWx1ZV9zbGljZSAoYXJyYXksIGxvd19ib3VuZCwgaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEp OwotKyAgICAgIC8qIEV2ZXJ5IFNVQlNDUklQVF9SQU5HRSBpbiB0aGUgdXNlciBpbnB1dCBzaWdu aWZpZXMgYW4gYWN0dWFsIHJhbmdlIGluCi0rCSB0aGUgb3V0cHV0IGFycmF5LiAgU28gd2UgdHJh dmVyc2UgdGhlIFNVQlNDUklQVF9BUlJBWSBhZ2FpbiwgbG9va2luZwotKwkgZm9yIGEgcmFuZ2Ug ZW50cnkuICBXaGVuIHdlIGZpbmQgb25lLCB3ZSB1c2UgdGhlIHJhbmdlIGluZm8gdG8gY3JlYXRl Ci0rCSBhbiBhZGRpdGlvbmFsIHJhbmdlX3R5cGUgdG8gc2V0IHRoZSBjb3JyZWN0IGJvdW5kcyBh bmQgZGltZW5zaW9ucyBmb3IKLSsJIHRoZSBvdXRwdXQgYXJyYXkuICBJbiBhZGRpdGlvbiwgd2Ug bWF5IGhhdmUgYSBzdHJpZGUgdmFsdWUgdGhhdCBpcyBub3QKLSsJICcxJywgZm9yY2luZyB1cyB0 byBhZGp1c3QgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHJhbmdlLCBhY2NvcmRpbmcKLSsJ IHRvIHRoZSBzdHJpZGUgdmFsdWUuICAqLwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsg aSsrKQotKwl7Ci0rCSAgc3RydWN0IHN1YnNjcmlwdF9zdG9yZSAqaW5kZXggPSAmc3Vic2NyaXB0 X2FycmF5W2ldOwotKwotKwkgIGlmIChpbmRleC0+a2luZCA9PSBTVUJTQ1JJUFRfUkFOR0UpCi0r CSAgICB7Ci0rCSAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLCAqaW50ZXJpbV9hcnJheV90 eXBlOwotKwotKwkgICAgICBpbnQgbmV3X2xlbmd0aDsKLSsKLSsJICAgICAgLyogVGhlIGxlbmd0 aCBvZiBhIHN1Yi1kaW1lbnNpb24gd2l0aCBhbGwgZWxlbWVudHMgYmV0d2VlbiB0aGUKLSsJCSBi b3VuZHMgcGx1cyB0aGUgc3RhcnQgZWxlbWVudCBpdHNlbGYuICBJdCBtYXkgYmUgbW9kaWZpZWQg YnkKLSsJCSBhIHVzZXIgcHJvdmlkZWQgc3RyaWRlIHZhbHVlLiAgKi8KLSsJICAgICAgbmV3X2xl bmd0aCA9IGluZGV4LT5VLnJhbmdlLmhpZ2ggLSBpbmRleC0+VS5yYW5nZS5sb3c7Ci0rCi0rCSAg ICAgIG5ld19sZW5ndGggLz0gaW5kZXgtPlUucmFuZ2Uuc3RyaWRlOwotKwotKwkgICAgICByYW5n ZV90eXBlCi0rCQk9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwKLSsJCQkJCSAgICBl bHRfdHlwZSwKLSsJCQkJCSAgICBpbmRleC0+VS5yYW5nZS5sb3csCi0rCQkJCQkgICAgaW5kZXgt PlUucmFuZ2UubG93ICsgbmV3X2xlbmd0aCk7Ci0rCi0rCSAgICAgIGludGVyaW1fYXJyYXlfdHlw ZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLAotKwkJCQkJCSAgICAgIGVsdF90eXBlLAotKwkJ CQkJCSAgICAgIHJhbmdlX3R5cGUpOwotKwotKwkgICAgICBpbnRlcmltX2FycmF5X3R5cGUtPnNl dF9jb2RlICggdmFsdWVfdHlwZSAobmV3X2FycmF5KS0+Y29kZSAoKSk7Ci0rCi0rCSAgICAgIHYg PSBhbGxvY2F0ZV92YWx1ZSAoaW50ZXJpbV9hcnJheV90eXBlKTsKLSsKLSsJICAgICAgZWx0X3R5 cGUgPSB2YWx1ZV90eXBlICh2KTsKLSsJICAgIH0KLSsKLSsJfQotKyAgICAgIHZhbHVlX2NvbnRl bnRzX2NvcHkgKHYsIDAsIG5ld19hcnJheSwgMCwgVFlQRV9MRU5HVEggKGVsdF90eXBlKSk7Ci0r ICAgICAgcmV0dXJuIHY7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBuZXdfYXJyYXk7Ci0gfQotIAot IAotQEAgLTEyMzMsMTkgKzE1MjcsNiBAQCBldmFsdWF0ZV9mdW5jYWxsICh0eXBlICpleHBlY3Rf dHlwZSwgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSAgIHJldHVybiBldmFsX2NhbGwgKGV4 cCwgbm9zaWRlLCBuYXJncywgYXJndmVjLCB2YXJfZnVuY19uYW1lLCBleHBlY3RfdHlwZSk7Ci0g fQotIAotLS8qIEhlbHBlciBmb3Igc2tpcHBpbmcgYWxsIHRoZSBhcmd1bWVudHMgaW4gYW4gdW5k ZXRlcm1pbmVkIGFyZ3VtZW50IGxpc3QuCi0tICAgVGhpcyBmdW5jdGlvbiB3YXMgZGVzaWduZWQg Zm9yIHVzZSBpbiB0aGUgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUCi0tICAgY2FzZSBvZiBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgYXMgbXVsdGlwbGUsIGJ1dCBub3QgYWxsLCBjb2RlIHBh dGhzCi0tICAgcmVxdWlyZSBhIGdlbmVyaWMgc2tpcC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1z a2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChpbnQgbmFyZ3MsIHN0cnVjdCBleHByZXNzaW9uICpl eHAsIGludCAqcG9zLAotLQkJCSAgIGVudW0gbm9zaWRlIG5vc2lkZSkKLS17Ci0tICBmb3IgKGlu dCBpID0gMDsgaSA8IG5hcmdzOyArK2kpCi0tICAgIGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwg ZXhwLCBwb3MsIG5vc2lkZSk7Ci0tfQotLQotIC8qIFJldHVybiB0cnVlIGlmIHR5cGUgaXMgaW50 ZWdyYWwgb3IgcmVmZXJlbmNlIHRvIGludGVncmFsICovCi0gCi0gc3RhdGljIGJvb2wKLUBAIC0x OTUzLDMzICsyMjM0LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCi0gICAgICAgc3dpdGNoIChjb2RlKQotIAl7Ci0gCWNhc2UgVFlQRV9DT0RF X0FSUkFZOgotLQkgIGlmIChleHAtPmVsdHNbKnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQotLQkg ICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0t CSAgZWxzZQotLQkgICAgewotLQkgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLS0JCXsK LS0JCSAgc2tpcF91bmRldGVybWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUp OwotLQkJICAvKiBSZXR1cm4gdGhlIGR1bW15IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4g ICovCi0tCQkgIHJldHVybiBhcmcxOwotLQkJfQotLQkgICAgICBnb3RvIG11bHRpX2Y3N19zdWJz Y3JpcHQ7Ci0tCSAgICB9Ci0tCi0gCWNhc2UgVFlQRV9DT0RFX1NUUklORzoKLS0JICBpZiAoZXhw LT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5HRSkKLS0JICAgIHJldHVybiB2YWx1ZV9mOTBf c3ViYXJyYXkgKGFyZzEsIGV4cCwgcG9zLCBub3NpZGUpOwotLQkgIGVsc2UKLS0JICAgIHsKLS0J ICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi0tCQl7Ci0tCQkgIHNraXBfdW5kZXRlcm1p bmVkX2FyZ2xpc3QgKG5hcmdzLCBleHAsIHBvcywgbm9zaWRlKTsKLS0JCSAgLyogUmV0dXJuIHRo ZSBkdW1teSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLwotLQkJICByZXR1cm4gYXJn MTsKLS0JCX0KLS0JICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChl eHAsIHBvcywgbm9zaWRlKTsKLS0JICAgICAgcmV0dXJuIHZhbHVlX3N1YnNjcmlwdCAoYXJnMSwg dmFsdWVfYXNfbG9uZyAoYXJnMikpOwotLQkgICAgfQotKwkgIHJldHVybiB2YWx1ZV9mOTBfc3Vi YXJyYXkgKGFyZzEsIGV4cCwgcG9zLCBuYXJncywgbm9zaWRlKTsKLSAKLSAJY2FzZSBUWVBFX0NP REVfUFRSOgotIAljYXNlIFRZUEVfQ09ERV9GVU5DOgotQEAgLTI0MDAsNDkgKzI2NTYsNiBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJfQot ICAgICAgIHJldHVybiAoYXJnMSk7Ci0gCi0tICAgIG11bHRpX2Y3N19zdWJzY3JpcHQ6Ci0tICAg ICAgewotLQlMT05HRVNUIHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLS0JaW50 IG5kaW1lbnNpb25zID0gMSwgaTsKLS0Jc3RydWN0IHZhbHVlICphcnJheSA9IGFyZzE7Ci0tCi0t CWlmIChuYXJncyA+IE1BWF9GT1JUUkFOX0RJTVMpCi0tCSAgZXJyb3IgKF8oIlRvbyBtYW55IHN1 YnNjcmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsKLS0KLS0JbmRp bWVuc2lvbnMgPSBjYWxjX2Y3N19hcnJheV9kaW1zICh0eXBlKTsKLS0KLS0JaWYgKG5hcmdzICE9 IG5kaW1lbnNpb25zKQotLQkgIGVycm9yIChfKCJXcm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIp KTsKLS0KLS0JZ2RiX2Fzc2VydCAobmFyZ3MgPiAwKTsKLS0KLS0JLyogTm93IHRoYXQgd2Uga25v dyB3ZSBoYXZlIGEgbGVnYWwgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Npb24gCi0tCSAgIGxldCB1 cyBhY3R1YWxseSBmaW5kIG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhpc3RzIGluIHRoZSBhcnJh eS4gICovCi0tCi0tCS8qIFRha2UgYXJyYXkgaW5kaWNlcyBsZWZ0IHRvIHJpZ2h0LiAgKi8KLS0J Zm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCi0tCSAgewotLQkgICAgLyogRXZhbHVhdGUgZWFj aCBzdWJzY3JpcHQ7IGl0IG11c3QgYmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gICovCi0tCSAg ICBhcmcyID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUp OwotLQotLQkgICAgLyogRmlsbCBpbiB0aGUgc3Vic2NyaXB0IGFycmF5LiAgKi8KLS0KLS0JICAg IHN1YnNjcmlwdF9hcnJheVtpXSA9IHZhbHVlX2FzX2xvbmcgKGFyZzIpOwotLQkgIH0KLS0KLS0J LyogSW50ZXJuYWwgdHlwZSBvZiBhcnJheSBpcyBhcnJhbmdlZCByaWdodCB0byBsZWZ0LiAgKi8K LS0JZm9yIChpID0gbmFyZ3M7IGkgPiAwOyBpLS0pCi0tCSAgewotLQkgICAgc3RydWN0IHR5cGUg KmFycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOwotLQkgICAg TE9OR0VTVCBpbmRleCA9IHN1YnNjcmlwdF9hcnJheVtpIC0gMV07Ci0tCi0tCSAgICBhcnJheSA9 IHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoYXJyYXksIGluZGV4LAotLQkJCQkJICAgICAgZjc3 X2dldF9sb3dlcmJvdW5kIChhcnJheV90eXBlKSk7Ci0tCSAgfQotLQotLQlyZXR1cm4gYXJyYXk7 Ci0tICAgICAgfQotLQotICAgICBjYXNlIEJJTk9QX0xPR0lDQUxfQU5EOgotICAgICAgIGFyZzEg PSBldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpOwotICAgICAgIGlm IChub3NpZGUgPT0gRVZBTF9TS0lQKQotQEAgLTMzNjAsNiArMzU3Myw5IEBAIGNhbGNfZjc3X2Fy cmF5X2RpbXMgKHN0cnVjdCB0eXBlICphcnJheV90eXBlKQotICAgaW50IG5kaW1lbiA9IDE7Ci0g ICBzdHJ1Y3QgdHlwZSAqdG1wX3R5cGU7Ci0gCi0rICBpZiAoYXJyYXlfdHlwZS0+Y29kZSAoKSA9 PSBUWVBFX0NPREVfU1RSSU5HKQotKyAgICByZXR1cm4gMTsKLSsKLSAgIGlmICgoYXJyYXlfdHlw ZS0+Y29kZSAoKSAhPSBUWVBFX0NPREVfQVJSQVkpKQotICAgICBlcnJvciAoXygiQ2FuJ3QgZ2V0 IGRpbWVuc2lvbnMgZm9yIGEgbm9uLWFycmF5IHR5cGUiKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2Ri L2V4cHByaW50LmMgYi9nZGIvZXhwcHJpbnQuYwotLS0tIGEvZ2RiL2V4cHByaW50LmMKLSsrKyBi L2dkYi9leHBwcmludC5jCi1AQCAtNTc2LDE3ICs1NzYsMTQgQEAgcHJpbnRfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSAJICBsb25nZXN0X3RvX2lu dCAoZXhwLT5lbHRzW3BjICsgMV0ubG9uZ2NvbnN0KTsKLSAJKnBvcyArPSAyOwotIAotLQlpZiAo cmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFCi0tCSAgICB8fCByYW5n ZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKLSsJaWYgKChyYW5nZV90eXBl ICYgU1VCQVJSQVlfSElHSF9CT1VORF9FWENMVVNJVkUpCi0rCSAgICA9PSBTVUJBUlJBWV9ISUdI X0JPVU5EX0VYQ0xVU0lWRSkKLSAJICBmcHV0c19maWx0ZXJlZCAoIkVYQ0xVU0lWRV8iLCBzdHJl YW0pOwotIAlmcHV0c19maWx0ZXJlZCAoIlJBTkdFKCIsIHN0cmVhbSk7Ci0tCWlmIChyYW5nZV90 eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVAotLQkgICAgfHwgcmFuZ2VfdHlwZSA9PSBOT05FX0JP VU5EX0RFRkFVTFQKLS0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VY Q0xVU0lWRSkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfTE9XX0JPVU5EKSA9PSBTVUJB UlJBWV9MT1dfQk9VTkQpCi0gCSAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVD X0FCT1ZFX0NPTU1BKTsKLSAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7Ci0tCWlmIChy YW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5nZV90eXBlID09IE5P TkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKChyYW5nZV90eXBlICYgU1VCQVJSQVlfSElHSF9CT1VO RCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKLSAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBz dHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEpOwotIAlmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0p OwotIAlyZXR1cm47Ci1AQCAtMTEwMywyMiArMTEwMCwyNCBAQCBkdW1wX3N1YmV4cF9ib2R5X3N0 YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAotIAlzd2l0Y2ggKHJhbmdlX3R5cGUp Ci0gCSAgewotLQkgIGNhc2UgQk9USF9CT1VORF9ERUZBVUxUOgotKwkgIGNhc2UgU1VCQVJSQVlf Tk9ORV9CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uJyIsIHN0cmVhbSk7 Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUOgotKwkgIGNhc2UgU1VC QVJSQVlfSElHSF9CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uRVhQJyIs IHN0cmVhbSk7Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUX0VYQ0xV U0lWRToKLS0JICAgIGZwdXRzX2ZpbHRlcmVkICgiRXhjbHVzaXZlUmFuZ2UgJy4uRVhQJyIsIHN0 cmVhbSk7Ci0tCSAgICBicmVhazsKLS0JICBjYXNlIEhJR0hfQk9VTkRfREVGQVVMVDoKLSsJICBj YXNlIFNVQkFSUkFZX0xPV19CT1VORDoKLSAJICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJ0VY UC4uJyIsIHN0cmVhbSk7Ci0gCSAgICBicmVhazsKLS0JICBjYXNlIE5PTkVfQk9VTkRfREVGQVVM VDoKLSsJICBjYXNlIChTVUJBUlJBWV9MT1dfQk9VTkQKLSsJCXwgU1VCQVJSQVlfSElHSF9CT1VO RAotKwkJfCBTVUJBUlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSk6Ci0rCSAgICBmcHV0c19maWx0 ZXJlZCAoIkV4Y2x1c2l2ZVJhbmdlICcuLkVYUCciLCBzdHJlYW0pOwotKwkgICAgYnJlYWs7Ci0r CSAgY2FzZSAoU1VCQVJSQVlfTE9XX0JPVU5EIHwgU1VCQVJSQVlfSElHSF9CT1VORCk6Ci0gCSAg ICBmcHV0c19maWx0ZXJlZCAoIlJhbmdlICdFWFAuLkVYUCciLCBzdHJlYW0pOwotIAkgICAgYnJl YWs7Ci0tCSAgY2FzZSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFOgotKwkgIGNhc2UgKFNV QkFSUkFZX0hJR0hfQk9VTkQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSk6Ci0gCSAg ICBmcHV0c19maWx0ZXJlZCAoIkV4Y2x1c2l2ZVJhbmdlICdFWFAuLkVYUCciLCBzdHJlYW0pOwot IAkgICAgYnJlYWs7Ci0gCSAgZGVmYXVsdDoKLUBAIC0xMTI2LDExICsxMTI1LDkgQEAgZHVtcF9z dWJleHBfYm9keV9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAJICAgIGJyZWFr OwotIAkgIH0KLSAKLS0JaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUCi0tCSAg ICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKChyYW5nZV90eXBl ICYgU1VCQVJSQVlfTE9XX0JPVU5EKSA9PSBTVUJBUlJBWV9MT1dfQk9VTkQpCi0gCSAgZWx0ID0g ZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOwotLQlpZiAocmFuZ2VfdHlwZSA9PSBMT1df Qk9VTkRfREVGQVVMVAotLQkgICAgfHwgcmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFQp Ci0rCWlmICgocmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0hJR0hfQk9VTkQpID09IFNVQkFSUkFZX0hJ R0hfQk9VTkQpCi0gCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOwotICAg ICAgIH0KLSAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2Ri L2V4cHJlc3Npb24uaAotLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAotKysrIGIvZ2RiL2V4cHJlc3Np b24uaAotQEAgLTE2NywyOCArMTY3LDI3IEBAIGV4dGVybiB2b2lkIGR1bXBfcmF3X2V4cHJlc3Np b24gKHN0cnVjdCBleHByZXNzaW9uICosCi0gCQkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBjb25zdCBj aGFyICopOwotIGV4dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHBy ZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICopOwotIAotLS8qIEluIGFuIE9QX1JBTkdFIGV4cHJl c3Npb24sIGVpdGhlciBib3VuZCBjb3VsZCBiZSBlbXB0eSwgaW5kaWNhdGluZwotLSAgIHRoYXQg aXRzIHZhbHVlIGlzIGJ5IGRlZmF1bHQgdGhhdCBvZiB0aGUgY29ycmVzcG9uZGluZyBib3VuZCBv ZiB0aGUKLS0gICBhcnJheSBvciBzdHJpbmcuICBBbHNvLCB0aGUgdXBwZXIgZW5kIG9mIHRoZSBy YW5nZSBjYW4gYmUgZXhjbHVzaXZlCi0tICAgb3IgaW5jbHVzaXZlLiAgU28gd2UgaGF2ZSBzaXgg c29ydHMgb2Ygc3VicmFuZ2UuICBUaGlzIGVudW1lcmF0aW9uCi0tICAgdHlwZSBpcyB0byBpZGVu dGlmeSB0aGlzLiAgKi8KLSsvKiBJbiBhbiBPUF9SQU5HRSBleHByZXNzaW9uLCBlaXRoZXIgYm91 bmQgY2FuIGJlIHByb3ZpZGVkIGJ5IHRoZQotKyAgIHVzZXIsIG9yIG5vdC4gIEluIGFkZGl0aW9u IHRvIHRoaXMsIHRoZSB1c2VyIGNhbiBhbHNvIHNwZWNpZnkgYQotKyAgIHN0cmlkZSB2YWx1ZSB0 byBpbmRpY2F0ZWQgb25seSBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSBhcnJheS4KLSsgICBBbHNv LCB0aGUgdXBwZXIgZW5kIG9mIHRoZSByYW5nZSBjYW4gYmUgZXhjbHVzaXZlIG9yIGluY2x1c2l2 ZS4KLSsgICBUaGlzIGVudW1lcmF0aW9uIHR5cGUgaXMgdG8gaWRlbnRpZnkgdGhpcy4gICovCi0g Ci0gZW51bSByYW5nZV90eXBlCi0tewotLSAgLyogTmVpdGhlciB0aGUgbG93IG5vciB0aGUgaGln aCBib3VuZCB3YXMgZ2l2ZW4gLS0gc28gdGhpcyByZWZlcnMgdG8KLS0gICAgIHRoZSBlbnRpcmUg YXZhaWxhYmxlIHJhbmdlLiAgKi8KLS0gIEJPVEhfQk9VTkRfREVGQVVMVCwKLS0gIC8qIFRoZSBs b3cgYm91bmQgd2FzIG5vdCBnaXZlbiBhbmQgdGhlIGhpZ2ggYm91bmQgaXMgaW5jbHVzaXZlLiAg Ki8KLS0gIExPV19CT1VORF9ERUZBVUxULAotLSAgLyogVGhlIGhpZ2ggYm91bmQgd2FzIG5vdCBn aXZlbiBhbmQgdGhlIGxvdyBib3VuZCBpbiBpbmNsdXNpdmUuICAqLwotLSAgSElHSF9CT1VORF9E RUZBVUxULAotLSAgLyogQm90aCBib3VuZHMgd2VyZSBnaXZlbiBhbmQgYm90aCBhcmUgaW5jbHVz aXZlLiAgKi8KLS0gIE5PTkVfQk9VTkRfREVGQVVMVCwKLS0gIC8qIFRoZSBsb3cgYm91bmQgd2Fz IG5vdCBnaXZlbiBhbmQgdGhlIGhpZ2ggYm91bmQgaXMgZXhjbHVzaXZlLiAgKi8KLS0gIE5PTkVf Qk9VTkRfREVGQVVMVF9FWENMVVNJVkUsCi0tICAvKiBCb3RoIGJvdW5kcyB3ZXJlIGdpdmVuLiAg VGhlIGxvdyBib3VuZCBpcyBpbmNsdXNpdmUgYW5kIHRoZSBoaWdoCi0tICAgICBib3VuZCBpcyBl eGNsdXNpdmUuICAqLwotLSAgTE9XX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFLAotLX07Ci0rICB7 Ci0rICAgIFNVQkFSUkFZX05PTkVfQk9VTkQgPSAweDAsCQkvKiAiKCA6ICkiICAqLwotKyAgICBT VUJBUlJBWV9MT1dfQk9VTkQgPSAweDEsCQkvKiAiKGxvdzopIiAgKi8KLSsgICAgU1VCQVJSQVlf SElHSF9CT1VORCA9IDB4MiwJCS8qICIoOmhpZ2gpIiAgKi8KLSsgICAgU1VCQVJSQVlfU1RSSURF ID0gMHg0LAkJLyogIig6OnN0cmlkZSkiICAqLwotKyAgICAvKiBUaGUgbG93IGJvdW5kIHdhcyBu b3QgZ2l2ZW4gYW5kIHRoZSBoaWdoIGJvdW5kIGlzIGV4Y2x1c2l2ZS4KLSsgICAgICAgSW4gdGhp cyBjYXNlIHdlIGFsd2F5cyB1c2UgKFNVQkFSUkFZX0hJR0hfQk9VTkQgfAotKyAgICAgICBTVUJB UlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSkuICAqLwotKyAgICBTVUJBUlJBWV9ISUdIX0JPVU5E X0VYQ0xVU0lWRSA9IDB4OCwKLSsgICAgLyogQm90aCBib3VuZHMgd2VyZSBnaXZlbi4gIFRoZSBs b3cgYm91bmQgaXMgaW5jbHVzaXZlIGFuZCB0aGUgaGlnaAotKyAgICAgICBib3VuZCBpcyBleGNs dXNpdmUuICBJbiB0aGlzIGNhc2UsIHdlIHVzZSAoU1VCQVJSQVlfTE9XX0JPVU5EIHwKLSsgICAg ICAgU1VCQVJSQVlfSElHSF9CT1VORCB8IFNVQkFSUkFZX0hJR0hfQk9VTkRfRVhDTFVTSVZFKS4g ICovCi0rICAgIC8vIFNVQkFSUkFZX0xPV19CT1VORF9FWENMVVNJVkUgPSAoU1VCQVJSQVlfTE9X X0JPVU5ECi0rICAgIC8vIAkJCQkgICAgfCBTVUJBUlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSks Ci0rICB9OwotIAotICNlbmRpZiAvKiAhZGVmaW5lZCAoRVhQUkVTU0lPTl9IKSAqLwotZGlmZiAt LWdpdCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkKLS0tLSBhL2dkYi9mLWV4cC55Ci0rKysg Yi9nZGIvZi1leHAueQotQEAgLTI4MiwzMSArMjgyLDYzIEBAIGFyZ2xpc3QgOglzdWJyYW5nZQot ICAgIAotIGFyZ2xpc3QJOglhcmdsaXN0ICcsJyBleHAgICAlcHJlYyBBQk9WRV9DT01NQQotIAkJ CXsgcHN0YXRlLT5hcmdsaXN0X2xlbisrOyB9Ci0rCXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UJJXBy ZWMgQUJPVkVfQ09NTUEKLSsJCQl7IHBzdGF0ZS0+YXJnbGlzdF9sZW4rKzsgfQotIAk7Ci0gCi0g LyogVGhlcmUgYXJlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UgdHlwZXMgaW4gRjkwLiAgKi8KLSAK LSBzdWJyYW5nZToJZXhwICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKLS0JCQl7IHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgCi0tCQkJICB3cml0ZV9leHBfZWx0X2xv bmdjc3QgKHBzdGF0ZSwgTk9ORV9CT1VORF9ERUZBVUxUKTsKLSsJCQl7IHdyaXRlX2V4cF9lbHRf b3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAo cHN0YXRlLAotKwkJCQkJCSBTVUJBUlJBWV9MT1dfQk9VTkQgfCBTVUJBUlJBWV9ISUdIX0JPVU5E KTsKLSAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotIAk7 Ci0gCi0gc3VicmFuZ2U6CWV4cCAnOicJJXByZWMgQUJPVkVfQ09NTUEKLSAJCQl7IHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLS0JCQkgIHdyaXRlX2V4cF9lbHRfbG9u Z2NzdCAocHN0YXRlLCBISUdIX0JPVU5EX0RFRkFVTFQpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9s b25nY3N0IChwc3RhdGUsIFNVQkFSUkFZX0xPV19CT1VORCk7Ci0gCQkJICB3cml0ZV9leHBfZWx0 X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSAJOwotIAotIHN1YnJhbmdlOgknOicgZXhw CSVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBP UF9SQU5HRSk7Ci0tCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgTE9XX0JPVU5E X0RFRkFVTFQpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIFNVQkFSUkFZ X0hJR0hfQk9VTkQpOwotIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFO R0UpOyB9Ci0gCTsKLSAKLSBzdWJyYW5nZToJJzonCSVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyB3 cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0tCQkJICB3cml0ZV9leHBf ZWx0X2xvbmdjc3QgKHBzdGF0ZSwgQk9USF9CT1VORF9ERUZBVUxUKTsKLSsJCQkgIHdyaXRlX2V4 cF9lbHRfbG9uZ2NzdCAocHN0YXRlLCBTVUJBUlJBWV9OT05FX0JPVU5EKTsKLSsJCQkgIHdyaXRl X2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotKwk7Ci0rCi0rLyogRWFjaCBz dWJyYW5nZSB0eXBlIGNhbiBoYXZlIGEgc3RyaWRlIGFyZ3VtZW50LiAgKi8KLStzdWJyYW5nZToJ ZXhwICc6JyBleHAgJzonIGV4cCAlcHJlYyBBQk9WRV9DT01NQQotKwkJCXsgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0 IChwc3RhdGUsIFNVQkFSUkFZX0xPV19CT1VORAotKwkJCQkJCSB8IFNVQkFSUkFZX0hJR0hfQk9V TkQKLSsJCQkJCQkgfCBTVUJBUlJBWV9TVFJJREUpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNv ZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0rCTsKLSsKLStzdWJyYW5nZToJZXhwICc6JyAnOicg ZXhwICVwcmVjIEFCT1ZFX0NPTU1BCi0rCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRl LCBPUF9SQU5HRSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgU1VCQVJS QVlfTE9XX0JPVU5ECi0rCQkJCQkJIHwgU1VCQVJSQVlfU1RSSURFKTsKLSsJCQkgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotKwk7Ci0rCi0rc3VicmFuZ2U6CSc6 JyBleHAgJzonIGV4cCAlcHJlYyBBQk9WRV9DT01NQQotKwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNv ZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3Rh dGUsIFNVQkFSUkFZX0hJR0hfQk9VTkQKLSsJCQkJCQkgfCBTVUJBUlJBWV9TVFJJREUpOwotKwkJ CSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0rCTsKLSsKLStz dWJyYW5nZToJJzonICc6JyBleHAgJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7IHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2Nz dCAocHN0YXRlLCBTVUJBUlJBWV9TVFJJREUpOwotIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0gCTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvZi12YWxwcmlu dC5jIGIvZ2RiL2YtdmFscHJpbnQuYwotLS0tIGEvZ2RiL2YtdmFscHJpbnQuYwotKysrIGIvZ2Ri L2YtdmFscHJpbnQuYwotQEAgLTEyOSw2ICsxMjksMTEgQEAgZjc3X3ByaW50X2FycmF5XzEgKGlu dCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCi0gCWJ5dGVfc3RyaWRl ID0gZGltX3NpemU7Ci0gICAgICAgc2l6ZV90IG9mZnMgPSAwOwotIAotKyAgICAgIGlmIChieXRl X3N0cmlkZSkKLSsgICAgICAgIGRpbV9zaXplID0gYnl0ZV9zdHJpZGU7Ci0rICAgICAgZWxzZQot KyAgICAgICAgZGltX3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkp OwotKwotICAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7Ci0gCSAgIChpIDwgdXBwZXJib3VuZCAr IDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7Ci0gCSAgIGkrKykKLWRpZmYgLS1n aXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi0tLS0gYS9nZGIvZ2RidHlwZXMu YwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBAIC0xMDA2LDcgKzEwMDYsOCBAQCBjcmVhdGVfc3Rh dGljX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmlu ZGV4X3R5cGUsCi0gICBsb3cuc2V0X2NvbnN0X3ZhbCAobG93X2JvdW5kKTsKLSAgIGhpZ2guc2V0 X2NvbnN0X3ZhbCAoaGlnaF9ib3VuZCk7Ci0gCi0tICByZXN1bHRfdHlwZSA9IGNyZWF0ZV9yYW5n ZV90eXBlIChyZXN1bHRfdHlwZSwgaW5kZXhfdHlwZSwgJmxvdywgJmhpZ2gsIDApOwotKyAgcmVz dWx0X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmVzdWx0X3R5cGUsIGluZGV4X3R5cGUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG93LCAmaGlnaCwgMCk7Ci0gCi0g ICByZXR1cm4gcmVzdWx0X3R5cGU7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIv Z2RiL2dkYnR5cGVzLmgKLS0tLSBhL2dkYi9nZGJ0eXBlcy5oCi0rKysgYi9nZGIvZ2RidHlwZXMu aAotQEAgLTE2MTUsNiArMTYxNSwxNSBAQCBleHRlcm4gdW5zaWduZWQgdHlwZV9hbGlnbiAoc3Ry dWN0IHR5cGUgKik7Ci0gICAgc3BhY2UgaW4gc3RydWN0IHR5cGUuICAqLwotIGV4dGVybiBib29s IHNldF90eXBlX2FsaWduIChzdHJ1Y3QgdHlwZSAqLCBVTE9OR0VTVCk7Ci0gCi0rI2RlZmluZSBU WVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90 eXBlKS0+c3RyaWRlLmRhdGEuY29uc3RfdmFsCi0rI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFX0JM T0NLKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRl LmRhdGEubG9jZXhwcgotKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9MT0NMSVNUKHJhbmdlX3R5 cGUpIFwKLSsgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmRhdGEubG9jbGlz dAotKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9LSU5EKHJhbmdlX3R5cGUpIFwKLSsgIFRZUEVf UkFOR0VfREFUQShyYW5nZV90eXBlKS0+c3RyaWRlLmtpbmQKLSsKLSAvKiBQcm9wZXJ0eSBhY2Nl c3NvcnMgZm9yIHRoZSB0eXBlIGRhdGEgbG9jYXRpb24uICAqLwotICNkZWZpbmUgVFlQRV9EQVRB X0xPQ0FUSU9OKHRoaXN0eXBlKSBcCi0gICAoKHRoaXN0eXBlKS0+ZHluX3Byb3AgKERZTl9QUk9Q X0RBVEFfTE9DQVRJT04pKQotQEAgLTE2MzMsNiArMTY0MiwyNiBAQCBleHRlcm4gYm9vbCBzZXRf dHlwZV9hbGlnbiAoc3RydWN0IHR5cGUgKiwgVUxPTkdFU1QpOwotICNkZWZpbmUgVFlQRV9BU1NP Q0lBVEVEX1BST1AodGhpc3R5cGUpIFwKLSAgICgodGhpc3R5cGUpLT5keW5fcHJvcCAoRFlOX1BS T1BfQVNTT0NJQVRFRCkpCi0gCi0rLyogQWNjZXNzb3JzIGZvciBzdHJ1Y3QgcmFuZ2VfYm91bmRz IGRhdGEgYXR0YWNoZWQgdG8gYW4gYXJyYXkgdHlwZSdzCi0rICAgaW5kZXggdHlwZS4gICovCi0r Ci0rI2RlZmluZSBUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRChhcnJheXR5cGUp IFwKLSsgICAoKGFycmF5dHlwZSktPmluZGV4X3R5cGUgKCktPmJvdW5kcyAoKS0+aGlnaC5raW5k ICgpID09IFBST1BfVU5ERUZJTkVEKQotKyNkZWZpbmUgVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9J U19VTkRFRklORUQoYXJyYXl0eXBlKSBcCi0rICAgKGFycmF5dHlwZS0+aW5kZXhfdHlwZSAoKS0+ Ym91bmRzICgpLmxvdy5raW5kICgpID09IFBST1BfVU5ERUZJTkVEKQotKyNkZWZpbmUgVFlQRV9B UlJBWV9TVFJJREVfSVNfVU5ERUZJTkVEKGFycmF5dHlwZSkgXAotKyAgIChUWVBFX0JZVEVfU1RS SURFKGFycmF5dHlwZS0+aW5kZXhfdHlwZSAoKSkgPT0gMCkKLSsKLSsKLSsjZGVmaW5lIFRZUEVf QVJSQVlfVVBQRVJfQk9VTkRfVkFMVUUoYXJyYXl0eXBlKSBcCi0rICAgKFRZUEVfSElHSF9CT1VO RCgoYXJyYXl0eXBlKS0+aW5kZXhfdHlwZSAoKSkpCi0rCi0rI2RlZmluZSBUWVBFX0FSUkFZX0xP V0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAotKyAgIChUWVBFX0xPV19CT1VORCgoYXJyYXl0 eXBlKS0+aW5kZXhfdHlwZSAoKSkpCi0rCi0rI2RlZmluZSBUWVBFX0FSUkFZX0JJVF9TVFJJREUo YXJyYXl0eXBlKSBcCi0rICAoVFlQRV9CSVRfU1RSSURFKChhcnJheXR5cGUpLT5pbmRleF90eXBl ICgpKSkKLSsKLSAvKiBDKysgKi8KLSAKLSAjZGVmaW5lIFRZUEVfU0VMRl9UWVBFKHRoaXN0eXBl KSBpbnRlcm5hbF90eXBlX3NlbGZfdHlwZSAodGhpc3R5cGUpCi1kaWZmIC0tZ2l0IGEvZ2RiL3Bh cnNlLmMgYi9nZGIvcGFyc2UuYwotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBiL2dkYi9wYXJzZS5j Ci1AQCAtOTE5LDI0ICs5MTksMjAgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwciwgaW50IGVuZHBvcywKLSAKLSAgICAgY2FzZSBPUF9SQU5H RToKLSAgICAgICBvcGxlbiA9IDM7Ci0rICAgICAgYXJncyA9IDA7Ci0gICAgICAgcmFuZ2VfdHlw ZSA9IChlbnVtIHJhbmdlX3R5cGUpCi0gCWxvbmdlc3RfdG9faW50IChleHByLT5lbHRzW2VuZHBv cyAtIDJdLmxvbmdjb25zdCk7Ci0gCi0tICAgICAgc3dpdGNoIChyYW5nZV90eXBlKQotLQl7Ci0t CWNhc2UgTE9XX0JPVU5EX0RFRkFVTFQ6Ci0tCWNhc2UgTE9XX0JPVU5EX0RFRkFVTFRfRVhDTFVT SVZFOgotLQljYXNlIEhJR0hfQk9VTkRfREVGQVVMVDoKLS0JICBhcmdzID0gMTsKLS0JICBicmVh azsKLS0JY2FzZSBCT1RIX0JPVU5EX0RFRkFVTFQ6Ci0tCSAgYXJncyA9IDA7Ci0tCSAgYnJlYWs7 Ci0tCWNhc2UgTk9ORV9CT1VORF9ERUZBVUxUOgotLQljYXNlIE5PTkVfQk9VTkRfREVGQVVMVF9F WENMVVNJVkU6Ci0tCSAgYXJncyA9IDI7Ci0tCSAgYnJlYWs7Ci0tCX0KLSsgICAgICAvKiBJbmNy ZW1lbnQgdGhlIGFyZ3VtZW50IGNvdW50ZXIgZm9yIGVhY2ggYXJndW1lbnQKLSsJIHByb3ZpZGVk IGJ5IHRoZSB1c2VyLiAgKi8KLSsgICAgICBpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJBWV9MT1df Qk9VTkQpID09IFNVQkFSUkFZX0xPV19CT1VORCkKLSsJYXJncysrOwotKwotKyAgICAgIGlmICgo cmFuZ2VfdHlwZSAmIFNVQkFSUkFZX0hJR0hfQk9VTkQpID09IFNVQkFSUkFZX0hJR0hfQk9VTkQp Ci0rCWFyZ3MrKzsKLSsKLSsgICAgICBpZiAoKHJhbmdlX3R5cGUgJiBTVUJBUlJBWV9TVFJJREUp ID09IFNVQkFSUkFZX1NUUklERSkKLSsJYXJncysrOwotIAotICAgICAgIGJyZWFrOwotIAotZGlm ZiAtLWdpdCBhL2dkYi9ydXN0LWV4cC55IGIvZ2RiL3J1c3QtZXhwLnkKLS0tLSBhL2dkYi9ydXN0 LWV4cC55Ci0rKysgYi9nZGIvcnVzdC1leHAueQotQEAgLTI0OTIsMjQgKzI0OTIsMjggQEAgcnVz dF9wYXJzZXI6OmNvbnZlcnRfYXN0X3RvX2V4cHJlc3Npb24gKGNvbnN0IHN0cnVjdCBydXN0X29w ICpvcGVyYXRpb24sCi0gCi0gICAgIGNhc2UgT1BfUkFOR0U6Ci0gICAgICAgewotLQllbnVtIHJh bmdlX3R5cGUga2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKLSsJZW51bSByYW5nZV90eXBlIGtp bmQgPSBTVUJBUlJBWV9OT05FX0JPVU5EOwotIAotIAlpZiAob3BlcmF0aW9uLT5sZWZ0Lm9wICE9 IE5VTEwpCi0gCSAgewotIAkgICAgY29udmVydF9hc3RfdG9fZXhwcmVzc2lvbiAob3BlcmF0aW9u LT5sZWZ0Lm9wLCB0b3ApOwotLQkgICAga2luZCA9IEhJR0hfQk9VTkRfREVGQVVMVDsKLSsJICAg IGtpbmQgPSBTVUJBUlJBWV9MT1dfQk9VTkQ7Ci0gCSAgfQotIAlpZiAob3BlcmF0aW9uLT5yaWdo dC5vcCAhPSBOVUxMKQotIAkgIHsKLSAJICAgIGNvbnZlcnRfYXN0X3RvX2V4cHJlc3Npb24gKG9w ZXJhdGlvbi0+cmlnaHQub3AsIHRvcCk7Ci0tCSAgICBpZiAoa2luZCA9PSBCT1RIX0JPVU5EX0RF RkFVTFQpCi0tCSAgICAgIGtpbmQgPSAob3BlcmF0aW9uLT5pbmNsdXNpdmUKLS0JCSAgICAgID8g TE9XX0JPVU5EX0RFRkFVTFQgOiBMT1dfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUpOwotKwkgICAg aWYgKGtpbmQgPT0gU1VCQVJSQVlfTk9ORV9CT1VORCkKLSsJICAgICAgewotKwkJa2luZCA9IChy YW5nZV90eXBlKSBTVUJBUlJBWV9ISUdIX0JPVU5EOwotKwkJaWYgKCFvcGVyYXRpb24tPmluY2x1 c2l2ZSkKLSsJCSAga2luZCA9IChyYW5nZV90eXBlKSAoa2luZCB8IFNVQkFSUkFZX0hJR0hfQk9V TkRfRVhDTFVTSVZFKTsKLSsJICAgICAgfQotIAkgICAgZWxzZQotIAkgICAgICB7Ci0tCQlnZGJf YXNzZXJ0IChraW5kID09IEhJR0hfQk9VTkRfREVGQVVMVCk7Ci0tCQlraW5kID0gKG9wZXJhdGlv bi0+aW5jbHVzaXZlCi0tCQkJPyBOT05FX0JPVU5EX0RFRkFVTFQgOiBOT05FX0JPVU5EX0RFRkFV TFRfRVhDTFVTSVZFKTsKLSsJCWdkYl9hc3NlcnQgKGtpbmQgPT0gU1VCQVJSQVlfTE9XX0JPVU5E KTsKLSsJCWtpbmQgPSAocmFuZ2VfdHlwZSkgKGtpbmQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EKTsK LSsJCWlmICghb3BlcmF0aW9uLT5pbmNsdXNpdmUpCi0rCQkgIGtpbmQgPSAocmFuZ2VfdHlwZSkg KGtpbmQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSk7Ci0gCSAgICAgIH0KLSAJICB9 Ci0gCWVsc2UKLWRpZmYgLS1naXQgYS9nZGIvcnVzdC1sYW5nLmMgYi9nZGIvcnVzdC1sYW5nLmMK LS0tLSBhL2dkYi9ydXN0LWxhbmcuYwotKysrIGIvZ2RiL3J1c3QtbGFuZy5jCi1AQCAtMTA4Miwx MyArMTA4MiwxMSBAQCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBv cywgZW51bSBub3NpZGUgbm9zaWRlKQotICAga2luZCA9IChlbnVtIHJhbmdlX3R5cGUpIGxvbmdl c3RfdG9faW50IChleHAtPmVsdHNbKnBvcyArIDFdLmxvbmdjb25zdCk7Ci0gICAqcG9zICs9IDM7 Ci0gCi0tICBpZiAoa2luZCA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBOT05FX0JP VU5EX0RFRkFVTFQKLS0gICAgICB8fCBraW5kID09IE5PTkVfQk9VTkRfREVGQVVMVF9FWENMVVNJ VkUpCi0rICBpZiAoKGtpbmQgJiBTVUJBUlJBWV9MT1dfQk9VTkQpID09IFNVQkFSUkFZX0xPV19C T1VORCkKLSAgICAgbG93ID0gZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9z aWRlKTsKLS0gIGlmIChraW5kID09IExPV19CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9XX0JP VU5EX0RFRkFVTFRfRVhDTFVTSVZFCi0tICAgICAgfHwga2luZCA9PSBOT05FX0JPVU5EX0RFRkFV TFQgfHwga2luZCA9PSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFKQotKyAgaWYgKChraW5k ICYgU1VCQVJSQVlfSElHSF9CT1VORCkgPT0gU1VCQVJSQVlfSElHSF9CT1VORCkKLSAgICAgaGln aCA9IGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tICBib29s IGluY2x1c2l2ZSA9IChraW5kID09IE5PTkVfQk9VTkRfREVGQVVMVCB8fCBraW5kID09IExPV19C T1VORF9ERUZBVUxUKTsKLSsgIGJvb2wgaW5jbHVzaXZlID0gKCEoKGtpbmQgJiBTVUJBUlJBWV9I SUdIX0JPVU5EX0VYQ0xVU0lWRSkgPT0gU1VCQVJSQVlfSElHSF9CT1VORF9FWENMVVNJVkUpKTsK LSAKLSAgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQotICAgICByZXR1cm4gdmFsdWVfZnJvbV9s b25nZXN0IChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LCAxKTsKLUBA IC0xMTc3LDcgKzExNzUsNyBAQCBydXN0X2NvbXB1dGVfcmFuZ2UgKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAotIAotICAgKmxvdyA9IDA7Ci0gICAqaGlnaCA9IDA7Ci0t ICAqa2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsKLSsgICpraW5kID0gU1VCQVJSQVlfTk9ORV9C T1VORDsKLSAKLSAgIGlmICh0eXBlLT5udW1fZmllbGRzICgpID09IDApCi0gICAgIHJldHVybjsK LUBAIC0xMTg1LDE1ICsxMTgzLDE0IEBAIHJ1c3RfY29tcHV0ZV9yYW5nZSAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB2YWx1ZSAqcmFuZ2UsCi0gICBpID0gMDsKLSAgIGlmIChzdHJjbXAgKFRZ UEVfRklFTERfTkFNRSAodHlwZSwgMCksICJzdGFydCIpID09IDApCi0gICAgIHsKLS0gICAgICAq a2luZCA9IEhJR0hfQk9VTkRfREVGQVVMVDsKLSsgICAgICAqa2luZCA9IFNVQkFSUkFZX0xPV19C T1VORDsKLSAgICAgICAqbG93ID0gdmFsdWVfYXNfbG9uZyAodmFsdWVfZmllbGQgKHJhbmdlLCAw KSk7Ci0gICAgICAgKytpOwotICAgICB9Ci0gICBpZiAodHlwZS0+bnVtX2ZpZWxkcyAoKSA+IGkK LSAgICAgICAmJiBzdHJjbXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSksICJlbmQiKSA9PSAw KQotICAgICB7Ci0tICAgICAgKmtpbmQgPSAoKmtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUCi0t CSAgICAgICA/IExPV19CT1VORF9ERUZBVUxUIDogTk9ORV9CT1VORF9ERUZBVUxUKTsKLSsgICAg ICAqa2luZCA9IChyYW5nZV90eXBlKSAoKmtpbmQgfCBTVUJBUlJBWV9ISUdIX0JPVU5EKTsKLSAg ICAgICAqaGlnaCA9IHZhbHVlX2FzX2xvbmcgKHZhbHVlX2ZpZWxkIChyYW5nZSwgaSkpOwotIAot ICAgICAgIGlmIChydXN0X2luY2x1c2l2ZV9yYW5nZV90eXBlX3AgKHR5cGUpKQotQEAgLTEyMTEs NyArMTIwOCw3IEBAIHJ1c3Rfc3Vic2NyaXB0IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQg KnBvcywgZW51bSBub3NpZGUgbm9zaWRlLAotICAgc3RydWN0IHR5cGUgKnJoc3R5cGU7Ci0gICBM T05HRVNUIGxvdywgaGlnaF9ib3VuZDsKLSAgIC8qIEluaXRpYWxpemVkIHRvIGFwcGVhc2UgdGhl IGNvbXBpbGVyLiAgKi8KLS0gIGVudW0gcmFuZ2VfdHlwZSBraW5kID0gQk9USF9CT1VORF9ERUZB VUxUOwotKyAgZW51bSByYW5nZV90eXBlIGtpbmQgPSBTVUJBUlJBWV9OT05FX0JPVU5EOwotICAg TE9OR0VTVCBoaWdoID0gMDsKLSAgIGludCB3YW50X3NsaWNlID0gMDsKLSAKLUBAIC0xMzA5LDcg KzEzMDYsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpw b3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKLSAJZXJyb3IgKF8oIkNhbm5vdCBzdWJzY3JpcHQgbm9u LWFycmF5IHR5cGUiKSk7Ci0gCi0gICAgICAgaWYgKHdhbnRfc2xpY2UKLS0JICAmJiAoa2luZCA9 PSBCT1RIX0JPVU5EX0RFRkFVTFQgfHwga2luZCA9PSBMT1dfQk9VTkRfREVGQVVMVCkpCi0rCSAg JiYgKChraW5kICYgU1VCQVJSQVlfTE9XX0JPVU5EKSAhPSBTVUJBUlJBWV9MT1dfQk9VTkQpKQot IAlsb3cgPSBsb3dfYm91bmQ7Ci0gICAgICAgaWYgKGxvdyA8IDApCi0gCWVycm9yIChfKCJJbmRl eCBsZXNzIHRoYW4gemVybyIpKTsKLUBAIC0xMzI3LDcgKzEzMjQsNyBAQCBydXN0X3N1YnNjcmlw dCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwK LSAJICBDT1JFX0FERFIgYWRkcjsKLSAJICBzdHJ1Y3QgdmFsdWUgKmFkZHJ2YWwsICp0ZW07Ci0g Ci0tCSAgaWYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gSElHSF9CT1VO RF9ERUZBVUxUKQotKwkgIGlmICgoa2luZCAmIFNVQkFSUkFZX0hJR0hfQk9VTkQpICE9IFNVQkFS UkFZX0hJR0hfQk9VTkQpCi0gCSAgICBoaWdoID0gaGlnaF9ib3VuZDsKLSAJICBpZiAoaGlnaCA8 IDApCi0gCSAgICBlcnJvciAoXygiSGlnaCBpbmRleCBsZXNzIHRoYW4gemVybyIpKTsKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdGF0aWMtYXJyYXlzLmV4cAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Rh dGljLWFycmF5cy5leHAKLUBAIC0wLDAgKzEsNDIxIEBACi0rIyBDb3B5cmlnaHQgMjAxNSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBDb250cmlidXRlZCBieSBJbnRlbCBD b3JwLiA8Y2hyaXN0b3BoLnQud2Vpbm1hbm5AaW50ZWwuY29tPgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgc3RhdGljLWFycmF5cy5mOTAK LSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRz cmNmaWxlIHtkZWJ1ZyBmOTB9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVu dG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2lu dCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJCUDEiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJCUDEiICIu KkJQMS4qIgotKwotKyMgVGVzdHMgc3ViYXJyYXlzIG9mIG9uZSBkaW1lbnNpb25hbCBhcnJheXMg d2l0aCBzdWJyYW5nZSB2YXJpYXRpb25zCi0rZ2RiX3Rlc3QgInByaW50IGFyMSIgIlxcJFxbMC05 XF0rID0gXFwoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOVxcKSIgXAotKwkJInByaW50IGFyMS4i Ci0rZ2RiX3Rlc3QgInByaW50IGFyMVwoNDo3XCkiICJcXCRcWzAtOVxdKyA9IFxcKDQsIDUsIDYs IDdcXCkiIFwKLSsJCSJwcmludCBhcjFcKDQ6N1wpIgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6 XCkiICJcXCRcWzAtOVxdKyA9IFxcKDgsIDlcXCkuKiIgXAotKwkJInByaW50IGFyMVwoODpcKSIK LStnZGJfdGVzdCAicHJpbnQgYXIxXCg6M1wpIiAiXFwkXFswLTlcXSsgPSBcXCgxLCAyLCAzXFwp LioiIFwKLSsJCSJwcmludCBhcjFcKDozXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMVwoOlwpIiAi XFwkXFswLTlcXSsgPSBcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XFwpIiBcCi0rCQkicHJp bnQgYXIxXCg6XCkiCi0rCi0rIyBDaGVjayBhc3NpZ25tZW50Ci0rZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJzZXQgXCRteV9hcnkgPSBhcjFcKDM6OFwpIgotK2dkYl90ZXN0ICJwcmludCBcJG15X2FyeSIg XAotKwkJIlxcJFxbMC05XF0rID0gXFwoMywgNCwgNSwgNiwgNywgOFxcKSIgXAotKwkJIkFzc2ln bm1lbnQgb2Ygc3ViYXJyYXkgdG8gdmFyaWFibGUiCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQg YXIxXCg1XCkgPSA0MiIKLSsJCWdkYl90ZXN0ICJwcmludCBhcjFcKDM6OFwpIiBcCi0rCQkiXFwk XFswLTlcXSsgPSBcXCgzLCA0LCA0MiwgNiwgNywgOFxcKSIgXAotKwkJInByaW50IGFyMVwoMzo4 XCkgYWZ0ZXIgYXNzaWdubWVudCIKLStnZGJfdGVzdCAicHJpbnQgXCRteV9hcnkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKDMsIDQsIDUsIDYsIDcsIDhcXCkiIFwKLSsJCSJBc3NpZ25tZW50IG9m IHN1YmFycmF5IHRvIHZhcmlhYmxlIGFmdGVyIG9yaWdpbmFsIGFycmF5IGNoYW5nZWQiCi0rCi0r IyBUZXN0IGZvciBzdWJhcnJheXMgb2Ygb25lIGRpbWVuc2lvbmFsIGFycmF5cyB3aXRoIGxpdGVy YWxzCi0rCQlnZGJfdGVzdCAicHJpbnQgYXIxXCgzXCkiICJcXCRcWzAtOVxdKyA9IDMiIFwKLSsJ CSJwcmludCBhcjFcKDNcKSIKLSsKLSsjIFRlc3RzIGZvciBzdWJyYW5nZXMgb2YgMiBkaW1lbnNp b25hbCBhcnJheXMgd2l0aCBzdWJyYW5nZSB2YXJpYXRpb25zCi0rZ2RiX3Rlc3QgInByaW50IGFy MlwoMjozLCAzOjRcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDIzLCAzM1xcKSBcXCgg MjQsIDM0XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoMjozLCAzOjRcKS4iCi0rZ2RiX3Rlc3Qg InByaW50IGFyMlwoODo5LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCA4OCwgOThc XCkgXFwoIDg5LCA5OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDg6OSw4OlwpIgotK2dkYl90 ZXN0ICJwcmludCBhcjJcKDg6OSw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggODEs IDkxXFwpIFxcKCA4MiwgOTJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4OjksOjJcKSIKLSsK LStnZGJfdGVzdCAicHJpbnQgYXIyXCg4Oiw4OjlcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwo XFwoIDg4LCA5OFxcKSBcXCggODksIDk5XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODosODo5 XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoODosODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIDg4LCA5OFxcKSBcXCggODksIDk5XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoODos ODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg4Oiw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsg PSBcXChcXCggODEsIDkxXFwpIFxcKCA4MiwgOTJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4 Oiw6MlwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjJcKDoyLDI6M1wpIiBcCi0rCQkiXFwkXFsw LTlcXSsgPSBcXChcXCggMTIsIDIyXFwpIFxcKCAxMywgMjNcXCkgXFwpIiBcCi0rCQkicHJpbnQg YXIyXCg6MiwyOjNcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw4OlwpIiBcCi0rCQkiXFwk XFswLTlcXSsgPSBcXChcXCggMTgsIDI4XFwpIFxcKCAxOSwgMjlcXCkgXFwpIiBcCi0rCQkicHJp bnQgYXIyXCg6Miw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDoyLDoyXCkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAxMSwgMjFcXCkgXFwoIDEyLCAyMlxcKSBcXCkiIFwKLSsJCSJw cmludCBhcjJcKDoyLDoyXCkiCi0rCi0rIyBUZXN0IHN1YnJhbmdlcyBvZiAyIGRpbWVuc2lvbmFs IGFycmF5cyB3aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZSB2YXJpYXRpb25zCi0rZ2RiX3Rlc3Qg InByaW50IGFyMlwoNywgMzo2XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDczLCA3NCwgNzUs IDc2XFwpIiBcCi0rCQkicHJpbnQgYXIyXCg3LCAzOjZcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIy XCg3LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDc4LCA3OVxcKSIgXAotKwkJInByaW50 IGFyMlwoNyw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjJcKDcsOjJcKSIgXAotKwkJIlxcJFxb MC05XF0rID0gXFwoNzEsIDcyXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg3LDoyXCkiCi0rCi0rZ2Ri X3Rlc3QgInByaW50IGFyMlwoNzo4LDRcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoNzQsIDg0 XFwpIiBcCi0rCQkicHJpbnQgYXIyKDc6OCw0XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoODos NFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCg4NCwgOTRcXCkiIFwKLSsJCSJwcmludCBhcjJc KDg6LDRcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg6Miw0XCkiIFwKLSsJCSJcXCRcWzAtOVxd KyA9IFxcKDE0LCAyNFxcKSIgXAotKwkJInByaW50IGFyMlwoOjIsNFwpIgotK2dkYl90ZXN0ICJw cmludCBhcjJcKDMsNFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSAzNCIgXAotKwkJInByaW50IGFy MlwoMyw0XCkiCi0rCi0rIyBUZXN0IHN1YmFycmF5cyBvZiAzIGRpbWVuc2lvbmFsIGFycmF5cyB3 aXRoIGxpdGVyYWxzIGFuZCBzdWJyYW5nZSB2YXJpYXRpb25zCi0rZ2RiX3Rlc3QgInByaW50IGFy M1woMjo0LDM6NCw3OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMzcsIDMz NywgNDM3XFwpIFxcKCAyNDcsIDM0NywgNDQ3XFwpXAotKwkJIFxcKSBcXCggXFwoIDIzOCwgMzM4 LCA0MzhcXCkgXFwoIDI0OCwgMzQ4LCA0NDhcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1wo Mjo0LDM6NCw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsNDo1LDg6XCkiIFwKLSsJ CSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMjQ4LCAzNDhcXCkgXFwoIDI1OCwgMzU4XFwpIFxc KSBcXChcCi0rCQkgXFwoIDI0OSwgMzQ5XFwpIFxcKCAyNTksIDM1OVxcKSBcXCkgXFwpIiBcCi0r CQkicHJpbnQgYXIzXCgyOjMsNDo1LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDQ6 NSw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI0MSwgMzQxXFwpIFxcKCAy NTEsIDM1MVxcKSBcXCkgXFwoXAotKwkJIFxcKCAyNDIsIDM0MlxcKSBcXCggMjUyLCAzNTJcXCkg XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjozLDQ6NSw6MlwpIgotKwotK2dkYl90ZXN0ICJw cmludCBhcjNcKDI6Myw4Oiw3OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAy ODcsIDM4N1xcKSBcXCggMjk3LCAzOTdcXCkgXFwpIFxcKFwKLSsJCSBcXCggMjg4LCAzODhcXCkg XFwoIDI5OCwgMzk4XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6Myw4Oiw3OjhcKSIK LStnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjMsODosODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIFxcKCAyODgsIDM4OFxcKSBcXCggMjk4LCAzOThcXCkgXFwpIFxcKFwKLSsJCSBcXCgg Mjg5LCAzODlcXCkgXFwoIDI5OSwgMzk5XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDI6 Myw4Oiw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDI6Myw4Oiw6MlwpIiBcCi0rCQkiXFwk XFswLTlcXSsgPSBcXChcXCggXFwoIDI4MSwgMzgxXFwpIFxcKCAyOTEsIDM5MVxcKSBcXCkgXFwo XAotKwkJIFxcKCAyODIsIDM4MlxcKSBcXCggMjkyLCAzOTJcXCkgXFwpIFxcKSIgXAotKwkJInBy aW50IGFyM1woMjozLDg6LDoyXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDoyLDc6 OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIxNywgMzE3XFwpIFxcKCAyMjcs IDMyN1xcKSBcXCkgXFwoXAotKwkJIFxcKCAyMTgsIDMxOFxcKSBcXCggMjI4LCAzMjhcXCkgXFwp IFxcKSIgXAotKwkJInByaW50IGFyM1woMjozLDoyLDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBh cjNcKDI6Myw6Miw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDIxOCwgMzE4 XFwpIFxcKCAyMjgsIDMyOFxcKSBcXCkgXFwoXAotKwkJIFxcKCAyMTksIDMxOVxcKSBcXCggMjI5 LCAzMjlcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjozLDoyLDg6XCkiCi0rZ2RiX3Rl c3QgInByaW50IGFyM1woMjozLDoyLDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBc XCggMjExLCAzMTFcXCkgXFwoIDIyMSwgMzIxXFwpIFxcKSBcXChcCi0rCQkgXFwoIDIxMiwgMzEy XFwpIFxcKCAyMjIsIDMyMlxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyOjMsOjIsOjJc KSIKLSsKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4OiwzOjQsNzo4XCkiIFwKLSsJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCBcXCggODM3LCA5MzdcXCkgXFwoIDg0NywgOTQ3XFwpIFxcKSBcXChcCi0r CQkgXFwoIDgzOCwgOTM4XFwpIFxcKCA4NDgsIDk0OFxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQg YXIzXCg4OiwzOjQsNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosNDo1LDg6XCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODQ4LCA5NDhcXCkgXFwoIDg1OCwgOTU4XFwp IFxcKSBcXChcCi0rCQkgXFwoIDg0OSwgOTQ5XFwpIFxcKCA4NTksIDk1OVxcKSBcXCkgXFwpIiBc Ci0rCQkicHJpbnQgYXIzXCg4Oiw0OjUsODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw0 OjUsOjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA4NDEsIDk0MVxcKSBcXCgg ODUxLCA5NTFcXCkgXFwpIFxcKFwKLSsJCSBcXCggODQyLCA5NDJcXCkgXFwoIDg1MiwgOTUyXFwp IFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDQ6NSw6MlwpIgotKwotK2dkYl90ZXN0ICJw cmludCBhcjNcKDg6LDg6LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDg4 NywgOTg3XFwpIFxcKCA4OTcsIDk5N1xcKSBcXCkgXFwoXAotKwkJIFxcKCA4ODgsIDk4OFxcKSBc XCggODk4LCA5OThcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woODosODosNzo4XCkiCi0r Z2RiX3Rlc3QgInByaW50IGFyM1woODosODosODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwo XFwoIFxcKCA4ODgsIDk4OFxcKSBcXCggODk4LCA5OThcXCkgXFwpIFxcKFwKLSsJCSBcXCggODg5 LCA5ODlcXCkgXFwoIDg5OSwgOTk5XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDg6 LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosODosOjJcKSIgXAotKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIFxcKCA4ODEsIDk4MVxcKSBcXCggODkxLCA5OTFcXCkgXFwpIFxcKFwKLSsJ CSBcXCggODgyLCA5ODJcXCkgXFwoIDg5MiwgOTkyXFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBh cjNcKDg6LDg6LDoyXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosOjIsNzo4XCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggODE3LCA5MTdcXCkgXFwoIDgyNywgOTI3XFwp IFxcKSBcXChcCi0rCQkgXFwoIDgxOCwgOTE4XFwpIFxcKCA4MjgsIDkyOFxcKSBcXCkgXFwpIiBc Ci0rCQkicHJpbnQgYXIzXCg4Oiw6Miw3OjhcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg4Oiw6 Miw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDgxOCwgOTE4XFwpIFxcKCA4 MjgsIDkyOFxcKSBcXCkgXFwoXAotKwkJIFxcKCA4MTksIDkxOVxcKSBcXCggODI5LCA5MjlcXCkg XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woODosOjIsODpcKSIKLStnZGJfdGVzdCAicHJpbnQg YXIzXCg4Oiw6Miw6MlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDgxMSwgOTEx XFwpIFxcKCA4MjEsIDkyMVxcKSBcXCkgXFwoXAotKwkJIFxcKCA4MTIsIDkxMlxcKSBcXCggODIy LCA5MjJcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woODosOjIsOjJcKSIKLSsKLSsKLStn ZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxc KFxcKCBcXCggMTM3LCAyMzdcXCkgXFwoIDE0NywgMjQ3XFwpIFxcKSBcXChcCi0rCQkgXFwoIDEz OCwgMjM4XFwpIFxcKCAxNDgsIDI0OFxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzIFwoOjIs Mzo0LDc6OFwpLiIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg6MiwzOjQsODpcKSIgXAotKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIFxcKCAxMzgsIDIzOFxcKSBcXCggMTQ4LCAyNDhcXCkgXFwpIFxc KFwKLSsJCSBcXCggMTM5LCAyMzlcXCkgXFwoIDE0OSwgMjQ5XFwpIFxcKSBcXCkiIFwKLSsJCSJw cmludCBhcjNcKDoyLDM6NCw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDM6NCw6Mlwp IiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDEzMSwgMjMxXFwpIFxcKCAxNDEsIDI0 MVxcKSBcXCkgXFwoXAotKwkJIFxcKCAxMzIsIDIzMlxcKSBcXCggMTQyLCAyNDJcXCkgXFwpIFxc KSIgXAotKwkJInByaW50IGFyM1woOjIsMzo0LDoyXCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFy M1woOjIsODosNzo4XCkiICJcXCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTg3LCAyODdcXCkgXFwo XAotKwkJIDE5NywgMjk3XFwpIFxcKSBcXCggXFwoIDE4OCwgMjg4XFwpIFxcKCAxOTgsIDI5OFxc KSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw4Oiw3OjhcKSIKLStnZGJfdGVzdCAicHJp bnQgYXIzXCg6Miw4Oiw4OlwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4OCwgMjg4XFwp IFxcKCAxOTgsXAotKwkJIDI5OFxcKSBcXCkgXFwoIFxcKCAxODksIDI4OVxcKSBcXCggMTk5LCAy OTlcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woOjIsODosODpcKSIKLStnZGJfdGVzdCAi cHJpbnQgYXIzXCg6Miw4Oiw6MlwpIiAiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDE4MSwgMjgx XFwpIFxcKCAxOTEsXAotKwkJIDI5MVxcKSBcXCkgXFwoIFxcKCAxODIsIDI4MlxcKSBcXCggMTky LCAyOTJcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woOjIsODosOjJcKSIKLSsKLStnZGJf dGVzdCAicHJpbnQgYXIzXCg6Miw6Miw3OjhcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwo IFxcKCAxMTcsIDIxN1xcKSBcXCggMTI3LCAyMjdcXCkgXFwpIFxcKFwKLSsJCSBcXCggMTE4LCAy MThcXCkgXFwoIDEyOCwgMjI4XFwpIFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDoyLDoyLDc6 OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDoyLDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxd KyA9IFxcKFxcKCBcXCggMTE4LCAyMThcXCkgXFwoIDEyOCwgMjI4XFwpIFxcKSBcXChcCi0rCQkg XFwoIDExOSwgMjE5XFwpIFxcKCAxMjksIDIyOVxcKSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIz XCg6Miw6Miw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDoyLDoyXCkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCBcXCggMTExLCAyMTFcXCkgXFwoIDEyMSwgMjIxXFwpIFxcKSBc XChcCi0rCQkgXFwoIDExMiwgMjEyXFwpIFxcKCAxMjIsIDIyMlxcKSBcXCkgXFwpIiBcCi0rCQki cHJpbnQgYXIzXCg6Miw6Miw6MlwpIgotKwotKyNUZXN0cyBmb3Igc3ViYXJyYXlzIG9mIDMgZGlt ZW5zaW9uYWwgYXJyYXlzIHdpdGggbGl0ZXJhbHMgYW5kIHN1YnJhbmdlcwotK2dkYl90ZXN0ICJw cmludCBhcjNcKDMsMzo0LDc6OFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggMzM3LCAz NDdcXCkgXFwoIDMzOCwgMzQ4XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMywzOjQsNzo4XCki Ci0rZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0OjUsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0g XFwoXFwoIDM0OCwgMzU4XFwpIFxcKCAzNDksIDM1OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNc KDMsNDo1LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0OjUsOjJcKSIgXAotKwkJIlxc JFxbMC05XF0rID0gXFwoXFwoIDM0MSwgMzUxXFwpIFxcKCAzNDIsIDM1MlxcKSBcXCkiIFwKLSsJ CSJwcmludCBhcjNcKDMsNDo1LDoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0OjUsM1wp IiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgzNDMsIDM1M1xcKSIgXAotKwkJInByaW50IGFyM1wo Myw0OjUsM1wpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsODosNzo4XCkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAyODcsIDI5N1xcKSBcXCggMjg4LCAyOThcXCkgXFwpIiBcCi0r CQkicHJpbnQgYXIzXCgyLDg6LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDIsODosODpc KSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDI4OCwgMjk4XFwpIFxcKCAyODksIDI5OVxc KSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDIsODosODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIz XCgyLDg6LDoyXCkiXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDI4MSwgMjkxXFwpIFxcKCAy ODIsIDI5MlxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDIsODosOjJcKSIKLStnZGJfdGVzdCAi cHJpbnQgYXIzXCgyLDg6LDNcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoMjgzLCAyOTNcXCki IFwKLSsJCSJwcmludCBhcjNcKDIsODosM1wpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDIs OjIsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMTcsIDIyN1xcKSBcXCggMjE4 LCAyMjhcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyLDoyLDc6OFwpIgotK2dkYl90ZXN0ICJw cmludCBhcjNcKDIsOjIsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDIxOCwgMjI4 XFwpIFxcKCAyMTksIDIyOVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDIsOjIsODpcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXIzXCgyLDoyLDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxc KCAyMTEsIDIyMVxcKSBcXCggMjEyLCAyMjJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyLDoy LDoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMiw6MiwzXCkiIFwKLSsJCSJcXCRcWzAtOVxd KyA9IFxcKDIxMywgMjIzXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgyLDoyLDNcKSIKLSsKLStnZGJf dGVzdCAicHJpbnQgYXIzXCgzLDQsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDM0Nywg MzQ4XFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzLDQsNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFy M1woMyw0LDg6XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDM0OCwgMzQ5XFwpIiBcCi0raQkJ InByaW50IGFyM1woMyw0LDg6XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMyw0LDoyXCkiIFwK LSsJCSJcXCRcWzAtOVxdKyA9IFxcKDM0MSwgMzQyXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzLDQs OjJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCg1LDYsN1wpIiBcCi0rCQkiXFwkXFswLTlcXSsg PSA1NjciIFwKLSsJCSJwcmludCBhcjNcKDUsNiw3XCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFy M1woMzo0LDYsNzo4XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAzNjcsIDQ2N1xcKSBc XCggMzY4LCA0NjhcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzOjQsNiw3OjhcKSIKLStnZGJf dGVzdCAicHJpbnQgYXIzXCgzOjQsNiw4OlwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCgg MzY4LCA0NjhcXCkgXFwoIDM2OSwgNDY5XFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMzo0LDYs ODpcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgzOjQsNiw6MlwpIiBcCi0rCQkiXFwkXFswLTlc XSsgPSBcXChcXCggMzYxLCA0NjFcXCkgXFwoIDM2MiwgNDYyXFwpIFxcKSIgXAotKwkJInByaW50 IGFyM1woMzo0LDYsOjJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgzOjQsNiw1XCkiIFwKLSsJ CSJcXCRcWzAtOVxdKyA9IFxcKDM2NSwgNDY1XFwpIiBcCi0rCQkicHJpbnQgYXIzXCgzOjQsNiw1 XCkiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosNiw3OjhcKSIgXAotKwkJIlxcJFxbMC05 XF0rID0gXFwoXFwoIDg2NywgOTY3XFwpIFxcKCA4NjgsIDk2OFxcKSBcXCkiIFwKLSsJCSJwcmlu dCBhcjNcKDg6LDYsNzo4XCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woODosNiw4OlwpIiBcCi0r CQkiXFwkXFswLTlcXSsgPSBcXChcXCggODY4LCA5NjhcXCkgXFwoIDg2OSwgOTY5XFwpIFxcKSIg XAotKwkJInByaW50IGFyM1woODosNiw4OlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDYs OjJcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDg2MSwgOTYxXFwpIFxcKCA4NjIsIDk2 MlxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDg6LDYsOjJcKSIKLStnZGJfdGVzdCAicHJpbnQg YXIzXCg4Oiw2LDVcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoODY1LCA5NjVcXCkiIFwKLSsJ CSJwcmludCBhcjNcKDg6LDYsNVwpIgotKwotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDYsNzo4 XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjcsIDI2N1xcKSBcXCggMTY4LCAyNjhc XCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw2LDc6OFwpIgotK2dkYl90ZXN0ICJwcmludCBh cjNcKDoyLDYsODpcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDE2OCwgMjY4XFwpIFxc KCAxNjksIDI2OVxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjNcKDoyLDYsODpcKSIKLStnZGJfdGVz dCAicHJpbnQgYXIzXCg6Miw2LDoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAxNjEs IDI2MVxcKSBcXCggMTYyLCAyNjJcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw2LDoyXCki Ci0rZ2RiX3Rlc3QgInByaW50IGFyM1woOjIsNiw1XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxc KDE2NSwgMjY1XFwpIiBcCi0rCQkicHJpbnQgYXIzXCg6Miw2LDVcKSIKLSsKLStnZGJfdGVzdCAi cHJpbnQgYXIzXCgzOjQsNTo2LDRcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIDM1NCwg NDU0XFwpIFxcKCAzNjQsIDQ2NFxcKSBcXCkiIFwKLSsJCSJwcmludCBhcjJcKDM6NCw1OjYsNFwp IgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDg6LDU6Niw0XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCA4NTQsIDk1NFxcKSBcXCggODY0LCA5NjRcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXIy XCg4Oiw1OjYsNFwpIgotK2dkYl90ZXN0ICJwcmludCBhcjNcKDoyLDU6Niw0XCkiIFwKLSsJCSJc XCRcWzAtOVxdKyA9IFxcKFxcKCAxNTQsIDI1NFxcKSBcXCggMTY0LCAyNjRcXCkgXFwpIiBcCi0r CQkicHJpbnQgYXIyXCg6Miw1OjYsNFwpIgotKwotKyMgU3RyaWRlID4gMQotK2dkYl90ZXN0ICJw cmludCBhcjFcKDI6NjoyXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKDIsIDQsIDZcXCkiIFwK LSsJCSJwcmludCBhcjFcKDI6NjoyXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMlwoMjo2OjIsMzo0 XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyMywgNDMsIDYzXFwpIFxcKCAyNCwgNDQs IDY0XFwpIFxcKSIgXAotKwkJInByaW50IGFyMlwoMjo2OjIsMzo0XCkiCi0rZ2RiX3Rlc3QgInBy aW50IGFyMlwoMjo2OjIsM1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgyMywgNDMsIDYzXFwp IiBcCi0rCQkicHJpbnQgYXIyXCgyOjY6MiwzXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjo2 OjIsMzo1OjIsNDo3OjNcKSIgXAotKwkJIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAyMzQsIDQz NCwgNjM0XFwpIFxcKCAyNTQsIDQ1NCwgNjU0XFwpXAotKwkJIFxcKSBcXCggXFwoIDIzNywgNDM3 LCA2MzdcXCkgXFwoIDI1NywgNDU3LCA2NTdcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1wo Mjo2OjIsMzo1OjIsNDo3OjNcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIzXCgyOjY6Miw1LDQ6Nzoz XCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9IFxcKFxcKCAyNTQsIDQ1NCwgNjU0XFwpIFxcKCAyNTcs IDQ1NywgNjU3XFwpXAotKwkJIFxcKSIgXAotKwkJInByaW50IGFyM1woMjo2OjIsNSw0Ojc6M1wp IgotKwotKyMgU3RyaWRlIDwgMAotK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6MjotMlwpIiBcCi0r CQkiXFwkXFswLTlcXSsgPSBcXCg4LCA2LCA0LCAyXFwpIiBcCi0rCQkicHJpbnQgYXIxXCg4OjI6 LTJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIyXCg4OjI6LTIsMzo0XCkiIFwKLSsJCSJcXCRcWzAt OVxdKyA9IFxcKFxcKCA4MywgNjMsIDQzLCAyM1xcKSBcXCggODQsIDY0LCA0NCwgMjRcXClcCi0r CQkgXFwpIiBcCi0rCQkicHJpbnQgYXIyXCg4OjI6LTIsMzo0XCkiCi0rZ2RiX3Rlc3QgInByaW50 IGFyMlwoMjo2OjIsM1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXCgyMywgNDMsIDYzXFwpIiBc Ci0rCQkicHJpbnQgYXIyXCgyOjY6MiwzXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyM1woMjozLDc6 MzotNCw0Ojc6M1wpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI3NCwgMzc0XFwp IFxcKCAyMzQsIDMzNFxcKSBcXCkgXFwoXAotKwkJIFxcKCAyNzcsIDM3N1xcKSBcXCggMjM3LCAz MzdcXCkgXFwpIFxcKSIgXAotKwkJInByaW50IGFyM1woMjozLDc6MzotNCw0Ojc6M1wpIgotK2dk Yl90ZXN0ICJwcmludCBhcjNcKDI6NjoyLDUsNzo0Oi0zXCkiIFwKLSsJCSJcXCRcWzAtOVxdKyA9 IFxcKFxcKCAyNTcsIDQ1NywgNjU3XFwpIFxcKCAyNTQsIDQ1NCwgNjU0XFwpXAotKwkJIFxcKSIg XAotKwkJInByaW50IGFyM1woMjo2OjIsNSw3OjQ6LTNcKSIKLSsKLSsjIFRlc3RzIHdpdGggbmVn YXRpdmUgYW5kIG1peGVkIGluZGljZXMKLStnZGJfdGVzdCAicCBhcjRcKDI6NCwgLTI6MSwgLTE1 Oi0xNFwpIiBcCi0rCQkiXFwkXFswLTlcXSsgPSBcXChcXCggXFwoIDI2MSwgMzYxLCA0NjFcXCkg XFwoIDI3MSwgMzcxLCA0NzFcXClcCi0rCQkgXFwoIDI4MSwgMzgxLCA0ODFcXCkgXFwoIDI5MSwg MzkxLCA0OTFcXCkgXFwpIFxcKCBcXCggMjYyLFwKLSsJCSAzNjIsIDQ2MlxcKSBcXCggMjcyLCAz NzIsIDQ3MlxcKSBcXCggMjgyLCAzODIsIDQ4MlxcKSBcXCggMjkyLFwKLSsJCSAzOTIsIDQ5Mlxc KSBcXCkgXFwpIiBcCi0rCQkicHJpbnQgYXI0KDI6NCwgLTI6MSwgLTE1Oi0xNCkiCi0rCi0rZ2Ri X3Rlc3QgInAgYXI0XCg3LC02OjI6MywtN1wpIiBcCi0rICAgICAgICAgICAgICAgICJcXCRcWzAt OVxdKyA9IFxcKDcyOSwgNzU5LCA3ODlcXCkiIFwKLSsgICAgICAgICAgICAgICAgInByaW50IGFy NCg3LC02OjI6MywtNykiCi0rCi0rZ2RiX3Rlc3QgInAgYXI0XCg5OjI6LTIsIC02OjI6MywgLTY6 LTE1Oi0zXCkiIFwKLSsgICAgICAgICAgICAgICAgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCA5 MzAsIDczMCwgNTMwLCAzMzBcXCkgXFwoIDk2MCwgNzYwLFwKLSsJCSA1NjAsIDM2MFxcKSBcXCgg OTkwLCA3OTAsIDU5MCwgMzkwXFwpIFxcKSBcXCggXFwoIDkyNywgNzI3LFwKLSsJCSA1MjcsIDMy N1xcKSBcXCggOTU3LCA3NTcsIDU1NywgMzU3XFwpIFxcKCA5ODcsIDc4NywgNTg3LFwKLSsJCSAz ODdcXCkgXFwpIFxcKCBcXCggOTI0LCA3MjQsIDUyNCwgMzI0XFwpIFxcKCA5NTQsIDc1NCwgNTU0 LFwKLSsJCSAzNTRcXCkgXFwoIDk4NCwgNzg0LCA1ODQsIDM4NFxcKSBcXCkgXFwoIFxcKCA5MjEs IDcyMSwgNTIxLFwKLSsJCSAzMjFcXCkgXFwoIDk1MSwgNzUxLCA1NTEsIDM1MVxcKSBcXCggOTgx LCA3ODEsIDU4MSwgMzgxXFwpIFxcKVwKLSsJCSBcXCkiIFwKLSsgICAgICAgICAgICAgICAgInBy aW50IGFyNCg5OjI6LTIsIC02OjI6MywgLTY6LTE1Oi0zKSIKLSsKLStnZGJfdGVzdCAicCBhcjRc KDosOiw6XCkiIFwKLSsgICAgICAgICAgICAgICAgIlxcJFxbMC05XF0rID0gXFwoXFwoIFxcKCAx MTEsIDIxMSwgMzExLCA0MTEsIDUxMSwgNjExLCA3MTEsXAotKwkJIDgxMSwgLioiIFwKLSsgICAg ICAgICAgICAgICAgInByaW50IGFyNCg6LDosOikiCi0rCi0rIyBQcm92b2tlIGVycm9yIG1lc3Nh Z2VzIGZvciBiYWQgdXNlciBpbnB1dAotK2dkYl90ZXN0ICJwcmludCBhcjFcKDA6NFwpIiBcCi0r CQkicHJvdmlkZWQgYm91bmRcXChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCi0r CQkicHJpbnQgYXIxXCgwOjRcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjEyXCkiIFwKLSsJ CSJwcm92aWRlZCBib3VuZFxcKHNcXCkgb3V0c2lkZSBhcnJheSBib3VuZFxcKHNcXCkiIFwKLSsJ CSJwcmludCBhcjFcKDg6MTJcKSIKLStnZGJfdGVzdCAicHJpbnQgYXIxXCg4OjI6XCkiIFwKLSsJ CSJBIHN5bnRheCBlcnJvciBpbiBleHByZXNzaW9uLCBuZWFyIGBcXCknLiIgXAotKwkJInByaW50 IGFyMVwoODoyOlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDg6MjoyXCkiIFwKLSsJCSJXcm9u ZyB2YWx1ZSBwcm92aWRlZCBmb3Igc3RyaWRlIGFuZCBib3VuZGFyaWVzIiBcCi0rCQkicHJpbnQg YXIxXCg4OjI6MlwpIgotK2dkYl90ZXN0ICJwcmludCBhcjFcKDI6ODotMlwpIiBcCi0rCQkiV3Jv bmcgdmFsdWUgcHJvdmlkZWQgZm9yIHN0cmlkZSBhbmQgYm91bmRhcmllcyIgXAotKwkJInByaW50 IGFyMVwoMjo4Oi0yXCkiCi0rZ2RiX3Rlc3QgInByaW50IGFyMVwoMjo3OjBcKSIgXAotKwkJIlN0 cmlkZSBtdXN0IG5vdCBiZSAwIiBcCi0rCQkicHJpbnQgYXIxXCgyOjc6MFwpIgotK2dkYl90ZXN0 ICJwcmludCBhcjFcKDM6N1wpID0gNDIiIFwKLSsJCSJJbnZhbGlkIGNhc3QuIiBcCi0rCQkiQXNz aWdubWVudCBvZiB2YWx1ZSB0byBzdWJhcnJheSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N0YXRpYy1hcnJheXMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdGF0aWMtYXJyYXlzLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RhdGljLWFycmF5cy5mOTAKLUBAIC0w LDAgKzEsNTUgQEAKLSshIENvcHlyaWdodCAyMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKyEKLSshIENvbnRyaWJ1dGVkIGJ5IEludGVsIENvcnAuIDxjaHJpc3RvcGgudC53ZWlu bWFubkBpbnRlbC5jb20+Ci0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStz dWJyb3V0aW5lIHN1YgotKyAgaW50ZWdlciwgZGltZW5zaW9uKDkpIDo6IGFyMQotKyAgaW50ZWdl ciwgZGltZW5zaW9uKDksOSkgOjogYXIyCi0rICBpbnRlZ2VyLCBkaW1lbnNpb24oOSw5LDkpIDo6 IGFyMwotKyAgaW50ZWdlciwgZGltZW5zaW9uKDEwLC03OjMsIC0xNTotNSkgOjogYXI0Ci0rICBp bnRlZ2VyIDo6IGksaixrCi0rCi0rICBhcjEgPSAxCi0rICBhcjIgPSAxCi0rICBhcjMgPSAxCi0r ICBhcjQgPSA0Ci0rCi0rICAhIFJlc3VsdGluZyBhcnJheSBhcjMgbG9va3MgbGlrZSAoKCggMTEx LCAxMTIsIDExMywgMTE0LC4uLikpKQotKyAgZG8gaSA9IDEsIDksIDEKLSsgICAgYXIxKGkpID0g aQotKyAgICBkbyBqID0gMSwgOSwgMQotKyAgICAgIGFyMihpLGopID0gaSoxMCArIGoKLSsgICAg ICBkbyBrID0gMSwgOSwgMQotKyAgICAgICAgYXIzKGksaixrKSA9IGkqMTAwICsgaioxMCArIGsK LSsgICAgICBlbmQgZG8KLSsgICAgZW5kIGRvCi0rICBlbmQgZG8KLSsKLSsgIGRvIGkgPSAxLCAx MCwgMQotKyAgICBkbyBqID0gLTcsIDMsIDEKLSsgICAgICBkbyBrID0gLTE1LCAtNSwgMQotKyAg ICAgICAgYXI0KGksaixrKSA9IGkqMTAwICsgKGorOCkqMTAgKyAoaysxNikKLSsgICAgICBlbmQg ZG8KLSsgICAgZW5kIGRvCi0rICBlbmQgZG8KLSsKLSsgIGFyMSgxKSA9IDExICAhQlAxCi0rICBy ZXR1cm4KLStlbmQKLSsKLStwcm9ncmFtIHRlc3Rwcm9nCi0rICBjYWxsIHN1YgotK2VuZAotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS1zaXplb2YuZXhwCi1AQCAtMzUsNyArMzUsOCBAQCBnZGJfdGVzdCAicHJpbnQgc2l6 ZW9mKHZsYTEpIiAiID0gMCIgInByaW50IHNpemVvZiBub24tYWxsb2NhdGVkIHZsYTEiCi0gZ2Ri X3Rlc3QgInByaW50IHNpemVvZih2bGExKDMsMiwxKSkiIFwKLSAgICAgIm5vIHN1Y2ggdmVjdG9y IGVsZW1lbnQgXFwodmVjdG9yIG5vdCBhbGxvY2F0ZWRcXCkiIFwKLSAgICAgInByaW50IHNpemVv ZiBub24tYWxsb2NhdGVkIGluZGV4ZWQgdmxhMSIKLS1nZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHZs YTEoMzo0LDIsMSkpIiAiYXJyYXkgbm90IGFsbG9jYXRlZCIgXAotK2dkYl90ZXN0ICJwcmludCBz aXplb2YodmxhMSgzOjQsMiwxKSkiIFwKLSsgICAgInByb3ZpZGVkIGJvdW5kXFwoc1xcKSBvdXRz aWRlIGFycmF5IGJvdW5kXFwoc1xcKSIgXAotICAgICAicHJpbnQgc2l6ZW9mIG5vbi1hbGxvY2F0 ZWQgc2xpY2VkIHZsYTEiCi0gCi0gIyBUcnkgdG8gYWNjZXNzIHZhbHVlIGluIGFsbG9jYXRlZCBW TEEKLUBAIC00NCw3ICs0NSw3IEBAIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWFs bG9jYXRlZCIKLSBnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHZsYTEpIiAiID0gNDAwMCIgInByaW50 IHNpemVvZiBhbGxvY2F0ZWQgdmxhMSIKLSBnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHZsYTEoMywy LDEpKSIgIjQiIFwKLSAgICAgInByaW50IHNpemVvZiBlbGVtZW50IGZyb20gYWxsb2NhdGVkIHZs YTEiCi0tZ2RiX3Rlc3QgInByaW50IHNpemVvZih2bGExKDM6NCwyLDEpKSIgIjgwMCIgXAotK2dk Yl90ZXN0ICJwcmludCBzaXplb2YodmxhMSgzOjQsMiwxKSkiICI4IiBcCi0gICAgICJwcmludCBz aXplb2Ygc2xpY2VkIHZsYTEiCi0gCi0gIyBUcnkgdG8gYWNjZXNzIHZhbHVlcyBpbiB1bmRlZmlu ZWQgcG9pbnRlciB0byBWTEEgKGRhbmdsaW5nKQotQEAgLTUyLDcgKzUzLDggQEAgZ2RiX3Rlc3Qg InByaW50IHNpemVvZihwdmxhKSIgIiA9IDAiICJwcmludCBzaXplb2Ygbm9uLWFzc29jaWF0ZWQg cHZsYSIKLSBnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHB2bGEoMywyLDEpKSIgXAotICAgICAibm8g c3VjaCB2ZWN0b3IgZWxlbWVudCBcXCh2ZWN0b3Igbm90IGFzc29jaWF0ZWRcXCkiIFwKLSAgICAg InByaW50IHNpemVvZiBub24tYXNzb2NpYXRlZCBpbmRleGVkIHB2bGEiCi0tZ2RiX3Rlc3QgInBy aW50IHNpemVvZihwdmxhKDM6NCwyLDEpKSIgImFycmF5IG5vdCBhc3NvY2lhdGVkIiBcCi0rZ2Ri X3Rlc3QgInByaW50IHNpemVvZihwdmxhKDM6NCwyLDEpKSIgXAotKyAgICAicHJvdmlkZWQgYm91 bmRcXChzXFwpIG91dHNpZGUgYXJyYXkgYm91bmRcXChzXFwpIiBcCi0gICAgICJwcmludCBzaXpl b2Ygbm9uLWFzc29jaWF0ZWQgc2xpY2VkIHB2bGEiCi0gCi0gIyBUcnkgdG8gYWNjZXNzIHZhbHVl cyBpbiBwb2ludGVyIHRvIFZMQSBhbmQgY29tcGFyZSB0aGVtCi1AQCAtNjEsNyArNjMsOCBAQCBn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1hc3NvY2lhdGVkIgotIGdkYl90ZXN0ICJw cmludCBzaXplb2YocHZsYSkiICIgPSA0MDAwIiAicHJpbnQgc2l6ZW9mIGFzc29jaWF0ZWQgcHZs YSIKLSBnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHB2bGEoMywyLDEpKSIgIjQiIFwKLSAgICAgInBy aW50IHNpemVvZiBlbGVtZW50IGZyb20gYXNzb2NpYXRlZCBwdmxhIgotLWdkYl90ZXN0ICJwcmlu dCBzaXplb2YocHZsYSgzOjQsMiwxKSkiICI4MDAiICJwcmludCBzaXplb2Ygc2xpY2VkIHB2bGEi Ci0rCi0rZ2RiX3Rlc3QgInByaW50IHNpemVvZihwdmxhKDM6NCwyLDEpKSIgIjgiICJwcmludCBz aXplb2Ygc2xpY2VkIHB2bGEiCi0gCi0gZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZsYTEtbmVnLWJvdW5kcy12MSJdCi0gZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZs YTEtbmVnLWJvdW5kcy12MSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS1zdHJpZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4 cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIENvcHly aWdodCAyMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSAiLmY5MCIKLSsKLStpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2Zp bGV9IFwKLSsgICAge2RlYnVnIGY5MCBxdWlldH1dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0r Ci0raWYgIVtydW50byBNQUlOX19dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJzZXQgbWF4LXZhbHVlLXNpemUgdW5saW1pdGVkIiBcCi0rICAgICJzZXQgbWF4LXZh bHVlLXNpemUgdG8gdW5saW1pdGVkIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJyZS1yZXZlcnNlLWVsZW1lbnRzIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAicmUtcmV2ZXJzZS1lbGVtZW50cyIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IFxcXCgx LCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcXCkiIFwKLSsgICJwcmludCByZS1yZXZlcnNl LWVsZW1lbnRzIgotK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMSIgInByaW50IGZpcnN0 IHJlLXJldmVyc2UtZWxlbWVudCIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSgxMCkiICIgPSAxMCIg InByaW50IGxhc3QgcmUtcmV2ZXJzZS1lbGVtZW50IgotKwotK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJvZGQtZWxlbWVudHMiXQotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJvZGQtZWxlbWVudHMiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBcXFwoMSwgMywg NSwgNywgOVxcXCkiICJwcmludCBvZGQtZWxlbWVudHMiCi0rZ2RiX3Rlc3QgInByaW50IHB2bGEo MSkiICIgPSAxIiAicHJpbnQgZmlyc3Qgb2RkLWVsZW1lbnQiCi0rZ2RiX3Rlc3QgInByaW50IHB2 bGEoNSkiICIgPSA5IiAicHJpbnQgbGFzdCBvZGQtZWxlbWVudCIKLSsKLStnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAic2luZ2xlLWVsZW1lbnQiXQotK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJzaW5nbGUtZWxlbWVudCIKLStnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9 IFxcXCg1XFxcKSIgInByaW50IHNpbmdsZS1lbGVtZW50IgotK2dkYl90ZXN0ICJwcmludCBwdmxh KDEpIiAiID0gNSIgInByaW50IG9uZSBzaW5nbGUtZWxlbWVudCIKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtc3RyaWRlLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAKLUBAIC0w LDAgKzEsMjkgQEAKLSshIENvcHlyaWdodCAyMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsh IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rcHJvZ3JhbSB2bGFf c3RyaWRlCi0rICBpbnRlZ2VyLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZsYSAoOikKLSsgIGlu dGVnZXIsIHBvaW50ZXIgOjogcHZsYSAoOikKLSsKLSsgIGFsbG9jYXRlKHZsYSgxMCkpCi0rICB2 bGEgPSAoLyAoSSwgSSA9IDEsMTApIC8pCi0rCi0rICBwdmxhID0+IHZsYSgxMDoxOi0xKQotKyAg cHZsYSA9PiBwdmxhKDEwOjE6LTEpCi0rICBwdmxhID0+IHZsYSgxOjEwOjIpICAgISByZS1yZXZl cnNlLWVsZW1lbnRzCi0rICBwdmxhID0+IHZsYSg1OjQ6LTIpICAgISBvZGQtZWxlbWVudHMKLSsK LSsgIHB2bGEgPT4gbnVsbCgpICAgICAgICAhIHNpbmdsZS1lbGVtZW50Ci0rZW5kIHByb2dyYW0g dmxhX3N0cmlkZQotZGlmZiAtLWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYwotLS0t IGEvZ2RiL3ZhbG9wcy5jCi0rKysgYi9nZGIvdmFsb3BzLmMKLUBAIC0zNzU2LDEzICszNzU2LDQy IEBAIHZhbHVlX29mX3RoaXNfc2lsZW50IChjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFu ZykKLSAKLSBzdHJ1Y3QgdmFsdWUgKgotIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5 LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCi0rewotKyAgLyogUGFzcyB1bmFsdGVyZWQgYXJn dW1lbnRzIHRvIFZBTFVFX1NMSUNFXzEsIHBsdXMgYSBkZWZhdWx0IHN0cmlkZQotKyAgICAgdmFs dWUgb2YgJzEnLCB3aGljaCByZXR1cm5zIGV2ZXJ5IGVsZW1lbnQgYmV0d2VlbiBMT1dCT1VORCBh bmQKLSsgICAgIChMT1dCT1VORCArIExFTkdUSCkuICBXZSBhbHNvIHByb3ZpZGUgYSBkZWZhdWx0 IENBTExfQ09VTlQgb2YgJzEnCi0rICAgICBhcyB3ZSBhcmUgb25seSBjb25zaWRlcmluZyB0aGUg aGlnaGVzdCBkaW1lbnNpb24sIG9yIHdlIGFyZQotKyAgICAgd29ya2luZyBvbiBhIG9uZSBkaW1l bnNpb25hbCBhcnJheS4gIFNvIHdlIGNhbGwgVkFMVUVfU0xJQ0VfMQotKyAgICAgZXhhY3RseSBv bmNlLiAgKi8KLSsgIHJldHVybiB2YWx1ZV9zbGljZV8xIChhcnJheSwgbG93Ym91bmQsIGxlbmd0 aCwgMSwgMSk7Ci0rfQotKwotKy8qIFZBTFVFX1NMSUNFXzEgaXMgY2FsbGVkIGZvciBlYWNoIGFy cmF5IGRpbWVuc2lvbiB0byBjYWxjdWxhdGUgdGhlIG51bWJlcgotKyAgIG9mIGVsZW1lbnRzIGFz IGRlZmluZWQgYnkgdGhlIHN1YnNjcmlwdCBleHByZXNzaW9uLgotKyAgIENBTExfQ09VTlQgaXMg dXNlZCB0byBkZXRlcm1pbmUgaWYgd2UgYXJlIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIG9uY2UsIGUu Zy4KLSsgICB3ZSBhcmUgd29ya2luZyBvbiB0aGUgY3VycmVudCBkaW1lbnNpb24gb2YgQVJSQVks IG9yIGlmIHdlIGFyZSBjYWxsaW5nCi0rICAgdGhlIGZ1bmN0aW9uIHJlcGVhdGVkbHkuICBJbiB0 aGUgbGF0ZXIgY2FzZSB3ZSBuZWVkIHRvIHRha2UgZWxlbWVudHMKLSsgICBmcm9tIHRoZSBUQVJH RVRfVFlQRSBvZiBBUlJBWS4KLSsgICBXaXRoIGEgQ0FMTF9DT1VOVCBncmVhdGVyIHRoYW4gMSB3 ZSBjYWxjdWxhdGUgdGhlIG9mZnNldHMgZm9yIGV2ZXJ5IGVsZW1lbnQKLSsgICB0aGF0IHNob3Vs ZCBiZSBpbiB0aGUgcmVzdWx0IGFycmF5LiAgVGhlbiB3ZSBmZXRjaCB0aGUgY29udGVudHMgYW5k IHRoZW4KLSsgICBjb3B5IHRoZW0gaW50byB0aGUgcmVzdWx0IGFycmF5LiAgVGhlIHJlc3VsdCBh cnJheSB3aWxsIGhhdmUgb25lIGRpbWVuc2lvbgotKyAgIGxlc3MgdGhhbiB0aGUgaW5wdXQgYXJy YXksIHNvIGxhdGVyIG9uIHdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlIGluZGljZXMgYW5kCi0rICAg cmFuZ2VzIGluIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgKi8KLSsKLStzdHJ1Y3QgdmFsdWUgKgot K3ZhbHVlX3NsaWNlXzEgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxl bmd0aCwKLSsJICAgICAgIGludCBzdHJpZGVfbGVuZ3RoLCBpbnQgY2FsbF9jb3VudCkKLSB7Ci0g ICBzdHJ1Y3QgdHlwZSAqc2xpY2VfcmFuZ2VfdHlwZSwgKnNsaWNlX3R5cGUsICpyYW5nZV90eXBl OwotLSAgTE9OR0VTVCBsb3dlcmJvdW5kLCB1cHBlcmJvdW5kOwotLSAgc3RydWN0IHZhbHVlICpz bGljZTsKLS0gIHN0cnVjdCB0eXBlICphcnJheV90eXBlOwotKyAgc3RydWN0IHR5cGUgKmFycmF5 X3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOwotKyAgc3RydWN0IHR5 cGUgKmVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlw ZSkpOwotKyAgdW5zaWduZWQgaW50IGVsdF9zaXplLCBlbHRfb2ZmczsKLSsgIExPTkdFU1QgYXJ5 X2hpZ2hfYm91bmQsIGFyeV9sb3dfYm91bmQ7Ci0rICBzdHJ1Y3QgdmFsdWUgKnY7Ci0rICBpbnQg c2xpY2VfcmFuZ2Vfc2l6ZSwgaSA9IDAsIHJvd19jb3VudCA9IDEsIGVsZW1fY291bnQgPSAxOwot IAotLSAgYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7Ci0r ICAvKiBDaGVjayBmb3IgbGVnYWN5IGNvZGUgaWYgd2UgYXJlIGFjdHVhbGx5IGRlYWxpbmcgd2l0 aCBhbiBhcnJheSBvcgotKyAgICAgc3RyaW5nLiAgKi8KLSAgIGlmIChhcnJheV90eXBlLT5jb2Rl ICgpICE9IFRZUEVfQ09ERV9BUlJBWQotICAgICAgICYmIGFycmF5X3R5cGUtPmNvZGUgKCkgIT0g VFlQRV9DT0RFX1NUUklORykKLSAgICAgZXJyb3IgKF8oImNhbm5vdCB0YWtlIHNsaWNlIG9mIG5v bi1hcnJheSIpKTsKLUBAIC0zNzcyLDQ1ICszODAxLDE1NSBAQCB2YWx1ZV9zbGljZSAoc3RydWN0 IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQotICAgaWYgKHR5cGVfbm90 X2Fzc29jaWF0ZWQgKGFycmF5X3R5cGUpKQotICAgICBlcnJvciAoXygiYXJyYXkgbm90IGFzc29j aWF0ZWQiKSk7Ci0gCi0tICByYW5nZV90eXBlID0gYXJyYXlfdHlwZS0+aW5kZXhfdHlwZSAoKTsK LS0gIGlmIChnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVw cGVyYm91bmQpIDwgMCkKLS0gICAgZXJyb3IgKF8oInNsaWNlIGZyb20gYmFkIGFycmF5IG9yIGJp dHN0cmluZyIpKTsKLSsgIGFyeV9sb3dfYm91bmQgPSBhcnJheV90eXBlLT5pbmRleF90eXBlICgp LT5ib3VuZHMgKCktPmxvdy5jb25zdF92YWwgKCk7Ci0rICBhcnlfaGlnaF9ib3VuZCA9IGFycmF5 X3R5cGUtPmluZGV4X3R5cGUgKCktPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0rCi0r ICAvKiBXaGVuIHdlIGFyZSB3b3JraW5nIG9uIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXksIHdl IG5lZWQgdG8gZ2V0IHRoZQotKyAgICAgYXR0cmlidXRlcyBvZiB0aGUgdW5kZXJseWluZyB0eXBl LiAgKi8KLSsgIGlmIChjYWxsX2NvdW50ID4gMSkKLSsgICAgewotKyAgICAgIGFyeV9sb3dfYm91 bmQgPSBlbHRfdHlwZS0+aW5kZXhfdHlwZSAoKS0+Ym91bmRzICgpLT5sb3cuY29uc3RfdmFsICgp OwotKyAgICAgIGFyeV9oaWdoX2JvdW5kID0gZWx0X3R5cGUtPmluZGV4X3R5cGUgKCktPmJvdW5k cyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0rICAgICAgZWx0X3R5cGUgPSBjaGVja190eXBlZGVm IChUWVBFX1RBUkdFVF9UWVBFIChlbHRfdHlwZSkpOwotKyAgICAgIHJvd19jb3VudCA9IFRZUEVf TEVOR1RIIChhcnJheV90eXBlKQotKwkJICAgIC8gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZ UEUgKGFycmF5X3R5cGUpKTsKLSsgICAgfQotKwotKyAgLyogV2l0aCBhIHN0cmlkZSBvZiAnMScs IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgcGVyIHJlc3VsdCByb3cgaXMgZXF1YWwgdG8KLSsgICAg IHRoZSBMRU5HVEggb2YgdGhlIHN1YmFycmF5LiAgV2l0aCBub24tZGVmYXVsdCBzdHJpZGUgdmFs dWVzLCB3ZSBza2lwCi0rICAgICBlbGVtZW50cywgYnV0IGhhdmUgdG8gYWRkIHRoZSBzdGFydCBl bGVtZW50IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YKLSsgICAgIGVsZW1lbnRzIHBlciByb3cuICAq LwotKyAgaWYgKHN0cmlkZV9sZW5ndGggPT0gMSkKLSsgICAgZWxlbV9jb3VudCA9IGxlbmd0aDsK LSsgIGVsc2UKLSsgICAgZWxlbV9jb3VudCA9ICgobGVuZ3RoIC0gMSkgLyBzdHJpZGVfbGVuZ3Ro KSArIDE7Ci0rCi0rICBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7Ci0rICBlbHRf b2ZmcyA9IGxvd2JvdW5kIC0gYXJ5X2xvd19ib3VuZDsKLSsKLSsgIGVsdF9vZmZzICo9IGVsdF9z aXplOwotIAotLSAgaWYgKGxvd2JvdW5kIDwgbG93ZXJib3VuZCB8fCBsZW5ndGggPCAwCi0tICAg ICAgfHwgbG93Ym91bmQgKyBsZW5ndGggLSAxID4gdXBwZXJib3VuZCkKLS0gICAgZXJyb3IgKF8o InNsaWNlIG91dCBvZiByYW5nZSIpKTsKLSsgIC8qIENoZWNrIGZvciB2YWxpZCB1c2VyIGlucHV0 LiAgSW4gY2FzZSBvZiBGb3J0cmFuIHRoaXMgd2FzIGFscmVhZHkgZG9uZQotKyAgICAgaW4gdGhl IGNhbGxpbmcgZnVuY3Rpb24uICAqLwotKyAgaWYgKGNhbGxfY291bnQgPT0gMQotKwkmJiAoIVRZ UEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90eXBlKQotKwkgICAgICAm JiBlbHRfb2ZmcyA+PSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkpKQotKyAgICBlcnJvciAoXygi bm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIpKTsKLSsKLSsgIC8qIENBTExfQ09VTlQgaXMgMSB3aGVu IHdlIGFyZSBkZWFsaW5nIGVpdGhlciB3aXRoIHRoZSBoaWdoZXN0IGRpbWVuc2lvbgotKyAgICAg b2YgdGhlIGFycmF5LCBvciBhIG9uZSBkaW1lbnNpb25hbCBhcnJheS4gIFNldCBSQU5HRV9UWVBF IGFjY29yZGluZ2x5LgotKyAgICAgSW4gYm90aCBjYXNlcyB3ZSBjYWxjdWxhdGUgaG93IG1hbnkg cm93cy9lbGVtZW50cyB3aWxsIGJlIGluIHRoZSBvdXRwdXQKLSsgICAgIGFycmF5IGJ5IHNldHRp bmcgc2xpY2VfcmFuZ2Vfc2l6ZS4gICovCi0rICBpZiAoY2FsbF9jb3VudCA9PSAxKQotKyAgICB7 Ci0rICAgICAgcmFuZ2VfdHlwZSA9IGFycmF5X3R5cGUtPmluZGV4X3R5cGUgKCk7Ci0rICAgICAg c2xpY2VfcmFuZ2Vfc2l6ZSA9IGFyeV9sb3dfYm91bmQgKyBlbGVtX2NvdW50IC0gMTsKLSsKLSsg ICAgICAvKiBDaGVjayBpZiB0aGUgYXJyYXkgYm91bmRzIGFyZSB2YWxpZC4gICovCi0rICAgICAg aWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZhcnlfbG93X2JvdW5kLCAmYXJ5 X2hpZ2hfYm91bmQpIDwgMCkKLSsJZXJyb3IgKF8oInNsaWNlIGZyb20gYmFkIGFycmF5IG9yIGJp dHN0cmluZyIpKTsKLSsgICAgfQotKyAgLyogV2hlbiBDQUxMX0NPVU5UIGlzIGdyZWF0ZXIgdGhh biAxLCB3ZSBhcmUgZGVhbGluZyB3aXRoIGFuIGFycmF5IG9mIGFycmF5cy4KLSsgICAgIFNvIHdl IG5lZWQgdG8gZ2V0IHRoZSB0eXBlIGJlbG93IHRoZSBjdXJyZW50IG9uZSBhbmQgc2V0IHRoZSBS QU5HRV9UWVBFCi0rICAgICBhY2NvcmRpbmdseS4gICovCi0rICBlbHNlCi0rICAgIHsKLSsgICAg ICByYW5nZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSktPmluZGV4X3R5cGUg KCk7Ci0rICAgICAgc2xpY2VfcmFuZ2Vfc2l6ZSA9IGFyeV9sb3dfYm91bmQgKyAocm93X2NvdW50 ICogZWxlbV9jb3VudCkgLSAxOwotKyAgICAgIGFyeV9sb3dfYm91bmQgPSByYW5nZV90eXBlLT5i b3VuZHMgKCktPmxvdy5jb25zdF92YWwgKCk7Ci0rICAgIH0KLSAKLSAgIC8qIEZJWE1FLXR5cGUt YWxsb2NhdGlvbjogbmVlZCBhIHdheSB0byBmcmVlIHRoaXMgdHlwZSB3aGVuIHdlIGFyZQotLSAg ICAgZG9uZSB3aXRoIGl0LiAgKi8KLS0gIHNsaWNlX3JhbmdlX3R5cGUgPSBjcmVhdGVfc3RhdGlj X3JhbmdlX3R5cGUgKE5VTEwsCi0tCQkJCQkgICAgICAgVFlQRV9UQVJHRVRfVFlQRSAocmFuZ2Vf dHlwZSksCi0tCQkJCQkgICAgICAgbG93Ym91bmQsCi0tCQkJCQkgICAgICAgbG93Ym91bmQgKyBs ZW5ndGggLSAxKTsKLSsgICAgICBkb25lIHdpdGggaXQuICAqLwotIAotKyAgc2xpY2VfcmFuZ2Vf dHlwZSA9IGNyZWF0ZV9zdGF0aWNfcmFuZ2VfdHlwZSAoTlVMTCwgVFlQRV9UQVJHRVRfVFlQRSAo cmFuZ2VfdHlwZSksCi0rCQkJCQkgICAgICAgYXJ5X2xvd19ib3VuZCwgc2xpY2VfcmFuZ2Vfc2l6 ZSk7Ci0gICB7Ci0tICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9U WVBFIChhcnJheV90eXBlKTsKLS0gICAgTE9OR0VTVCBvZmZzZXQKLS0gICAgICA9IChsb3dib3Vu ZCAtIGxvd2VyYm91bmQpICogVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKGVsZW1lbnRfdHlw ZSkpOwotKyAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlOwotIAotLSAgICBzbGljZV90eXBl ID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsCi0tCQkJCSAgICBlbGVtZW50X3R5cGUsCi0tCQkJ CSAgICBzbGljZV9yYW5nZV90eXBlKTsKLS0gICAgc2xpY2VfdHlwZS0+c2V0X2NvZGUgKGFycmF5 X3R5cGUtPmNvZGUgKCkpOwotKyAgICAvKiBXaGVuIGJvdGggQ0FMTF9DT1VOVCBhbmQgU1RSSURF X0xFTkdUSCBlcXVhbCAxLCB3ZSBjYW4gdXNlIHRoZSBsZWdhY3kKLSsgICAgICAgY29kZSBmb3Ig c3ViYXJyYXlzLiAgKi8KLSsgICAgaWYgKGNhbGxfY291bnQgPT0gMSAmJiBzdHJpZGVfbGVuZ3Ro ID09IDEpCi0rICAgICAgewotKwllbGVtZW50X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJh eV90eXBlKTsKLSsKLSsJc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCBlbGVt ZW50X3R5cGUsIHNsaWNlX3JhbmdlX3R5cGUpOwotKwotKwlzbGljZV90eXBlLT5zZXRfY29kZSAo YXJyYXlfdHlwZS0+Y29kZSAoKSk7Ci0gCi0tICAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0g bHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6eSAoYXJyYXkpKQotLSAgICAgIHNsaWNlID0gYWxsb2Nh dGVfdmFsdWVfbGF6eSAoc2xpY2VfdHlwZSk7Ci0rCWlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0g bHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6eSAoYXJyYXkpKQotKwkgIHYgPSBhbGxvY2F0ZV92YWx1 ZV9sYXp5IChzbGljZV90eXBlKTsKLSsJZWxzZQotKwkgIHsKLSsJICAgIHYgPSBhbGxvY2F0ZV92 YWx1ZSAoc2xpY2VfdHlwZSk7Ci0rCSAgICB2YWx1ZV9jb250ZW50c19jb3B5ICh2LAotKwkJCQkg dmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2KSwKLSsJCQkJIGFycmF5LAotKwkJCQkgdmFsdWVfZW1i ZWRkZWRfb2Zmc2V0IChhcnJheSkgKyBlbHRfb2ZmcywKLSsJCQkJIGVsdF9zaXplICogbG9uZ2Vz dF90b19pbnQgKGxlbmd0aCkpOwotKwkgIH0KLSsKLSsgICAgICB9Ci0rICAgIC8qIFdpdGggYSBD QUxMX0NPVU5UIG9yIFNUUklERV9MRU5HVEggYXJlIGdyZWF0ZXIgdGhhbiAxIHdlIGFyZSB3b3Jr aW5nCi0rICAgICAgIG9uIGEgcmFuZ2Ugb2YgcmFuZ2VzLiAgU28gd2UgY29weSB0aGUgcmVsZXZh bnQgZWxlbWVudHMgaW50byB0aGUKLSsgICAgICAgbmV3IGFycmF5IHdlIHJldHVybi4gICovCi0g ICAgIGVsc2UKLSAgICAgICB7Ci0tCXNsaWNlID0gYWxsb2NhdGVfdmFsdWUgKHNsaWNlX3R5cGUp OwotLQl2YWx1ZV9jb250ZW50c19jb3B5IChzbGljZSwgMCwgYXJyYXksIG9mZnNldCwKLS0JCQkg ICAgIHR5cGVfbGVuZ3RoX3VuaXRzIChzbGljZV90eXBlKSk7Ci0rCWludCBqLCBvZmZzX3N0b3Jl ID0gZWx0X29mZnM7Ci0rCUxPTkdFU1QgZHN0X29mZnNldCA9IDA7Ci0rCUxPTkdFU1Qgc3JjX3Jv d19sZW5ndGggPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSkpOwot KwotKwlpZiAoY2FsbF9jb3VudCA9PSAxKQotKwkgIHsKLSsJICAgIC8qIFdoZW4gQ0FMTF9DT1VO VCBpcyBlcXVhbCB0byAxIHdlIGFyZSB3b3JraW5nIG9uIHRoZSBjdXJyZW50IHJhbmdlCi0rCSAg ICAgICBhbmQgdXNlIHRoZXNlIGVsZW1lbnRzIGRpcmVjdGx5LiAgKi8KLSsJICAgIGVsZW1lbnRf dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpOwotKwkgIH0KLSsJZWxzZQotKwkg IHsKLSsJICAgIC8qIFdvcmtpbmcgb24gYW4gYXJyYXkgb2YgYXJyYXlzLCB0aGUgdHlwZSBvZiB0 aGUgZWxlbWVudHMgaXMgdGhlIHR5cGUKLSsJICAgICAgIG9mIHRoZSBzdWJhcnJheXMnIHR5cGUu ICAqLwotKwkgICAgZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9UQVJHRVRf VFlQRSAoYXJyYXlfdHlwZSkpOwotKwkgIH0KLSsKLSsJc2xpY2VfdHlwZSA9IGNyZWF0ZV9hcnJh eV90eXBlIChOVUxMLCBlbGVtZW50X3R5cGUsIHNsaWNlX3JhbmdlX3R5cGUpOwotKwotKwkgLyog SWYgd2UgaGF2ZSBhIG9uZSBkaW1lbnNpb25hbCBhcnJheSwgd2UgY29weSBpdHMgdHlwZSBjb2Rl LiAgRm9yIGEKLSsJICAgIG11bHRpIGRpbWVuc2lvbmFsIGFycmF5IHdlIGNvcHkgdGhlIGVtYmVk ZGVkIHR5cGUncyB0eXBlIGNvZGUuICAqLwotKwlpZiAoY2FsbF9jb3VudCA9PSAxKQotKwkgIHNs aWNlX3R5cGUtPnNldF9jb2RlIChhcnJheV90eXBlLT5jb2RlICgpKTsKLSsJZWxzZQotKwkgIHNs aWNlX3R5cGUtPnNldF9jb2RlICgoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXlfdHlwZSktPmNvZGUg KCkpKTsKLSsKLSsJdiA9IGFsbG9jYXRlX3ZhbHVlIChzbGljZV90eXBlKTsKLSsKLSsJLyogSXRl cmF0ZSB0aHJvdWdoIHRoZSByb3dzIG9mIHRoZSBvdXRlciBhcnJheSBhbmQgc2V0IHRoZSBuZXcg b2Zmc2V0Ci0rCSAgIGZvciBlYWNoIHJvdy4gICovCi0rCWZvciAoaSA9IDA7IGkgPCByb3dfY291 bnQ7IGkrKykKLSsJICB7Ci0rCSAgICBlbHRfb2ZmcyA9IG9mZnNfc3RvcmUgKyBpICogc3JjX3Jv d19sZW5ndGg7Ci0rCi0rCSAgICAvKiBJdGVyYXRlIHRocm91Z2ggdGhlIGVsZW1lbnRzIGluIGVh Y2ggcm93IHRvIGNvcHkgb25seSB0aG9zZS4gICovCi0rCSAgICBmb3IgKGogPSAxOyBqIDw9IGVs ZW1fY291bnQ7IGorKykKLSsJICAgICAgewotKwkJLyogRmV0Y2hlcyB0aGUgY29udGVudHMgb2Yg QVJSQVkgYW5kIGNvcGllcyB0aGVtIGludG8gVi4gICovCi0rCQl2YWx1ZV9jb250ZW50c19jb3B5 ICh2LCBkc3Rfb2Zmc2V0LCBhcnJheSwgZWx0X29mZnMsIGVsdF9zaXplKTsKLSsJCWVsdF9vZmZz ICs9IGVsdF9zaXplICogc3RyaWRlX2xlbmd0aDsKLSsJCWRzdF9vZmZzZXQgKz0gZWx0X3NpemU7 Ci0rCSAgICAgIH0KLSsJICB9Ci0gICAgICAgfQotIAotLSAgICBzZXRfdmFsdWVfY29tcG9uZW50 X2xvY2F0aW9uIChzbGljZSwgYXJyYXkpOwotLSAgICBzZXRfdmFsdWVfb2Zmc2V0IChzbGljZSwg dmFsdWVfb2Zmc2V0IChhcnJheSkgKyBvZmZzZXQpOwotKyAgICBzZXRfdmFsdWVfY29tcG9uZW50 X2xvY2F0aW9uICh2LCBhcnJheSk7Ci0rICAgIGlmIChWQUxVRV9MVkFMICh2KSA9PSBsdmFsX3Jl Z2lzdGVyKQotKyAgICAgIHsKLSsJVkFMVUVfUkVHTlVNICh2KSA9IFZBTFVFX1JFR05VTSAoYXJy YXkpOwotKwlWQUxVRV9ORVhUX0ZSQU1FX0lEICh2KSA9IFZBTFVFX05FWFRfRlJBTUVfSUQgKGFy cmF5KTsKLSsgICAgICB9Ci0rICAgIHNldF92YWx1ZV9vZmZzZXQgKHYsIHZhbHVlX29mZnNldCAo YXJyYXkpICsgZWx0X29mZnMpOwotICAgfQotIAotLSAgcmV0dXJuIHNsaWNlOwotKyAgcmV0dXJu IHY7Ci0gfQotIAotIC8qIFNlZSB2YWx1ZS5oLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvdmFsdWUu aCBiL2dkYi92YWx1ZS5oCi0tLS0gYS9nZGIvdmFsdWUuaAotKysrIGIvZ2RiL3ZhbHVlLmgKLUBA IC0xMTQ0LDYgKzExNDQsOCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YXJ5aW5nX3RvX3NsaWNl IChzdHJ1Y3QgdmFsdWUgKik7Ci0gCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfc2xpY2Ug KHN0cnVjdCB2YWx1ZSAqLCBpbnQsIGludCk7Ci0gCi0rZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFs dWVfc2xpY2VfMSAoc3RydWN0IHZhbHVlICosIGludCwgaW50LCBpbnQsIGludCk7Ci0rCi0gLyog Q3JlYXRlIGEgY29tcGxleCBudW1iZXIuICBUaGUgdHlwZSBpcyB0aGUgY29tcGxleCB0eXBlOyB0 aGUgdmFsdWVzCi0gICAgYXJlIGNhc3QgdG8gdGhlIHVuZGVybHlpbmcgc2NhbGFyIHR5cGUgYmVm b3JlIHRoZSBjb21wbGV4IG51bWJlciBpcwotICAgIGNyZWF0ZWQuICAqLwoKZGlmZiAtLWdpdCBh L2dkYi12bGEtaW50ZWwtc3RyaW5nYnQtZml4LnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC1zdHJpbmdi dC1maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwY2IzZmUuLjAwMDAw MDAKLS0tIGEvZ2RiLXZsYS1pbnRlbC1zdHJpbmdidC1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxNjcgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot RGF0ZTogRnJpLCAxIEF1ZyAyMDE0IDIzOjAyOjE3ICswMjAwCi1TdWJqZWN0OiBnZGItdmxhLWlu dGVsLXN0cmluZ2J0LWZpeC5wYXRjaAotCi07Oz1wdXNoK2phbgotCi1odHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxNC0wOC9tc2cwMDAyNS5odG1sCi0KLU9uIEZyaSwgMDEg QXVnIDIwMTQgMDk6MjA6MTkgKzAyMDAsIEtldmVuIEJvZWxsIHdyb3RlOgotPiBJIGp1c3QgdHJp ZWQgaXQgb24gRmVkb3JhIDIwIGk2ODYuICBBcHBsaWVkIHRoZSBwYXRjaCwgeW91IG1lbnRpb25l ZCwgb24gdG9wIG9mCi0+IHRoZSBGb3J0cmFuIFZMQSBzZXJpZXMgYW5kIGV4ZWN1dGVkIHlvdXIg ZHluYW1pYy1vdGhlci1mcmFtZSB0ZXN0LiAgRXZlcnl0aGluZwotPiBpcyB3b3JraW5nIGZpbmUg aGVyZSwgSSBjYW5ub3QgcmVwcm9kdWNlIHRoZSBjcmFzaC4KLQotSSBoYXZlIGl0IHJlcHJvZHVj aWJsZSBvbiBGZWRvcmEgMjAgaTY4NiB3aXRoIHBsYWluCi1DRkxBR1M9LWcgLi9jb25maWd1cmU7 bWFrZTtjZCBnZGIvdGVzdHN1aXRlO21ha2Ugc2l0ZS5leHA7cnVudGVzdCBnZGIuZm9ydHJhbi9k eW5hbWljLW90aGVyLWZyYW1lLmV4cAotCi1CZXNpZGVzIHRoYXQgSSBoYXZlIHVwZGF0ZWQgdGhl IHRlc3RjYXNlIHdpdGgKLQlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBwcmludCBmcmFtZS1hcmd1 bWVudHMgYWxsIgotc28gdGhhdCB0aGVyZSBpcyBubyBsb25nZXIgbmVlZGVkIHRoZSBwYXRjaDoK LQlbcGF0Y2hdIERpc3BsYXkgRm9ydHJhbiBzdHJpbmdzIGluIGJhY2t0cmFjZXMKLQlodHRwczov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDcvbXNnMDA3MDkuaHRtbAotCi1U aGUgZml4IGJlbG93IGhhcyBubyByZWdyZXNzaW9ucyBmb3IgbWUuICBVbmZvcnR1bmF0ZWx5IEkg ZG8gbm90IHNlZSB3aHkgeW91Ci1jYW5ub3QgcmVwcm9kdWNlIGl0LgotCi1UaGFua3MsCi1KYW4K LQotZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvbG9jLmMgYi9nZGIvZHdhcmYyL2xvYy5jCi0tLS0g YS9nZGIvZHdhcmYyL2xvYy5jCi0rKysgYi9nZGIvZHdhcmYyL2xvYy5jCi1AQCAtMjI0OSw2ICsy MjQ5LDIwIEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotICAgY3R4LnBlcl9jdSA9IHBlcl9jdTsKLSAg IGN0eC5vYmpfYWRkcmVzcyA9IDA7Ci0gCi0rZnJhbWVfaWQgb2xkX2ZyYW1lX2lkIChnZXRfZnJh bWVfaWQgKGRlcHJlY2F0ZWRfc2FmZV9nZXRfc2VsZWN0ZWRfZnJhbWUgKCkpKTsKLStjbGFzcyBS ZXN0b3JlQ2FsbCB7Ci0rcHJpdmF0ZToKLSsgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g ZnVuYzsKLStwdWJsaWM6Ci0rICBSZXN0b3JlQ2FsbChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1 bmNfKTpmdW5jKGZ1bmNfKSB7fQotKyAgflJlc3RvcmVDYWxsKCkgeyBmdW5jKCk7IH0KLSt9IHJl c3RvcmVfZnJhbWUoWz1dKCkgewotKyAgZnJhbWVfaW5mbyAqb2xkX2ZyYW1lIChmcmFtZV9maW5k X2J5X2lkIChvbGRfZnJhbWVfaWQpKTsKLSsgIGlmIChvbGRfZnJhbWUgIT0gTlVMTCkKLSsgICAg c2VsZWN0X2ZyYW1lIChvbGRfZnJhbWUpOwotK30pOwotK2lmIChmcmFtZSAhPSBOVUxMKSBzZWxl Y3RfZnJhbWUgKGZyYW1lKTsKLSsKLSAgIHNjb3BlZF92YWx1ZV9tYXJrIGZyZWVfdmFsdWVzOwot IAotICAgY3R4LmdkYmFyY2ggPSBwZXJfb2JqZmlsZS0+b2JqZmlsZS0+YXJjaCAoKTsKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1 Yi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1 Yi5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAKLUBAIC0wLDAg KzEsMjQgQEAKLSshIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs ZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEg SWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KLSsh IE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29t Pi4KLSshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5lIGJhcgotKyAgcmVhbCA6 OiBkdW1teQotKyAgZHVtbXkgPSAxCi0rZW5kIHN1YnJvdXRpbmUgYmFyCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCi1AQCAtMCwwICsxLDM5IEBACi0rIyBDb3B5cmlnaHQg MjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rc2V0IHRlc3RmaWxlICJkeW5hbWljLW90aGVy LWZyYW1lIgotK3NldCBzcmNmaWxlMSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgc3JjZmlsZTIgJHt0 ZXN0ZmlsZX0tc3R1Yi5mOTAKLStzZXQgb2JqZmlsZTIgW3N0YW5kYXJkX291dHB1dF9maWxlICR7 dGVzdGZpbGV9LXN0dWIub10KLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQotK3NldCBiaW5m aWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2V4ZWN1dGFibGV9XQotKwotK2lmIHsgW2dkYl9j b21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZTJ9IiAiJHtvYmpmaWxlMn0iIG9i amVjdCB7ZjkwfV0gIT0gIiIKLSsgICAgIHx8IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGUxfSAke29iamZpbGUyfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2Rl YnVnIGY5MH1dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3Ny Y2ZpbGUxfSBvciAke3NyY2ZpbGUyfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jl c3RhcnQgJHtleGVjdXRhYmxlfQotKwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHByaW50IGZy YW1lLWFyZ3VtZW50cyBhbGwiCi0rCi0raWYgIVtydW50byBiYXJfXSB0aGVuIHsKLSsgICAgcGVy cm9yICJjb3VsZG4ndCBydW4gdG8gYmFyXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rl c3QgImJ0IiB7Zm9vIFwoc3RyaW5nPSdoZWxsbycuKn0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1v dGhlci1mcmFtZS5mOTAKLUBAIC0wLDAgKzEsMzYgQEAKLSshIENvcHlyaWdodCAyMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSshIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBm aWxlIGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBK ZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3Rj YXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStz dWJyb3V0aW5lIGZvbyAoc3RyaW5nKQotKyAgaW50ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgYmFy Ci0rICAgIGVuZCBzdWJyb3V0aW5lCi0rICBlbmQgaW50ZXJmYWNlCi0rICBjaGFyYWN0ZXIgc3Ry aW5nKigqKQotKyAgY2FsbCBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgc3Rv cC1oZXJlCi0rZW5kIHN1YnJvdXRpbmUgZm9vCi0rcHJvZ3JhbSB0ZXN0Ci0rICBpbnRlcmZhY2UK LSsgICAgc3Vicm91dGluZSBmb28gKHN0cmluZykKLSsgICAgY2hhcmFjdGVyIHN0cmluZyooKikK LSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGNhbGwgZm9vICgnaGVs bG8nKQotK2VuZAoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtdGVzdHMucGF0Y2ggYi9nZGIt dmxhLWludGVsLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmZl YmI2Li4wMDAwMDAwCi0tLSBhL2dkYi12bGEtaW50ZWwtdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxNDkgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEZlZG9yYSBHREIgcGF0Y2hlcyA8aW52YWxpZEBlbWFpbC5jb20+Ci1E YXRlOiBGcmksIDI3IE9jdCAyMDE3IDIxOjA3OjUwICswMjAwCi1TdWJqZWN0OiBnZGItdmxhLWlu dGVsLXRlc3RzLnBhdGNoCi0KLTs7PWZlZG9yYXRlc3QKLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtZnVuYy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmV4cAotQEAgLTAsMCArMSw2MSBA QAotKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwot KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkw IgotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZp bGV9ICR7c3JjZmlsZX0gXAotKyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7Ci0rICAgIHJldHVy biAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291 bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLSsj IENoZWNrIFZMQSBwYXNzZWQgdG8gZmlyc3QgRm9ydHJhbiBmdW5jdGlvbi4KLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtdmxhLXBhc3NlZCJdCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImZ1bmMxLXZsYS1wYXNzZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZs YSIgIiA9IFxcKCAqXFwoICoyMiwgKjIyLCAqMjIsXFsoKTIyLCAuXF0qXFwpIiBcCi0rICAicHJp bnQgdmxhIChmdW5jMSkiCi0rZ2RiX3Rlc3QgInB0eXBlIHZsYSIgInR5cGUgPSBpbnRlZ2VyXFxc KGtpbmQ9NFxcXCksIGFsbG9jYXRhYmxlIFxcXCgxMCwxMFxcXCkiIFwKLSsgICJwdHlwZSB2bGEg KGZ1bmMxKSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEt dmxhLW1vZGlmaWVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzEtdmxhLW1v ZGlmaWVkIgotK2dkYl90ZXN0ICJwcmludCB2bGEoNSw1KSIgIiA9IDU1IiAicHJpbnQgdmxhKDUs NSkgKGZ1bmMxKSIKLStnZGJfdGVzdCAicHJpbnQgdmxhKDcsNykiICIgPSA3NyIgInByaW50IHZs YSg1LDUpIChmdW5jMSkiCi0rCi0rIyBDaGVjayBpZiB0aGUgdmFsdWVzIGFyZSBjb3JyZWN0IGFm dGVyIHJldHVybmluZyBmcm9tIGZ1bmMxCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgImZ1bmMxLXJldHVybmVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVu YzEtcmV0dXJuZWQiCi0rZ2RiX3Rlc3QgInByaW50IHJldCIgIiA9IC5UUlVFLiIgInByaW50IHJl dCBhZnRlciBmdW5jMSByZXR1cm5lZCIKLSsKLSsjIENoZWNrIFZMQSBwYXNzZWQgdG8gc2Vjb25k IEZvcnRyYW4gZnVuY3Rpb24KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi ZnVuYzItdmxhLXBhc3NlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImZ1bmMyLXZs YS1wYXNzZWQiCi0rZ2RiX3Rlc3QgInByaW50IHZsYSIgXAotKyAgIiA9IFxcXCg0NCwgNDQsIDQ0 LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NFxcXCkiIFwKLSsgICJwcmludCB2bGEgKGZ1bmMy KSIKLStnZGJfdGVzdCAicHR5cGUgdmxhIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSBc XFwoMTBcXFwpIiBcCi0rICAicHR5cGUgdmxhIChmdW5jMikiCi0rCi0rIyBDaGVjayBpZiB0aGUg cmV0dXJuZWQgVkxBIGhhcyB0aGUgY29ycmVjdCB2YWx1ZXMgYW5kIHB0eXBlLgotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jMi1yZXR1cm5lZCJdCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImZ1bmMyLXJldHVybmVkIgotK2dkYl90ZXN0ICJwcmludCB2bGEz IiAiID0gXFxcKDEsIDIsIDQ0LCA0LCA0NCwgNDQsIDQ0LCA4LCA0NCwgNDRcXFwpIiBcCi0rICAi cHJpbnQgdmxhMyAoYWZ0ZXIgZnVuYzIpIgotK2dkYl90ZXN0ICJwdHlwZSB2bGEzIiAidHlwZSA9 IGludGVnZXJcXFwoa2luZD00XFxcKSwgYWxsb2NhdGFibGUgXFxcKDEwXFxcKSIgXAotKyAgInB0 eXBlIHZsYTMgKGFmdGVyIGZ1bmMyKSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3ZsYS1mdW5jLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMu ZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5mOTAKLUBAIC0wLDAgKzEsNzEgQEAKLSshIENvcHly aWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rbG9naWNhbCBmdW5jdGlvbiBmdW5j MSAodmxhKQotKyAgaW1wbGljaXQgbm9uZQotKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogdmxh ICg6LCA6KQotKyAgZnVuYzEgPSBhbGxvY2F0ZWQodmxhKQotKyAgdmxhKDUsNSkgPSA1NSAgICAg ICAgICAgICAgICEgZnVuYzEtdmxhLXBhc3NlZAotKyAgdmxhKDcsNykgPSA3NwotKyAgcmV0dXJu ICAgICAgICAgICAgICAgICAgICAgICEgZnVuYzEtdmxhLW1vZGlmaWVkCi0rZW5kIGZ1bmN0aW9u IGZ1bmMxCi0rCi0rZnVuY3Rpb24gZnVuYzIodmxhKQotKyAgaW1wbGljaXQgbm9uZQotKyAgaW50 ZWdlciA6OiB2bGEgKDopCi0rICBpbnRlZ2VyIDo6IGZ1bmMyKHNpemUodmxhKSkKLSsgIGludGVn ZXIgOjogawotKwotKyAgdmxhKDEpID0gMSAgICAgICAgICAgICAgICAgICAgISBmdW5jMi12bGEt cGFzc2VkCi0rICB2bGEoMikgPSAyCi0rICB2bGEoNCkgPSA0Ci0rICB2bGEoOCkgPSA4Ci0rCi0r ICBmdW5jMiA9IHZsYQotK2VuZCBmdW5jdGlvbiBmdW5jMgotKwotK3Byb2dyYW0gdmxhX2Z1bmMK LSsgIGltcGxpY2l0IG5vbmUKLSsgIGludGVyZmFjZQotKyAgICBsb2dpY2FsIGZ1bmN0aW9uIGZ1 bmMxICh2bGEpCi0rICAgICAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogdmxhICg6LCA6KQotKyAg ICBlbmQgZnVuY3Rpb24KLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGludGVyZmFjZQotKyAgICBmdW5j dGlvbiBmdW5jMiAodmxhKQotKyAgICAgIGludGVnZXIgOjogdmxhICg6KQotKyAgICAgIGludGVn ZXIgZnVuYzIoc2l6ZSh2bGEpKQotKyAgICBlbmQgZnVuY3Rpb24KLSsgIGVuZCBpbnRlcmZhY2UK LSsKLSsgIGxvZ2ljYWwgOjogcmV0Ci0rICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6 LCA6KQotKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogdmxhMiAoOikKLSsgIGludGVnZXIsIGFs bG9jYXRhYmxlIDo6IHZsYTMgKDopCi0rCi0rICByZXQgPSAuRkFMU0UuCi0rCi0rICBhbGxvY2F0 ZSAodmxhMSAoMTAsMTApKQotKyAgdmxhMSg6LDopID0gMjIKLSsKLSsgIGFsbG9jYXRlICh2bGEy ICgxMCkpCi0rICB2bGEyKDopID0gNDQKLSsKLSsgIHJldCA9IGZ1bmMxKHZsYTEpCi0rICB2bGEz ID0gZnVuYzIodmxhMikgICAgICAgICAgISBmdW5jMS1yZXR1cm5lZAotKwotKyAgcmV0ID0gLlRS VUUuICAgICAgICAgICAgICAgICEgZnVuYzItcmV0dXJuZWQKLStlbmQgcHJvZ3JhbSB2bGFfZnVu YwoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggZmViM2RhYy4uY2VkMWY3 NSAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTEsNCArMSwzIEBACi0l Z2xvYmFsIF93aXRob3V0X3B5dGhvbiAxCiAjIHJwbWJ1aWxkIHBhcmFtZXRlcnM6CiAjIC0td2l0 aCB0ZXN0c3VpdGU6IFJ1biB0aGUgdGVzdHN1aXRlIChiaWFyY2ggaWYgcG9zc2libGUpLiAgRGVm YXVsdCBpcyB3aXRob3V0LgogIyAtLXdpdGggYnVpbGRpc2E6IFVzZSAlJXs/X2lzYX0gZm9yIEJ1 aWxkUmVxdWlyZXMKQEAgLTM0LDExICszMywxMSBAQCBOYW1lOiAlez9zY2xfcHJlZml4fWdkYgog IyBTZWUgdGltZXN0YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGludG8gZ251bGliLyAu CiAlZ2xvYmFsIHNuYXBnbnVsaWIgMjAyMDA2MzAKICVnbG9iYWwgdGFybmFtZSBnZGItJXt2ZXJz aW9ufQotVmVyc2lvbjogMTAuMQorVmVyc2lvbjogMTAuMgogCiAjIFRoZSByZWxlYXNlIGFsd2F5 cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBg dXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVu ZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDE5JXs/ZGlzdH0K K1JlbGVhc2U6IDElez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4 Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBh bmQgTEdQTHYyKyBhbmQgTEdQTHYzKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluIGFuZCBHRkRM CiAjIERvIG5vdCBwcm92aWRlIFVSTCBmb3Igc25hcHNob3RzIGFzIHRoZSBmaWxlIGxhc3RzIHRo ZXJlIG9ubHkgZm9yIDIgZGF5cy4KQEAgLTE5NiwxNiArMTk1LDYgQEAgU291cmNlNzogdiV7bGli aXB0X3ZlcnNpb259LnRhci5negogIz1mZWRvcmEKIFBhdGNoMTE0MjogdjEuNS1saWJpcHQtc3Rh dGljLnBhdGNoCiAKLSMjIFt0ZXN0c3VpdGVdIEZpeCBmYWxzZSBzZWxmdGVzdC5leHAgRkFJTCBm cm9tIHN5c3RlbSByZWFkbGluZS02LjMrIChQYXRyaWNrIFBhbGthKS4KLSMjPWZlZG9yYXRlc3QK LSNQYXRjaDEwNzU6IGdkYi10ZXN0c3VpdGUtcmVhZGxpbmU2My1zaWdpbnQucGF0Y2gKLSMjPWZl ZG9yYXRlc3QKLVBhdGNoMTExOTogZ2RiLXRlc3RzdWl0ZS1yZWFkbGluZTYzLXNpZ2ludC1yZXZl cnQucGF0Y2gKLQotIyBGaXggYnJva2VuIGNvbmZpZ3VyZSB0ZXN0cyBjb21wcm9taXNlZCBieSBM VE8KLSNwdXNoPVNob3VsZCBiZSBwdXNoZWQgdXBzdHJlYW0uCi1QYXRjaDIwMDA6IGdkYi1jb25m aWcucGF0Y2gKLQogIyBJbmNsdWRlIHRoZSBhdXRvLWdlbmVyYXRlZCBmaWxlIGNvbnRhaW5pbmcg dGhlICJQYXRjaDoiIGRpcmVjdGl2ZXMuCiAjIFNlZSBSRUFETUUubG9jYWwtcGF0Y2hlcyBmb3Ig bW9yZSBkZXRhaWxzLgogUGF0Y2g5OTk4OiBfZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAtNDgx LDIzICs0NzAsNiBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogIyBTZWUgUkVB RE1FLmxvY2FsLXBhdGNoZXMgZm9yIG1vcmUgZGV0YWlscy4KICVpbmNsdWRlICV7UEFUQ0g5OTk5 fQogCi0laWYgMCV7IT9lbDY6MX0KLWZvciBpIGluIFwKLSAgZ2RiL3B5dGhvbi9saWIvZ2RiL0Zy YW1lV3JhcHBlci5weSBcCi0gIGdkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkgXAotICBn ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgXAotICA7ZG8KLSAgdGVzdCAt ZSAkaQotICA6ID4kaQotZG9uZQotJWVuZGlmCi0KLSVpZiAwJXs/cmhlbDoxfSAmJiAwJXs/cmhl bH0gPD0gNwotJXBhdGNoMTExOSAtcDEKLSVlbmRpZgotCi0lcGF0Y2gyMDAwIC1wMQotCiAjIFRo ZSBhYm92ZSBwYXRjaGVzIHR3aWRkbGUgYSAubTQgZmlsZSBmb3IgY29uZmlndXJlLCBzbyB1cGRh dGUgdGhlIGFmZmVjdGVkCiAjIGNvbmZpZ3VyZSBmaWxlcwogcHVzaGQgbGliaWJlcnR5CkBAIC03 OTUsOCArNzY3LDYgQEAgcGVybCAtaS5yZWxvY2F0YWJsZSAtcGUgJ3MvXihEXFsiLipfUkVMT0NB VEFCTEUiXF09IiApMSgiKSQvJHsxfTAkMi8nIGdkYi9jb25maWcKICVtYWtlX2J1aWxkIENGTEFH Uz0iJENGTEFHUyAkRlBST0ZJTEVfQ0ZMQUdTIiBMREZMQUdTPSIkTERGTEFHUyAkRlBST0ZJTEVf Q0ZMQUdTIiBWPTEKIAogISBncmVwICdfUkVMT0NBVEFCTEUuKjEnIGdkYi9jb25maWcuaAotZ3Jl cCAnXiNkZWZpbmUgSEFWRV9MSUJTRUxJTlVYIDEkJyBnZGIvY29uZmlnLmgKLWdyZXAgJ14jZGVm aW5lIEhBVkVfU0VMSU5VWF9TRUxJTlVYX0ggMSQnIGdkYi9jb25maWcuaAogCiBpZiBbICIkZnBy b2ZpbGUiID0gIi1mcHJvZmlsZSIgXQogdGhlbgpAQCAtMTA3OCwxMyArMTA0OCw2IEBAIHJtIC1m ICRSUE1fQlVJTERfUk9PVCV7X2RhdGFkaXJ9L2dkYi9zeXN0ZW0tZ2RiaW5pdC9lbGlub3MucHkK IHJtIC1mICRSUE1fQlVJTERfUk9PVCV7X2RhdGFkaXJ9L2dkYi9zeXN0ZW0tZ2RiaW5pdC93cnMt bGludXgucHkKIHJtZGlyICRSUE1fQlVJTERfUk9PVCV7X2RhdGFkaXJ9L2dkYi9zeXN0ZW0tZ2Ri aW5pdAogCi0jIFBhdGNoODQ4OiBnZGItZHRzLXJoZWw2LXB5dGhvbi1jb21wYXQucGF0Y2gKLSVp ZiAwJXshP2VsNjoxfQotcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vZ2RiL3B5dGhv bi9nZGIvRnJhbWVXcmFwcGVyLnB5Ci1ybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9n ZGIvcHl0aG9uL2dkYi9iYWNrdHJhY2UucHkKLXJtIC1mICRSUE1fQlVJTERfUk9PVCV7X2RhdGFk aXJ9L2dkYi9weXRob24vZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5Ci0lZW5kaWYKLQogJWZpbGVz CiAjIEZpbGUgbXVzdCBiZWdpbiB3aXRoICIvIjoge0dGREwsQ09QWUlORzMsQ09QWUlORyxDT1BZ SU5HLkxJQixDT1BZSU5HMy5MSUJ9CiAlaWYgMCV7IT9lbDY6MX0KQEAgLTExOTEsNiArMTE1NCw0 MyBAQCBmaQogJWVuZGlmCiAKICVjaGFuZ2Vsb2cKKyogVGh1IEp1biAwMyAyMDIxIEtldmluIEJ1 ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4gLSAxMC4yLTEKKy0gUmViYXNlIHRvIEZTRiBHREIg MTAuMi4KKy0gRHJvcCBnZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoLgorLSBEcm9wIGdk Yi02LjMtdGVzdC1zZWxmLTIwMDUwMTEwLnBhdGNoLgorLSBEcm9wIGdkYi02LjUtYnoyMTgzNzkt cHBjLXNvbGliLXRyYW1wb2xpbmUtdGVzdC5wYXRjaC4KKy0gRHJvcCBnZGItNi42LWJ1aWxkaWQt bG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoLgorLSBEcm9wIGdkYi02LjgtcXVpdC1uZXZlci1hYm9y dHMucGF0Y2guCistIERyb3AgZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0 Y2guCistIERyb3AgZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoLgorLSBEcm9wIGdkYi1hcmNo ZXItdmxhLXRlc3RzLnBhdGNoLgorLSBEcm9wIGdkYi1hcmNoZXIucGF0Y2guCistIERyb3AgZ2Ri LWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNS5wYXRjaC4KKy0gRHJvcCBnZGItYnRyb2J1c3QucGF0 Y2guCistIERyb3AgZ2RiLWJ6MTIxOTc0Ny1hdHRhY2gta2lsbHMucGF0Y2guCistIERyb3AgZ2Ri LWJ6NTMzMTc2LWZvcnRyYW4tb21wLXN0ZXAucGF0Y2guCistIERyb3AgZ2RiLWR0cy1yaGVsNi1w eXRob24tY29tcGF0LnBhdGNoLgorLSBEcm9wIGdkYi1nbmF0LWR3YXJmLWNyYXNoLTNvZjMucGF0 Y2guCistIERyb3AgZ2RiLWppdC1yZWFkZXItbXVsdGlsaWIucGF0Y2guCistIERyb3AgZ2RiLW1v cmlidW5kLXV0cmFjZS13b3JrYXJvdW5kLnBhdGNoLgorLSBEcm9wIGdkYi1yaGJ6MTkzMDUyOC1m aXgtZ251bGliLWJ1aWxkLWVycm9yLnBhdGNoLgorLSBEcm9wIGdkYi1yaGJ6MTkzMjY0NS1hYXJj aDY0LXB0cmFjZS1oZWFkZXItb3JkZXIucGF0Y2guCistIERyb3AgZ2RiLXZsYS1pbnRlbC1maXgt cHJpbnQtY2hhci1hcnJheS5wYXRjaC4KKy0gRHJvcCBnZGItdmxhLWludGVsLWZvcnRyYW4tc3Ry aWRlcy5wYXRjaC4KKy0gRHJvcCBnZGItdmxhLWludGVsLXN0cmluZ2J0LWZpeC5wYXRjaC4KKy0g RHJvcCBnZGItdmxhLWludGVsLXRlc3RzLnBhdGNoLgorLSBEcm9wIHByb2Nlc3NfcHN5bXRhYl9j b21wX3VuaXQtdHlwZS11bml0LnBhdGNoLgorLSBEcm9wIGdkYi10ZXN0c3VpdGUtcmVhZGxpbmU2 My1zaWdpbnQtcmV2ZXJ0LnBhdGNoLgorLSBEcm9wIGdkYi1jb25maWcucGF0Y2guCistIEFkZCBm b2xsb3dpbmcgdXBzdHJlYW0gcGF0Y2hlcyBmb3IgRm9ydHJhbiBzdHJpZGUgLyBzbGljZSBzdXBw b3J0OgorICBnZGItcmhiejE5NjQxNjctY29udmVydC1lbnVtLXJhbmdlX3R5cGUucGF0Y2gKKyAg Z2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaAorICBn ZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Npb25zLnBhdGNo CisgIGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Npb24tZXZh bHVhdGlvbi5wYXRjaAorICBnZGItcmhiejE5NjQxNjctZm9ydHJhbi1yYW5nZV90eXBlLXRvLXJh bmdlX2ZsYWcucGF0Y2gKKyAgZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4td2hpdGVzcGFjZV9hcnJh eS5wYXRjaAorICBnZGItcmhiejE5NjQxNjctbW92ZS1mb3J0cmFuLWV4cHItaGFuZGxpbmcucGF0 Y2gKKwogKiBUdWUgSnVuIDAxIDIwMjEgUHl0aG9uIE1haW50IDxweXRob24tbWFpbnRAcmVkaGF0 LmNvbT4KIC0gQm9vdHN0cmFwIGZvciBQeXRob24gMy4xMAogCgpkaWZmIC0tZ2l0IGEvcHJvY2Vz c19wc3ltdGFiX2NvbXBfdW5pdC10eXBlLXVuaXQucGF0Y2ggYi9wcm9jZXNzX3BzeW10YWJfY29t cF91bml0LXR5cGUtdW5pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY1 NzJjMC4uMDAwMDAwMAotLS0gYS9wcm9jZXNzX3BzeW10YWJfY29tcF91bml0LXR5cGUtdW5pdC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZWl0aCBTZWl0eiA8a2VpdGhzQHJlZGhh dC5jb20+Ci1EYXRlOiBUdWUsIDIzIE1hciAyMDIxIDExOjE3OjI4IC0wNzAwCi1TdWJqZWN0OiBw cm9jZXNzX3BzeW10YWJfY29tcF91bml0LXR5cGUtdW5pdC5wYXRjaAotCi07OyBCYWNrcG9ydCAi SGFuZGxlIERXX1RBR190eXBlX3VuaXQgaW4gcHJvY2Vzc19zeW10YWJfdW5pdCIKLTs7IChUb20g ZGUgVnJpZXMpCi0KLSAgY29tbWl0IGU3N2IwMDA0ZGQxMTRkNmRkZjNiYjkyYjUyMWIyODU0MzQx ZjNmODUKLSAgQXV0aG9yOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+Ci0gIERhdGU6 ICAgRnJpIEZlYiA1IDE3OjQ3OjA3IDIwMjEgKzAxMDAKLQotW2dkYi9zeW10YWJdIEhhbmRsZSBE V19UQUdfdHlwZV91bml0IGluIHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQKLQotV2hlbiBydW5u aW5nIHRlc3QtY2FzZSBnZGIuY3AvY3BleHBycy1kZWJ1Zy10eXBlcy5leHAgd2l0aCB0YXJnZXQg Ym9hcmQKLXVuaXgvZ2RiOmRlYnVnX2ZsYWdzPS1nZHdhcmYtNSwgSSBydW4gaW50bzoKLS4uLgot KGdkYikgZmlsZSBjcGV4cHJzLWRlYnVnLXR5cGVzXk0KLVJlYWRpbmcgc3ltYm9scyBmcm9tIGNw ZXhwcnMtZGVidWctdHlwZXMuLi5eTQotRVJST1I6IENvdWxkbid0IGxvYWQgY3BleHBycy1kZWJ1 Zy10eXBlcyBpbnRvIEdEQiAoZW9mKS4KLUVSUk9SOiBDb3VsZG4ndCBzZW5kIGRlbGV0ZSBicmVh a3BvaW50cyB0byBHREIuCi1FUlJPUjogR0RCIHByb2Nlc3Mgbm8gbG9uZ2VyIGV4aXN0cwotR0RC IHByb2Nlc3MgZXhpdGVkIHdpdGggd2FpdCBzdGF0dXMgMjMwNTQgZXhwOSAwIDAgQ0hJTERLSUxM RUQgU0lHQUJSVCBTSUdBQlJUCi0uLi4KLQotV2UncmUgcnVubmluZyBpbnRvIHRoaXMgYWJvcnQg aW4gcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdDoKLS4uLgotICBzd2l0Y2ggKHJlYWRlci5jb21w X3VuaXRfZGllLT50YWcpCi0gICAgewotICAgIGNhc2UgRFdfVEFHX2NvbXBpbGVfdW5pdDoKLSAg ICAgIHRoaXNfY3UtPnVuaXRfdHlwZSA9IERXX1VUX2NvbXBpbGU7Ci0gICAgICBicmVhazsKLSAg ICBjYXNlIERXX1RBR19wYXJ0aWFsX3VuaXQ6Ci0gICAgICB0aGlzX2N1LT51bml0X3R5cGUgPSBE V19VVF9wYXJ0aWFsOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGFib3J0ICgp OwotICAgIH0KLS4uLgotYmVjYXVzZSByZWFkZXIuY29tcF91bml0X2RpZS0+dGFnID09IERXX1RB R190eXBlX3VuaXQuCi0KLUZpeCB0aGlzIGJ5IGFkZGluZyBhIERXX1RBR190eXBlX3VuaXQgY2Fz ZS4KLQotVGVzdGVkIG9uIHg4Nl82NC1saW51eC4KLQotZ2RiL0NoYW5nZUxvZzoKLQotMjAyMS0w Mi0wNSAgVG9tIGRlIFZyaWVzICA8dGRldnJpZXNAc3VzZS5kZT4KLQotCVBSIHN5bXRhYi8yNzMz MwotCSogZHdhcmYyL3JlYWQuYyAocHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCk6IEhhbmRsZSBE V19UQUdfdHlwZV91bml0LgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIv ZHdhcmYyL3JlYWQuYwotLS0tIGEvZ2RiL2R3YXJmMi9yZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjIv cmVhZC5jCi1AQCAtNzcxNSw2ICs3NzE1LDkgQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAo ZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAotICAgICBjYXNlIERXX1RBR19wYXJ0aWFsX3Vu aXQ6Ci0gICAgICAgdGhpc19jdS0+dW5pdF90eXBlID0gRFdfVVRfcGFydGlhbDsKLSAgICAgICBi cmVhazsKLSsgICAgY2FzZSBEV19UQUdfdHlwZV91bml0OgotKyAgICAgIHRoaXNfY3UtPnVuaXRf dHlwZSA9IERXX1VUX3R5cGU7Ci0rICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAg YWJvcnQgKCk7Ci0gICAgIH0KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwppbmRleCA1 NzU4YjA1Li5lY2M3Nzg0IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMKQEAgLTEs MyArMSwzIEBACiBTSEE1MTIgKGdkYi1saWJzdGRjKystdjMtcHl0aG9uLTguMS4xLTIwMTgwNjI2 LnRhci54eikgPSBhOGIxYzU0ZGQzNDhjZmViMzdkYTczZjk2ODc0Mjg5NmJlM2RkMTNhNDIxNWY4 ZDg1MTk4NzBjMmFiZWE5MTVmNTE3NmMzZmE2OTg5ZGRkMTBmMjAwMjBhMTZmMGZhYjIwY2JhZTY4 ZWU4ZDU4YTgyMjM0ZDg3NzgwMjM1MjBmOAotU0hBNTEyIChnZGItMTAuMS50YXIueHopID0gMGRj NTQzODA0MzVjNjg1M2RiNjBmMWUzODhiOTQ4MzZkMjk0ZGZhOWFkN2Y1MTgzODVhMjdkYjRlZGQw M2NiOTcwZjg3MTdkNWYxZTljOWEwZDRhMzNkN2ZjZjkxYmMyZTVkNmM5Y2Y5ZTRiNTYxZGNjNzRl NjViODA2YzE1MzcKIFNIQTUxMiAodjIuMC40LnRhci5neikgPSA1OTZkMmRhYzI1ZmRiZDNlNTY2 MGQ3ZTFmZWViN2U4ZDVkMzU5ZDFkMGUxOWI2MmVmNTkzNDQ5MDM3ZGYyMzZkYjFkNGQ5ODgyMGYw MDMxMDYxYjU1NzNlZDY3Nzk3YTg1YTc3ZmI5OTkxZTIxNWFiYWFiYzRiZmUxNmNlYWVjOAorU0hB NTEyIChnZGItMTAuMi50YXIueHopID0gMzY1Mzc2MmFjMDA4ZTA2NWMzN2NkNjQxNjUzMTg0Yzlm ZjdjZTUxZWUyMjIyYWRlMTEyMmJlYzlkNmNjNjRkZmZkNGZiNzQ4ODhlZjExYWMxOTQyMDY0YTA4 OTEwZTk2Yjc4NjUxMTJhZDM3ZjQ2MDJlYjBhMTZiZWQwNzRjYWEKCmRpZmYgLS1naXQgYS90ZXN0 aW5nLWN1c3RvbS1pbnB1dHJjLnBhdGNoIGIvdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaApp bmRleCA3OGYwMzhlLi5jOTVmN2QxIDEwMDY0NAotLS0gYS90ZXN0aW5nLWN1c3RvbS1pbnB1dHJj LnBhdGNoCisrKyBiL3Rlc3RpbmctY3VzdG9tLWlucHV0cmMucGF0Y2gKQEAgLTI4LDcgKzI4LDcg QEAgU3ViamVjdDogdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaAogZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAtLS0g YS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCi1AQCAtNTA4NCwxMyArNTA4NCwxNCBAQCBwcm9jIGRlZmF1bHRfZ2RiX2luaXQgeyB0ZXN0 X2ZpbGVfbmFtZSB9IHsKK0BAIC01MTM1LDEzICs1MTM1LDE0IEBAIHByb2MgZGVmYXVsdF9nZGJf aW5pdCB7IHRlc3RfZmlsZV9uYW1lIH0gewogICAgICBzZXRlbnYgTENfQ1RZUEUgQwogICAgICBz ZXRlbnYgTEFORyBDCiAgCg==