Name: series-workflowsx5nw Phase: Succeeded StartedAt: 2026-07-27 18:05:35 +0000 UTC FinishedAt: 2026-07-27 23:40:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[0] Phase: Succeeded StartedAt: 2026-07-27 18:05:36 +0000 UTC FinishedAt: 2026-07-27 18:26:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 18:05:36 +0000 UTC FinishedAt: 2026-07-27 18:26:44 +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": "b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "fuse_dev_flush", "fuse_dev_release", "fuse_get_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDssCiAgICAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgYGZsdXNoYCBmaWxlIG9wZXJhdGlvbiB0byBgL2Rldi9mdXNlYCBhbmQgdXBkYXRpbmcgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIHRvIGhhbmRsZSBmaW5hbCBjbG9zZXMgcHJvcGVybHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxODoyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJlMjczNTYxZTY0MDIxZTEyYTEwZDJjNjNhNmViYTczYTZhYmFiYjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxODoyNjowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuY1xuaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9kZXYuY1xuQEAgLTE2NjIsMTggJiM0MzsxNjYyLDIzIEBAIHN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4mIzQzO1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpKSB7XG4mIzQzO1x0aWYgKHVubGlrZWx5KCFmY2gpKSB7XG4gXHRcdC8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi9cbiBcdFx0aWYgKCFmdWQtXHUwMDNlc3luY19pbml0KVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XG4gXG4tXHRcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTtcbiYjNDM7XHRcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICAoZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkgIT0gTlVMTCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSlcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XG4mIzQzO1xuIFx0cmV0dXJuIGZ1ZDtcbiB9XG4gXG5AQCAtMjIxMSwxNyAmIzQzOzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbiBcdGZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZ1c2VfZGV2ICpwb3M7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgXHUwMDI2ZmNoLVx1MDAzZWRldmljZXMsIGVudHJ5KSB7XG4mIzQzO1x0XHRpZiAoIXBvcy1cdTAwM2VjbG9zaW5nKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbiBcdC8qIFBhaXJzIHdpdGggY21weGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xuIFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0geGNoZyhcdTAwMjZmdWQtXHUwMDNlY2hhbiwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xuIFxuLVx0aWYgKGZjaCkge1xuJiM0MztcdGlmIChmY2ggXHUwMDI2XHUwMDI2IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkge1xuIFx0XHRzdHJ1Y3QgZnVzZV9wcXVldWUgKmZwcSA9IFx1MDAyNmZ1ZC1cdTAwM2VwcTtcbiBcdFx0TElTVF9IRUFEKHRvX2VuZCk7XG4gXHRcdHVuc2lnbmVkIGludCBpO1xuIFx0XHRib29sIGxhc3Q7XG4mIzQzO1x0XHRib29sIGFib3J0O1xuIFxuIFx0XHQvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG5AQCAtMjIzNCwxNCAmIzQzOzIyNTMsMTUgQEAgaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gXHRcdGxpc3RfZGVsKFx1MDAyNmZ1ZC1cdTAwM2VlbnRyeSk7XG4gXHRcdC8qIEFyZSB3ZSB0aGUgbGFzdCBvcGVuIGRldmljZT8gKi9cbiBcdFx0bGFzdCA9IGxpc3RfZW1wdHkoXHUwMDI2ZmNoLVx1MDAzZWRldmljZXMpO1xuJiM0MztcdFx0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuIFx0XHRzcGluX3VubG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4gXG4gXHRcdGZ1c2VfZGV2X2VuZF9yZXF1ZXN0cyhcdTAwMjZ0b19lbmQpO1xuIFxuLVx0XHRpZiAobGFzdCkge1xuJiM0MztcdFx0aWYgKGxhc3QpXG4gXHRcdFx0V0FSTl9PTihmY2gtXHUwMDNlaXEuZmFzeW5jICE9IE5VTEwpO1xuJiM0MztcdFx0aWYgKGFib3J0KVxuIFx0XHRcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcbi1cdFx0fVxuIFx0XHRmdXNlX2Nvbm5fcHV0KGZjaC1cdTAwM2Vjb25uKTtcbiBcdH1cbiBcdGZ1c2VfZGV2X3B1dChmdWQpO1xuQEAgLTIzNzUsNiAmIzQzOzIzOTUsMzQgQEAgc3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxuIH1cbiAjZW5kaWZcbiBcbiYjNDM7c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7XG4mIzQzO1x0Ym9vbCBhYm9ydDtcbiYjNDM7XG4mIzQzO1x0aWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEF0b21pY2FsbHkgdHJhbnNpdGlvbiBmdWQtXHUwMDNlY2hhbiBmcm9tIE5VTEwgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiYjNDM7XHQgKiBvbiBmaW5hbCBjbG9zZSB0byBwcmV2ZW50IGEgbGF0ZXIgZnVzZV9kZXZfaW5zdGFsbCgpIGZyb20gc3VjY2VlZGluZy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRmY2ggPSBjbXB4Y2hnKFx1MDAyNmZ1ZC1cdTAwM2VjaGFuLCBOVUxMLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XG4mIzQzO1x0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4mIzQzO1x0ZnVkLVx1MDAzZWNsb3NpbmcgPSB0cnVlO1xuJiM0MztcdGFib3J0ID0gZmNoLVx1MDAzZWNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcbiYjNDM7XHRzcGluX3VubG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChhYm9ydClcbiYjNDM7XHRcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gXHQub3Blblx0XHQ9IGZ1c2VfZGV2X29wZW4sXG5AQCAtMjM4Myw2ICYjNDM7MjQzMSw3IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcbiBcdC53cml0ZV9pdGVyXHQ9IGZ1c2VfZGV2X3dyaXRlLFxuIFx0LnNwbGljZV93cml0ZVx0PSBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUsXG4gXHQucG9sbFx0XHQ9IGZ1c2VfZGV2X3BvbGwsXG4mIzQzO1x0LmZsdXNoXHRcdD0gZnVzZV9kZXZfZmx1c2gsXG4gXHQucmVsZWFzZVx0PSBmdXNlX2Rldl9yZWxlYXNlLFxuIFx0LmZhc3luY1x0XHQ9IGZ1c2VfZGV2X2Zhc3luYyxcbiBcdC51bmxvY2tlZF9pb2N0bCA9IGZ1c2VfZGV2X2lvY3RsLFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbmluZGV4IDY2OGM4MzkxZDYxYzAzLi4yODMzYTAzNTBjNDM1YSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuQEAgLTMwMiw2ICYjNDM7MzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHtcbiBcdC8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqL1xuIFx0Ym9vbCBzeW5jX2luaXQ7XG4gXG4mIzQzO1x0LyoqIEBjbG9zaW5nOiBGaW5hbCBjbG9zZSBoYXMgc3RhcnRlZCwgcHJvdGVjdGVkIGJ5IGNoYW4tXHUwMDNlbG9jayAqL1xuJiM0MztcdGJvb2wgY2xvc2luZztcbiYjNDM7XG4gXHQvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmNoYW47XG4gXG5AQCAtMzMwLDE3ICYjNDM7MzMzLDI1IEBAIHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUge1xuIFx0fSByaW5nO1xuIH07XG4gXG4tLyogZnVkLVx1MDAzZWNoYW4gZ2V0cyBhc3NpZ25lZCB0byB0aGlzIHZhbHVlIHdoZW4gL2Rldi9mdXNlIGlzIGNsb3NlZCAqL1xuLSNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXG4tXG4gLypcbi0gKiBMb2NrbGVzcyBhY2Nlc3MgaXMgT0ssIGJlY2F1c2UgZnVkLVx1MDAzZWNoYW4gaXMgc2V0IG9uY2UgZHVyaW5nIG1vdW50IGFuZCBpcyB2YWxpZFxuLSAqIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLlxuJiM0MzsgKiBmdWQtXHUwMDNlY2hhbiBoYXMgdGhlIGZvbGxvd2luZyBtb25vdG9uaWMgc3RhdGUgdHJhbnNpdGlvbnM6XG4mIzQzOyAqXG4mIzQzOyAqIE5VTEwgLVx1MDAzZSB2YWxpZCBjaGFubmVsIC1cdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiYjNDM7ICogTlVMTCAtLS0tLS0tLS0tLS0tLS0tLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuICAqXG4tICogZnVkLVx1MDAzZWNoYW4gaXMgc2V0IHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIG9ubHkgYWZ0ZXIgdGhlIGNvbnRhaW5pbmcgZmlsZSBpc1xuLSAqIHJlbGVhc2VkLCBzbyByZXN1bHQgaXMgc2FmZSB0byBkZXJlZmVyZW5jZSBpbiBtb3N0IGNhc2VzLiAgRXhjZXB0aW9ucyBhcmU6XG4tICogZnVzZV9kZXZfcHV0KCkgYW5kIGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oKS5cbiYjNDM7ICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWxcbiYjNDM7ICogZmx1c2ggY2FuIGluc3RhbGwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgZGlyZWN0bHkgZm9yIGFuIHVuaW5zdGFsbGVkXG4mIzQzOyAqIGRldmljZSwgcHJldmVudGluZyBhbnkgbGF0ZXIgY2hhbm5lbCBpbnN0YWxsYXRpb24uIFRoZSBzZW50aW5lbCB0aGVyZWZvcmVcbiYjNDM7ICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXNcbiYjNDM7ICogZmlsZTsgaXQgZG9lcyBub3QgaW1wbHkgdGhhdCByZWxlYXNlIGhhcyBhbHJlYWR5IHJ1biBhbmQgaXQgbXVzdCBuZXZlciBiZVxuJiM0MzsgKiBkZXJlZmVyZW5jZWQuXG4mIzQzOyAqXG4mIzQzOyAqIGZ1c2VfZGV2X2NoYW5fZ2V0KCkgcmVhZHMgdGhpcyBzdGF0ZSBsb2NrbGVzc2x5LiBDYWxsZXJzIG11c3QgZGlzdGluZ3Vpc2hcbiYjNDM7ICogTlVMTCwgYSB2YWxpZCBjaGFubmVsIHBvaW50ZXIsIGFuZCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBiZWZvcmVcbiYjNDM7ICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LlxuICAqL1xuJiM0MzsjZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxuJiM0MztcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2NoYW4gKmZ1c2VfZGV2X2NoYW5fZ2V0KHN0cnVjdCBmdXNlX2RldiAqZnVkKVxuIHtcbiBcdC8qIFBhaXJzIHdpdGggeGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xuQEAgLTM1NSw4ICYjNDM7MzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpO1xuIFxuLVx0aWYgKCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKVxuJiM0MztcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZnVkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9kZXZfZmx1c2gmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0Ugc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGBmbHVzaGAgZmlsZSBvcGVyYXRpb24gdG8gYC9kZXYvZnVzZWAgYW5kIHVwZGF0aW5nIGNoYW5uZWwgZGlzY29ubmVjdGlvbiBsb2dpYyB0byBoYW5kbGUgZmluYWwgY2xvc2VzIHByb3Blcmx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZTI3MzU2MWU2NDAyMWUxMmExMGQyYzYzYTZlYmE3M2E2YWJhYmI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMjcgMTg6MjY6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuYwppbmRleCA1NzYzYTdjZDNiMzdmYS4uOGIxNGM3ZDU3YTAxMTkgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9kZXYuYwpAQCAtMTY2MiwxOCAmIzQzOzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpOwomIzQzOwlzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpOwogCWludCBlcnI7CiAKLQlpZiAodW5saWtlbHkoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpKSB7CiYjNDM7CWlmICh1bmxpa2VseSghZmNoKSkgewogCQkvKiBvbmx5IGJsb2NrIHdhaXRpbmcgZm9yIG1vdW50IGlmIHN5bmMgaW5pdCB3YXMgcmVxdWVzdGVkICovCiAJCWlmICghZnVkLSZndDtzeW5jX2luaXQpCiAJCQlyZXR1cm4gRVJSX1BUUigtRVBFUk0pOwogCi0JCWVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTsKJiM0MzsJCWVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwKJiM0MzsJCQkJCSAgICAgICAoZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkgIT0gTlVMTCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gRVJSX1BUUihlcnIpOwogCX0KIAomIzQzOwlpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FUEVSTSk7CiYjNDM7CiAJcmV0dXJuIGZ1ZDsKIH0KIApAQCAtMjIxMSwxNyAmIzQzOzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaCkKIAlmdXNlX3VyaW5nX3dhaXRfc3RvcHBlZF9xdWV1ZXMoZmNoKTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmdXNlX2RldiAqcG9zOwomIzQzOwomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7ZmNoLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZhbXA7ZmNoLSZndDtkZXZpY2VzLCBlbnRyeSkgewomIzQzOwkJaWYgKCFwb3MtJmd0O2Nsb3NpbmcpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTsKIAkvKiBQYWlycyB3aXRoIGNtcHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi8KIAlzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKCZhbXA7ZnVkLSZndDtjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7CiAKLQlpZiAoZmNoKSB7CiYjNDM7CWlmIChmY2ggJmFtcDsmYW1wOyBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHsKIAkJc3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSAmYW1wO2Z1ZC0mZ3Q7cHE7CiAJCUxJU1RfSEVBRCh0b19lbmQpOwogCQl1bnNpZ25lZCBpbnQgaTsKIAkJYm9vbCBsYXN0OwomIzQzOwkJYm9vbCBhYm9ydDsKIAogCQkvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovCiAJCXNwaW5fbG9jaygmYW1wO2ZjaC0mZ3Q7bG9jayk7CkBAIC0yMjM0LDE0ICYjNDM7MjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAkJbGlzdF9kZWwoJmFtcDtmdWQtJmd0O2VudHJ5KTsKIAkJLyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqLwogCQlsYXN0ID0gbGlzdF9lbXB0eSgmYW1wO2ZjaC0mZ3Q7ZGV2aWNlcyk7CiYjNDM7CQlhYm9ydCA9IGZjaC0mZ3Q7Y29ubmVjdGVkICZhbXA7JmFtcDsgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTsKIAkJc3Bpbl91bmxvY2soJmFtcDtmY2gtJmd0O2xvY2spOwogCiAJCWZ1c2VfZGV2X2VuZF9yZXF1ZXN0cygmYW1wO3RvX2VuZCk7CiAKLQkJaWYgKGxhc3QpIHsKJiM0MzsJCWlmIChsYXN0KQogCQkJV0FSTl9PTihmY2gtJmd0O2lxLmZhc3luYyAhPSBOVUxMKTsKJiM0MzsJCWlmIChhYm9ydCkKIAkJCWZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTsKLQkJfQogCQlmdXNlX2Nvbm5fcHV0KGZjaC0mZ3Q7Y29ubik7CiAJfQogCWZ1c2VfZGV2X3B1dChmdWQpOwpAQCAtMjM3NSw2ICYjNDM7MjM5NSwzNCBAQCBzdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpCiB9CiAjZW5kaWYKIAomIzQzO3N0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7CiYjNDM7CXN0cnVjdCBmdXNlX2NoYW4gKmZjaDsKJiM0MzsJYm9vbCBhYm9ydDsKJiM0MzsKJiM0MzsJaWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBBdG9taWNhbGx5IHRyYW5zaXRpb24gZnVkLSZndDtjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRAomIzQzOwkgKiBvbiBmaW5hbCBjbG9zZSB0byBwcmV2ZW50IGEgbGF0ZXIgZnVzZV9kZXZfaW5zdGFsbCgpIGZyb20gc3VjY2VlZGluZy4KJiM0MzsJICovCiYjNDM7CWZjaCA9IGNtcHhjaGcoJmFtcDtmdWQtJmd0O2NoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTsKJiM0MzsJaWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXNwaW5fbG9jaygmYW1wO2ZjaC0mZ3Q7bG9jayk7CiYjNDM7CWZ1ZC0mZ3Q7Y2xvc2luZyA9IHRydWU7CiYjNDM7CWFib3J0ID0gZmNoLSZndDtjb25uZWN0ZWQgJmFtcDsmYW1wOyBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpOwomIzQzOwlzcGluX3VubG9jaygmYW1wO2ZjaC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmIChhYm9ydCkKJiM0MzsJCWZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0gewogCS5vd25lcgkJPSBUSElTX01PRFVMRSwKIAkub3BlbgkJPSBmdXNlX2Rldl9vcGVuLApAQCAtMjM4Myw2ICYjNDM7MjQzMSw3IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHsKIAkud3JpdGVfaXRlcgk9IGZ1c2VfZGV2X3dyaXRlLAogCS5zcGxpY2Vfd3JpdGUJPSBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUsCiAJLnBvbGwJCT0gZnVzZV9kZXZfcG9sbCwKJiM0MzsJLmZsdXNoCQk9IGZ1c2VfZGV2X2ZsdXNoLAogCS5yZWxlYXNlCT0gZnVzZV9kZXZfcmVsZWFzZSwKIAkuZmFzeW5jCQk9IGZ1c2VfZGV2X2Zhc3luYywKIAkudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCwKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmgKaW5kZXggNjY4YzgzOTFkNjFjMDMuLjI4MzNhMDM1MGM0MzVhIDEwMDY0NAotLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaApAQCAtMzAyLDYgJiM0MzszMDIsOSBAQCBzdHJ1Y3QgZnVzZV9kZXYgewogCS8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqLwogCWJvb2wgc3luY19pbml0OwogCiYjNDM7CS8qKiBAY2xvc2luZzogRmluYWwgY2xvc2UgaGFzIHN0YXJ0ZWQsIHByb3RlY3RlZCBieSBjaGFuLSZndDtsb2NrICovCiYjNDM7CWJvb2wgY2xvc2luZzsKJiM0MzsKIAkvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi8KIAlzdHJ1Y3QgZnVzZV9jaGFuICpjaGFuOwogCkBAIC0zMzAsMTcgJiM0MzszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7CiAJfSByaW5nOwogfTsKIAotLyogZnVkLSZndDtjaGFuIGdldHMgYXNzaWduZWQgdG8gdGhpcyB2YWx1ZSB3aGVuIC9kZXYvZnVzZSBpcyBjbG9zZWQgKi8KLSNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpCi0KIC8qCi0gKiBMb2NrbGVzcyBhY2Nlc3MgaXMgT0ssIGJlY2F1c2UgZnVkLSZndDtjaGFuIGlzIHNldCBvbmNlIGR1cmluZyBtb3VudCBhbmQgaXMgdmFsaWQKLSAqIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLgomIzQzOyAqIGZ1ZC0mZ3Q7Y2hhbiBoYXMgdGhlIGZvbGxvd2luZyBtb25vdG9uaWMgc3RhdGUgdHJhbnNpdGlvbnM6CiYjNDM7ICoKJiM0MzsgKiBOVUxMIC0mZ3Q7IHZhbGlkIGNoYW5uZWwgLSZndDsgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQKJiM0MzsgKiBOVUxMIC0tLS0tLS0tLS0tLS0tLS0tJmd0OyBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRAogICoKLSAqIGZ1ZC0mZ3Q7Y2hhbiBpcyBzZXQgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgb25seSBhZnRlciB0aGUgY29udGFpbmluZyBmaWxlIGlzCi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOgotICogZnVzZV9kZXZfcHV0KCkgYW5kIGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oKS4KJiM0MzsgKiBBIHZhbGlkIGNoYW5uZWwgcG9pbnRlciByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLiBGaW5hbAomIzQzOyAqIGZsdXNoIGNhbiBpbnN0YWxsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGRpcmVjdGx5IGZvciBhbiB1bmluc3RhbGxlZAomIzQzOyAqIGRldmljZSwgcHJldmVudGluZyBhbnkgbGF0ZXIgY2hhbm5lbCBpbnN0YWxsYXRpb24uIFRoZSBzZW50aW5lbCB0aGVyZWZvcmUKJiM0MzsgKiBtZWFucyB0aGF0IHRoZSBjaGFubmVsIGNhbiBubyBsb25nZXIgYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2VkIHRocm91Z2ggdGhpcwomIzQzOyAqIGZpbGU7IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgcmVsZWFzZSBoYXMgYWxyZWFkeSBydW4gYW5kIGl0IG11c3QgbmV2ZXIgYmUKJiM0MzsgKiBkZXJlZmVyZW5jZWQuCiYjNDM7ICoKJiM0MzsgKiBmdXNlX2Rldl9jaGFuX2dldCgpIHJlYWRzIHRoaXMgc3RhdGUgbG9ja2xlc3NseS4gQ2FsbGVycyBtdXN0IGRpc3Rpbmd1aXNoCiYjNDM7ICogTlVMTCwgYSB2YWxpZCBjaGFubmVsIHBvaW50ZXIsIGFuZCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBiZWZvcmUKJiM0MzsgKiBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuCiAgKi8KJiM0MzsjZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKQomIzQzOwogc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCkKIHsKIAkvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi8KQEAgLTM1NSw4ICYjNDM7MzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpOwomIzQzOwlzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpOwogCi0JaWYgKCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKQomIzQzOwlpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpCiAJCXJldHVybiBOVUxMOwogCiAJcmV0dXJuIGZ1ZDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDExMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRlVTRSBEZXZpY2UgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgRlVTRSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgZGV2aWNlIGZpbGUgYXNwZWN0IChgL2Rldi9mdXNlYCkuIEl0JiMzOTtzIG1vZGlmeWluZyBgZnMvZnVzZS9kZXYuY2AgYW5kIGBmcy9mdXNlL2Z1c2VfZGV2X2kuaGAsIGFuZCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBgZmx1c2hgIG9wZXJhdGlvbiwgYGZ1c2VfZGV2X2ZsdXNoYCwgdG8gdGhlIGBmdXNlX2Rldl9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIEFsc28sIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGFuZCBgX19mdXNlX2dldF9kZXZgIGhhdmUgYmVlbiB0d2Vha2VkIHRvIGhhbmRsZSBgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURgLiBUaGlzIHNpZ25hbHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIEZVU0UgZGV2aWNlIGRyaXZlciB3b3Jrcy4gSXQgYXBwZWFycyB0aGVyZSBpcyBhIG5ldyBzdGF0ZSB0cmFuc2l0aW9uIGZvciBgZnVkLSZndDtjaGFuYCBhbmQgdGhlIGBmbHVzaGAgb3BlcmF0aW9uIHdpbGwgYmUgdXNlZCB0byBhYm9ydCB0aGUgY2hhbm5lbCBkdXJpbmcgZmluYWwgZGV2aWNlIGNsb3NpbmcuCgpJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGlzIHRvdWNoZXMgY29yZSBkZXZpY2Ugb3BlcmF0aW9ucyBhbmQgaW50cm9kdWNlcyBuZXcgc3RhdGUgaGFuZGxpbmcsIHNvIGl0IGlzIGxpa2VseSB0byBleHBvc2Ugc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLgoKVG8gcHJlcGFyZSBmb3IgZnV6emluZywgSSYjMzk7bSBnb2luZyB0byBuZWVkIGEgdGFyZ2V0IGxpc3QgYW5kIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXM6CgoxLiAgKipGb2N1cyBTeW1ib2xzOioqIERlZmluaXRlbHksIGBmdXNlX2Rldl9mbHVzaGAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYGZ1c2VfZ2V0X2RldmAsIGFuZCBgX19mdXNlX2dldF9kZXZgIGFyZSBnb2luZyB0byBiZSBteSBwcmltYXJ5IGZvY3VzLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2guCgoyLiAgKipFbmFibGUgQ29uZmlndXJhdGlvbjoqKiBDbGVhcmx5LCBJJiMzOTtsbCBuZWVkIGBGVVNFX0ZTYCBlbmFibGVkIGZvciB0aGUgZnV6emVyIHRvIGV2ZW4gY29uc2lkZXIgdGhpcyBjb2RlIHBhdGguCgpCZWZvcmUgZGl2aW5nIGRlZXBlciBpbnRvIHRoZSBmdXp6aW5nLCBsZXQmIzM5O3MgdmVyaWZ5IGBGVVNFX0ZTYCBpcyBwcm9wZXJseSBlbmFibGVkLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBpbnNpZGUgYGZzL2Z1c2UvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGlzIGNvbmZpZyBvcHRpb24gaXMgcHJlc2VudCBhbmQsIGlmIG5lZWRlZCwgd2hhdCBvdGhlciByZWxhdGVkIGNvbmZpZ3MgbmVlZCB0byBiZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGVVNFX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZnVzZS9LY29uZmlnOjI6Y29uZmlnIEZVU0VfRlNcbmZzL2Z1c2UvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxODoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY0CgkJCQkJCQlvdXRwdXQ6IDY4CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBGVVNFIEZpbGVzeXN0ZW0gSW1wbGVtZW50YXRpb24qKgoKT2theSwgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgSSYjMzk7bSB3b3JraW5nIHdpdGggaXMgYEZVU0VfRlNgLiBUaGF0IG5hcnJvd3MgZG93biBteSBmb2N1cyBjb25zaWRlcmFibHkuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGRpZyBpbnRvIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBzdGFydCBsb29raW5nIGF0IGhvdyB0aGlzIGlzIGJlaW5nIGluaXRpYWxpemVkLCBwYXJ0aWN1bGFybHkgZnJvbSBhIGRldmljZSBwZXJzcGVjdGl2ZSwgaXMgaW4gYGZzL2Z1c2UvZGV2LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlIGludGVyZmFjZSBhbmQgaG93IHRoZSBrZXJuZWwgaW50ZXJhY3RzIHdpdGggdXNlciBzcGFjZSB0aHJvdWdoIEZVU0UuIFRoaXMgZmlsZSBwcm9iYWJseSBjb250YWlucyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludHMgYW5kIGRhdGEgc3RydWN0dXJlcyBmb3IgdGhhdCBpbnRlcmFjdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZGV2aWNlIGRyaXZlciByZWdpc3RyYXRpb24sIGNoYXJhY3RlciBkZXZpY2Ugb3BlcmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IHNvbWUgb2YgdGhlIGNvcmUgY29tbXVuaWNhdGlvbiBwcmltaXRpdmVzLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxODoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZHxzdHJ1Y3QgZnVzZV9kZXYgXFwqKSAoZnVzZV9kZXZfZmx1c2h8ZnVzZV9kZXZfcmVsZWFzZXxmdXNlX2dldF9kZXZ8X19mdXNlX2dldF9kZXYpXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2Rldi5jPTIyMTk9c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjIzMS1cbmZzL2Z1c2UvZGV2LmM6MjIzMjppbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMjIzMy17XG4tLVxuZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9mdXNlL2Rldi5jLTIzOTctXG5mcy9mdXNlL2Rldi5jOjIzOTg6c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcbmZzL2Z1c2UvZGV2LmMtMjM5OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM0MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIGEgUG90ZW50aWFsIEZpbGVzeXN0ZW0gTWlzbWF0Y2gqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBwcmV0dHkgc3VyZSBJIHNhdyBgZnVzZV9nZXRfZGV2YCBkZWZpbmVkIGluIGBmcy9mdXNlL2Rldi5jYCwgYnV0IHRoZSByZWdleCBJIHVzZWQgZWFybGllciB0byBmaW5kIGl0cyBkZWZpbml0aW9uIG1pZ2h0IGhhdmUgZmFpbGVkLiBJdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rIHRoaW5ncyB3aGVuIHlvdSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgbGFyZ2UgY29kZWJhc2UuIEJlZm9yZSBJIGdvIHRvbyBmYXIgZG93biB0aGlzIHBhdGgsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgZnVuY3Rpb24mIzM5O3MgbG9jYXRpb24gYXJlIGNvcnJlY3QuIExldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGRpcmVjdGx5LiBObyBwb2ludCBzcGlubmluZyBteSB3aGVlbHMgaWYgSSYjMzk7bSBiYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXYuYz0xNjUxPXN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9mdXNlL2Rldi5jLTE2NjEtXG5mcy9mdXNlL2Rldi5jOjE2NjI6c3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG5mcy9mdXNlL2Rldi5jLTE2NjMte1xuLS1cbmZzL2Z1c2UvZGV2LmM9MTY4NT1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcbi0tXG5mcy9mdXNlL2Rldi5jLTE2ODgtXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXHUwMDNla2lfZmlscDtcbmZzL2Z1c2UvZGV2LmM6MTY4OTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0xNjkwLVxuLS1cbmZzL2Z1c2UvZGV2LmM9MTcwMj1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9zcGxpY2VfcmVhZChzdHJ1Y3QgZmlsZSAqaW4sIGxvZmZfdCAqcHBvcyxcbi0tXG5mcy9mdXNlL2Rldi5jLTE3MDktXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xuZnMvZnVzZS9kZXYuYzoxNzEwOlx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoaW4pO1xuZnMvZnVzZS9kZXYuYy0xNzExLVxuLS1cbmZzL2Z1c2UvZGV2LmM9MTk3Mz1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl93cml0ZShzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9mdXNlL2Rldi5jLTE5NzUtXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xuZnMvZnVzZS9kZXYuYzoxOTc2Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2Rldihpb2NiLVx1MDAzZWtpX2ZpbHApO1xuZnMvZnVzZS9kZXYuYy0xOTc3LVxuLS1cbmZzL2Z1c2UvZGV2LmM9MTk4OT1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUoc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSxcbi0tXG5mcy9mdXNlL2Rldi5jLTE5OTctXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xuZnMvZnVzZS9kZXYuYzoxOTk4Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihvdXQpO1xuZnMvZnVzZS9kZXYuYy0xOTk5LVx0c2l6ZV90IHJlbTtcbi0tXG5mcy9mdXNlL2Rldi5jPTIwODE9c3RhdGljIF9fcG9sbF90IGZ1c2VfZGV2X3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpXG4tLVxuZnMvZnVzZS9kZXYuYy0yMDg0LVx0c3RydWN0IGZ1c2VfaXF1ZXVlICpmaXE7XG5mcy9mdXNlL2Rldi5jOjIwODU6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjA4Ni1cbi0tXG5mcy9mdXNlL2Rldi5jPTIyNzI9c3RhdGljIGludCBmdXNlX2Rldl9mYXN5bmMoaW50IGZkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG9uKVxuZnMvZnVzZS9kZXYuYy0yMjczLXtcbmZzL2Z1c2UvZGV2LmM6MjI3NDpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMjc1LVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjI4Mz1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9jbG9uZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjMwMi1cbmZzL2Z1c2UvZGV2LmM6MjMwMzpcdGZ1ZCA9IGZ1c2VfZ2V0X2RldihmZF9maWxlKGYpKTtcbmZzL2Z1c2UvZGV2LmMtMjMwNC1cdGlmIChJU19FUlIoZnVkKSlcbi0tXG5mcy9mdXNlL2Rldi5jPTIzMTg9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfYmFja2luZ19vcGVuKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMjMyMC17XG5mcy9mdXNlL2Rldi5jOjIzMjE6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjMyMi1cdHN0cnVjdCBmdXNlX2JhY2tpbmdfbWFwIG1hcDtcbi0tXG5mcy9mdXNlL2Rldi5jPTIzMzY9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfYmFja2luZ19jbG9zZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxuZnMvZnVzZS9kZXYuYy0yMzM3LXtcbmZzL2Z1c2UvZGV2LmM6MjMzODpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMzM5LVx0aW50IGJhY2tpbmdfaWQ7XG4tLVxuZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMjM4OS17XG5mcy9mdXNlL2Rldi5jOjIzOTA6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMzkxLVx0aWYgKCFmdWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc0NwoJCQkJCQkJb3V0cHV0OiAxMTcKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBGVVNFIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgcmVsYXRlZCB0byBGVVNFLCBzcGVjaWZpY2FsbHkgdGhlIGAvZGV2L2Z1c2VgIGRldmljZS4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGZ1c2VfZGV2X2ZsdXNoYCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgYGZ1c2VfZ2V0X2RldmAuIEkga25vdyB0aGF0IGBmdXNlX2dldF9kZXZgIGlzIGRlZmluZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMsIGlubGluZSBpbiBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgIGFuZCBhbHNvIGluIGBmcy9mdXNlL2Rldi5jYCwgd2hpY2ggaXNuJiMzOTt0IHVudXN1YWwuIFRoZSBvdGhlciB0d28gYXJlIGluIGBmcy9mdXNlL2Rldi5jYCBhcyB3ZWxsLCBzbyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlcyBsaWtlbHkgbGllLgoKSSBjaGVja2VkIHF1aWNrbHksIGFuZCB5ZXMsIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgaXMsIGFzIEkgc3VzcGVjdGVkLCBhIHN0YXRpYyBmdW5jdGlvbiwgc28gd2UgZG9uJiMzOTt0IG5lZWQgdG8gY29uc2lkZXIgaXQgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuIFRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGhvdyB0aGUgYC9kZXYvZnVzZWAgZGV2aWNlIGJlaGF2ZXMuIEl0JiMzOTtzIGFkZGluZyBhIGBmbHVzaGAgaGFuZGxlciwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBwYXRjaCBpcyBtZWFudCB0byBwcm9wZXJseSBhYm9ydCBhIEZVU0UgY2hhbm5lbCBkdXJpbmcgdGhlIGNsb3Npbmcgc3RhZ2UuIFRoaXMgd291bGQgYmUgY3J1Y2lhbCBmb3IgZml4aW5nIHNvbWUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIGJ1ZyBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIHRoYXQgY2FuIGFyaXNlIGR1cmluZyBmaW5hbCBkZXZpY2UgY2xvc3VyZSBhbmQgY2hhbm5lbCBkaXNjb25uZWN0aW9uLgoKRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBjb25zaWRlcmluZy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBoYW5kbGluZyBvZiB0aGUgRlVTRSBkZXZpY2UuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgc3BvdC1vbiDigJMgdGhleSBwaW5wb2ludCB0aGUgZXhhY3QgY29kZSBhcmVhcyB0aGlzIHBhdGNoIG1vZGlmaWVzLiBBbmQgdGhlIGBFbmFibGVDb25maWdzYCBhcmUgc2Vuc2libGU7IGBGVVNFX0ZTYCBuZWVkcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIGNvZGUgdG8gZXZlbiBiZSByZWxldmFudC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhpcyBwYXRjaCBzZWVtcyBsaWtlIGl0IGNvdWxkIGV4cG9zZSBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgb3IgdnVsbmVyYWJpbGl0aWVzLiBJdCYjMzk7cyB1c2VyLXRyaWdnZXJhYmxlLCBhbmQgaW52b2x2ZXMgY2hhbmdlcyB0byBjb3JlIGRldmljZSBoYW5kbGluZywgc28gaXQgc2hvdWxkIGJlIG9uIHRoZSBmdXp6aW5nIGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9kZXZfZmx1c2gmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0Ugc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGBmbHVzaGAgZmlsZSBvcGVyYXRpb24gdG8gYC9kZXYvZnVzZWAgYW5kIHVwZGF0aW5nIGNoYW5uZWwgZGlzY29ubmVjdGlvbiBsb2dpYyB0byBoYW5kbGUgZmluYWwgY2xvc2VzIHByb3Blcmx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDssCiAgICAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgYGZsdXNoYCBmaWxlIG9wZXJhdGlvbiB0byBgL2Rldi9mdXNlYCBhbmQgdXBkYXRpbmcgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIHRvIGhhbmRsZSBmaW5hbCBjbG9zZXMgcHJvcGVybHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjA5Ljg5MjkxMjY4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzYwODY3MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2Rldl9mbHVzaFwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiLFxuICAgIFwiZnVzZV9nZXRfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0Ugc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGBmbHVzaGAgZmlsZSBvcGVyYXRpb24gdG8gYC9kZXYvZnVzZWAgYW5kIHVwZGF0aW5nIGNoYW5uZWwgZGlzY29ubmVjdGlvbiBsb2dpYyB0byBoYW5kbGUgZmluYWwgY2xvc2VzIHByb3Blcmx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjA5Ljg5MjkyNDA5M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3MjM5MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmUyNzM1NjFlNjQwMjFlMTJhMTBkMmM2M2E2ZWJhNzNhNmFiYWJiNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAxODoyNjowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuY1xcbmluZGV4IDU3NjNhN2NkM2IzN2ZhLi44YjE0YzdkNTdhMDExOSAxMDA2NDRcXG4tLS0gYS9mcy9mdXNlL2Rldi5jXFxuKysrIGIvZnMvZnVzZS9kZXYuY1xcbkBAIC0xNjYyLDE4ICsxNjYyLDIzIEBAIHN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuIHtcXG4gXFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xcbitcXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkge1xcbitcXHRpZiAodW5saWtlbHkoIWZjaCkpIHtcXG4gXFx0XFx0Lyogb25seSBibG9jayB3YWl0aW5nIGZvciBtb3VudCBpZiBzeW5jIGluaXQgd2FzIHJlcXVlc3RlZCAqL1xcbiBcXHRcXHRpZiAoIWZ1ZC1cXHUwMDNlc3luY19pbml0KVxcbiBcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xcbiBcXG4tXFx0XFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLCBmdXNlX2Rldl9jaGFuX2dldChmdWQpICE9IE5VTEwpO1xcbitcXHRcXHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICAoZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkgIT0gTlVMTCk7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh1bmxpa2VseShmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xcbitcXG4gXFx0cmV0dXJuIGZ1ZDtcXG4gfVxcbiBcXG5AQCAtMjIxMSwxNyArMjIxNiwzMSBAQCB2b2lkIGZ1c2VfY2hhbl93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxcbiBcXHRmdXNlX3VyaW5nX3dhaXRfc3RvcHBlZF9xdWV1ZXMoZmNoKTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxcbit7XFxuK1xcdHN0cnVjdCBmdXNlX2RldiAqcG9zO1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBcXHUwMDI2ZmNoLVxcdTAwM2VkZXZpY2VzLCBlbnRyeSkge1xcbitcXHRcXHRpZiAoIXBvcy1cXHUwMDNlY2xvc2luZylcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XFxuIFxcdC8qIFBhaXJzIHdpdGggY21weGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xcbiBcXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKFxcdTAwMjZmdWQtXFx1MDAzZWNoYW4sIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcXG4gXFxuLVxcdGlmIChmY2gpIHtcXG4rXFx0aWYgKGZjaCBcXHUwMDI2XFx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcXG4gXFx0XFx0c3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSBcXHUwMDI2ZnVkLVxcdTAwM2VwcTtcXG4gXFx0XFx0TElTVF9IRUFEKHRvX2VuZCk7XFxuIFxcdFxcdHVuc2lnbmVkIGludCBpO1xcbiBcXHRcXHRib29sIGxhc3Q7XFxuK1xcdFxcdGJvb2wgYWJvcnQ7XFxuIFxcbiBcXHRcXHQvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovXFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG5AQCAtMjIzNCwxNCArMjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gXFx0XFx0bGlzdF9kZWwoXFx1MDAyNmZ1ZC1cXHUwMDNlZW50cnkpO1xcbiBcXHRcXHQvKiBBcmUgd2UgdGhlIGxhc3Qgb3BlbiBkZXZpY2U/ICovXFxuIFxcdFxcdGxhc3QgPSBsaXN0X2VtcHR5KFxcdTAwMjZmY2gtXFx1MDAzZWRldmljZXMpO1xcbitcXHRcXHRhYm9ydCA9IGZjaC1cXHUwMDNlY29ubmVjdGVkIFxcdTAwMjZcXHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XFxuIFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0XFx0ZnVzZV9kZXZfZW5kX3JlcXVlc3RzKFxcdTAwMjZ0b19lbmQpO1xcbiBcXG4tXFx0XFx0aWYgKGxhc3QpIHtcXG4rXFx0XFx0aWYgKGxhc3QpXFxuIFxcdFxcdFxcdFdBUk5fT04oZmNoLVxcdTAwM2VpcS5mYXN5bmMgIT0gTlVMTCk7XFxuK1xcdFxcdGlmIChhYm9ydClcXG4gXFx0XFx0XFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xcbi1cXHRcXHR9XFxuIFxcdFxcdGZ1c2VfY29ubl9wdXQoZmNoLVxcdTAwM2Vjb25uKTtcXG4gXFx0fVxcbiBcXHRmdXNlX2Rldl9wdXQoZnVkKTtcXG5AQCAtMjM3NSw2ICsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gfVxcbiAjZW5kaWZcXG4gXFxuK3N0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpXFxuK3tcXG4rXFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xcbitcXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7XFxuK1xcdGJvb2wgYWJvcnQ7XFxuK1xcbitcXHRpZiAoZmlsZV9jb3VudChmaWxlKSAhPSAxKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEF0b21pY2FsbHkgdHJhbnNpdGlvbiBmdWQtXFx1MDAzZWNoYW4gZnJvbSBOVUxMIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXFxuK1xcdCAqIG9uIGZpbmFsIGNsb3NlIHRvIHByZXZlbnQgYSBsYXRlciBmdXNlX2Rldl9pbnN0YWxsKCkgZnJvbSBzdWNjZWVkaW5nLlxcbitcXHQgKi9cXG4rXFx0ZmNoID0gY21weGNoZyhcXHUwMDI2ZnVkLVxcdTAwM2VjaGFuLCBOVUxMLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XFxuK1xcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRzcGluX2xvY2soXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuK1xcdGZ1ZC1cXHUwMDNlY2xvc2luZyA9IHRydWU7XFxuK1xcdGFib3J0ID0gZmNoLVxcdTAwM2Vjb25uZWN0ZWQgXFx1MDAyNlxcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcXG4rXFx0c3Bpbl91bmxvY2soXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRpZiAoYWJvcnQpXFxuK1xcdFxcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XFxuIFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuIFxcdC5vcGVuXFx0XFx0PSBmdXNlX2Rldl9vcGVuLFxcbkBAIC0yMzgzLDYgKzI0MzEsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XFxuIFxcdC53cml0ZV9pdGVyXFx0PSBmdXNlX2Rldl93cml0ZSxcXG4gXFx0LnNwbGljZV93cml0ZVxcdD0gZnVzZV9kZXZfc3BsaWNlX3dyaXRlLFxcbiBcXHQucG9sbFxcdFxcdD0gZnVzZV9kZXZfcG9sbCxcXG4rXFx0LmZsdXNoXFx0XFx0PSBmdXNlX2Rldl9mbHVzaCxcXG4gXFx0LnJlbGVhc2VcXHQ9IGZ1c2VfZGV2X3JlbGVhc2UsXFxuIFxcdC5mYXN5bmNcXHRcXHQ9IGZ1c2VfZGV2X2Zhc3luYyxcXG4gXFx0LnVubG9ja2VkX2lvY3RsID0gZnVzZV9kZXZfaW9jdGwsXFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcXG5pbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0XFxuLS0tIGEvZnMvZnVzZS9mdXNlX2Rldl9pLmhcXG4rKysgYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxcbkBAIC0zMDIsNiArMzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHtcXG4gXFx0LyoqIEBzeW5jX2luaXQ6IElzc3VlIEZVU0VfSU5JVCBzeW5jaHJvbm91c2x5ICovXFxuIFxcdGJvb2wgc3luY19pbml0O1xcbiBcXG4rXFx0LyoqIEBjbG9zaW5nOiBGaW5hbCBjbG9zZSBoYXMgc3RhcnRlZCwgcHJvdGVjdGVkIGJ5IGNoYW4tXFx1MDAzZWxvY2sgKi9cXG4rXFx0Ym9vbCBjbG9zaW5nO1xcbitcXG4gXFx0LyoqIEBjaGFuOiBGdXNlIGNoYW5uZWwgZm9yIHRoaXMgZGV2aWNlICovXFxuIFxcdHN0cnVjdCBmdXNlX2NoYW4gKmNoYW47XFxuIFxcbkBAIC0zMzAsMTcgKzMzMywyNSBAQCBzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIHtcXG4gXFx0fSByaW5nO1xcbiB9O1xcbiBcXG4tLyogZnVkLVxcdTAwM2VjaGFuIGdldHMgYXNzaWduZWQgdG8gdGhpcyB2YWx1ZSB3aGVuIC9kZXYvZnVzZSBpcyBjbG9zZWQgKi9cXG4tI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcXG4tXFxuIC8qXFxuLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtXFx1MDAzZWNoYW4gaXMgc2V0IG9uY2UgZHVyaW5nIG1vdW50IGFuZCBpcyB2YWxpZFxcbi0gKiB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC5cXG4rICogZnVkLVxcdTAwM2VjaGFuIGhhcyB0aGUgZm9sbG93aW5nIG1vbm90b25pYyBzdGF0ZSB0cmFuc2l0aW9uczpcXG4rICpcXG4rICogTlVMTCAtXFx1MDAzZSB2YWxpZCBjaGFubmVsIC1cXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXFxuKyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS1cXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXFxuICAqXFxuLSAqIGZ1ZC1cXHUwMDNlY2hhbiBpcyBzZXQgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgb25seSBhZnRlciB0aGUgY29udGFpbmluZyBmaWxlIGlzXFxuLSAqIHJlbGVhc2VkLCBzbyByZXN1bHQgaXMgc2FmZSB0byBkZXJlZmVyZW5jZSBpbiBtb3N0IGNhc2VzLiAgRXhjZXB0aW9ucyBhcmU6XFxuLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuXFxuKyAqIEEgdmFsaWQgY2hhbm5lbCBwb2ludGVyIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuIEZpbmFsXFxuKyAqIGZsdXNoIGNhbiBpbnN0YWxsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGRpcmVjdGx5IGZvciBhbiB1bmluc3RhbGxlZFxcbisgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlXFxuKyAqIG1lYW5zIHRoYXQgdGhlIGNoYW5uZWwgY2FuIG5vIGxvbmdlciBiZSBpbnN0YWxsZWQgb3IgYWNjZXNzZWQgdGhyb3VnaCB0aGlzXFxuKyAqIGZpbGU7IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgcmVsZWFzZSBoYXMgYWxyZWFkeSBydW4gYW5kIGl0IG11c3QgbmV2ZXIgYmVcXG4rICogZGVyZWZlcmVuY2VkLlxcbisgKlxcbisgKiBmdXNlX2Rldl9jaGFuX2dldCgpIHJlYWRzIHRoaXMgc3RhdGUgbG9ja2xlc3NseS4gQ2FsbGVycyBtdXN0IGRpc3Rpbmd1aXNoXFxuKyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlXFxuKyAqIGRlcmVmZXJlbmNpbmcgdGhlIHJlc3VsdC5cXG4gICovXFxuKyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXFxuK1xcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2NoYW4gKmZ1c2VfZGV2X2NoYW5fZ2V0KHN0cnVjdCBmdXNlX2RldiAqZnVkKVxcbiB7XFxuIFxcdC8qIFBhaXJzIHdpdGggeGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xcbkBAIC0zNTUsOCArMzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XFxuK1xcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XFxuIFxcbi1cXHRpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpXFxuK1xcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHRyZXR1cm4gZnVkO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoxMC43MjExNjM3NTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMTUzMjYwMzE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9kZXZfZmx1c2hcIixcbiAgICBcImZ1c2VfZGV2X3JlbGVhc2VcIixcbiAgICBcImZ1c2VfZ2V0X2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGVVNFIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBgZmx1c2hgIGZpbGUgb3BlcmF0aW9uIHRvIGAvZGV2L2Z1c2VgIGFuZCB1cGRhdGluZyBjaGFubmVsIGRpc2Nvbm5lY3Rpb24gbG9naWMgdG8gaGFuZGxlIGZpbmFsIGNsb3NlcyBwcm9wZXJseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgRlVTRSBkZXZpY2UgaGFuZGxpbmcgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZTI3MzU2MWU2NDAyMWUxMmExMGQyYzYzYTZlYmE3M2E2YWJhYmI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTg6MjY6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuY1xuaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9kZXYuY1xuKysrIGIvZnMvZnVzZS9kZXYuY1xuQEAgLTE2NjIsMTggKzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkge1xuK1x0aWYgKHVubGlrZWx5KCFmY2gpKSB7XG4gXHRcdC8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi9cbiBcdFx0aWYgKCFmdWQtXHUwMDNlc3luY19pbml0KVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XG4gXG4tXHRcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTtcbitcdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLFxuK1x0XHRcdFx0XHQgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4rXHRpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbitcbiBcdHJldHVybiBmdWQ7XG4gfVxuIFxuQEAgLTIyMTEsMTcgKzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbiBcdGZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4re1xuK1x0c3RydWN0IGZ1c2VfZGV2ICpwb3M7XG4rXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcywgZW50cnkpIHtcbitcdFx0aWYgKCFwb3MtXHUwMDNlY2xvc2luZylcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuIFx0LyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXG4gXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKFx1MDAyNmZ1ZC1cdTAwM2VjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XG4gXG4tXHRpZiAoZmNoKSB7XG4rXHRpZiAoZmNoIFx1MDAyNlx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcbiBcdFx0c3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSBcdTAwMjZmdWQtXHUwMDNlcHE7XG4gXHRcdExJU1RfSEVBRCh0b19lbmQpO1xuIFx0XHR1bnNpZ25lZCBpbnQgaTtcbiBcdFx0Ym9vbCBsYXN0O1xuK1x0XHRib29sIGFib3J0O1xuIFxuIFx0XHQvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG5AQCAtMjIzNCwxNCArMjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZnVkLVx1MDAzZWVudHJ5KTtcbiBcdFx0LyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqL1xuIFx0XHRsYXN0ID0gbGlzdF9lbXB0eShcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcyk7XG4rXHRcdGFib3J0ID0gZmNoLVx1MDAzZWNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuIFxuIFx0XHRmdXNlX2Rldl9lbmRfcmVxdWVzdHMoXHUwMDI2dG9fZW5kKTtcbiBcbi1cdFx0aWYgKGxhc3QpIHtcbitcdFx0aWYgKGxhc3QpXG4gXHRcdFx0V0FSTl9PTihmY2gtXHUwMDNlaXEuZmFzeW5jICE9IE5VTEwpO1xuK1x0XHRpZiAoYWJvcnQpXG4gXHRcdFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xuLVx0XHR9XG4gXHRcdGZ1c2VfY29ubl9wdXQoZmNoLVx1MDAzZWNvbm4pO1xuIFx0fVxuIFx0ZnVzZV9kZXZfcHV0KGZ1ZCk7XG5AQCAtMjM3NSw2ICsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB9XG4gI2VuZGlmXG4gXG4rc3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcbit7XG4rXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4rXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7XG4rXHRib29sIGFib3J0O1xuK1xuK1x0aWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHQvKlxuK1x0ICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC1cdTAwM2VjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuK1x0ICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuXG4rXHQgKi9cbitcdGZjaCA9IGNtcHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbitcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1x0ZnVkLVx1MDAzZWNsb3NpbmcgPSB0cnVlO1xuK1x0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1xuK1x0aWYgKGFib3J0KVxuK1x0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gXHQub3Blblx0XHQ9IGZ1c2VfZGV2X29wZW4sXG5AQCAtMjM4Myw2ICsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0LndyaXRlX2l0ZXJcdD0gZnVzZV9kZXZfd3JpdGUsXG4gXHQuc3BsaWNlX3dyaXRlXHQ9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSxcbiBcdC5wb2xsXHRcdD0gZnVzZV9kZXZfcG9sbCxcbitcdC5mbHVzaFx0XHQ9IGZ1c2VfZGV2X2ZsdXNoLFxuIFx0LnJlbGVhc2VcdD0gZnVzZV9kZXZfcmVsZWFzZSxcbiBcdC5mYXN5bmNcdFx0PSBmdXNlX2Rldl9mYXN5bmMsXG4gXHQudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG5pbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuKysrIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbkBAIC0zMDIsNiArMzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHtcbiBcdC8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqL1xuIFx0Ym9vbCBzeW5jX2luaXQ7XG4gXG4rXHQvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi1cdTAwM2Vsb2NrICovXG4rXHRib29sIGNsb3Npbmc7XG4rXG4gXHQvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmNoYW47XG4gXG5AQCAtMzMwLDE3ICszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7XG4gXHR9IHJpbmc7XG4gfTtcbiBcbi0vKiBmdWQtXHUwMDNlY2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovXG4tI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbi1cbiAvKlxuLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtXHUwMDNlY2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkXG4tICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuXG4rICogZnVkLVx1MDAzZWNoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOlxuKyAqXG4rICogTlVMTCAtXHUwMDNlIHZhbGlkIGNoYW5uZWwgLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuKyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS1cdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiAgKlxuLSAqIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXNcbi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOlxuLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuXG4rICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWxcbisgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWRcbisgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlXG4rICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXNcbisgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlXG4rICogZGVyZWZlcmVuY2VkLlxuKyAqXG4rICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaFxuKyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlXG4rICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LlxuICAqL1xuKyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXG4rXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcbiB7XG4gXHQvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbkBAIC0zNTUsOCArMzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXG4tXHRpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpXG4rXHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGZ1ZDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjEwLjcyMTE2NjEzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzcyNzAyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEZVU0UgRGV2aWNlIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBGVVNFIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSBkZXZpY2UgZmlsZSBhc3BlY3QgKGAvZGV2L2Z1c2VgKS4gSXQncyBtb2RpZnlpbmcgYGZzL2Z1c2UvZGV2LmNgIGFuZCBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgLCBhbmQgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgYGZsdXNoYCBvcGVyYXRpb24sIGBmdXNlX2Rldl9mbHVzaGAsIHRvIHRoZSBgZnVzZV9kZXZfb3BlcmF0aW9uc2Agc3RydWN0dXJlLiBBbHNvLCBgZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgYF9fZnVzZV9nZXRfZGV2YCBoYXZlIGJlZW4gdHdlYWtlZCB0byBoYW5kbGUgYEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEYC4gVGhpcyBzaWduYWxzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBGVVNFIGRldmljZSBkcml2ZXIgd29ya3MuIEl0IGFwcGVhcnMgdGhlcmUgaXMgYSBuZXcgc3RhdGUgdHJhbnNpdGlvbiBmb3IgYGZ1ZC1cdTAwM2VjaGFuYCBhbmQgdGhlIGBmbHVzaGAgb3BlcmF0aW9uIHdpbGwgYmUgdXNlZCB0byBhYm9ydCB0aGUgY2hhbm5lbCBkdXJpbmcgZmluYWwgZGV2aWNlIGNsb3NpbmcuXG5cbkltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgdGhpcyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gVGhpcyB0b3VjaGVzIGNvcmUgZGV2aWNlIG9wZXJhdGlvbnMgYW5kIGludHJvZHVjZXMgbmV3IHN0YXRlIGhhbmRsaW5nLCBzbyBpdCBpcyBsaWtlbHkgdG8gZXhwb3NlIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcy5cblxuVG8gcHJlcGFyZSBmb3IgZnV6emluZywgSSdtIGdvaW5nIHRvIG5lZWQgYSB0YXJnZXQgbGlzdCBhbmQgc29tZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpczpcblxuMS4gICoqRm9jdXMgU3ltYm9sczoqKiBEZWZpbml0ZWx5LCBgZnVzZV9kZXZfZmx1c2hgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGBmdXNlX2dldF9kZXZgLCBhbmQgYF9fZnVzZV9nZXRfZGV2YCBhcmUgZ29pbmcgdG8gYmUgbXkgcHJpbWFyeSBmb2N1cy4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLlxuXG4yLiAgKipFbmFibGUgQ29uZmlndXJhdGlvbjoqKiBDbGVhcmx5LCBJJ2xsIG5lZWQgYEZVU0VfRlNgIGVuYWJsZWQgZm9yIHRoZSBmdXp6ZXIgdG8gZXZlbiBjb25zaWRlciB0aGlzIGNvZGUgcGF0aC5cblxuQmVmb3JlIGRpdmluZyBkZWVwZXIgaW50byB0aGUgZnV6emluZywgbGV0J3MgdmVyaWZ5IGBGVVNFX0ZTYCBpcyBwcm9wZXJseSBlbmFibGVkLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIGluc2lkZSBgZnMvZnVzZS9LY29uZmlnYCB0byBjb25maXJtIHRoaXMgY29uZmlnIG9wdGlvbiBpcyBwcmVzZW50IGFuZCwgaWYgbmVlZGVkLCB3aGF0IG90aGVyIHJlbGF0ZWQgY29uZmlncyBuZWVkIHRvIGJlIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMTMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoxNy4xNTg0NDAxNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzU1MzA0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVU0VfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXFxuZnMvZnVzZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoxNy40MzM5Nzc5OTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE0NDM5NDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgRlVTRSBGaWxlc3lzdGVtIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgSSdtIHdvcmtpbmcgd2l0aCBpcyBgRlVTRV9GU2AuIFRoYXQgbmFycm93cyBkb3duIG15IGZvY3VzIGNvbnNpZGVyYWJseS4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZGlnIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24uIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBhdCBob3cgdGhpcyBpcyBiZWluZyBpbml0aWFsaXplZCwgcGFydGljdWxhcmx5IGZyb20gYSBkZXZpY2UgcGVyc3BlY3RpdmUsIGlzIGluIGBmcy9mdXNlL2Rldi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRldmljZSBpbnRlcmZhY2UgYW5kIGhvdyB0aGUga2VybmVsIGludGVyYWN0cyB3aXRoIHVzZXIgc3BhY2UgdGhyb3VnaCBGVVNFLiBUaGlzIGZpbGUgcHJvYmFibHkgY29udGFpbnMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIGFuZCBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoYXQgaW50ZXJhY3Rpb24uIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZGV2aWNlIGRyaXZlciByZWdpc3RyYXRpb24sIGNoYXJhY3RlciBkZXZpY2Ugb3BlcmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IHNvbWUgb2YgdGhlIGNvcmUgY29tbXVuaWNhdGlvbiBwcmltaXRpdmVzLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg2NCwiT3V0cHV0VG9rZW5zIjo2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjIxLjE0ODQyMDc0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTUyNTQ2NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWR8c3RydWN0IGZ1c2VfZGV2IFxcXFwqKSAoZnVzZV9kZXZfZmx1c2h8ZnVzZV9kZXZfcmVsZWFzZXxmdXNlX2dldF9kZXZ8X19mdXNlX2dldF9kZXYpXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldi5jPTIyMTk9c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMjMxLVxcbmZzL2Z1c2UvZGV2LmM6MjIzMjppbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Rldi5jLTIyMzMte1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjM5Ny1cXG5mcy9mdXNlL2Rldi5jOjIzOTg6c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcXG5mcy9mdXNlL2Rldi5jLTIzOTkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoyMS41NjM2ODM0OTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjk1NTE5MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBGaWxlc3lzdGVtIE1pc21hdGNoKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIHByZXR0eSBzdXJlIEkgc2F3IGBmdXNlX2dldF9kZXZgIGRlZmluZWQgaW4gYGZzL2Z1c2UvZGV2LmNgLCBidXQgdGhlIHJlZ2V4IEkgdXNlZCBlYXJsaWVyIHRvIGZpbmQgaXRzIGRlZmluaXRpb24gbWlnaHQgaGF2ZSBmYWlsZWQuIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGluZ3Mgd2hlbiB5b3UncmUgZGVhbGluZyB3aXRoIGEgbGFyZ2UgY29kZWJhc2UuIEJlZm9yZSBJIGdvIHRvbyBmYXIgZG93biB0aGlzIHBhdGgsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgZnVuY3Rpb24ncyBsb2NhdGlvbiBhcmUgY29ycmVjdC4gTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgY29kZSBkaXJlY3RseS4gTm8gcG9pbnQgc3Bpbm5pbmcgbXkgd2hlZWxzIGlmIEknbSBiYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzQwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTg6MjY6MjQuODU5MjA1Njc5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTEwMzg4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlX2dldF9kZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldi5jPTE2NTE9c3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNjYxLVxcbmZzL2Z1c2UvZGV2LmM6MTY2MjpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Rldi5jLTE2NjMte1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0xNjg1PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNjg4LVxcdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cXHUwMDNla2lfZmlscDtcXG5mcy9mdXNlL2Rldi5jOjE2ODk6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0xNjkwLVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0xNzAyPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNzA5LVxcdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XFxuZnMvZnVzZS9kZXYuYzoxNzEwOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGluKTtcXG5mcy9mdXNlL2Rldi5jLTE3MTEtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE5NzM9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE5NzUtXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE5NzY6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2Rldihpb2NiLVxcdTAwM2VraV9maWxwKTtcXG5mcy9mdXNlL2Rldi5jLTE5NzctXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE5ODk9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3dyaXRlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE5OTctXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE5OTg6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihvdXQpO1xcbmZzL2Z1c2UvZGV2LmMtMTk5OS1cXHRzaXplX3QgcmVtO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMDgxPXN0YXRpYyBfX3BvbGxfdCBmdXNlX2Rldl9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMDg0LVxcdHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxO1xcbmZzL2Z1c2UvZGV2LmM6MjA4NTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIwODYtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIyNzI9c3RhdGljIGludCBmdXNlX2Rldl9mYXN5bmMoaW50IGZkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG9uKVxcbmZzL2Z1c2UvZGV2LmMtMjI3My17XFxuZnMvZnVzZS9kZXYuYzoyMjc0OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjI3NS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjI4Mz1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9jbG9uZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMzAyLVxcbmZzL2Z1c2UvZGV2LmM6MjMwMzpcXHRmdWQgPSBmdXNlX2dldF9kZXYoZmRfZmlsZShmKSk7XFxuZnMvZnVzZS9kZXYuYy0yMzA0LVxcdGlmIChJU19FUlIoZnVkKSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjMxOD1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIzMjAte1xcbmZzL2Z1c2UvZGV2LmM6MjMyMTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzMjItXFx0c3RydWN0IGZ1c2VfYmFja2luZ19tYXAgbWFwO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzM2PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcXG5mcy9mdXNlL2Rldi5jLTIzMzcte1xcbmZzL2Z1c2UvZGV2LmM6MjMzODpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzMzktXFx0aW50IGJhY2tpbmdfaWQ7XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzODg9c3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvZGV2LmMtMjM4OS17XFxuZnMvZnVzZS9kZXYuYzoyMzkwOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMzkxLVxcdGlmICghZnVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoyNS4zMjgzMTcwNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2ODM1Mjk4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBGVVNFIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHJlbGF0ZWQgdG8gRlVTRSwgc3BlY2lmaWNhbGx5IHRoZSBgL2Rldi9mdXNlYCBkZXZpY2UuIExldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGZ1c2VfZGV2X2ZsdXNoYCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgYGZ1c2VfZ2V0X2RldmAuIEkga25vdyB0aGF0IGBmdXNlX2dldF9kZXZgIGlzIGRlZmluZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMsIGlubGluZSBpbiBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgIGFuZCBhbHNvIGluIGBmcy9mdXNlL2Rldi5jYCwgd2hpY2ggaXNuJ3QgdW51c3VhbC4gVGhlIG90aGVyIHR3byBhcmUgaW4gYGZzL2Z1c2UvZGV2LmNgIGFzIHdlbGwsIHNvIHRoYXQncyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZXMgbGlrZWx5IGxpZS5cblxuSSBjaGVja2VkIHF1aWNrbHksIGFuZCB5ZXMsIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgaXMsIGFzIEkgc3VzcGVjdGVkLCBhIHN0YXRpYyBmdW5jdGlvbiwgc28gd2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBpdCBmb3IgZnVydGhlciBhbmFseXNpcy4gVGhpcyBwYXRjaCBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gaG93IHRoZSBgL2Rldi9mdXNlYCBkZXZpY2UgYmVoYXZlcy4gSXQncyBhZGRpbmcgYSBgZmx1c2hgIGhhbmRsZXIsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgcGF0Y2ggaXMgbWVhbnQgdG8gcHJvcGVybHkgYWJvcnQgYSBGVVNFIGNoYW5uZWwgZHVyaW5nIHRoZSBjbG9zaW5nIHN0YWdlLiBUaGlzIHdvdWxkIGJlIGNydWNpYWwgZm9yIGZpeGluZyBzb21lIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBidWcgSSdtIGZhbWlsaWFyIHdpdGgsIHRoYXQgY2FuIGFyaXNlIGR1cmluZyBmaW5hbCBkZXZpY2UgY2xvc3VyZSBhbmQgY2hhbm5lbCBkaXNjb25uZWN0aW9uLlxuXG5Gcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGNvbnNpZGVyaW5nLiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgaGFuZGxpbmcgb2YgdGhlIEZVU0UgZGV2aWNlLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJlIHNwb3Qtb24g4oCTIHRoZXkgcGlucG9pbnQgdGhlIGV4YWN0IGNvZGUgYXJlYXMgdGhpcyBwYXRjaCBtb2RpZmllcy4gQW5kIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIHNlbnNpYmxlOyBgRlVTRV9GU2AgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBjb2RlIHRvIGV2ZW4gYmUgcmVsZXZhbnQuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIHRoaXMgcGF0Y2ggc2VlbXMgbGlrZSBpdCBjb3VsZCBleHBvc2Ugc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHZ1bG5lcmFiaWxpdGllcy4gSXQncyB1c2VyLXRyaWdnZXJhYmxlLCBhbmQgaW52b2x2ZXMgY2hhbmdlcyB0byBjb3JlIGRldmljZSBoYW5kbGluZywgc28gaXQgc2hvdWxkIGJlIG9uIHRoZSBmdXp6aW5nIGxpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NDcsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjMyLjAxMTg1NjE1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTkwMjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZGV2X2ZsdXNoXCIsXG4gICAgXCJmdXNlX2Rldl9yZWxlYXNlXCIsXG4gICAgXCJmdXNlX2dldF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgYGZsdXNoYCBmaWxlIG9wZXJhdGlvbiB0byBgL2Rldi9mdXNlYCBhbmQgdXBkYXRpbmcgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIHRvIGhhbmRsZSBmaW5hbCBjbG9zZXMgcHJvcGVybHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9kZXZfZmx1c2hcIixcbiAgICBcImZ1c2VfZGV2X3JlbGVhc2VcIixcbiAgICBcImZ1c2VfZ2V0X2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGVVNFIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBgZmx1c2hgIGZpbGUgb3BlcmF0aW9uIHRvIGAvZGV2L2Z1c2VgIGFuZCB1cGRhdGluZyBjaGFubmVsIGRpc2Nvbm5lY3Rpb24gbG9naWMgdG8gaGFuZGxlIGZpbmFsIGNsb3NlcyBwcm9wZXJseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgRlVTRSBkZXZpY2UgaGFuZGxpbmcgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowsx5nw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 18:05:36 +0000 UTC FinishedAt: 2026-07-27 18:26:34 +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": "b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "fuse_dev_flush", "fuse_dev_release", "fuse_get_dev" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDssCiAgICAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgYGZsdXNoYCBmaWxlIG9wZXJhdGlvbiB0byBgL2Rldi9mdXNlYCBhbmQgdXBkYXRpbmcgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIHRvIGhhbmRsZSBmaW5hbCBjbG9zZXMgcHJvcGVybHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxODoyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJlMjczNTYxZTY0MDIxZTEyYTEwZDJjNjNhNmViYTczYTZhYmFiYjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxODoyNjowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuY1xuaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9kZXYuY1xuQEAgLTE2NjIsMTggJiM0MzsxNjYyLDIzIEBAIHN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB7XG4gXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4mIzQzO1x0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKTtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAodW5saWtlbHkoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpKSB7XG4mIzQzO1x0aWYgKHVubGlrZWx5KCFmY2gpKSB7XG4gXHRcdC8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi9cbiBcdFx0aWYgKCFmdWQtXHUwMDNlc3luY19pbml0KVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XG4gXG4tXHRcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTtcbiYjNDM7XHRcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgICAoZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkgIT0gTlVMTCk7XG4gXHRcdGlmIChlcnIpXG4gXHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbiBcdH1cbiBcbiYjNDM7XHRpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSlcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XG4mIzQzO1xuIFx0cmV0dXJuIGZ1ZDtcbiB9XG4gXG5AQCAtMjIxMSwxNyAmIzQzOzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbiBcdGZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGZ1c2VfZGV2ICpwb3M7XG4mIzQzO1xuJiM0MztcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgXHUwMDI2ZmNoLVx1MDAzZWRldmljZXMsIGVudHJ5KSB7XG4mIzQzO1x0XHRpZiAoIXBvcy1cdTAwM2VjbG9zaW5nKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbiBcdC8qIFBhaXJzIHdpdGggY21weGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xuIFx0c3RydWN0IGZ1c2VfY2hhbiAqZmNoID0geGNoZyhcdTAwMjZmdWQtXHUwMDNlY2hhbiwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpO1xuIFxuLVx0aWYgKGZjaCkge1xuJiM0MztcdGlmIChmY2ggXHUwMDI2XHUwMDI2IGZjaCAhPSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCkge1xuIFx0XHRzdHJ1Y3QgZnVzZV9wcXVldWUgKmZwcSA9IFx1MDAyNmZ1ZC1cdTAwM2VwcTtcbiBcdFx0TElTVF9IRUFEKHRvX2VuZCk7XG4gXHRcdHVuc2lnbmVkIGludCBpO1xuIFx0XHRib29sIGxhc3Q7XG4mIzQzO1x0XHRib29sIGFib3J0O1xuIFxuIFx0XHQvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG5AQCAtMjIzNCwxNCAmIzQzOzIyNTMsMTUgQEAgaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4gXHRcdGxpc3RfZGVsKFx1MDAyNmZ1ZC1cdTAwM2VlbnRyeSk7XG4gXHRcdC8qIEFyZSB3ZSB0aGUgbGFzdCBvcGVuIGRldmljZT8gKi9cbiBcdFx0bGFzdCA9IGxpc3RfZW1wdHkoXHUwMDI2ZmNoLVx1MDAzZWRldmljZXMpO1xuJiM0MztcdFx0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuIFx0XHRzcGluX3VubG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4gXG4gXHRcdGZ1c2VfZGV2X2VuZF9yZXF1ZXN0cyhcdTAwMjZ0b19lbmQpO1xuIFxuLVx0XHRpZiAobGFzdCkge1xuJiM0MztcdFx0aWYgKGxhc3QpXG4gXHRcdFx0V0FSTl9PTihmY2gtXHUwMDNlaXEuZmFzeW5jICE9IE5VTEwpO1xuJiM0MztcdFx0aWYgKGFib3J0KVxuIFx0XHRcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcbi1cdFx0fVxuIFx0XHRmdXNlX2Nvbm5fcHV0KGZjaC1cdTAwM2Vjb25uKTtcbiBcdH1cbiBcdGZ1c2VfZGV2X3B1dChmdWQpO1xuQEAgLTIzNzUsNiAmIzQzOzIzOTUsMzQgQEAgc3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxuIH1cbiAjZW5kaWZcbiBcbiYjNDM7c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7XG4mIzQzO1x0Ym9vbCBhYm9ydDtcbiYjNDM7XG4mIzQzO1x0aWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEF0b21pY2FsbHkgdHJhbnNpdGlvbiBmdWQtXHUwMDNlY2hhbiBmcm9tIE5VTEwgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiYjNDM7XHQgKiBvbiBmaW5hbCBjbG9zZSB0byBwcmV2ZW50IGEgbGF0ZXIgZnVzZV9kZXZfaW5zdGFsbCgpIGZyb20gc3VjY2VlZGluZy5cbiYjNDM7XHQgKi9cbiYjNDM7XHRmY2ggPSBjbXB4Y2hnKFx1MDAyNmZ1ZC1cdTAwM2VjaGFuLCBOVUxMLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XG4mIzQzO1x0aWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4mIzQzO1x0ZnVkLVx1MDAzZWNsb3NpbmcgPSB0cnVlO1xuJiM0MztcdGFib3J0ID0gZmNoLVx1MDAzZWNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcbiYjNDM7XHRzcGluX3VubG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChhYm9ydClcbiYjNDM7XHRcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gXHQub3Blblx0XHQ9IGZ1c2VfZGV2X29wZW4sXG5AQCAtMjM4Myw2ICYjNDM7MjQzMSw3IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHtcbiBcdC53cml0ZV9pdGVyXHQ9IGZ1c2VfZGV2X3dyaXRlLFxuIFx0LnNwbGljZV93cml0ZVx0PSBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUsXG4gXHQucG9sbFx0XHQ9IGZ1c2VfZGV2X3BvbGwsXG4mIzQzO1x0LmZsdXNoXHRcdD0gZnVzZV9kZXZfZmx1c2gsXG4gXHQucmVsZWFzZVx0PSBmdXNlX2Rldl9yZWxlYXNlLFxuIFx0LmZhc3luY1x0XHQ9IGZ1c2VfZGV2X2Zhc3luYyxcbiBcdC51bmxvY2tlZF9pb2N0bCA9IGZ1c2VfZGV2X2lvY3RsLFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbmluZGV4IDY2OGM4MzkxZDYxYzAzLi4yODMzYTAzNTBjNDM1YSAxMDA2NDRcbi0tLSBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuQEAgLTMwMiw2ICYjNDM7MzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHtcbiBcdC8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqL1xuIFx0Ym9vbCBzeW5jX2luaXQ7XG4gXG4mIzQzO1x0LyoqIEBjbG9zaW5nOiBGaW5hbCBjbG9zZSBoYXMgc3RhcnRlZCwgcHJvdGVjdGVkIGJ5IGNoYW4tXHUwMDNlbG9jayAqL1xuJiM0MztcdGJvb2wgY2xvc2luZztcbiYjNDM7XG4gXHQvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmNoYW47XG4gXG5AQCAtMzMwLDE3ICYjNDM7MzMzLDI1IEBAIHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUge1xuIFx0fSByaW5nO1xuIH07XG4gXG4tLyogZnVkLVx1MDAzZWNoYW4gZ2V0cyBhc3NpZ25lZCB0byB0aGlzIHZhbHVlIHdoZW4gL2Rldi9mdXNlIGlzIGNsb3NlZCAqL1xuLSNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXG4tXG4gLypcbi0gKiBMb2NrbGVzcyBhY2Nlc3MgaXMgT0ssIGJlY2F1c2UgZnVkLVx1MDAzZWNoYW4gaXMgc2V0IG9uY2UgZHVyaW5nIG1vdW50IGFuZCBpcyB2YWxpZFxuLSAqIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLlxuJiM0MzsgKiBmdWQtXHUwMDNlY2hhbiBoYXMgdGhlIGZvbGxvd2luZyBtb25vdG9uaWMgc3RhdGUgdHJhbnNpdGlvbnM6XG4mIzQzOyAqXG4mIzQzOyAqIE5VTEwgLVx1MDAzZSB2YWxpZCBjaGFubmVsIC1cdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiYjNDM7ICogTlVMTCAtLS0tLS0tLS0tLS0tLS0tLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuICAqXG4tICogZnVkLVx1MDAzZWNoYW4gaXMgc2V0IHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIG9ubHkgYWZ0ZXIgdGhlIGNvbnRhaW5pbmcgZmlsZSBpc1xuLSAqIHJlbGVhc2VkLCBzbyByZXN1bHQgaXMgc2FmZSB0byBkZXJlZmVyZW5jZSBpbiBtb3N0IGNhc2VzLiAgRXhjZXB0aW9ucyBhcmU6XG4tICogZnVzZV9kZXZfcHV0KCkgYW5kIGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oKS5cbiYjNDM7ICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWxcbiYjNDM7ICogZmx1c2ggY2FuIGluc3RhbGwgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgZGlyZWN0bHkgZm9yIGFuIHVuaW5zdGFsbGVkXG4mIzQzOyAqIGRldmljZSwgcHJldmVudGluZyBhbnkgbGF0ZXIgY2hhbm5lbCBpbnN0YWxsYXRpb24uIFRoZSBzZW50aW5lbCB0aGVyZWZvcmVcbiYjNDM7ICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXNcbiYjNDM7ICogZmlsZTsgaXQgZG9lcyBub3QgaW1wbHkgdGhhdCByZWxlYXNlIGhhcyBhbHJlYWR5IHJ1biBhbmQgaXQgbXVzdCBuZXZlciBiZVxuJiM0MzsgKiBkZXJlZmVyZW5jZWQuXG4mIzQzOyAqXG4mIzQzOyAqIGZ1c2VfZGV2X2NoYW5fZ2V0KCkgcmVhZHMgdGhpcyBzdGF0ZSBsb2NrbGVzc2x5LiBDYWxsZXJzIG11c3QgZGlzdGluZ3Vpc2hcbiYjNDM7ICogTlVMTCwgYSB2YWxpZCBjaGFubmVsIHBvaW50ZXIsIGFuZCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBiZWZvcmVcbiYjNDM7ICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LlxuICAqL1xuJiM0MzsjZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKVxuJiM0MztcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2NoYW4gKmZ1c2VfZGV2X2NoYW5fZ2V0KHN0cnVjdCBmdXNlX2RldiAqZnVkKVxuIHtcbiBcdC8qIFBhaXJzIHdpdGggeGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xuQEAgLTM1NSw4ICYjNDM7MzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbiYjNDM7XHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpO1xuIFxuLVx0aWYgKCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKVxuJiM0MztcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4gXHRyZXR1cm4gZnVkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9kZXZfZmx1c2gmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0Ugc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGBmbHVzaGAgZmlsZSBvcGVyYXRpb24gdG8gYC9kZXYvZnVzZWAgYW5kIHVwZGF0aW5nIGNoYW5uZWwgZGlzY29ubmVjdGlvbiBsb2dpYyB0byBoYW5kbGUgZmluYWwgY2xvc2VzIHByb3Blcmx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyZTI3MzU2MWU2NDAyMWUxMmExMGQyYzYzYTZlYmE3M2E2YWJhYmI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMjcgMTg6MjY6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuYwppbmRleCA1NzYzYTdjZDNiMzdmYS4uOGIxNGM3ZDU3YTAxMTkgMTAwNjQ0Ci0tLSBhL2ZzL2Z1c2UvZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZnVzZS9kZXYuYwpAQCAtMTY2MiwxOCAmIzQzOzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpOwomIzQzOwlzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpOwogCWludCBlcnI7CiAKLQlpZiAodW5saWtlbHkoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpKSB7CiYjNDM7CWlmICh1bmxpa2VseSghZmNoKSkgewogCQkvKiBvbmx5IGJsb2NrIHdhaXRpbmcgZm9yIG1vdW50IGlmIHN5bmMgaW5pdCB3YXMgcmVxdWVzdGVkICovCiAJCWlmICghZnVkLSZndDtzeW5jX2luaXQpCiAJCQlyZXR1cm4gRVJSX1BUUigtRVBFUk0pOwogCi0JCWVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTsKJiM0MzsJCWVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwKJiM0MzsJCQkJCSAgICAgICAoZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkgIT0gTlVMTCk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gRVJSX1BUUihlcnIpOwogCX0KIAomIzQzOwlpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSkKJiM0MzsJCXJldHVybiBFUlJfUFRSKC1FUEVSTSk7CiYjNDM7CiAJcmV0dXJuIGZ1ZDsKIH0KIApAQCAtMjIxMSwxNyAmIzQzOzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaCkKIAlmdXNlX3VyaW5nX3dhaXRfc3RvcHBlZF9xdWV1ZXMoZmNoKTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGZ1c2VfZGV2X2FsbF9jbG9zaW5nKHN0cnVjdCBmdXNlX2NoYW4gKmZjaCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBmdXNlX2RldiAqcG9zOwomIzQzOwomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7ZmNoLSZndDtsb2NrKTsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsICZhbXA7ZmNoLSZndDtkZXZpY2VzLCBlbnRyeSkgewomIzQzOwkJaWYgKCFwb3MtJmd0O2Nsb3NpbmcpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KJiM0MzsKIGludCBmdXNlX2Rldl9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogewogCXN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTsKIAkvKiBQYWlycyB3aXRoIGNtcHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi8KIAlzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKCZhbXA7ZnVkLSZndDtjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7CiAKLQlpZiAoZmNoKSB7CiYjNDM7CWlmIChmY2ggJmFtcDsmYW1wOyBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHsKIAkJc3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSAmYW1wO2Z1ZC0mZ3Q7cHE7CiAJCUxJU1RfSEVBRCh0b19lbmQpOwogCQl1bnNpZ25lZCBpbnQgaTsKIAkJYm9vbCBsYXN0OwomIzQzOwkJYm9vbCBhYm9ydDsKIAogCQkvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovCiAJCXNwaW5fbG9jaygmYW1wO2ZjaC0mZ3Q7bG9jayk7CkBAIC0yMjM0LDE0ICYjNDM7MjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAkJbGlzdF9kZWwoJmFtcDtmdWQtJmd0O2VudHJ5KTsKIAkJLyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqLwogCQlsYXN0ID0gbGlzdF9lbXB0eSgmYW1wO2ZjaC0mZ3Q7ZGV2aWNlcyk7CiYjNDM7CQlhYm9ydCA9IGZjaC0mZ3Q7Y29ubmVjdGVkICZhbXA7JmFtcDsgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTsKIAkJc3Bpbl91bmxvY2soJmFtcDtmY2gtJmd0O2xvY2spOwogCiAJCWZ1c2VfZGV2X2VuZF9yZXF1ZXN0cygmYW1wO3RvX2VuZCk7CiAKLQkJaWYgKGxhc3QpIHsKJiM0MzsJCWlmIChsYXN0KQogCQkJV0FSTl9PTihmY2gtJmd0O2lxLmZhc3luYyAhPSBOVUxMKTsKJiM0MzsJCWlmIChhYm9ydCkKIAkJCWZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTsKLQkJfQogCQlmdXNlX2Nvbm5fcHV0KGZjaC0mZ3Q7Y29ubik7CiAJfQogCWZ1c2VfZGV2X3B1dChmdWQpOwpAQCAtMjM3NSw2ICYjNDM7MjM5NSwzNCBAQCBzdGF0aWMgdm9pZCBmdXNlX2Rldl9zaG93X2ZkaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgc3RydWN0IGZpbGUgKmZpbGUpCiB9CiAjZW5kaWYKIAomIzQzO3N0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7CiYjNDM7CXN0cnVjdCBmdXNlX2NoYW4gKmZjaDsKJiM0MzsJYm9vbCBhYm9ydDsKJiM0MzsKJiM0MzsJaWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBBdG9taWNhbGx5IHRyYW5zaXRpb24gZnVkLSZndDtjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRAomIzQzOwkgKiBvbiBmaW5hbCBjbG9zZSB0byBwcmV2ZW50IGEgbGF0ZXIgZnVzZV9kZXZfaW5zdGFsbCgpIGZyb20gc3VjY2VlZGluZy4KJiM0MzsJICovCiYjNDM7CWZjaCA9IGNtcHhjaGcoJmFtcDtmdWQtJmd0O2NoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTsKJiM0MzsJaWYgKCFmY2ggfHwgZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CXNwaW5fbG9jaygmYW1wO2ZjaC0mZ3Q7bG9jayk7CiYjNDM7CWZ1ZC0mZ3Q7Y2xvc2luZyA9IHRydWU7CiYjNDM7CWFib3J0ID0gZmNoLSZndDtjb25uZWN0ZWQgJmFtcDsmYW1wOyBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpOwomIzQzOwlzcGluX3VubG9jaygmYW1wO2ZjaC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmIChhYm9ydCkKJiM0MzsJCWZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0gewogCS5vd25lcgkJPSBUSElTX01PRFVMRSwKIAkub3BlbgkJPSBmdXNlX2Rldl9vcGVuLApAQCAtMjM4Myw2ICYjNDM7MjQzMSw3IEBAIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZnVzZV9kZXZfb3BlcmF0aW9ucyA9IHsKIAkud3JpdGVfaXRlcgk9IGZ1c2VfZGV2X3dyaXRlLAogCS5zcGxpY2Vfd3JpdGUJPSBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUsCiAJLnBvbGwJCT0gZnVzZV9kZXZfcG9sbCwKJiM0MzsJLmZsdXNoCQk9IGZ1c2VfZGV2X2ZsdXNoLAogCS5yZWxlYXNlCT0gZnVzZV9kZXZfcmVsZWFzZSwKIAkuZmFzeW5jCQk9IGZ1c2VfZGV2X2Zhc3luYywKIAkudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCwKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmgKaW5kZXggNjY4YzgzOTFkNjFjMDMuLjI4MzNhMDM1MGM0MzVhIDEwMDY0NAotLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaApAQCAtMzAyLDYgJiM0MzszMDIsOSBAQCBzdHJ1Y3QgZnVzZV9kZXYgewogCS8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqLwogCWJvb2wgc3luY19pbml0OwogCiYjNDM7CS8qKiBAY2xvc2luZzogRmluYWwgY2xvc2UgaGFzIHN0YXJ0ZWQsIHByb3RlY3RlZCBieSBjaGFuLSZndDtsb2NrICovCiYjNDM7CWJvb2wgY2xvc2luZzsKJiM0MzsKIAkvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi8KIAlzdHJ1Y3QgZnVzZV9jaGFuICpjaGFuOwogCkBAIC0zMzAsMTcgJiM0MzszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7CiAJfSByaW5nOwogfTsKIAotLyogZnVkLSZndDtjaGFuIGdldHMgYXNzaWduZWQgdG8gdGhpcyB2YWx1ZSB3aGVuIC9kZXYvZnVzZSBpcyBjbG9zZWQgKi8KLSNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpCi0KIC8qCi0gKiBMb2NrbGVzcyBhY2Nlc3MgaXMgT0ssIGJlY2F1c2UgZnVkLSZndDtjaGFuIGlzIHNldCBvbmNlIGR1cmluZyBtb3VudCBhbmQgaXMgdmFsaWQKLSAqIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLgomIzQzOyAqIGZ1ZC0mZ3Q7Y2hhbiBoYXMgdGhlIGZvbGxvd2luZyBtb25vdG9uaWMgc3RhdGUgdHJhbnNpdGlvbnM6CiYjNDM7ICoKJiM0MzsgKiBOVUxMIC0mZ3Q7IHZhbGlkIGNoYW5uZWwgLSZndDsgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQKJiM0MzsgKiBOVUxMIC0tLS0tLS0tLS0tLS0tLS0tJmd0OyBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRAogICoKLSAqIGZ1ZC0mZ3Q7Y2hhbiBpcyBzZXQgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgb25seSBhZnRlciB0aGUgY29udGFpbmluZyBmaWxlIGlzCi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOgotICogZnVzZV9kZXZfcHV0KCkgYW5kIGZ1c2VfZmlsbF9zdXBlcl9jb21tb24oKS4KJiM0MzsgKiBBIHZhbGlkIGNoYW5uZWwgcG9pbnRlciByZW1haW5zIHZhbGlkIHVudGlsIHRoZSBmaWxlIGlzIHJlbGVhc2VkLiBGaW5hbAomIzQzOyAqIGZsdXNoIGNhbiBpbnN0YWxsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGRpcmVjdGx5IGZvciBhbiB1bmluc3RhbGxlZAomIzQzOyAqIGRldmljZSwgcHJldmVudGluZyBhbnkgbGF0ZXIgY2hhbm5lbCBpbnN0YWxsYXRpb24uIFRoZSBzZW50aW5lbCB0aGVyZWZvcmUKJiM0MzsgKiBtZWFucyB0aGF0IHRoZSBjaGFubmVsIGNhbiBubyBsb25nZXIgYmUgaW5zdGFsbGVkIG9yIGFjY2Vzc2VkIHRocm91Z2ggdGhpcwomIzQzOyAqIGZpbGU7IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgcmVsZWFzZSBoYXMgYWxyZWFkeSBydW4gYW5kIGl0IG11c3QgbmV2ZXIgYmUKJiM0MzsgKiBkZXJlZmVyZW5jZWQuCiYjNDM7ICoKJiM0MzsgKiBmdXNlX2Rldl9jaGFuX2dldCgpIHJlYWRzIHRoaXMgc3RhdGUgbG9ja2xlc3NseS4gQ2FsbGVycyBtdXN0IGRpc3Rpbmd1aXNoCiYjNDM7ICogTlVMTCwgYSB2YWxpZCBjaGFubmVsIHBvaW50ZXIsIGFuZCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBiZWZvcmUKJiM0MzsgKiBkZXJlZmVyZW5jaW5nIHRoZSByZXN1bHQuCiAgKi8KJiM0MzsjZGVmaW5lIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEICgoc3RydWN0IGZ1c2VfY2hhbiAqKSAxKQomIzQzOwogc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCkKIHsKIAkvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi8KQEAgLTM1NSw4ICYjNDM7MzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2RldiAqX19mdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpOwomIzQzOwlzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpOwogCi0JaWYgKCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKQomIzQzOwlpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpCiAJCXJldHVybiBOVUxMOwogCiAJcmV0dXJuIGZ1ZDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDExMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRlVTRSBEZXZpY2UgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgRlVTRSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0aGUgZGV2aWNlIGZpbGUgYXNwZWN0IChgL2Rldi9mdXNlYCkuIEl0JiMzOTtzIG1vZGlmeWluZyBgZnMvZnVzZS9kZXYuY2AgYW5kIGBmcy9mdXNlL2Z1c2VfZGV2X2kuaGAsIGFuZCBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBgZmx1c2hgIG9wZXJhdGlvbiwgYGZ1c2VfZGV2X2ZsdXNoYCwgdG8gdGhlIGBmdXNlX2Rldl9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIEFsc28sIGBmdXNlX2dldF9kZXZgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGFuZCBgX19mdXNlX2dldF9kZXZgIGhhdmUgYmVlbiB0d2Vha2VkIHRvIGhhbmRsZSBgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURgLiBUaGlzIHNpZ25hbHMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIEZVU0UgZGV2aWNlIGRyaXZlciB3b3Jrcy4gSXQgYXBwZWFycyB0aGVyZSBpcyBhIG5ldyBzdGF0ZSB0cmFuc2l0aW9uIGZvciBgZnVkLSZndDtjaGFuYCBhbmQgdGhlIGBmbHVzaGAgb3BlcmF0aW9uIHdpbGwgYmUgdXNlZCB0byBhYm9ydCB0aGUgY2hhbm5lbCBkdXJpbmcgZmluYWwgZGV2aWNlIGNsb3NpbmcuCgpJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGlzIHRvdWNoZXMgY29yZSBkZXZpY2Ugb3BlcmF0aW9ucyBhbmQgaW50cm9kdWNlcyBuZXcgc3RhdGUgaGFuZGxpbmcsIHNvIGl0IGlzIGxpa2VseSB0byBleHBvc2Ugc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLgoKVG8gcHJlcGFyZSBmb3IgZnV6emluZywgSSYjMzk7bSBnb2luZyB0byBuZWVkIGEgdGFyZ2V0IGxpc3QgYW5kIHNvbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXM6CgoxLiAgKipGb2N1cyBTeW1ib2xzOioqIERlZmluaXRlbHksIGBmdXNlX2Rldl9mbHVzaGAsIGBmdXNlX2Rldl9yZWxlYXNlYCwgYGZ1c2VfZ2V0X2RldmAsIGFuZCBgX19mdXNlX2dldF9kZXZgIGFyZSBnb2luZyB0byBiZSBteSBwcmltYXJ5IGZvY3VzLiBUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2guCgoyLiAgKipFbmFibGUgQ29uZmlndXJhdGlvbjoqKiBDbGVhcmx5LCBJJiMzOTtsbCBuZWVkIGBGVVNFX0ZTYCBlbmFibGVkIGZvciB0aGUgZnV6emVyIHRvIGV2ZW4gY29uc2lkZXIgdGhpcyBjb2RlIHBhdGguCgpCZWZvcmUgZGl2aW5nIGRlZXBlciBpbnRvIHRoZSBmdXp6aW5nLCBsZXQmIzM5O3MgdmVyaWZ5IGBGVVNFX0ZTYCBpcyBwcm9wZXJseSBlbmFibGVkLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBpbnNpZGUgYGZzL2Z1c2UvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGlzIGNvbmZpZyBvcHRpb24gaXMgcHJlc2VudCBhbmQsIGlmIG5lZWRlZCwgd2hhdCBvdGhlciByZWxhdGVkIGNvbmZpZ3MgbmVlZCB0byBiZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGVVNFX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZnVzZS9LY29uZmlnOjI6Y29uZmlnIEZVU0VfRlNcbmZzL2Z1c2UvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7RlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxODoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODY0CgkJCQkJCQlvdXRwdXQ6IDY4CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBGVVNFIEZpbGVzeXN0ZW0gSW1wbGVtZW50YXRpb24qKgoKT2theSwgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgSSYjMzk7bSB3b3JraW5nIHdpdGggaXMgYEZVU0VfRlNgLiBUaGF0IG5hcnJvd3MgZG93biBteSBmb2N1cyBjb25zaWRlcmFibHkuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGRpZyBpbnRvIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBzdGFydCBsb29raW5nIGF0IGhvdyB0aGlzIGlzIGJlaW5nIGluaXRpYWxpemVkLCBwYXJ0aWN1bGFybHkgZnJvbSBhIGRldmljZSBwZXJzcGVjdGl2ZSwgaXMgaW4gYGZzL2Z1c2UvZGV2LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlIGludGVyZmFjZSBhbmQgaG93IHRoZSBrZXJuZWwgaW50ZXJhY3RzIHdpdGggdXNlciBzcGFjZSB0aHJvdWdoIEZVU0UuIFRoaXMgZmlsZSBwcm9iYWJseSBjb250YWlucyB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludHMgYW5kIGRhdGEgc3RydWN0dXJlcyBmb3IgdGhhdCBpbnRlcmFjdGlvbi4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZGV2aWNlIGRyaXZlciByZWdpc3RyYXRpb24sIGNoYXJhY3RlciBkZXZpY2Ugb3BlcmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IHNvbWUgb2YgdGhlIGNvcmUgY29tbXVuaWNhdGlvbiBwcmltaXRpdmVzLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxODoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZHxzdHJ1Y3QgZnVzZV9kZXYgXFwqKSAoZnVzZV9kZXZfZmx1c2h8ZnVzZV9kZXZfcmVsZWFzZXxmdXNlX2dldF9kZXZ8X19mdXNlX2dldF9kZXYpXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9mdXNlL2Rldi5jPTIyMTk9c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjIzMS1cbmZzL2Z1c2UvZGV2LmM6MjIzMjppbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMjIzMy17XG4tLVxuZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9mdXNlL2Rldi5jLTIzOTctXG5mcy9mdXNlL2Rldi5jOjIzOTg6c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcbmZzL2Z1c2UvZGV2LmMtMjM5OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM0MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIGEgUG90ZW50aWFsIEZpbGVzeXN0ZW0gTWlzbWF0Y2gqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBwcmV0dHkgc3VyZSBJIHNhdyBgZnVzZV9nZXRfZGV2YCBkZWZpbmVkIGluIGBmcy9mdXNlL2Rldi5jYCwgYnV0IHRoZSByZWdleCBJIHVzZWQgZWFybGllciB0byBmaW5kIGl0cyBkZWZpbml0aW9uIG1pZ2h0IGhhdmUgZmFpbGVkLiBJdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rIHRoaW5ncyB3aGVuIHlvdSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgbGFyZ2UgY29kZWJhc2UuIEJlZm9yZSBJIGdvIHRvbyBmYXIgZG93biB0aGlzIHBhdGgsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgZnVuY3Rpb24mIzM5O3MgbG9jYXRpb24gYXJlIGNvcnJlY3QuIExldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGRpcmVjdGx5LiBObyBwb2ludCBzcGlubmluZyBteSB3aGVlbHMgaWYgSSYjMzk7bSBiYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2Z1c2UvZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZnVzZS9kZXYuYz0xNjUxPXN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9mdXNlL2Rldi5jLTE2NjEtXG5mcy9mdXNlL2Rldi5jOjE2NjI6c3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXG5mcy9mdXNlL2Rldi5jLTE2NjMte1xuLS1cbmZzL2Z1c2UvZGV2LmM9MTY4NT1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcbi0tXG5mcy9mdXNlL2Rldi5jLTE2ODgtXHRzdHJ1Y3QgZmlsZSAqZmlsZSA9IGlvY2ItXHUwMDNla2lfZmlscDtcbmZzL2Z1c2UvZGV2LmM6MTY4OTpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0xNjkwLVxuLS1cbmZzL2Z1c2UvZGV2LmM9MTcwMj1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9zcGxpY2VfcmVhZChzdHJ1Y3QgZmlsZSAqaW4sIGxvZmZfdCAqcHBvcyxcbi0tXG5mcy9mdXNlL2Rldi5jLTE3MDktXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xuZnMvZnVzZS9kZXYuYzoxNzEwOlx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoaW4pO1xuZnMvZnVzZS9kZXYuYy0xNzExLVxuLS1cbmZzL2Z1c2UvZGV2LmM9MTk3Mz1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl93cml0ZShzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbi0tXG5mcy9mdXNlL2Rldi5jLTE5NzUtXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xuZnMvZnVzZS9kZXYuYzoxOTc2Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2Rldihpb2NiLVx1MDAzZWtpX2ZpbHApO1xuZnMvZnVzZS9kZXYuYy0xOTc3LVxuLS1cbmZzL2Z1c2UvZGV2LmM9MTk4OT1zdGF0aWMgc3NpemVfdCBmdXNlX2Rldl9zcGxpY2Vfd3JpdGUoc3RydWN0IHBpcGVfaW5vZGVfaW5mbyAqcGlwZSxcbi0tXG5mcy9mdXNlL2Rldi5jLTE5OTctXHRzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIGNzO1xuZnMvZnVzZS9kZXYuYzoxOTk4Olx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihvdXQpO1xuZnMvZnVzZS9kZXYuYy0xOTk5LVx0c2l6ZV90IHJlbTtcbi0tXG5mcy9mdXNlL2Rldi5jPTIwODE9c3RhdGljIF9fcG9sbF90IGZ1c2VfZGV2X3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpXG4tLVxuZnMvZnVzZS9kZXYuYy0yMDg0LVx0c3RydWN0IGZ1c2VfaXF1ZXVlICpmaXE7XG5mcy9mdXNlL2Rldi5jOjIwODU6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjA4Ni1cbi0tXG5mcy9mdXNlL2Rldi5jPTIyNzI9c3RhdGljIGludCBmdXNlX2Rldl9mYXN5bmMoaW50IGZkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG9uKVxuZnMvZnVzZS9kZXYuYy0yMjczLXtcbmZzL2Z1c2UvZGV2LmM6MjI3NDpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMjc1LVxuLS1cbmZzL2Z1c2UvZGV2LmM9MjI4Mz1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9jbG9uZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxuLS1cbmZzL2Z1c2UvZGV2LmMtMjMwMi1cbmZzL2Z1c2UvZGV2LmM6MjMwMzpcdGZ1ZCA9IGZ1c2VfZ2V0X2RldihmZF9maWxlKGYpKTtcbmZzL2Z1c2UvZGV2LmMtMjMwNC1cdGlmIChJU19FUlIoZnVkKSlcbi0tXG5mcy9mdXNlL2Rldi5jPTIzMTg9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfYmFja2luZ19vcGVuKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmZzL2Z1c2UvZGV2LmMtMjMyMC17XG5mcy9mdXNlL2Rldi5jOjIzMjE6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcbmZzL2Z1c2UvZGV2LmMtMjMyMi1cdHN0cnVjdCBmdXNlX2JhY2tpbmdfbWFwIG1hcDtcbi0tXG5mcy9mdXNlL2Rldi5jPTIzMzY9c3RhdGljIGxvbmcgZnVzZV9kZXZfaW9jdGxfYmFja2luZ19jbG9zZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxuZnMvZnVzZS9kZXYuYy0yMzM3LXtcbmZzL2Z1c2UvZGV2LmM6MjMzODpcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMzM5LVx0aW50IGJhY2tpbmdfaWQ7XG4tLVxuZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbmZzL2Z1c2UvZGV2LmMtMjM4OS17XG5mcy9mdXNlL2Rldi5jOjIzOTA6XHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IF9fZnVzZV9nZXRfZGV2KGZpbGUpO1xuZnMvZnVzZS9kZXYuYy0yMzkxLVx0aWYgKCFmdWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTg6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc0NwoJCQkJCQkJb3V0cHV0OiAxMTcKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBGVVNFIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgcmVsYXRlZCB0byBGVVNFLCBzcGVjaWZpY2FsbHkgdGhlIGAvZGV2L2Z1c2VgIGRldmljZS4gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGZ1c2VfZGV2X2ZsdXNoYCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgYGZ1c2VfZ2V0X2RldmAuIEkga25vdyB0aGF0IGBmdXNlX2dldF9kZXZgIGlzIGRlZmluZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMsIGlubGluZSBpbiBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgIGFuZCBhbHNvIGluIGBmcy9mdXNlL2Rldi5jYCwgd2hpY2ggaXNuJiMzOTt0IHVudXN1YWwuIFRoZSBvdGhlciB0d28gYXJlIGluIGBmcy9mdXNlL2Rldi5jYCBhcyB3ZWxsLCBzbyB0aGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlcyBsaWtlbHkgbGllLgoKSSBjaGVja2VkIHF1aWNrbHksIGFuZCB5ZXMsIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgaXMsIGFzIEkgc3VzcGVjdGVkLCBhIHN0YXRpYyBmdW5jdGlvbiwgc28gd2UgZG9uJiMzOTt0IG5lZWQgdG8gY29uc2lkZXIgaXQgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuIFRoaXMgcGF0Y2ggbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGhvdyB0aGUgYC9kZXYvZnVzZWAgZGV2aWNlIGJlaGF2ZXMuIEl0JiMzOTtzIGFkZGluZyBhIGBmbHVzaGAgaGFuZGxlciwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBwYXRjaCBpcyBtZWFudCB0byBwcm9wZXJseSBhYm9ydCBhIEZVU0UgY2hhbm5lbCBkdXJpbmcgdGhlIGNsb3Npbmcgc3RhZ2UuIFRoaXMgd291bGQgYmUgY3J1Y2lhbCBmb3IgZml4aW5nIHNvbWUgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIGJ1ZyBJJiMzOTttIGZhbWlsaWFyIHdpdGgsIHRoYXQgY2FuIGFyaXNlIGR1cmluZyBmaW5hbCBkZXZpY2UgY2xvc3VyZSBhbmQgY2hhbm5lbCBkaXNjb25uZWN0aW9uLgoKRnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBjb25zaWRlcmluZy4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBoYW5kbGluZyBvZiB0aGUgRlVTRSBkZXZpY2UuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgc3BvdC1vbiDigJMgdGhleSBwaW5wb2ludCB0aGUgZXhhY3QgY29kZSBhcmVhcyB0aGlzIHBhdGNoIG1vZGlmaWVzLiBBbmQgdGhlIGBFbmFibGVDb25maWdzYCBhcmUgc2Vuc2libGU7IGBGVVNFX0ZTYCBuZWVkcyB0byBiZSBlbmFibGVkIGZvciB0aGlzIGNvZGUgdG8gZXZlbiBiZSByZWxldmFudC4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgdGhpcyBwYXRjaCBzZWVtcyBsaWtlIGl0IGNvdWxkIGV4cG9zZSBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgb3IgdnVsbmVyYWJpbGl0aWVzLiBJdCYjMzk7cyB1c2VyLXRyaWdnZXJhYmxlLCBhbmQgaW52b2x2ZXMgY2hhbmdlcyB0byBjb3JlIGRldmljZSBoYW5kbGluZywgc28gaXQgc2hvdWxkIGJlIG9uIHRoZSBmdXp6aW5nIGxpc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE4OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGVVNFX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZnVzZV9kZXZfZmx1c2gmIzM0OywKICAgICYjMzQ7ZnVzZV9kZXZfcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtmdXNlX2dldF9kZXYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0Ugc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGBmbHVzaGAgZmlsZSBvcGVyYXRpb24gdG8gYC9kZXYvZnVzZWAgYW5kIHVwZGF0aW5nIGNoYW5uZWwgZGlzY29ubmVjdGlvbiBsb2dpYyB0byBoYW5kbGUgZmluYWwgY2xvc2VzIHByb3Blcmx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZVU0VfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmdXNlX2Rldl9mbHVzaCYjMzQ7LAogICAgJiMzNDtmdXNlX2Rldl9yZWxlYXNlJiMzNDssCiAgICAmIzM0O2Z1c2VfZ2V0X2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgYGZsdXNoYCBmaWxlIG9wZXJhdGlvbiB0byBgL2Rldi9mdXNlYCBhbmQgdXBkYXRpbmcgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIHRvIGhhbmRsZSBmaW5hbCBjbG9zZXMgcHJvcGVybHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjA5Ljg5MjkxMjY4M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzYwODY3MzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZVU0VfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmdXNlX2Rldl9mbHVzaFwiLFxuICAgIFwiZnVzZV9kZXZfcmVsZWFzZVwiLFxuICAgIFwiZnVzZV9nZXRfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZVU0Ugc3Vic3lzdGVtIGJ5IGFkZGluZyBhIGBmbHVzaGAgZmlsZSBvcGVyYXRpb24gdG8gYC9kZXYvZnVzZWAgYW5kIHVwZGF0aW5nIGNoYW5uZWwgZGlzY29ubmVjdGlvbiBsb2dpYyB0byBoYW5kbGUgZmluYWwgY2xvc2VzIHByb3Blcmx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBGVVNFIGRldmljZSBoYW5kbGluZyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjA5Ljg5MjkyNDA5M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3MjM5MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmUyNzM1NjFlNjQwMjFlMTJhMTBkMmM2M2E2ZWJhNzNhNmFiYWJiNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAxODoyNjowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuY1xcbmluZGV4IDU3NjNhN2NkM2IzN2ZhLi44YjE0YzdkNTdhMDExOSAxMDA2NDRcXG4tLS0gYS9mcy9mdXNlL2Rldi5jXFxuKysrIGIvZnMvZnVzZS9kZXYuY1xcbkBAIC0xNjYyLDE4ICsxNjYyLDIzIEBAIHN0YXRpYyBpbnQgZnVzZV9kZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gc3RydWN0IGZ1c2VfZGV2ICpmdXNlX2dldF9kZXYoc3RydWN0IGZpbGUgKmZpbGUpXFxuIHtcXG4gXFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xcbitcXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSBmdXNlX2Rldl9jaGFuX2dldChmdWQpO1xcbiBcXHRpbnQgZXJyO1xcbiBcXG4tXFx0aWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkge1xcbitcXHRpZiAodW5saWtlbHkoIWZjaCkpIHtcXG4gXFx0XFx0Lyogb25seSBibG9jayB3YWl0aW5nIGZvciBtb3VudCBpZiBzeW5jIGluaXQgd2FzIHJlcXVlc3RlZCAqL1xcbiBcXHRcXHRpZiAoIWZ1ZC1cXHUwMDNlc3luY19pbml0KVxcbiBcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xcbiBcXG4tXFx0XFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLCBmdXNlX2Rldl9jaGFuX2dldChmdWQpICE9IE5VTEwpO1xcbitcXHRcXHRlcnIgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZnVzZV9kZXZfd2FpdHEsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICAoZmNoID0gZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSkgIT0gTlVMTCk7XFxuIFxcdFxcdGlmIChlcnIpXFxuIFxcdFxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh1bmxpa2VseShmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRVBFUk0pO1xcbitcXG4gXFx0cmV0dXJuIGZ1ZDtcXG4gfVxcbiBcXG5AQCAtMjIxMSwxNyArMjIxNiwzMSBAQCB2b2lkIGZ1c2VfY2hhbl93YWl0X2Fib3J0ZWQoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxcbiBcXHRmdXNlX3VyaW5nX3dhaXRfc3RvcHBlZF9xdWV1ZXMoZmNoKTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxcbit7XFxuK1xcdHN0cnVjdCBmdXNlX2RldiAqcG9zO1xcbitcXG4rXFx0bG9ja2RlcF9hc3NlcnRfaGVsZChcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBcXHUwMDI2ZmNoLVxcdTAwM2VkZXZpY2VzLCBlbnRyeSkge1xcbitcXHRcXHRpZiAoIXBvcy1cXHUwMDNlY2xvc2luZylcXG4rXFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbiBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XFxuIFxcdC8qIFBhaXJzIHdpdGggY21weGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xcbiBcXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKFxcdTAwMjZmdWQtXFx1MDAzZWNoYW4sIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcXG4gXFxuLVxcdGlmIChmY2gpIHtcXG4rXFx0aWYgKGZjaCBcXHUwMDI2XFx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcXG4gXFx0XFx0c3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSBcXHUwMDI2ZnVkLVxcdTAwM2VwcTtcXG4gXFx0XFx0TElTVF9IRUFEKHRvX2VuZCk7XFxuIFxcdFxcdHVuc2lnbmVkIGludCBpO1xcbiBcXHRcXHRib29sIGxhc3Q7XFxuK1xcdFxcdGJvb2wgYWJvcnQ7XFxuIFxcbiBcXHRcXHQvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovXFxuIFxcdFxcdHNwaW5fbG9jayhcXHUwMDI2ZmNoLVxcdTAwM2Vsb2NrKTtcXG5AQCAtMjIzNCwxNCArMjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gXFx0XFx0bGlzdF9kZWwoXFx1MDAyNmZ1ZC1cXHUwMDNlZW50cnkpO1xcbiBcXHRcXHQvKiBBcmUgd2UgdGhlIGxhc3Qgb3BlbiBkZXZpY2U/ICovXFxuIFxcdFxcdGxhc3QgPSBsaXN0X2VtcHR5KFxcdTAwMjZmY2gtXFx1MDAzZWRldmljZXMpO1xcbitcXHRcXHRhYm9ydCA9IGZjaC1cXHUwMDNlY29ubmVjdGVkIFxcdTAwMjZcXHUwMDI2IGZ1c2VfZGV2X2FsbF9jbG9zaW5nKGZjaCk7XFxuIFxcdFxcdHNwaW5fdW5sb2NrKFxcdTAwMjZmY2gtXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0XFx0ZnVzZV9kZXZfZW5kX3JlcXVlc3RzKFxcdTAwMjZ0b19lbmQpO1xcbiBcXG4tXFx0XFx0aWYgKGxhc3QpIHtcXG4rXFx0XFx0aWYgKGxhc3QpXFxuIFxcdFxcdFxcdFdBUk5fT04oZmNoLVxcdTAwM2VpcS5mYXN5bmMgIT0gTlVMTCk7XFxuK1xcdFxcdGlmIChhYm9ydClcXG4gXFx0XFx0XFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xcbi1cXHRcXHR9XFxuIFxcdFxcdGZ1c2VfY29ubl9wdXQoZmNoLVxcdTAwM2Vjb25uKTtcXG4gXFx0fVxcbiBcXHRmdXNlX2Rldl9wdXQoZnVkKTtcXG5AQCAtMjM3NSw2ICsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4gfVxcbiAjZW5kaWZcXG4gXFxuK3N0YXRpYyBpbnQgZnVzZV9kZXZfZmx1c2goc3RydWN0IGZpbGUgKmZpbGUsIGZsX293bmVyX3QgaWQpXFxuK3tcXG4rXFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xcbitcXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7XFxuK1xcdGJvb2wgYWJvcnQ7XFxuK1xcbitcXHRpZiAoZmlsZV9jb3VudChmaWxlKSAhPSAxKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEF0b21pY2FsbHkgdHJhbnNpdGlvbiBmdWQtXFx1MDAzZWNoYW4gZnJvbSBOVUxMIHRvIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXFxuK1xcdCAqIG9uIGZpbmFsIGNsb3NlIHRvIHByZXZlbnQgYSBsYXRlciBmdXNlX2Rldl9pbnN0YWxsKCkgZnJvbSBzdWNjZWVkaW5nLlxcbitcXHQgKi9cXG4rXFx0ZmNoID0gY21weGNoZyhcXHUwMDI2ZnVkLVxcdTAwM2VjaGFuLCBOVUxMLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XFxuK1xcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcXG4rXFx0XFx0cmV0dXJuIDA7XFxuK1xcbitcXHRzcGluX2xvY2soXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuK1xcdGZ1ZC1cXHUwMDNlY2xvc2luZyA9IHRydWU7XFxuK1xcdGFib3J0ID0gZmNoLVxcdTAwM2Vjb25uZWN0ZWQgXFx1MDAyNlxcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcXG4rXFx0c3Bpbl91bmxvY2soXFx1MDAyNmZjaC1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRpZiAoYWJvcnQpXFxuK1xcdFxcdGZ1c2VfY2hhbl9hYm9ydChmY2gsIGZhbHNlKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XFxuIFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuIFxcdC5vcGVuXFx0XFx0PSBmdXNlX2Rldl9vcGVuLFxcbkBAIC0yMzgzLDYgKzI0MzEsNyBAQCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZ1c2VfZGV2X29wZXJhdGlvbnMgPSB7XFxuIFxcdC53cml0ZV9pdGVyXFx0PSBmdXNlX2Rldl93cml0ZSxcXG4gXFx0LnNwbGljZV93cml0ZVxcdD0gZnVzZV9kZXZfc3BsaWNlX3dyaXRlLFxcbiBcXHQucG9sbFxcdFxcdD0gZnVzZV9kZXZfcG9sbCxcXG4rXFx0LmZsdXNoXFx0XFx0PSBmdXNlX2Rldl9mbHVzaCxcXG4gXFx0LnJlbGVhc2VcXHQ9IGZ1c2VfZGV2X3JlbGVhc2UsXFxuIFxcdC5mYXN5bmNcXHRcXHQ9IGZ1c2VfZGV2X2Zhc3luYyxcXG4gXFx0LnVubG9ja2VkX2lvY3RsID0gZnVzZV9kZXZfaW9jdGwsXFxuZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcXG5pbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0XFxuLS0tIGEvZnMvZnVzZS9mdXNlX2Rldl9pLmhcXG4rKysgYi9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxcbkBAIC0zMDIsNiArMzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHtcXG4gXFx0LyoqIEBzeW5jX2luaXQ6IElzc3VlIEZVU0VfSU5JVCBzeW5jaHJvbm91c2x5ICovXFxuIFxcdGJvb2wgc3luY19pbml0O1xcbiBcXG4rXFx0LyoqIEBjbG9zaW5nOiBGaW5hbCBjbG9zZSBoYXMgc3RhcnRlZCwgcHJvdGVjdGVkIGJ5IGNoYW4tXFx1MDAzZWxvY2sgKi9cXG4rXFx0Ym9vbCBjbG9zaW5nO1xcbitcXG4gXFx0LyoqIEBjaGFuOiBGdXNlIGNoYW5uZWwgZm9yIHRoaXMgZGV2aWNlICovXFxuIFxcdHN0cnVjdCBmdXNlX2NoYW4gKmNoYW47XFxuIFxcbkBAIC0zMzAsMTcgKzMzMywyNSBAQCBzdHJ1Y3QgZnVzZV9jb3B5X3N0YXRlIHtcXG4gXFx0fSByaW5nO1xcbiB9O1xcbiBcXG4tLyogZnVkLVxcdTAwM2VjaGFuIGdldHMgYXNzaWduZWQgdG8gdGhpcyB2YWx1ZSB3aGVuIC9kZXYvZnVzZSBpcyBjbG9zZWQgKi9cXG4tI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcXG4tXFxuIC8qXFxuLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtXFx1MDAzZWNoYW4gaXMgc2V0IG9uY2UgZHVyaW5nIG1vdW50IGFuZCBpcyB2YWxpZFxcbi0gKiB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC5cXG4rICogZnVkLVxcdTAwM2VjaGFuIGhhcyB0aGUgZm9sbG93aW5nIG1vbm90b25pYyBzdGF0ZSB0cmFuc2l0aW9uczpcXG4rICpcXG4rICogTlVMTCAtXFx1MDAzZSB2YWxpZCBjaGFubmVsIC1cXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXFxuKyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS1cXHUwMDNlIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEXFxuICAqXFxuLSAqIGZ1ZC1cXHUwMDNlY2hhbiBpcyBzZXQgdG8gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgb25seSBhZnRlciB0aGUgY29udGFpbmluZyBmaWxlIGlzXFxuLSAqIHJlbGVhc2VkLCBzbyByZXN1bHQgaXMgc2FmZSB0byBkZXJlZmVyZW5jZSBpbiBtb3N0IGNhc2VzLiAgRXhjZXB0aW9ucyBhcmU6XFxuLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuXFxuKyAqIEEgdmFsaWQgY2hhbm5lbCBwb2ludGVyIHJlbWFpbnMgdmFsaWQgdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuIEZpbmFsXFxuKyAqIGZsdXNoIGNhbiBpbnN0YWxsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEIGRpcmVjdGx5IGZvciBhbiB1bmluc3RhbGxlZFxcbisgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlXFxuKyAqIG1lYW5zIHRoYXQgdGhlIGNoYW5uZWwgY2FuIG5vIGxvbmdlciBiZSBpbnN0YWxsZWQgb3IgYWNjZXNzZWQgdGhyb3VnaCB0aGlzXFxuKyAqIGZpbGU7IGl0IGRvZXMgbm90IGltcGx5IHRoYXQgcmVsZWFzZSBoYXMgYWxyZWFkeSBydW4gYW5kIGl0IG11c3QgbmV2ZXIgYmVcXG4rICogZGVyZWZlcmVuY2VkLlxcbisgKlxcbisgKiBmdXNlX2Rldl9jaGFuX2dldCgpIHJlYWRzIHRoaXMgc3RhdGUgbG9ja2xlc3NseS4gQ2FsbGVycyBtdXN0IGRpc3Rpbmd1aXNoXFxuKyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlXFxuKyAqIGRlcmVmZXJlbmNpbmcgdGhlIHJlc3VsdC5cXG4gICovXFxuKyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXFxuK1xcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmdXNlX2NoYW4gKmZ1c2VfZGV2X2NoYW5fZ2V0KHN0cnVjdCBmdXNlX2RldiAqZnVkKVxcbiB7XFxuIFxcdC8qIFBhaXJzIHdpdGggeGNoZygpIGluIGZ1c2VfZGV2X2luc3RhbGwoKSAqL1xcbkBAIC0zNTUsOCArMzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZ1c2VfZGV2ICpfX2Z1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XFxuK1xcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XFxuIFxcbi1cXHRpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpXFxuK1xcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcbiBcXHRyZXR1cm4gZnVkO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoxMC43MjExNjM3NTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyMTUzMjYwMzE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9kZXZfZmx1c2hcIixcbiAgICBcImZ1c2VfZGV2X3JlbGVhc2VcIixcbiAgICBcImZ1c2VfZ2V0X2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGVVNFIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBgZmx1c2hgIGZpbGUgb3BlcmF0aW9uIHRvIGAvZGV2L2Z1c2VgIGFuZCB1cGRhdGluZyBjaGFubmVsIGRpc2Nvbm5lY3Rpb24gbG9naWMgdG8gaGFuZGxlIGZpbmFsIGNsb3NlcyBwcm9wZXJseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgRlVTRSBkZXZpY2UgaGFuZGxpbmcgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZTI3MzU2MWU2NDAyMWUxMmExMGQyYzYzYTZlYmE3M2E2YWJhYmI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTg6MjY6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMvZnVzZS9kZXYuY1xuaW5kZXggNTc2M2E3Y2QzYjM3ZmEuLjhiMTRjN2Q1N2EwMTE5IDEwMDY0NFxuLS0tIGEvZnMvZnVzZS9kZXYuY1xuKysrIGIvZnMvZnVzZS9kZXYuY1xuQEAgLTE2NjIsMTggKzE2NjIsMjMgQEAgc3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxuIHN0cnVjdCBmdXNlX2RldiAqZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXHRpbnQgZXJyO1xuIFxuLVx0aWYgKHVubGlrZWx5KCFmdXNlX2Rldl9jaGFuX2dldChmdWQpKSkge1xuK1x0aWYgKHVubGlrZWx5KCFmY2gpKSB7XG4gXHRcdC8qIG9ubHkgYmxvY2sgd2FpdGluZyBmb3IgbW91bnQgaWYgc3luYyBpbml0IHdhcyByZXF1ZXN0ZWQgKi9cbiBcdFx0aWYgKCFmdWQtXHUwMDNlc3luY19pbml0KVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKC1FUEVSTSk7XG4gXG4tXHRcdGVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmdXNlX2Rldl93YWl0cSwgZnVzZV9kZXZfY2hhbl9nZXQoZnVkKSAhPSBOVUxMKTtcbitcdFx0ZXJyID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZ1c2VfZGV2X3dhaXRxLFxuK1x0XHRcdFx0XHQgICAgICAgKGZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpICE9IE5VTEwpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdHJldHVybiBFUlJfUFRSKGVycik7XG4gXHR9XG4gXG4rXHRpZiAodW5saWtlbHkoZmNoID09IEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKSlcbitcdFx0cmV0dXJuIEVSUl9QVFIoLUVQRVJNKTtcbitcbiBcdHJldHVybiBmdWQ7XG4gfVxuIFxuQEAgLTIyMTEsMTcgKzIyMTYsMzEgQEAgdm9pZCBmdXNlX2NoYW5fd2FpdF9hYm9ydGVkKHN0cnVjdCBmdXNlX2NoYW4gKmZjaClcbiBcdGZ1c2VfdXJpbmdfd2FpdF9zdG9wcGVkX3F1ZXVlcyhmY2gpO1xuIH1cbiBcbitzdGF0aWMgYm9vbCBmdXNlX2Rldl9hbGxfY2xvc2luZyhzdHJ1Y3QgZnVzZV9jaGFuICpmY2gpXG4re1xuK1x0c3RydWN0IGZ1c2VfZGV2ICpwb3M7XG4rXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmZjaC1cdTAwM2Vsb2NrKTtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCBcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcywgZW50cnkpIHtcbitcdFx0aWYgKCFwb3MtXHUwMDNlY2xvc2luZylcbitcdFx0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4gaW50IGZ1c2VfZGV2X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpXG4ge1xuIFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2ZpbGVfdG9fZnVkKGZpbGUpO1xuIFx0LyogUGFpcnMgd2l0aCBjbXB4Y2hnKCkgaW4gZnVzZV9kZXZfaW5zdGFsbCgpICovXG4gXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2ggPSB4Y2hnKFx1MDAyNmZ1ZC1cdTAwM2VjaGFuLCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCk7XG4gXG4tXHRpZiAoZmNoKSB7XG4rXHRpZiAoZmNoIFx1MDAyNlx1MDAyNiBmY2ggIT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpIHtcbiBcdFx0c3RydWN0IGZ1c2VfcHF1ZXVlICpmcHEgPSBcdTAwMjZmdWQtXHUwMDNlcHE7XG4gXHRcdExJU1RfSEVBRCh0b19lbmQpO1xuIFx0XHR1bnNpZ25lZCBpbnQgaTtcbiBcdFx0Ym9vbCBsYXN0O1xuK1x0XHRib29sIGFib3J0O1xuIFxuIFx0XHQvKiBNYWtlIHN1cmUgZnVzZV9kZXZfaW5zdGFsbF93aXRoX3BxKCkgaGFzIGZpbmlzaGVkICovXG4gXHRcdHNwaW5fbG9jayhcdTAwMjZmY2gtXHUwMDNlbG9jayk7XG5AQCAtMjIzNCwxNCArMjI1MywxNSBAQCBpbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiBcdFx0bGlzdF9kZWwoXHUwMDI2ZnVkLVx1MDAzZWVudHJ5KTtcbiBcdFx0LyogQXJlIHdlIHRoZSBsYXN0IG9wZW4gZGV2aWNlPyAqL1xuIFx0XHRsYXN0ID0gbGlzdF9lbXB0eShcdTAwMjZmY2gtXHUwMDNlZGV2aWNlcyk7XG4rXHRcdGFib3J0ID0gZmNoLVx1MDAzZWNvbm5lY3RlZCBcdTAwMjZcdTAwMjYgZnVzZV9kZXZfYWxsX2Nsb3NpbmcoZmNoKTtcbiBcdFx0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuIFxuIFx0XHRmdXNlX2Rldl9lbmRfcmVxdWVzdHMoXHUwMDI2dG9fZW5kKTtcbiBcbi1cdFx0aWYgKGxhc3QpIHtcbitcdFx0aWYgKGxhc3QpXG4gXHRcdFx0V0FSTl9PTihmY2gtXHUwMDNlaXEuZmFzeW5jICE9IE5VTEwpO1xuK1x0XHRpZiAoYWJvcnQpXG4gXHRcdFx0ZnVzZV9jaGFuX2Fib3J0KGZjaCwgZmFsc2UpO1xuLVx0XHR9XG4gXHRcdGZ1c2VfY29ubl9wdXQoZmNoLVx1MDAzZWNvbm4pO1xuIFx0fVxuIFx0ZnVzZV9kZXZfcHV0KGZ1ZCk7XG5AQCAtMjM3NSw2ICsyMzk1LDM0IEBAIHN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbiB9XG4gI2VuZGlmXG4gXG4rc3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcbit7XG4rXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZmlsZV90b19mdWQoZmlsZSk7XG4rXHRzdHJ1Y3QgZnVzZV9jaGFuICpmY2g7XG4rXHRib29sIGFib3J0O1xuK1xuK1x0aWYgKGZpbGVfY291bnQoZmlsZSkgIT0gMSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHQvKlxuK1x0ICogQXRvbWljYWxseSB0cmFuc2l0aW9uIGZ1ZC1cdTAwM2VjaGFuIGZyb20gTlVMTCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuK1x0ICogb24gZmluYWwgY2xvc2UgdG8gcHJldmVudCBhIGxhdGVyIGZ1c2VfZGV2X2luc3RhbGwoKSBmcm9tIHN1Y2NlZWRpbmcuXG4rXHQgKi9cbitcdGZjaCA9IGNtcHhjaGcoXHUwMDI2ZnVkLVx1MDAzZWNoYW4sIE5VTEwsIEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEKTtcbitcdGlmICghZmNoIHx8IGZjaCA9PSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRClcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRzcGluX2xvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1x0ZnVkLVx1MDAzZWNsb3NpbmcgPSB0cnVlO1xuK1x0YWJvcnQgPSBmY2gtXHUwMDNlY29ubmVjdGVkIFx1MDAyNlx1MDAyNiBmdXNlX2Rldl9hbGxfY2xvc2luZyhmY2gpO1xuK1x0c3Bpbl91bmxvY2soXHUwMDI2ZmNoLVx1MDAzZWxvY2spO1xuK1xuK1x0aWYgKGFib3J0KVxuK1x0XHRmdXNlX2NoYW5fYWJvcnQoZmNoLCBmYWxzZSk7XG4rXG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gXHQub3Blblx0XHQ9IGZ1c2VfZGV2X29wZW4sXG5AQCAtMjM4Myw2ICsyNDMxLDcgQEAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmdXNlX2Rldl9vcGVyYXRpb25zID0ge1xuIFx0LndyaXRlX2l0ZXJcdD0gZnVzZV9kZXZfd3JpdGUsXG4gXHQuc3BsaWNlX3dyaXRlXHQ9IGZ1c2VfZGV2X3NwbGljZV93cml0ZSxcbiBcdC5wb2xsXHRcdD0gZnVzZV9kZXZfcG9sbCxcbitcdC5mbHVzaFx0XHQ9IGZ1c2VfZGV2X2ZsdXNoLFxuIFx0LnJlbGVhc2VcdD0gZnVzZV9kZXZfcmVsZWFzZSxcbiBcdC5mYXN5bmNcdFx0PSBmdXNlX2Rldl9mYXN5bmMsXG4gXHQudW5sb2NrZWRfaW9jdGwgPSBmdXNlX2Rldl9pb2N0bCxcbmRpZmYgLS1naXQgYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaCBiL2ZzL2Z1c2UvZnVzZV9kZXZfaS5oXG5pbmRleCA2NjhjODM5MWQ2MWMwMy4uMjgzM2EwMzUwYzQzNWEgMTAwNjQ0XG4tLS0gYS9mcy9mdXNlL2Z1c2VfZGV2X2kuaFxuKysrIGIvZnMvZnVzZS9mdXNlX2Rldl9pLmhcbkBAIC0zMDIsNiArMzAyLDkgQEAgc3RydWN0IGZ1c2VfZGV2IHtcbiBcdC8qKiBAc3luY19pbml0OiBJc3N1ZSBGVVNFX0lOSVQgc3luY2hyb25vdXNseSAqL1xuIFx0Ym9vbCBzeW5jX2luaXQ7XG4gXG4rXHQvKiogQGNsb3Npbmc6IEZpbmFsIGNsb3NlIGhhcyBzdGFydGVkLCBwcm90ZWN0ZWQgYnkgY2hhbi1cdTAwM2Vsb2NrICovXG4rXHRib29sIGNsb3Npbmc7XG4rXG4gXHQvKiogQGNoYW46IEZ1c2UgY2hhbm5lbCBmb3IgdGhpcyBkZXZpY2UgKi9cbiBcdHN0cnVjdCBmdXNlX2NoYW4gKmNoYW47XG4gXG5AQCAtMzMwLDE3ICszMzMsMjUgQEAgc3RydWN0IGZ1c2VfY29weV9zdGF0ZSB7XG4gXHR9IHJpbmc7XG4gfTtcbiBcbi0vKiBmdWQtXHUwMDNlY2hhbiBnZXRzIGFzc2lnbmVkIHRvIHRoaXMgdmFsdWUgd2hlbiAvZGV2L2Z1c2UgaXMgY2xvc2VkICovXG4tI2RlZmluZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCAoKHN0cnVjdCBmdXNlX2NoYW4gKikgMSlcbi1cbiAvKlxuLSAqIExvY2tsZXNzIGFjY2VzcyBpcyBPSywgYmVjYXVzZSBmdWQtXHUwMDNlY2hhbiBpcyBzZXQgb25jZSBkdXJpbmcgbW91bnQgYW5kIGlzIHZhbGlkXG4tICogdW50aWwgdGhlIGZpbGUgaXMgcmVsZWFzZWQuXG4rICogZnVkLVx1MDAzZWNoYW4gaGFzIHRoZSBmb2xsb3dpbmcgbW9ub3RvbmljIHN0YXRlIHRyYW5zaXRpb25zOlxuKyAqXG4rICogTlVMTCAtXHUwMDNlIHZhbGlkIGNoYW5uZWwgLVx1MDAzZSBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRFxuKyAqIE5VTEwgLS0tLS0tLS0tLS0tLS0tLS1cdTAwM2UgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURURcbiAgKlxuLSAqIGZ1ZC1cdTAwM2VjaGFuIGlzIHNldCB0byBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBvbmx5IGFmdGVyIHRoZSBjb250YWluaW5nIGZpbGUgaXNcbi0gKiByZWxlYXNlZCwgc28gcmVzdWx0IGlzIHNhZmUgdG8gZGVyZWZlcmVuY2UgaW4gbW9zdCBjYXNlcy4gIEV4Y2VwdGlvbnMgYXJlOlxuLSAqIGZ1c2VfZGV2X3B1dCgpIGFuZCBmdXNlX2ZpbGxfc3VwZXJfY29tbW9uKCkuXG4rICogQSB2YWxpZCBjaGFubmVsIHBvaW50ZXIgcmVtYWlucyB2YWxpZCB1bnRpbCB0aGUgZmlsZSBpcyByZWxlYXNlZC4gRmluYWxcbisgKiBmbHVzaCBjYW4gaW5zdGFsbCBGVVNFX0RFVl9DSEFOX0RJU0NPTk5FQ1RFRCBkaXJlY3RseSBmb3IgYW4gdW5pbnN0YWxsZWRcbisgKiBkZXZpY2UsIHByZXZlbnRpbmcgYW55IGxhdGVyIGNoYW5uZWwgaW5zdGFsbGF0aW9uLiBUaGUgc2VudGluZWwgdGhlcmVmb3JlXG4rICogbWVhbnMgdGhhdCB0aGUgY2hhbm5lbCBjYW4gbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBvciBhY2Nlc3NlZCB0aHJvdWdoIHRoaXNcbisgKiBmaWxlOyBpdCBkb2VzIG5vdCBpbXBseSB0aGF0IHJlbGVhc2UgaGFzIGFscmVhZHkgcnVuIGFuZCBpdCBtdXN0IG5ldmVyIGJlXG4rICogZGVyZWZlcmVuY2VkLlxuKyAqXG4rICogZnVzZV9kZXZfY2hhbl9nZXQoKSByZWFkcyB0aGlzIHN0YXRlIGxvY2tsZXNzbHkuIENhbGxlcnMgbXVzdCBkaXN0aW5ndWlzaFxuKyAqIE5VTEwsIGEgdmFsaWQgY2hhbm5lbCBwb2ludGVyLCBhbmQgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgYmVmb3JlXG4rICogZGVyZWZlcmVuY2luZyB0aGUgcmVzdWx0LlxuICAqL1xuKyNkZWZpbmUgRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQgKChzdHJ1Y3QgZnVzZV9jaGFuICopIDEpXG4rXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9jaGFuICpmdXNlX2Rldl9jaGFuX2dldChzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZClcbiB7XG4gXHQvKiBQYWlycyB3aXRoIHhjaGcoKSBpbiBmdXNlX2Rldl9pbnN0YWxsKCkgKi9cbkBAIC0zNTUsOCArMzY2LDkgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZmlsZV90b19mdWQoc3RydWN0IGZpbGUgKmZpbGUpXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZnVzZV9kZXYgKl9fZnVzZV9nZXRfZGV2KHN0cnVjdCBmaWxlICpmaWxlKVxuIHtcbiBcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9maWxlX3RvX2Z1ZChmaWxlKTtcbitcdHN0cnVjdCBmdXNlX2NoYW4gKmZjaCA9IGZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCk7XG4gXG4tXHRpZiAoIWZ1c2VfZGV2X2NoYW5fZ2V0KGZ1ZCkpXG4rXHRpZiAoIWZjaCB8fCBmY2ggPT0gRlVTRV9ERVZfQ0hBTl9ESVNDT05ORUNURUQpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuIFx0cmV0dXJuIGZ1ZDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjEwLjcyMTE2NjEzNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzcyNzAyNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEZVU0UgRGV2aWNlIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBGVVNFIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRoZSBkZXZpY2UgZmlsZSBhc3BlY3QgKGAvZGV2L2Z1c2VgKS4gSXQncyBtb2RpZnlpbmcgYGZzL2Z1c2UvZGV2LmNgIGFuZCBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgLCBhbmQgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGEgYGZsdXNoYCBvcGVyYXRpb24sIGBmdXNlX2Rldl9mbHVzaGAsIHRvIHRoZSBgZnVzZV9kZXZfb3BlcmF0aW9uc2Agc3RydWN0dXJlLiBBbHNvLCBgZnVzZV9nZXRfZGV2YCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgYF9fZnVzZV9nZXRfZGV2YCBoYXZlIGJlZW4gdHdlYWtlZCB0byBoYW5kbGUgYEZVU0VfREVWX0NIQU5fRElTQ09OTkVDVEVEYC4gVGhpcyBzaWduYWxzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBGVVNFIGRldmljZSBkcml2ZXIgd29ya3MuIEl0IGFwcGVhcnMgdGhlcmUgaXMgYSBuZXcgc3RhdGUgdHJhbnNpdGlvbiBmb3IgYGZ1ZC1cdTAwM2VjaGFuYCBhbmQgdGhlIGBmbHVzaGAgb3BlcmF0aW9uIHdpbGwgYmUgdXNlZCB0byBhYm9ydCB0aGUgY2hhbm5lbCBkdXJpbmcgZmluYWwgZGV2aWNlIGNsb3NpbmcuXG5cbkltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcgdGhpcyBpcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gVGhpcyB0b3VjaGVzIGNvcmUgZGV2aWNlIG9wZXJhdGlvbnMgYW5kIGludHJvZHVjZXMgbmV3IHN0YXRlIGhhbmRsaW5nLCBzbyBpdCBpcyBsaWtlbHkgdG8gZXhwb3NlIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcy5cblxuVG8gcHJlcGFyZSBmb3IgZnV6emluZywgSSdtIGdvaW5nIHRvIG5lZWQgYSB0YXJnZXQgbGlzdCBhbmQgc29tZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpczpcblxuMS4gICoqRm9jdXMgU3ltYm9sczoqKiBEZWZpbml0ZWx5LCBgZnVzZV9kZXZfZmx1c2hgLCBgZnVzZV9kZXZfcmVsZWFzZWAsIGBmdXNlX2dldF9kZXZgLCBhbmQgYF9fZnVzZV9nZXRfZGV2YCBhcmUgZ29pbmcgdG8gYmUgbXkgcHJpbWFyeSBmb2N1cy4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLlxuXG4yLiAgKipFbmFibGUgQ29uZmlndXJhdGlvbjoqKiBDbGVhcmx5LCBJJ2xsIG5lZWQgYEZVU0VfRlNgIGVuYWJsZWQgZm9yIHRoZSBmdXp6ZXIgdG8gZXZlbiBjb25zaWRlciB0aGlzIGNvZGUgcGF0aC5cblxuQmVmb3JlIGRpdmluZyBkZWVwZXIgaW50byB0aGUgZnV6emluZywgbGV0J3MgdmVyaWZ5IGBGVVNFX0ZTYCBpcyBwcm9wZXJseSBlbmFibGVkLiBJJ2xsIHRha2UgYSBxdWljayBsb29rIGluc2lkZSBgZnMvZnVzZS9LY29uZmlnYCB0byBjb25maXJtIHRoaXMgY29uZmlnIG9wdGlvbiBpcyBwcmVzZW50IGFuZCwgaWYgbmVlZGVkLCB3aGF0IG90aGVyIHJlbGF0ZWQgY29uZmlncyBuZWVkIHRvIGJlIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMTMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoxNy4xNTg0NDAxNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzU1MzA0NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZVU0VfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2Z1c2UvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2Z1c2UvS2NvbmZpZzoyOmNvbmZpZyBGVVNFX0ZTXFxuZnMvZnVzZS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoxNy40MzM5Nzc5OTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE0NDM5NDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgRlVTRSBGaWxlc3lzdGVtIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgSSdtIHdvcmtpbmcgd2l0aCBpcyBgRlVTRV9GU2AuIFRoYXQgbmFycm93cyBkb3duIG15IGZvY3VzIGNvbnNpZGVyYWJseS4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZGlnIGludG8gdGhlIGNvcmUgaW1wbGVtZW50YXRpb24uIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBhdCBob3cgdGhpcyBpcyBiZWluZyBpbml0aWFsaXplZCwgcGFydGljdWxhcmx5IGZyb20gYSBkZXZpY2UgcGVyc3BlY3RpdmUsIGlzIGluIGBmcy9mdXNlL2Rldi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRldmljZSBpbnRlcmZhY2UgYW5kIGhvdyB0aGUga2VybmVsIGludGVyYWN0cyB3aXRoIHVzZXIgc3BhY2UgdGhyb3VnaCBGVVNFLiBUaGlzIGZpbGUgcHJvYmFibHkgY29udGFpbnMgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIGFuZCBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoYXQgaW50ZXJhY3Rpb24uIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZGV2aWNlIGRyaXZlciByZWdpc3RyYXRpb24sIGNoYXJhY3RlciBkZXZpY2Ugb3BlcmF0aW9ucywgYW5kIHBvdGVudGlhbGx5IHNvbWUgb2YgdGhlIGNvcmUgY29tbXVuaWNhdGlvbiBwcmltaXRpdmVzLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg2NCwiT3V0cHV0VG9rZW5zIjo2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjIxLjE0ODQyMDc0MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTUyNTQ2NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWR8c3RydWN0IGZ1c2VfZGV2IFxcXFwqKSAoZnVzZV9kZXZfZmx1c2h8ZnVzZV9kZXZfcmVsZWFzZXxmdXNlX2dldF9kZXZ8X19mdXNlX2dldF9kZXYpXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldi5jPTIyMTk9c3RhdGljIGJvb2wgZnVzZV9kZXZfYWxsX2Nsb3Npbmcoc3RydWN0IGZ1c2VfY2hhbiAqZmNoKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMjMxLVxcbmZzL2Z1c2UvZGV2LmM6MjIzMjppbnQgZnVzZV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Rldi5jLTIyMzMte1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzg4PXN0YXRpYyB2b2lkIGZ1c2VfZGV2X3Nob3dfZmRpbmZvKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmMtMjM5Ny1cXG5mcy9mdXNlL2Rldi5jOjIzOTg6c3RhdGljIGludCBmdXNlX2Rldl9mbHVzaChzdHJ1Y3QgZmlsZSAqZmlsZSwgZmxfb3duZXJfdCBpZClcXG5mcy9mdXNlL2Rldi5jLTIzOTkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoyMS41NjM2ODM0OTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjk1NTE5MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBGaWxlc3lzdGVtIE1pc21hdGNoKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSdtIHByZXR0eSBzdXJlIEkgc2F3IGBmdXNlX2dldF9kZXZgIGRlZmluZWQgaW4gYGZzL2Z1c2UvZGV2LmNgLCBidXQgdGhlIHJlZ2V4IEkgdXNlZCBlYXJsaWVyIHRvIGZpbmQgaXRzIGRlZmluaXRpb24gbWlnaHQgaGF2ZSBmYWlsZWQuIEl0J3MgZWFzeSB0byBvdmVybG9vayB0aGluZ3Mgd2hlbiB5b3UncmUgZGVhbGluZyB3aXRoIGEgbGFyZ2UgY29kZWJhc2UuIEJlZm9yZSBJIGdvIHRvbyBmYXIgZG93biB0aGlzIHBhdGgsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgbXkgaW5pdGlhbCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgZnVuY3Rpb24ncyBsb2NhdGlvbiBhcmUgY29ycmVjdC4gTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBzb3VyY2UgY29kZSBkaXJlY3RseS4gTm8gcG9pbnQgc3Bpbm5pbmcgbXkgd2hlZWxzIGlmIEknbSBiYXJraW5nIHVwIHRoZSB3cm9uZyB0cmVlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzQwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTg6MjY6MjQuODU5MjA1Njc5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTEwMzg4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmdXNlX2dldF9kZXZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZnVzZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9mdXNlL2Rldi5jPTE2NTE9c3RhdGljIGludCBmdXNlX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNjYxLVxcbmZzL2Z1c2UvZGV2LmM6MTY2MjpzdHJ1Y3QgZnVzZV9kZXYgKmZ1c2VfZ2V0X2RldihzdHJ1Y3QgZmlsZSAqZmlsZSlcXG5mcy9mdXNlL2Rldi5jLTE2NjMte1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0xNjg1PXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3JlYWQoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNjg4LVxcdHN0cnVjdCBmaWxlICpmaWxlID0gaW9jYi1cXHUwMDNla2lfZmlscDtcXG5mcy9mdXNlL2Rldi5jOjE2ODk6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBmdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0xNjkwLVxcbi0tXFxuZnMvZnVzZS9kZXYuYz0xNzAyPXN0YXRpYyBzc2l6ZV90IGZ1c2VfZGV2X3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxcbi0tXFxuZnMvZnVzZS9kZXYuYy0xNzA5LVxcdHN0cnVjdCBmdXNlX2NvcHlfc3RhdGUgY3M7XFxuZnMvZnVzZS9kZXYuYzoxNzEwOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGluKTtcXG5mcy9mdXNlL2Rldi5jLTE3MTEtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE5NzM9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfd3JpdGUoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE5NzUtXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE5NzY6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2Rldihpb2NiLVxcdTAwM2VraV9maWxwKTtcXG5mcy9mdXNlL2Rldi5jLTE5NzctXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTE5ODk9c3RhdGljIHNzaXplX3QgZnVzZV9kZXZfc3BsaWNlX3dyaXRlKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKnBpcGUsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTE5OTctXFx0c3RydWN0IGZ1c2VfY29weV9zdGF0ZSBjcztcXG5mcy9mdXNlL2Rldi5jOjE5OTg6XFx0c3RydWN0IGZ1c2VfZGV2ICpmdWQgPSBfX2Z1c2VfZ2V0X2RldihvdXQpO1xcbmZzL2Z1c2UvZGV2LmMtMTk5OS1cXHRzaXplX3QgcmVtO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMDgxPXN0YXRpYyBfX3BvbGxfdCBmdXNlX2Rldl9wb2xsKHN0cnVjdCBmaWxlICpmaWxlLCBwb2xsX3RhYmxlICp3YWl0KVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMDg0LVxcdHN0cnVjdCBmdXNlX2lxdWV1ZSAqZmlxO1xcbmZzL2Z1c2UvZGV2LmM6MjA4NTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIwODYtXFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIyNzI9c3RhdGljIGludCBmdXNlX2Rldl9mYXN5bmMoaW50IGZkLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG9uKVxcbmZzL2Z1c2UvZGV2LmMtMjI3My17XFxuZnMvZnVzZS9kZXYuYzoyMjc0OlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gZnVzZV9nZXRfZGV2KGZpbGUpO1xcbmZzL2Z1c2UvZGV2LmMtMjI3NS1cXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjI4Mz1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9jbG9uZShzdHJ1Y3QgZmlsZSAqZmlsZSwgX191MzIgX191c2VyICphcmdwKVxcbi0tXFxuZnMvZnVzZS9kZXYuYy0yMzAyLVxcbmZzL2Z1c2UvZGV2LmM6MjMwMzpcXHRmdWQgPSBmdXNlX2dldF9kZXYoZmRfZmlsZShmKSk7XFxuZnMvZnVzZS9kZXYuYy0yMzA0LVxcdGlmIChJU19FUlIoZnVkKSlcXG4tLVxcbmZzL2Z1c2UvZGV2LmM9MjMxOD1zdGF0aWMgbG9uZyBmdXNlX2Rldl9pb2N0bF9iYWNraW5nX29wZW4oc3RydWN0IGZpbGUgKmZpbGUsXFxuLS1cXG5mcy9mdXNlL2Rldi5jLTIzMjAte1xcbmZzL2Z1c2UvZGV2LmM6MjMyMTpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzMjItXFx0c3RydWN0IGZ1c2VfYmFja2luZ19tYXAgbWFwO1xcbi0tXFxuZnMvZnVzZS9kZXYuYz0yMzM2PXN0YXRpYyBsb25nIGZ1c2VfZGV2X2lvY3RsX2JhY2tpbmdfY2xvc2Uoc3RydWN0IGZpbGUgKmZpbGUsIF9fdTMyIF9fdXNlciAqYXJncClcXG5mcy9mdXNlL2Rldi5jLTIzMzcte1xcbmZzL2Z1c2UvZGV2LmM6MjMzODpcXHRzdHJ1Y3QgZnVzZV9kZXYgKmZ1ZCA9IGZ1c2VfZ2V0X2RldihmaWxlKTtcXG5mcy9mdXNlL2Rldi5jLTIzMzktXFx0aW50IGJhY2tpbmdfaWQ7XFxuLS1cXG5mcy9mdXNlL2Rldi5jPTIzODg9c3RhdGljIHZvaWQgZnVzZV9kZXZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9maWxlICpzZXEsIHN0cnVjdCBmaWxlICpmaWxlKVxcbmZzL2Z1c2UvZGV2LmMtMjM4OS17XFxuZnMvZnVzZS9kZXYuYzoyMzkwOlxcdHN0cnVjdCBmdXNlX2RldiAqZnVkID0gX19mdXNlX2dldF9kZXYoZmlsZSk7XFxuZnMvZnVzZS9kZXYuYy0yMzkxLVxcdGlmICghZnVkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxODoyNjoyNS4zMjgzMTcwNVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2ODM1Mjk4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhpcyBGVVNFIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgYSBwYXRjaCBoZXJlIHJlbGF0ZWQgdG8gRlVTRSwgc3BlY2lmaWNhbGx5IHRoZSBgL2Rldi9mdXNlYCBkZXZpY2UuIExldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbnZvbHZlZDogYGZ1c2VfZGV2X2ZsdXNoYCwgYGZ1c2VfZGV2X3JlbGVhc2VgLCBhbmQgYGZ1c2VfZ2V0X2RldmAuIEkga25vdyB0aGF0IGBmdXNlX2dldF9kZXZgIGlzIGRlZmluZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMsIGlubGluZSBpbiBgZnMvZnVzZS9mdXNlX2Rldl9pLmhgIGFuZCBhbHNvIGluIGBmcy9mdXNlL2Rldi5jYCwgd2hpY2ggaXNuJ3QgdW51c3VhbC4gVGhlIG90aGVyIHR3byBhcmUgaW4gYGZzL2Z1c2UvZGV2LmNgIGFzIHdlbGwsIHNvIHRoYXQncyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZXMgbGlrZWx5IGxpZS5cblxuSSBjaGVja2VkIHF1aWNrbHksIGFuZCB5ZXMsIGBmdXNlX2Rldl9hbGxfY2xvc2luZ2AgaXMsIGFzIEkgc3VzcGVjdGVkLCBhIHN0YXRpYyBmdW5jdGlvbiwgc28gd2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBpdCBmb3IgZnVydGhlciBhbmFseXNpcy4gVGhpcyBwYXRjaCBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gaG93IHRoZSBgL2Rldi9mdXNlYCBkZXZpY2UgYmVoYXZlcy4gSXQncyBhZGRpbmcgYSBgZmx1c2hgIGhhbmRsZXIsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgcGF0Y2ggaXMgbWVhbnQgdG8gcHJvcGVybHkgYWJvcnQgYSBGVVNFIGNoYW5uZWwgZHVyaW5nIHRoZSBjbG9zaW5nIHN0YWdlLiBUaGlzIHdvdWxkIGJlIGNydWNpYWwgZm9yIGZpeGluZyBzb21lIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciBidWcgSSdtIGZhbWlsaWFyIHdpdGgsIHRoYXQgY2FuIGFyaXNlIGR1cmluZyBmaW5hbCBkZXZpY2UgY2xvc3VyZSBhbmQgY2hhbm5lbCBkaXNjb25uZWN0aW9uLlxuXG5Gcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGNvbnNpZGVyaW5nLiBJdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgaGFuZGxpbmcgb2YgdGhlIEZVU0UgZGV2aWNlLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJlIHNwb3Qtb24g4oCTIHRoZXkgcGlucG9pbnQgdGhlIGV4YWN0IGNvZGUgYXJlYXMgdGhpcyBwYXRjaCBtb2RpZmllcy4gQW5kIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIHNlbnNpYmxlOyBgRlVTRV9GU2AgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBjb2RlIHRvIGV2ZW4gYmUgcmVsZXZhbnQuIEdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIHRoaXMgcGF0Y2ggc2VlbXMgbGlrZSBpdCBjb3VsZCBleHBvc2Ugc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIG9yIHZ1bG5lcmFiaWxpdGllcy4gSXQncyB1c2VyLXRyaWdnZXJhYmxlLCBhbmQgaW52b2x2ZXMgY2hhbmdlcyB0byBjb3JlIGRldmljZSBoYW5kbGluZywgc28gaXQgc2hvdWxkIGJlIG9uIHRoZSBmdXp6aW5nIGxpc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NDcsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE4OjI2OjMyLjAxMTg1NjE1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTkwMjY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRlVTRV9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZ1c2VfZGV2X2ZsdXNoXCIsXG4gICAgXCJmdXNlX2Rldl9yZWxlYXNlXCIsXG4gICAgXCJmdXNlX2dldF9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRlVTRSBzdWJzeXN0ZW0gYnkgYWRkaW5nIGEgYGZsdXNoYCBmaWxlIG9wZXJhdGlvbiB0byBgL2Rldi9mdXNlYCBhbmQgdXBkYXRpbmcgY2hhbm5lbCBkaXNjb25uZWN0aW9uIGxvZ2ljIHRvIGhhbmRsZSBmaW5hbCBjbG9zZXMgcHJvcGVybHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIEZVU0UgZGV2aWNlIGhhbmRsaW5nIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGVVNFX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZnVzZV9kZXZfZmx1c2hcIixcbiAgICBcImZ1c2VfZGV2X3JlbGVhc2VcIixcbiAgICBcImZ1c2VfZ2V0X2RldlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGVVNFIHN1YnN5c3RlbSBieSBhZGRpbmcgYSBgZmx1c2hgIGZpbGUgb3BlcmF0aW9uIHRvIGAvZGV2L2Z1c2VgIGFuZCB1cGRhdGluZyBjaGFubmVsIGRpc2Nvbm5lY3Rpb24gbG9naWMgdG8gaGFuZGxlIGZpbmFsIGNsb3NlcyBwcm9wZXJseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgRlVTRSBkZXZpY2UgaGFuZGxpbmcgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowsx5nw[1] Phase: Succeeded StartedAt: 2026-07-27 18:26:44 +0000 UTC FinishedAt: 2026-07-27 18:26:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 18:26:44 +0000 UTC FinishedAt: 2026-07-27 18:26:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[2] Phase: Succeeded StartedAt: 2026-07-27 18:26:44 +0000 UTC FinishedAt: 2026-07-27 23:40:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 18:26:44 +0000 UTC FinishedAt: 2026-07-27 23:40:09 +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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 18:26:44 +0000 UTC FinishedAt: 2026-07-27 18:26:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 18:26:44 +0000 UTC FinishedAt: 2026-07-27 18:26:49 +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-workflowsx5nw/series-workflowsx5nw-convert-artifact-4274884292/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 18:26:54 +0000 UTC FinishedAt: 2026-07-27 19:42:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 18:26:54 +0000 UTC FinishedAt: 2026-07-27 19:42:00 +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:*d5a7a121-b964-4f30-861b-755b4382da30,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-workflowsx5nw/series-workflowsx5nw-convert-artifact-4274884292/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": "70bd9512-f0b4-4a96-b43a-f4332d971063", "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-workflowsx5nw/series-workflowsx5nw-build-action-3928216066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 18:26:54 +0000 UTC FinishedAt: 2026-07-27 19:41:50 +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:*d5a7a121-b964-4f30-861b-755b4382da30,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-workflowsx5nw/series-workflowsx5nw-convert-artifact-4274884292/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": "70bd9512-f0b4-4a96-b43a-f4332d971063", "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-workflowsx5nw/series-workflowsx5nw-build-action-3928216066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 19:42:00 +0000 UTC FinishedAt: 2026-07-27 19:42:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 19:42:00 +0000 UTC FinishedAt: 2026-07-27 19:42:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 19:42:00 +0000 UTC FinishedAt: 2026-07-27 19:42:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 19:42:00 +0000 UTC FinishedAt: 2026-07-27 19:42:05 +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":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","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-workflowsx5nw/series-workflowsx5nw-convert-artifact-2298787395/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 19:42:10 +0000 UTC FinishedAt: 2026-07-27 19:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 19:42:10 +0000 UTC FinishedAt: 2026-07-27 19:44:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*70bd9512-f0b4-4a96-b43a-f4332d971063,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-workflowsx5nw/series-workflowsx5nw-build-action-3928216066/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-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 19:44:41 +0000 UTC FinishedAt: 2026-07-27 19:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 19:44:41 +0000 UTC FinishedAt: 2026-07-27 19:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 19:44:41 +0000 UTC FinishedAt: 2026-07-27 20:32:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 19:44:41 +0000 UTC FinishedAt: 2026-07-27 20:32:20 +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:*d5a7a121-b964-4f30-861b-755b4382da30,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-workflowsx5nw/series-workflowsx5nw-convert-artifact-2298787395/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": "d112b32e-681b-4cd0-a0a2-b7ede7ac92c1", "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-workflowsx5nw/series-workflowsx5nw-build-action-3653509367/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 19:44:41 +0000 UTC FinishedAt: 2026-07-27 20:28:41 +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:*d5a7a121-b964-4f30-861b-755b4382da30,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-workflowsx5nw/series-workflowsx5nw-convert-artifact-2298787395/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": "d112b32e-681b-4cd0-a0a2-b7ede7ac92c1", "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-workflowsx5nw/series-workflowsx5nw-build-action-3653509367/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 20:32:20 +0000 UTC FinishedAt: 2026-07-27 20:32:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 20:32:20 +0000 UTC FinishedAt: 2026-07-27 20:32:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 20:32:20 +0000 UTC FinishedAt: 2026-07-27 20:34:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 20:32:20 +0000 UTC FinishedAt: 2026-07-27 20:34:15 +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:*d112b32e-681b-4cd0-a0a2-b7ede7ac92c1,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-workflowsx5nw/series-workflowsx5nw-build-action-3653509367/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-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 20:34:25 +0000 UTC FinishedAt: 2026-07-27 23:40:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 20:34:25 +0000 UTC FinishedAt: 2026-07-27 23:40:09 +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_dev_flush","fuse_dev_release","fuse_get_dev"],"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:*70bd9512-f0b4-4a96-b43a-f4332d971063,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d112b32e-681b-4cd0-a0a2-b7ede7ac92c1,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-workflowsx5nw/series-workflowsx5nw-build-action-3928216066/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-workflowsx5nw/series-workflowsx5nw-build-action-3653509367/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 20:34:25 +0000 UTC FinishedAt: 2026-07-27 20:34:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 20:34:25 +0000 UTC FinishedAt: 2026-07-27 20:34:37 +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_dev_flush","fuse_dev_release","fuse_get_dev"],"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-workflowsx5nw/series-workflowsx5nw-convert-artifact-3868766812/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 20:34:25 +0000 UTC FinishedAt: 2026-07-27 20:34:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 20:34:25 +0000 UTC FinishedAt: 2026-07-27 20:34:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 20:34:25 +0000 UTC FinishedAt: 2026-07-27 20:34:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 20:34:45 +0000 UTC FinishedAt: 2026-07-27 23:40:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsx5nw[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_dev_flush","fuse_dev_release","fuse_get_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cdeaa50eae8dad34885515f62559ee83e7e8dda","config_name":"upstream-apparmor-kasan.config","enable_configs":["FUSE_FS"],"series_id":"b7c88188-8ed6-466b-a2d2-6f8c3ffdab8d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 20:34:45 +0000 UTC FinishedAt: 2026-07-27 23:39:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*70bd9512-f0b4-4a96-b43a-f4332d971063,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d112b32e-681b-4cd0-a0a2-b7ede7ac92c1,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-workflowsx5nw/series-workflowsx5nw-build-action-3928216066/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-workflowsx5nw/series-workflowsx5nw-build-action-3653509367/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-workflowsx5nw/series-workflowsx5nw-convert-artifact-3868766812/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,}