submission 21570
KernelBot user 212 · 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.
hip.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-fp8-mm-21570?include=source"interfacepython
Compatibility
measured onAMD Instinct MI300X
declared hardwareAMD Instinct MI300X
architecturesgfx942
dtypesfp32, fp8_e4m3fnuz
Benchmark evidence
18 measurements across 1 GPU, fastest first.
Operation / workload
Hardware
Latency
Rank
Observed
AMD FP8 blockwise GEMMfp32/fp8_e4m3fnuz · [1024, 7168] · n=512 · seed=6563
AMD Instinct MI300X
204.2µs
#76 of 98
2025-05-13
AMD FP8 blockwise GEMMfp32/fp8_e4m3fnuz · [1024, 7168] · n=576 · seed=12346
AMD Instinct MI300X
207.9µs
#71 of 98
2025-05-13
Show all 18 measurements ›Showing all 18 measurements ⌄
AMD FP8 blockwise GEMMfp32/fp8_e4m3fnuz · [1024, 7168] · n=1536 · seed=8135
AMD Instinct MI300X
208.6µs
#66 of 98
2025-05-13
AMD FP8 blockwise GEMMfp32/fp8_e4m3fnuz · [6144, 7168] · n=512 · seed=12341
AMD Instinct MI300X
213.6µs
#49 of 98
2025-05-13
AMD FP8 blockwise GEMMfp32/fp8_e4m3fnuz · [6144, 7168] · n=576 · seed=9863
AMD Instinct MI300X
223.1µs
#45 of 98
2025-05-13
AMD FP8 blockwise GEMMfp32/fp8_e4m3fnuz · [1024, 7168] · n=4608 · seed=7531
AMD Instinct MI300X
239.5µs
#46 of 98
2025-05-13
AMD FP8 blockwise GEMMfp32/fp8_e4m3fnuz · [6144, 7168] · n=1536 · seed=6543
AMD Instinct MI300X
387.3µs
#45 of 98
2025-05-13
AMD FP8 blockwise GEMMfp32/fp8_e4m3fnuz · [6144, 7168] · n=4608 · seed=65436
AMD Instinct MI300X
1.09ms
#44 of 98
2025-05-13
Reported · How evidence levels are derived →
Source and license
sourceavailable
revision digestsha256:5abb263cb13fcf85734090a0ef3ab4543a1a9220831108916a8040c2611655df
license declaredunknown
license concludedunknown
imported2026-08-15
Kernel source
hip.py1 lines
IyFQT1BDT1JOIGxlYWRlcmJvYXJkIGFtZC1mcDgtbW0KIyFQT1BDT1JOIGdwdXMgTUkzMDAKCmltcG9ydCBvcwoKIyBpZiAiUFlUT1JDSF9ST0NNX0FSQ0giIG5vdCBpbiBvcy5lbnZpcm9uOgpvcy5lbnZpcm9uWyJQWVRPUkNIX1JPQ01fQVJDSCJdID0gImdmeDk0Mjp4bmFjay0iCgpoZWFkZXIgPSAiIiIKI2luY2x1ZGUgPHB5YmluZDExL3B5YmluZDExLmg+CiIiIgoKZm9vdGVyID0gIiIiClBZQklORDExX01PRFVMRShmcDgsIG0pIHsKICBtLmRlZigiZnA4IiwgJnJ1biwgIkhJUCBrZXJuZWwiKTsKfQoiIiIKCmJvZHkgPSAiIiIKI2luY2x1ZGUgPGlvc3RyZWFtPgoKI2lmZGVmIF9fTlZDQ19fCgojaW5jbHVkZSA8Y3VkYV9mcDE2Lmg+CiNpbmNsdWRlIDxjdWRhX2ZwOC5oPgojaW5jbHVkZSA8bW1hLmg+CgovLyB1c2luZyBmcDggPSBfX252X2ZwOF9lNW0yOwp1c2luZyBmcDggPSBfX252X2JmbG9hdDE2Owp1c2luZyBiZjE2ID0gX19udl9iZmxvYXQxNjsKdXNpbmcgZnAzMiA9IGZsb2F0OwoKbmFtZXNwYWNlIHdtbWEgPSBudmN1ZGE6OndtbWE7CmNvbnN0IHVpbnQzMl90IFdBVkVfU0laRSA9IDMyOwoKY29uc3QgaW50IFdNTUFfTSA9IDE2Owpjb25zdCBpbnQgV01NQV9OID0gMTY7CmNvbnN0IGludCBXTU1BX0sgPSAxNjsKCiNkZWZpbmUgZnA4X3plcm8gX19mbG9hdDJiZmxvYXQxNigwLjApCgojZWxzZQoKI2luY2x1ZGUgPGhpcC9oaXBfcnVudGltZS5oPgojaW5jbHVkZSA8aGlwL2hpcF9mcDE2Lmg+CiNpbmNsdWRlIDxoaXAvaGlwX2ZwOC5oPgoKI2luY2x1ZGUgPHJvY3dtbWEvcm9jd21tYS5ocHA+CiNpbmNsdWRlIDxyb2N3bW1hL3JvY3dtbWFfY29vcC5ocHA+CiNpbmNsdWRlIDxyb2N3bW1hL3JvY3dtbWFfdHJhbnNmb3Jtcy5ocHA+Cgp1c2luZyBmcDggPSByb2N3bW1hOjpmbG9hdDhfZm51el90Owp1c2luZyBiZjE2ID0gcm9jd21tYTo6YmZsb2F0MTZfdDsKdXNpbmcgZnAzMiA9IHJvY3dtbWE6OmZsb2F0MzJfdDsKCm5hbWVzcGFjZSB3bW1hID0gcm9jd21tYTsKY29uc3QgdWludDMyX3QgV0FWRV9TSVpFID0gNjQ7Cgpjb25zdCBpbnQgV01NQV9NID0gMzI7CmNvbnN0IGludCBXTU1BX04gPSAzMjsKY29uc3QgaW50IFdNTUFfSyA9IDE2OwoKI2RlZmluZSBmcDhfemVybyBmcDgoMCkKCiNlbmRpZgoKdXNpbmcgd21tYTo6YWNjdW11bGF0b3I7CnVzaW5nIHdtbWE6Om1hdHJpeF9hOwp1c2luZyB3bW1hOjptYXRyaXhfYjsKdXNpbmcgd21tYTo6cm93X21ham9yOwp1c2luZyB3bW1hOjpjb2xfbWFqb3I7CgojZGVmaW5lIEhJUF9DSEVDSyhjb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgZG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgICAgIGhpcEVycm9yX3QgZXJyb3IgPSBjb25kaXRpb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgICAgIGlmKGVycm9yICE9IGhpcFN1Y2Nlc3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkVycm9yICIgPDwgaGlwR2V0RXJyb3JOYW1lKGVycm9yKSA8PCAnKCcgPDwgZXJyb3IgPDwgJyknIDw8ICI6ICIgICAgQAogICAgICAgICAgICAgICAgICAgICAgPDwgaGlwR2V0RXJyb3JTdHJpbmcoZXJyb3IpIDw8ICIgaW4gIiA8PCBfX2Z1bmNfXyA8PCAiIGF0ICIgPDwgX19GSUxFX18gQAogICAgICAgICAgICAgICAgICAgICAgPDwgJzonIDw8IF9fTElORV9fIDw8ICdAbic7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgICAgICAgICBleGl0KGVycm9yKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQAogICAgd2hpbGUoZmFsc2UpCgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KX19ob3N0X18gX19kZXZpY2VfXyBfX2ZvcmNlaW5saW5lX18KY29uc3RleHByIGF1dG8gY2VpbF9kaXYoVCBhLCBVIGIpIHsKICAgIHJldHVybiAoYSArIGIgLSAxKSAvIGI7Cn0KCiNkZWZpbmUgQkxPQ0tfUk9XX1dBUlBTIDQKI2RlZmluZSBCTE9DS19DT0xfV0FSUFMgMgoKI2RlZmluZSBXQVJQX1JPV19USUxFUyAxCiNkZWZpbmUgV0FSUF9DT0xfVElMRVMgMgoKI2RlZmluZSBCTE9DS19IRUlHSFQgKFdNTUFfTSAqIEJMT0NLX1JPV19XQVJQUyAqIFdBUlBfUk9XX1RJTEVTKQojZGVmaW5lIEJMT0NLX1dJRFRIIChXTU1BX04gKiBCTE9DS19DT0xfV0FSUFMgKiBXQVJQX0NPTF9USUxFUykKCmNvbnN0IGludCBCTE9DS19TSVpFID0gMTI4Owpjb25zdCBpbnQgVElMRV9IRUlHSFQgPSBXTU1BX00gKiBCTE9DS19ST1dfV0FSUFM7CmNvbnN0IGludCBUSUxFX1dJRFRIID0gV01NQV9OICogQkxPQ0tfQ09MX1dBUlBTOwoKY29uc3QgaW50IFdBUlBfUEVSX0JMT0NLID0gQkxPQ0tfUk9XX1dBUlBTICogQkxPQ0tfQ09MX1dBUlBTOwpjb25zdCBpbnQgVEhSRUFEU19QRVJfQkxPQ0sgPSBXQVZFX1NJWkUgKiBCTE9DS19ST1dfV0FSUFMgKiBCTE9DS19DT0xfV0FSUFM7Cgpjb25zdCBpbnQgRUxFTV9QRVJfRlJBRyA9IFdNTUFfTSAqIFdNTUFfTiAvIFdBVkVfU0laRTsKCmNvbnN0IGludCBJTlQ0X1JBVElPID0gKHNpemVvZihpbnQ0KSAvIHNpemVvZihmcDgpKTsKCmNvbnN0IGludCBLX0lURVIgPSA0OwoKdGVtcGxhdGU8Ym9vbCBub19jaGVjaz4KX19nbG9iYWxfXyB2b2lkIGZwOF9rZXJuZWwoCiAgICBjb25zdCBmcDgqIGEsCiAgICBjb25zdCBmcDgqIGIsCiAgICBjb25zdCBmcDMyKiBhcywKICAgIGNvbnN0IGZwMzIqIGJzLAogICAgYmYxNiogYywKICAgIGNvbnN0IGludCBtLAogICAgY29uc3QgaW50IG4sCiAgICBjb25zdCBpbnQgawopIHsKICAgIF9fYnVpbHRpbl9hc3N1bWUodGhyZWFkSWR4LnggPCA1MTIpOwogICAgaWYgKG5vX2NoZWNrKSB7CiAgICAgICAgX19idWlsdGluX2Fzc3VtZShtICUgMTI4ID09IDApOwogICAgICAgIF9fYnVpbHRpbl9hc3N1bWUobiAlIDEyOCA9PSAwKTsKICAgICAgICBfX2J1aWx0aW5fYXNzdW1lKGsgJSAxMjggPT0gMCk7CiAgICB9CgogICAgY29uc3QgaW50IHRocmVhZF9pZCA9IHRocmVhZElkeC54ICUgV0FWRV9TSVpFOwogICAgY29uc3QgaW50IHdhcnBfaWQgPSB0aHJlYWRJZHgueCAvIFdBVkVfU0laRTsKICAgIGNvbnN0IGludCB0aWxlX3JvdyA9IHdhcnBfaWQgLyBCTE9DS19DT0xfV0FSUFM7CiAgICBjb25zdCBpbnQgdGlsZV9jb2wgPSB3YXJwX2lkICUgQkxPQ0tfQ09MX1dBUlBTOwoKICAgIGNvbnN0IGludCBibG9ja19zdGFydF9yb3cgPSBibG9ja0lkeC54ICogQkxPQ0tfSEVJR0hUOwogICAgY29uc3QgaW50IGJsb2NrX3N0YXJ0X2NvbCA9IGJsb2NrSWR4LnkgKiBCTE9DS19XSURUSDsKCiAgICB3bW1hOjpmcmFnbWVudDx3bW1hOjptYXRyaXhfYSwgQkxPQ0tfSEVJR0hULCBXTU1BX04sIFdNTUFfSyAqIEtfSVRFUiwgZnA4LCBjb2xfbWFqb3I+IGdyQTsKICAgIHdtbWE6OmZyYWdtZW50PHdtbWE6Om1hdHJpeF9iLCBXTU1BX00sIEJMT0NLX1dJRFRILCBXTU1BX0sgKiBLX0lURVIsIGZwOCwgcm93X21ham9yPiBnckI7CgogICAgX19zaGFyZWRfXyBmcDMyIGFfc2NhbGVfc2hhcmVkW0JMT0NLX0hFSUdIVF07CgogICAgd21tYTo6ZnJhZ21lbnQ8d21tYTo6YWNjdW11bGF0b3IsIFdNTUFfTSwgV01NQV9OLCBXTU1BX0ssIGZwMzI+IGNfZnJhZ1tXQVJQX1JPV19USUxFU11bV0FSUF9DT0xfVElMRVNdOwogICAgd21tYTo6ZnJhZ21lbnQ8d21tYTo6YWNjdW11bGF0b3IsIFdNTUFfTSwgV01NQV9OLCBXTU1BX0ssIGZwMzI+IGtfYWNjdW1bV0FSUF9ST1dfVElMRVNdW1dBUlBfQ09MX1RJTEVTXTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IFdBUlBfUk9XX1RJTEVTOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFdBUlBfQ09MX1RJTEVTOyBqKyspIHsKICAgICAgICAgICAgd21tYTo6ZmlsbF9mcmFnbWVudChjX2ZyYWdbaV1bal0sIDAuMGYpOwogICAgICAgIH0KICAgIH0KCiAgICBhICs9IGJsb2NrX3N0YXJ0X3JvdzsKICAgIGIgKz0gYmxvY2tfc3RhcnRfY29sOwoKICAgIGFzICs9IGJsb2NrX3N0YXJ0X3JvdzsKICAgIGJzICs9IGJsb2NrX3N0YXJ0X2NvbCAvIEJMT0NLX1NJWkU7CgogICAgLyoKICAgIF9fc2hhcmVkX18gZnA4IGFfc2hhcmVkMFtCTE9DS19IRUlHSFQgKiBXTU1BX0tdOwogICAgX19zaGFyZWRfXyBmcDggYV9zaGFyZWQxW0JMT0NLX0hFSUdIVCAqIFdNTUFfS107CiAgICBfX3NoYXJlZF9fIGZwOCBiX3NoYXJlZDBbQkxPQ0tfV0lEVEggKiBXTU1BX0tdOwogICAgX19zaGFyZWRfXyBmcDggYl9zaGFyZWQxW0JMT0NLX1dJRFRIICogV01NQV9LXTsKCiAgICBmcDggKmFfZnJvbnQgPSAmYV9zaGFyZWQwWzBdOwogICAgZnA4ICphX2JhY2sgID0gJmFfc2hhcmVkMVswXTsKICAgIGZwOCAqYl9mcm9udCA9ICZiX3NoYXJlZDBbMF07CiAgICBmcDggKmJfYmFjayAgPSAmYl9zaGFyZWQxWzBdOwogICAgCiAgICBsb2FkX21hdHJpeF9jb29wX3N5bmM8V0FSUF9QRVJfQkxPQ0s+KGdyQSwgYSwgbSwgd2FycF9pZCk7CiAgICBsb2FkX21hdHJpeF9jb29wX3N5bmM8V0FSUF9QRVJfQkxPQ0s+KGdyQiwgYiwgbiwgd2FycF9pZCk7CiAgICBzdG9yZV9tYXRyaXhfY29vcF9zeW5jPFdBUlBfUEVSX0JMT0NLPihhX2Zyb250LCBnckEsIEJMT0NLX0hFSUdIVCwgd2FycF9pZCk7CiAgICBzdG9yZV9tYXRyaXhfY29vcF9zeW5jPFdBUlBfUEVSX0JMT0NLPihiX2Zyb250LCBnckIsIEJMT0NLX1dJRFRILCB3YXJwX2lkKTsKICAgIGEgKz0gbSAqIFdNTUFfSzsKICAgIGIgKz0gbiAqIFdNTUFfSzsKICAgICovCiAgICBfX3NoYXJlZF9fIGZwOCBhX3NoYXJlZFtCTE9DS19IRUlHSFQgKiBXTU1BX0sgKiBLX0lURVJdOwogICAgX19zaGFyZWRfXyBmcDggYl9zaGFyZWRbQkxPQ0tfV0lEVEggKiBXTU1BX0sgKiBLX0lURVJdOwoKICAgIGxvYWRfbWF0cml4X2Nvb3Bfc3luYzxXQVJQX1BFUl9CTE9DSz4oZ3JBLCBhLCBtLCB3YXJwX2lkKTsKICAgIGxvYWRfbWF0cml4X2Nvb3Bfc3luYzxXQVJQX1BFUl9CTE9DSz4oZ3JCLCBiLCBuLCB3YXJwX2lkKTsKICAgIHN0b3JlX21hdHJpeF9jb29wX3N5bmM8V0FSUF9QRVJfQkxPQ0s+KGFfc2hhcmVkLCBnckEsIEJMT0NLX0hFSUdIVCwgd2FycF9pZCk7CiAgICBzdG9yZV9tYXRyaXhfY29vcF9zeW5jPFdBUlBfUEVSX0JMT0NLPihiX3NoYXJlZCwgZ3JCLCBCTE9DS19XSURUSCwgd2FycF9pZCk7CiAgICBhICs9IG0gKiBXTU1BX0sgKiBLX0lURVI7CiAgICBiICs9IG4gKiBXTU1BX0sgKiBLX0lURVI7CiAgICBfX3N5bmN0aHJlYWRzKCk7CgogICAgZm9yIChpbnQgX19rID0gMDsgX19rIDwgazsgX19rICs9IEJMT0NLX1NJWkUpIHsKICAgICAgICBmcDMyIGJfc2NhbGUgPSBic1swXTsKICAgICAgICBmb3IgKGludCBpID0gdGhyZWFkSWR4Lng7IGkgPCBCTE9DS19IRUlHSFQ7IGkrPVRIUkVBRFNfUEVSX0JMT0NLKSB7CiAgICAgICAgICAgIGFfc2NhbGVfc2hhcmVkW2ldID0gYXNbaV07CiAgICAgICAgfQogICAgICAgIGFzICs9IG07CiAgICAgICAgYnMgKz0gY2VpbF9kaXYobiwgQkxPQ0tfU0laRSk7CgogICAgICAgICNwcmFnbWEgdW5yb2xsCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXQVJQX1JPV19USUxFUzsgaSsrKSB7CiAgICAgICAgICAgICNwcmFnbWEgdW5yb2xsCiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgV0FSUF9DT0xfVElMRVM7IGorKykgewogICAgICAgICAgICAgICAgd21tYTo6ZmlsbF9mcmFnbWVudChrX2FjY3VtW2ldW2pdLCAwLjBmKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yIChpbnQgX2sgPSBfX2s7IF9rIDwgX19rICsgQkxPQ0tfU0laRTsgX2sgKz0gV01NQV9LICogS19JVEVSKSB7CiAgICAgICAgICAgIGlmIChfayAhPSBfX2spIHsKICAgICAgICAgICAgICAgIGxvYWRfbWF0cml4X2Nvb3Bfc3luYzxXQVJQX1BFUl9CTE9DSz4oZ3JBLCBhLCBtLCB3YXJwX2lkKTsKICAgICAgICAgICAgICAgIGxvYWRfbWF0cml4X2Nvb3Bfc3luYzxXQVJQX1BFUl9CTE9DSz4oZ3JCLCBiLCBuLCB3YXJwX2lkKTsKICAgICAgICAgICAgICAgIHN0b3JlX21hdHJpeF9jb29wX3N5bmM8V0FSUF9QRVJfQkxPQ0s+KGFfc2hhcmVkLCBnckEsIEJMT0NLX0hFSUdIVCwgd2FycF9pZCk7CiAgICAgICAgICAgICAgICBzdG9yZV9tYXRyaXhfY29vcF9zeW5jPFdBUlBfUEVSX0JMT0NLPihiX3NoYXJlZCwgZ3JCLCBCTE9DS19XSURUSCwgd2FycF9pZCk7CiAgICAgICAgICAgICAgICBhICs9IG0gKiBXTU1BX0sgKiBLX0lURVI7CiAgICAgICAgICAgICAgICBiICs9IG4gKiBXTU1BX0sgKiBLX0lURVI7CiAgICAgICAgICAgICAgICBfX3N5bmN0aHJlYWRzKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZwOCogX2FzID0gYV9zaGFyZWQgKyB0aWxlX3JvdyAqIFdNTUFfTTsKICAgICAgICAgICAgZnA4KiBfYnMgPSBiX3NoYXJlZCArIHRpbGVfY29sICogV01NQV9OOwoKICAgICAgICAgICAgI3ByYWdtYSB1bnJvbGwKICAgICAgICAgICAgZm9yIChpbnQga2kgPSAwOyBraSA8IEtfSVRFUjsga2krKykgewogICAgICAgICAgICAgICAgZnA4KiBhcyA9IF9hczsKICAgICAgICAgICAgICAgIGZwOCogYnNfdG1wID0gX2JzOwoKICAgICAgICAgICAgICAgIF9hcyArPSBCTE9DS19IRUlHSFQgKiBXTU1BX0s7CiAgICAgICAgICAgICAgICBfYnMgKz0gQkxPQ0tfV0lEVEggKiBXTU1BX0s7CiAgICAgICAgICAgICAgICAjcHJhZ21hIHVucm9sbAogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXQVJQX1JPV19USUxFUzsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgd21tYTo6ZnJhZ21lbnQ8d21tYTo6bWF0cml4X2EsIFdNTUFfTSwgV01NQV9OLCBXTU1BX0ssIGZwOCwgY29sX21ham9yPiBhX2ZyYWc7CiAgICAgICAgICAgICAgICAgICAgd21tYTo6bG9hZF9tYXRyaXhfc3luYyhhX2ZyYWcsIGFzLCBCTE9DS19IRUlHSFQpOwogICAgICAgICAgICAgICAgICAgIGFzICs9IFRJTEVfSEVJR0hUOwogICAgICAgICAgICAgICAgICAgIGZwOCogYnMgPSBic190bXA7CiAgICAgICAgICAgICAgICAgICAgI3ByYWdtYSB1bnJvbGwKICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFdBUlBfQ09MX1RJTEVTOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgd21tYTo6ZnJhZ21lbnQ8d21tYTo6bWF0cml4X2IsIFdNTUFfTSwgV01NQV9OLCBXTU1BX0ssIGZwOCwgcm93X21ham9yPiBiX2ZyYWc7CiAgICAgICAgICAgICAgICAgICAgICAgIHdtbWE6OmxvYWRfbWF0cml4X3N5bmMoYl9mcmFnLCBicywgQkxPQ0tfV0lEVEgpOwogICAgICAgICAgICAgICAgICAgICAgICB3bW1hOjptbWFfc3luYyhrX2FjY3VtW2ldW2pdLCBhX2ZyYWcsIGJfZnJhZywga19hY2N1bVtpXVtqXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJzICs9IFRJTEVfV0lEVEg7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvKgogICAgICAgICAgICBmcDgqIHRtcCA9IGFfZnJvbnQ7CiAgICAgICAgICAgIGFfZnJvbnQgPSBhX2JhY2s7CiAgICAgICAgICAgIGFfYmFjayA9IHRtcDsKCiAgICAgICAgICAgIHRtcCA9IGJfZnJvbnQ7CiAgICAgICAgICAgIGJfZnJvbnQgPSBiX2JhY2s7CiAgICAgICAgICAgIGJfYmFjayA9IHRtcDsKICAgICAgICAgICAgKi8KCiAgICAgICAgICAgIF9fc3luY3RocmVhZHMoKTsKICAgICAgICB9CgogICAgICAgIGlmIChfX2sgKyBCTE9DS19TSVpFIDwgaykgewogICAgICAgICAgICBsb2FkX21hdHJpeF9jb29wX3N5bmM8V0FSUF9QRVJfQkxPQ0s+KGdyQSwgYSwgbSwgd2FycF9pZCk7CiAgICAgICAgICAgIGxvYWRfbWF0cml4X2Nvb3Bfc3luYzxXQVJQX1BFUl9CTE9DSz4oZ3JCLCBiLCBuLCB3YXJwX2lkKTsKICAgICAgICAgICAgc3RvcmVfbWF0cml4X2Nvb3Bfc3luYzxXQVJQX1BFUl9CTE9DSz4oYV9zaGFyZWQsIGdyQSwgQkxPQ0tfSEVJR0hULCB3YXJwX2lkKTsKICAgICAgICAgICAgc3RvcmVfbWF0cml4X2Nvb3Bfc3luYzxXQVJQX1BFUl9CTE9DSz4oYl9zaGFyZWQsIGdyQiwgQkxPQ0tfV0lEVEgsIHdhcnBfaWQpOwogICAgICAgICAgICBhICs9IG0gKiBXTU1BX0sgKiBLX0lURVI7CiAgICAgICAgICAgIGIgKz0gbiAqIFdNTUFfSyAqIEtfSVRFUjsKICAgICAgICB9CgogICAgICAgIC8qCiAgICAgICAgI3ByYWdtYSB1bnJvbGwKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFdBUlBfUk9XX1RJTEVTOyBpKyspIHsKICAgICAgICAgICAgZmxvYXQ0IGFzMCA9ICooKGZsb2F0NCAqKSgmYV9zY2FsZV9zaGFyZWRbdGlsZV9yb3cgKiBXTU1BX00gKyBpICogVElMRV9IRUlHSFQgKyA0ICogKHRocmVhZF9pZCAvIDE2KV0pKTsKCiAgICAgICAgICAgIGFzMC54ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMC55ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMC56ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMC53ICo9IGJfc2NhbGU7CgogICAgICAgICAgICAjcHJhZ21hIHVucm9sbAogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFdBUlBfQ09MX1RJTEVTOyBqKyspIHsKICAgICAgICAgICAgICAgIGNfZnJhZ1tpXVtqXS54WzBdICs9IGtfYWNjdW1baV1bal0ueFswXSAqIGFzMC54OwogICAgICAgICAgICAgICAgY19mcmFnW2ldW2pdLnhbMV0gKz0ga19hY2N1bVtpXVtqXS54WzFdICogYXMwLnk7CiAgICAgICAgICAgICAgICBjX2ZyYWdbaV1bal0ueFsyXSArPSBrX2FjY3VtW2ldW2pdLnhbMl0gKiBhczAuejsKICAgICAgICAgICAgICAgIGNfZnJhZ1tpXVtqXS54WzNdICs9IGtfYWNjdW1baV1bal0ueFszXSAqIGFzMC53OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICovCgogICAgICAgICNwcmFnbWEgdW5yb2xsCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXQVJQX1JPV19USUxFUzsgaSsrKSB7CiAgICAgICAgICAgIGZsb2F0NCBhczAgPSAqKChmbG9hdDQgKikoJmFfc2NhbGVfc2hhcmVkW3RpbGVfcm93ICogV01NQV9NICsgaSAqIFRJTEVfSEVJR0hUICsgNCAqICh0aHJlYWRfaWQgLyAzMildKSk7CiAgICAgICAgICAgIGZsb2F0NCBhczEgPSAqKChmbG9hdDQgKikoJmFfc2NhbGVfc2hhcmVkW3RpbGVfcm93ICogV01NQV9NICsgaSAqIFRJTEVfSEVJR0hUICsgNCAqICh0aHJlYWRfaWQgLyAzMikgKyA4XSkpOwogICAgICAgICAgICBmbG9hdDQgYXMyID0gKigoZmxvYXQ0ICopKCZhX3NjYWxlX3NoYXJlZFt0aWxlX3JvdyAqIFdNTUFfTSArIGkgKiBUSUxFX0hFSUdIVCArIDQgKiAodGhyZWFkX2lkIC8gMzIpICsgMTZdKSk7CiAgICAgICAgICAgIGZsb2F0NCBhczMgPSAqKChmbG9hdDQgKikoJmFfc2NhbGVfc2hhcmVkW3RpbGVfcm93ICogV01NQV9NICsgaSAqIFRJTEVfSEVJR0hUICsgNCAqICh0aHJlYWRfaWQgLyAzMikgKyAyNF0pKTsKCiAgICAgICAgICAgIGFzMC54ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMC55ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMC56ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMC53ICo9IGJfc2NhbGU7CgogICAgICAgICAgICBhczEueCAqPSBiX3NjYWxlOwogICAgICAgICAgICBhczEueSAqPSBiX3NjYWxlOwogICAgICAgICAgICBhczEueiAqPSBiX3NjYWxlOwogICAgICAgICAgICBhczEudyAqPSBiX3NjYWxlOwoKICAgICAgICAgICAgYXMyLnggKj0gYl9zY2FsZTsKICAgICAgICAgICAgYXMyLnkgKj0gYl9zY2FsZTsKICAgICAgICAgICAgYXMyLnogKj0gYl9zY2FsZTsKICAgICAgICAgICAgYXMyLncgKj0gYl9zY2FsZTsKCiAgICAgICAgICAgIGFzMy54ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMy55ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMy56ICo9IGJfc2NhbGU7CiAgICAgICAgICAgIGFzMy53ICo9IGJfc2NhbGU7CgogICAgICAgICAgICAjcHJhZ21hIHVucm9sbAogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFdBUlBfQ09MX1RJTEVTOyBqKyspIHsKICAgICAgICAgICAgICAgIGNfZnJhZ1tpXVtqXS54WzBdICs9IGtfYWNjdW1baV1bal0ueFswXSAqIGFzMC54OwogICAgICAgICAgICAgICAgY19mcmFnW2ldW2pdLnhbMV0gKz0ga19hY2N1bVtpXVtqXS54WzFdICogYXMwLnk7CiAgICAgICAgICAgICAgICBjX2ZyYWdbaV1bal0ueFsyXSArPSBrX2FjY3VtW2ldW2pdLnhbMl0gKiBhczAuejsKICAgICAgICAgICAgICAgIGNfZnJhZ1tpXVtqXS54WzNdICs9IGtfYWNjdW1baV1bal0ueFszXSAqIGFzMC53OwoKICAgICAgICAgICAgICAgIGNfZnJhZ1tpXVtqXS54WzRdICs9IGtfYWNjdW1baV1bal0ueFs0XSAqIGFzMS54OwogICAgICAgICAgICAgICAgY19mcmFnW2ldW2pdLnhbNV0gKz0ga19hY2N1bVtpXVtqXS54WzVdICogYXMxLnk7CiAgICAgICAgICAgICAgICBjX2ZyYWdbaV1bal0ueFs2XSArPSBrX2FjY3VtW2ldW2pdLnhbNl0gKiBhczEuejsKICAgICAgICAgICAgICAgIGNfZnJhZ1tpXVtqXS54WzddICs9IGtfYWNjdW1baV1bal0ueFs3XSAqIGFzMS53OwoKICAgICAgICAgICAgICAgIGNfZnJhZ1tpXVtqXS54WzhdICs9IGtfYWNjdW1baV1bal0ueFs4XSAqIGFzMi54OwogICAgICAgICAgICAgICAgY19mcmFnW2ldW2pdLnhbOV0gKz0ga19hY2N1bVtpXVtqXS54WzldICogYXMyLnk7CiAgICAgICAgICAgICAgICBjX2ZyYWdbaV1bal0ueFsxMF0gKz0ga19hY2N1bVtpXVtqXS54WzEwXSAqIGFzMi56OwogICAgICAgICAgICAgICAgY19mcmFnW2ldW2pdLnhbMTFdICs9IGtfYWNjdW1baV1bal0ueFsxMV0gKiBhczIudzsKCiAgICAgICAgICAgICAgICBjX2ZyYWdbaV1bal0ueFsxMl0gKz0ga19hY2N1bVtpXVtqXS54WzEyXSAqIGFzMy54OwogICAgICAgICAgICAgICAgY19mcmFnW2ldW2pdLnhbMTNdICs9IGtfYWNjdW1baV1bal0ueFsxM10gKiBhczMueTsKICAgICAgICAgICAgICAgIGNfZnJhZ1tpXVtqXS54WzE0XSArPSBrX2FjY3VtW2ldW2pdLnhbMTRdICogYXMzLno7CiAgICAgICAgICAgICAgICBjX2ZyYWdbaV1bal0ueFsxNV0gKz0ga19hY2N1bVtpXVtqXS54WzE1XSAqIGFzMy53OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIF9fc3luY3RocmVhZHMoKTsKICAgIH0KCiAgICBpZiAobm9fY2hlY2spIHsKICAgICAgICBiZjE2ICpfYyA9IGMgKyBuICogKGJsb2NrX3N0YXJ0X3JvdyArIHRpbGVfcm93ICogV01NQV9NKSArIGJsb2NrX3N0YXJ0X2NvbCArIHRpbGVfY29sICogV01NQV9OOwoKICAgICAgICAjcHJhZ21hIHVucm9sbAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgV0FSUF9ST1dfVElMRVM7IGkrKykgewogICAgICAgICAgICBjID0gX2M7CiAgICAgICAgICAgIF9jICs9IG4gKiBUSUxFX0hFSUdIVDsKICAgICAgICAgICAgI3ByYWdtYSB1bnJvbGwKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBXQVJQX0NPTF9USUxFUzsgaisrKSB7CiAgICAgICAgICAgICAgICB3bW1hOjpmcmFnbWVudDx3bW1hOjphY2N1bXVsYXRvciwgV01NQV9NLCBXTU1BX04sIFdNTUFfSywgYmYxNj4gY190bXA7CiAgICAgICAgICAgICAgICAjcHJhZ21hIHVucm9sbAogICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBjX3RtcC5udW1fZWxlbWVudHM7IGsrKykgewogICAgICAgICAgICAgICAgICAgIGNfdG1wLnhba10gPSBfX2Zsb2F0MmJmbG9hdDE2KGNfZnJhZ1tpXVtqXS54W2tdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdtbWE6OnN0b3JlX21hdHJpeF9zeW5jKGMsIGNfdG1wLCBuLCB3bW1hOjptZW1fcm93X21ham9yKTsKICAgICAgICAgICAgICAgIGMgKz0gVElMRV9XSURUSDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgI3ByYWdtYSB1bnJvbGwKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFdBUlBfQ09MX1RJTEVTOyBqKyspIHsKICAgICAgICAgICAgaW50IGNvbCA9IHRocmVhZF9pZCAlIDMyOwogICAgICAgICAgICBpbnQgY19jb2wgPSBibG9ja19zdGFydF9jb2wgKyB0aWxlX2NvbCAqIFdNTUFfTiArIGogKiBUSUxFX1dJRFRIICsgY29sOwogICAgICAgICAgICAjcHJhZ21hIHVucm9sbAogICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXQVJQX1JPV19USUxFUzsgaSsrKSB7CiAgICAgICAgICAgICAgICAjcHJhZ21hIHVucm9sbAogICAgICAgICAgICAgICAgZm9yIChpbnQgdCA9IDA7IHQgPCBXTU1BX00gKiBXTU1BX04gLyBXQVZFX1NJWkU7IHQrKykgewogICAgICAgICAgICAgICAgICAgIGZwMzIgY192YWwgPSBjX2ZyYWdbaV1bal0ueFt0XTsKCiNpZmRlZiBfX05WQ0NfXwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfaWQgPSB0aHJlYWRfaWQgPj4gMjsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJvdzsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0IC8gMikgJSAyID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9IGdyb3VwX2lkOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gZ3JvdXBfaWQgKyA4OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCA8IDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbCA9ICh0aHJlYWRfaWQgJSA0KSAqIDIgKyAodCAmIDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sID0gKHRocmVhZF9pZCAlIDQpICogMiArICh0ICYgMSkgKyA4OwogICAgICAgICAgICAgICAgICAgICAgICB9CiNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludCBtbWFfaWR4ID0gNjQgKiAodGhyZWFkX2lkIC8gMTYpICsgdCAqIDE2ICsgKHRocmVhZF9pZCAlIDE2KTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50IG1tYV9pZHggPSAyNTYgKiAodCAvIDQpICsgMTI4ICogKHRocmVhZF9pZCAvIDMyKSArIDMyICogKHQgJSA0KSArICh0aHJlYWRfaWQgJSAzMik7IAoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50IHJvdyA9IG1tYV9pZHggLyBXTU1BX047CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludCBjb2wgPSBtbWFfaWR4ICUgV01NQV9OOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm93ID0gOCAqICh0IC8gNCkgKyA0ICogKHRocmVhZF9pZCAvIDMyKSArICh0ICUgNCk7CiNlbmRpZgoKICAgICAgICAgICAgICAgICAgICBpbnQgY19yb3cgPSBibG9ja19zdGFydF9yb3cgKyB0aWxlX3JvdyAqIFdNTUFfTSArIGkgKiBUSUxFX0hFSUdIVCArIHJvdzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGNfcm93IDwgbSAmJiBjX2NvbCA8IG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1tjX3JvdyAqIG4gKyBjX2NvbF0gPSBfX2Zsb2F0MmJmbG9hdDE2KGNfdmFsKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnZvaWQgcnVuKAogICAgdWludHB0cl90IGFfcHRyLAogICAgdWludHB0cl90IGJfcHRyLAogICAgdWludHB0cl90IGFzX3B0ciwKICAgIHVpbnRwdHJfdCBic19wdHIsCiAgICB1aW50cHRyX3QgY19wdHIsCiAgICBpbnQgbSwKICAgIGludCBuLAogICAgaW50IGsKKSB7CiAgICBjb25zdCBhdXRvKiBhID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmcDgqPihhX3B0cik7CiAgICBjb25zdCBhdXRvKiBiID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBmcDgqPihiX3B0cik7CiAgICBjb25zdCBhdXRvKiBhcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZnAzMio+KGFzX3B0cik7CiAgICBjb25zdCBhdXRvKiBicyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZnAzMio+KGJzX3B0cik7CiAgICBhdXRvKiBjID0gcmVpbnRlcnByZXRfY2FzdDxiZjE2Kj4oY19wdHIpOwoKICAgIGF1dG8gYmxvY2tEaW0gPSBUSFJFQURTX1BFUl9CTE9DSzsKICAgIGF1dG8gZ3JpZERpbSAgPSBkaW0zKGNlaWxfZGl2KG0sIEJMT0NLX0hFSUdIVCksIGNlaWxfZGl2KG4sIEJMT0NLX1dJRFRIKSk7CgogICAgaWYgKG0gJSAxMjggPT0gMCAmJiBuICUgMTI4ID09IDAgJiYgayAlIDEyOCA9PSAwKSB7CiAgICAgICAgZnA4X2tlcm5lbDx0cnVlPjw8PGdyaWREaW0sIGJsb2NrRGltPj4+KAogICAgICAgICAgICBhLAogICAgICAgICAgICBiLAogICAgICAgICAgICBhcywKICAgICAgICAgICAgYnMsCiAgICAgICAgICAgIGMsCiAgICAgICAgICAgIG0sCiAgICAgICAgICAgIG4sCiAgICAgICAgICAgIGsKICAgICAgICApOwogICAgfSBlbHNlIHsKICAgICAgICBmcDhfa2VybmVsPGZhbHNlPjw8PGdyaWREaW0sIGJsb2NrRGltPj4+KAogICAgICAgICAgICBhLAogICAgICAgICAgICBiLAogICAgICAgICAgICBhcywKICAgICAgICAgICAgYnMsCiAgICAgICAgICAgIGMsCiAgICAgICAgICAgIG0sCiAgICAgICAgICAgIG4sCiAgICAgICAgICAgIGsKICAgICAgICApOwogICAgfQoKI2lmbmRlZiBfX05WQ0NfXwogICAgSElQX0NIRUNLKGhpcEdldExhc3RFcnJvcigpKTsKI2VuZGlmCn0KIiIiCgppbXBvcnQgc3lzCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgcHJpbnQoYm9keS5yZXBsYWNlKCJAIiwgY2hyKDkyKSkpCiAgICBzeXMuZXhpdCgwKQoKZnJvbSB0YXNrIGltcG9ydCBpbnB1dF90LCBvdXRwdXRfdAppbXBvcnQgdG9yY2gKZnJvbSB0b3JjaC51dGlscy5jcHBfZXh0ZW5zaW9uIGltcG9ydCBsb2FkX2lubGluZQppbXBvcnQgdGltZQoKa2VybmVsX2NwcCA9IGhlYWRlciArIGJvZHkgKyBmb290ZXIKCmhpcF9tb2R1bGUgPSBsb2FkX2lubGluZSgKICAgIG5hbWU9ImZwOCIsCiAgICBjcHBfc291cmNlcz0iIiwKICAgIGN1ZGFfc291cmNlcz1rZXJuZWxfY3BwLnJlcGxhY2UoIkAiLCBjaHIoOTIpKSwKICAgIHdpdGhfY3VkYT1UcnVlLAogICAgdmVyYm9zZT1GYWxzZSwKICAgIGV4dHJhX2N1ZGFfY2ZsYWdzPVsiLXN0ZD1jKysyMCJdLAogICAgIyBub19pbXBsaWNpdF9oZWFkZXJzPVRydWUsCikKCmZpcnN0ID0gVHJ1ZQoKCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90OgogICAgIiIiCiAgICBSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgYmxvY2stc2NhbGUgZnA4IGdlbW0KICAgIEFyZ3M6CiAgICAgICAgZGF0YTogVHVwbGUgdGhhdCBleHBhbmRzIHRvOgogICAgICAgICAgICBhOiB0b3JjaC5UZW5zb3JbZmxvYXQ4X2U0bTNmbnV6XSBvZiBzaGFwZSBbbSwga10sCiAgICAgICAgICAgIGI6IHRvcmNoLlRlbnNvcltmbG9hdDhfZTRtM2ZudXpdIG9mIHNoYXBlIFtuLCBrXSwKICAgICAgICAgICAgYV9zY2FsZTogdG9yY2guVGVuc29yW2Zsb2F0MzJdIG9mIHNoYXBlIFttLCBrIC8vIDEyOF0sCiAgICAgICAgICAgIGJfc2NhbGU6IHRvcmNoLlRlbnNvcltmbG9hdDMyXSBvZiBzaGFwZSBbbiAvLyAxMjgsIGsgLy8gMTI4XSwKICAgICAgICAgICAgYzogdG9yY2guVGVuc29yW2JmbG9hdDE2XSBvZiBzaGFwZSBbbSwgbl0KICAgIFJldHVybnM6CiAgICAgICAgVGVuc29yIGNvbnRhaW5pbmcgb3V0cHV0IGluIGJmMTYKICAgICIiIgoKICAgIGdsb2JhbCBmaXJzdAogICAgaWYgZmlyc3Q6CiAgICAgICAgcHJpbnQoImV4ZWN1dGluZyBvbiIsIHRvcmNoLmN1ZGEuZ2V0X2RldmljZV9uYW1lKCksIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICBmaXJzdCA9IEZhbHNlCgogICAgYSwgYiwgYV9zY2FsZSwgYl9zY2FsZSwgYyA9IGRhdGEKCiAgICBtLCBuID0gYy5zaGFwZQogICAgayA9IGEuc2hhcGVbMV0KCiAgICBoaXBfbW9kdWxlLmZwOCgKICAgICAgICBhLmRhdGFfcHRyKCksCiAgICAgICAgYi5kYXRhX3B0cigpLAogICAgICAgIGFfc2NhbGUuZGF0YV9wdHIoKSwKICAgICAgICBiX3NjYWxlLmRhdGFfcHRyKCksCiAgICAgICAgYy5kYXRhX3B0cigpLAogICAgICAgIG0sCiAgICAgICAgbiwKICAgICAgICBrLAogICAgKQoKICAgIHJldHVybiBjCg==Source code from GPU Mode and the KernelBot dataset · June 9 Researcher Reciprocity License v1.0
Best evidence level for this revision: reported
JSON