submission 31257
KernelBot user 376 · python · License unknown
Use it
Vendorable · source mirrored · license unknownView source →
No package. Vendor the mirrored source: 1 lines, June 9 Researcher Reciprocity License v1.0.
baguette_mla_6.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mla-decode-31257?include=source"interfacepython
Compatibility
measured onAMD Instinct MI300X
declared hardwareAMD Instinct MI300X
architecturesgfx942
dtypesbf16
Benchmark evidence
1 measurement across 1 GPU, fastest first.
Operation / workload
Hardware
Latency
Rank
Observed
Reported · How evidence levels are derived →
Source and license
sourceavailable
revision digestsha256:7cf9e46287bdf70c9c5afecb8958ee3aa233afa4e639c6ca2be06535b383136e
license declaredunknown
license concludedunknown
imported2026-08-15
Kernel source
baguette_mla_6.py1 lines
aW1wb3J0IG1hdGgKZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCmltcG9ydCB0b3JjaApmcm9tIHRvcmNoIGltcG9ydCBubgppbXBvcnQgbnVtcHkgYXMgbnAKaW1wb3J0IHRpbWUKaW1wb3J0IHRvcmNoLm5uLmZ1bmN0aW9uYWwgYXMgRgpmcm9tIHV0aWxzIGltcG9ydCB2ZXJib3NlX2FsbGNsb3NlCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QKZnJvbSB0b3JjaC51dGlscy5jcHBfZXh0ZW5zaW9uIGltcG9ydCBsb2FkX2lubGluZQppbXBvcnQgb3MKaW1wb3J0IHN5cwoKICAgICAKaWYgIlBZVE9SQ0hfUk9DTV9BUkNIIiBub3QgaW4gb3MuZW52aXJvbjoKICAgIG9zLmVudmlyb25bIlBZVE9SQ0hfUk9DTV9BUkNIIl0gPSAiZ2Z4OTQyOnhuYWNrLSIKCmtlcm5lbF9jcHAgPSByIiIiCiN1bmRlZiBfX0hJUF9OT19IQUxGX09QRVJBVE9SU19fCiN1bmRlZiBfX0hJUF9OT19IQUxGX0NPTlZFUlNJT05TX18KI2luY2x1ZGUgPGhpcC9oaXBfcnVudGltZS5oPgojaW5jbHVkZSA8aGlwL2hpcF9iZmxvYXQxNi5oPgojaW5jbHVkZSA8cHliaW5kMTEvcHliaW5kMTEuaD4KI2luY2x1ZGUgPHB5YmluZDExL3N0bC5oPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDx1bmlzdGQuaD4gIAojaW5jbHVkZSA8cm9jYmxhcy9yb2NibGFzLmg+CiNpbmNsdWRlIDxoaXBibGFzbHQvaGlwYmxhc2x0Lmg+CiNpbmNsdWRlIDxoaXBibGFzbHQvaGlwYmxhc2x0LWV4dC5ocHA+CgojaW5jbHVkZSA8aGlwL2FtZF9kZXRhaWwvYW1kX2hpcF9iZjE2Lmg+CiNpbmNsdWRlIDxoaXAvYW1kX2RldGFpbC9hbWRfaGlwX2ZwOC5oPgojaW5jbHVkZSA8dG9yY2gvdG9yY2guaD4KI2RlZmluZSBDSEVDS19ISVBCTEFTTFQoZXJyKSBpZiAoZXJyICE9IEhJUEJMQVNfU1RBVFVTX1NVQ0NFU1MpIHsgQAogIHN0ZDo6Y2VyciA8PCAiaGlwQkxBU0x0IGVycm9yIGF0IGxpbmUgIiA8PCBfX0xJTkVfXyA8PCAgc3RkOjplbmRsOyBleGl0KDEpOyB9CiAgCiNkZWZpbmUgV0FSUF9TSVpFIDY0CnVzaW5nIGJmMTYgPSBoaXBfYmZsb2F0MTY7CgppbnQgZGl2VXAoaW50IHgsaW50IG4pewpyZXR1cm4gKHggKyBuLTEpL247Cn0KCnRlbXBsYXRlPGludCBuX3NwbGl0PgpfX2dsb2JhbF9fIHZvaWQgcm9wZV9rZXJuZWwoYmYxNiogcm9wZV9vdXQsIGNvbnN0IGJmMTYqIHJvcGUsIGludCBzdGFydF9wb3MsIGludCBzZXFfbGVuLCBpbnQgYmF0Y2hfc2l6ZSwgaW50IHN0cmlkZV9icywgaW50IHN0cmlkZV9zZXEpIHsKICBjb25zdGV4cHIgaW50IGRfbW9kZWwgPSA2NDsvL011c3QgYmUgZXF1YWwgdG8gV0FSUF9TSVpFCiAgY29uc3RleHByIGludCBkX21vZGVsXzIgPSBkX21vZGVsLzI7CiAgaW50IHRpZCA9IGJsb2NrSWR4LngqYmxvY2tEaW0ueCArIHRocmVhZElkeC54OwoKICBpbnQgcG9zID0gdGlkICUgZF9tb2RlbDsKICBpbnQgc2VxID0gKHRpZCAvIGRfbW9kZWwpICUgc2VxX2xlbjsKICBpbnQgYnMgPSB0aWQgLyBkX21vZGVsIC8gc2VxX2xlbjsKICAKICBpZiAoYnMgPCBiYXRjaF9zaXplKXsKICAgIGF1dG8gcG9zXzIgPSBiZjE2KHRpZCAlIGRfbW9kZWxfMik7CiAgICBhdXRvIHRoZXRhID0gYmYxNihwb3dmKGJmMTYoMTAwMDAuMGYpLGJmMTYoLXBvc18yKS9iZjE2KGRfbW9kZWxfMikpKTsKICAgIGF1dG8gaWR4X3RoZXRhMiA9IGJmMTYoc3RhcnRfcG9zK3NlcSkqdGhldGE7CiAgICBhdXRvIGMgPSBiZjE2KGNvc2YoaWR4X3RoZXRhMikpOwogICAgYXV0byBzID0gYmYxNihzaW5mKGlkeF90aGV0YTIpKTsKCiAgICBiZjE2IHhfcltuX3NwbGl0XTsKICAgICNwcmFnbWEgdW5yb2xsCiAgICBmb3IgKGludCBzcGxpdD0wO3NwbGl0PG5fc3BsaXQ7c3BsaXQrKyl7CiAgICAgIGludCBpbmRleCA9ICgoYmF0Y2hfc2l6ZS9uX3NwbGl0KSpzcGxpdCArIGJzKSpzdHJpZGVfYnMrCiAgICAgICAgICAgICAgICAgIHNlcSpzdHJpZGVfc2VxKwogICAgICAgICAgICAgICAgICBwb3M7CiAgICAgICB4X3Jbc3BsaXRdID0gcm9wZVtpbmRleF07CiAgICB9CgogICAgI3ByYWdtYSB1bnJvbGwKICAgIGZvciAoaW50IHNwbGl0PTA7c3BsaXQ8bl9zcGxpdDtzcGxpdCsrKXsKICAgICAgLy9UT0RPOmFkZCBwYXJhbWV0ZXJzIGZvciBvdXRwdXQgc3RyaWRlcwogICAgICBpbnQgaW5kZXggPSAoKGJhdGNoX3NpemUvbl9zcGxpdCkqc3BsaXQgKyBicykqZF9tb2RlbCpzZXFfbGVuKwogICAgICAgICAgICAgICAgICBzZXEqZF9tb2RlbCsKICAgICAgICAgICAgICAgICAgcG9zOwogICAgICAgICAKICAgICAgYXV0byB4ID0geF9yW3NwbGl0XTsKCiAgICAgIGludCBzcmNfbGFuZSA9IChwb3MgK2RfbW9kZWxfMiklIGRfbW9kZWw7CiAgICAgIGF1dG8geF9yb3QgPSBfX3NoZmwoeCwgc3JjX2xhbmUsIDY0KTsKICAgICAgeF9yb3QgPSAocG9zIDwgZF9tb2RlbF8yKSA/IC14X3JvdCA6IHhfcm90OwoKICAgICAgYXV0byBvdXQgID0gYmYxNih4KmMpK2JmMTYoeF9yb3Qqcyk7CiAgICAgIHJvcGVfb3V0W2luZGV4XSA9IG91dDsKCiAgICB9CiAgfQp9Cgp2b2lkIGNvbXB1dGVfcm9wZShiZjE2KiByb3BlX291dCwgY29uc3QgYmYxNiogcm9wZSwgaW50IHN0YXJ0X3BvcywgaW50IHNlcV9sZW4sIGludCBiYXRjaF9zaXplLGludCBzdHJpZGVfYnMsIGludCBzdHJpZGVfc2VxKSB7CiAgY29uc3RleHByIGludCBkaW1fcm9wZSA9IDY0OwogIGNvbnN0ZXhwciBpbnQgbl9zcGxpdCA9IDMyOwogIGRpbTMgdGhyZWFkc1BlckJsb2NrKFdBUlBfU0laRSo0KTsKICBkaW0zIGJsb2Nrc1BlckdyaWQoZGl2VXAoc2VxX2xlbipkaW1fcm9wZSpiYXRjaF9zaXplL25fc3BsaXQsIHRocmVhZHNQZXJCbG9jay54KSk7CiAgaGlwTGF1bmNoS2VybmVsR0dMKChyb3BlX2tlcm5lbDxuX3NwbGl0PiksIGJsb2Nrc1BlckdyaWQsIHRocmVhZHNQZXJCbG9jaywgMCwgMCwgcm9wZV9vdXQscm9wZSwgc3RhcnRfcG9zLHNlcV9sZW4sYmF0Y2hfc2l6ZSxzdHJpZGVfYnMsc3RyaWRlX3NlcSk7Cn0KCnZvaWQgY29tcHV0ZV9yb3Blc193cmFwcGVyKAogIHVpbnRwdHJfdCBrX3JvcGVfb3V0X3B0ciwKICB1aW50cHRyX3Qga19yb3BlX3B0ciwKICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBrX3JvcGVfc3RyaWRlLAogIHVpbnRwdHJfdCBxX3JvcGVfb3V0X3B0ciwKICB1aW50cHRyX3QgcV9yb3BlX3B0ciwKICBpbnQgYmF0Y2hfc2l6ZSwKICBpbnQgbl9oZWFkcywKICBpbnQgc2VxX2xlbil7CgogIGJmMTYgKmRfa19yb3BlX291dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8YmYxNio+KGtfcm9wZV9vdXRfcHRyKTsKICBiZjE2ICpkX3Ffcm9wZV9vdXQgPSByZWludGVycHJldF9jYXN0PGJmMTYqPihxX3JvcGVfb3V0X3B0cik7CiAgY29uc3QgYmYxNiAqZF9rX3JvcGUgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGJmMTYqPihrX3JvcGVfcHRyKTsKICBjb25zdCBiZjE2ICpkX3Ffcm9wZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYmYxNio+KHFfcm9wZV9wdHIpOwoKICBpbnQgc3RyaWRlX2JzX2sgPSBrX3JvcGVfc3RyaWRlWzBdOwogIGludCBzdHJpZGVfc2VxX2sgPSBrX3JvcGVfc3RyaWRlWzFdOwogIAogIGludCBzdHJpZGVfYnNfcSA9IDY0OwogIGludCBzdHJpZGVfc2VxX3EgPSA2NDsKCiAgY29tcHV0ZV9yb3BlKGRfa19yb3BlX291dCxkX2tfcm9wZSwgMCwgc2VxX2xlbiwgYmF0Y2hfc2l6ZSxzdHJpZGVfYnNfayxzdHJpZGVfc2VxX2spOwogIGNvbXB1dGVfcm9wZShkX3Ffcm9wZV9vdXQsZF9xX3JvcGUsIHNlcV9sZW4tMSwgMSwgYmF0Y2hfc2l6ZSpuX2hlYWRzLHN0cmlkZV9ic19xLHN0cmlkZV9zZXFfcSk7CiAgCn0KCl9fZ2xvYmFsX18gdm9pZCBzdG9yZV90b19rdl9jYWNoZV9rZXJuZWwoYmYxNioga3ZfY2FjaGUsIGNvbnN0IGJmMTYgKmt2LCBpbnQgYmF0Y2hfc2l6ZSwgaW50IHNlcV9pZCkgewogIGNvbnN0ZXhwciBpbnQgZGltX2t2ID0gNTc2OwogIGludCB0aWQgPSBibG9ja0lkeC54KmJsb2NrRGltLnggKyB0aHJlYWRJZHgueDsKICBpbnQgYnMgPSB0aWQvZGltX2t2OwogIGludCBjb2wgPSB0aWQgJSBkaW1fa3Y7CiAgaW50IGRzdF9yb3cgPSBicyo4MTkyICsgc2VxX2lkOwogIGludCBkc3RJbmRleCA9IGRzdF9yb3cqZGltX2t2K2NvbDsKICBpZiAoYnM8YmF0Y2hfc2l6ZSAmJiBkc3Rfcm93PGJhdGNoX3NpemUqODE5Mil7CiAgICBrdl9jYWNoZVtkc3RJbmRleF0gPSBrdlticypkaW1fa3YrY29sXTsKICB9Cn0KCnZvaWQgc3RvcmVfdG9fa3ZfY2FjaGUoYmYxNioga3ZfY2FjaGUsIGNvbnN0IGJmMTYgKmt2LCBpbnQgYmF0Y2hfc2l6ZSwgaW50IHNlcV9pZCkgIHsKICAgIGNvbnN0ZXhwciBpbnQgZGltX2t2ID0gNTc2OwogICAgZGltMyB0aHJlYWRzUGVyQmxvY2soV0FSUF9TSVpFKjQpOwogICAgZGltMyBibG9ja3NQZXJHcmlkKGRpdlVwKGJhdGNoX3NpemUqZGltX2t2LCB0aHJlYWRzUGVyQmxvY2sueCkpOwogICAgaGlwTGF1bmNoS2VybmVsR0dMKChzdG9yZV90b19rdl9jYWNoZV9rZXJuZWwpLCBibG9ja3NQZXJHcmlkLCB0aHJlYWRzUGVyQmxvY2ssIDAsIDAsIGt2X2NhY2hlLGt2LCBiYXRjaF9zaXplLCBzZXFfaWQpOwp9CgoKdm9pZCBzdG9yZV90b19rdl9jYWNoZV93cmFwcGVyKAogIHVpbnRwdHJfdCBrdl9sb3JhX3B0ciwKICB1aW50cHRyX3Qga3ZfY2FjaGVfcHRyLAoKICBpbnQgYmF0Y2hfc2l6ZSwKICBpbnQgc2VxX2lkKXsKCiAgY29uc3QgYmYxNiAqZF9rdl9sb3JhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBiZjE2Kj4oa3ZfbG9yYV9wdHIpOwogIGJmMTYgKmRfa3ZfY2FjaGUgPSByZWludGVycHJldF9jYXN0PGJmMTYqPihrdl9jYWNoZV9wdHIpOwoKICBzdG9yZV90b19rdl9jYWNoZShkX2t2X2NhY2hlLCBkX2t2X2xvcmEsIGJhdGNoX3NpemUsIHNlcV9pZCk7CiAgCn0KCnN0YXRpYyByb2NibGFzX2hhbmRsZSBoYW5kbGU7CnN0YXRpYyBib29sIGhhc0luaXQgPSBmYWxzZTsKc3RhdGljIHNpemVfdCB3b3Jrc3BhY2VTaXplID0gKDQgPDwgMjApKjQ7IAoKICAgIC8vIENyZWF0ZSBoaXBCTEFTTHQgaGFuZGxlCnN0YXRpYyBoaXBibGFzTHRIYW5kbGVfdCBoYW5kbGVfaGlwYmxhczsKICAgIApzdHJ1Y3QgQ29uZmlnQmxhc0x0ewogIGhpcGJsYXNMdE1hdHJpeExheW91dF90IGxheW91dEEsIGxheW91dEIsIGxheW91dEM7CiAgdm9pZCogZF93b3Jrc3BhY2U7CiAgaGlwYmxhc0x0TWF0bXVsSGV1cmlzdGljUmVzdWx0X3QgaGV1cmlzdGljUmVzdWx0OwogIGhpcGJsYXNMdE1hdG11bERlc2NfdCBtYXRtdWxEZXNjOwp9OwoKQ29uZmlnQmxhc0x0IGluaXRCbGFzTHQoaW50IE0sIGludCBOLCBpbnQgSywgaW50IGJhdGNoQ291bnQsIGludCBzdHJpZGVNSywgaW50IHN0cmlkZUtOKXsKCiAgbG9uZyBsb25nIHN0cmlkZUEgPSBzdHJpZGVNSzsKICBsb25nIGxvbmcgc3RyaWRlQiA9IHN0cmlkZUtOOwogIGxvbmcgbG9uZyBzdHJpZGVDID0gTSAqIE47CiAgZmxvYXQgYWxwaGEgPSAxLjBmLCBiZXRhID0gMC4wZjsKIAogIGhpcGJsYXNMdE1hdG11bERlc2NfdCBtYXRtdWxEZXNjOwogIENIRUNLX0hJUEJMQVNMVChoaXBibGFzTHRNYXRtdWxEZXNjQ3JlYXRlKCZtYXRtdWxEZXNjLCBISVBCTEFTX0NPTVBVVEVfMzJGLCAgSElQX1JfMzJGKSk7CiAgCiAgaGlwYmxhc0x0TWF0cml4TGF5b3V0X3QgbGF5b3V0QSwgbGF5b3V0QiwgbGF5b3V0QzsKICBDSEVDS19ISVBCTEFTTFQoaGlwYmxhc0x0TWF0cml4TGF5b3V0Q3JlYXRlKCZsYXlvdXRBLCBISVBfUl8xNkJGLCBLLCBNLCBLKSk7CiAgQ0hFQ0tfSElQQkxBU0xUKGhpcGJsYXNMdE1hdHJpeExheW91dENyZWF0ZSgmbGF5b3V0QiwgSElQX1JfMTZCRiwgTiwgSywgTikpOwogIENIRUNLX0hJUEJMQVNMVChoaXBibGFzTHRNYXRyaXhMYXlvdXRDcmVhdGUoJmxheW91dEMsIEhJUF9SXzE2QkYsIE4sIE0sIE4pKTsKCiAgQ0hFQ0tfSElQQkxBU0xUKGhpcGJsYXNMdE1hdHJpeExheW91dFNldEF0dHJpYnV0ZShsYXlvdXRBLAogICAgICBISVBCTEFTTFRfTUFUUklYX0xBWU9VVF9CQVRDSF9DT1VOVCwgJmJhdGNoQ291bnQsIHNpemVvZihiYXRjaENvdW50KSkpOwogIENIRUNLX0hJUEJMQVNMVChoaXBibGFzTHRNYXRyaXhMYXlvdXRTZXRBdHRyaWJ1dGUobGF5b3V0QSwKICAgICAgSElQQkxBU0xUX01BVFJJWF9MQVlPVVRfU1RSSURFRF9CQVRDSF9PRkZTRVQsICZzdHJpZGVBLCBzaXplb2Yoc3RyaWRlQSkpKTsKCiAgQ0hFQ0tfSElQQkxBU0xUKGhpcGJsYXNMdE1hdHJpeExheW91dFNldEF0dHJpYnV0ZShsYXlvdXRCLAogICAgICBISVBCTEFTTFRfTUFUUklYX0xBWU9VVF9CQVRDSF9DT1VOVCwgJmJhdGNoQ291bnQsIHNpemVvZihiYXRjaENvdW50KSkpOwogIENIRUNLX0hJUEJMQVNMVChoaXBibGFzTHRNYXRyaXhMYXlvdXRTZXRBdHRyaWJ1dGUobGF5b3V0QiwKICAgICAgSElQQkxBU0xUX01BVFJJWF9MQVlPVVRfU1RSSURFRF9CQVRDSF9PRkZTRVQsICZzdHJpZGVCLCBzaXplb2Yoc3RyaWRlQikpKTsKCiAgQ0hFQ0tfSElQQkxBU0xUKGhpcGJsYXNMdE1hdHJpeExheW91dFNldEF0dHJpYnV0ZShsYXlvdXRDLAogICAgICBISVBCTEFTTFRfTUFUUklYX0xBWU9VVF9CQVRDSF9DT1VOVCwgJmJhdGNoQ291bnQsIHNpemVvZihiYXRjaENvdW50KSkpOwogIENIRUNLX0hJUEJMQVNMVChoaXBibGFzTHRNYXRyaXhMYXlvdXRTZXRBdHRyaWJ1dGUobGF5b3V0QywKICAgICAgSElQQkxBU0xUX01BVFJJWF9MQVlPVVRfU1RSSURFRF9CQVRDSF9PRkZTRVQsICZzdHJpZGVDLCBzaXplb2Yoc3RyaWRlQykpKTsKCiAgaGlwYmxhc0x0TWF0bXVsUHJlZmVyZW5jZV90IHByZWZlcmVuY2U7CiAgQ0hFQ0tfSElQQkxBU0xUKGhpcGJsYXNMdE1hdG11bFByZWZlcmVuY2VDcmVhdGUoJnByZWZlcmVuY2UpKTsKCiAgdm9pZCogZF93b3Jrc3BhY2U7CiAgaGlwTWFsbG9jKCZkX3dvcmtzcGFjZSwgd29ya3NwYWNlU2l6ZSk7CiAgQ0hFQ0tfSElQQkxBU0xUKGhpcGJsYXNMdE1hdG11bFByZWZlcmVuY2VTZXRBdHRyaWJ1dGUocHJlZmVyZW5jZSwKICAgICAgSElQQkxBU0xUX01BVE1VTF9QUkVGX01BWF9XT1JLU1BBQ0VfQllURVMsICZ3b3Jrc3BhY2VTaXplLCBzaXplb2Yod29ya3NwYWNlU2l6ZSkpKTsKCiAgaGlwYmxhc0x0TWF0bXVsSGV1cmlzdGljUmVzdWx0X3QgaGV1cmlzdGljUmVzdWx0OwogIGludCByZXR1cm5lZEFsZ29Db3VudCA9IDA7CiAgQ0hFQ0tfSElQQkxBU0xUKGhpcGJsYXNMdE1hdG11bEFsZ29HZXRIZXVyaXN0aWMoaGFuZGxlX2hpcGJsYXMsIG1hdG11bERlc2MsCiAgICAgIGxheW91dEIsIGxheW91dEEsIGxheW91dEMsIGxheW91dEMsIHByZWZlcmVuY2UsIDEsICZoZXVyaXN0aWNSZXN1bHQsICZyZXR1cm5lZEFsZ29Db3VudCkpOwoKICBpZiAocmV0dXJuZWRBbGdvQ291bnQgPT0gMCkgewogICAgICBzdGQ6OmNlcnIgPDwgIk5vIHN1aXRhYmxlIGFsZ29yaXRobSBmb3VuZC4iIDw8IHN0ZDo6ZW5kbDsKICAgICAgdGhyb3cgbmV3IHN0ZDo6cnVudGltZV9lcnJvcigiTm8gc3VpdGFibGUgYWxnb3JpdGhtIGZvdW5kLiIpOwogIH0KCiAgcmV0dXJuewogICAgbGF5b3V0QSwgbGF5b3V0QiwgbGF5b3V0QywKICAgIGRfd29ya3NwYWNlLAogICAgaGV1cmlzdGljUmVzdWx0LAogICAgbWF0bXVsRGVzYwogIH07CiAKfQoKc3RhdGljIENvbmZpZ0JsYXNMdCBjb25maWdfbG9yYTsKCnZvaWQgaW5pdCgpewogICAgaWYgKCFoYXNJbml0KXsKICAgICAgICByb2NibGFzX2NyZWF0ZV9oYW5kbGUoJmhhbmRsZSk7ICAgICAgICAKICAgICAgICAKICAgICAgICBDSEVDS19ISVBCTEFTTFQoaGlwYmxhc0x0Q3JlYXRlKCZoYW5kbGVfaGlwYmxhcykpOwogIAogICAgICAgIGludCBiYXRjaENvdW50ID0gMTI4OwogICAgICAgIGludCBNID0gMTI4OwogICAgICAgIGludCBOID0gNTEyOwogICAgICAgIGludCBLID0gMTUzNjsKICAgICAgICBpbnQgc3RyaWRlTUsgPSAwOwogICAgICAgIGludCBzdHJpZGVLTiA9IEsqTjsKICAgICAgICBjb25maWdfbG9yYSA9IGluaXRCbGFzTHQoIE0sICBOLCAgSywgIGJhdGNoQ291bnQsIHN0cmlkZU1LLCBzdHJpZGVLTik7CiAgICAKICAgICAgICBoYXNJbml0ID0gdHJ1ZTsKICAgIH0KfQoKdm9pZCBtYXRtdWxfYmxhc19ybV9jbShjb25zdCBiZjE2KmRBLCBjb25zdCBiZjE2ICpkQiwgYmYxNiAqZEMsIGludCBNLCBpbnQgTiwgaW50IEssIGludCBzdHJpZGVBLCBmbG9hdCBhbHBoYSA9IDEuMGYpewogIGNvbnN0IGZsb2F0IGJldGEgID0gMC4wZjsKICByb2NibGFzX2dlbW1fZXgoCiAgICBoYW5kbGUsCiAgICByb2NibGFzX29wZXJhdGlvbl90cmFuc3Bvc2UsCiAgICByb2NibGFzX29wZXJhdGlvbl9ub25lLAogICAgTiwgTSwgSywKICAgICZhbHBoYSwKICAgIGRCLCByb2NibGFzX2RhdGF0eXBlX2JmMTZfciwgSywKICAgIGRBLCByb2NibGFzX2RhdGF0eXBlX2JmMTZfciwgc3RyaWRlQSwKICAgICZiZXRhLAogICAgZEMsIHJvY2JsYXNfZGF0YXR5cGVfYmYxNl9yLCBOLAogICAgZEMsIHJvY2JsYXNfZGF0YXR5cGVfYmYxNl9yLCBOLAogICAgcm9jYmxhc19kYXRhdHlwZV9mMzJfciwKICAgIHJvY2JsYXNfZ2VtbV9hbGdvX3N0YW5kYXJkLAogICAgMCwgMAogICk7Cn0KCnZvaWQgZG93bl9wcm9qKAogIHVpbnRwdHJfdCB4X3B0ciwKICB1aW50cHRyX3QgcV9wcm9qX2Rvd25fcHRyLAogIHVpbnRwdHJfdCBxX2xvcmFfcHRyLAogIHVpbnRwdHJfdCBrdl9wcm9qX2Rvd25fcHRyLAogIHVpbnRwdHJfdCBrdl9sb3JhX3B0ciwKICBpbnQgYmF0Y2hfc2l6ZSwKICBpbnQgZGltX3FfZG93biwKICBpbnQgZGltX2t2X2Rvd24sCiAgaW50IGRpbV9lbWJlZCl7CgogIGNvbnN0IGJmMTYgKmRfaW5wdXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGJmMTYqPih4X3B0cik7CiAgY29uc3QgYmYxNiAqZF9xX3Byb2pfZG93biA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYmYxNio+KHFfcHJval9kb3duX3B0cik7CiAgY29uc3QgYmYxNiAqZF9rdl9wcm9qX2Rvd24gPSByZWludGVycHJldF9jYXN0PGNvbnN0IGJmMTYqPihrdl9wcm9qX2Rvd25fcHRyKTsKICAKICBiZjE2ICpkX3FfbG9yYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8YmYxNio+KHFfbG9yYV9wdHIpOwogIGJmMTYgKmRfa3ZfbG9yYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8YmYxNio+KGt2X2xvcmFfcHRyKTsKCiAgIG1hdG11bF9ibGFzX3JtX2NtKGRfaW5wdXQsIGRfcV9wcm9qX2Rvd24sIGRfcV9sb3JhLCBiYXRjaF9zaXplLCBkaW1fcV9kb3duLCBkaW1fZW1iZWQsZGltX2VtYmVkKTsKICAgbWF0bXVsX2JsYXNfcm1fY20oZF9pbnB1dCwgZF9rdl9wcm9qX2Rvd24sIGRfa3ZfbG9yYSwgYmF0Y2hfc2l6ZSwgZGltX2t2X2Rvd24sIGRpbV9lbWJlZCxkaW1fZW1iZWQpOwogIAp9CgoKdm9pZCBtYXRtdWxfYmxhc19jbV9ybV9iYXRjaGVkX3N0cmlkZShjb25zdCBiZjE2KmRBLCBjb25zdCBiZjE2ICpkQiwgYmYxNiAqZEMsIGludCBNLCBpbnQgTiwgaW50IEssIGludCBuX2JhdGNoZXMsIGludCBzdHJpZGVNSywgaW50IHN0cmlkZUtOKXsKICBjb25zdCBmbG9hdCBhbHBoYSA9IDEuMGY7CiAgY29uc3QgZmxvYXQgYmV0YSAgPSAwLjBmOwogIHJvY2JsYXNfZ2VtbV9zdHJpZGVkX2JhdGNoZWRfZXgoCiAgICBoYW5kbGUsCiAgICByb2NibGFzX29wZXJhdGlvbl9ub25lLAogICAgcm9jYmxhc19vcGVyYXRpb25fdHJhbnNwb3NlLAogICAgTiwgTSwgSywKICAgICZhbHBoYSwKICAgIGRCLCByb2NibGFzX2RhdGF0eXBlX2JmMTZfciwgTixzdHJpZGVLTiwKICAgIGRBLCByb2NibGFzX2RhdGF0eXBlX2JmMTZfciwgTSxzdHJpZGVNSywKICAgICZiZXRhLAogICAgZEMsIHJvY2JsYXNfZGF0YXR5cGVfYmYxNl9yLCBOLE4qTSwKICAgIGRDLCByb2NibGFzX2RhdGF0eXBlX2JmMTZfciwgTixOKk0sCiAgICBuX2JhdGNoZXMsCiAgICByb2NibGFzX2RhdGF0eXBlX2YzMl9yLAogICAgcm9jYmxhc19nZW1tX2FsZ29fc3RhbmRhcmQsCiAgICAwLCAwCiAgKTsKfQoKdm9pZCBtZXJnZWRfbWF0bXVsKAogIHVpbnRwdHJfdCBRX3Byb2pfdXBfcHRyLAogIHVpbnRwdHJfdCBLVl9wcm9qX3VwX3B0ciwKICB1aW50cHRyX3QgbWVyZ2VkX3B0ciwKICBpbnQgYmF0Y2hfc2l6ZSwKICBpbnQgcV9sb3JhX2RpbSwKICBpbnQga3ZfbG9yYV9kaW0pewogIAogIGNvbnN0IGJmMTYgKmRfV3FfVXBfbm9wZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYmYxNio+KFFfcHJval91cF9wdHIpOwogIGNvbnN0IGJmMTYgKmRfV2tfdXAgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGJmMTYqPihLVl9wcm9qX3VwX3B0cik7CiAgYmYxNiAqZF9tZXJnZWQgPSByZWludGVycHJldF9jYXN0PGJmMTYqPihtZXJnZWRfcHRyKTsKICAKICBjb25zdCBpbnQgbmJfaGVhZHMgPSAxMjg7CiAgY29uc3QgaW50IE0gPSBxX2xvcmFfZGltOwogIGNvbnN0IGludCBOID0ga3ZfbG9yYV9kaW07CiAgY29uc3QgaW50IEsgPSAxMjg7CiAgY29uc3QgaW50IHN0cmlkZU1LID0gMTkyKnFfbG9yYV9kaW07Ly8xMjgrNjQKICBjb25zdCBpbnQgc3RyaWRlS04gPSAyNTYqa3ZfbG9yYV9kaW07IC8vMTI4KzEyOAogICAgCiAgbWF0bXVsX2JsYXNfY21fcm1fYmF0Y2hlZF9zdHJpZGUoZF9XcV9VcF9ub3BlLCBkX1drX3VwLCBkX21lcmdlZCwgTSwgIE4sICBLLCBiYXRjaF9zaXplLHN0cmlkZU1LLCBzdHJpZGVLTik7CiAgCn0KCnZvaWQgbWF0bXVsX2JsYXNfcm1fY21fYmF0Y2hlZF9zdHJpZGUoY29uc3QgYmYxNipkQSwgY29uc3QgYmYxNiAqZEIsIGNvbnN0IGJmMTYgKmRDLCBiZjE2ICpkRCwgaW50IE0sIGludCBOLCBpbnQgSywgaW50IG5fYmF0Y2hlcywgaW50IHN0cmlkZU1LLCBpbnQgc3RyaWRlS04sIGZsb2F0IGFscGhhLCBmbG9hdCBiZXRhKXsKCiAgcm9jYmxhc19nZW1tX3N0cmlkZWRfYmF0Y2hlZF9leCgKICAgIGhhbmRsZSwKICAgIHJvY2JsYXNfb3BlcmF0aW9uX3RyYW5zcG9zZSwKICAgIHJvY2JsYXNfb3BlcmF0aW9uX25vbmUsCiAgICBOLCBNLCBLLAogICAgJmFscGhhLAogICAgZEIsIHJvY2JsYXNfZGF0YXR5cGVfYmYxNl9yLCBLLHN0cmlkZUtOLAogICAgZEEsIHJvY2JsYXNfZGF0YXR5cGVfYmYxNl9yLCBLLHN0cmlkZU1LLAogICAgJmJldGEsCiAgICBkQywgcm9jYmxhc19kYXRhdHlwZV9iZjE2X3IsIE4sTipNLAogICAgZEQsIHJvY2JsYXNfZGF0YXR5cGVfYmYxNl9yLCBOLE4qTSwKICAgIG5fYmF0Y2hlcywKICAgIHJvY2JsYXNfZGF0YXR5cGVfZjMyX3IsCiAgICByb2NibGFzX2dlbW1fYWxnb19zdGFuZGFyZCwKICAgIDAsIDAKICApOwp9Cgp2b2lkIGNvbWJpbmVfcm9wZSgKICB1aW50cHRyX3QgU2NvcmVOb1JvcGVfcHRyLAogIHVpbnRwdHJfdCBxX3JvcGVfb3V0X3B0ciwKICB1aW50cHRyX3Qga19yb3BlX291dF9wdHIsCiAgdWludHB0cl90IFNjb3JlT3V0X3B0ciwKICBpbnQgTSwKICBpbnQgTiwKICBpbnQgSywKICBmbG9hdCBzY2FsZSl7CiAgCiAgY29uc3QgYmYxNiAqZF9xX3JvcGVfb3V0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBiZjE2Kj4ocV9yb3BlX291dF9wdHIpOwogIGNvbnN0IGJmMTYgKmRfa19yb3BlX291dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYmYxNio+KGtfcm9wZV9vdXRfcHRyKTsKICBjb25zdCBiZjE2ICpkX1Njb3JlTm9Sb3BlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBiZjE2Kj4oU2NvcmVOb1JvcGVfcHRyKTsKICBiZjE2ICogIGRfU2NvcmVPdXQgPSByZWludGVycHJldF9jYXN0PGJmMTYqPihTY29yZU91dF9wdHIpOwogIAogIGNvbnN0IGludCBuYl9oZWFkcyA9IDEyODsKICBpbnQgc3RyaWRlTUsgPSBLKk07CiAgaW50IHN0cmlkZUtOID0gSypOOwoKICBtYXRtdWxfYmxhc19ybV9jbV9iYXRjaGVkX3N0cmlkZShkX3Ffcm9wZV9vdXQsIGRfa19yb3BlX291dCwgZF9TY29yZU5vUm9wZSwgZF9TY29yZU91dCwgTSwgIE4sICBLLCBuYl9oZWFkcyxzdHJpZGVNSywgc3RyaWRlS04sc2NhbGUsc2NhbGUpOwp9Cgp2b2lkIG1hdG11bF9ibGFzX3JtX3JtX2JhdGNoZWRfc3RyaWRlKGNvbnN0IGJmMTYqZEEsIGNvbnN0IGJmMTYgKmRCLCBiZjE2ICpkQywgaW50IE0sIGludCBOLCBpbnQgSywgaW50IG5fYmF0Y2hlcywgaW50IHN0cmlkZU1LLCBpbnQgc3RyaWRlS04pewogIGNvbnN0IGZsb2F0IGFscGhhID0gMS4wZjsKICBjb25zdCBmbG9hdCBiZXRhICA9IDAuMGY7CiAgCiAgcm9jYmxhc19nZW1tX3N0cmlkZWRfYmF0Y2hlZF9leCgKICAgIGhhbmRsZSwKICAgIHJvY2JsYXNfb3BlcmF0aW9uX25vbmUsCiAgICByb2NibGFzX29wZXJhdGlvbl9ub25lLAogICAgTiwgTSwgSywKICAgICZhbHBoYSwKICAgIGRCLCByb2NibGFzX2RhdGF0eXBlX2JmMTZfciwgTixzdHJpZGVLTiwKICAgIGRBLCByb2NibGFzX2RhdGF0eXBlX2JmMTZfciwgSyxzdHJpZGVNSywKICAgICZiZXRhLAogICAgZEMsIHJvY2JsYXNfZGF0YXR5cGVfYmYxNl9yLCBOLE4qTSwKICAgIGRDLCByb2NibGFzX2RhdGF0eXBlX2JmMTZfciwgTixOKk0sCiAgICBuX2JhdGNoZXMsCiAgICByb2NibGFzX2RhdGF0eXBlX2YzMl9yLAogICAgcm9jYmxhc19nZW1tX2FsZ29fc29sdXRpb25faW5kZXgsCiAgICAwLCAwCiAgKTsKICAKfQoKCnZvaWQgbWF0bXVsX2hpcGJsYXNsdF9ybV9ybV9iYXRjaGVkX3N0cmlkZShjb25zdCBDb25maWdCbGFzTHQgJiBjb25maWcgLCBjb25zdCBiZjE2KmRfQSwgY29uc3QgYmYxNiAqZF9CLCBiZjE2ICpkX0MgKXsKCiAgZmxvYXQgYWxwaGEgPSAxLjBmLCBiZXRhID0gMC4wZjsKICAvLyBSdW4gbWF0bXVsCiAgQ0hFQ0tfSElQQkxBU0xUKGhpcGJsYXNMdE1hdG11bChoYW5kbGUsCiAgICAgIGNvbmZpZy5tYXRtdWxEZXNjLAogICAgICAmYWxwaGEsIGRfQiwgY29uZmlnLmxheW91dEIsCiAgICAgICAgICAgICAgZF9BLCBjb25maWcubGF5b3V0QSwKICAgICAgJmJldGEsICBkX0MsIGNvbmZpZy5sYXlvdXRDLAogICAgICAgICAgICAgIGRfQywgY29uZmlnLmxheW91dEMsCiAgICAgICZjb25maWcuaGV1cmlzdGljUmVzdWx0LmFsZ28sCiAgICAgIGNvbmZpZy5kX3dvcmtzcGFjZSwgd29ya3NwYWNlU2l6ZSwgMCkpOwogICAgCn0Kdm9pZCBtYXRtdWxfcWxvcmEoCiAgdWludHB0cl90IHFfbG9yYV9wdHIsCiAgdWludHB0cl90IFdfbWVyZ2VkX3B0ciwKICB1aW50cHRyX3QgU2NvcmVOb1JvcGVfcHRyLAogIGludCBNLAogIGludCBOLAogIGludCBLKXsKICAKICBjb25zdCBiZjE2ICpkX3FfbG9yYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYmYxNio+KHFfbG9yYV9wdHIpOwogIGNvbnN0IGJmMTYgKmRfV19tZXJnZWQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGJmMTYqPihXX21lcmdlZF9wdHIpOwogIGJmMTYgKmRfU2NvcmVOb1JvcGUxID0gcmVpbnRlcnByZXRfY2FzdDwgYmYxNio+KFNjb3JlTm9Sb3BlX3B0cik7CiAgCiAgY29uc3QgaW50IG5iX2hlYWRzID0gMTI4OwogIGNvbnN0IGludCBzdHJpZGVNSyA9IDA7CiAgY29uc3QgaW50IHN0cmlkZUtOID0gSypOOyAKICAgCiAgbWF0bXVsX2hpcGJsYXNsdF9ybV9ybV9iYXRjaGVkX3N0cmlkZShjb25maWdfbG9yYSxkX3FfbG9yYSwgZF9XX21lcmdlZCwgZF9TY29yZU5vUm9wZTEpOwogIAp9Cgp0b3JjaDo6VGVuc29yIG1hdG11bF9jcHAodG9yY2g6OlRlbnNvciBhLCB0b3JjaDo6VGVuc29yIGIpIHsKICAgIHJldHVybiBhdDo6Ym1tKGEsIGIpOwp9CgoKCgpQWUJJTkQxMV9NT0RVTEUocm9wZSwgbSkgewogIG0uZGVmKCJpbml0IiwgJmluaXQsICJJbml0IGNvZGUiKTsKICBtLmRlZigicm9wZSIsICZjb21wdXRlX3JvcGVzX3dyYXBwZXIsICJSb3BlIGtlcm5lbCIpOwogIG0uZGVmKCJzdG9yZWt2IiwgJnN0b3JlX3RvX2t2X2NhY2hlX3dyYXBwZXIsICJLVkNhY2hlIGtlcm5lbCIpOwogIG0uZGVmKCJkb3duX3Byb2oiLCAmZG93bl9wcm9qLCAiRG93biBQcm9qIGtlcm5lbCIpOwogIG0uZGVmKCJtZXJnZWRfbWF0bXVsIiwgJm1lcmdlZF9tYXRtdWwsICJtZXJnZWRfbWF0bXVsIGtlcm5lbCIpOwogIG0uZGVmKCJjb21iaW5lX3JvcGUiLCAmY29tYmluZV9yb3BlLCAiY29tYmluZV9yb3BlIGtlcm5lbCIpOwogIG0uZGVmKCJtYXRtdWxfcWxvcmEiLCAmbWF0bXVsX3Fsb3JhLCAibWF0bXVsX3Fsb3JhIGtlcm5lbCIpOwogIG0uZGVmKCJtYXRtdWxfY3BwIiwgJm1hdG11bF9jcHAsICJtYXRtdWxfdGVzdCBrZXJuZWwiKTsKICAKICAKfQoiIiIKCiAgICAgICAgCmhpcF9tb2R1bGUgPSBsb2FkX2lubGluZSgKICAgIG5hbWU9InJvcGUiLAogICAgY3BwX3NvdXJjZXM9IiIsCiAgICBjdWRhX3NvdXJjZXM9a2VybmVsX2NwcC5yZXBsYWNlKCdAJywgY2hyKDkyKSksCiAgICB3aXRoX2N1ZGE9VHJ1ZSwKICAgIHZlcmJvc2U9RmFsc2UsCiAgICBleHRyYV9jdWRhX2NmbGFncz1bIi1zdGQ9YysrMTcgLU8zIl0sCiAgICBub19pbXBsaWNpdF9oZWFkZXJzPVRydWUsCikKCgpjbGFzcyBLVkNhY2hlKG5uLk1vZHVsZSk6CiAgICBkZWYgX19pbml0X18oc2VsZiwga3ZfY2FjaGVfc2hhcGU6IHR1cGxlKSAtPiBOb25lOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYucmVnaXN0ZXJfYnVmZmVyKCdkYXRhJywgdG9yY2guemVyb3Moa3ZfY2FjaGVfc2hhcGUsIGR0eXBlPXRvcmNoLmJmbG9hdDE2LCBkZXZpY2U9J2N1ZGEnKSkKICAgICAgICBzZWxmLnNlcV9sZW4gPSAwCiAgICAgICAgc2VsZi56ZXJvKCkKCiAgICBkZWYgemVybyhzZWxmKSAtPiBOb25lOgogICAgICAgIHNlbGYuZGF0YS56ZXJvXygpCiAgICAKICAgIGRlZiBnZXRfZGF0YShzZWxmKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIGNfa3Y6IHRvcmNoLlRlbnNvcikgLT4gdG9yY2guVGVuc29yOgogICAgICAgIGFzc2VydCBzZWxmLnNlcV9sZW4gKyBjX2t2LnNpemUoMSkgPD0gc2VsZi5kYXRhLnNpemUoMSksICJLViBDYWNoZSBFeGNlZWRlZCIKCiAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5kYXRhLnRvKGNfa3YuZHR5cGUpCiAgICAgICAgc2VsZi5kYXRhWwogICAgICAgICAgICA6LCBzZWxmLnNlcV9sZW4gOiBzZWxmLnNlcV9sZW4gKyBjX2t2LnNpemUoMSksIDoKICAgICAgICBdID0gY19rdgogICAgICAgIHNlbGYuc2VxX2xlbiArPSBjX2t2LnNpemUoMSkKCiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVs6LCA6c2VsZi5zZXFfbGVuXSwgc2VsZi5zZXFfbGVuCiAgICAKQGRhdGFjbGFzcwpjbGFzcyBDb25maWc6CiAgICBiYXRjaF9zaXplOiBpbnQKICAgIGRpbTogaW50CiAgICBuX2hlYWRzOiBpbnQKICAgIHFfbG9yYV9yYW5rOiBpbnQgCiAgICBrdl9sb3JhX3Jhbms6IGludAogICAgcWtfbm9wZV9oZWFkX2RpbTogaW50CiAgICBxa19yb3BlX2hlYWRfZGltOiBpbnQKICAgIHZfaGVhZF9kaW06IGludAogICAgc2VxX2xlbjogaW50CiAgICBtYXhfc2VxX2xlbjogaW50CiAgICBrdl9jYWNoZV9zaGFwZTogdHVwbGUKICAgIFFfcHJval9kb3duX3dlaWdodDogdG9yY2guVGVuc29yCiAgICBRX3Byb2pfdXBfd2VpZ2h0OiB0b3JjaC5UZW5zb3IKICAgIEtWX3Byb2pfZG93bl93ZWlnaHQ6IHRvcmNoLlRlbnNvcgogICAgS1ZfcHJval91cF93ZWlnaHQ6IHRvcmNoLlRlbnNvcgogICAgd29fd2VpZ2h0OiB0b3JjaC5UZW5zb3IKCiAgICAgCmNsYXNzIE1MQShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZzogQ29uZmlnKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICBzZWxmLmRpbSA9IGNvbmZpZy5kaW0KICAgICAgICBzZWxmLm5faGVhZHMgPSBjb25maWcubl9oZWFkcwogICAgICAgIHNlbGYucV9sb3JhX3JhbmsgPSBjb25maWcucV9sb3JhX3JhbmsKICAgICAgICBzZWxmLmt2X2xvcmFfcmFuayA9IGNvbmZpZy5rdl9sb3JhX3JhbmsKICAgICAgICBzZWxmLm5vcGVfaGVhZF9kaW0gPSBjb25maWcucWtfbm9wZV9oZWFkX2RpbQogICAgICAgIHNlbGYucm9wZV9oZWFkX2RpbSA9IGNvbmZpZy5xa19yb3BlX2hlYWRfZGltCiAgICAgICAgc2VsZi52X2hlYWRfZGltID0gY29uZmlnLnZfaGVhZF9kaW0KICAgICAgICAKICAgICAgICBzZWxmLnFfbG9yYSA9IHRvcmNoLmVtcHR5KGNvbmZpZy5iYXRjaF9zaXplLCAxLCBzZWxmLnFfbG9yYV9yYW5rLGR0eXBlPXRvcmNoLmJmbG9hdDE2LCBkZXZpY2U9J2N1ZGEnKQogICAgICAgIHNlbGYua3ZfbG9yYSA9IHRvcmNoLmVtcHR5KGNvbmZpZy5iYXRjaF9zaXplLCAxLCBzZWxmLmt2X2xvcmFfcmFuays2NCxkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykKICAgICAgICBzZWxmLlNjb3JlTm9Sb3BlMSA9IHRvcmNoLmVtcHR5KGNvbmZpZy5iYXRjaF9zaXplLCAxMjgsIDUxMixkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykKICAgICAgICBzZWxmLldfbWVyZ2VkID0gdG9yY2guZW1wdHkoY29uZmlnLmJhdGNoX3NpemUsIHNlbGYucV9sb3JhX3JhbmssIHNlbGYua3ZfbG9yYV9yYW5rLGR0eXBlPXRvcmNoLmJmbG9hdDE2LCBkZXZpY2U9J2N1ZGEnKQogICAgICAgIHNlbGYuZXBzID0gMWUtNgogICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCiAgICAgICAgaGlwX21vZHVsZS5pbml0KCkKICAgICAgICAKIAogICAgICAgIAogICAKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvciwga3ZfY2FjaGU6IEtWQ2FjaGUpIC0+IHRvcmNoLlRlbnNvcjoKCiAgICAgICAgYmF0Y2hfc2l6ZSwgc2VxX2xlbiwgbW9kZWxfZGltID0geC5zaXplKCkKICAgICAgICAgIAogICAgICAgIGhpcF9tb2R1bGUuZG93bl9wcm9qKAogICAgICAgICAgICAgICAgeC5kYXRhX3B0cigpLAogICAgICAgICAgICAgICAgc2VsZi5jb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0LmRhdGFfcHRyKCksCiAgICAgICAgICAgICAgICBzZWxmLnFfbG9yYS5kYXRhX3B0cigpLAogICAgICAgICAgICAgICAgc2VsZi5jb25maWcuS1ZfcHJval9kb3duX3dlaWdodC5kYXRhX3B0cigpLAogICAgICAgICAgICAgICAgc2VsZi5rdl9sb3JhLmRhdGFfcHRyKCksCiAgICAgICAgICAgICAgICBiYXRjaF9zaXplLAogICAgICAgICAgICAgICAgc2VsZi5xX2xvcmFfcmFuaywKICAgICAgICAgICAgICAgIHNlbGYua3ZfbG9yYV9yYW5rKzY0LAogICAgICAgICAgICAgICAgeC5zaGFwZVsyXSkKICAgICAgICAgICAgICAgCiAgICAgICAgaGlwX21vZHVsZS5tZXJnZWRfbWF0bXVsKAogICAgICAgICAgc2VsZi5jb25maWcuUV9wcm9qX3VwX3dlaWdodC5kYXRhX3B0cigpLAogICAgICAgICAgc2VsZi5jb25maWcuS1ZfcHJval91cF93ZWlnaHQuZGF0YV9wdHIoKSwKICAgICAgICAgIHNlbGYuV19tZXJnZWQuZGF0YV9wdHIoKSwKICAgICAgICAgIGJhdGNoX3NpemUsCiAgICAgICAgICBzZWxmLnFfbG9yYV9yYW5rLAogICAgICAgICAgc2VsZi5rdl9sb3JhX3JhbmspCiAgCiAgICAgICAgaGlwX21vZHVsZS5zdG9yZWt2KAogICAgICAgICAgICBzZWxmLmt2X2xvcmEuZGF0YV9wdHIoKSwKICAgICAgICAgICAga3ZfY2FjaGUuZ2V0X2RhdGEoKS5kYXRhX3B0cigpLAogICAgICAgICAgICBiYXRjaF9zaXplLAogICAgICAgICAgICBrdl9jYWNoZS5zZXFfbGVuKQogICAgICAgIAogICAgICAgIAogICAgICAgIGhpcF9tb2R1bGUubWF0bXVsX3Fsb3JhKAogICAgICAgICAgc2VsZi5xX2xvcmEuZGF0YV9wdHIoKSwKICAgICAgICAgIHNlbGYuV19tZXJnZWQuZGF0YV9wdHIoKSwKICAgICAgICAgIHNlbGYuU2NvcmVOb1JvcGUxLmRhdGFfcHRyKCksCiAgICAgICAgICAxMjgsCiAgICAgICAgICA1MTIsCiAgICAgICAgICAxNTM2KQogICAgICAgICAgCiAgICAgICAgCiAgICAgICAga3ZfY2FjaGUuc2VxX2xlbis9MQogICAgICAgIGt2X2xlbiA9IGt2X2NhY2hlLnNlcV9sZW4KICAgICAgICAKICAgICAgICBxdWVyeV9wb3MgPSBrdl9sZW4gLSAxCiAgICAgICAga3ZfbG9yYSA9IHRvcmNoLmFzX3N0cmlkZWQoa3ZfY2FjaGUuZGF0YSwgc2l6ZT0oMTI4LCBrdl9sZW4sIDU3NiksIHN0cmlkZT1rdl9jYWNoZS5kYXRhLnN0cmlkZSgpKQogICAgICAgIAogICAgICAgIGt2RG93bl9ub3BlLCBrX3JvcGUgPSB0b3JjaC5zcGxpdChrdl9sb3JhLCBbc2VsZi5rdl9sb3JhX3JhbmssIHNlbGYucm9wZV9oZWFkX2RpbV0sIGRpbT0tMSkgICAgICAgICAgICAgIAogICAgICAgIAogICAgICAgIGt2X2Rvd25fcGVybXV0ZSA9IGt2RG93bl9ub3BlLnBlcm11dGUoMCwyLDEpCiAgICAgICAgCiAgICAgICAgU2NvcmVOb1JvcGUxID0gc2VsZi5TY29yZU5vUm9wZTEucGVybXV0ZSgxLDAsMikKICAgICAgICBTY29yZU5vUm9wZV90PVNjb3JlTm9Sb3BlMS52aWV3KGJhdGNoX3NpemUsc2VsZi5uX2hlYWRzLDUxMikgI1ticyxuX2hlYWQsNTEyXSkKCiAgICAgICAgU2NvcmVOb1JvcGUgPSBoaXBfbW9kdWxlLm1hdG11bF9jcHAoU2NvcmVOb1JvcGVfdCxrdl9kb3duX3Blcm11dGUpCiAgICAgICAgCiAgICAgICAgV3FOb3BlUm9wZSA9IHNlbGYuY29uZmlnLlFfcHJval91cF93ZWlnaHQudCgpLnZpZXcoc2VsZi5xX2xvcmFfcmFuayxzZWxmLm5faGVhZHMsc2VsZi5ub3BlX2hlYWRfZGltK3NlbGYucm9wZV9oZWFkX2RpbSkKICAgICAgICBfLCBXcV9VcF9yb3BlID0gdG9yY2guc3BsaXQoV3FOb3BlUm9wZSwgW3NlbGYubm9wZV9oZWFkX2RpbSwgc2VsZi5yb3BlX2hlYWRfZGltXSwgZGltPS0xKQoKICAgICAgICBXa3ZfdXAgPSBzZWxmLmNvbmZpZy5LVl9wcm9qX3VwX3dlaWdodC50KCkudmlldyhzZWxmLmt2X2xvcmFfcmFuayxzZWxmLm5faGVhZHMsc2VsZi5ub3BlX2hlYWRfZGltK3NlbGYudl9oZWFkX2RpbSkKICAgICAgICBfLCBXdl91cCA9IHRvcmNoLnNwbGl0KFdrdl91cCwgW3NlbGYubm9wZV9oZWFkX2RpbSwgc2VsZi52X2hlYWRfZGltXSwgZGltPS0xKQogICAgICAgIAogICAgICAgIFd2X3VwID0gV3ZfdXAucGVybXV0ZSgxLCAwLCAyKSAgIyBzaGFwZTogKG5faGVhZCwgZGltLCBoZWFkKSAgICAgICAgCiAgICAgICAgV3FfVXBfcm9wZTAgPSBXcV9VcF9yb3BlLnZpZXcoc2VsZi5xX2xvcmFfcmFuayxzZWxmLm5faGVhZHMsc2VsZi5yb3BlX2hlYWRfZGltKQogICAgICAgIFdxX1VwX3JvcGUwID0gV3FfVXBfcm9wZTAucGVybXV0ZSgxLDAsMikKICAgICAgICBRUm9wZTAgPSB0b3JjaC5tYXRtdWwoc2VsZi5xX2xvcmEucGVybXV0ZSgxLDAsMiksV3FfVXBfcm9wZTApIzEKCiAgICAgICAgCiAgICAgICAgUVJvcGUgPSBRUm9wZTAucGVybXV0ZSgxLDAsMikudmlldygxMjgsIDEsIDEyOCwgNjQpLmNvbnRpZ3VvdXMoKQogICAgICAgIHFfcm9wZSA9IFFSb3BlLnBlcm11dGUoMCwgMiwgMSwgMykgIyBicyB4IG5faGVhZHMgeCBzZXFfbGVuIHggcm9wZV9oZWFkX2RpbQogCiAgICAgICAga19yb3BlX291dCA9IHRvcmNoLmVtcHR5KGJhdGNoX3NpemUsIGt2X2xlbiwgNjQsZHR5cGU9dG9yY2guYmZsb2F0MTYsIGRldmljZT0nY3VkYScpCiAgICAgICAgcV9yb3BlX291dCA9IHRvcmNoLmVtcHR5KGJhdGNoX3NpemUsIHNlbGYubl9oZWFkcywxLCA2NCxkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykKICAgICAgICBoaXBfbW9kdWxlLnJvcGUoa19yb3BlX291dC5kYXRhX3B0cigpLAogICAgICAgICAgICAgICAgICAgICAgICBrX3JvcGUuZGF0YV9wdHIoKSwKICAgICAgICAgICAgICAgICAgICAgICAga19yb3BlLnN0cmlkZSgpLAogICAgICAgICAgICAgICAgICAgICAgICBxX3JvcGVfb3V0LmRhdGFfcHRyKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHFfcm9wZS5kYXRhX3B0cigpLAogICAgICAgICAgICAgICAgICAgICAgICBiYXRjaF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5faGVhZHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGt2X2xlbikKICAgICAgICAKICAgICAgICBrX3JvcGVfb3V0ID0ga19yb3BlX291dC51bnNxdWVlemUoMSkKCiAgICAgICAgU2NvcmVPdXQgPSB0b3JjaC5lbXB0eShiYXRjaF9zaXplLCAxMjgsIGt2X2xlbixkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykKICAgICAgICBoaXBfbW9kdWxlLmNvbWJpbmVfcm9wZSgKICAgICAgICAgIFNjb3JlTm9Sb3BlLmRhdGFfcHRyKCksCiAgICAgICAgICBxX3JvcGVfb3V0LmRhdGFfcHRyKCksCiAgICAgICAgICBrX3JvcGVfb3V0LmRhdGFfcHRyKCksCiAgICAgICAgICBTY29yZU91dC5kYXRhX3B0cigpLAogICAgICAgICAgU2NvcmVPdXQuc2hhcGVbMV0sCiAgICAgICAgICBrdl9sZW4sCiAgICAgICAgICBzZWxmLnJvcGVfaGVhZF9kaW0sCiAgICAgICAgICAxLjAgLyBtYXRoLnNxcnQoc2VsZi5yb3BlX2hlYWRfZGltICsgc2VsZi5ub3BlX2hlYWRfZGltKSkKICAgICAgICAKICAgICAgICBBdHRuT3V0U01heCA9IEYuc29mdG1heChTY29yZU91dCwgZGltPS0xKSMudG8odG9yY2guYmZsb2F0MTYpCiAgICAgICAgCiAgICAgICAga3ZfZG93biA9IGt2RG93bl9ub3BlLnVuc3F1ZWV6ZSgxKQogICAgICAgIHkwX2MgPSB0b3JjaC5tYXRtdWwoQXR0bk91dFNNYXguc3F1ZWV6ZSgyKSxrdl9kb3duLnNxdWVlemUoMSkpCiAgICAgICAgeTBfYz15MF9jLnVuc3F1ZWV6ZSgyKQogICAgICAgIAogICAgICAgIHkwX2MgPSB0b3JjaC5tYXRtdWwoeTBfYy5wZXJtdXRlKDEsMCwyLDMpLnNxdWVlemUoMiksV3ZfdXApCiAgICAgICAgeTBfYyA9IHkwX2MucGVybXV0ZSgxLDAsMikKICAgICAgICB5MF9jID0gdG9yY2gubWF0bXVsKHkwX2MuZmxhdHRlbihzdGFydF9kaW09MSksc2VsZi5jb25maWcud29fd2VpZ2h0LnQoKSkKICAgICAgICAKICAgICAgICByZXR1cm4geTBfYy52aWV3KGJhdGNoX3NpemUsMSxzZWxmLmRpbSksIGt2X2NhY2hlLmdldF9kYXRhKCkKCm1vZGVsID0gTm9uZQpkZWYgY3VzdG9tX2tlcm5lbChkYXRhOiBpbnB1dF90KSAtPiBvdXRwdXRfdDoKICAgICAgY29uZmlnLCB4LCBrdl9jYWNoZSA9IGRhdGEKICAgICAgZ2xvYmFsIG1vZGVsCiAgICAgIGlmIG1vZGVsID09IE5vbmU6CiAgICAgICAgICBtb2RlbCA9IE1MQShjb25maWcpLnRvKCdjdWRhOjAnKQogICAKICAgICAgbW9kZWwuY29uZmlnID0gY29uZmlnCiAgICAgIHJldHVybiBtb2RlbCh4LCBrdl9jYWNoZSk=Source code from GPU Mode and the KernelBot dataset · June 9 Researcher Reciprocity License v1.0
Changes from previous submission
Against this author's previous submission submission 31256.
Best evidence level for this revision: reported
JSON