submission 26740
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.
submission_mla_3.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mla-decode-26740?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:47293980ca3da4ade0b8cc018a78d15dfde419b8d3e368d4bcfe1c6ad9f777a1
license declaredunknown
license concludedunknown
imported2026-08-15
Kernel source
submission_mla_3.py1 lines
aW1wb3J0IG1hdGgKZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCmltcG9ydCB0b3JjaApmcm9tIHRvcmNoIGltcG9ydCBubgppbXBvcnQgdG9yY2gubm4uZnVuY3Rpb25hbCBhcyBGCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QKCmNsYXNzIFJvUEUobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkX21vZGVsOiBpbnQpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYuZF9tb2RlbCA9IGRfbW9kZWwKICAgICAgICB0aGV0YSA9IDEwMDAwICoqICgtdG9yY2guYXJhbmdlKDAsIGRfbW9kZWwvLzIsZHR5cGU9dG9yY2guYmZsb2F0MTYpIC8gKGRfbW9kZWwvLzIpKQogICAgICAgIHNlbGYucmVnaXN0ZXJfYnVmZmVyKCJ0aGV0YSIsIHRoZXRhKQoKICAgIGRlZiByb3RhdGVfaGFsZihzZWxmLCB4OiB0b3JjaC5UZW5zb3IpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICB4MSwgeDIgPSB4LmNodW5rKDIsIGRpbT0tMSkKICAgICAgICByZXR1cm4gdG9yY2guY2F0KCgteDIsIHgxKSwgZGltPS0xKQoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvciwgc3RhcnRfcG9zOiBpbnQgPSAwKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgc2VxX2xlbiA9IHguc2l6ZSgtMikKICAgICAgICBkX21vZGVsID0geC5zaXplKC0xKQogICAgICAgIGFzc2VydCBkX21vZGVsID09IHNlbGYuZF9tb2RlbAogICAgICAgIHNlcV9pZHggPSB0b3JjaC5hcmFuZ2Uoc3RhcnRfcG9zLCBzdGFydF9wb3MgKyBzZXFfbGVuLCBkZXZpY2U9eC5kZXZpY2UpCiAgICAgICAgaWR4X3RoZXRhID0gdG9yY2guZWluc3VtKCdzLGQtPnNkJywgc2VxX2lkeCwgc2VsZi50aGV0YSkKICAgICAgICBpZHhfdGhldGEyID0gdG9yY2guY2F0KFtpZHhfdGhldGEsIGlkeF90aGV0YV0sIGRpbT0tMSkKICAgICAgICBjb3MgPSBpZHhfdGhldGEyLmNvcygpLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgICAgIHNpbiA9IGlkeF90aGV0YTIuc2luKCkudG8odG9yY2guYmZsb2F0MTYpCiAgICAgICAgcmV0dXJuIHggKiBjb3MgKyBzZWxmLnJvdGF0ZV9oYWxmKHgpICogc2luCgoKY2xhc3MgS1ZDYWNoZShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGt2X2NhY2hlX3NoYXBlOiB0dXBsZSkgLT4gTm9uZToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICBzZWxmLnJlZ2lzdGVyX2J1ZmZlcignZGF0YScsIHRvcmNoLnplcm9zKGt2X2NhY2hlX3NoYXBlLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykpCiAgICAgICAgc2VsZi5zZXFfbGVuID0gMAogICAgICAgIHNlbGYuemVybygpCgogICAgZGVmIHplcm8oc2VsZikgLT4gTm9uZToKICAgICAgICBzZWxmLmRhdGEuemVyb18oKQogICAgCiAgICBkZWYgZ2V0X2RhdGEoc2VsZikgLT4gdG9yY2guVGVuc29yOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEKCiAgICBkZWYgZm9yd2FyZChzZWxmLCBjX2t2OiB0b3JjaC5UZW5zb3IpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICBhc3NlcnQgc2VsZi5zZXFfbGVuICsgY19rdi5zaXplKDEpIDw9IHNlbGYuZGF0YS5zaXplKDEpLCAiS1YgQ2FjaGUgRXhjZWVkZWQiCgogICAgICAgIHNlbGYuZGF0YSA9IHNlbGYuZGF0YS50byhjX2t2LmR0eXBlKQogICAgICAgIHNlbGYuZGF0YVsKICAgICAgICAgICAgOiwgc2VsZi5zZXFfbGVuIDogc2VsZi5zZXFfbGVuICsgY19rdi5zaXplKDEpLCA6CiAgICAgICAgXSA9IGNfa3YKICAgICAgICBzZWxmLnNlcV9sZW4gKz0gY19rdi5zaXplKDEpCgogICAgICAgIHJldHVybiBzZWxmLmRhdGFbOiwgOnNlbGYuc2VxX2xlbl0sIHNlbGYuc2VxX2xlbgogICAgCkBkYXRhY2xhc3MKY2xhc3MgQ29uZmlnOgogICAgYmF0Y2hfc2l6ZTogaW50CiAgICBkaW06IGludAogICAgbl9oZWFkczogaW50CiAgICBxX2xvcmFfcmFuazogaW50IAogICAga3ZfbG9yYV9yYW5rOiBpbnQKICAgIHFrX25vcGVfaGVhZF9kaW06IGludAogICAgcWtfcm9wZV9oZWFkX2RpbTogaW50CiAgICB2X2hlYWRfZGltOiBpbnQKICAgIHNlcV9sZW46IGludAogICAgbWF4X3NlcV9sZW46IGludAogICAga3ZfY2FjaGVfc2hhcGU6IHR1cGxlCiAgICBRX3Byb2pfZG93bl93ZWlnaHQ6IHRvcmNoLlRlbnNvcgogICAgUV9wcm9qX3VwX3dlaWdodDogdG9yY2guVGVuc29yCiAgICBLVl9wcm9qX2Rvd25fd2VpZ2h0OiB0b3JjaC5UZW5zb3IKICAgIEtWX3Byb2pfdXBfd2VpZ2h0OiB0b3JjaC5UZW5zb3IKICAgIHdvX3dlaWdodDogdG9yY2guVGVuc29yCgpjbGFzcyBNTEEobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IENvbmZpZyk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5kaW0gPSBjb25maWcuZGltCiAgICAgICAgc2VsZi5uX2hlYWRzID0gY29uZmlnLm5faGVhZHMKICAgICAgICBzZWxmLnFfbG9yYV9yYW5rID0gY29uZmlnLnFfbG9yYV9yYW5rCiAgICAgICAgc2VsZi5rdl9sb3JhX3JhbmsgPSBjb25maWcua3ZfbG9yYV9yYW5rCiAgICAgICAgc2VsZi5ub3BlX2hlYWRfZGltID0gY29uZmlnLnFrX25vcGVfaGVhZF9kaW0KICAgICAgICBzZWxmLnJvcGVfaGVhZF9kaW0gPSBjb25maWcucWtfcm9wZV9oZWFkX2RpbQogICAgICAgIHNlbGYudl9oZWFkX2RpbSA9IGNvbmZpZy52X2hlYWRfZGltCiAgICAgICAgIyBEb3duLXByb2plY3Rpb24gbWF0cmljZXMKICAgICAgICBzZWxmLlFfcHJval9kb3duID0gbm4uTGluZWFyKHNlbGYuZGltLCBzZWxmLnFfbG9yYV9yYW5rLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKICAgICAgICBzZWxmLktWX3Byb2pfZG93biA9IG5uLkxpbmVhcihzZWxmLmRpbSwgc2VsZi5rdl9sb3JhX3JhbmsgKyBzZWxmLnJvcGVfaGVhZF9kaW0sIGJpYXM9RmFsc2UsIGR0eXBlPXRvcmNoLmJmbG9hdDE2KQoKICAgICAgICAjIFVwLXByb2plY3Rpb24gYW5kIHJvcGUgcHJvamVjdGlvbiBtYXRyaWNlcwogICAgICAgIHNlbGYuUV9wcm9qX3VwID0gbm4uTGluZWFyKHNlbGYucV9sb3JhX3JhbmssIChzZWxmLm5vcGVfaGVhZF9kaW0gKyBzZWxmLnJvcGVfaGVhZF9kaW0pICogc2VsZi5uX2hlYWRzLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKICAgICAgICBzZWxmLktWX3Byb2pfdXAgPSBubi5MaW5lYXIoc2VsZi5rdl9sb3JhX3JhbmssIChzZWxmLm5vcGVfaGVhZF9kaW0gKyBzZWxmLnZfaGVhZF9kaW0pICogc2VsZi5uX2hlYWRzLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKCiAgICAgICAgIyBSb1BFIG9uIGhhbGYgZW1iZWRkaW5ncwogICAgICAgIHNlbGYucV9yb3BlID0gUm9QRShzZWxmLnJvcGVfaGVhZF9kaW0pCiAgICAgICAgc2VsZi5rX3JvcGUgPSBSb1BFKHNlbGYucm9wZV9oZWFkX2RpbSkKCiAgICAgICAgIyBPdXRwdXQgcHJvamVjdGlvbgogICAgICAgIHNlbGYud28gPSBubi5MaW5lYXIoc2VsZi52X2hlYWRfZGltICogc2VsZi5uX2hlYWRzLCBzZWxmLmRpbSwgZHR5cGU9dG9yY2guYmZsb2F0MTYsIGJpYXM9RmFsc2UpCiAgICAgICAgc2VsZi5lcHMgPSAxZS02CiAgIAoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvciwga3ZfY2FjaGU6IEtWQ2FjaGUpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICAjIHNlcV9sZW4gPSAxIGFsd2F5cyBoZXJlCiAgICAgICAgYmF0Y2hfc2l6ZSwgc2VxX2xlbiwgbW9kZWxfZGltID0geC5zaXplKCkKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjICAgICAgICAgICAgICAgICBTdGVwIDE6IEhhbmRsZSBkb3duLXByb2plY3Rpb24gKyBLViBjYWNoZSAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgcV9sb3JhID0gc2VsZi5RX3Byb2pfZG93bih4KQogICAgICAgIGt2X2xvcmEgPSBzZWxmLktWX3Byb2pfZG93bih4KQogICAgICAgIGt2X2xvcmEsIGt2X2xlbiA9IGt2X2NhY2hlKGt2X2xvcmEpCiAgICAgICAgcXVlcnlfcG9zID0ga3ZfbGVuIC0gMQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgICAgICAgICAgICAgICAgICBTdGVwIDI6IFVwLXByb2plY3QgYW5kIHByZXBhcmUgTm9QRSArIFJvUEUgICAgICAgICAgICAgICAgICAjCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBIYW5kbGUgcXVlcmllcyBRIGZpcnN0CiAgICAgICAgcV9ub3BlX2FuZF9yb3BlID0gc2VsZi5RX3Byb2pfdXAocV9sb3JhKS52aWV3KAogICAgICAgICAgICBiYXRjaF9zaXplLCBzZXFfbGVuLCBzZWxmLm5faGVhZHMsIHNlbGYubm9wZV9oZWFkX2RpbSArIHNlbGYucm9wZV9oZWFkX2RpbSkKICAgICAgICBxX25vcGUsIHFfcm9wZSA9IHRvcmNoLnNwbGl0KHFfbm9wZV9hbmRfcm9wZSwgW3NlbGYubm9wZV9oZWFkX2RpbSwgc2VsZi5yb3BlX2hlYWRfZGltXSwgZGltPS0xKQoKICAgICAgICAjIEhhbmRsZSBrZXlzIGFuZCB2YWx1ZXMgSy9WLiBWIGRvZXMgbm90IG5lZWQgUm9QRQogICAgICAgIGt2X25vcGUsIGtfcm9wZSA9IHRvcmNoLnNwbGl0KGt2X2xvcmEsIFtzZWxmLmt2X2xvcmFfcmFuaywgc2VsZi5yb3BlX2hlYWRfZGltXSwgZGltPS0xKQogICAgICAgIGt2X25vcGUgPSBzZWxmLktWX3Byb2pfdXAoa3Zfbm9wZSkudmlldygKICAgICAgICAgICAgYmF0Y2hfc2l6ZSwga3ZfbGVuLCBzZWxmLm5faGVhZHMsIHNlbGYubm9wZV9oZWFkX2RpbSArIHNlbGYudl9oZWFkX2RpbSkKICAgICAgICBrX25vcGUsIHYgPSB0b3JjaC5zcGxpdChrdl9ub3BlLCBbc2VsZi5ub3BlX2hlYWRfZGltLCBzZWxmLnZfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgU3RlcCAzOiBIYW5kbGUgUm9QRSBTdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAjIENvbXB1dGUgUm9QRSBmb3IgcXVlcmllcyBhbmQgY29tYmluZSB3aXRoIG5vLVJvUEUgcGFydAogICAgICAgIHFfcm9wZSA9IHFfcm9wZS5wZXJtdXRlKDAsIDIsIDEsIDMpICMgYnMgeCBuX2hlYWRzIHggc2VxX2xlbiB4IHJvcGVfaGVhZF9kaW0KICAgICAgICBxX3JvcGUgPSBzZWxmLnFfcm9wZShxX3JvcGUsIHN0YXJ0X3Bvcz1xdWVyeV9wb3MpCgogICAgICAgIHFfbm9wZSA9IHFfbm9wZS5wZXJtdXRlKDAsIDIsIDEsIDMpICMgYnMgeCBuX2hlYWRzIHggc2VxX2xlbiB4IHJvcGVfaGVhZF9kaW0KICAgICAgICBxID0gdG9yY2guY29uY2F0KFtxX25vcGUsIHFfcm9wZV0sIGRpbT0tMSkKCgogICAgICAgICMgQ29tcHV0ZSBSb1BFIGZvciBrZXlzIGFuZCBjb21iaW5lIHdpdGggbm8tUm9QRSBwYXJ0CiAgICAgICAga19yb3BlID0ga19yb3BlWzosIE5vbmUsIDosIDpdCiAgICAgICAga19yb3BlID0gc2VsZi5rX3JvcGUoa19yb3BlKS5leHBhbmQoLTEsc2VsZi5uX2hlYWRzLC0xLC0xKQogICAgICAgIGtfbm9wZSA9IGtfbm9wZS5wZXJtdXRlKDAsIDIsIDEsIDMpICMgYnMgeCBrdl9sZW4geCBuX2hlYWRzIHggcm9wZV9oZWFkX2RpbQogICAgICAgIGsgPSB0b3JjaC5jb25jYXQoW2tfbm9wZSwga19yb3BlXSwgZGltPS0xKQogICAgICAgICAgICAgICAgCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZSBNdWx0aS1oZWFkIEF0dGVudGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgdiA9IHYucGVybXV0ZSgwLCAyLCAxLCAzKSAjIGJzIHggbl9oZWFkcyB4IGt2X2xlbiB4IHZfaGVhZF9kaW0KICAgICAgICBzY29yZXMgPSB0b3JjaC5tYXRtdWwocSwgay50cmFuc3Bvc2UoLTEsIC0yKSkgLyBtYXRoLnNxcnQoc2VsZi5yb3BlX2hlYWRfZGltICsgc2VsZi5ub3BlX2hlYWRfZGltKQogICAgICAgIGF0dG4gPSBGLnNvZnRtYXgoc2NvcmVzLCBkaW09LTEpLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgICAgIHkgPSB0b3JjaC5tYXRtdWwoYXR0biwgdikudmlldyhiYXRjaF9zaXplLCAxLCAtMSkKICAgICAgICB5ID0gc2VsZi53byh5KQoKICAgICAgICByZXR1cm4geSwga3ZfY2FjaGUuZ2V0X2RhdGEoKQoKbW9kZWwgPSBOb25lCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90OgogICAgY29uZmlnLCB4LCBrdl9jYWNoZSA9IGRhdGEKICAgIGdsb2JhbCBtb2RlbAogICAgd2l0aCB0b3JjaC5ub19ncmFkKCk6CiAgICAgICAgaWYgbW9kZWwgPT0gTm9uZToKICAgICAgICAgICAgbW9kZWwgPSBNTEEoY29uZmlnKS50bygnY3VkYScpCiAgICAgICAgICAgIG1vZGVsLlFfcHJval9kb3duLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0KQogICAgICAgICAgICBtb2RlbC5RX3Byb2pfdXAud2VpZ2h0ID0gbm4uUGFyYW1ldGVyKGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0KQogICAgICAgICAgICBtb2RlbC5LVl9wcm9qX2Rvd24ud2VpZ2h0ID0gbm4uUGFyYW1ldGVyKGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0KQogICAgICAgICAgICBtb2RlbC5LVl9wcm9qX3VwLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcuS1ZfcHJval91cF93ZWlnaHQpCiAgICAgICAgICAgIG1vZGVsLndvLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcud29fd2VpZ2h0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1vZGVsLlFfcHJval9kb3duLndlaWdodC5zZXRfKGNvbmZpZy5RX3Byb2pfZG93bl93ZWlnaHQudW50eXBlZF9zdG9yYWdlKCksIDAsIGNvbmZpZy5RX3Byb2pfZG93bl93ZWlnaHQuc2l6ZSgpLCBjb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0LnN0cmlkZSgpKSAKICAgICAgICAgICAgbW9kZWwuUV9wcm9qX3VwLndlaWdodC5zZXRfKGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0LnVudHlwZWRfc3RvcmFnZSgpLCAwLCBjb25maWcuUV9wcm9qX3VwX3dlaWdodC5zaXplKCksIGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0LnN0cmlkZSgpKSAKICAgICAgICAgICAgbW9kZWwuS1ZfcHJval9kb3duLndlaWdodC5zZXRfKGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0LnVudHlwZWRfc3RvcmFnZSgpLCAwLCBjb25maWcuS1ZfcHJval9kb3duX3dlaWdodC5zaXplKCksIGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0LnN0cmlkZSgpKSAKICAgICAgICAgICAgbW9kZWwuS1ZfcHJval91cC53ZWlnaHQuc2V0Xyhjb25maWcuS1ZfcHJval91cF93ZWlnaHQudW50eXBlZF9zdG9yYWdlKCksIDAsIGNvbmZpZy5LVl9wcm9qX3VwX3dlaWdodC5zaXplKCksIGNvbmZpZy5LVl9wcm9qX3VwX3dlaWdodC5zdHJpZGUoKSkgCiAgICAgICAgICAgIG1vZGVsLndvLndlaWdodC5zZXRfKGNvbmZpZy53b193ZWlnaHQudW50eXBlZF9zdG9yYWdlKCksIDAsIGNvbmZpZy53b193ZWlnaHQuc2l6ZSgpLCBjb25maWcud29fd2VpZ2h0LnN0cmlkZSgpKSAKCgogICAgb3V0cHV0LCBrdl9jYWNoZSA9IG1vZGVsKHgsIGt2X2NhY2hlKQogICAgcmV0dXJuIG91dHB1dCwga3ZfY2FjaGU=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 26657.
- IyFQT1BDT1JOIGxlYWRlcmJvYXJkIGFtZC1tbGEtZGVjb2RlCgojIFRoaXMgaXMgYSBzdWJtaXNzaW9uIHRlbXBsYXRlIGZvciBwb3Bjb3JuIGxlYWRlcmJvYXJkICdhbWQtbWxhLWRlY29kZScuCiMgWW91ciB0YXNrIGlzIGFzIGZvbGxvd3M6CiMgPiBZb3Ugd2lsbCBpbXBsZW1lbnQgYSBjdXN0b20gbWxhIGRlY29kZSBrZXJuZWwgb3B0aW1pemVkIGZvciBNSTMwMCwgYSBmZXcgdGhpbmdzIHNpbXBsaWZpZWQgaGVyZToKIyA+IAojID4gMS4gUSwgSywgViBkYXRhIHR5cGUgYXMgYmZsb2F0MTYKIyA+ICAgCiMgPiAyLiBkZWNvZGUgb25seSB3aXRoIHByZS1hbGxvY2F0ZWQgbm9uLXBhZ2VkIGxhdGVudCBrdiBjYWNoZQojID4gCiMgPiAzLiByZXR1cm4gdGhlIHVwZGF0ZSBrdiBjYWNoZSB3aXRoIE1MQSBvdXRwdXQKIyA+IAojID4gVGhlIHNoYXBlcyBvZiBhbGwgb3V0ZXIgYW5kIGlubmVyIGRpbWVuc2lvbnMgb2YgdGVuc29ycyBhcmUgZnJvbSBEZWVwU2Vlay1SMSwgYW5kIHNwbGl0IG51bWJlciBvZiBoZWFkcyB0byBmaXQgaW4gb25lIEdQVS4gCiMgPiBUbyBiZSBleHBsaWNpdCwgeW91IHdpbGwgYmUgZ2l2ZW4gYSB0dXBsZSB0byB0ZW5zb3JzOgojID4gCiMgPiBgYGB5bWwKIyA+IGlucHV0IFticywgc3EsIGRpbV0KIyA+IGF0dG5fb3V0cHV0IFticywgbl9oZWFkcywgc3EsIHZfaGVhZF9kaW1dCiMgPiBrdl9jYWNoZSBbYnMsIHNxLCBrdl9sb3JhX3JhbmsgKyBxa19yb3BlX2hlYWRfZGltXQojID4gYGBgIAojID4gCiMgPiB3aGVyZSAKIyA+IAojID4gMC4gYnM6OjEyOCAjIGJhdGNoIHNpemUKIyA+IDEuIHByZWZpbGw6Ols1MTIsIDIwNDgsIDQwOTYsIDYxNDRdICMgYXMga3YgbGVuZ3RoCiMgPiAyLiBzcTo6MSAjIGFzIG9ubHkgY29uc2lkZXIgZGVjb2RpbmcKIyA+IDMuIGRpbTo6NzE2OCAjIGhpZGRlbiBzaXplIG9mIGRlZXBzZWVrIHYzCiMgPiA0LiBrdl9sb3JhX3Jhbms6Ols1MTJdICMga3YgbG9yYSByYW5rIG9mIGRlZXBzZWVrIHYzCiMgPiA1LiBxa19yb3BlX2hlYWRfZGltOjpbNjRdICMgcm9wZSBlbWJlZGRpbmcgZGltZW5zaW9uCiMgPiA2LiB2X2hlYWRfZGltOjoxMjggIyBoZWFkIHNpemUKIyA+IDcuIG5faGVhZHM6OjEyOCAjIG51bSBvZiBhdHRuIGhlYWRzCiMgPiAKIyA+IFRoZSByYW5raW5nIGNyaXRlcmlhIGlzIHRoZSBnZW9tZXRyaWMgbWVhbiBvZiB0aGUgYmVuY2htYXJrIHJlc3VsdHMuCiMgPiAKIyA+IEZvciB0aGUgZ3JhbmQgcHJpemUsIHlvdXIga2VybmVsIHdpbGwgYmUgZXZhbHVhdGVkIGFnYWluc3QgdGhlIHNwZWVkIG9mIGxpZ2h0IGFuYWx5c2lzCiMgPiBhbmQgdGhlIHNvbHV0aW9uIGNsb3Nlc3QgdG8gdGhlIHNwZWVkIG9mIGxpZ2h0IHdpbGwgYmUgYXdhcmRlZCB0aGUgZ3JhbmQgcHJpemUuCiMgPiAKIyA+IFRoZSBzcGVlZCBvZiBsaWdodCBhbmFseXNpcyBpczo6CiMgPiB8IGJzIHwgcHJlZmlsbCB8IHNxIHwgZHR5cGUgfCAgcm9vZmxpbmUgdGltZSh1cykgfAojID4gfC0tLXwtLS18LS0tfC0tLXwtLS18CiMgPiB8IDEyOCB8IDUxMiB8IDEgfCBiZjE2IHwgNTQuNjIgfAojID4gfCAxMjggfCAyMDQ4IHwgMSB8IGJmMTYgfCAxNDEuMTYgfAojID4gfCAxMjggfCA0MDk2IHwgMSB8IGJmMTYgfCAyMTAuNzUgfAojID4gfCAxMjggfCA2MTQ0IHwgMSB8IGJmMTYgfCAyODAuODcgfCAKIyBUaGUgZGVhZGxpbmUgZm9yIHRoaXMgbGVhZGVyYm9hcmQgaXMgMjAyNS0wNi0wMiAwMDowMDowMCswMDowMAoKIyBZb3UgY2FuIGF1dG9tYXRpY2FsbHkgcm91dGUgdGhpcyBmaWxlIHRvIHNwZWNpZmljIEdQVXMgYnkgYWRkaW5nIGEgbGluZQojIGAjIVBPUENPUk4gZ3B1cyA8R1BVcz5gIHRvIHRoZSBoZWFkZXIgb2YgdGhpcyBmaWxlLgojIEhhcHB5IGhhY2tpbmchCgppbXBvcnQgbWF0aApmcm9tIGRhdGFjbGFzc2VzIGltcG9ydCBkYXRhY2xhc3MKaW1wb3J0IHRvcmNoCmZyb20gdG9yY2ggaW1wb3J0IG5uCmltcG9ydCB0b3JjaC5ubi5mdW5jdGlvbmFsIGFzIEYKZnJvbSB0YXNrIGltcG9ydCBpbnB1dF90LCBvdXRwdXRfdAoKY2xhc3MgUm9QRShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGRfbW9kZWw6IGludCk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5kX21vZGVsID0gZF9tb2RlbAogICAgICAgIHRoZXRhID0gMTAwMDAgKiogKC10b3JjaC5hcmFuZ2UoMCwgZF9tb2RlbC8vMixkdHlwZT10b3JjaC5iZmxvYXQxNikgLyAoZF9tb2RlbC8vMikpCiAgICAgICAgc2VsZi5yZWdpc3Rlcl9idWZmZXIoInRoZXRhIiwgdGhldGEpCgogICAgZGVmIHJvdGF0ZV9oYWxmKHNlbGYsIHg6IHRvcmNoLlRlbnNvcikgLT4gdG9yY2guVGVuc29yOgogICAgICAgIHgxLCB4MiA9IHguY2h1bmsoMiwgZGltPS0xKQogICAgICAgIHJldHVybiB0b3JjaC5jYXQoKC14MiwgeDEpLCBkaW09LTEpCgogICAgZGVmIGZvcndhcmQoc2VsZiwgeDogdG9yY2guVGVuc29yLCBzdGFydF9wb3M6IGludCA9IDApIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICBzZXFfbGVuID0geC5zaXplKC0yKQogICAgICAgIGRfbW9kZWwgPSB4LnNpemUoLTEpCiAgICAgICAgYXNzZXJ0IGRfbW9kZWwgPT0gc2VsZi5kX21vZGVsCiAgICAgICAgc2VxX2lkeCA9IHRvcmNoLmFyYW5nZShzdGFydF9wb3MsIHN0YXJ0X3BvcyArIHNlcV9sZW4sIGRldmljZT14LmRldmljZSkKICAgICAgICBpZHhfdGhldGEgPSB0b3JjaC5laW5zdW0oJ3MsZC0+c2QnLCBzZXFfaWR4LCBzZWxmLnRoZXRhKQogICAgICAgIGlkeF90aGV0YTIgPSB0b3JjaC5jYXQoW2lkeF90aGV0YSwgaWR4X3RoZXRhXSwgZGltPS0xKQogICAgICAgIGNvcyA9IGlkeF90aGV0YTIuY29zKCkudG8odG9yY2guYmZsb2F0MTYpCiAgICAgICAgc2luID0gaWR4X3RoZXRhMi5zaW4oKS50byh0b3JjaC5iZmxvYXQxNikKICAgICAgICByZXR1cm4geCAqIGNvcyArIHNlbGYucm90YXRlX2hhbGYoeCkgKiBzaW4KCgpjbGFzcyBLVkNhY2hlKG5uLk1vZHVsZSk6CiAgICBkZWYgX19pbml0X18oc2VsZiwga3ZfY2FjaGVfc2hhcGU6IHR1cGxlKSAtPiBOb25lOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYucmVnaXN0ZXJfYnVmZmVyKCdkYXRhJywgdG9yY2guemVyb3Moa3ZfY2FjaGVfc2hhcGUsIGR0eXBlPXRvcmNoLmJmbG9hdDE2LCBkZXZpY2U9J2N1ZGEnKSkKICAgICAgICBzZWxmLnNlcV9sZW4gPSAwCiAgICAgICAgc2VsZi56ZXJvKCkKCiAgICBkZWYgemVybyhzZWxmKSAtPiBOb25lOgogICAgICAgIHNlbGYuZGF0YS56ZXJvXygpCiAgICAKICAgIGRlZiBnZXRfZGF0YShzZWxmKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIGNfa3Y6IHRvcmNoLlRlbnNvcikgLT4gdG9yY2guVGVuc29yOgogICAgICAgIGFzc2VydCBzZWxmLnNlcV9sZW4gKyBjX2t2LnNpemUoMSkgPD0gc2VsZi5kYXRhLnNpemUoMSksICJLViBDYWNoZSBFeGNlZWRlZCIKCiAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5kYXRhLnRvKGNfa3YuZHR5cGUpCiAgICAgICAgc2VsZi5kYXRhWwogICAgICAgICAgICA6LCBzZWxmLnNlcV9sZW4gOiBzZWxmLnNlcV9sZW4gKyBjX2t2LnNpemUoMSksIDoKICAgICAgICBdID0gY19rdgogICAgICAgIHNlbGYuc2VxX2xlbiArPSBjX2t2LnNpemUoMSkKCiAgICAgICAgcmV0dXJuIHNlbGYuZGF0YVs6LCA6c2VsZi5zZXFfbGVuXSwgc2VsZi5zZXFfbGVuCiAgICAKQGRhdGFjbGFzcwpjbGFzcyBDb25maWc6CiAgICBiYXRjaF9zaXplOiBpbnQKICAgIGRpbTogaW50CiAgICBuX2hlYWRzOiBpbnQKICAgIHFfbG9yYV9yYW5rOiBpbnQgCiAgICBrdl9sb3JhX3Jhbms6IGludAogICAgcWtfbm9wZV9oZWFkX2RpbTogaW50CiAgICBxa19yb3BlX2hlYWRfZGltOiBpbnQKICAgIHZfaGVhZF9kaW06IGludAogICAgc2VxX2xlbjogaW50CiAgICBtYXhfc2VxX2xlbjogaW50CiAgICBrdl9jYWNoZV9zaGFwZTogdHVwbGUKICAgIFFfcHJval9kb3duX3dlaWdodDogdG9yY2guVGVuc29yCiAgICBRX3Byb2pfdXBfd2VpZ2h0OiB0b3JjaC5UZW5zb3IKICAgIEtWX3Byb2pfZG93bl93ZWlnaHQ6IHRvcmNoLlRlbnNvcgogICAgS1ZfcHJval91cF93ZWlnaHQ6IHRvcmNoLlRlbnNvcgogICAgd29fd2VpZ2h0OiB0b3JjaC5UZW5zb3IKCmNsYXNzIE1MQShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZzogQ29uZmlnKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICBzZWxmLmRpbSA9IGNvbmZpZy5kaW0KICAgICAgICBzZWxmLm5faGVhZHMgPSBjb25maWcubl9oZWFkcwogICAgICAgIHNlbGYucV9sb3JhX3JhbmsgPSBjb25maWcucV9sb3JhX3JhbmsKICAgICAgICBzZWxmLmt2X2xvcmFfcmFuayA9IGNvbmZpZy5rdl9sb3JhX3JhbmsKICAgICAgICBzZWxmLm5vcGVfaGVhZF9kaW0gPSBjb25maWcucWtfbm9wZV9oZWFkX2RpbQogICAgICAgIHNlbGYucm9wZV9oZWFkX2RpbSA9IGNvbmZpZy5xa19yb3BlX2hlYWRfZGltCiAgICAgICAgc2VsZi52X2hlYWRfZGltID0gY29uZmlnLnZfaGVhZF9kaW0KICAgICAgICAjIERvd24tcHJvamVjdGlvbiBtYXRyaWNlcwogICAgICAgIHNlbGYuUV9wcm9qX2Rvd24gPSBubi5MaW5lYXIoc2VsZi5kaW0sIHNlbGYucV9sb3JhX3JhbmssIGJpYXM9RmFsc2UsIGR0eXBlPXRvcmNoLmJmbG9hdDE2KQogICAgICAgIHNlbGYuS1ZfcHJval9kb3duID0gbm4uTGluZWFyKHNlbGYuZGltLCBzZWxmLmt2X2xvcmFfcmFuayArIHNlbGYucm9wZV9oZWFkX2RpbSwgYmlhcz1GYWxzZSwgZHR5cGU9dG9yY2guYmZsb2F0MTYpCgogICAgICAgICMgVXAtcHJvamVjdGlvbiBhbmQgcm9wZSBwcm9qZWN0aW9uIG1hdHJpY2VzCiAgICAgICAgc2VsZi5RX3Byb2pfdXAgPSBubi5MaW5lYXIoc2VsZi5xX2xvcmFfcmFuaywgKHNlbGYubm9wZV9oZWFkX2RpbSArIHNlbGYucm9wZV9oZWFkX2RpbSkgKiBzZWxmLm5faGVhZHMsIGJpYXM9RmFsc2UsIGR0eXBlPXRvcmNoLmJmbG9hdDE2KQogICAgICAgIHNlbGYuS1ZfcHJval91cCA9IG5uLkxpbmVhcihzZWxmLmt2X2xvcmFfcmFuaywgKHNlbGYubm9wZV9oZWFkX2RpbSArIHNlbGYudl9oZWFkX2RpbSkgKiBzZWxmLm5faGVhZHMsIGJpYXM9RmFsc2UsIGR0eXBlPXRvcmNoLmJmbG9hdDE2KQoKICAgICAgICAjIFJvUEUgb24gaGFsZiBlbWJlZGRpbmdzCiAgICAgICAgc2VsZi5xX3JvcGUgPSBSb1BFKHNlbGYucm9wZV9oZWFkX2RpbSkKICAgICAgICBzZWxmLmtfcm9wZSA9IFJvUEUoc2VsZi5yb3BlX2hlYWRfZGltKQoKICAgICAgICAjIE91dHB1dCBwcm9qZWN0aW9uCiAgICAgICAgc2VsZi53byA9IG5uLkxpbmVhcihzZWxmLnZfaGVhZF9kaW0gKiBzZWxmLm5faGVhZHMsIHNlbGYuZGltLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgYmlhcz1GYWxzZSkKICAgICAgICBzZWxmLmVwcyA9IDFlLTYKICAgCiAgICBkZWYgZm9yd2FyZChzZWxmLCB4OiB0b3JjaC5UZW5zb3IsIGt2X2NhY2hlOiBLVkNhY2hlKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgIyBzZXFfbGVuID0gMSBhbHdheXMgaGVyZQogICAgICAgIGJhdGNoX3NpemUsIHNlcV9sZW4sIG1vZGVsX2RpbSA9IHguc2l6ZSgpCgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyAgICAgICAgICAgICAgICAgU3RlcCAxOiBIYW5kbGUgZG93bi1wcm9qZWN0aW9uICsgS1YgY2FjaGUgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgIHFfbG9yYSA9IHNlbGYuUV9wcm9qX2Rvd24oeCkKICAgICAgICBrdl9sb3JhID0gc2VsZi5LVl9wcm9qX2Rvd24oeCkKICAgICAgICBrdl9sb3JhLCBrdl9sZW4gPSBrdl9jYWNoZShrdl9sb3JhKQogICAgICAgIHF1ZXJ5X3BvcyA9IGt2X2xlbiAtIDEKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjICAgICAgICAgICAgICAgICAgU3RlcCAyOiBVcC1wcm9qZWN0IGFuZCBwcmVwYXJlIE5vUEUgKyBSb1BFICAgICAgICAgICAgICAgICAgIwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgSGFuZGxlIHF1ZXJpZXMgUSBmaXJzdAogICAgICAgIHFfbm9wZV9hbmRfcm9wZSA9IHNlbGYuUV9wcm9qX3VwKHFfbG9yYSkudmlldygKICAgICAgICAgICAgYmF0Y2hfc2l6ZSwgc2VxX2xlbiwgc2VsZi5uX2hlYWRzLCBzZWxmLm5vcGVfaGVhZF9kaW0gKyBzZWxmLnJvcGVfaGVhZF9kaW0pCiAgICAgICAgcV9ub3BlLCBxX3JvcGUgPSB0b3JjaC5zcGxpdChxX25vcGVfYW5kX3JvcGUsIFtzZWxmLm5vcGVfaGVhZF9kaW0sIHNlbGYucm9wZV9oZWFkX2RpbV0sIGRpbT0tMSkKCiAgICAgICAgIyBIYW5kbGUga2V5cyBhbmQgdmFsdWVzIEsvVi4gViBkb2VzIG5vdCBuZWVkIFJvUEUKICAgICAgICBrdl9ub3BlLCBrX3JvcGUgPSB0b3JjaC5zcGxpdChrdl9sb3JhLCBbc2VsZi5rdl9sb3JhX3JhbmssIHNlbGYucm9wZV9oZWFkX2RpbV0sIGRpbT0tMSkKICAgICAgICBrdl9ub3BlID0gc2VsZi5LVl9wcm9qX3VwKGt2X25vcGUpLnZpZXcoCiAgICAgICAgICAgIGJhdGNoX3NpemUsIGt2X2xlbiwgc2VsZi5uX2hlYWRzLCBzZWxmLm5vcGVfaGVhZF9kaW0gKyBzZWxmLnZfaGVhZF9kaW0pCiAgICAgICAga19ub3BlLCB2ID0gdG9yY2guc3BsaXQoa3Zfbm9wZSwgW3NlbGYubm9wZV9oZWFkX2RpbSwgc2VsZi52X2hlYWRfZGltXSwgZGltPS0xKQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgICAgICAgICAgICAgICAgICAgIFN0ZXAgMzogSGFuZGxlIFJvUEUgU3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBDb21wdXRlIFJvUEUgZm9yIHF1ZXJpZXMgYW5kIGNvbWJpbmUgd2l0aCBuby1Sb1BFIHBhcnQKICAgICAgICBxX3JvcGUgPSBxX3JvcGUucGVybXV0ZSgwLCAyLCAxLCAzKSAjIGJzIHggbl9oZWFkcyB4IHNlcV9sZW4geCByb3BlX2hlYWRfZGltCiAgICAgICAgcV9yb3BlID0gc2VsZi5xX3JvcGUocV9yb3BlLCBzdGFydF9wb3M9cXVlcnlfcG9zKQoKICAgICAgICBxX25vcGUgPSBxX25vcGUucGVybXV0ZSgwLCAyLCAxLCAzKSAjIGJzIHggbl9oZWFkcyB4IHNlcV9sZW4geCByb3BlX2hlYWRfZGltCiAgICAgICAgcSA9IHRvcmNoLmNvbmNhdChbcV9ub3BlLCBxX3JvcGVdLCBkaW09LTEpCgoKICAgICAgICAjIENvbXB1dGUgUm9QRSBmb3Iga2V5cyBhbmQgY29tYmluZSB3aXRoIG5vLVJvUEUgcGFydAogICAgICAgIGtfcm9wZSA9IGtfcm9wZVs6LCBOb25lLCA6LCA6XQogICAgICAgIGtfcm9wZSA9IHNlbGYua19yb3BlKGtfcm9wZSkuZXhwYW5kKC0xLHNlbGYubl9oZWFkcywtMSwtMSkKICAgICAgICBrX25vcGUgPSBrX25vcGUucGVybXV0ZSgwLCAyLCAxLCAzKSAjIGJzIHgga3ZfbGVuIHggbl9oZWFkcyB4IHJvcGVfaGVhZF9kaW0KICAgICAgICBrID0gdG9yY2guY29uY2F0KFtrX25vcGUsIGtfcm9wZV0sIGRpbT0tMSkKICAgICAgICAgICAgICAgIAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIENvbXB1dGUgTXVsdGktaGVhZCBBdHRlbnRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgIHYgPSB2LnBlcm11dGUoMCwgMiwgMSwgMykgIyBicyB4IG5faGVhZHMgeCBrdl9sZW4geCB2X2hlYWRfZGltCiAgICAgICAgc2NvcmVzID0gdG9yY2gubWF0bXVsKHEsIGsudHJhbnNwb3NlKC0xLCAtMikpIC8gbWF0aC5zcXJ0KHNlbGYucm9wZV9oZWFkX2RpbSArIHNlbGYubm9wZV9oZWFkX2RpbSkKICAgICAgICBhdHRuID0gRi5zb2Z0bWF4KHNjb3JlcywgZGltPS0xKS50byh0b3JjaC5iZmxvYXQxNikKICAgICAgICB5ID0gdG9yY2gubWF0bXVsKGF0dG4sIHYpLnZpZXcoYmF0Y2hfc2l6ZSwgMSwgLTEpCiAgICAgICAgeSA9IHNlbGYud28oeSkKCiAgICAgICAgcmV0dXJuIHksIGt2X2NhY2hlLmdldF9kYXRhKCkKCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90OgogICAgY29uZmlnLCB4LCBrdl9jYWNoZSA9IGRhdGEKICAgIG1vZGVsID0gTUxBKGNvbmZpZykudG8oJ2N1ZGEnKQogICAgbW9kZWwuUV9wcm9qX2Rvd24ud2VpZ2h0ID0gbm4uUGFyYW1ldGVyKGNvbmZpZy5RX3Byb2pfZG93bl93ZWlnaHQpCiAgICBtb2RlbC5RX3Byb2pfdXAud2VpZ2h0ID0gbm4uUGFyYW1ldGVyKGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0KQogICAgbW9kZWwuS1ZfcHJval9kb3duLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcuS1ZfcHJval9kb3duX3dlaWdodCkKICAgIG1vZGVsLktWX3Byb2pfdXAud2VpZ2h0ID0gbm4uUGFyYW1ldGVyKGNvbmZpZy5LVl9wcm9qX3VwX3dlaWdodCkKICAgIG1vZGVsLndvLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcud29fd2VpZ2h0KQoKICAgIG91dHB1dCwga3ZfY2FjaGUgPSBtb2RlbCh4LCBrdl9jYWNoZSkKICAgIHJldHVybiBvdXRwdXQsIGt2X2NhY2hlCg==No newline at end of file+ aW1wb3J0IG1hdGgKZnJvbSBkYXRhY2xhc3NlcyBpbXBvcnQgZGF0YWNsYXNzCmltcG9ydCB0b3JjaApmcm9tIHRvcmNoIGltcG9ydCBubgppbXBvcnQgdG9yY2gubm4uZnVuY3Rpb25hbCBhcyBGCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QKCmNsYXNzIFJvUEUobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkX21vZGVsOiBpbnQpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgIHNlbGYuZF9tb2RlbCA9IGRfbW9kZWwKICAgICAgICB0aGV0YSA9IDEwMDAwICoqICgtdG9yY2guYXJhbmdlKDAsIGRfbW9kZWwvLzIsZHR5cGU9dG9yY2guYmZsb2F0MTYpIC8gKGRfbW9kZWwvLzIpKQogICAgICAgIHNlbGYucmVnaXN0ZXJfYnVmZmVyKCJ0aGV0YSIsIHRoZXRhKQoKICAgIGRlZiByb3RhdGVfaGFsZihzZWxmLCB4OiB0b3JjaC5UZW5zb3IpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICB4MSwgeDIgPSB4LmNodW5rKDIsIGRpbT0tMSkKICAgICAgICByZXR1cm4gdG9yY2guY2F0KCgteDIsIHgxKSwgZGltPS0xKQoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvciwgc3RhcnRfcG9zOiBpbnQgPSAwKSAtPiB0b3JjaC5UZW5zb3I6CiAgICAgICAgc2VxX2xlbiA9IHguc2l6ZSgtMikKICAgICAgICBkX21vZGVsID0geC5zaXplKC0xKQogICAgICAgIGFzc2VydCBkX21vZGVsID09IHNlbGYuZF9tb2RlbAogICAgICAgIHNlcV9pZHggPSB0b3JjaC5hcmFuZ2Uoc3RhcnRfcG9zLCBzdGFydF9wb3MgKyBzZXFfbGVuLCBkZXZpY2U9eC5kZXZpY2UpCiAgICAgICAgaWR4X3RoZXRhID0gdG9yY2guZWluc3VtKCdzLGQtPnNkJywgc2VxX2lkeCwgc2VsZi50aGV0YSkKICAgICAgICBpZHhfdGhldGEyID0gdG9yY2guY2F0KFtpZHhfdGhldGEsIGlkeF90aGV0YV0sIGRpbT0tMSkKICAgICAgICBjb3MgPSBpZHhfdGhldGEyLmNvcygpLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgICAgIHNpbiA9IGlkeF90aGV0YTIuc2luKCkudG8odG9yY2guYmZsb2F0MTYpCiAgICAgICAgcmV0dXJuIHggKiBjb3MgKyBzZWxmLnJvdGF0ZV9oYWxmKHgpICogc2luCgoKY2xhc3MgS1ZDYWNoZShubi5Nb2R1bGUpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGt2X2NhY2hlX3NoYXBlOiB0dXBsZSkgLT4gTm9uZToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICBzZWxmLnJlZ2lzdGVyX2J1ZmZlcignZGF0YScsIHRvcmNoLnplcm9zKGt2X2NhY2hlX3NoYXBlLCBkdHlwZT10b3JjaC5iZmxvYXQxNiwgZGV2aWNlPSdjdWRhJykpCiAgICAgICAgc2VsZi5zZXFfbGVuID0gMAogICAgICAgIHNlbGYuemVybygpCgogICAgZGVmIHplcm8oc2VsZikgLT4gTm9uZToKICAgICAgICBzZWxmLmRhdGEuemVyb18oKQogICAgCiAgICBkZWYgZ2V0X2RhdGEoc2VsZikgLT4gdG9yY2guVGVuc29yOgogICAgICAgIHJldHVybiBzZWxmLmRhdGEKCiAgICBkZWYgZm9yd2FyZChzZWxmLCBjX2t2OiB0b3JjaC5UZW5zb3IpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICBhc3NlcnQgc2VsZi5zZXFfbGVuICsgY19rdi5zaXplKDEpIDw9IHNlbGYuZGF0YS5zaXplKDEpLCAiS1YgQ2FjaGUgRXhjZWVkZWQiCgogICAgICAgIHNlbGYuZGF0YSA9IHNlbGYuZGF0YS50byhjX2t2LmR0eXBlKQogICAgICAgIHNlbGYuZGF0YVsKICAgICAgICAgICAgOiwgc2VsZi5zZXFfbGVuIDogc2VsZi5zZXFfbGVuICsgY19rdi5zaXplKDEpLCA6CiAgICAgICAgXSA9IGNfa3YKICAgICAgICBzZWxmLnNlcV9sZW4gKz0gY19rdi5zaXplKDEpCgogICAgICAgIHJldHVybiBzZWxmLmRhdGFbOiwgOnNlbGYuc2VxX2xlbl0sIHNlbGYuc2VxX2xlbgogICAgCkBkYXRhY2xhc3MKY2xhc3MgQ29uZmlnOgogICAgYmF0Y2hfc2l6ZTogaW50CiAgICBkaW06IGludAogICAgbl9oZWFkczogaW50CiAgICBxX2xvcmFfcmFuazogaW50IAogICAga3ZfbG9yYV9yYW5rOiBpbnQKICAgIHFrX25vcGVfaGVhZF9kaW06IGludAogICAgcWtfcm9wZV9oZWFkX2RpbTogaW50CiAgICB2X2hlYWRfZGltOiBpbnQKICAgIHNlcV9sZW46IGludAogICAgbWF4X3NlcV9sZW46IGludAogICAga3ZfY2FjaGVfc2hhcGU6IHR1cGxlCiAgICBRX3Byb2pfZG93bl93ZWlnaHQ6IHRvcmNoLlRlbnNvcgogICAgUV9wcm9qX3VwX3dlaWdodDogdG9yY2guVGVuc29yCiAgICBLVl9wcm9qX2Rvd25fd2VpZ2h0OiB0b3JjaC5UZW5zb3IKICAgIEtWX3Byb2pfdXBfd2VpZ2h0OiB0b3JjaC5UZW5zb3IKICAgIHdvX3dlaWdodDogdG9yY2guVGVuc29yCgpjbGFzcyBNTEEobm4uTW9kdWxlKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWc6IENvbmZpZyk6CiAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgc2VsZi5kaW0gPSBjb25maWcuZGltCiAgICAgICAgc2VsZi5uX2hlYWRzID0gY29uZmlnLm5faGVhZHMKICAgICAgICBzZWxmLnFfbG9yYV9yYW5rID0gY29uZmlnLnFfbG9yYV9yYW5rCiAgICAgICAgc2VsZi5rdl9sb3JhX3JhbmsgPSBjb25maWcua3ZfbG9yYV9yYW5rCiAgICAgICAgc2VsZi5ub3BlX2hlYWRfZGltID0gY29uZmlnLnFrX25vcGVfaGVhZF9kaW0KICAgICAgICBzZWxmLnJvcGVfaGVhZF9kaW0gPSBjb25maWcucWtfcm9wZV9oZWFkX2RpbQogICAgICAgIHNlbGYudl9oZWFkX2RpbSA9IGNvbmZpZy52X2hlYWRfZGltCiAgICAgICAgIyBEb3duLXByb2plY3Rpb24gbWF0cmljZXMKICAgICAgICBzZWxmLlFfcHJval9kb3duID0gbm4uTGluZWFyKHNlbGYuZGltLCBzZWxmLnFfbG9yYV9yYW5rLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKICAgICAgICBzZWxmLktWX3Byb2pfZG93biA9IG5uLkxpbmVhcihzZWxmLmRpbSwgc2VsZi5rdl9sb3JhX3JhbmsgKyBzZWxmLnJvcGVfaGVhZF9kaW0sIGJpYXM9RmFsc2UsIGR0eXBlPXRvcmNoLmJmbG9hdDE2KQoKICAgICAgICAjIFVwLXByb2plY3Rpb24gYW5kIHJvcGUgcHJvamVjdGlvbiBtYXRyaWNlcwogICAgICAgIHNlbGYuUV9wcm9qX3VwID0gbm4uTGluZWFyKHNlbGYucV9sb3JhX3JhbmssIChzZWxmLm5vcGVfaGVhZF9kaW0gKyBzZWxmLnJvcGVfaGVhZF9kaW0pICogc2VsZi5uX2hlYWRzLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKICAgICAgICBzZWxmLktWX3Byb2pfdXAgPSBubi5MaW5lYXIoc2VsZi5rdl9sb3JhX3JhbmssIChzZWxmLm5vcGVfaGVhZF9kaW0gKyBzZWxmLnZfaGVhZF9kaW0pICogc2VsZi5uX2hlYWRzLCBiaWFzPUZhbHNlLCBkdHlwZT10b3JjaC5iZmxvYXQxNikKCiAgICAgICAgIyBSb1BFIG9uIGhhbGYgZW1iZWRkaW5ncwogICAgICAgIHNlbGYucV9yb3BlID0gUm9QRShzZWxmLnJvcGVfaGVhZF9kaW0pCiAgICAgICAgc2VsZi5rX3JvcGUgPSBSb1BFKHNlbGYucm9wZV9oZWFkX2RpbSkKCiAgICAgICAgIyBPdXRwdXQgcHJvamVjdGlvbgogICAgICAgIHNlbGYud28gPSBubi5MaW5lYXIoc2VsZi52X2hlYWRfZGltICogc2VsZi5uX2hlYWRzLCBzZWxmLmRpbSwgZHR5cGU9dG9yY2guYmZsb2F0MTYsIGJpYXM9RmFsc2UpCiAgICAgICAgc2VsZi5lcHMgPSAxZS02CiAgIAoKICAgIGRlZiBmb3J3YXJkKHNlbGYsIHg6IHRvcmNoLlRlbnNvciwga3ZfY2FjaGU6IEtWQ2FjaGUpIC0+IHRvcmNoLlRlbnNvcjoKICAgICAgICAjIHNlcV9sZW4gPSAxIGFsd2F5cyBoZXJlCiAgICAgICAgYmF0Y2hfc2l6ZSwgc2VxX2xlbiwgbW9kZWxfZGltID0geC5zaXplKCkKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjICAgICAgICAgICAgICAgICBTdGVwIDE6IEhhbmRsZSBkb3duLXByb2plY3Rpb24gKyBLViBjYWNoZSAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgcV9sb3JhID0gc2VsZi5RX3Byb2pfZG93bih4KQogICAgICAgIGt2X2xvcmEgPSBzZWxmLktWX3Byb2pfZG93bih4KQogICAgICAgIGt2X2xvcmEsIGt2X2xlbiA9IGt2X2NhY2hlKGt2X2xvcmEpCiAgICAgICAgcXVlcnlfcG9zID0ga3ZfbGVuIC0gMQoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgICAgICAgICAgICAgICAgICBTdGVwIDI6IFVwLXByb2plY3QgYW5kIHByZXBhcmUgTm9QRSArIFJvUEUgICAgICAgICAgICAgICAgICAjCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBIYW5kbGUgcXVlcmllcyBRIGZpcnN0CiAgICAgICAgcV9ub3BlX2FuZF9yb3BlID0gc2VsZi5RX3Byb2pfdXAocV9sb3JhKS52aWV3KAogICAgICAgICAgICBiYXRjaF9zaXplLCBzZXFfbGVuLCBzZWxmLm5faGVhZHMsIHNlbGYubm9wZV9oZWFkX2RpbSArIHNlbGYucm9wZV9oZWFkX2RpbSkKICAgICAgICBxX25vcGUsIHFfcm9wZSA9IHRvcmNoLnNwbGl0KHFfbm9wZV9hbmRfcm9wZSwgW3NlbGYubm9wZV9oZWFkX2RpbSwgc2VsZi5yb3BlX2hlYWRfZGltXSwgZGltPS0xKQoKICAgICAgICAjIEhhbmRsZSBrZXlzIGFuZCB2YWx1ZXMgSy9WLiBWIGRvZXMgbm90IG5lZWQgUm9QRQogICAgICAgIGt2X25vcGUsIGtfcm9wZSA9IHRvcmNoLnNwbGl0KGt2X2xvcmEsIFtzZWxmLmt2X2xvcmFfcmFuaywgc2VsZi5yb3BlX2hlYWRfZGltXSwgZGltPS0xKQogICAgICAgIGt2X25vcGUgPSBzZWxmLktWX3Byb2pfdXAoa3Zfbm9wZSkudmlldygKICAgICAgICAgICAgYmF0Y2hfc2l6ZSwga3ZfbGVuLCBzZWxmLm5faGVhZHMsIHNlbGYubm9wZV9oZWFkX2RpbSArIHNlbGYudl9oZWFkX2RpbSkKICAgICAgICBrX25vcGUsIHYgPSB0b3JjaC5zcGxpdChrdl9ub3BlLCBbc2VsZi5ub3BlX2hlYWRfZGltLCBzZWxmLnZfaGVhZF9kaW1dLCBkaW09LTEpCgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgU3RlcCAzOiBIYW5kbGUgUm9QRSBTdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAjIENvbXB1dGUgUm9QRSBmb3IgcXVlcmllcyBhbmQgY29tYmluZSB3aXRoIG5vLVJvUEUgcGFydAogICAgICAgIHFfcm9wZSA9IHFfcm9wZS5wZXJtdXRlKDAsIDIsIDEsIDMpICMgYnMgeCBuX2hlYWRzIHggc2VxX2xlbiB4IHJvcGVfaGVhZF9kaW0KICAgICAgICBxX3JvcGUgPSBzZWxmLnFfcm9wZShxX3JvcGUsIHN0YXJ0X3Bvcz1xdWVyeV9wb3MpCgogICAgICAgIHFfbm9wZSA9IHFfbm9wZS5wZXJtdXRlKDAsIDIsIDEsIDMpICMgYnMgeCBuX2hlYWRzIHggc2VxX2xlbiB4IHJvcGVfaGVhZF9kaW0KICAgICAgICBxID0gdG9yY2guY29uY2F0KFtxX25vcGUsIHFfcm9wZV0sIGRpbT0tMSkKCgogICAgICAgICMgQ29tcHV0ZSBSb1BFIGZvciBrZXlzIGFuZCBjb21iaW5lIHdpdGggbm8tUm9QRSBwYXJ0CiAgICAgICAga19yb3BlID0ga19yb3BlWzosIE5vbmUsIDosIDpdCiAgICAgICAga19yb3BlID0gc2VsZi5rX3JvcGUoa19yb3BlKS5leHBhbmQoLTEsc2VsZi5uX2hlYWRzLC0xLC0xKQogICAgICAgIGtfbm9wZSA9IGtfbm9wZS5wZXJtdXRlKDAsIDIsIDEsIDMpICMgYnMgeCBrdl9sZW4geCBuX2hlYWRzIHggcm9wZV9oZWFkX2RpbQogICAgICAgIGsgPSB0b3JjaC5jb25jYXQoW2tfbm9wZSwga19yb3BlXSwgZGltPS0xKQogICAgICAgICAgICAgICAgCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHV0ZSBNdWx0aS1oZWFkIEF0dGVudGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgdiA9IHYucGVybXV0ZSgwLCAyLCAxLCAzKSAjIGJzIHggbl9oZWFkcyB4IGt2X2xlbiB4IHZfaGVhZF9kaW0KICAgICAgICBzY29yZXMgPSB0b3JjaC5tYXRtdWwocSwgay50cmFuc3Bvc2UoLTEsIC0yKSkgLyBtYXRoLnNxcnQoc2VsZi5yb3BlX2hlYWRfZGltICsgc2VsZi5ub3BlX2hlYWRfZGltKQogICAgICAgIGF0dG4gPSBGLnNvZnRtYXgoc2NvcmVzLCBkaW09LTEpLnRvKHRvcmNoLmJmbG9hdDE2KQogICAgICAgIHkgPSB0b3JjaC5tYXRtdWwoYXR0biwgdikudmlldyhiYXRjaF9zaXplLCAxLCAtMSkKICAgICAgICB5ID0gc2VsZi53byh5KQoKICAgICAgICByZXR1cm4geSwga3ZfY2FjaGUuZ2V0X2RhdGEoKQoKbW9kZWwgPSBOb25lCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90OgogICAgY29uZmlnLCB4LCBrdl9jYWNoZSA9IGRhdGEKICAgIGdsb2JhbCBtb2RlbAogICAgd2l0aCB0b3JjaC5ub19ncmFkKCk6CiAgICAgICAgaWYgbW9kZWwgPT0gTm9uZToKICAgICAgICAgICAgbW9kZWwgPSBNTEEoY29uZmlnKS50bygnY3VkYScpCiAgICAgICAgICAgIG1vZGVsLlFfcHJval9kb3duLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0KQogICAgICAgICAgICBtb2RlbC5RX3Byb2pfdXAud2VpZ2h0ID0gbm4uUGFyYW1ldGVyKGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0KQogICAgICAgICAgICBtb2RlbC5LVl9wcm9qX2Rvd24ud2VpZ2h0ID0gbm4uUGFyYW1ldGVyKGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0KQogICAgICAgICAgICBtb2RlbC5LVl9wcm9qX3VwLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcuS1ZfcHJval91cF93ZWlnaHQpCiAgICAgICAgICAgIG1vZGVsLndvLndlaWdodCA9IG5uLlBhcmFtZXRlcihjb25maWcud29fd2VpZ2h0KQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG1vZGVsLlFfcHJval9kb3duLndlaWdodC5zZXRfKGNvbmZpZy5RX3Byb2pfZG93bl93ZWlnaHQudW50eXBlZF9zdG9yYWdlKCksIDAsIGNvbmZpZy5RX3Byb2pfZG93bl93ZWlnaHQuc2l6ZSgpLCBjb25maWcuUV9wcm9qX2Rvd25fd2VpZ2h0LnN0cmlkZSgpKSAKICAgICAgICAgICAgbW9kZWwuUV9wcm9qX3VwLndlaWdodC5zZXRfKGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0LnVudHlwZWRfc3RvcmFnZSgpLCAwLCBjb25maWcuUV9wcm9qX3VwX3dlaWdodC5zaXplKCksIGNvbmZpZy5RX3Byb2pfdXBfd2VpZ2h0LnN0cmlkZSgpKSAKICAgICAgICAgICAgbW9kZWwuS1ZfcHJval9kb3duLndlaWdodC5zZXRfKGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0LnVudHlwZWRfc3RvcmFnZSgpLCAwLCBjb25maWcuS1ZfcHJval9kb3duX3dlaWdodC5zaXplKCksIGNvbmZpZy5LVl9wcm9qX2Rvd25fd2VpZ2h0LnN0cmlkZSgpKSAKICAgICAgICAgICAgbW9kZWwuS1ZfcHJval91cC53ZWlnaHQuc2V0Xyhjb25maWcuS1ZfcHJval91cF93ZWlnaHQudW50eXBlZF9zdG9yYWdlKCksIDAsIGNvbmZpZy5LVl9wcm9qX3VwX3dlaWdodC5zaXplKCksIGNvbmZpZy5LVl9wcm9qX3VwX3dlaWdodC5zdHJpZGUoKSkgCiAgICAgICAgICAgIG1vZGVsLndvLndlaWdodC5zZXRfKGNvbmZpZy53b193ZWlnaHQudW50eXBlZF9zdG9yYWdlKCksIDAsIGNvbmZpZy53b193ZWlnaHQuc2l6ZSgpLCBjb25maWcud29fd2VpZ2h0LnN0cmlkZSgpKSAKCgogICAgb3V0cHV0LCBrdl9jYWNoZSA9IG1vZGVsKHgsIGt2X2NhY2hlKQogICAgcmV0dXJuIG91dHB1dCwga3ZfY2FjaGU=No newline at end of file
Best evidence level for this revision: reported
JSON