Name: series-workflow5t7pj Phase: Succeeded StartedAt: 2026-07-24 20:42:50 +0000 UTC FinishedAt: 2026-07-25 01:39:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[0] Phase: Succeeded StartedAt: 2026-07-24 20:42:50 +0000 UTC FinishedAt: 2026-07-24 20:58:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 20:42:50 +0000 UTC FinishedAt: 2026-07-24 20:58:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "918eeded-5399-4261-9af3-70fb1fcc369c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "fuse_get_dev", "fuse_dev_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "0c2890de-1b7a-4718-a188-a597ff4d74a7" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyBGVVNFIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBjaGFubmVsIGlzIGFib3J0ZWQgd2hlbiBhbGwgZGV2aWNlcyBhcmUgY2xvc2luZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjA6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZTgxY2E0ZjI5YzFlZjJkOGFiZGEyM2ZiYTAyOTdiYWExMzEyZjJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMjQgMjA6NTc6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9kZXYuYyBiL2ZzL2Z1c2UvZGV2LmNcbmluZGV4IDU3NjNhN2NkM2IzN2ZhLi44YjE0YzdkNTdhMDExOSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZGV2LmNcbkBAIC0xNjYyLDE4ICYjNDM7MTY2MiwyMyBAQCBzdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuJiM0MztcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkge1xuJiM0MztcdGlmICh1bmxpa2VseSghZmNoKSkge1xuIFx0XHQvKiBvbmx5IGJsb2NrIHdhaXRpbmcgZm9yIG1vdW50IGlmIHN5bmMgaW5pdCB3YXMgcmVxdWVzdGVkICovXG4gXHRcdGlmICghZnVkLVx1MDAzZXN5bmNfaW5pdClcbiBcdFx0XHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xuIFxuLVx0XHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsIGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkgIT0gTlVMTCk7XG4mIzQzO1x0XHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKHVubGlrZWx5KGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xuJiM0MztcbiBcdHJldHVybiBmdWQ7XG4gfVxuIFxuQEAgLTIyMTEsMTcgJiM0MzsyMjE2LDMxIEBAIHZvaWQgZnVzZV9jaGFuX3dhaXRfYWJvcnRlZChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4gXHRmdXNlX3VyaW5nX3dhaXRfc3RvcHBlZF9xdWV1ZXMoZmNoKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmdXNlX2RldiAqcG9zO1xuJiM0MztcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIFx1MDAyNmZjaC1cdTAwM2VkZXZpY2VzLCBlbnRyeSkge1xuJiM0MztcdFx0aWYgKCFwb3MtXHUwMDNlY2xvc2luZylcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4gXHQvKiBQYWlycyB3aXRoIGNtcHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbiBcbi1cdGlmIChmY2gpIHtcbiYjNDM7XHRpZiAoZmNoIFx1MDAyNlx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcbiBcdFx0c3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSBcdTAwMjZmdWQtXHUwMDNlcHE7XG4gXHRcdExJU1RfSEVBRCh0b19lbmQpO1xuIFx0XHR1bnNpZ25lZCBpbnQgaTtcbiBcdFx0Ym9vbCBsYXN0O1xuJiM0MztcdFx0Ym9vbCBhYm9ydDtcbiBcbiBcdFx0LyogTWFrZSBzdXJlIGZ1c2VfZGV2X2luc3RhbGxfd2l0aF9wcSgpIGhhcyBmaW5pc2hlZCAqL1xuIFx0XHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuQEAgLTIyMzQsMTQgJiM0MzsyMjUzLDE1IEBAIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRsaXN0X2RlbChcdTAwMjZmdWQtXHUwMDNlZW50cnkpO1xuIFx0XHQvKiBBcmUgd2UgdGhlIGxhc3Qgb3BlbiBkZXZpY2U/ICovXG4gXHRcdGxhc3QgPSBsaXN0X2VtcHR5KFx1MDAyNmZjaC1cdTAwM2VkZXZpY2VzKTtcbiYjNDM7XHRcdGFib3J0ID0gZmNoLVx1MDAzZWNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuIFxuIFx0XHRmdXNlX2Rldl9lbmRfcmVxdWVzdHMoXHUwMDI2dG9fZW5kKTtcbiBcbi1cdFx0aWYgKGxhc3QpIHtcbiYjNDM7XHRcdGlmIChsYXN0KVxuIFx0XHRcdFdBUk5fT04oZmNoLVx1MDAzZWlxLmZhc3luYyAhPSBOVUxMKTtcbiYjNDM7XHRcdGlmIChhYm9ydClcbiBcdFx0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4tXHRcdH1cbiBcdFx0ZnVzZV9jb25uX3B1dChmY2gtXHUwMDNlY29ubik7XG4gXHR9XG4gXHRmdXNlX2Rldl9wdXQoZnVkKTtcbkBAIC0yMzc1LDYgJiM0MzsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB9XG4gI2VuZGlmXG4gXG4mIzQzO3N0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4mIzQzO1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoO1xuJiM0MztcdGJvb2wgYWJvcnQ7XG4mIzQzO1xuJiM0MztcdGlmIChmaWxlX2NvdW50KGZpbGUpICE9IDEpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBdG9taWNhbGx5IHRyYW5zaXRpb24gZnVkLVx1MDAzZWNoYW4gZnJvbSBOVUxMIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4mIzQzO1x0ICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuXG4mIzQzO1x0ICovXG4mIzQzO1x0ZmNoID0gY21weGNoZyhcdTAwMjZmdWQtXHUwMDNlY2hhbiwgTlVMTCwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xuJiM0MztcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuJiM0MztcdGZ1ZC1cdTAwM2VjbG9zaW5nID0gdHJ1ZTtcbiYjNDM7XHRhYm9ydCA9IGZjaC1cdTAwM2Vjb25uZWN0ZWQgXHUwMDI2XHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoYWJvcnQpXG4mIzQzO1x0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcbiBcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuIFx0Lm9wZW5cdFx0PSBmdXNlX2Rldl9vcGVuLFxuQEAgLTIzODMsNiAmIzQzOzI0MzEsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4gXHQud3JpdGVfaXRlclx0PSBmdXNlX2Rldl93cml0ZSxcbiBcdC5zcGxpY2Vfd3JpdGVcdD0gZnVzZV9kZXZfc3BsaWNlX3dyaXRlLFxuIFx0LnBvbGxcdFx0PSBmdXNlX2Rldl9wb2xsLFxuJiM0MztcdC5mbHVzaFx0XHQ9IGZ1c2VfZGV2X2ZsdXNoLFxuIFx0LnJlbGVhc2VcdD0gZnVzZV9kZXZfcmVsZWFzZSxcbiBcdC5mYXN5bmNcdFx0PSBmdXNlX2Rldl9mYXN5bmMsXG4gXHQudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG5pbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbkBAIC0zMDIsNiAmIzQzOzMwMiw5IEBAIHN0cnVjdCBmdXNlX2RldiB7XG4gXHQvKiogQHN5bmNfaW5pdDogSXNzdWUgRlVTRV9JTklUIHN5bmNocm9ub3VzbHkgKi9cbiBcdGJvb2wgc3luY19pbml0O1xuIFxuJiM0MztcdC8qKiBAY2xvc2luZzogRmluYWwgY2xvc2UgaGFzIHN0YXJ0ZWQsIHByb3RlY3RlZCBieSBjaGFuLVx1MDAzZWxvY2sgKi9cbiYjNDM7XHRib29sIGNsb3Npbmc7XG4mIzQzO1xuIFx0LyoqIEBjaGFuOiBGdXNlIGNoYW5uZWwgZm9yIHRoaXMgZGV2aWNlICovXG4gXHRzdHJ1Y3QgZnVzZV9jaGFuICpjaGFuO1xuIFxuQEAgLTMzMCwxNyAmIzQzOzMzMywyNSBAQCBzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIHtcbiBcdH0gcmluZztcbiB9O1xuIFxuLS8qIGZ1ZC1cdTAwM2VjaGFuIGdldHMgYXNzaWduZWQgdG8gdGhpcyB2YWx1ZSB3aGVuIC9kZXYvZnVzZSBpcyBjbG9zZWQgKi9cbi0jZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxuLVxuIC8qXG4tICogTG9ja2xlc3MgYWNjZXNzIGlzIE9LLCBiZWNhdXNlIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCBvbmNlIGR1cmluZyBtb3VudCBhbmQgaXMgdmFsaWRcbi0gKiB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC5cbiYjNDM7ICogZnVkLVx1MDAzZWNoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOlxuJiM0MzsgKlxuJiM0MzsgKiBOVUxMIC1cdTAwM2UgdmFsaWQgY2hhbm5lbCAtXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4mIzQzOyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS1cdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiAgKlxuLSAqIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXNcbi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOlxuLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuXG4mIzQzOyAqIEEgdmFsaWQgY2hhbm5lbCBwb2ludGVyIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuIEZpbmFsXG4mIzQzOyAqIGZsdXNoIGNhbiBpbnN0YWxsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGRpcmVjdGx5IGZvciBhbiB1bmluc3RhbGxlZFxuJiM0MzsgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlXG4mIzQzOyAqIG1lYW5zIHRoYXQgdGhlIGNoYW5uZWwgY2FuIG5vIGxvbmdlciBiZSBpbnN0YWxsZWQgb3IgYWNjZXNzZWQgdGhyb3VnaCB0aGlzXG4mIzQzOyAqIGZpbGU7IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgcmVsZWFzZSBoYXMgYWxyZWFkeSBydW4gYW5kIGl0IG11c3QgbmV2ZXIgYmVcbiYjNDM7ICogZGVyZWZlcmVuY2VkLlxuJiM0MzsgKlxuJiM0MzsgKiBmdXNlX2Rldl9jaGFuX2dldCgpIHJlYWRzIHRoaXMgc3RhdGUgbG9ja2xlc3NseS4gQ2FsbGVycyBtdXN0IGRpc3Rpbmd1aXNoXG4mIzQzOyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlXG4mIzQzOyAqIGRlcmVmZXJlbmNpbmcgdGhlIHJlc3VsdC5cbiAgKi9cbiYjNDM7I2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbiYjNDM7XG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcbiB7XG4gXHQvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbkBAIC0zNTUsOCAmIzQzOzM2Niw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2ZpbGVfdG9fZnVkKHN0cnVjdCBmaWxlICpmaWxlKVxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4mIzQzO1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcbiBcbi1cdGlmICghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSlcbiYjNDM7XHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGZ1ZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IEZVU0UgZGV2aWNlcyBhcmUgY2xvc2VkIGFuZCBob3cgdGhlIGNoYW5uZWwgaXMgYWJvcnRlZCB3aGVuIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVlODFjYTRmMjljMWVmMmQ4YWJkYTIzZmJhMDI5N2JhYTEzMTJmMmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAyMDo1Nzo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jCmluZGV4IDU3NjNhN2NkM2IzN2ZhLi44YjE0YzdkNTdhMDExOSAxMDA2NDQKLS0tIGEvZnMvZnVzZS9kZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Rldi5jCkBAIC0xNjYyLDE4ICYjNDM7MTY2MiwyMyBAQCBzdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7CiYjNDM7CXN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7CiAJaW50IGVycjsKIAotCWlmICh1bmxpa2VseSghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkpIHsKJiM0MzsJaWYgKHVubGlrZWx5KCFmY2gpKSB7CiAJCS8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi8KIAkJaWYgKCFmdWQtJmd0O3N5bmNfaW5pdCkKIAkJCXJldHVybiBFUlJfUFRSKC1FUEVSTSk7CiAKLQkJZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLCBmdXNlX2Rldl9jaGFuX2dldChmdWQpICE9IE5VTEwpOwomIzQzOwkJZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLAomIzQzOwkJCQkJICAgICAgIChmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpKSAhPSBOVUxMKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCiYjNDM7CWlmICh1bmxpa2VseShmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVQRVJNKTsKJiM0MzsKIAlyZXR1cm4gZnVkOwogfQogCkBAIC0yMjExLDE3ICYjNDM7MjIxNiwzMSBAQCB2b2lkIGZ1c2VfY2hhbl93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKQogCWZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpOwogfQogCiYjNDM7c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKQomIzQzO3sKJiM0MzsJc3RydWN0IGZ1c2VfZGV2ICpwb3M7CiYjNDM7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtmY2gtJmd0O2xvY2spOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJmFtcDtmY2gtJmd0O2RldmljZXMsIGVudHJ5KSB7CiYjNDM7CQlpZiAoIXBvcy0mZ3Q7Y2xvc2luZykKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpOwogCS8qIFBhaXJzIHdpdGggY21weGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqLwogCXN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IHhjaGcoJmFtcDtmdWQtJmd0O2NoYW4sIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTsKIAotCWlmIChmY2gpIHsKJiM0MzsJaWYgKGZjaCAmYW1wOyZhbXA7IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkgewogCQlzdHJ1Y3QgZnVzZV9wcXVldWUgKmZwcSA9ICZhbXA7ZnVkLSZndDtwcTsKIAkJTElTVF9IRUFEKHRvX2VuZCk7CiAJCXVuc2lnbmVkIGludCBpOwogCQlib29sIGxhc3Q7CiYjNDM7CQlib29sIGFib3J0OwogCiAJCS8qIE1ha2Ugc3VyZSBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoKSBoYXMgZmluaXNoZWQgKi8KIAkJc3Bpbl9sb2NrKCZhbXA7ZmNoLSZndDtsb2NrKTsKQEAgLTIyMzQsMTQgJiM0MzsyMjUzLDE1IEBAIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogCQlsaXN0X2RlbCgmYW1wO2Z1ZC0mZ3Q7ZW50cnkpOwogCQkvKiBBcmUgd2UgdGhlIGxhc3Qgb3BlbiBkZXZpY2U/ICovCiAJCWxhc3QgPSBsaXN0X2VtcHR5KCZhbXA7ZmNoLSZndDtkZXZpY2VzKTsKJiM0MzsJCWFib3J0ID0gZmNoLSZndDtjb25uZWN0ZWQgJmFtcDsmYW1wOyBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpOwogCQlzcGluX3VubG9jaygmYW1wO2ZjaC0mZ3Q7bG9jayk7CiAKIAkJZnVzZV9kZXZfZW5kX3JlcXVlc3RzKCZhbXA7dG9fZW5kKTsKIAotCQlpZiAobGFzdCkgewomIzQzOwkJaWYgKGxhc3QpCiAJCQlXQVJOX09OKGZjaC0mZ3Q7aXEuZmFzeW5jICE9IE5VTEwpOwomIzQzOwkJaWYgKGFib3J0KQogCQkJZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpOwotCQl9CiAJCWZ1c2VfY29ubl9wdXQoZmNoLSZndDtjb25uKTsKIAl9CiAJZnVzZV9kZXZfcHV0KGZ1ZCk7CkBAIC0yMzc1LDYgJiM0MzsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIH0KICNlbmRpZgogCiYjNDM7c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTsKJiM0MzsJc3RydWN0IGZ1c2VfY2hhbiAqZmNoOwomIzQzOwlib29sIGFib3J0OwomIzQzOwomIzQzOwlpZiAoZmlsZV9jb3VudChmaWxlKSAhPSAxKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEF0b21pY2FsbHkgdHJhbnNpdGlvbiBmdWQtJmd0O2NoYW4gZnJvbSBOVUxMIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVECiYjNDM7CSAqIG9uIGZpbmFsIGNsb3NlIHRvIHByZXZlbnQgYSBsYXRlciBmdXNlX2Rldl9pbnN0YWxsKCkgZnJvbSBzdWNjZWVkaW5nLgomIzQzOwkgKi8KJiM0MzsJZmNoID0gY21weGNoZygmYW1wO2Z1ZC0mZ3Q7Y2hhbiwgTlVMTCwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpOwomIzQzOwlpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7ZmNoLSZndDtsb2NrKTsKJiM0MzsJZnVkLSZndDtjbG9zaW5nID0gdHJ1ZTsKJiM0MzsJYWJvcnQgPSBmY2gtJmd0O2Nvbm5lY3RlZCAmYW1wOyZhbXA7IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7ZmNoLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJaWYgKGFib3J0KQomIzQzOwkJZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7CiAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCS5vcGVuCQk9IGZ1c2VfZGV2X29wZW4sCkBAIC0yMzgzLDYgJiM0MzsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0gewogCS53cml0ZV9pdGVyCT0gZnVzZV9kZXZfd3JpdGUsCiAJLnNwbGljZV93cml0ZQk9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSwKIAkucG9sbAkJPSBmdXNlX2Rldl9wb2xsLAomIzQzOwkuZmx1c2gJCT0gZnVzZV9kZXZfZmx1c2gsCiAJLnJlbGVhc2UJPSBmdXNlX2Rldl9yZWxlYXNlLAogCS5mYXN5bmMJCT0gZnVzZV9kZXZfZmFzeW5jLAogCS51bmxvY2tlZF9pb2N0bCA9IGZ1c2VfZGV2X2lvY3RsLApkaWZmIC0tZ2l0IGEvZnMvZnVzZS9mdXNlX2Rldl9pLmggYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaAppbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oCkBAIC0zMDIsNiAmIzQzOzMwMiw5IEBAIHN0cnVjdCBmdXNlX2RldiB7CiAJLyoqIEBzeW5jX2luaXQ6IElzc3VlIEZVU0VfSU5JVCBzeW5jaHJvbm91c2x5ICovCiAJYm9vbCBzeW5jX2luaXQ7CiAKJiM0MzsJLyoqIEBjbG9zaW5nOiBGaW5hbCBjbG9zZSBoYXMgc3RhcnRlZCwgcHJvdGVjdGVkIGJ5IGNoYW4tJmd0O2xvY2sgKi8KJiM0MzsJYm9vbCBjbG9zaW5nOwomIzQzOwogCS8qKiBAY2hhbjogRnVzZSBjaGFubmVsIGZvciB0aGlzIGRldmljZSAqLwogCXN0cnVjdCBmdXNlX2NoYW4gKmNoYW47CiAKQEAgLTMzMCwxNyAmIzQzOzMzMywyNSBAQCBzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIHsKIAl9IHJpbmc7CiB9OwogCi0vKiBmdWQtJmd0O2NoYW4gZ2V0cyBhc3NpZ25lZCB0byB0aGlzIHZhbHVlIHdoZW4gL2Rldi9mdXNlIGlzIGNsb3NlZCAqLwotI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSkKLQogLyoKLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtJmd0O2NoYW4gaXMgc2V0IG9uY2UgZHVyaW5nIG1vdW50IGFuZCBpcyB2YWxpZAotICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuCiYjNDM7ICogZnVkLSZndDtjaGFuIGhhcyB0aGUgZm9sbG93aW5nIG1vbm90b25pYyBzdGF0ZSB0cmFuc2l0aW9uczoKJiM0MzsgKgomIzQzOyAqIE5VTEwgLSZndDsgdmFsaWQgY2hhbm5lbCAtJmd0OyBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRAomIzQzOyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS0mZ3Q7IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVECiAgKgotICogZnVkLSZndDtjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXMKLSAqIHJlbGVhc2VkLCBzbyByZXN1bHQgaXMgc2FmZSB0byBkZXJlZmVyZW5jZSBpbiBtb3N0IGNhc2VzLiAgRXhjZXB0aW9ucyBhcmU6Ci0gKiBmdXNlX2Rldl9wdXQoKSBhbmQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbigpLgomIzQzOyAqIEEgdmFsaWQgY2hhbm5lbCBwb2ludGVyIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuIEZpbmFsCiYjNDM7ICogZmx1c2ggY2FuIGluc3RhbGwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgZGlyZWN0bHkgZm9yIGFuIHVuaW5zdGFsbGVkCiYjNDM7ICogZGV2aWNlLCBwcmV2ZW50aW5nIGFueSBsYXRlciBjaGFubmVsIGluc3RhbGxhdGlvbi4gVGhlIHNlbnRpbmVsIHRoZXJlZm9yZQomIzQzOyAqIG1lYW5zIHRoYXQgdGhlIGNoYW5uZWwgY2FuIG5vIGxvbmdlciBiZSBpbnN0YWxsZWQgb3IgYWNjZXNzZWQgdGhyb3VnaCB0aGlzCiYjNDM7ICogZmlsZTsgaXQgZG9lcyBub3QgaW1wbHkgdGhhdCByZWxlYXNlIGhhcyBhbHJlYWR5IHJ1biBhbmQgaXQgbXVzdCBuZXZlciBiZQomIzQzOyAqIGRlcmVmZXJlbmNlZC4KJiM0MzsgKgomIzQzOyAqIGZ1c2VfZGV2X2NoYW5fZ2V0KCkgcmVhZHMgdGhpcyBzdGF0ZSBsb2NrbGVzc2x5LiBDYWxsZXJzIG11c3QgZGlzdGluZ3Vpc2gKJiM0MzsgKiBOVUxMLCBhIHZhbGlkIGNoYW5uZWwgcG9pbnRlciwgYW5kIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGJlZm9yZQomIzQzOyAqIGRlcmVmZXJlbmNpbmcgdGhlIHJlc3VsdC4KICAqLwomIzQzOyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpCiYjNDM7CiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2NoYW4gKmZ1c2VfZGV2X2NoYW5fZ2V0KHN0cnVjdCBmdXNlX2RldiAqZnVkKQogewogCS8qIFBhaXJzIHdpdGggeGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqLwpAQCAtMzU1LDggJiM0MzszNjYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9maWxlX3RvX2Z1ZChzdHJ1Y3QgZmlsZSAqZmlsZSkKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7CiYjNDM7CXN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7CiAKLQlpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpCiYjNDM7CWlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkKIAkJcmV0dXJuIE5VTEw7CiAKIAlyZXR1cm4gZnVkOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTExCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEV2YWx1YXRpb24gZm9yIEZVU0UgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHdvcnRoIG15IHRpbWUgdG8gZnV6ej8mIzM0OyBMb29raW5nIGF0IHRoZSBmaWxlIG1vZGlmaWNhdGlvbnMsIGl0JiMzOTtzIGhpdHRpbmcgYGZzL2Z1c2UvZGV2LmNgIGFuZCBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBhcyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nLiAgVGhlIGludHJvZHVjdGlvbiBvZiBgZnVzZV9kZXZfZmx1c2hgIGludG8gdGhlIGBmdXNlX2Rldl9vcGVyYXRpb25zYCBzdHJ1Y3QgaXMgYSBnb29kIHNpZ247IG5ldyBmdW5jdGlvbmFsaXR5IG9mdGVuIG1lYW5zIG5ldyBjb2RlIHBhdGhzLiAgUGx1cyB0aGUgY2hhbmdlcyB0byBgZnVzZV9nZXRfZGV2YCwgYF9fZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgdGhlIG1lbnRpb24gb2YgYEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEYCBhbmQgYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYCBhbGwgcG9pbnQgdG8gbW9kaWZpY2F0aW9ucyByZWxhdGVkIHRvIGRldmljZSBjbG9zdXJlIGFuZCBjaGFubmVsIGhhbmRsaW5nLCBhbmQgdGhhdCYjMzk7cyB1c3VhbGx5IHJpcGUgZm9yIGZpbmRpbmcgc3VidGxlIGJ1Z3MuICBTbywgeWVzLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBsb29rcyBsaWtlIGEgd29ydGh3aGlsZSB0YXJnZXQuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMuICBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIGNlbnRyYWwgdG8gdGhlIG5ldyBsb2dpYy4gVGhlIHBhdGNoIG1lbnRpb25zIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGFuZCB0aGUgbmV3IGBmdXNlX2Rldl9mbHVzaGAsIGFuZCBgZnVzZV9kZXZfYWxsX2Nsb3NpbmdgIGZ1bmN0aW9ucy4gYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYCBiZWluZyBzdGF0aWMgaXNuJiMzOTt0IGlkZWFsIGFzIGEgZGlyZWN0IGZvY3VzLCBzbyBJJiMzOTtsbCBwcm9iYWJseSBsb29rIGF0IHdoYXQgY2FsbHMgaXQgYW5kIG1ha2UgbXkgZGV0ZXJtaW5hdGlvbiBmcm9tIHRoYXQuIEJ1dCBgZnVzZV9kZXZfZmx1c2hgIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgKmlmKiBpdCYjMzk7cyBhY3R1YWxseSBnZXR0aW5nIGNhbGxlZCB2aWEgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYGZ1c2VfZGV2X29wZXJhdGlvbnNgLiBCZWNhdXNlIGl0JiMzOTtzIGJlaW5nIGFzc2lnbmVkIHRvIGEgZmlsZSBvcGVyYXRpb24gYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBJIHRoaW5rIEkgY2FuIHVzZSBpdC4gQnV0LCBJIGFtIGdvaW5nIHRvIGZvY3VzIG9uIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIEkmIzM5O2xsIGhhdmUgdG8gc2VlIGlmIHRoZXkgYXJlIGlubGluZWQuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIEtjb25maWcgaXMgZW5hYmxlZC4gSSBrbm93IGl0JiMzOTtzIENPTkZJR19GVVNFX0ZTLgoKT2theSwgbm93IGxldCYjMzk7cyB1c2UgdGhlIHRvb2xzIHRvIHZlcmlmeSBhbmQgYmVnaW4gdGhlIGZ1enppbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmM9MjM4OD1zdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzk3LVxuZnMvZnVzZS9kZXYuYzoyMzk4OnN0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpXG5mcy9mdXNlL2Rldi5jLTIzOTkte1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjQyNj1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvZnVzZS9kZXYuYy0yNDMzLVx0LnBvbGxcdFx0PSBmdXNlX2Rldl9wb2xsLFxuZnMvZnVzZS9kZXYuYzoyNDM0Olx0LmZsdXNoXHRcdD0gZnVzZV9kZXZfZmx1c2gsXG5mcy9mdXNlL2Rldi5jLTI0MzUtXHQucmVsZWFzZVx0PSBmdXNlX2Rldl9yZWxlYXNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXkmIzM5O3JlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgaW4gRlVTRSBmb3IgZGV2aWNlIG1hbmFnZW1lbnQsIHJpZ2h0PyBgZnVzZV9nZXRfZGV2YCBpcyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGVpdGhlciBhbGxvY2F0aW5nIG9yIHJldHJpZXZpbmcgYSBGVVNFIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCBwcmVzdW1hYmx5IGhhbmRsaW5nIHNvbWUgc29ydCBvZiBsb2NraW5nIG9yIHJlZmVyZW5jZSBjb3VudGluZyB0byBlbnN1cmUgdGhyZWFkIHNhZmV0eSB3aGVuIG11bHRpcGxlIHVzZXJzcGFjZSBwcm9jZXNzZXMgYWNjZXNzIHRoZSBzYW1lIGZpbGVzeXN0ZW0uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50cmljYWNpZXMgb2YgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcga2VybmVsLWxldmVsIGRhdGEgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGZpbGUgZGVzY3JpcHRvciBhbmQgdGhlIGRldmljZSwgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdpdGggb3RoZXIgb3BlcmF0aW9ucyBsaWtlIGBmdXNlX21vdW50YCBvciBgZnVzZV91bm1vdW50YC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGRlZXBlciBhdCBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIGRldmljZSByZXVzZS4gQXJlIHRoZXJlIGNoZWNrcyB0byBlbnN1cmUgdGhlIGRldmljZSBpcyB2YWxpZCwgb3IgZG9lcyB0aGlzIGZ1bmN0aW9uIGRvIGFueSBzb3J0IG9mIGdhcmJhZ2UgY29sbGVjdGlvbiBpZiBhIHByZXZpb3VzIGZpbGVzeXN0ZW0gaW5zdGFuY2Ugd2FzIGltcHJvcGVybHkgdG9ybiBkb3duPwoKVGhlbiB0aGVyZSYjMzk7cyBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoaXMgaXMgdGhlIGNvdW50ZXJwYXJ0LCB0aGUgb25lIHRoYXQgZGVhbHMgd2l0aCBkZXZpY2UgY2xlYW51cC4gSSB3YW50IHRvIGtub3cgZXhhY3RseSB3aGF0IGl0IGRvZXMuIERvZXMgaXQgZnJlZSB0aGUgZGV2aWNlIHN0cnVjdHVyZSBlbnRpcmVseSwgb3IgbWVyZWx5IGRlY3JlbWVudCBhIHJlZmVyZW5jZSBjb3VudD8gSG93IGRvZXMgaXQgaGFuZGxlIHRoZSBzaXR1YXRpb24gaWYgdGhlcmUgYXJlIHN0aWxsIG91dHN0YW5kaW5nIGZpbGUgaGFuZGxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZT8gSXMgdGhlcmUgc29tZSBzb3J0IG9mIGRlZmVycmVkIGNsZWFudXAgbWVjaGFuaXNtPyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgZG9lcyBpdCByZWxpYWJseSBzeW5jaHJvbml6ZSB3aXRoIGFueSBwZW5kaW5nIEkvTyBvcGVyYXRpb25zIGJlZm9yZSByZWxlYXNpbmcgdGhlIGRldmljZT8gSSYjMzk7dmUgc2VlbiBlbm91Z2ggRlVTRSBpbXBsZW1lbnRhdGlvbnMgb3ZlciB0aGUgeWVhcnMgdG8ga25vdyB0aGF0IHRoZXNlIHJlbGVhc2Ugcm91dGluZXMgYXJlIG9mdGVuIHdoZXJlIHN1YnRsZSBidWdzIGx1cmssIHBhcnRpY3VsYXJseSBhcm91bmQgcmVzb3VyY2UgbGVha3MgYW5kIGRhbmdsaW5nIHBvaW50ZXJzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlJiMzOTtzIGFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBGVVNFIGtlcm5lbCBtb2R1bGUmIzM5O3MgaW50ZXJuYWwgZGV2aWNlIGxpc3Qgb3Igc29tZSBzaW1pbGFyIG1hbmFnZW1lbnQuIExldCYjMzk7cyBzZWUgaG93IHRoZXNlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyBwbGF5IHRvZ2V0aGVyIGFuZCB3aGF0IHRoZWlyIGltcGxpY2F0aW9ucyBhcmUgZm9yIHRoZSBvdmVyYWxsIHN0YWJpbGl0eSBhbmQgcmVsaWFiaWxpdHkgb2YgRlVTRS1iYXNlZCBmaWxlc3lzdGVtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2N1c2UuYz01NTU9c3RhdGljIGludCBjdXNlX2NoYW5uZWxfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvY3VzZS5jLTU1Ni17XG5mcy9mdXNlL2N1c2UuYzo1NTc6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9jdXNlLmMtNTU4LVx0c3RydWN0IGN1c2VfY29ubiAqY2MgPSBmY190b19jYyhmdWQtXHUwMDNlY2hhbi1cdTAwM2Vjb25uKTtcbi0tXG5mcy9mdXNlL2Rldi5jPTE2NTE9c3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTY2MS1cbmZzL2Z1c2UvZGV2LmM6MTY2MjpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMTY2My17XG4tLVxuZnMvZnVzZS9kZXYuYz0xNjg1PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTY4OC1cdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuZnMvZnVzZS9kZXYuYzoxNjg5Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTE2OTAtXG4tLVxuZnMvZnVzZS9kZXYuYz0xNzAyPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMTcwOS1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE3MTA6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2Rldihpbik7XG5mcy9mdXNlL2Rldi5jLTE3MTEtXG4tLVxuZnMvZnVzZS9kZXYuYz0xOTczPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTk3NS1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE5NzY6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGlvY2ItXHUwMDNla2lfZmlscCk7XG5mcy9mdXNlL2Rldi5jLTE5NzctXG4tLVxuZnMvZnVzZS9kZXYuYz0xOTg5PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV93cml0ZShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMTk5Ny1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE5OTg6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KG91dCk7XG5mcy9mdXNlL2Rldi5jLTE5OTktXHRzaXplX3QgcmVtO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjA4MT1zdGF0aWMgX19wb2xsX3QgZnVzZV9kZXZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcbi0tXG5mcy9mdXNlL2Rldi5jLTIwODQtXHRzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcTtcbmZzL2Z1c2UvZGV2LmM6MjA4NTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMDg2LVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjI3Mj1zdGF0aWMgaW50IGZ1c2VfZGV2X2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgb24pXG5mcy9mdXNlL2Rldi5jLTIyNzMte1xuZnMvZnVzZS9kZXYuYzoyMjc0Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIyNzUtXG4tLVxuZnMvZnVzZS9kZXYuYz0yMjgzPXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2Nsb25lKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzAyLVxuZnMvZnVzZS9kZXYuYzoyMzAzOlx0ZnVkID0gZnVzZV9nZXRfZGV2KGZkX2ZpbGUoZikpO1xuZnMvZnVzZS9kZXYuYy0yMzA0LVx0aWYgKElTX0VSUihmdWQpKVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjMxOD1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzIwLXtcbmZzL2Z1c2UvZGV2LmM6MjMyMTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMzIyLVx0c3RydWN0IGZ1c2VfYmFja2luZ19tYXAgbWFwO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjMzNj1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX2Nsb3NlKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXG5mcy9mdXNlL2Rldi5jLTIzMzcte1xuZnMvZnVzZS9kZXYuYzoyMzM4Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzMzktXHRpbnQgYmFja2luZ19pZDtcbi0tXG5mcy9mdXNlL2Rldi5jPTIzODg9c3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZnVzZS9kZXYuYy0yMzg5LXtcbmZzL2Z1c2UvZGV2LmM6MjM5MDpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzOTEtXHRpZiAoIWZ1ZClcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTEyMTc9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTIzMi1cbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTIzMzpcdGZ1ZCA9IGZ1c2VfZ2V0X2RldihjbWQtXHUwMDNlZmlsZSk7XG5mcy9mdXNlL2Rldl91cmluZy5jLTEyMzQtXHRpZiAoSVNfRVJSKGZ1ZCkpIHtcbi0tXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD0zNjE9c3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzY1LVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6MzY2OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTM2Ny17XG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9Mzc3PXZvaWQgZnVzZV9pcXVldWVfaW5pdChzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgY29uc3Qgc3RydWN0IGZ1c2VfaXF1ZXVlX29wcyAqb3BzLCB2b2lkICpwcml2KTtcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTM3OC1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjM3OTpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSk7XG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zODAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjA6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM4NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipPYnNlcnZhdGlvbnMgb24gYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBhIGxvdCBvZiB1c2FnZSBvZiBgZnVzZV9nZXRfZGV2YCBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIEhtbSwgdGhhdCYjMzk7cyBub3Qgc3VycHJpc2luZywgZ2l2ZW4gaXRzIHJvbGUgaW4sIHdlbGwsIGdldHRpbmcgdGhlIGRldmljZS4gSXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIHdob2xlIGRldmljZSBtYW5hZ2VtZW50LCBzbyBpdCBtYWtlcyBzZW5zZSBpdCYjMzk7cyByZWZlcmVuY2VkIGZyZXF1ZW50bHkuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0aGlua2luZyBhYm91dCBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nIG9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgaW4gdGhpcyBhcmVhLiBJdCYjMzk7cyBvYnZpb3VzbHkgYSBjcml0aWNhbCBwYXRoLgoKQW5kIG5vdyBJJiMzOTttIGFsc28gbm90aWNpbmcgbW9kaWZpY2F0aW9ucyB0byBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFzIHRoaXMgbGlrZWx5IHBvaW50cyB0byBzb21lIHNwZWNpZmljIGNoYW5nZSBpbiBob3cgZGV2aWNlcyBhcmUgYmVpbmcgZnJlZWQgb3IgaG93IHRoZWlyIHJlc291cmNlcyBhcmUgbWFuYWdlZCBhdCBzaHV0ZG93bi4gU28sIHNvbWV0aGluZyBpcyBsaWtlbHkgdG91Y2hpbmcgdGhlIGRldmljZSBsaWZldGltZSBtb3JlIGRlZXBseS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYWN0dWFsIGNoYW5nZXMgaW4gYGZ1c2VfZGV2X3JlbGVhc2VgIHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXQuIEFyZSB0aGV5IGFkZHJlc3NpbmcgYSByZXNvdXJjZSBsZWFrPyBBcmUgdGhleSBhbHRlcmluZyBob3cgRlVTRSBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBrZXJuZWwgZmlsZSBzeXN0ZW0/IElzIGl0IHNvbWUgc29ydCBvZiBnYXJiYWdlIGNvbGxlY3Rpb24gc3RyYXRlZ3k/IEkgbmVlZCB0byBhbmFseXplIHRob3NlIG1vZGlmaWNhdGlvbnMgY2xvc2VseS4gSXQmIzM5O3Mgdml0YWwgSSB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjaGFuZ2VzLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gcmVsZWFzaW5nIGRldmljZXMsIGFmZmVjdCByZWxpYWJpbGl0eSBhbmQgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9jdXNlLmM9NTU1PXN0YXRpYyBpbnQgY3VzZV9jaGFubmVsX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9jdXNlLmMtNTcyLVxuZnMvZnVzZS9jdXNlLmM6NTczOlx0cmV0dXJuIGZ1c2VfZGV2X3JlbGVhc2UoaW5vZGUsIGZpbGUpO1xuZnMvZnVzZS9jdXNlLmMtNTc0LX1cbi0tXG5mcy9mdXNlL2Rldi5jPTQ1OD1zdGF0aWMgYm9vbCBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoc3RydWN0IGZ1c2VfZGV2ICpmdWQsIHN0cnVjdCBmdXNlX2NoYW4gKmZjaCxcbi0tXG5mcy9mdXNlL2Rldi5jLTQ2NS1cdCAqIFBhaXJzIHdpdGg6XG5mcy9mdXNlL2Rldi5jOjQ2NjpcdCAqICAtIHhjaGcoKSBpbiBmdXNlX2Rldl9yZWxlYXNlKClcbmZzL2Z1c2UvZGV2LmMtNDY3LVx0ICogIC0gc21wX2xvYWRfYWNxdWlyZSgpIGluIGZ1c2VfZGV2X2ZjX2dldCgpXG4tLVxuZnMvZnVzZS9kZXYuYz01MTQ9dm9pZCBmdXNlX2Rldl9wdXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpXG4tLVxuZnMvZnVzZS9kZXYuYy01MjItXHRpZiAoZmNoIFx1MDAyNlx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcbmZzL2Z1c2UvZGV2LmM6NTIzOlx0XHQvKiBUaGlzIGlzIHRoZSB2aXJ0aW9mcyBjYXNlIChmdXNlX2Rldl9yZWxlYXNlKCkgbm90IGNhbGxlZCkgKi9cbmZzL2Z1c2UvZGV2LmMtNTI0LVx0XHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjIxOT1zdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4tLVxuZnMvZnVzZS9kZXYuYy0yMjMxLVxuZnMvZnVzZS9kZXYuYzoyMjMyOmludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZnVzZS9kZXYuYy0yMjMzLXtcbi0tXG5mcy9mdXNlL2Rldi5jLTIyNjktfVxuZnMvZnVzZS9kZXYuYzoyMjcwOkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfZGV2X3JlbGVhc2UpO1xuZnMvZnVzZS9kZXYuYy0yMjcxLVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjQyNj1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvZnVzZS9kZXYuYy0yNDM0LVx0LmZsdXNoXHRcdD0gZnVzZV9kZXZfZmx1c2gsXG5mcy9mdXNlL2Rldi5jOjI0MzU6XHQucmVsZWFzZVx0PSBmdXNlX2Rldl9yZWxlYXNlLFxuZnMvZnVzZS9kZXYuYy0yNDM2LVx0LmZhc3luY1x0XHQ9IGZ1c2VfZGV2X2Zhc3luYyxcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTQ5MD12b2lkIGZ1c2VfdXJpbmdfc3RvcF9xdWV1ZXMoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jLTUwOC0gKlxuZnMvZnVzZS9kZXZfdXJpbmcuYzo1MDk6ICogUmVsZWFzaW5nIHRoZSBsYXN0IGVudHJ5IHNob3VsZCB0cmlnZ2VyIGZ1c2VfZGV2X3JlbGVhc2UoKSBpZlxuZnMvZnVzZS9kZXZfdXJpbmcuYy01MTAtICogdGhlIGRhZW1vbiB3YXMgdGVybWluYXRlZFxuLS1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oPTQxNz1zdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZGV2X2FsbG9jKHZvaWQpO1xuZnMvZnVzZS9mdXNlX2Rldl9pLmgtNDE4LVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6NDE5OmludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTtcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTQyMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTI4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipNeSBDdXJyZW50IEZvY3VzKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZXNlIHN5bWJvbHM6IGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXkgc2VlbSBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGRlYnVnZ2luZyBvciBkZWVwIGRpdmluZyBpbnRvIHRoZSBGVVNFIGtlcm5lbCBpbnRlcmFjdGlvbiwgbGlrZWx5IHJlbGF0ZWQgdG8gZGV2aWNlIG1hbmFnZW1lbnQsIGFjcXVpc2l0aW9uLCBhbmQgcmVsZWFzZSB3aXRoaW4gdGhlIEZVU0UgZnJhbWV3b3JrLiBJJiMzOTttIGdvaW5nIHRvIGJvb2ttYXJrIHRob3NlIGZ1bmN0aW9ucy4gQWxzbywgbXkgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgc2hvdWxkIGJlIGBGVVNFX0ZTYC4gSSYjMzk7bGwga2VlcCB0aGF0IGluIG1pbmQgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjA6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3OTAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJiMzOTt2ZSBnb3QgbXkgaW5pdGlhbCBjb25maWd1cmF0aW9uIHNldCwgYnV0IEkgbmVlZCB0byBkbyBhIHRob3JvdWdoIGNoZWNrIGZvciBhbnkgb3Zlcmxvb2tlZCBvciBzZWNvbmRhcnkgY29uZmlndXJhdGlvbnMsIGV4dGVybmFsIHNvdXJjZXMsIG9yIG92ZXJyaWRlcyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoZSBjdXJyZW50IGJlaGF2aW9yLiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoZXJlIGFub3RoZXIgY29uZmlnIGZpbGUsIGEgZGlmZmVyZW50IGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBzb21lIGF1dG9tYXRlZCBwcm9jZXNzIEkmIzM5O3ZlIGZvcmdvdHRlbiBhYm91dCB0aGF0IGNvdWxkIGJlIGFmZmVjdGluZyB0aGVzZSBzZXR0aW5ncz8mIzM0OyBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHNhbml0eSBjaGVjazogZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB0aGUgb25seSBvbmUgaW4gcGxheS4gSSBkb24mIzM5O3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNoYXNpbmcgZ2hvc3RzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHN1cnByaXNlIHBhcmFtZXRlcnMgb3IgY29uZmxpY3Rpbmcgc2V0dGluZ3MgYmVmb3JlIEkgZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnPTIyPWNvbmZpZyBDVVNFXG5mcy9mdXNlL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtDaGFyYWN0ZXIgZGV2aWNlIGluIFVzZXJzcGFjZSBzdXBwb3J0XCYjMzQ7XG5mcy9mdXNlL0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIEZVU0VfRlNcbmZzL2Z1c2UvS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5mcy9mdXNlL0tjb25maWc9MzI9Y29uZmlnIFZJUlRJT19GU1xuZnMvZnVzZS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7VmlydGlvIEZpbGVzeXN0ZW1cJiMzNDtcbmZzL2Z1c2UvS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnLTM1LVx0c2VsZWN0IFZJUlRJT1xuLS1cbmZzL2Z1c2UvS2NvbmZpZz00Mz1jb25maWcgRlVTRV9EQVhcbi0tXG5mcy9mdXNlL0tjb25maWctNDYtXHRzZWxlY3QgSU5URVJWQUxfVFJFRVxuZnMvZnVzZS9LY29uZmlnOjQ3Olx0ZGVwZW5kcyBvbiBWSVJUSU9fRlNcbmZzL2Z1c2UvS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gRlNfREFYXG5mcy9mdXNlL0tjb25maWc6NDk6XHRkZXBlbmRzIG9uIERBWFxuZnMvZnVzZS9LY29uZmlnLTUwLVx0aGVscFxuLS1cbmZzL2Z1c2UvS2NvbmZpZz01Nz1jb25maWcgRlVTRV9QQVNTVEhST1VHSFxuLS1cbmZzL2Z1c2UvS2NvbmZpZy01OS1cdGRlZmF1bHQgeVxuZnMvZnVzZS9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctNjEtXHRzZWxlY3QgRlNfU1RBQ0tcbi0tXG5mcy9mdXNlL0tjb25maWc9Njg9Y29uZmlnIEZVU0VfSU9fVVJJTkdcbi0tXG5mcy9mdXNlL0tjb25maWctNzAtXHRkZWZhdWx0IHlcbmZzL2Z1c2UvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnOjcyOlx0ZGVwZW5kcyBvbiBJT19VUklOR1xuZnMvZnVzZS9LY29uZmlnLTczLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDIxCgkJCQkJCQlvdXRwdXQ6IDk5CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBGVVNFIERldmljZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIHRoZSBwYXRjaCYjMzk7cyBsb2NhdGlvbjogaXQmIzM5O3MgbmVzdGxlZCB3aXRoaW4gYGZzL2Z1c2UvZGV2LmNgLiBUaGlzIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHRoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBGVVNFX0ZTYC4gTm8gbmVlZCB0byBnbyBodW50aW5nIHRocm91Z2ggb3RoZXIgbW9kdWxlczsgdGhpcyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBzeW1ib2xzIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBtb2RpZmllZCBieSB0aGUgcGF0Y2gsIHNvIHRoZXkgYXJlIHRoZSBsaWtlbHkgZW50cnlwb2ludHMgZm9yIGZ1enppbmcuCgpNeSByZWFzb25pbmc/IEl0JiMzOTtzIGltcGFjdGluZyBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBjbG9zZWQgYW5kIGhvdyB0aGUgYXNzb2NpYXRlZCBjaGFubmVscyBhcmUgYWJvcnRlZCB3aGVuIGV2ZXJ5dGhpbmcgc2h1dHMgZG93bi4gVGhpcyBjbGVhcmx5IHRvdWNoZXMgdXBvbiBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsIGJlaGF2aW9yIGFuZCBlcnJvciBoYW5kbGluZy4gVGhpcyB0eXBlIG9mIGNoYW5nZSBpcyBwcmFjdGljYWxseSBzY3JlYW1pbmcgZm9yIGZ1enppbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MgYW5kIHVuY292ZXIgYW55IGVkZ2UgY2FzZXMgaW4gdGhlIGRldmljZSYjMzk7cyBsaWZlY3ljbGUuIEl0JiMzOTtzIG5vdCBhIHRyaXZpYWwgY29zbWV0aWMgY2hhbmdlOyBpdCYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBob3cgdGhlIHN5c3RlbSAqd29ya3MqLCBhbmQgdGhlcmVmb3JlIHdhcnJhbnRzIHJpZ29yb3VzIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9nZXRfZGV2JiMzNDssCiAgICAmIzM0O2Z1c2VfZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgRlVTRSBkZXZpY2UgaGFuZGxpbmcgbG9naWMsIHNwZWNpZmljYWxseSBob3cgRlVTRSBkZXZpY2VzIGFyZSBjbG9zZWQgYW5kIGhvdyB0aGUgY2hhbm5lbCBpcyBhYm9ydGVkIHdoZW4gYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9nZXRfZGV2JiMzNDssCiAgICAmIzM0O2Z1c2VfZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgRlVTRSBkZXZpY2UgaGFuZGxpbmcgbG9naWMsIHNwZWNpZmljYWxseSBob3cgRlVTRSBkZXZpY2VzIGFyZSBjbG9zZWQgYW5kIGhvdyB0aGUgY2hhbm5lbCBpcyBhYm9ydGVkIHdoZW4gYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTc6NTkuMzYyNjU4MTY0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNjA0OTE3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IEZVU0UgZGV2aWNlcyBhcmUgY2xvc2VkIGFuZCBob3cgdGhlIGNoYW5uZWwgaXMgYWJvcnRlZCB3aGVuIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTc6NTkuMzYyNjY0NDk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQ5OTc0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZTgxY2E0ZjI5YzFlZjJkOGFiZGEyM2ZiYTAyOTdiYWExMzEyZjJiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDI0IDIwOjU3OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jXFxuaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2UvZGV2LmNcXG4rKysgYi9mcy9mdXNlL2Rldi5jXFxuQEAgLTE2NjIsMTggKzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XFxuK1xcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpKSB7XFxuK1xcdGlmICh1bmxpa2VseSghZmNoKSkge1xcbiBcXHRcXHQvKiBvbmx5IGJsb2NrIHdhaXRpbmcgZm9yIG1vdW50IGlmIHN5bmMgaW5pdCB3YXMgcmVxdWVzdGVkICovXFxuIFxcdFxcdGlmICghZnVkLVxcdTAwM2VzeW5jX2luaXQpXFxuIFxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XFxuIFxcbi1cXHRcXHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsIGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkgIT0gTlVMTCk7XFxuK1xcdFxcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIChmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpKSAhPSBOVUxMKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHVubGlrZWx5KGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XFxuK1xcbiBcXHRyZXR1cm4gZnVkO1xcbiB9XFxuIFxcbkBAIC0yMjExLDE3ICsyMjE2LDMxIEBAIHZvaWQgZnVzZV9jaGFuX3dhaXRfYWJvcnRlZChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuIFxcdGZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuK3tcXG4rXFx0c3RydWN0IGZ1c2VfZGV2ICpwb3M7XFxuK1xcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIFxcdTAwMjZmY2gtXFx1MDAzZWRldmljZXMsIGVudHJ5KSB7XFxuK1xcdFxcdGlmICghcG9zLVxcdTAwM2VjbG9zaW5nKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiB7XFxuIFxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcXG4gXFx0LyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXFxuIFxcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IHhjaGcoXFx1MDAyNmZ1ZC1cXHUwMDNlY2hhbiwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xcbiBcXG4tXFx0aWYgKGZjaCkge1xcbitcXHRpZiAoZmNoIFxcdTAwMjZcXHUwMDI2IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkge1xcbiBcXHRcXHRzdHJ1Y3QgZnVzZV9wcXVldWUgKmZwcSA9IFxcdTAwMjZmdWQtXFx1MDAzZXBxO1xcbiBcXHRcXHRMSVNUX0hFQUQodG9fZW5kKTtcXG4gXFx0XFx0dW5zaWduZWQgaW50IGk7XFxuIFxcdFxcdGJvb2wgbGFzdDtcXG4rXFx0XFx0Ym9vbCBhYm9ydDtcXG4gXFxuIFxcdFxcdC8qIE1ha2Ugc3VyZSBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoKSBoYXMgZmluaXNoZWQgKi9cXG4gXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbkBAIC0yMjM0LDE0ICsyMjUzLDE1IEBAIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiBcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZnVkLVxcdTAwM2VlbnRyeSk7XFxuIFxcdFxcdC8qIEFyZSB3ZSB0aGUgbGFzdCBvcGVuIGRldmljZT8gKi9cXG4gXFx0XFx0bGFzdCA9IGxpc3RfZW1wdHkoXFx1MDAyNmZjaC1cXHUwMDNlZGV2aWNlcyk7XFxuK1xcdFxcdGFib3J0ID0gZmNoLVxcdTAwM2Vjb25uZWN0ZWQgXFx1MDAyNlxcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcXG4gXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHRcXHRmdXNlX2Rldl9lbmRfcmVxdWVzdHMoXFx1MDAyNnRvX2VuZCk7XFxuIFxcbi1cXHRcXHRpZiAobGFzdCkge1xcbitcXHRcXHRpZiAobGFzdClcXG4gXFx0XFx0XFx0V0FSTl9PTihmY2gtXFx1MDAzZWlxLmZhc3luYyAhPSBOVUxMKTtcXG4rXFx0XFx0aWYgKGFib3J0KVxcbiBcXHRcXHRcXHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XFxuLVxcdFxcdH1cXG4gXFx0XFx0ZnVzZV9jb25uX3B1dChmY2gtXFx1MDAzZWNvbm4pO1xcbiBcXHR9XFxuIFxcdGZ1c2VfZGV2X3B1dChmdWQpO1xcbkBAIC0yMzc1LDYgKzIzOTUsMzQgQEAgc3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiB9XFxuICNlbmRpZlxcbiBcXG4rc3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcXG4re1xcbitcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XFxuK1xcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaDtcXG4rXFx0Ym9vbCBhYm9ydDtcXG4rXFxuK1xcdGlmIChmaWxlX2NvdW50KGZpbGUpICE9IDEpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0LypcXG4rXFx0ICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC1cXHUwMDNlY2hhbiBmcm9tIE5VTEwgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcXG4rXFx0ICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuXFxuK1xcdCAqL1xcbitcXHRmY2ggPSBjbXB4Y2hnKFxcdTAwMjZmdWQtXFx1MDAzZWNoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcXG4rXFx0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHNwaW5fbG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4rXFx0ZnVkLVxcdTAwM2VjbG9zaW5nID0gdHJ1ZTtcXG4rXFx0YWJvcnQgPSBmY2gtXFx1MDAzZWNvbm5lY3RlZCBcXHUwMDI2XFx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdGlmIChhYm9ydClcXG4rXFx0XFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcXG4gXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gXFx0Lm9wZW5cXHRcXHQ9IGZ1c2VfZGV2X29wZW4sXFxuQEAgLTIzODMsNiArMjQzMSw3IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcXG4gXFx0LndyaXRlX2l0ZXJcXHQ9IGZ1c2VfZGV2X3dyaXRlLFxcbiBcXHQuc3BsaWNlX3dyaXRlXFx0PSBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUsXFxuIFxcdC5wb2xsXFx0XFx0PSBmdXNlX2Rldl9wb2xsLFxcbitcXHQuZmx1c2hcXHRcXHQ9IGZ1c2VfZGV2X2ZsdXNoLFxcbiBcXHQucmVsZWFzZVxcdD0gZnVzZV9kZXZfcmVsZWFzZSxcXG4gXFx0LmZhc3luY1xcdFxcdD0gZnVzZV9kZXZfZmFzeW5jLFxcbiBcXHQudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCxcXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9mdXNlX2Rldl9pLmggYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxcbmluZGV4IDY2OGM4MzkxZDYxYzAzLi4yODMzYTAzNTBjNDM1YSAxMDA2NDRcXG4tLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxcbisrKyBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXFxuQEAgLTMwMiw2ICszMDIsOSBAQCBzdHJ1Y3QgZnVzZV9kZXYge1xcbiBcXHQvKiogQHN5bmNfaW5pdDogSXNzdWUgRlVTRV9JTklUIHN5bmNocm9ub3VzbHkgKi9cXG4gXFx0Ym9vbCBzeW5jX2luaXQ7XFxuIFxcbitcXHQvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi1cXHUwMDNlbG9jayAqL1xcbitcXHRib29sIGNsb3Npbmc7XFxuK1xcbiBcXHQvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi9cXG4gXFx0c3RydWN0IGZ1c2VfY2hhbiAqY2hhbjtcXG4gXFxuQEAgLTMzMCwxNyArMzMzLDI1IEBAIHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUge1xcbiBcXHR9IHJpbmc7XFxuIH07XFxuIFxcbi0vKiBmdWQtXFx1MDAzZWNoYW4gZ2V0cyBhc3NpZ25lZCB0byB0aGlzIHZhbHVlIHdoZW4gL2Rldi9mdXNlIGlzIGNsb3NlZCAqL1xcbi0jZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxcbi1cXG4gLypcXG4tICogTG9ja2xlc3MgYWNjZXNzIGlzIE9LLCBiZWNhdXNlIGZ1ZC1cXHUwMDNlY2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkXFxuLSAqIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLlxcbisgKiBmdWQtXFx1MDAzZWNoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOlxcbisgKlxcbisgKiBOVUxMIC1cXHUwMDNlIHZhbGlkIGNoYW5uZWwgLVxcdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcXG4rICogTlVMTCAtLS0tLS0tLS0tLS0tLS0tLVxcdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcXG4gICpcXG4tICogZnVkLVxcdTAwM2VjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXNcXG4tICogcmVsZWFzZWQsIHNvIHJlc3VsdCBpcyBzYWZlIHRvIGRlcmVmZXJlbmNlIGluIG1vc3QgY2FzZXMuICBFeGNlcHRpb25zIGFyZTpcXG4tICogZnVzZV9kZXZfcHV0KCkgYW5kIGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oKS5cXG4rICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWxcXG4rICogZmx1c2ggY2FuIGluc3RhbGwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgZGlyZWN0bHkgZm9yIGFuIHVuaW5zdGFsbGVkXFxuKyAqIGRldmljZSwgcHJldmVudGluZyBhbnkgbGF0ZXIgY2hhbm5lbCBpbnN0YWxsYXRpb24uIFRoZSBzZW50aW5lbCB0aGVyZWZvcmVcXG4rICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXNcXG4rICogZmlsZTsgaXQgZG9lcyBub3QgaW1wbHkgdGhhdCByZWxlYXNlIGhhcyBhbHJlYWR5IHJ1biBhbmQgaXQgbXVzdCBuZXZlciBiZVxcbisgKiBkZXJlZmVyZW5jZWQuXFxuKyAqXFxuKyAqIGZ1c2VfZGV2X2NoYW5fZ2V0KCkgcmVhZHMgdGhpcyBzdGF0ZSBsb2NrbGVzc2x5LiBDYWxsZXJzIG11c3QgZGlzdGluZ3Vpc2hcXG4rICogTlVMTCwgYSB2YWxpZCBjaGFubmVsIHBvaW50ZXIsIGFuZCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBiZWZvcmVcXG4rICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LlxcbiAgKi9cXG4rI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcXG4rXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY2hhbiAqZnVzZV9kZXZfY2hhbl9nZXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpXFxuIHtcXG4gXFx0LyogUGFpcnMgd2l0aCB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXFxuQEAgLTM1NSw4ICszNjYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9maWxlX3RvX2Z1ZChzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxcbiB7XFxuIFxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcXG4rXFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcXG4gXFxuLVxcdGlmICghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSlcXG4rXFx0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuIFxcdHJldHVybiBmdWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU3OjU5Ljc3ODMxMzQ3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI2NzQ0ODI3MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2dldF9kZXZcIixcbiAgICBcImZ1c2VfZGV2X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyBGVVNFIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBjaGFubmVsIGlzIGFib3J0ZWQgd2hlbiBhbGwgZGV2aWNlcyBhcmUgY2xvc2luZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlODFjYTRmMjljMWVmMmQ4YWJkYTIzZmJhMDI5N2JhYTEzMTJmMmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMDo1Nzo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jXG5pbmRleCA1NzYzYTdjZDNiMzdmYS4uOGIxNGM3ZDU3YTAxMTkgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Rldi5jXG4rKysgYi9mcy9mdXNlL2Rldi5jXG5AQCAtMTY2MiwxOCArMTY2MiwyMyBAQCBzdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuK1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpKSB7XG4rXHRpZiAodW5saWtlbHkoIWZjaCkpIHtcbiBcdFx0Lyogb25seSBibG9jayB3YWl0aW5nIGZvciBtb3VudCBpZiBzeW5jIGluaXQgd2FzIHJlcXVlc3RlZCAqL1xuIFx0XHRpZiAoIWZ1ZC1cdTAwM2VzeW5jX2luaXQpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbiBcbi1cdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLCBmdXNlX2Rldl9jaGFuX2dldChmdWQpICE9IE5VTEwpO1xuK1x0XHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsXG4rXHRcdFx0XHRcdCAgICAgICAoZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkgIT0gTlVMTCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcdH1cbiBcbitcdGlmICh1bmxpa2VseShmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xuK1xuIFx0cmV0dXJuIGZ1ZDtcbiB9XG4gXG5AQCAtMjIxMSwxNyArMjIxNiwzMSBAQCB2b2lkIGZ1c2VfY2hhbl93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuIFx0ZnVzZV91cmluZ193YWl0X3N0b3BwZWRfcXVldWVzKGZjaCk7XG4gfVxuIFxuK3N0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbit7XG4rXHRzdHJ1Y3QgZnVzZV9kZXYgKnBvcztcbitcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIFx1MDAyNmZjaC1cdTAwM2VkZXZpY2VzLCBlbnRyeSkge1xuK1x0XHRpZiAoIXBvcy1cdTAwM2VjbG9zaW5nKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4gXHQvKiBQYWlycyB3aXRoIGNtcHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbiBcbi1cdGlmIChmY2gpIHtcbitcdGlmIChmY2ggXHUwMDI2XHUwMDI2IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkge1xuIFx0XHRzdHJ1Y3QgZnVzZV9wcXVldWUgKmZwcSA9IFx1MDAyNmZ1ZC1cdTAwM2VwcTtcbiBcdFx0TElTVF9IRUFEKHRvX2VuZCk7XG4gXHRcdHVuc2lnbmVkIGludCBpO1xuIFx0XHRib29sIGxhc3Q7XG4rXHRcdGJvb2wgYWJvcnQ7XG4gXG4gXHRcdC8qIE1ha2Ugc3VyZSBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoKSBoYXMgZmluaXNoZWQgKi9cbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbkBAIC0yMjM0LDE0ICsyMjUzLDE1IEBAIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRsaXN0X2RlbChcdTAwMjZmdWQtXHUwMDNlZW50cnkpO1xuIFx0XHQvKiBBcmUgd2UgdGhlIGxhc3Qgb3BlbiBkZXZpY2U/ICovXG4gXHRcdGxhc3QgPSBsaXN0X2VtcHR5KFx1MDAyNmZjaC1cdTAwM2VkZXZpY2VzKTtcbitcdFx0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuIFx0XHRzcGluX3VubG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4gXG4gXHRcdGZ1c2VfZGV2X2VuZF9yZXF1ZXN0cyhcdTAwMjZ0b19lbmQpO1xuIFxuLVx0XHRpZiAobGFzdCkge1xuK1x0XHRpZiAobGFzdClcbiBcdFx0XHRXQVJOX09OKGZjaC1cdTAwM2VpcS5mYXN5bmMgIT0gTlVMTCk7XG4rXHRcdGlmIChhYm9ydClcbiBcdFx0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4tXHRcdH1cbiBcdFx0ZnVzZV9jb25uX3B1dChmY2gtXHUwMDNlY29ubik7XG4gXHR9XG4gXHRmdXNlX2Rldl9wdXQoZnVkKTtcbkBAIC0yMzc1LDYgKzIzOTUsMzQgQEAgc3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxuIH1cbiAjZW5kaWZcbiBcbitzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKVxuK3tcbitcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaDtcbitcdGJvb2wgYWJvcnQ7XG4rXG4rXHRpZiAoZmlsZV9jb3VudChmaWxlKSAhPSAxKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdC8qXG4rXHQgKiBBdG9taWNhbGx5IHRyYW5zaXRpb24gZnVkLVx1MDAzZWNoYW4gZnJvbSBOVUxMIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4rXHQgKiBvbiBmaW5hbCBjbG9zZSB0byBwcmV2ZW50IGEgbGF0ZXIgZnVzZV9kZXZfaW5zdGFsbCgpIGZyb20gc3VjY2VlZGluZy5cbitcdCAqL1xuK1x0ZmNoID0gY21weGNoZyhcdTAwMjZmdWQtXHUwMDNlY2hhbiwgTlVMTCwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xuK1x0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4rXHRmdWQtXHUwMDNlY2xvc2luZyA9IHRydWU7XG4rXHRhYm9ydCA9IGZjaC1cdTAwM2Vjb25uZWN0ZWQgXHUwMDI2XHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XG4rXHRzcGluX3VubG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4rXG4rXHRpZiAoYWJvcnQpXG4rXHRcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiBcdC5vcGVuXHRcdD0gZnVzZV9kZXZfb3BlbixcbkBAIC0yMzgzLDYgKzI0MzEsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4gXHQud3JpdGVfaXRlclx0PSBmdXNlX2Rldl93cml0ZSxcbiBcdC5zcGxpY2Vfd3JpdGVcdD0gZnVzZV9kZXZfc3BsaWNlX3dyaXRlLFxuIFx0LnBvbGxcdFx0PSBmdXNlX2Rldl9wb2xsLFxuK1x0LmZsdXNoXHRcdD0gZnVzZV9kZXZfZmx1c2gsXG4gXHQucmVsZWFzZVx0PSBmdXNlX2Rldl9yZWxlYXNlLFxuIFx0LmZhc3luY1x0XHQ9IGZ1c2VfZGV2X2Zhc3luYyxcbiBcdC51bmxvY2tlZF9pb2N0bCA9IGZ1c2VfZGV2X2lvY3RsLFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbmluZGV4IDY2OGM4MzkxZDYxYzAzLi4yODMzYTAzNTBjNDM1YSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG4rKysgYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuQEAgLTMwMiw2ICszMDIsOSBAQCBzdHJ1Y3QgZnVzZV9kZXYge1xuIFx0LyoqIEBzeW5jX2luaXQ6IElzc3VlIEZVU0VfSU5JVCBzeW5jaHJvbm91c2x5ICovXG4gXHRib29sIHN5bmNfaW5pdDtcbiBcbitcdC8qKiBAY2xvc2luZzogRmluYWwgY2xvc2UgaGFzIHN0YXJ0ZWQsIHByb3RlY3RlZCBieSBjaGFuLVx1MDAzZWxvY2sgKi9cbitcdGJvb2wgY2xvc2luZztcbitcbiBcdC8qKiBAY2hhbjogRnVzZSBjaGFubmVsIGZvciB0aGlzIGRldmljZSAqL1xuIFx0c3RydWN0IGZ1c2VfY2hhbiAqY2hhbjtcbiBcbkBAIC0zMzAsMTcgKzMzMywyNSBAQCBzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIHtcbiBcdH0gcmluZztcbiB9O1xuIFxuLS8qIGZ1ZC1cdTAwM2VjaGFuIGdldHMgYXNzaWduZWQgdG8gdGhpcyB2YWx1ZSB3aGVuIC9kZXYvZnVzZSBpcyBjbG9zZWQgKi9cbi0jZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxuLVxuIC8qXG4tICogTG9ja2xlc3MgYWNjZXNzIGlzIE9LLCBiZWNhdXNlIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCBvbmNlIGR1cmluZyBtb3VudCBhbmQgaXMgdmFsaWRcbi0gKiB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC5cbisgKiBmdWQtXHUwMDNlY2hhbiBoYXMgdGhlIGZvbGxvd2luZyBtb25vdG9uaWMgc3RhdGUgdHJhbnNpdGlvbnM6XG4rICpcbisgKiBOVUxMIC1cdTAwM2UgdmFsaWQgY2hhbm5lbCAtXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4rICogTlVMTCAtLS0tLS0tLS0tLS0tLS0tLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuICAqXG4tICogZnVkLVx1MDAzZWNoYW4gaXMgc2V0IHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIG9ubHkgYWZ0ZXIgdGhlIGNvbnRhaW5pbmcgZmlsZSBpc1xuLSAqIHJlbGVhc2VkLCBzbyByZXN1bHQgaXMgc2FmZSB0byBkZXJlZmVyZW5jZSBpbiBtb3N0IGNhc2VzLiAgRXhjZXB0aW9ucyBhcmU6XG4tICogZnVzZV9kZXZfcHV0KCkgYW5kIGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oKS5cbisgKiBBIHZhbGlkIGNoYW5uZWwgcG9pbnRlciByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLiBGaW5hbFxuKyAqIGZsdXNoIGNhbiBpbnN0YWxsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGRpcmVjdGx5IGZvciBhbiB1bmluc3RhbGxlZFxuKyAqIGRldmljZSwgcHJldmVudGluZyBhbnkgbGF0ZXIgY2hhbm5lbCBpbnN0YWxsYXRpb24uIFRoZSBzZW50aW5lbCB0aGVyZWZvcmVcbisgKiBtZWFucyB0aGF0IHRoZSBjaGFubmVsIGNhbiBubyBsb25nZXIgYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2VkIHRocm91Z2ggdGhpc1xuKyAqIGZpbGU7IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgcmVsZWFzZSBoYXMgYWxyZWFkeSBydW4gYW5kIGl0IG11c3QgbmV2ZXIgYmVcbisgKiBkZXJlZmVyZW5jZWQuXG4rICpcbisgKiBmdXNlX2Rldl9jaGFuX2dldCgpIHJlYWRzIHRoaXMgc3RhdGUgbG9ja2xlc3NseS4gQ2FsbGVycyBtdXN0IGRpc3Rpbmd1aXNoXG4rICogTlVMTCwgYSB2YWxpZCBjaGFubmVsIHBvaW50ZXIsIGFuZCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBiZWZvcmVcbisgKiBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuXG4gICovXG4rI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbitcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2NoYW4gKmZ1c2VfZGV2X2NoYW5fZ2V0KHN0cnVjdCBmdXNlX2RldiAqZnVkKVxuIHtcbiBcdC8qIFBhaXJzIHdpdGggeGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xuQEAgLTM1NSw4ICszNjYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9maWxlX3RvX2Z1ZChzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuK1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcbiBcbi1cdGlmICghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSlcbitcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZnVkO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTc6NTkuNzc4MzE0NzA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwOTQ1OTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBFdmFsdWF0aW9uIGZvciBGVVNFIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgd29ydGggbXkgdGltZSB0byBmdXp6P1wiIExvb2tpbmcgYXQgdGhlIGZpbGUgbW9kaWZpY2F0aW9ucywgaXQncyBoaXR0aW5nIGBmcy9mdXNlL2Rldi5jYCBhbmQgYGZzL2Z1c2UvZnVzZV9kZXZfaS5oYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgYXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgY29yZSBGVVNFIGRldmljZSBoYW5kbGluZy4gIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYGZ1c2VfZGV2X2ZsdXNoYCBpbnRvIHRoZSBgZnVzZV9kZXZfb3BlcmF0aW9uc2Agc3RydWN0IGlzIGEgZ29vZCBzaWduOyBuZXcgZnVuY3Rpb25hbGl0eSBvZnRlbiBtZWFucyBuZXcgY29kZSBwYXRocy4gIFBsdXMgdGhlIGNoYW5nZXMgdG8gYGZ1c2VfZ2V0X2RldmAsIGBfX2Z1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIHRoZSBtZW50aW9uIG9mIGBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRGAgYW5kIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgYWxsIHBvaW50IHRvIG1vZGlmaWNhdGlvbnMgcmVsYXRlZCB0byBkZXZpY2UgY2xvc3VyZSBhbmQgY2hhbm5lbCBoYW5kbGluZywgYW5kIHRoYXQncyB1c3VhbGx5IHJpcGUgZm9yIGZpbmRpbmcgc3VidGxlIGJ1Z3MuICBTbywgeWVzLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBsb29rcyBsaWtlIGEgd29ydGh3aGlsZSB0YXJnZXQuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIGtleSBmb2N1cyBzeW1ib2xzLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIHRoZSBuZXcgbG9naWMuIFRoZSBwYXRjaCBtZW50aW9ucyBgZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgdGhlIG5ldyBgZnVzZV9kZXZfZmx1c2hgLCBhbmQgYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYCBmdW5jdGlvbnMuIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgYmVpbmcgc3RhdGljIGlzbid0IGlkZWFsIGFzIGEgZGlyZWN0IGZvY3VzLCBzbyBJJ2xsIHByb2JhYmx5IGxvb2sgYXQgd2hhdCBjYWxscyBpdCBhbmQgbWFrZSBteSBkZXRlcm1pbmF0aW9uIGZyb20gdGhhdC4gQnV0IGBmdXNlX2Rldl9mbHVzaGAgbG9va3MgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSAqaWYqIGl0J3MgYWN0dWFsbHkgZ2V0dGluZyBjYWxsZWQgdmlhIHRoZSBmdW5jdGlvbiBwb2ludGVyIGluIGBmdXNlX2Rldl9vcGVyYXRpb25zYC4gQmVjYXVzZSBpdCdzIGJlaW5nIGFzc2lnbmVkIHRvIGEgZmlsZSBvcGVyYXRpb24gYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBJIHRoaW5rIEkgY2FuIHVzZSBpdC4gQnV0LCBJIGFtIGdvaW5nIHRvIGZvY3VzIG9uIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIEknbGwgaGF2ZSB0byBzZWUgaWYgdGhleSBhcmUgaW5saW5lZC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIEtjb25maWcgaXMgZW5hYmxlZC4gSSBrbm93IGl0J3MgQ09ORklHX0ZVU0VfRlMuXG5cbk9rYXksIG5vdyBsZXQncyB1c2UgdGhlIHRvb2xzIHRvIHZlcmlmeSBhbmQgYmVnaW4gdGhlIGZ1enppbmcgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDExMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU4OjA3LjU4Nzc3NjE3M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA3MzQ5NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9kZXZfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjM5Ny1cXG5mcy9mdXNlL2Rldi5jOjIzOTg6c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcXG5mcy9mdXNlL2Rldi5jLTIzOTkte1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yNDI2PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjQzMy1cXHQucG9sbFxcdFxcdD0gZnVzZV9kZXZfcG9sbCxcXG5mcy9mdXNlL2Rldi5jOjI0MzQ6XFx0LmZsdXNoXFx0XFx0PSBmdXNlX2Rldl9mbHVzaCxcXG5mcy9mdXNlL2Rldi5jLTI0MzUtXFx0LnJlbGVhc2VcXHQ9IGZ1c2VfZGV2X3JlbGVhc2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU4OjA3LjcyODUxNjQ5OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTUxODg2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXkncmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBpbiBGVVNFIGZvciBkZXZpY2UgbWFuYWdlbWVudCwgcmlnaHQ/IGBmdXNlX2dldF9kZXZgIGlzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgZWl0aGVyIGFsbG9jYXRpbmcgb3IgcmV0cmlldmluZyBhIEZVU0UgZGV2aWNlIHN0cnVjdHVyZSwgYW5kIHByZXN1bWFibHkgaGFuZGxpbmcgc29tZSBzb3J0IG9mIGxvY2tpbmcgb3IgcmVmZXJlbmNlIGNvdW50aW5nIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5IHdoZW4gbXVsdGlwbGUgdXNlcnNwYWNlIHByb2Nlc3NlcyBhY2Nlc3MgdGhlIHNhbWUgZmlsZXN5c3RlbS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRyaWNhY2llcyBvZiBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBrZXJuZWwtbGV2ZWwgZGF0YSBzdHJ1Y3R1cmVzLiBTcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBmaWxlIGRlc2NyaXB0b3IgYW5kIHRoZSBkZXZpY2UsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB3aXRoIG90aGVyIG9wZXJhdGlvbnMgbGlrZSBgZnVzZV9tb3VudGAgb3IgYGZ1c2VfdW5tb3VudGAuIEknbSBnb2luZyB0byBsb29rIGRlZXBlciBhdCBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIGRldmljZSByZXVzZS4gQXJlIHRoZXJlIGNoZWNrcyB0byBlbnN1cmUgdGhlIGRldmljZSBpcyB2YWxpZCwgb3IgZG9lcyB0aGlzIGZ1bmN0aW9uIGRvIGFueSBzb3J0IG9mIGdhcmJhZ2UgY29sbGVjdGlvbiBpZiBhIHByZXZpb3VzIGZpbGVzeXN0ZW0gaW5zdGFuY2Ugd2FzIGltcHJvcGVybHkgdG9ybiBkb3duP1xuXG5UaGVuIHRoZXJlJ3MgYGZ1c2VfZGV2X3JlbGVhc2VgLiBUaGlzIGlzIHRoZSBjb3VudGVycGFydCwgdGhlIG9uZSB0aGF0IGRlYWxzIHdpdGggZGV2aWNlIGNsZWFudXAuIEkgd2FudCB0byBrbm93IGV4YWN0bHkgd2hhdCBpdCBkb2VzLiBEb2VzIGl0IGZyZWUgdGhlIGRldmljZSBzdHJ1Y3R1cmUgZW50aXJlbHksIG9yIG1lcmVseSBkZWNyZW1lbnQgYSByZWZlcmVuY2UgY291bnQ/IEhvdyBkb2VzIGl0IGhhbmRsZSB0aGUgc2l0dWF0aW9uIGlmIHRoZXJlIGFyZSBzdGlsbCBvdXRzdGFuZGluZyBmaWxlIGhhbmRsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2U/IElzIHRoZXJlIHNvbWUgc29ydCBvZiBkZWZlcnJlZCBjbGVhbnVwIG1lY2hhbmlzbT8gQW5kIG1vcmUgaW1wb3J0YW50bHksIGRvZXMgaXQgcmVsaWFibHkgc3luY2hyb25pemUgd2l0aCBhbnkgcGVuZGluZyBJL08gb3BlcmF0aW9ucyBiZWZvcmUgcmVsZWFzaW5nIHRoZSBkZXZpY2U/IEkndmUgc2VlbiBlbm91Z2ggRlVTRSBpbXBsZW1lbnRhdGlvbnMgb3ZlciB0aGUgeWVhcnMgdG8ga25vdyB0aGF0IHRoZXNlIHJlbGVhc2Ugcm91dGluZXMgYXJlIG9mdGVuIHdoZXJlIHN1YnRsZSBidWdzIGx1cmssIHBhcnRpY3VsYXJseSBhcm91bmQgcmVzb3VyY2UgbGVha3MgYW5kIGRhbmdsaW5nIHBvaW50ZXJzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUncyBhbnkgaW50ZXJhY3Rpb24gd2l0aCB0aGUgRlVTRSBrZXJuZWwgbW9kdWxlJ3MgaW50ZXJuYWwgZGV2aWNlIGxpc3Qgb3Igc29tZSBzaW1pbGFyIG1hbmFnZW1lbnQuIExldCdzIHNlZSBob3cgdGhlc2UgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zIHBsYXkgdG9nZXRoZXIgYW5kIHdoYXQgdGhlaXIgaW1wbGljYXRpb25zIGFyZSBmb3IgdGhlIG92ZXJhbGwgc3RhYmlsaXR5IGFuZCByZWxpYWJpbGl0eSBvZiBGVVNFLWJhc2VkIGZpbGVzeXN0ZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTg6MTEuODQzNzA3MTkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDEwODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2VfZ2V0X2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2N1c2UuYz01NTU9c3RhdGljIGludCBjdXNlX2NoYW5uZWxfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2N1c2UuYy01NTYte1xcbmZzL2Z1c2UvY3VzZS5jOjU1NzpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvY3VzZS5jLTU1OC1cXHRzdHJ1Y3QgY3VzZV9jb25uICpjYyA9IGZjX3RvX2NjKGZ1ZC1cXHUwMDNlY2hhbi1cXHUwMDNlY29ubik7XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE2NTE9c3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNjYxLVxcbmZzL2Z1c2UvZGV2LmM6MTY2MjpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Rldi5jLTE2NjMte1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0xNjg1PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNjg4LVxcdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cXHUwMDNla2lfZmlscDtcXG5mcy9mdXNlL2Rldi5jOjE2ODk6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0xNjkwLVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0xNzAyPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNzA5LVxcdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XFxuZnMvZnVzZS9kZXYuYzoxNzEwOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGluKTtcXG5mcy9mdXNlL2Rldi5jLTE3MTEtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE5NzM9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE5NzUtXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE5NzY6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2Rldihpb2NiLVxcdTAwM2VraV9maWxwKTtcXG5mcy9mdXNlL2Rldi5jLTE5NzctXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE5ODk9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3dyaXRlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE5OTctXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE5OTg6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihvdXQpO1xcbmZzL2Z1c2UvZGV2LmMtMTk5OS1cXHRzaXplX3QgcmVtO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMDgxPXN0YXRpYyBfX3BvbGxfdCBmdXNlX2Rldl9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMDg0LVxcdHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxO1xcbmZzL2Z1c2UvZGV2LmM6MjA4NTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIwODYtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIyNzI9c3RhdGljIGludCBmdXNlX2Rldl9mYXN5bmMoaW50IGZkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG9uKVxcbmZzL2Z1c2UvZGV2LmMtMjI3My17XFxuZnMvZnVzZS9kZXYuYzoyMjc0OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjI3NS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjI4Mz1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9jbG9uZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMzAyLVxcbmZzL2Z1c2UvZGV2LmM6MjMwMzpcXHRmdWQgPSBmdXNlX2dldF9kZXYoZmRfZmlsZShmKSk7XFxuZnMvZnVzZS9kZXYuYy0yMzA0LVxcdGlmIChJU19FUlIoZnVkKSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjMxOD1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIzMjAte1xcbmZzL2Z1c2UvZGV2LmM6MjMyMTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzMjItXFx0c3RydWN0IGZ1c2VfYmFja2luZ19tYXAgbWFwO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzM2PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcXG5mcy9mdXNlL2Rldi5jLTIzMzcte1xcbmZzL2Z1c2UvZGV2LmM6MjMzODpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzMzktXFx0aW50IGJhY2tpbmdfaWQ7XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzODg9c3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvZGV2LmMtMjM4OS17XFxuZnMvZnVzZS9kZXYuYzoyMzkwOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMzkxLVxcdGlmICghZnVkKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYz0xMjE3PWludCBmdXNlX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTIzMi1cXG5mcy9mdXNlL2Rldl91cmluZy5jOjEyMzM6XFx0ZnVkID0gZnVzZV9nZXRfZGV2KGNtZC1cXHUwMDNlZmlsZSk7XFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjM0LVxcdGlmIChJU19FUlIoZnVkKSkge1xcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9MzYxPXN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2ZpbGVfdG9fZnVkKHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzY1LVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjM2NjpzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzY3LXtcXG4tLVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oPTM3Nz12b2lkIGZ1c2VfaXF1ZXVlX2luaXQoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEsIGNvbnN0IHN0cnVjdCBmdXNlX2lxdWV1ZV9vcHMgKm9wcywgdm9pZCAqcHJpdik7XFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzc4LVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjM3OTpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzgwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMDo1ODoxMS45MDExMjQ2OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODQxNTQwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk9ic2VydmF0aW9ucyBvbiBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgKipcblxuQWxyaWdodCwgc28gSSdtIHNlZWluZyBhIGxvdCBvZiB1c2FnZSBvZiBgZnVzZV9nZXRfZGV2YCBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIEhtbSwgdGhhdCdzIG5vdCBzdXJwcmlzaW5nLCBnaXZlbiBpdHMgcm9sZSBpbiwgd2VsbCwgZ2V0dGluZyB0aGUgZGV2aWNlLiBJdCdzIHRoZSBjb3JlIG9mIHRoZSB3aG9sZSBkZXZpY2UgbWFuYWdlbWVudCwgc28gaXQgbWFrZXMgc2Vuc2UgaXQncyByZWZlcmVuY2VkIGZyZXF1ZW50bHkuIEknbGwgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIHRoaW5raW5nIGFib3V0IGFueSBwb3RlbnRpYWwgcmVmYWN0b3Jpbmcgb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBpbiB0aGlzIGFyZWEuIEl0J3Mgb2J2aW91c2x5IGEgY3JpdGljYWwgcGF0aC5cblxuQW5kIG5vdyBJJ20gYWxzbyBub3RpY2luZyBtb2RpZmljYXRpb25zIHRvIGBmdXNlX2Rldl9yZWxlYXNlYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhcyB0aGlzIGxpa2VseSBwb2ludHMgdG8gc29tZSBzcGVjaWZpYyBjaGFuZ2UgaW4gaG93IGRldmljZXMgYXJlIGJlaW5nIGZyZWVkIG9yIGhvdyB0aGVpciByZXNvdXJjZXMgYXJlIG1hbmFnZWQgYXQgc2h1dGRvd24uIFNvLCBzb21ldGhpbmcgaXMgbGlrZWx5IHRvdWNoaW5nIHRoZSBkZXZpY2UgbGlmZXRpbWUgbW9yZSBkZWVwbHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBjaGFuZ2VzIGluIGBmdXNlX2Rldl9yZWxlYXNlYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0LiBBcmUgdGhleSBhZGRyZXNzaW5nIGEgcmVzb3VyY2UgbGVhaz8gQXJlIHRoZXkgYWx0ZXJpbmcgaG93IEZVU0UgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcga2VybmVsIGZpbGUgc3lzdGVtPyBJcyBpdCBzb21lIHNvcnQgb2YgZ2FyYmFnZSBjb2xsZWN0aW9uIHN0cmF0ZWd5PyBJIG5lZWQgdG8gYW5hbHl6ZSB0aG9zZSBtb2RpZmljYXRpb25zIGNsb3NlbHkuIEl0J3Mgdml0YWwgSSB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjaGFuZ2VzLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gcmVsZWFzaW5nIGRldmljZXMsIGFmZmVjdCByZWxpYWJpbGl0eSBhbmQgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM4NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU4OjE1LjM4NTI4MDY5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODg2MjQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlX2Rldl9yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvY3VzZS5jPTU1NT1zdGF0aWMgaW50IGN1c2VfY2hhbm5lbF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9jdXNlLmMtNTcyLVxcbmZzL2Z1c2UvY3VzZS5jOjU3MzpcXHRyZXR1cm4gZnVzZV9kZXZfcmVsZWFzZShpbm9kZSwgZmlsZSk7XFxuZnMvZnVzZS9jdXNlLmMtNTc0LX1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9NDU4PXN0YXRpYyBib29sIGZ1c2VfZGV2X2luc3RhbGxfd2l0aF9wcShzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCwgc3RydWN0IGZ1c2VfY2hhbiAqZmNoLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy00NjUtXFx0ICogUGFpcnMgd2l0aDpcXG5mcy9mdXNlL2Rldi5jOjQ2NjpcXHQgKiAgLSB4Y2hnKCkgaW4gZnVzZV9kZXZfcmVsZWFzZSgpXFxuZnMvZnVzZS9kZXYuYy00NjctXFx0ICogIC0gc21wX2xvYWRfYWNxdWlyZSgpIGluIGZ1c2VfZGV2X2ZjX2dldCgpXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTUxND12b2lkIGZ1c2VfZGV2X3B1dChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtNTIyLVxcdGlmIChmY2ggXFx1MDAyNlxcdTAwMjYgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7XFxuZnMvZnVzZS9kZXYuYzo1MjM6XFx0XFx0LyogVGhpcyBpcyB0aGUgdmlydGlvZnMgY2FzZSAoZnVzZV9kZXZfcmVsZWFzZSgpIG5vdCBjYWxsZWQpICovXFxuZnMvZnVzZS9kZXYuYy01MjQtXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMjE5PXN0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjIzMS1cXG5mcy9mdXNlL2Rldi5jOjIyMzI6aW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZnMvZnVzZS9kZXYuYy0yMjMzLXtcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjI2OS19XFxuZnMvZnVzZS9kZXYuYzoyMjcwOkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfZGV2X3JlbGVhc2UpO1xcbmZzL2Z1c2UvZGV2LmMtMjI3MS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjQyNj1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9mdXNlL2Rldi5jLTI0MzQtXFx0LmZsdXNoXFx0XFx0PSBmdXNlX2Rldl9mbHVzaCxcXG5mcy9mdXNlL2Rldi5jOjI0MzU6XFx0LnJlbGVhc2VcXHQ9IGZ1c2VfZGV2X3JlbGVhc2UsXFxuZnMvZnVzZS9kZXYuYy0yNDM2LVxcdC5mYXN5bmNcXHRcXHQ9IGZ1c2VfZGV2X2Zhc3luYyxcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM9NDkwPXZvaWQgZnVzZV91cmluZ19zdG9wX3F1ZXVlcyhzdHJ1Y3QgZnVzZV9yaW5nICpyaW5nKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy01MDgtICpcXG5mcy9mdXNlL2Rldl91cmluZy5jOjUwOTogKiBSZWxlYXNpbmcgdGhlIGxhc3QgZW50cnkgc2hvdWxkIHRyaWdnZXIgZnVzZV9kZXZfcmVsZWFzZSgpIGlmXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy01MTAtICogdGhlIGRhZW1vbiB3YXMgdGVybWluYXRlZFxcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9NDE3PXN0cnVjdCBmdXNlX2RldiAqZnVzZV9kZXZfYWxsb2Modm9pZCk7XFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtNDE4LVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjQxOTppbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtNDIwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMDo1ODoxNS40NDQxNDgwOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI5MjE1MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IEN1cnJlbnQgRm9jdXMqKlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHRoZXNlIHN5bWJvbHM6IGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXkgc2VlbSBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGRlYnVnZ2luZyBvciBkZWVwIGRpdmluZyBpbnRvIHRoZSBGVVNFIGtlcm5lbCBpbnRlcmFjdGlvbiwgbGlrZWx5IHJlbGF0ZWQgdG8gZGV2aWNlIG1hbmFnZW1lbnQsIGFjcXVpc2l0aW9uLCBhbmQgcmVsZWFzZSB3aXRoaW4gdGhlIEZVU0UgZnJhbWV3b3JrLiBJJ20gZ29pbmcgdG8gYm9va21hcmsgdGhvc2UgZnVuY3Rpb25zLiBBbHNvLCBteSBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBzaG91bGQgYmUgYEZVU0VfRlNgLiBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMDo1ODoxOC4zNzMzNjUzMjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjQ1NzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGVVNFX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXFxuZnMvZnVzZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMDo1ODoxOC40MjkwMTY5MTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyMTU3NDk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkndmUgZ290IG15IGluaXRpYWwgY29uZmlndXJhdGlvbiBzZXQsIGJ1dCBJIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBjaGVjayBmb3IgYW55IG92ZXJsb29rZWQgb3Igc2Vjb25kYXJ5IGNvbmZpZ3VyYXRpb25zLCBleHRlcm5hbCBzb3VyY2VzLCBvciBvdmVycmlkZXMgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGUgY3VycmVudCBiZWhhdmlvci4gSSdtIHRoaW5raW5nLCBcIklzIHRoZXJlIGFub3RoZXIgY29uZmlnIGZpbGUsIGEgZGlmZmVyZW50IGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBzb21lIGF1dG9tYXRlZCBwcm9jZXNzIEkndmUgZm9yZ290dGVuIGFib3V0IHRoYXQgY291bGQgYmUgYWZmZWN0aW5nIHRoZXNlIHNldHRpbmdzP1wiIEl0J3MgYSBmdW5kYW1lbnRhbCBzYW5pdHkgY2hlY2s6IGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgdGhlIG9ubHkgb25lIGluIHBsYXkuIEkgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNoYXNpbmcgZ2hvc3RzLiBMZXQncyBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzdXJwcmlzZSBwYXJhbWV0ZXJzIG9yIGNvbmZsaWN0aW5nIHNldHRpbmdzIGJlZm9yZSBJIGdldCBpbnRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzkwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTg6MjIuMDUwNTkzODMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM1NTI3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWc9MjI9Y29uZmlnIENVU0VcXG5mcy9mdXNlL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIkNoYXJhY3RlciBkZXZpY2UgaW4gVXNlcnNwYWNlIHN1cHBvcnRcXFwiXFxuZnMvZnVzZS9LY29uZmlnOjI0OlxcdGRlcGVuZHMgb24gRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5mcy9mdXNlL0tjb25maWc9MzI9Y29uZmlnIFZJUlRJT19GU1xcbmZzL2Z1c2UvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIEZpbGVzeXN0ZW1cXFwiXFxuZnMvZnVzZS9LY29uZmlnOjM0OlxcdGRlcGVuZHMgb24gRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy0zNS1cXHRzZWxlY3QgVklSVElPXFxuLS1cXG5mcy9mdXNlL0tjb25maWc9NDM9Y29uZmlnIEZVU0VfREFYXFxuLS1cXG5mcy9mdXNlL0tjb25maWctNDYtXFx0c2VsZWN0IElOVEVSVkFMX1RSRUVcXG5mcy9mdXNlL0tjb25maWc6NDc6XFx0ZGVwZW5kcyBvbiBWSVJUSU9fRlNcXG5mcy9mdXNlL0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBGU19EQVhcXG5mcy9mdXNlL0tjb25maWc6NDk6XFx0ZGVwZW5kcyBvbiBEQVhcXG5mcy9mdXNlL0tjb25maWctNTAtXFx0aGVscFxcbi0tXFxuZnMvZnVzZS9LY29uZmlnPTU3PWNvbmZpZyBGVVNFX1BBU1NUSFJPVUdIXFxuLS1cXG5mcy9mdXNlL0tjb25maWctNTktXFx0ZGVmYXVsdCB5XFxuZnMvZnVzZS9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy02MS1cXHRzZWxlY3QgRlNfU1RBQ0tcXG4tLVxcbmZzL2Z1c2UvS2NvbmZpZz02OD1jb25maWcgRlVTRV9JT19VUklOR1xcbi0tXFxuZnMvZnVzZS9LY29uZmlnLTcwLVxcdGRlZmF1bHQgeVxcbmZzL2Z1c2UvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIEZVU0VfRlNcXG5mcy9mdXNlL0tjb25maWc6NzI6XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbmZzL2Z1c2UvS2NvbmZpZy03My1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU4OjIyLjEwNTk1NDU3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzMwODE5OTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBGVVNFIERldmljZSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgcGlucG9pbnRlZCB0aGUgcGF0Y2gncyBsb2NhdGlvbjogaXQncyBuZXN0bGVkIHdpdGhpbiBgZnMvZnVzZS9kZXYuY2AuIFRoaXMgdGVsbHMgbWUgaW1tZWRpYXRlbHkgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYEZVU0VfRlNgLiBObyBuZWVkIHRvIGdvIGh1bnRpbmcgdGhyb3VnaCBvdGhlciBtb2R1bGVzOyB0aGlzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIE15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIHN5bWJvbHMgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaCwgc28gdGhleSBhcmUgdGhlIGxpa2VseSBlbnRyeXBvaW50cyBmb3IgZnV6emluZy5cblxuTXkgcmVhc29uaW5nPyBJdCdzIGltcGFjdGluZyBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBjbG9zZWQgYW5kIGhvdyB0aGUgYXNzb2NpYXRlZCBjaGFubmVscyBhcmUgYWJvcnRlZCB3aGVuIGV2ZXJ5dGhpbmcgc2h1dHMgZG93bi4gVGhpcyBjbGVhcmx5IHRvdWNoZXMgdXBvbiBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsIGJlaGF2aW9yIGFuZCBlcnJvciBoYW5kbGluZy4gVGhpcyB0eXBlIG9mIGNoYW5nZSBpcyBwcmFjdGljYWxseSBzY3JlYW1pbmcgZm9yIGZ1enppbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MgYW5kIHVuY292ZXIgYW55IGVkZ2UgY2FzZXMgaW4gdGhlIGRldmljZSdzIGxpZmVjeWNsZS4gSXQncyBub3QgYSB0cml2aWFsIGNvc21ldGljIGNoYW5nZTsgaXQncyBhIG1vZGlmaWNhdGlvbiB0byBob3cgdGhlIHN5c3RlbSAqd29ya3MqLCBhbmQgdGhlcmVmb3JlIHdhcnJhbnRzIHJpZ29yb3VzIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MjEsIk91dHB1dFRva2VucyI6OTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTg6MjYuNDM2Nzc3MDM1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYzNjAwMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2dldF9kZXZcIixcbiAgICBcImZ1c2VfZGV2X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyBGVVNFIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBjaGFubmVsIGlzIGFib3J0ZWQgd2hlbiBhbGwgZGV2aWNlcyBhcmUgY2xvc2luZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IEZVU0UgZGV2aWNlcyBhcmUgY2xvc2VkIGFuZCBob3cgdGhlIGNoYW5uZWwgaXMgYWJvcnRlZCB3aGVuIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 20:42:50 +0000 UTC FinishedAt: 2026-07-24 20:58:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cdeaa50eae8dad34885515f62559ee83e7e8dda", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FUSE_FS" ], "series_id": "918eeded-5399-4261-9af3-70fb1fcc369c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "fuse_get_dev", "fuse_dev_release" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "0c2890de-1b7a-4718-a188-a597ff4d74a7" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyBGVVNFIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBjaGFubmVsIGlzIGFib3J0ZWQgd2hlbiBhbGwgZGV2aWNlcyBhcmUgY2xvc2luZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjA6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZTgxY2E0ZjI5YzFlZjJkOGFiZGEyM2ZiYTAyOTdiYWExMzEyZjJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMjQgMjA6NTc6NTggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9kZXYuYyBiL2ZzL2Z1c2UvZGV2LmNcbmluZGV4IDU3NjNhN2NkM2IzN2ZhLi44YjE0YzdkNTdhMDExOSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZGV2LmNcbkBAIC0xNjYyLDE4ICYjNDM7MTY2MiwyMyBAQCBzdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuJiM0MztcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkge1xuJiM0MztcdGlmICh1bmxpa2VseSghZmNoKSkge1xuIFx0XHQvKiBvbmx5IGJsb2NrIHdhaXRpbmcgZm9yIG1vdW50IGlmIHN5bmMgaW5pdCB3YXMgcmVxdWVzdGVkICovXG4gXHRcdGlmICghZnVkLVx1MDAzZXN5bmNfaW5pdClcbiBcdFx0XHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xuIFxuLVx0XHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsIGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkgIT0gTlVMTCk7XG4mIzQzO1x0XHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKHVubGlrZWx5KGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xuJiM0MztcbiBcdHJldHVybiBmdWQ7XG4gfVxuIFxuQEAgLTIyMTEsMTcgJiM0MzsyMjE2LDMxIEBAIHZvaWQgZnVzZV9jaGFuX3dhaXRfYWJvcnRlZChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4gXHRmdXNlX3VyaW5nX3dhaXRfc3RvcHBlZF9xdWV1ZXMoZmNoKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmdXNlX2RldiAqcG9zO1xuJiM0MztcbiYjNDM7XHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIFx1MDAyNmZjaC1cdTAwM2VkZXZpY2VzLCBlbnRyeSkge1xuJiM0MztcdFx0aWYgKCFwb3MtXHUwMDNlY2xvc2luZylcbiYjNDM7XHRcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4gXHQvKiBQYWlycyB3aXRoIGNtcHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbiBcbi1cdGlmIChmY2gpIHtcbiYjNDM7XHRpZiAoZmNoIFx1MDAyNlx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcbiBcdFx0c3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSBcdTAwMjZmdWQtXHUwMDNlcHE7XG4gXHRcdExJU1RfSEVBRCh0b19lbmQpO1xuIFx0XHR1bnNpZ25lZCBpbnQgaTtcbiBcdFx0Ym9vbCBsYXN0O1xuJiM0MztcdFx0Ym9vbCBhYm9ydDtcbiBcbiBcdFx0LyogTWFrZSBzdXJlIGZ1c2VfZGV2X2luc3RhbGxfd2l0aF9wcSgpIGhhcyBmaW5pc2hlZCAqL1xuIFx0XHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuQEAgLTIyMzQsMTQgJiM0MzsyMjUzLDE1IEBAIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRsaXN0X2RlbChcdTAwMjZmdWQtXHUwMDNlZW50cnkpO1xuIFx0XHQvKiBBcmUgd2UgdGhlIGxhc3Qgb3BlbiBkZXZpY2U/ICovXG4gXHRcdGxhc3QgPSBsaXN0X2VtcHR5KFx1MDAyNmZjaC1cdTAwM2VkZXZpY2VzKTtcbiYjNDM7XHRcdGFib3J0ID0gZmNoLVx1MDAzZWNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuIFxuIFx0XHRmdXNlX2Rldl9lbmRfcmVxdWVzdHMoXHUwMDI2dG9fZW5kKTtcbiBcbi1cdFx0aWYgKGxhc3QpIHtcbiYjNDM7XHRcdGlmIChsYXN0KVxuIFx0XHRcdFdBUk5fT04oZmNoLVx1MDAzZWlxLmZhc3luYyAhPSBOVUxMKTtcbiYjNDM7XHRcdGlmIChhYm9ydClcbiBcdFx0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4tXHRcdH1cbiBcdFx0ZnVzZV9jb25uX3B1dChmY2gtXHUwMDNlY29ubik7XG4gXHR9XG4gXHRmdXNlX2Rldl9wdXQoZnVkKTtcbkBAIC0yMzc1LDYgJiM0MzsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB9XG4gI2VuZGlmXG4gXG4mIzQzO3N0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4mIzQzO1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoO1xuJiM0MztcdGJvb2wgYWJvcnQ7XG4mIzQzO1xuJiM0MztcdGlmIChmaWxlX2NvdW50KGZpbGUpICE9IDEpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBBdG9taWNhbGx5IHRyYW5zaXRpb24gZnVkLVx1MDAzZWNoYW4gZnJvbSBOVUxMIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4mIzQzO1x0ICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuXG4mIzQzO1x0ICovXG4mIzQzO1x0ZmNoID0gY21weGNoZyhcdTAwMjZmdWQtXHUwMDNlY2hhbiwgTlVMTCwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xuJiM0MztcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuJiM0MztcdGZ1ZC1cdTAwM2VjbG9zaW5nID0gdHJ1ZTtcbiYjNDM7XHRhYm9ydCA9IGZjaC1cdTAwM2Vjb25uZWN0ZWQgXHUwMDI2XHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XG4mIzQzO1x0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAoYWJvcnQpXG4mIzQzO1x0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcbiBcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuIFx0Lm9wZW5cdFx0PSBmdXNlX2Rldl9vcGVuLFxuQEAgLTIzODMsNiAmIzQzOzI0MzEsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4gXHQud3JpdGVfaXRlclx0PSBmdXNlX2Rldl93cml0ZSxcbiBcdC5zcGxpY2Vfd3JpdGVcdD0gZnVzZV9kZXZfc3BsaWNlX3dyaXRlLFxuIFx0LnBvbGxcdFx0PSBmdXNlX2Rldl9wb2xsLFxuJiM0MztcdC5mbHVzaFx0XHQ9IGZ1c2VfZGV2X2ZsdXNoLFxuIFx0LnJlbGVhc2VcdD0gZnVzZV9kZXZfcmVsZWFzZSxcbiBcdC5mYXN5bmNcdFx0PSBmdXNlX2Rldl9mYXN5bmMsXG4gXHQudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG5pbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbkBAIC0zMDIsNiAmIzQzOzMwMiw5IEBAIHN0cnVjdCBmdXNlX2RldiB7XG4gXHQvKiogQHN5bmNfaW5pdDogSXNzdWUgRlVTRV9JTklUIHN5bmNocm9ub3VzbHkgKi9cbiBcdGJvb2wgc3luY19pbml0O1xuIFxuJiM0MztcdC8qKiBAY2xvc2luZzogRmluYWwgY2xvc2UgaGFzIHN0YXJ0ZWQsIHByb3RlY3RlZCBieSBjaGFuLVx1MDAzZWxvY2sgKi9cbiYjNDM7XHRib29sIGNsb3Npbmc7XG4mIzQzO1xuIFx0LyoqIEBjaGFuOiBGdXNlIGNoYW5uZWwgZm9yIHRoaXMgZGV2aWNlICovXG4gXHRzdHJ1Y3QgZnVzZV9jaGFuICpjaGFuO1xuIFxuQEAgLTMzMCwxNyAmIzQzOzMzMywyNSBAQCBzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIHtcbiBcdH0gcmluZztcbiB9O1xuIFxuLS8qIGZ1ZC1cdTAwM2VjaGFuIGdldHMgYXNzaWduZWQgdG8gdGhpcyB2YWx1ZSB3aGVuIC9kZXYvZnVzZSBpcyBjbG9zZWQgKi9cbi0jZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxuLVxuIC8qXG4tICogTG9ja2xlc3MgYWNjZXNzIGlzIE9LLCBiZWNhdXNlIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCBvbmNlIGR1cmluZyBtb3VudCBhbmQgaXMgdmFsaWRcbi0gKiB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC5cbiYjNDM7ICogZnVkLVx1MDAzZWNoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOlxuJiM0MzsgKlxuJiM0MzsgKiBOVUxMIC1cdTAwM2UgdmFsaWQgY2hhbm5lbCAtXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4mIzQzOyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS1cdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiAgKlxuLSAqIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXNcbi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOlxuLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuXG4mIzQzOyAqIEEgdmFsaWQgY2hhbm5lbCBwb2ludGVyIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuIEZpbmFsXG4mIzQzOyAqIGZsdXNoIGNhbiBpbnN0YWxsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGRpcmVjdGx5IGZvciBhbiB1bmluc3RhbGxlZFxuJiM0MzsgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlXG4mIzQzOyAqIG1lYW5zIHRoYXQgdGhlIGNoYW5uZWwgY2FuIG5vIGxvbmdlciBiZSBpbnN0YWxsZWQgb3IgYWNjZXNzZWQgdGhyb3VnaCB0aGlzXG4mIzQzOyAqIGZpbGU7IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgcmVsZWFzZSBoYXMgYWxyZWFkeSBydW4gYW5kIGl0IG11c3QgbmV2ZXIgYmVcbiYjNDM7ICogZGVyZWZlcmVuY2VkLlxuJiM0MzsgKlxuJiM0MzsgKiBmdXNlX2Rldl9jaGFuX2dldCgpIHJlYWRzIHRoaXMgc3RhdGUgbG9ja2xlc3NseS4gQ2FsbGVycyBtdXN0IGRpc3Rpbmd1aXNoXG4mIzQzOyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlXG4mIzQzOyAqIGRlcmVmZXJlbmNpbmcgdGhlIHJlc3VsdC5cbiAgKi9cbiYjNDM7I2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbiYjNDM7XG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcbiB7XG4gXHQvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbkBAIC0zNTUsOCAmIzQzOzM2Niw5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2ZpbGVfdG9fZnVkKHN0cnVjdCBmaWxlICpmaWxlKVxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4mIzQzO1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcbiBcbi1cdGlmICghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSlcbiYjNDM7XHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGZ1ZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RlVTRV9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IEZVU0UgZGV2aWNlcyBhcmUgY2xvc2VkIGFuZCBob3cgdGhlIGNoYW5uZWwgaXMgYWJvcnRlZCB3aGVuIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVlODFjYTRmMjljMWVmMmQ4YWJkYTIzZmJhMDI5N2JhYTEzMTJmMmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAyMDo1Nzo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jCmluZGV4IDU3NjNhN2NkM2IzN2ZhLi44YjE0YzdkNTdhMDExOSAxMDA2NDQKLS0tIGEvZnMvZnVzZS9kZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Rldi5jCkBAIC0xNjYyLDE4ICYjNDM7MTY2MiwyMyBAQCBzdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7CiYjNDM7CXN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7CiAJaW50IGVycjsKIAotCWlmICh1bmxpa2VseSghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkpIHsKJiM0MzsJaWYgKHVubGlrZWx5KCFmY2gpKSB7CiAJCS8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi8KIAkJaWYgKCFmdWQtJmd0O3N5bmNfaW5pdCkKIAkJCXJldHVybiBFUlJfUFRSKC1FUEVSTSk7CiAKLQkJZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLCBmdXNlX2Rldl9jaGFuX2dldChmdWQpICE9IE5VTEwpOwomIzQzOwkJZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLAomIzQzOwkJCQkJICAgICAgIChmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpKSAhPSBOVUxMKTsKIAkJaWYgKGVycikKIAkJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCiYjNDM7CWlmICh1bmxpa2VseShmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVQRVJNKTsKJiM0MzsKIAlyZXR1cm4gZnVkOwogfQogCkBAIC0yMjExLDE3ICYjNDM7MjIxNiwzMSBAQCB2b2lkIGZ1c2VfY2hhbl93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKQogCWZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpOwogfQogCiYjNDM7c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKQomIzQzO3sKJiM0MzsJc3RydWN0IGZ1c2VfZGV2ICpwb3M7CiYjNDM7CiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtmY2gtJmd0O2xvY2spOwomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJmFtcDtmY2gtJmd0O2RldmljZXMsIGVudHJ5KSB7CiYjNDM7CQlpZiAoIXBvcy0mZ3Q7Y2xvc2luZykKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpOwogCS8qIFBhaXJzIHdpdGggY21weGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqLwogCXN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IHhjaGcoJmFtcDtmdWQtJmd0O2NoYW4sIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTsKIAotCWlmIChmY2gpIHsKJiM0MzsJaWYgKGZjaCAmYW1wOyZhbXA7IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkgewogCQlzdHJ1Y3QgZnVzZV9wcXVldWUgKmZwcSA9ICZhbXA7ZnVkLSZndDtwcTsKIAkJTElTVF9IRUFEKHRvX2VuZCk7CiAJCXVuc2lnbmVkIGludCBpOwogCQlib29sIGxhc3Q7CiYjNDM7CQlib29sIGFib3J0OwogCiAJCS8qIE1ha2Ugc3VyZSBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoKSBoYXMgZmluaXNoZWQgKi8KIAkJc3Bpbl9sb2NrKCZhbXA7ZmNoLSZndDtsb2NrKTsKQEAgLTIyMzQsMTQgJiM0MzsyMjUzLDE1IEBAIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogCQlsaXN0X2RlbCgmYW1wO2Z1ZC0mZ3Q7ZW50cnkpOwogCQkvKiBBcmUgd2UgdGhlIGxhc3Qgb3BlbiBkZXZpY2U/ICovCiAJCWxhc3QgPSBsaXN0X2VtcHR5KCZhbXA7ZmNoLSZndDtkZXZpY2VzKTsKJiM0MzsJCWFib3J0ID0gZmNoLSZndDtjb25uZWN0ZWQgJmFtcDsmYW1wOyBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpOwogCQlzcGluX3VubG9jaygmYW1wO2ZjaC0mZ3Q7bG9jayk7CiAKIAkJZnVzZV9kZXZfZW5kX3JlcXVlc3RzKCZhbXA7dG9fZW5kKTsKIAotCQlpZiAobGFzdCkgewomIzQzOwkJaWYgKGxhc3QpCiAJCQlXQVJOX09OKGZjaC0mZ3Q7aXEuZmFzeW5jICE9IE5VTEwpOwomIzQzOwkJaWYgKGFib3J0KQogCQkJZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpOwotCQl9CiAJCWZ1c2VfY29ubl9wdXQoZmNoLSZndDtjb25uKTsKIAl9CiAJZnVzZV9kZXZfcHV0KGZ1ZCk7CkBAIC0yMzc1LDYgJiM0MzsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIH0KICNlbmRpZgogCiYjNDM7c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTsKJiM0MzsJc3RydWN0IGZ1c2VfY2hhbiAqZmNoOwomIzQzOwlib29sIGFib3J0OwomIzQzOwomIzQzOwlpZiAoZmlsZV9jb3VudChmaWxlKSAhPSAxKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIEF0b21pY2FsbHkgdHJhbnNpdGlvbiBmdWQtJmd0O2NoYW4gZnJvbSBOVUxMIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVECiYjNDM7CSAqIG9uIGZpbmFsIGNsb3NlIHRvIHByZXZlbnQgYSBsYXRlciBmdXNlX2Rldl9pbnN0YWxsKCkgZnJvbSBzdWNjZWVkaW5nLgomIzQzOwkgKi8KJiM0MzsJZmNoID0gY21weGNoZygmYW1wO2Z1ZC0mZ3Q7Y2hhbiwgTlVMTCwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpOwomIzQzOwlpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrKCZhbXA7ZmNoLSZndDtsb2NrKTsKJiM0MzsJZnVkLSZndDtjbG9zaW5nID0gdHJ1ZTsKJiM0MzsJYWJvcnQgPSBmY2gtJmd0O2Nvbm5lY3RlZCAmYW1wOyZhbXA7IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7CiYjNDM7CXNwaW5fdW5sb2NrKCZhbXA7ZmNoLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJaWYgKGFib3J0KQomIzQzOwkJZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CiYjNDM7CiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7CiAJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCS5vcGVuCQk9IGZ1c2VfZGV2X29wZW4sCkBAIC0yMzgzLDYgJiM0MzsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0gewogCS53cml0ZV9pdGVyCT0gZnVzZV9kZXZfd3JpdGUsCiAJLnNwbGljZV93cml0ZQk9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSwKIAkucG9sbAkJPSBmdXNlX2Rldl9wb2xsLAomIzQzOwkuZmx1c2gJCT0gZnVzZV9kZXZfZmx1c2gsCiAJLnJlbGVhc2UJPSBmdXNlX2Rldl9yZWxlYXNlLAogCS5mYXN5bmMJCT0gZnVzZV9kZXZfZmFzeW5jLAogCS51bmxvY2tlZF9pb2N0bCA9IGZ1c2VfZGV2X2lvY3RsLApkaWZmIC0tZ2l0IGEvZnMvZnVzZS9mdXNlX2Rldl9pLmggYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaAppbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oCkBAIC0zMDIsNiAmIzQzOzMwMiw5IEBAIHN0cnVjdCBmdXNlX2RldiB7CiAJLyoqIEBzeW5jX2luaXQ6IElzc3VlIEZVU0VfSU5JVCBzeW5jaHJvbm91c2x5ICovCiAJYm9vbCBzeW5jX2luaXQ7CiAKJiM0MzsJLyoqIEBjbG9zaW5nOiBGaW5hbCBjbG9zZSBoYXMgc3RhcnRlZCwgcHJvdGVjdGVkIGJ5IGNoYW4tJmd0O2xvY2sgKi8KJiM0MzsJYm9vbCBjbG9zaW5nOwomIzQzOwogCS8qKiBAY2hhbjogRnVzZSBjaGFubmVsIGZvciB0aGlzIGRldmljZSAqLwogCXN0cnVjdCBmdXNlX2NoYW4gKmNoYW47CiAKQEAgLTMzMCwxNyAmIzQzOzMzMywyNSBAQCBzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIHsKIAl9IHJpbmc7CiB9OwogCi0vKiBmdWQtJmd0O2NoYW4gZ2V0cyBhc3NpZ25lZCB0byB0aGlzIHZhbHVlIHdoZW4gL2Rldi9mdXNlIGlzIGNsb3NlZCAqLwotI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSkKLQogLyoKLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtJmd0O2NoYW4gaXMgc2V0IG9uY2UgZHVyaW5nIG1vdW50IGFuZCBpcyB2YWxpZAotICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuCiYjNDM7ICogZnVkLSZndDtjaGFuIGhhcyB0aGUgZm9sbG93aW5nIG1vbm90b25pYyBzdGF0ZSB0cmFuc2l0aW9uczoKJiM0MzsgKgomIzQzOyAqIE5VTEwgLSZndDsgdmFsaWQgY2hhbm5lbCAtJmd0OyBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRAomIzQzOyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS0mZ3Q7IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVECiAgKgotICogZnVkLSZndDtjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXMKLSAqIHJlbGVhc2VkLCBzbyByZXN1bHQgaXMgc2FmZSB0byBkZXJlZmVyZW5jZSBpbiBtb3N0IGNhc2VzLiAgRXhjZXB0aW9ucyBhcmU6Ci0gKiBmdXNlX2Rldl9wdXQoKSBhbmQgZnVzZV9maWxsX3N1cGVyX2NvbW1vbigpLgomIzQzOyAqIEEgdmFsaWQgY2hhbm5lbCBwb2ludGVyIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuIEZpbmFsCiYjNDM7ICogZmx1c2ggY2FuIGluc3RhbGwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgZGlyZWN0bHkgZm9yIGFuIHVuaW5zdGFsbGVkCiYjNDM7ICogZGV2aWNlLCBwcmV2ZW50aW5nIGFueSBsYXRlciBjaGFubmVsIGluc3RhbGxhdGlvbi4gVGhlIHNlbnRpbmVsIHRoZXJlZm9yZQomIzQzOyAqIG1lYW5zIHRoYXQgdGhlIGNoYW5uZWwgY2FuIG5vIGxvbmdlciBiZSBpbnN0YWxsZWQgb3IgYWNjZXNzZWQgdGhyb3VnaCB0aGlzCiYjNDM7ICogZmlsZTsgaXQgZG9lcyBub3QgaW1wbHkgdGhhdCByZWxlYXNlIGhhcyBhbHJlYWR5IHJ1biBhbmQgaXQgbXVzdCBuZXZlciBiZQomIzQzOyAqIGRlcmVmZXJlbmNlZC4KJiM0MzsgKgomIzQzOyAqIGZ1c2VfZGV2X2NoYW5fZ2V0KCkgcmVhZHMgdGhpcyBzdGF0ZSBsb2NrbGVzc2x5LiBDYWxsZXJzIG11c3QgZGlzdGluZ3Vpc2gKJiM0MzsgKiBOVUxMLCBhIHZhbGlkIGNoYW5uZWwgcG9pbnRlciwgYW5kIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGJlZm9yZQomIzQzOyAqIGRlcmVmZXJlbmNpbmcgdGhlIHJlc3VsdC4KICAqLwomIzQzOyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpCiYjNDM7CiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2NoYW4gKmZ1c2VfZGV2X2NoYW5fZ2V0KHN0cnVjdCBmdXNlX2RldiAqZnVkKQogewogCS8qIFBhaXJzIHdpdGggeGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqLwpAQCAtMzU1LDggJiM0MzszNjYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9maWxlX3RvX2Z1ZChzdHJ1Y3QgZmlsZSAqZmlsZSkKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7CiYjNDM7CXN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7CiAKLQlpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpCiYjNDM7CWlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkKIAkJcmV0dXJuIE5VTEw7CiAKIAlyZXR1cm4gZnVkOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTExCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEV2YWx1YXRpb24gZm9yIEZVU0UgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHdvcnRoIG15IHRpbWUgdG8gZnV6ej8mIzM0OyBMb29raW5nIGF0IHRoZSBmaWxlIG1vZGlmaWNhdGlvbnMsIGl0JiMzOTtzIGhpdHRpbmcgYGZzL2Z1c2UvZGV2LmNgIGFuZCBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBhcyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nLiAgVGhlIGludHJvZHVjdGlvbiBvZiBgZnVzZV9kZXZfZmx1c2hgIGludG8gdGhlIGBmdXNlX2Rldl9vcGVyYXRpb25zYCBzdHJ1Y3QgaXMgYSBnb29kIHNpZ247IG5ldyBmdW5jdGlvbmFsaXR5IG9mdGVuIG1lYW5zIG5ldyBjb2RlIHBhdGhzLiAgUGx1cyB0aGUgY2hhbmdlcyB0byBgZnVzZV9nZXRfZGV2YCwgYF9fZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgdGhlIG1lbnRpb24gb2YgYEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEYCBhbmQgYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYCBhbGwgcG9pbnQgdG8gbW9kaWZpY2F0aW9ucyByZWxhdGVkIHRvIGRldmljZSBjbG9zdXJlIGFuZCBjaGFubmVsIGhhbmRsaW5nLCBhbmQgdGhhdCYjMzk7cyB1c3VhbGx5IHJpcGUgZm9yIGZpbmRpbmcgc3VidGxlIGJ1Z3MuICBTbywgeWVzLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBsb29rcyBsaWtlIGEgd29ydGh3aGlsZSB0YXJnZXQuCgpOb3csIGxldCYjMzk7cyBpZGVudGlmeSB0aGUga2V5IGZvY3VzIHN5bWJvbHMuICBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIGNlbnRyYWwgdG8gdGhlIG5ldyBsb2dpYy4gVGhlIHBhdGNoIG1lbnRpb25zIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGFuZCB0aGUgbmV3IGBmdXNlX2Rldl9mbHVzaGAsIGFuZCBgZnVzZV9kZXZfYWxsX2Nsb3NpbmdgIGZ1bmN0aW9ucy4gYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYCBiZWluZyBzdGF0aWMgaXNuJiMzOTt0IGlkZWFsIGFzIGEgZGlyZWN0IGZvY3VzLCBzbyBJJiMzOTtsbCBwcm9iYWJseSBsb29rIGF0IHdoYXQgY2FsbHMgaXQgYW5kIG1ha2UgbXkgZGV0ZXJtaW5hdGlvbiBmcm9tIHRoYXQuIEJ1dCBgZnVzZV9kZXZfZmx1c2hgIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgKmlmKiBpdCYjMzk7cyBhY3R1YWxseSBnZXR0aW5nIGNhbGxlZCB2aWEgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYGZ1c2VfZGV2X29wZXJhdGlvbnNgLiBCZWNhdXNlIGl0JiMzOTtzIGJlaW5nIGFzc2lnbmVkIHRvIGEgZmlsZSBvcGVyYXRpb24gYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBJIHRoaW5rIEkgY2FuIHVzZSBpdC4gQnV0LCBJIGFtIGdvaW5nIHRvIGZvY3VzIG9uIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIEkmIzM5O2xsIGhhdmUgdG8gc2VlIGlmIHRoZXkgYXJlIGlubGluZWQuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIEtjb25maWcgaXMgZW5hYmxlZC4gSSBrbm93IGl0JiMzOTtzIENPTkZJR19GVVNFX0ZTLgoKT2theSwgbm93IGxldCYjMzk7cyB1c2UgdGhlIHRvb2xzIHRvIHZlcmlmeSBhbmQgYmVnaW4gdGhlIGZ1enppbmcgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmM9MjM4OD1zdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzk3LVxuZnMvZnVzZS9kZXYuYzoyMzk4OnN0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpXG5mcy9mdXNlL2Rldi5jLTIzOTkte1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjQyNj1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvZnVzZS9kZXYuYy0yNDMzLVx0LnBvbGxcdFx0PSBmdXNlX2Rldl9wb2xsLFxuZnMvZnVzZS9kZXYuYzoyNDM0Olx0LmZsdXNoXHRcdD0gZnVzZV9kZXZfZmx1c2gsXG5mcy9mdXNlL2Rldi5jLTI0MzUtXHQucmVsZWFzZVx0PSBmdXNlX2Rldl9yZWxlYXNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNjIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXkmIzM5O3JlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgaW4gRlVTRSBmb3IgZGV2aWNlIG1hbmFnZW1lbnQsIHJpZ2h0PyBgZnVzZV9nZXRfZGV2YCBpcyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGVpdGhlciBhbGxvY2F0aW5nIG9yIHJldHJpZXZpbmcgYSBGVVNFIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCBwcmVzdW1hYmx5IGhhbmRsaW5nIHNvbWUgc29ydCBvZiBsb2NraW5nIG9yIHJlZmVyZW5jZSBjb3VudGluZyB0byBlbnN1cmUgdGhyZWFkIHNhZmV0eSB3aGVuIG11bHRpcGxlIHVzZXJzcGFjZSBwcm9jZXNzZXMgYWNjZXNzIHRoZSBzYW1lIGZpbGVzeXN0ZW0uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50cmljYWNpZXMgb2YgaG93IHRoaXMgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcga2VybmVsLWxldmVsIGRhdGEgc3RydWN0dXJlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGludGVyZXN0ZWQgaW4gaG93IGl0IGhhbmRsZXMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGZpbGUgZGVzY3JpcHRvciBhbmQgdGhlIGRldmljZSwgYW5kIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdpdGggb3RoZXIgb3BlcmF0aW9ucyBsaWtlIGBmdXNlX21vdW50YCBvciBgZnVzZV91bm1vdW50YC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGRlZXBlciBhdCBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIGRldmljZSByZXVzZS4gQXJlIHRoZXJlIGNoZWNrcyB0byBlbnN1cmUgdGhlIGRldmljZSBpcyB2YWxpZCwgb3IgZG9lcyB0aGlzIGZ1bmN0aW9uIGRvIGFueSBzb3J0IG9mIGdhcmJhZ2UgY29sbGVjdGlvbiBpZiBhIHByZXZpb3VzIGZpbGVzeXN0ZW0gaW5zdGFuY2Ugd2FzIGltcHJvcGVybHkgdG9ybiBkb3duPwoKVGhlbiB0aGVyZSYjMzk7cyBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoaXMgaXMgdGhlIGNvdW50ZXJwYXJ0LCB0aGUgb25lIHRoYXQgZGVhbHMgd2l0aCBkZXZpY2UgY2xlYW51cC4gSSB3YW50IHRvIGtub3cgZXhhY3RseSB3aGF0IGl0IGRvZXMuIERvZXMgaXQgZnJlZSB0aGUgZGV2aWNlIHN0cnVjdHVyZSBlbnRpcmVseSwgb3IgbWVyZWx5IGRlY3JlbWVudCBhIHJlZmVyZW5jZSBjb3VudD8gSG93IGRvZXMgaXQgaGFuZGxlIHRoZSBzaXR1YXRpb24gaWYgdGhlcmUgYXJlIHN0aWxsIG91dHN0YW5kaW5nIGZpbGUgaGFuZGxlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZT8gSXMgdGhlcmUgc29tZSBzb3J0IG9mIGRlZmVycmVkIGNsZWFudXAgbWVjaGFuaXNtPyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgZG9lcyBpdCByZWxpYWJseSBzeW5jaHJvbml6ZSB3aXRoIGFueSBwZW5kaW5nIEkvTyBvcGVyYXRpb25zIGJlZm9yZSByZWxlYXNpbmcgdGhlIGRldmljZT8gSSYjMzk7dmUgc2VlbiBlbm91Z2ggRlVTRSBpbXBsZW1lbnRhdGlvbnMgb3ZlciB0aGUgeWVhcnMgdG8ga25vdyB0aGF0IHRoZXNlIHJlbGVhc2Ugcm91dGluZXMgYXJlIG9mdGVuIHdoZXJlIHN1YnRsZSBidWdzIGx1cmssIHBhcnRpY3VsYXJseSBhcm91bmQgcmVzb3VyY2UgbGVha3MgYW5kIGRhbmdsaW5nIHBvaW50ZXJzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIHRoZXJlJiMzOTtzIGFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBGVVNFIGtlcm5lbCBtb2R1bGUmIzM5O3MgaW50ZXJuYWwgZGV2aWNlIGxpc3Qgb3Igc29tZSBzaW1pbGFyIG1hbmFnZW1lbnQuIExldCYjMzk7cyBzZWUgaG93IHRoZXNlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucyBwbGF5IHRvZ2V0aGVyIGFuZCB3aGF0IHRoZWlyIGltcGxpY2F0aW9ucyBhcmUgZm9yIHRoZSBvdmVyYWxsIHN0YWJpbGl0eSBhbmQgcmVsaWFiaWxpdHkgb2YgRlVTRS1iYXNlZCBmaWxlc3lzdGVtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2dldF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2N1c2UuYz01NTU9c3RhdGljIGludCBjdXNlX2NoYW5uZWxfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvY3VzZS5jLTU1Ni17XG5mcy9mdXNlL2N1c2UuYzo1NTc6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9jdXNlLmMtNTU4LVx0c3RydWN0IGN1c2VfY29ubiAqY2MgPSBmY190b19jYyhmdWQtXHUwMDNlY2hhbi1cdTAwM2Vjb25uKTtcbi0tXG5mcy9mdXNlL2Rldi5jPTE2NTE9c3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTY2MS1cbmZzL2Z1c2UvZGV2LmM6MTY2MjpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMTY2My17XG4tLVxuZnMvZnVzZS9kZXYuYz0xNjg1PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTY4OC1cdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cdTAwM2VraV9maWxwO1xuZnMvZnVzZS9kZXYuYzoxNjg5Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTE2OTAtXG4tLVxuZnMvZnVzZS9kZXYuYz0xNzAyPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMTcwOS1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE3MTA6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2Rldihpbik7XG5mcy9mdXNlL2Rldi5jLTE3MTEtXG4tLVxuZnMvZnVzZS9kZXYuYz0xOTczPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3dyaXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMTk3NS1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE5NzY6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGlvY2ItXHUwMDNla2lfZmlscCk7XG5mcy9mdXNlL2Rldi5jLTE5NzctXG4tLVxuZnMvZnVzZS9kZXYuYz0xOTg5PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV93cml0ZShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICpwaXBlLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMTk5Ny1cdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XG5mcy9mdXNlL2Rldi5jOjE5OTg6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KG91dCk7XG5mcy9mdXNlL2Rldi5jLTE5OTktXHRzaXplX3QgcmVtO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjA4MT1zdGF0aWMgX19wb2xsX3QgZnVzZV9kZXZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdClcbi0tXG5mcy9mdXNlL2Rldi5jLTIwODQtXHRzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcTtcbmZzL2Z1c2UvZGV2LmM6MjA4NTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMDg2LVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjI3Mj1zdGF0aWMgaW50IGZ1c2VfZGV2X2Zhc3luYyhpbnQgZmQsIHN0cnVjdCBmaWxlICpmaWxlLCBpbnQgb24pXG5mcy9mdXNlL2Rldi5jLTIyNzMte1xuZnMvZnVzZS9kZXYuYzoyMjc0Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIyNzUtXG4tLVxuZnMvZnVzZS9kZXYuYz0yMjgzPXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2Nsb25lKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzAyLVxuZnMvZnVzZS9kZXYuYzoyMzAzOlx0ZnVkID0gZnVzZV9nZXRfZGV2KGZkX2ZpbGUoZikpO1xuZnMvZnVzZS9kZXYuYy0yMzA0LVx0aWYgKElTX0VSUihmdWQpKVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjMxOD1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsXG4tLVxuZnMvZnVzZS9kZXYuYy0yMzIwLXtcbmZzL2Z1c2UvZGV2LmM6MjMyMTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMzIyLVx0c3RydWN0IGZ1c2VfYmFja2luZ19tYXAgbWFwO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjMzNj1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX2Nsb3NlKHN0cnVjdCBmaWxlICpmaWxlLCBfX3UzMiBfX3VzZXIgKmFyZ3ApXG5mcy9mdXNlL2Rldi5jLTIzMzcte1xuZnMvZnVzZS9kZXYuYzoyMzM4Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzMzktXHRpbnQgYmFja2luZ19pZDtcbi0tXG5mcy9mdXNlL2Rldi5jPTIzODg9c3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZnVzZS9kZXYuYy0yMzg5LXtcbmZzL2Z1c2UvZGV2LmM6MjM5MDpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XG5mcy9mdXNlL2Rldi5jLTIzOTEtXHRpZiAoIWZ1ZClcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTEyMTc9aW50IGZ1c2VfdXJpbmdfY21kKHN0cnVjdCBpb191cmluZ19jbWQgKmNtZCwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxuLS1cbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTIzMi1cbmZzL2Z1c2UvZGV2X3VyaW5nLmM6MTIzMzpcdGZ1ZCA9IGZ1c2VfZ2V0X2RldihjbWQtXHUwMDNlZmlsZSk7XG5mcy9mdXNlL2Rldl91cmluZy5jLTEyMzQtXHRpZiAoSVNfRVJSKGZ1ZCkpIHtcbi0tXG5mcy9mdXNlL2Z1c2VfZGV2X2kuaD0zNjE9c3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzY1LVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6MzY2OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTM2Ny17XG4tLVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9Mzc3PXZvaWQgZnVzZV9pcXVldWVfaW5pdChzdHJ1Y3QgZnVzZV9pcXVldWUgKmZpcSwgY29uc3Qgc3RydWN0IGZ1c2VfaXF1ZXVlX29wcyAqb3BzLCB2b2lkICpwcml2KTtcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTM3OC1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjM3OTpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSk7XG5mcy9mdXNlL2Z1c2VfZGV2X2kuaC0zODAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjA6NTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM4NwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipPYnNlcnZhdGlvbnMgb24gYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBhIGxvdCBvZiB1c2FnZSBvZiBgZnVzZV9nZXRfZGV2YCBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIEhtbSwgdGhhdCYjMzk7cyBub3Qgc3VycHJpc2luZywgZ2l2ZW4gaXRzIHJvbGUgaW4sIHdlbGwsIGdldHRpbmcgdGhlIGRldmljZS4gSXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIHdob2xlIGRldmljZSBtYW5hZ2VtZW50LCBzbyBpdCBtYWtlcyBzZW5zZSBpdCYjMzk7cyByZWZlcmVuY2VkIGZyZXF1ZW50bHkuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0aGlua2luZyBhYm91dCBhbnkgcG90ZW50aWFsIHJlZmFjdG9yaW5nIG9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgaW4gdGhpcyBhcmVhLiBJdCYjMzk7cyBvYnZpb3VzbHkgYSBjcml0aWNhbCBwYXRoLgoKQW5kIG5vdyBJJiMzOTttIGFsc28gbm90aWNpbmcgbW9kaWZpY2F0aW9ucyB0byBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFzIHRoaXMgbGlrZWx5IHBvaW50cyB0byBzb21lIHNwZWNpZmljIGNoYW5nZSBpbiBob3cgZGV2aWNlcyBhcmUgYmVpbmcgZnJlZWQgb3IgaG93IHRoZWlyIHJlc291cmNlcyBhcmUgbWFuYWdlZCBhdCBzaHV0ZG93bi4gU28sIHNvbWV0aGluZyBpcyBsaWtlbHkgdG91Y2hpbmcgdGhlIGRldmljZSBsaWZldGltZSBtb3JlIGRlZXBseS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYWN0dWFsIGNoYW5nZXMgaW4gYGZ1c2VfZGV2X3JlbGVhc2VgIHRvIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXQuIEFyZSB0aGV5IGFkZHJlc3NpbmcgYSByZXNvdXJjZSBsZWFrPyBBcmUgdGhleSBhbHRlcmluZyBob3cgRlVTRSBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBrZXJuZWwgZmlsZSBzeXN0ZW0/IElzIGl0IHNvbWUgc29ydCBvZiBnYXJiYWdlIGNvbGxlY3Rpb24gc3RyYXRlZ3k/IEkgbmVlZCB0byBhbmFseXplIHRob3NlIG1vZGlmaWNhdGlvbnMgY2xvc2VseS4gSXQmIzM5O3Mgdml0YWwgSSB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjaGFuZ2VzLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gcmVsZWFzaW5nIGRldmljZXMsIGFmZmVjdCByZWxpYWJpbGl0eSBhbmQgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9jdXNlLmM9NTU1PXN0YXRpYyBpbnQgY3VzZV9jaGFubmVsX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuZnMvZnVzZS9jdXNlLmMtNTcyLVxuZnMvZnVzZS9jdXNlLmM6NTczOlx0cmV0dXJuIGZ1c2VfZGV2X3JlbGVhc2UoaW5vZGUsIGZpbGUpO1xuZnMvZnVzZS9jdXNlLmMtNTc0LX1cbi0tXG5mcy9mdXNlL2Rldi5jPTQ1OD1zdGF0aWMgYm9vbCBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoc3RydWN0IGZ1c2VfZGV2ICpmdWQsIHN0cnVjdCBmdXNlX2NoYW4gKmZjaCxcbi0tXG5mcy9mdXNlL2Rldi5jLTQ2NS1cdCAqIFBhaXJzIHdpdGg6XG5mcy9mdXNlL2Rldi5jOjQ2NjpcdCAqICAtIHhjaGcoKSBpbiBmdXNlX2Rldl9yZWxlYXNlKClcbmZzL2Z1c2UvZGV2LmMtNDY3LVx0ICogIC0gc21wX2xvYWRfYWNxdWlyZSgpIGluIGZ1c2VfZGV2X2ZjX2dldCgpXG4tLVxuZnMvZnVzZS9kZXYuYz01MTQ9dm9pZCBmdXNlX2Rldl9wdXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpXG4tLVxuZnMvZnVzZS9kZXYuYy01MjItXHRpZiAoZmNoIFx1MDAyNlx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcbmZzL2Z1c2UvZGV2LmM6NTIzOlx0XHQvKiBUaGlzIGlzIHRoZSB2aXJ0aW9mcyBjYXNlIChmdXNlX2Rldl9yZWxlYXNlKCkgbm90IGNhbGxlZCkgKi9cbmZzL2Z1c2UvZGV2LmMtNTI0LVx0XHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuLS1cbmZzL2Z1c2UvZGV2LmM9MjIxOT1zdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4tLVxuZnMvZnVzZS9kZXYuYy0yMjMxLVxuZnMvZnVzZS9kZXYuYzoyMjMyOmludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuZnMvZnVzZS9kZXYuYy0yMjMzLXtcbi0tXG5mcy9mdXNlL2Rldi5jLTIyNjktfVxuZnMvZnVzZS9kZXYuYzoyMjcwOkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfZGV2X3JlbGVhc2UpO1xuZnMvZnVzZS9kZXYuYy0yMjcxLVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjQyNj1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4tLVxuZnMvZnVzZS9kZXYuYy0yNDM0LVx0LmZsdXNoXHRcdD0gZnVzZV9kZXZfZmx1c2gsXG5mcy9mdXNlL2Rldi5jOjI0MzU6XHQucmVsZWFzZVx0PSBmdXNlX2Rldl9yZWxlYXNlLFxuZnMvZnVzZS9kZXYuYy0yNDM2LVx0LmZhc3luY1x0XHQ9IGZ1c2VfZGV2X2Zhc3luYyxcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jPTQ5MD12b2lkIGZ1c2VfdXJpbmdfc3RvcF9xdWV1ZXMoc3RydWN0IGZ1c2VfcmluZyAqcmluZylcbi0tXG5mcy9mdXNlL2Rldl91cmluZy5jLTUwOC0gKlxuZnMvZnVzZS9kZXZfdXJpbmcuYzo1MDk6ICogUmVsZWFzaW5nIHRoZSBsYXN0IGVudHJ5IHNob3VsZCB0cmlnZ2VyIGZ1c2VfZGV2X3JlbGVhc2UoKSBpZlxuZnMvZnVzZS9kZXZfdXJpbmcuYy01MTAtICogdGhlIGRhZW1vbiB3YXMgdGVybWluYXRlZFxuLS1cbmZzL2Z1c2UvZnVzZV9kZXZfaS5oPTQxNz1zdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZGV2X2FsbG9jKHZvaWQpO1xuZnMvZnVzZS9mdXNlX2Rldl9pLmgtNDE4LVxuZnMvZnVzZS9mdXNlX2Rldl9pLmg6NDE5OmludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKTtcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oLTQyMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTI4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOgoKKipNeSBDdXJyZW50IEZvY3VzKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIHRoZXNlIHN5bWJvbHM6IGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXkgc2VlbSBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGRlYnVnZ2luZyBvciBkZWVwIGRpdmluZyBpbnRvIHRoZSBGVVNFIGtlcm5lbCBpbnRlcmFjdGlvbiwgbGlrZWx5IHJlbGF0ZWQgdG8gZGV2aWNlIG1hbmFnZW1lbnQsIGFjcXVpc2l0aW9uLCBhbmQgcmVsZWFzZSB3aXRoaW4gdGhlIEZVU0UgZnJhbWV3b3JrLiBJJiMzOTttIGdvaW5nIHRvIGJvb2ttYXJrIHRob3NlIGZ1bmN0aW9ucy4gQWxzbywgbXkgY29uZmlndXJhdGlvbnMgZm9yIHRoaXMgc2hvdWxkIGJlIGBGVVNFX0ZTYC4gSSYjMzk7bGwga2VlcCB0aGF0IGluIG1pbmQgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMjA6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZVU0VfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3OTAKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDaGVja2luZyB0aGUgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJJiMzOTt2ZSBnb3QgbXkgaW5pdGlhbCBjb25maWd1cmF0aW9uIHNldCwgYnV0IEkgbmVlZCB0byBkbyBhIHRob3JvdWdoIGNoZWNrIGZvciBhbnkgb3Zlcmxvb2tlZCBvciBzZWNvbmRhcnkgY29uZmlndXJhdGlvbnMsIGV4dGVybmFsIHNvdXJjZXMsIG9yIG92ZXJyaWRlcyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoZSBjdXJyZW50IGJlaGF2aW9yLiBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoZXJlIGFub3RoZXIgY29uZmlnIGZpbGUsIGEgZGlmZmVyZW50IGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBzb21lIGF1dG9tYXRlZCBwcm9jZXNzIEkmIzM5O3ZlIGZvcmdvdHRlbiBhYm91dCB0aGF0IGNvdWxkIGJlIGFmZmVjdGluZyB0aGVzZSBzZXR0aW5ncz8mIzM0OyBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHNhbml0eSBjaGVjazogZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyB0aGUgb25seSBvbmUgaW4gcGxheS4gSSBkb24mIzM5O3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNoYXNpbmcgZ2hvc3RzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHN1cnByaXNlIHBhcmFtZXRlcnMgb3IgY29uZmxpY3Rpbmcgc2V0dGluZ3MgYmVmb3JlIEkgZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9mdXNlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnPTIyPWNvbmZpZyBDVVNFXG5mcy9mdXNlL0tjb25maWctMjMtXHR0cmlzdGF0ZSBcJiMzNDtDaGFyYWN0ZXIgZGV2aWNlIGluIFVzZXJzcGFjZSBzdXBwb3J0XCYjMzQ7XG5mcy9mdXNlL0tjb25maWc6MjQ6XHRkZXBlbmRzIG9uIEZVU0VfRlNcbmZzL2Z1c2UvS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5mcy9mdXNlL0tjb25maWc9MzI9Y29uZmlnIFZJUlRJT19GU1xuZnMvZnVzZS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7VmlydGlvIEZpbGVzeXN0ZW1cJiMzNDtcbmZzL2Z1c2UvS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnLTM1LVx0c2VsZWN0IFZJUlRJT1xuLS1cbmZzL2Z1c2UvS2NvbmZpZz00Mz1jb25maWcgRlVTRV9EQVhcbi0tXG5mcy9mdXNlL0tjb25maWctNDYtXHRzZWxlY3QgSU5URVJWQUxfVFJFRVxuZnMvZnVzZS9LY29uZmlnOjQ3Olx0ZGVwZW5kcyBvbiBWSVJUSU9fRlNcbmZzL2Z1c2UvS2NvbmZpZzo0ODpcdGRlcGVuZHMgb24gRlNfREFYXG5mcy9mdXNlL0tjb25maWc6NDk6XHRkZXBlbmRzIG9uIERBWFxuZnMvZnVzZS9LY29uZmlnLTUwLVx0aGVscFxuLS1cbmZzL2Z1c2UvS2NvbmZpZz01Nz1jb25maWcgRlVTRV9QQVNTVEhST1VHSFxuLS1cbmZzL2Z1c2UvS2NvbmZpZy01OS1cdGRlZmF1bHQgeVxuZnMvZnVzZS9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBGVVNFX0ZTXG5mcy9mdXNlL0tjb25maWctNjEtXHRzZWxlY3QgRlNfU1RBQ0tcbi0tXG5mcy9mdXNlL0tjb25maWc9Njg9Y29uZmlnIEZVU0VfSU9fVVJJTkdcbi0tXG5mcy9mdXNlL0tjb25maWctNzAtXHRkZWZhdWx0IHlcbmZzL2Z1c2UvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gRlVTRV9GU1xuZnMvZnVzZS9LY29uZmlnOjcyOlx0ZGVwZW5kcyBvbiBJT19VUklOR1xuZnMvZnVzZS9LY29uZmlnLTczLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAyMDo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDIxCgkJCQkJCQlvdXRwdXQ6IDk5CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBGVVNFIERldmljZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIHRoZSBwYXRjaCYjMzk7cyBsb2NhdGlvbjogaXQmIzM5O3MgbmVzdGxlZCB3aXRoaW4gYGZzL2Z1c2UvZGV2LmNgLiBUaGlzIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHRoYXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBGVVNFX0ZTYC4gTm8gbmVlZCB0byBnbyBodW50aW5nIHRocm91Z2ggb3RoZXIgbW9kdWxlczsgdGhpcyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZSBzeW1ib2xzIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBtb2RpZmllZCBieSB0aGUgcGF0Y2gsIHNvIHRoZXkgYXJlIHRoZSBsaWtlbHkgZW50cnlwb2ludHMgZm9yIGZ1enppbmcuCgpNeSByZWFzb25pbmc/IEl0JiMzOTtzIGltcGFjdGluZyBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBjbG9zZWQgYW5kIGhvdyB0aGUgYXNzb2NpYXRlZCBjaGFubmVscyBhcmUgYWJvcnRlZCB3aGVuIGV2ZXJ5dGhpbmcgc2h1dHMgZG93bi4gVGhpcyBjbGVhcmx5IHRvdWNoZXMgdXBvbiBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsIGJlaGF2aW9yIGFuZCBlcnJvciBoYW5kbGluZy4gVGhpcyB0eXBlIG9mIGNoYW5nZSBpcyBwcmFjdGljYWxseSBzY3JlYW1pbmcgZm9yIGZ1enppbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MgYW5kIHVuY292ZXIgYW55IGVkZ2UgY2FzZXMgaW4gdGhlIGRldmljZSYjMzk7cyBsaWZlY3ljbGUuIEl0JiMzOTtzIG5vdCBhIHRyaXZpYWwgY29zbWV0aWMgY2hhbmdlOyBpdCYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBob3cgdGhlIHN5c3RlbSAqd29ya3MqLCBhbmQgdGhlcmVmb3JlIHdhcnJhbnRzIHJpZ29yb3VzIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDIwOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9nZXRfZGV2JiMzNDssCiAgICAmIzM0O2Z1c2VfZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgRlVTRSBkZXZpY2UgaGFuZGxpbmcgbG9naWMsIHNwZWNpZmljYWxseSBob3cgRlVTRSBkZXZpY2VzIGFyZSBjbG9zZWQgYW5kIGhvdyB0aGUgY2hhbm5lbCBpcyBhYm9ydGVkIHdoZW4gYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9nZXRfZGV2JiMzNDssCiAgICAmIzM0O2Z1c2VfZGV2X3JlbGVhc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgRlVTRSBkZXZpY2UgaGFuZGxpbmcgbG9naWMsIHNwZWNpZmljYWxseSBob3cgRlVTRSBkZXZpY2VzIGFyZSBjbG9zZWQgYW5kIGhvdyB0aGUgY2hhbm5lbCBpcyBhYm9ydGVkIHdoZW4gYWxsIGRldmljZXMgYXJlIGNsb3NpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTc6NTkuMzYyNjU4MTY0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNjA0OTE3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IEZVU0UgZGV2aWNlcyBhcmUgY2xvc2VkIGFuZCBob3cgdGhlIGNoYW5uZWwgaXMgYWJvcnRlZCB3aGVuIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTc6NTkuMzYyNjY0NDk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTQ5OTc0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZTgxY2E0ZjI5YzFlZjJkOGFiZGEyM2ZiYTAyOTdiYWExMzEyZjJiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDI0IDIwOjU3OjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jXFxuaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NFxcbi0tLSBhL2ZzL2Z1c2UvZGV2LmNcXG4rKysgYi9mcy9mdXNlL2Rldi5jXFxuQEAgLTE2NjIsMTggKzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XFxuK1xcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAodW5saWtlbHkoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpKSB7XFxuK1xcdGlmICh1bmxpa2VseSghZmNoKSkge1xcbiBcXHRcXHQvKiBvbmx5IGJsb2NrIHdhaXRpbmcgZm9yIG1vdW50IGlmIHN5bmMgaW5pdCB3YXMgcmVxdWVzdGVkICovXFxuIFxcdFxcdGlmICghZnVkLVxcdTAwM2VzeW5jX2luaXQpXFxuIFxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XFxuIFxcbi1cXHRcXHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsIGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkgIT0gTlVMTCk7XFxuK1xcdFxcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICAgIChmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpKSAhPSBOVUxMKTtcXG4gXFx0XFx0aWYgKGVycilcXG4gXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKHVubGlrZWx5KGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XFxuK1xcbiBcXHRyZXR1cm4gZnVkO1xcbiB9XFxuIFxcbkBAIC0yMjExLDE3ICsyMjE2LDMxIEBAIHZvaWQgZnVzZV9jaGFuX3dhaXRfYWJvcnRlZChzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuIFxcdGZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXFxuK3tcXG4rXFx0c3RydWN0IGZ1c2VfZGV2ICpwb3M7XFxuK1xcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIFxcdTAwMjZmY2gtXFx1MDAzZWRldmljZXMsIGVudHJ5KSB7XFxuK1xcdFxcdGlmICghcG9zLVxcdTAwM2VjbG9zaW5nKVxcbitcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiB7XFxuIFxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcXG4gXFx0LyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXFxuIFxcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IHhjaGcoXFx1MDAyNmZ1ZC1cXHUwMDNlY2hhbiwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xcbiBcXG4tXFx0aWYgKGZjaCkge1xcbitcXHRpZiAoZmNoIFxcdTAwMjZcXHUwMDI2IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkge1xcbiBcXHRcXHRzdHJ1Y3QgZnVzZV9wcXVldWUgKmZwcSA9IFxcdTAwMjZmdWQtXFx1MDAzZXBxO1xcbiBcXHRcXHRMSVNUX0hFQUQodG9fZW5kKTtcXG4gXFx0XFx0dW5zaWduZWQgaW50IGk7XFxuIFxcdFxcdGJvb2wgbGFzdDtcXG4rXFx0XFx0Ym9vbCBhYm9ydDtcXG4gXFxuIFxcdFxcdC8qIE1ha2Ugc3VyZSBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoKSBoYXMgZmluaXNoZWQgKi9cXG4gXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbkBAIC0yMjM0LDE0ICsyMjUzLDE1IEBAIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiBcXHRcXHRsaXN0X2RlbChcXHUwMDI2ZnVkLVxcdTAwM2VlbnRyeSk7XFxuIFxcdFxcdC8qIEFyZSB3ZSB0aGUgbGFzdCBvcGVuIGRldmljZT8gKi9cXG4gXFx0XFx0bGFzdCA9IGxpc3RfZW1wdHkoXFx1MDAyNmZjaC1cXHUwMDNlZGV2aWNlcyk7XFxuK1xcdFxcdGFib3J0ID0gZmNoLVxcdTAwM2Vjb25uZWN0ZWQgXFx1MDAyNlxcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcXG4gXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuIFxcbiBcXHRcXHRmdXNlX2Rldl9lbmRfcmVxdWVzdHMoXFx1MDAyNnRvX2VuZCk7XFxuIFxcbi1cXHRcXHRpZiAobGFzdCkge1xcbitcXHRcXHRpZiAobGFzdClcXG4gXFx0XFx0XFx0V0FSTl9PTihmY2gtXFx1MDAzZWlxLmZhc3luYyAhPSBOVUxMKTtcXG4rXFx0XFx0aWYgKGFib3J0KVxcbiBcXHRcXHRcXHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XFxuLVxcdFxcdH1cXG4gXFx0XFx0ZnVzZV9jb25uX3B1dChmY2gtXFx1MDAzZWNvbm4pO1xcbiBcXHR9XFxuIFxcdGZ1c2VfZGV2X3B1dChmdWQpO1xcbkBAIC0yMzc1LDYgKzIzOTUsMzQgQEAgc3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxcbiB9XFxuICNlbmRpZlxcbiBcXG4rc3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcXG4re1xcbitcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XFxuK1xcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaDtcXG4rXFx0Ym9vbCBhYm9ydDtcXG4rXFxuK1xcdGlmIChmaWxlX2NvdW50KGZpbGUpICE9IDEpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4rXFx0LypcXG4rXFx0ICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC1cXHUwMDNlY2hhbiBmcm9tIE5VTEwgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcXG4rXFx0ICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuXFxuK1xcdCAqL1xcbitcXHRmY2ggPSBjbXB4Y2hnKFxcdTAwMjZmdWQtXFx1MDAzZWNoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcXG4rXFx0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHNwaW5fbG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4rXFx0ZnVkLVxcdTAwM2VjbG9zaW5nID0gdHJ1ZTtcXG4rXFx0YWJvcnQgPSBmY2gtXFx1MDAzZWNvbm5lY3RlZCBcXHUwMDI2XFx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xcbitcXHRzcGluX3VubG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdGlmIChhYm9ydClcXG4rXFx0XFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xcbitcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG4rXFxuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcXG4gXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gXFx0Lm9wZW5cXHRcXHQ9IGZ1c2VfZGV2X29wZW4sXFxuQEAgLTIzODMsNiArMjQzMSw3IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcXG4gXFx0LndyaXRlX2l0ZXJcXHQ9IGZ1c2VfZGV2X3dyaXRlLFxcbiBcXHQuc3BsaWNlX3dyaXRlXFx0PSBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUsXFxuIFxcdC5wb2xsXFx0XFx0PSBmdXNlX2Rldl9wb2xsLFxcbitcXHQuZmx1c2hcXHRcXHQ9IGZ1c2VfZGV2X2ZsdXNoLFxcbiBcXHQucmVsZWFzZVxcdD0gZnVzZV9kZXZfcmVsZWFzZSxcXG4gXFx0LmZhc3luY1xcdFxcdD0gZnVzZV9kZXZfZmFzeW5jLFxcbiBcXHQudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCxcXG5kaWZmIC0tZ2l0IGEvZnMvZnVzZS9mdXNlX2Rldl9pLmggYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxcbmluZGV4IDY2OGM4MzkxZDYxYzAzLi4yODMzYTAzNTBjNDM1YSAxMDA2NDRcXG4tLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxcbisrKyBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXFxuQEAgLTMwMiw2ICszMDIsOSBAQCBzdHJ1Y3QgZnVzZV9kZXYge1xcbiBcXHQvKiogQHN5bmNfaW5pdDogSXNzdWUgRlVTRV9JTklUIHN5bmNocm9ub3VzbHkgKi9cXG4gXFx0Ym9vbCBzeW5jX2luaXQ7XFxuIFxcbitcXHQvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi1cXHUwMDNlbG9jayAqL1xcbitcXHRib29sIGNsb3Npbmc7XFxuK1xcbiBcXHQvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi9cXG4gXFx0c3RydWN0IGZ1c2VfY2hhbiAqY2hhbjtcXG4gXFxuQEAgLTMzMCwxNyArMzMzLDI1IEBAIHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUge1xcbiBcXHR9IHJpbmc7XFxuIH07XFxuIFxcbi0vKiBmdWQtXFx1MDAzZWNoYW4gZ2V0cyBhc3NpZ25lZCB0byB0aGlzIHZhbHVlIHdoZW4gL2Rldi9mdXNlIGlzIGNsb3NlZCAqL1xcbi0jZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxcbi1cXG4gLypcXG4tICogTG9ja2xlc3MgYWNjZXNzIGlzIE9LLCBiZWNhdXNlIGZ1ZC1cXHUwMDNlY2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkXFxuLSAqIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLlxcbisgKiBmdWQtXFx1MDAzZWNoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOlxcbisgKlxcbisgKiBOVUxMIC1cXHUwMDNlIHZhbGlkIGNoYW5uZWwgLVxcdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcXG4rICogTlVMTCAtLS0tLS0tLS0tLS0tLS0tLVxcdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcXG4gICpcXG4tICogZnVkLVxcdTAwM2VjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXNcXG4tICogcmVsZWFzZWQsIHNvIHJlc3VsdCBpcyBzYWZlIHRvIGRlcmVmZXJlbmNlIGluIG1vc3QgY2FzZXMuICBFeGNlcHRpb25zIGFyZTpcXG4tICogZnVzZV9kZXZfcHV0KCkgYW5kIGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oKS5cXG4rICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWxcXG4rICogZmx1c2ggY2FuIGluc3RhbGwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgZGlyZWN0bHkgZm9yIGFuIHVuaW5zdGFsbGVkXFxuKyAqIGRldmljZSwgcHJldmVudGluZyBhbnkgbGF0ZXIgY2hhbm5lbCBpbnN0YWxsYXRpb24uIFRoZSBzZW50aW5lbCB0aGVyZWZvcmVcXG4rICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXNcXG4rICogZmlsZTsgaXQgZG9lcyBub3QgaW1wbHkgdGhhdCByZWxlYXNlIGhhcyBhbHJlYWR5IHJ1biBhbmQgaXQgbXVzdCBuZXZlciBiZVxcbisgKiBkZXJlZmVyZW5jZWQuXFxuKyAqXFxuKyAqIGZ1c2VfZGV2X2NoYW5fZ2V0KCkgcmVhZHMgdGhpcyBzdGF0ZSBsb2NrbGVzc2x5LiBDYWxsZXJzIG11c3QgZGlzdGluZ3Vpc2hcXG4rICogTlVMTCwgYSB2YWxpZCBjaGFubmVsIHBvaW50ZXIsIGFuZCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBiZWZvcmVcXG4rICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LlxcbiAgKi9cXG4rI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcXG4rXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfY2hhbiAqZnVzZV9kZXZfY2hhbl9nZXQoc3RydWN0IGZ1c2VfZGV2ICpmdWQpXFxuIHtcXG4gXFx0LyogUGFpcnMgd2l0aCB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXFxuQEAgLTM1NSw4ICszNjYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9maWxlX3RvX2Z1ZChzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxcbiB7XFxuIFxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcXG4rXFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcXG4gXFxuLVxcdGlmICghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSlcXG4rXFx0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuIFxcdHJldHVybiBmdWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU3OjU5Ljc3ODMxMzQ3OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI2NzQ0ODI3MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2dldF9kZXZcIixcbiAgICBcImZ1c2VfZGV2X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyBGVVNFIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBjaGFubmVsIGlzIGFib3J0ZWQgd2hlbiBhbGwgZGV2aWNlcyBhcmUgY2xvc2luZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVlODFjYTRmMjljMWVmMmQ4YWJkYTIzZmJhMDI5N2JhYTEzMTJmMmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAyMDo1Nzo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jXG5pbmRleCA1NzYzYTdjZDNiMzdmYS4uOGIxNGM3ZDU3YTAxMTkgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Rldi5jXG4rKysgYi9mcy9mdXNlL2Rldi5jXG5AQCAtMTY2MiwxOCArMTY2MiwyMyBAQCBzdGF0aWMgaW50IGZ1c2VfZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuK1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpKSB7XG4rXHRpZiAodW5saWtlbHkoIWZjaCkpIHtcbiBcdFx0Lyogb25seSBibG9jayB3YWl0aW5nIGZvciBtb3VudCBpZiBzeW5jIGluaXQgd2FzIHJlcXVlc3RlZCAqL1xuIFx0XHRpZiAoIWZ1ZC1cdTAwM2VzeW5jX2luaXQpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbiBcbi1cdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLCBmdXNlX2Rldl9jaGFuX2dldChmdWQpICE9IE5VTEwpO1xuK1x0XHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsXG4rXHRcdFx0XHRcdCAgICAgICAoZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkgIT0gTlVMTCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcdH1cbiBcbitcdGlmICh1bmxpa2VseShmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xuK1xuIFx0cmV0dXJuIGZ1ZDtcbiB9XG4gXG5AQCAtMjIxMSwxNyArMjIxNiwzMSBAQCB2b2lkIGZ1c2VfY2hhbl93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuIFx0ZnVzZV91cmluZ193YWl0X3N0b3BwZWRfcXVldWVzKGZjaCk7XG4gfVxuIFxuK3N0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbit7XG4rXHRzdHJ1Y3QgZnVzZV9kZXYgKnBvcztcbitcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIFx1MDAyNmZjaC1cdTAwM2VkZXZpY2VzLCBlbnRyeSkge1xuK1x0XHRpZiAoIXBvcy1cdTAwM2VjbG9zaW5nKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4gXHQvKiBQYWlycyB3aXRoIGNtcHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbiBcbi1cdGlmIChmY2gpIHtcbitcdGlmIChmY2ggXHUwMDI2XHUwMDI2IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkge1xuIFx0XHRzdHJ1Y3QgZnVzZV9wcXVldWUgKmZwcSA9IFx1MDAyNmZ1ZC1cdTAwM2VwcTtcbiBcdFx0TElTVF9IRUFEKHRvX2VuZCk7XG4gXHRcdHVuc2lnbmVkIGludCBpO1xuIFx0XHRib29sIGxhc3Q7XG4rXHRcdGJvb2wgYWJvcnQ7XG4gXG4gXHRcdC8qIE1ha2Ugc3VyZSBmdXNlX2Rldl9pbnN0YWxsX3dpdGhfcHEoKSBoYXMgZmluaXNoZWQgKi9cbiBcdFx0c3Bpbl9sb2NrKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbkBAIC0yMjM0LDE0ICsyMjUzLDE1IEBAIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIFx0XHRsaXN0X2RlbChcdTAwMjZmdWQtXHUwMDNlZW50cnkpO1xuIFx0XHQvKiBBcmUgd2UgdGhlIGxhc3Qgb3BlbiBkZXZpY2U/ICovXG4gXHRcdGxhc3QgPSBsaXN0X2VtcHR5KFx1MDAyNmZjaC1cdTAwM2VkZXZpY2VzKTtcbitcdFx0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuIFx0XHRzcGluX3VubG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4gXG4gXHRcdGZ1c2VfZGV2X2VuZF9yZXF1ZXN0cyhcdTAwMjZ0b19lbmQpO1xuIFxuLVx0XHRpZiAobGFzdCkge1xuK1x0XHRpZiAobGFzdClcbiBcdFx0XHRXQVJOX09OKGZjaC1cdTAwM2VpcS5mYXN5bmMgIT0gTlVMTCk7XG4rXHRcdGlmIChhYm9ydClcbiBcdFx0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4tXHRcdH1cbiBcdFx0ZnVzZV9jb25uX3B1dChmY2gtXHUwMDNlY29ubik7XG4gXHR9XG4gXHRmdXNlX2Rldl9wdXQoZnVkKTtcbkBAIC0yMzc1LDYgKzIzOTUsMzQgQEAgc3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxuIH1cbiAjZW5kaWZcbiBcbitzdGF0aWMgaW50IGZ1c2VfZGV2X2ZsdXNoKHN0cnVjdCBmaWxlICpmaWxlLCBmbF9vd25lcl90IGlkKVxuK3tcbitcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaDtcbitcdGJvb2wgYWJvcnQ7XG4rXG4rXHRpZiAoZmlsZV9jb3VudChmaWxlKSAhPSAxKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdC8qXG4rXHQgKiBBdG9taWNhbGx5IHRyYW5zaXRpb24gZnVkLVx1MDAzZWNoYW4gZnJvbSBOVUxMIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4rXHQgKiBvbiBmaW5hbCBjbG9zZSB0byBwcmV2ZW50IGEgbGF0ZXIgZnVzZV9kZXZfaW5zdGFsbCgpIGZyb20gc3VjY2VlZGluZy5cbitcdCAqL1xuK1x0ZmNoID0gY21weGNoZyhcdTAwMjZmdWQtXHUwMDNlY2hhbiwgTlVMTCwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xuK1x0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxuK1x0XHRyZXR1cm4gMDtcbitcbitcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4rXHRmdWQtXHUwMDNlY2xvc2luZyA9IHRydWU7XG4rXHRhYm9ydCA9IGZjaC1cdTAwM2Vjb25uZWN0ZWQgXHUwMDI2XHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XG4rXHRzcGluX3VubG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4rXG4rXHRpZiAoYWJvcnQpXG4rXHRcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcbitcbitcdHJldHVybiAwO1xuK31cbitcbiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4gXHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiBcdC5vcGVuXHRcdD0gZnVzZV9kZXZfb3BlbixcbkBAIC0yMzgzLDYgKzI0MzEsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XG4gXHQud3JpdGVfaXRlclx0PSBmdXNlX2Rldl93cml0ZSxcbiBcdC5zcGxpY2Vfd3JpdGVcdD0gZnVzZV9kZXZfc3BsaWNlX3dyaXRlLFxuIFx0LnBvbGxcdFx0PSBmdXNlX2Rldl9wb2xsLFxuK1x0LmZsdXNoXHRcdD0gZnVzZV9kZXZfZmx1c2gsXG4gXHQucmVsZWFzZVx0PSBmdXNlX2Rldl9yZWxlYXNlLFxuIFx0LmZhc3luY1x0XHQ9IGZ1c2VfZGV2X2Zhc3luYyxcbiBcdC51bmxvY2tlZF9pb2N0bCA9IGZ1c2VfZGV2X2lvY3RsLFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbmluZGV4IDY2OGM4MzkxZDYxYzAzLi4yODMzYTAzNTBjNDM1YSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG4rKysgYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuQEAgLTMwMiw2ICszMDIsOSBAQCBzdHJ1Y3QgZnVzZV9kZXYge1xuIFx0LyoqIEBzeW5jX2luaXQ6IElzc3VlIEZVU0VfSU5JVCBzeW5jaHJvbm91c2x5ICovXG4gXHRib29sIHN5bmNfaW5pdDtcbiBcbitcdC8qKiBAY2xvc2luZzogRmluYWwgY2xvc2UgaGFzIHN0YXJ0ZWQsIHByb3RlY3RlZCBieSBjaGFuLVx1MDAzZWxvY2sgKi9cbitcdGJvb2wgY2xvc2luZztcbitcbiBcdC8qKiBAY2hhbjogRnVzZSBjaGFubmVsIGZvciB0aGlzIGRldmljZSAqL1xuIFx0c3RydWN0IGZ1c2VfY2hhbiAqY2hhbjtcbiBcbkBAIC0zMzAsMTcgKzMzMywyNSBAQCBzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIHtcbiBcdH0gcmluZztcbiB9O1xuIFxuLS8qIGZ1ZC1cdTAwM2VjaGFuIGdldHMgYXNzaWduZWQgdG8gdGhpcyB2YWx1ZSB3aGVuIC9kZXYvZnVzZSBpcyBjbG9zZWQgKi9cbi0jZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxuLVxuIC8qXG4tICogTG9ja2xlc3MgYWNjZXNzIGlzIE9LLCBiZWNhdXNlIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCBvbmNlIGR1cmluZyBtb3VudCBhbmQgaXMgdmFsaWRcbi0gKiB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC5cbisgKiBmdWQtXHUwMDNlY2hhbiBoYXMgdGhlIGZvbGxvd2luZyBtb25vdG9uaWMgc3RhdGUgdHJhbnNpdGlvbnM6XG4rICpcbisgKiBOVUxMIC1cdTAwM2UgdmFsaWQgY2hhbm5lbCAtXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXG4rICogTlVMTCAtLS0tLS0tLS0tLS0tLS0tLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuICAqXG4tICogZnVkLVx1MDAzZWNoYW4gaXMgc2V0IHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIG9ubHkgYWZ0ZXIgdGhlIGNvbnRhaW5pbmcgZmlsZSBpc1xuLSAqIHJlbGVhc2VkLCBzbyByZXN1bHQgaXMgc2FmZSB0byBkZXJlZmVyZW5jZSBpbiBtb3N0IGNhc2VzLiAgRXhjZXB0aW9ucyBhcmU6XG4tICogZnVzZV9kZXZfcHV0KCkgYW5kIGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oKS5cbisgKiBBIHZhbGlkIGNoYW5uZWwgcG9pbnRlciByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLiBGaW5hbFxuKyAqIGZsdXNoIGNhbiBpbnN0YWxsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGRpcmVjdGx5IGZvciBhbiB1bmluc3RhbGxlZFxuKyAqIGRldmljZSwgcHJldmVudGluZyBhbnkgbGF0ZXIgY2hhbm5lbCBpbnN0YWxsYXRpb24uIFRoZSBzZW50aW5lbCB0aGVyZWZvcmVcbisgKiBtZWFucyB0aGF0IHRoZSBjaGFubmVsIGNhbiBubyBsb25nZXIgYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2VkIHRocm91Z2ggdGhpc1xuKyAqIGZpbGU7IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgcmVsZWFzZSBoYXMgYWxyZWFkeSBydW4gYW5kIGl0IG11c3QgbmV2ZXIgYmVcbisgKiBkZXJlZmVyZW5jZWQuXG4rICpcbisgKiBmdXNlX2Rldl9jaGFuX2dldCgpIHJlYWRzIHRoaXMgc3RhdGUgbG9ja2xlc3NseS4gQ2FsbGVycyBtdXN0IGRpc3Rpbmd1aXNoXG4rICogTlVMTCwgYSB2YWxpZCBjaGFubmVsIHBvaW50ZXIsIGFuZCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBiZWZvcmVcbisgKiBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuXG4gICovXG4rI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbitcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2NoYW4gKmZ1c2VfZGV2X2NoYW5fZ2V0KHN0cnVjdCBmdXNlX2RldiAqZnVkKVxuIHtcbiBcdC8qIFBhaXJzIHdpdGggeGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xuQEAgLTM1NSw4ICszNjYsOSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9maWxlX3RvX2Z1ZChzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuK1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcbiBcbi1cdGlmICghZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSlcbitcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZnVkO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTc6NTkuNzc4MzE0NzA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwOTQ1OTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBFdmFsdWF0aW9uIGZvciBGVVNFIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIklzIHRoaXMgd29ydGggbXkgdGltZSB0byBmdXp6P1wiIExvb2tpbmcgYXQgdGhlIGZpbGUgbW9kaWZpY2F0aW9ucywgaXQncyBoaXR0aW5nIGBmcy9mdXNlL2Rldi5jYCBhbmQgYGZzL2Z1c2UvZnVzZV9kZXZfaS5oYCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3MgYXMgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcgY29yZSBGVVNFIGRldmljZSBoYW5kbGluZy4gIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYGZ1c2VfZGV2X2ZsdXNoYCBpbnRvIHRoZSBgZnVzZV9kZXZfb3BlcmF0aW9uc2Agc3RydWN0IGlzIGEgZ29vZCBzaWduOyBuZXcgZnVuY3Rpb25hbGl0eSBvZnRlbiBtZWFucyBuZXcgY29kZSBwYXRocy4gIFBsdXMgdGhlIGNoYW5nZXMgdG8gYGZ1c2VfZ2V0X2RldmAsIGBfX2Z1c2VfZ2V0X2RldmAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYW5kIHRoZSBtZW50aW9uIG9mIGBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRGAgYW5kIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgYWxsIHBvaW50IHRvIG1vZGlmaWNhdGlvbnMgcmVsYXRlZCB0byBkZXZpY2UgY2xvc3VyZSBhbmQgY2hhbm5lbCBoYW5kbGluZywgYW5kIHRoYXQncyB1c3VhbGx5IHJpcGUgZm9yIGZpbmRpbmcgc3VidGxlIGJ1Z3MuICBTbywgeWVzLCB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBsb29rcyBsaWtlIGEgd29ydGh3aGlsZSB0YXJnZXQuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIGtleSBmb2N1cyBzeW1ib2xzLiAgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSBjZW50cmFsIHRvIHRoZSBuZXcgbG9naWMuIFRoZSBwYXRjaCBtZW50aW9ucyBgZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgdGhlIG5ldyBgZnVzZV9kZXZfZmx1c2hgLCBhbmQgYGZ1c2VfZGV2X2FsbF9jbG9zaW5nYCBmdW5jdGlvbnMuIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgYmVpbmcgc3RhdGljIGlzbid0IGlkZWFsIGFzIGEgZGlyZWN0IGZvY3VzLCBzbyBJJ2xsIHByb2JhYmx5IGxvb2sgYXQgd2hhdCBjYWxscyBpdCBhbmQgbWFrZSBteSBkZXRlcm1pbmF0aW9uIGZyb20gdGhhdC4gQnV0IGBmdXNlX2Rldl9mbHVzaGAgbG9va3MgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSAqaWYqIGl0J3MgYWN0dWFsbHkgZ2V0dGluZyBjYWxsZWQgdmlhIHRoZSBmdW5jdGlvbiBwb2ludGVyIGluIGBmdXNlX2Rldl9vcGVyYXRpb25zYC4gQmVjYXVzZSBpdCdzIGJlaW5nIGFzc2lnbmVkIHRvIGEgZmlsZSBvcGVyYXRpb24gYXMgYSBmdW5jdGlvbiBwb2ludGVyLCBJIHRoaW5rIEkgY2FuIHVzZSBpdC4gQnV0LCBJIGFtIGdvaW5nIHRvIGZvY3VzIG9uIGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIEknbGwgaGF2ZSB0byBzZWUgaWYgdGhleSBhcmUgaW5saW5lZC5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIEtjb25maWcgaXMgZW5hYmxlZC4gSSBrbm93IGl0J3MgQ09ORklHX0ZVU0VfRlMuXG5cbk9rYXksIG5vdyBsZXQncyB1c2UgdGhlIHRvb2xzIHRvIHZlcmlmeSBhbmQgYmVnaW4gdGhlIGZ1enppbmcgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDExMSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU4OjA3LjU4Nzc3NjE3M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA3MzQ5NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZnVzZV9kZXZfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjM5Ny1cXG5mcy9mdXNlL2Rldi5jOjIzOTg6c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcXG5mcy9mdXNlL2Rldi5jLTIzOTkte1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yNDI2PWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjQzMy1cXHQucG9sbFxcdFxcdD0gZnVzZV9kZXZfcG9sbCxcXG5mcy9mdXNlL2Rldi5jOjI0MzQ6XFx0LmZsdXNoXFx0XFx0PSBmdXNlX2Rldl9mbHVzaCxcXG5mcy9mdXNlL2Rldi5jLTI0MzUtXFx0LnJlbGVhc2VcXHQ9IGZ1c2VfZGV2X3JlbGVhc2UsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU4OjA3LjcyODUxNjQ5OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTUxODg2MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXkncmUgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBpbiBGVVNFIGZvciBkZXZpY2UgbWFuYWdlbWVudCwgcmlnaHQ/IGBmdXNlX2dldF9kZXZgIGlzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgZWl0aGVyIGFsbG9jYXRpbmcgb3IgcmV0cmlldmluZyBhIEZVU0UgZGV2aWNlIHN0cnVjdHVyZSwgYW5kIHByZXN1bWFibHkgaGFuZGxpbmcgc29tZSBzb3J0IG9mIGxvY2tpbmcgb3IgcmVmZXJlbmNlIGNvdW50aW5nIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5IHdoZW4gbXVsdGlwbGUgdXNlcnNwYWNlIHByb2Nlc3NlcyBhY2Nlc3MgdGhlIHNhbWUgZmlsZXN5c3RlbS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRyaWNhY2llcyBvZiBob3cgdGhpcyBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBrZXJuZWwtbGV2ZWwgZGF0YSBzdHJ1Y3R1cmVzLiBTcGVjaWZpY2FsbHksIEknbSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBmaWxlIGRlc2NyaXB0b3IgYW5kIHRoZSBkZXZpY2UsIGFuZCB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB3aXRoIG90aGVyIG9wZXJhdGlvbnMgbGlrZSBgZnVzZV9tb3VudGAgb3IgYGZ1c2VfdW5tb3VudGAuIEknbSBnb2luZyB0byBsb29rIGRlZXBlciBhdCBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIGRldmljZSByZXVzZS4gQXJlIHRoZXJlIGNoZWNrcyB0byBlbnN1cmUgdGhlIGRldmljZSBpcyB2YWxpZCwgb3IgZG9lcyB0aGlzIGZ1bmN0aW9uIGRvIGFueSBzb3J0IG9mIGdhcmJhZ2UgY29sbGVjdGlvbiBpZiBhIHByZXZpb3VzIGZpbGVzeXN0ZW0gaW5zdGFuY2Ugd2FzIGltcHJvcGVybHkgdG9ybiBkb3duP1xuXG5UaGVuIHRoZXJlJ3MgYGZ1c2VfZGV2X3JlbGVhc2VgLiBUaGlzIGlzIHRoZSBjb3VudGVycGFydCwgdGhlIG9uZSB0aGF0IGRlYWxzIHdpdGggZGV2aWNlIGNsZWFudXAuIEkgd2FudCB0byBrbm93IGV4YWN0bHkgd2hhdCBpdCBkb2VzLiBEb2VzIGl0IGZyZWUgdGhlIGRldmljZSBzdHJ1Y3R1cmUgZW50aXJlbHksIG9yIG1lcmVseSBkZWNyZW1lbnQgYSByZWZlcmVuY2UgY291bnQ/IEhvdyBkb2VzIGl0IGhhbmRsZSB0aGUgc2l0dWF0aW9uIGlmIHRoZXJlIGFyZSBzdGlsbCBvdXRzdGFuZGluZyBmaWxlIGhhbmRsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2U/IElzIHRoZXJlIHNvbWUgc29ydCBvZiBkZWZlcnJlZCBjbGVhbnVwIG1lY2hhbmlzbT8gQW5kIG1vcmUgaW1wb3J0YW50bHksIGRvZXMgaXQgcmVsaWFibHkgc3luY2hyb25pemUgd2l0aCBhbnkgcGVuZGluZyBJL08gb3BlcmF0aW9ucyBiZWZvcmUgcmVsZWFzaW5nIHRoZSBkZXZpY2U/IEkndmUgc2VlbiBlbm91Z2ggRlVTRSBpbXBsZW1lbnRhdGlvbnMgb3ZlciB0aGUgeWVhcnMgdG8ga25vdyB0aGF0IHRoZXNlIHJlbGVhc2Ugcm91dGluZXMgYXJlIG9mdGVuIHdoZXJlIHN1YnRsZSBidWdzIGx1cmssIHBhcnRpY3VsYXJseSBhcm91bmQgcmVzb3VyY2UgbGVha3MgYW5kIGRhbmdsaW5nIHBvaW50ZXJzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUncyBhbnkgaW50ZXJhY3Rpb24gd2l0aCB0aGUgRlVTRSBrZXJuZWwgbW9kdWxlJ3MgaW50ZXJuYWwgZGV2aWNlIGxpc3Qgb3Igc29tZSBzaW1pbGFyIG1hbmFnZW1lbnQuIExldCdzIHNlZSBob3cgdGhlc2UgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zIHBsYXkgdG9nZXRoZXIgYW5kIHdoYXQgdGhlaXIgaW1wbGljYXRpb25zIGFyZSBmb3IgdGhlIG92ZXJhbGwgc3RhYmlsaXR5IGFuZCByZWxpYWJpbGl0eSBvZiBGVVNFLWJhc2VkIGZpbGVzeXN0ZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjYyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTg6MTEuODQzNzA3MTkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDEwODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZ1c2VfZ2V0X2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9mdXNlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2N1c2UuYz01NTU9c3RhdGljIGludCBjdXNlX2NoYW5uZWxfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2N1c2UuYy01NTYte1xcbmZzL2Z1c2UvY3VzZS5jOjU1NzpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvY3VzZS5jLTU1OC1cXHRzdHJ1Y3QgY3VzZV9jb25uICpjYyA9IGZjX3RvX2NjKGZ1ZC1cXHUwMDNlY2hhbi1cXHUwMDNlY29ubik7XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE2NTE9c3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNjYxLVxcbmZzL2Z1c2UvZGV2LmM6MTY2MjpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Rldi5jLTE2NjMte1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0xNjg1PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNjg4LVxcdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cXHUwMDNla2lfZmlscDtcXG5mcy9mdXNlL2Rldi5jOjE2ODk6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0xNjkwLVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0xNzAyPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNzA5LVxcdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XFxuZnMvZnVzZS9kZXYuYzoxNzEwOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGluKTtcXG5mcy9mdXNlL2Rldi5jLTE3MTEtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE5NzM9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE5NzUtXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE5NzY6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2Rldihpb2NiLVxcdTAwM2VraV9maWxwKTtcXG5mcy9mdXNlL2Rldi5jLTE5NzctXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE5ODk9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3dyaXRlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE5OTctXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE5OTg6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihvdXQpO1xcbmZzL2Z1c2UvZGV2LmMtMTk5OS1cXHRzaXplX3QgcmVtO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMDgxPXN0YXRpYyBfX3BvbGxfdCBmdXNlX2Rldl9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMDg0LVxcdHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxO1xcbmZzL2Z1c2UvZGV2LmM6MjA4NTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIwODYtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIyNzI9c3RhdGljIGludCBmdXNlX2Rldl9mYXN5bmMoaW50IGZkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG9uKVxcbmZzL2Z1c2UvZGV2LmMtMjI3My17XFxuZnMvZnVzZS9kZXYuYzoyMjc0OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjI3NS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjI4Mz1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9jbG9uZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMzAyLVxcbmZzL2Z1c2UvZGV2LmM6MjMwMzpcXHRmdWQgPSBmdXNlX2dldF9kZXYoZmRfZmlsZShmKSk7XFxuZnMvZnVzZS9kZXYuYy0yMzA0LVxcdGlmIChJU19FUlIoZnVkKSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjMxOD1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIzMjAte1xcbmZzL2Z1c2UvZGV2LmM6MjMyMTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzMjItXFx0c3RydWN0IGZ1c2VfYmFja2luZ19tYXAgbWFwO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzM2PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcXG5mcy9mdXNlL2Rldi5jLTIzMzcte1xcbmZzL2Z1c2UvZGV2LmM6MjMzODpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzMzktXFx0aW50IGJhY2tpbmdfaWQ7XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzODg9c3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvZGV2LmMtMjM4OS17XFxuZnMvZnVzZS9kZXYuYzoyMzkwOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMzkxLVxcdGlmICghZnVkKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYz0xMjE3PWludCBmdXNlX3VyaW5nX2NtZChzdHJ1Y3QgaW9fdXJpbmdfY21kICpjbWQsIHVuc2lnbmVkIGludCBpc3N1ZV9mbGFncylcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmMtMTIzMi1cXG5mcy9mdXNlL2Rldl91cmluZy5jOjEyMzM6XFx0ZnVkID0gZnVzZV9nZXRfZGV2KGNtZC1cXHUwMDNlZmlsZSk7XFxuZnMvZnVzZS9kZXZfdXJpbmcuYy0xMjM0LVxcdGlmIChJU19FUlIoZnVkKSkge1xcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9MzYxPXN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2ZpbGVfdG9fZnVkKHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzY1LVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjM2NjpzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzY3LXtcXG4tLVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oPTM3Nz12b2lkIGZ1c2VfaXF1ZXVlX2luaXQoc3RydWN0IGZ1c2VfaXF1ZXVlICpmaXEsIGNvbnN0IHN0cnVjdCBmdXNlX2lxdWV1ZV9vcHMgKm9wcywgdm9pZCAqcHJpdik7XFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzc4LVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjM3OTpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtMzgwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMDo1ODoxMS45MDExMjQ2OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODQxNTQwMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk9ic2VydmF0aW9ucyBvbiBgZnVzZV9nZXRfZGV2YCBhbmQgYGZ1c2VfZGV2X3JlbGVhc2VgKipcblxuQWxyaWdodCwgc28gSSdtIHNlZWluZyBhIGxvdCBvZiB1c2FnZSBvZiBgZnVzZV9nZXRfZGV2YCBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIEhtbSwgdGhhdCdzIG5vdCBzdXJwcmlzaW5nLCBnaXZlbiBpdHMgcm9sZSBpbiwgd2VsbCwgZ2V0dGluZyB0aGUgZGV2aWNlLiBJdCdzIHRoZSBjb3JlIG9mIHRoZSB3aG9sZSBkZXZpY2UgbWFuYWdlbWVudCwgc28gaXQgbWFrZXMgc2Vuc2UgaXQncyByZWZlcmVuY2VkIGZyZXF1ZW50bHkuIEknbGwgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIHRoaW5raW5nIGFib3V0IGFueSBwb3RlbnRpYWwgcmVmYWN0b3Jpbmcgb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucyBpbiB0aGlzIGFyZWEuIEl0J3Mgb2J2aW91c2x5IGEgY3JpdGljYWwgcGF0aC5cblxuQW5kIG5vdyBJJ20gYWxzbyBub3RpY2luZyBtb2RpZmljYXRpb25zIHRvIGBmdXNlX2Rldl9yZWxlYXNlYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhcyB0aGlzIGxpa2VseSBwb2ludHMgdG8gc29tZSBzcGVjaWZpYyBjaGFuZ2UgaW4gaG93IGRldmljZXMgYXJlIGJlaW5nIGZyZWVkIG9yIGhvdyB0aGVpciByZXNvdXJjZXMgYXJlIG1hbmFnZWQgYXQgc2h1dGRvd24uIFNvLCBzb21ldGhpbmcgaXMgbGlrZWx5IHRvdWNoaW5nIHRoZSBkZXZpY2UgbGlmZXRpbWUgbW9yZSBkZWVwbHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBjaGFuZ2VzIGluIGBmdXNlX2Rldl9yZWxlYXNlYCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0LiBBcmUgdGhleSBhZGRyZXNzaW5nIGEgcmVzb3VyY2UgbGVhaz8gQXJlIHRoZXkgYWx0ZXJpbmcgaG93IEZVU0UgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcga2VybmVsIGZpbGUgc3lzdGVtPyBJcyBpdCBzb21lIHNvcnQgb2YgZ2FyYmFnZSBjb2xsZWN0aW9uIHN0cmF0ZWd5PyBJIG5lZWQgdG8gYW5hbHl6ZSB0aG9zZSBtb2RpZmljYXRpb25zIGNsb3NlbHkuIEl0J3Mgdml0YWwgSSB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjaGFuZ2VzLCBlc3BlY2lhbGx5IHJlbGF0ZWQgdG8gcmVsZWFzaW5nIGRldmljZXMsIGFmZmVjdCByZWxpYWJpbGl0eSBhbmQgcG90ZW50aWFsIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM4NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU4OjE1LjM4NTI4MDY5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODg2MjQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlX2Rldl9yZWxlYXNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvY3VzZS5jPTU1NT1zdGF0aWMgaW50IGN1c2VfY2hhbm5lbF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9jdXNlLmMtNTcyLVxcbmZzL2Z1c2UvY3VzZS5jOjU3MzpcXHRyZXR1cm4gZnVzZV9kZXZfcmVsZWFzZShpbm9kZSwgZmlsZSk7XFxuZnMvZnVzZS9jdXNlLmMtNTc0LX1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9NDU4PXN0YXRpYyBib29sIGZ1c2VfZGV2X2luc3RhbGxfd2l0aF9wcShzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCwgc3RydWN0IGZ1c2VfY2hhbiAqZmNoLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy00NjUtXFx0ICogUGFpcnMgd2l0aDpcXG5mcy9mdXNlL2Rldi5jOjQ2NjpcXHQgKiAgLSB4Y2hnKCkgaW4gZnVzZV9kZXZfcmVsZWFzZSgpXFxuZnMvZnVzZS9kZXYuYy00NjctXFx0ICogIC0gc21wX2xvYWRfYWNxdWlyZSgpIGluIGZ1c2VfZGV2X2ZjX2dldCgpXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTUxND12b2lkIGZ1c2VfZGV2X3B1dChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtNTIyLVxcdGlmIChmY2ggXFx1MDAyNlxcdTAwMjYgZmNoICE9IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSB7XFxuZnMvZnVzZS9kZXYuYzo1MjM6XFx0XFx0LyogVGhpcyBpcyB0aGUgdmlydGlvZnMgY2FzZSAoZnVzZV9kZXZfcmVsZWFzZSgpIG5vdCBjYWxsZWQpICovXFxuZnMvZnVzZS9kZXYuYy01MjQtXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMjE5PXN0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjIzMS1cXG5mcy9mdXNlL2Rldi5jOjIyMzI6aW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXFxuZnMvZnVzZS9kZXYuYy0yMjMzLXtcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjI2OS19XFxuZnMvZnVzZS9kZXYuYzoyMjcwOkVYUE9SVF9TWU1CT0xfR1BMKGZ1c2VfZGV2X3JlbGVhc2UpO1xcbmZzL2Z1c2UvZGV2LmMtMjI3MS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjQyNj1jb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XFxuLS1cXG5mcy9mdXNlL2Rldi5jLTI0MzQtXFx0LmZsdXNoXFx0XFx0PSBmdXNlX2Rldl9mbHVzaCxcXG5mcy9mdXNlL2Rldi5jOjI0MzU6XFx0LnJlbGVhc2VcXHQ9IGZ1c2VfZGV2X3JlbGVhc2UsXFxuZnMvZnVzZS9kZXYuYy0yNDM2LVxcdC5mYXN5bmNcXHRcXHQ9IGZ1c2VfZGV2X2Zhc3luYyxcXG4tLVxcbmZzL2Z1c2UvZGV2X3VyaW5nLmM9NDkwPXZvaWQgZnVzZV91cmluZ19zdG9wX3F1ZXVlcyhzdHJ1Y3QgZnVzZV9yaW5nICpyaW5nKVxcbi0tXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy01MDgtICpcXG5mcy9mdXNlL2Rldl91cmluZy5jOjUwOTogKiBSZWxlYXNpbmcgdGhlIGxhc3QgZW50cnkgc2hvdWxkIHRyaWdnZXIgZnVzZV9kZXZfcmVsZWFzZSgpIGlmXFxuZnMvZnVzZS9kZXZfdXJpbmcuYy01MTAtICogdGhlIGRhZW1vbiB3YXMgdGVybWluYXRlZFxcbi0tXFxuZnMvZnVzZS9mdXNlX2Rldl9pLmg9NDE3PXN0cnVjdCBmdXNlX2RldiAqZnVzZV9kZXZfYWxsb2Modm9pZCk7XFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtNDE4LVxcbmZzL2Z1c2UvZnVzZV9kZXZfaS5oOjQxOTppbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSk7XFxuZnMvZnVzZS9mdXNlX2Rldl9pLmgtNDIwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMDo1ODoxNS40NDQxNDgwOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI5MjE1MzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlOlxuXG4qKk15IEN1cnJlbnQgRm9jdXMqKlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIHRoZXNlIHN5bWJvbHM6IGBmdXNlX2dldF9kZXZgIGFuZCBgZnVzZV9kZXZfcmVsZWFzZWAuIFRoZXkgc2VlbSBsaWtlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGRlYnVnZ2luZyBvciBkZWVwIGRpdmluZyBpbnRvIHRoZSBGVVNFIGtlcm5lbCBpbnRlcmFjdGlvbiwgbGlrZWx5IHJlbGF0ZWQgdG8gZGV2aWNlIG1hbmFnZW1lbnQsIGFjcXVpc2l0aW9uLCBhbmQgcmVsZWFzZSB3aXRoaW4gdGhlIEZVU0UgZnJhbWV3b3JrLiBJJ20gZ29pbmcgdG8gYm9va21hcmsgdGhvc2UgZnVuY3Rpb25zLiBBbHNvLCBteSBjb25maWd1cmF0aW9ucyBmb3IgdGhpcyBzaG91bGQgYmUgYEZVU0VfRlNgLiBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMDo1ODoxOC4zNzMzNjUzMjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjQ1NzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGVVNFX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXFxuZnMvZnVzZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQyMDo1ODoxOC40MjkwMTY5MTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzYyMTU3NDk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuIEkndmUgZ290IG15IGluaXRpYWwgY29uZmlndXJhdGlvbiBzZXQsIGJ1dCBJIG5lZWQgdG8gZG8gYSB0aG9yb3VnaCBjaGVjayBmb3IgYW55IG92ZXJsb29rZWQgb3Igc2Vjb25kYXJ5IGNvbmZpZ3VyYXRpb25zLCBleHRlcm5hbCBzb3VyY2VzLCBvciBvdmVycmlkZXMgdGhhdCBtaWdodCBiZSBpbmZsdWVuY2luZyB0aGUgY3VycmVudCBiZWhhdmlvci4gSSdtIHRoaW5raW5nLCBcIklzIHRoZXJlIGFub3RoZXIgY29uZmlnIGZpbGUsIGEgZGlmZmVyZW50IGVudmlyb25tZW50IHZhcmlhYmxlLCBvciBzb21lIGF1dG9tYXRlZCBwcm9jZXNzIEkndmUgZm9yZ290dGVuIGFib3V0IHRoYXQgY291bGQgYmUgYWZmZWN0aW5nIHRoZXNlIHNldHRpbmdzP1wiIEl0J3MgYSBmdW5kYW1lbnRhbCBzYW5pdHkgY2hlY2s6IGVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgdGhlIG9ubHkgb25lIGluIHBsYXkuIEkgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNoYXNpbmcgZ2hvc3RzLiBMZXQncyBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBzdXJwcmlzZSBwYXJhbWV0ZXJzIG9yIGNvbmZsaWN0aW5nIHNldHRpbmdzIGJlZm9yZSBJIGdldCBpbnRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NzkwLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTg6MjIuMDUwNTkzODMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTM1NTI3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2Z1c2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL0tjb25maWc9MjI9Y29uZmlnIENVU0VcXG5mcy9mdXNlL0tjb25maWctMjMtXFx0dHJpc3RhdGUgXFxcIkNoYXJhY3RlciBkZXZpY2UgaW4gVXNlcnNwYWNlIHN1cHBvcnRcXFwiXFxuZnMvZnVzZS9LY29uZmlnOjI0OlxcdGRlcGVuZHMgb24gRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5mcy9mdXNlL0tjb25maWc9MzI9Y29uZmlnIFZJUlRJT19GU1xcbmZzL2Z1c2UvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiVmlydGlvIEZpbGVzeXN0ZW1cXFwiXFxuZnMvZnVzZS9LY29uZmlnOjM0OlxcdGRlcGVuZHMgb24gRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy0zNS1cXHRzZWxlY3QgVklSVElPXFxuLS1cXG5mcy9mdXNlL0tjb25maWc9NDM9Y29uZmlnIEZVU0VfREFYXFxuLS1cXG5mcy9mdXNlL0tjb25maWctNDYtXFx0c2VsZWN0IElOVEVSVkFMX1RSRUVcXG5mcy9mdXNlL0tjb25maWc6NDc6XFx0ZGVwZW5kcyBvbiBWSVJUSU9fRlNcXG5mcy9mdXNlL0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBGU19EQVhcXG5mcy9mdXNlL0tjb25maWc6NDk6XFx0ZGVwZW5kcyBvbiBEQVhcXG5mcy9mdXNlL0tjb25maWctNTAtXFx0aGVscFxcbi0tXFxuZnMvZnVzZS9LY29uZmlnPTU3PWNvbmZpZyBGVVNFX1BBU1NUSFJPVUdIXFxuLS1cXG5mcy9mdXNlL0tjb25maWctNTktXFx0ZGVmYXVsdCB5XFxuZnMvZnVzZS9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gRlVTRV9GU1xcbmZzL2Z1c2UvS2NvbmZpZy02MS1cXHRzZWxlY3QgRlNfU1RBQ0tcXG4tLVxcbmZzL2Z1c2UvS2NvbmZpZz02OD1jb25maWcgRlVTRV9JT19VUklOR1xcbi0tXFxuZnMvZnVzZS9LY29uZmlnLTcwLVxcdGRlZmF1bHQgeVxcbmZzL2Z1c2UvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIEZVU0VfRlNcXG5mcy9mdXNlL0tjb25maWc6NzI6XFx0ZGVwZW5kcyBvbiBJT19VUklOR1xcbmZzL2Z1c2UvS2NvbmZpZy03My1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDIwOjU4OjIyLjEwNTk1NDU3OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzMwODE5OTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBGVVNFIERldmljZSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgcGlucG9pbnRlZCB0aGUgcGF0Y2gncyBsb2NhdGlvbjogaXQncyBuZXN0bGVkIHdpdGhpbiBgZnMvZnVzZS9kZXYuY2AuIFRoaXMgdGVsbHMgbWUgaW1tZWRpYXRlbHkgdGhhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYEZVU0VfRlNgLiBObyBuZWVkIHRvIGdvIGh1bnRpbmcgdGhyb3VnaCBvdGhlciBtb2R1bGVzOyB0aGlzIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIE15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlIHN5bWJvbHMgYGZ1c2VfZ2V0X2RldmAgYW5kIGBmdXNlX2Rldl9yZWxlYXNlYC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIG1vZGlmaWVkIGJ5IHRoZSBwYXRjaCwgc28gdGhleSBhcmUgdGhlIGxpa2VseSBlbnRyeXBvaW50cyBmb3IgZnV6emluZy5cblxuTXkgcmVhc29uaW5nPyBJdCdzIGltcGFjdGluZyBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nLiBTcGVjaWZpY2FsbHksIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBjbG9zZWQgYW5kIGhvdyB0aGUgYXNzb2NpYXRlZCBjaGFubmVscyBhcmUgYWJvcnRlZCB3aGVuIGV2ZXJ5dGhpbmcgc2h1dHMgZG93bi4gVGhpcyBjbGVhcmx5IHRvdWNoZXMgdXBvbiBmdW5kYW1lbnRhbCBmdW5jdGlvbmFsIGJlaGF2aW9yIGFuZCBlcnJvciBoYW5kbGluZy4gVGhpcyB0eXBlIG9mIGNoYW5nZSBpcyBwcmFjdGljYWxseSBzY3JlYW1pbmcgZm9yIGZ1enppbmcgdG8gZW5zdXJlIHJvYnVzdG5lc3MgYW5kIHVuY292ZXIgYW55IGVkZ2UgY2FzZXMgaW4gdGhlIGRldmljZSdzIGxpZmVjeWNsZS4gSXQncyBub3QgYSB0cml2aWFsIGNvc21ldGljIGNoYW5nZTsgaXQncyBhIG1vZGlmaWNhdGlvbiB0byBob3cgdGhlIHN5c3RlbSAqd29ya3MqLCBhbmQgdGhlcmVmb3JlIHdhcnJhbnRzIHJpZ29yb3VzIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0MjEsIk91dHB1dFRva2VucyI6OTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMjA6NTg6MjYuNDM2Nzc3MDM1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYzNjAwMDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2dldF9kZXZcIixcbiAgICBcImZ1c2VfZGV2X3JlbGVhc2VcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IGhvdyBGVVNFIGRldmljZXMgYXJlIGNsb3NlZCBhbmQgaG93IHRoZSBjaGFubmVsIGlzIGFib3J0ZWQgd2hlbiBhbGwgZGV2aWNlcyBhcmUgY2xvc2luZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZ2V0X2RldlwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaG93IEZVU0UgZGV2aWNlcyBhcmUgY2xvc2VkIGFuZCBob3cgdGhlIGNoYW5uZWwgaXMgYWJvcnRlZCB3aGVuIGFsbCBkZXZpY2VzIGFyZSBjbG9zaW5nLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[1] Phase: Succeeded StartedAt: 2026-07-24 20:58:38 +0000 UTC FinishedAt: 2026-07-24 20:58:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 20:58:38 +0000 UTC FinishedAt: 2026-07-24 20:58:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2] Phase: Succeeded StartedAt: 2026-07-24 20:58:38 +0000 UTC FinishedAt: 2026-07-25 01:39:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN) Phase: Succeeded StartedAt: 2026-07-24 20:58:38 +0000 UTC FinishedAt: 2026-07-25 01:39:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 20:58:38 +0000 UTC FinishedAt: 2026-07-24 20:58:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 20:58:38 +0000 UTC FinishedAt: 2026-07-24 20:58:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-3575528051/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 20:58:48 +0000 UTC FinishedAt: 2026-07-24 21:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 20:58:48 +0000 UTC FinishedAt: 2026-07-24 21:38:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aa9a1d16-8d10-45b9-85fb-ef806b97171c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-3575528051/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d0c24538-ccab-44db-a0b6-ecf93eda9f22", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-196648225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 20:58:48 +0000 UTC FinishedAt: 2026-07-24 21:38:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aa9a1d16-8d10-45b9-85fb-ef806b97171c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-3575528051/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "d0c24538-ccab-44db-a0b6-ecf93eda9f22", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-196648225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-24 21:38:56 +0000 UTC FinishedAt: 2026-07-24 21:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-24 21:38:56 +0000 UTC FinishedAt: 2026-07-24 21:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-24 21:38:56 +0000 UTC FinishedAt: 2026-07-24 21:39:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-24 21:38:56 +0000 UTC FinishedAt: 2026-07-24 21:39:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-1292442986/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-24 21:39:06 +0000 UTC FinishedAt: 2026-07-24 21:41:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-24 21:39:06 +0000 UTC FinishedAt: 2026-07-24 21:41:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d0c24538-ccab-44db-a0b6-ecf93eda9f22,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-196648225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-24 21:41:32 +0000 UTC FinishedAt: 2026-07-24 21:41:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-24 21:41:32 +0000 UTC FinishedAt: 2026-07-24 21:41:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-24 21:41:32 +0000 UTC FinishedAt: 2026-07-24 22:35:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-24 21:41:32 +0000 UTC FinishedAt: 2026-07-24 22:35:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aa9a1d16-8d10-45b9-85fb-ef806b97171c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-1292442986/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "912e12b4-9bcf-4298-b2df-5e228e69f5bf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-3213969806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-24 21:41:32 +0000 UTC FinishedAt: 2026-07-24 22:34:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*aa9a1d16-8d10-45b9-85fb-ef806b97171c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-1292442986/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "912e12b4-9bcf-4298-b2df-5e228e69f5bf", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-3213969806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-24 22:35:00 +0000 UTC FinishedAt: 2026-07-24 22:35:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-24 22:35:00 +0000 UTC FinishedAt: 2026-07-24 22:35:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-24 22:35:00 +0000 UTC FinishedAt: 2026-07-24 22:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-24 22:35:00 +0000 UTC FinishedAt: 2026-07-24 22:36:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*912e12b4-9bcf-4298-b2df-5e228e69f5bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-3213969806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-25 01:39:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-25 01:39:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d0c24538-ccab-44db-a0b6-ecf93eda9f22,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*912e12b4-9bcf-4298-b2df-5e228e69f5bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-196648225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-3213969806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-24 22:38:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-24 22:38:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-2715030271/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest Phase: Succeeded StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-24 22:54:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:retest-data,Default:nil,Value:*{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d0c24538-ccab-44db-a0b6-ecf93eda9f22,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*912e12b4-9bcf-4298-b2df-5e228e69f5bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-196648225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-3213969806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest[0] Phase: Succeeded StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-24 22:38:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest[0].save-retest-task Phase: Succeeded StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-24 22:38:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-3263744968/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-24 22:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-24 22:37:00 +0000 UTC FinishedAt: 2026-07-24 22:37:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-24 22:38:19 +0000 UTC FinishedAt: 2026-07-25 01:39:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-24 22:38:19 +0000 UTC FinishedAt: 2026-07-25 01:39:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d0c24538-ccab-44db-a0b6-ecf93eda9f22,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*912e12b4-9bcf-4298-b2df-5e228e69f5bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-196648225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-3213969806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-2715030271/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest[1] Phase: Succeeded StartedAt: 2026-07-24 22:38:19 +0000 UTC FinishedAt: 2026-07-24 22:54:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5t7pj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["fuse_get_dev","fuse_dev_release"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"918eeded-5399-4261-9af3-70fb1fcc369c","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:{"findings":["0c2890de-1b7a-4718-a188-a597ff4d74a7"]},track:KASAN)[10].run-retest[1].retest Phase: Succeeded StartedAt: 2026-07-24 22:38:19 +0000 UTC FinishedAt: 2026-07-24 22:54:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d0c24538-ccab-44db-a0b6-ecf93eda9f22,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*912e12b4-9bcf-4298-b2df-5e228e69f5bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Previous reproducers,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-196648225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-build-action-3213969806/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:retest-task,Path:/data/retest.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow5t7pj/series-workflow5t7pj-convert-artifact-3263744968/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}