Name: series-workflowm8jpz Phase: Succeeded StartedAt: 2026-08-01 17:57:33 +0000 UTC FinishedAt: 2026-08-01 22:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[0] Phase: Succeeded StartedAt: 2026-08-01 17:57:33 +0000 UTC FinishedAt: 2026-08-01 18:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 17:57:33 +0000 UTC FinishedAt: 2026-08-01 18:25:48 +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": "b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NBD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NBD" ], "series_id": "d5d6a6a9-4f5e-43ed-9d96-63f61436a669" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nbd_send_cmd", "nbd_pending_cmd_work", "nbd_reconnect_socket", "nbd_genl_reconfigure", "nbd_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTkJEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmJkX3NlbmRfY21kJiMzNDssCiAgICAmIzM0O25iZF9wZW5kaW5nX2NtZF93b3JrJiMzNDssCiAgICAmIzM0O25iZF9yZWNvbm5lY3Rfc29ja2V0JiMzNDssCiAgICAmIzM0O25iZF9nZW5sX3JlY29uZmlndXJlJiMzNDssCiAgICAmIzM0O25iZF9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgKE5CRCkgZHJpdmVyIHRvIGZpeCBoYW5kbGluZyBvZiBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkJEIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGxzIGFuZCBuZXRsaW5rLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI2MDhlOTcxZTIxODViZDM0ZmEwM2YzZTE4YjEzOTA0ZjQ5Nzg5OTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE4OjI0OjE3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXG5pbmRleCA4ZjEwNzYyZTkwZWY3Li43YTQ2MmE2MjYzMDZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9uYmQuY1xuQEAgLTMyNyw4ICYjNDM7MzI3LDggQEAgc3RhdGljIHZvaWQgbmJkX21hcmtfbnNvY2tfZGVhZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX3NvY2sgKm5zb2NrLFxuIFx0XHR9XG4gXHR9XG4gXHRuc29jay1cdTAwM2VkZWFkID0gdHJ1ZTtcbi1cdG5zb2NrLVx1MDAzZXBlbmRpbmcgPSBOVUxMO1xuLVx0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4mIzQzO1x0aWYgKCFuc29jay1cdTAwM2VwZW5kaW5nKVxuJiM0MztcdFx0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbmJkX3NldF9zaXplKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIGxvZmZfdCBieXRlc2l6ZSwgbG9mZl90IGJsa3NpemUpXG5AQCAtNzkzLDggJiM0Mzs3OTMsMTAgQEAgc3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCxcbiBcdCAqXG4gXHQgKiBXZSBtdXN0IHJ1biBmcm9tIHBlbmRpbmcgd29yayBmdW5jdGlvbi5cbiBcdCAqICovXG4tXHRpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFx1MDAyNmNtZC1cdTAwM2VmbGFncykpXG4mIzQzO1x0aWYgKHRlc3RfYml0KE5CRF9DTURfUEFSVElBTF9TRU5ELCBcdTAwMjZjbWQtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0XHRuYmRfbWFya19uc29ja19kZWFkKG5iZCwgbnNvY2ssIDEpO1xuIFx0XHRyZXR1cm4gQkxLX1NUU19PSztcbiYjNDM7XHR9XG4gXG4gXHQvKiByZXRyeSBvbiBhIGRpZmZlcmVudCBzb2NrZXQgKi9cbiBcdGRldl9lcnJfcmF0ZWxpbWl0ZWQoZGlza190b19kZXYobmJkLVx1MDAzZWRpc2spLFxuQEAgLTgyNiw4ICYjNDM7ODI4LDE4IEBAIHN0YXRpYyB2b2lkIG5iZF9wZW5kaW5nX2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0aWYgKCFuc29jay1cdTAwM2VwZW5kaW5nKVxuIFx0XHRcdGJyZWFrO1xuIFxuJiM0MztcdFx0aWYgKG5zb2NrLVx1MDAzZWRlYWQpXG4mIzQzO1x0XHRcdGdvdG8gZGVhZDtcbiYjNDM7XG4gXHRcdC8qIGRvbiYjMzk7dCBib3RoZXIgdGltZW91dCBoYW5kbGVyIGZvciBwYXJ0aWFsIHNlbmRpbmcgKi9cbiBcdFx0aWYgKFJFQURfT05DRShqaWZmaWVzKSAmIzQzOyBtc2Vjc190b19qaWZmaWVzKHdhaXRfbXMpIFx1MDAzZT0gZGVhZGxpbmUpIHtcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogVGhlIHNvY2tldCBjb250YWlucyBhIHBhcnRpYWxseSB0cmFuc21pdHRlZCByZXF1ZXN0XG4mIzQzO1x0XHRcdCAqIGFuZCBjYW5ub3QgYmUgcmV1c2VkIGZvciBhbm90aGVyIE5CRCByZXF1ZXN0LlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0bmJkX21hcmtfbnNvY2tfZGVhZChuYmQsIG5zb2NrLCAxKTtcbiYjNDM7XHRcdFx0bnNvY2stXHUwMDNlcGVuZGluZyA9IE5VTEw7XG4mIzQzO1x0XHRcdG5zb2NrLVx1MDAzZXNlbnQgPSAwO1xuIFx0XHRcdGNtZC1cdTAwM2VzdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xuIFx0XHRcdGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0KHJlcSk7XG4gXHRcdFx0YnJlYWs7XG5AQCAtODQwLDYgJiM0Mzs4NTIsMTggQEAgc3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIG91dDpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZjbWQtXHUwMDNlbG9jayk7XG4gXHRuYmRfY29uZmlnX3B1dChuYmQpO1xuJiM0MztcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0LyogQ29tcGxldGUgdGhlIHJlcXVlc3QgaGVyZTsgbmJkX2NsZWFyX3JlcSgpIHdpbGwgbm90IGhhbmRsZSBpdC4gKi9cbiYjNDM7ZGVhZDpcbiYjNDM7XHRuc29jay1cdTAwM2VwZW5kaW5nID0gTlVMTDtcbiYjNDM7XHRuc29jay1cdTAwM2VzZW50ID0gMDtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bnNvY2stXHUwMDNldHhfbG9jayk7XG4mIzQzO1x0Y2xlYXJfYml0KE5CRF9DTURfUEFSVElBTF9TRU5ELCBcdTAwMjZjbWQtXHUwMDNlZmxhZ3MpO1xuJiM0MztcdGNtZC1cdTAwM2VzdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZjbWQtXHUwMDNlbG9jayk7XG4mIzQzO1x0YmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocmVxKTtcbiYjNDM7XHRuYmRfY29uZmlnX3B1dChuYmQpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG5iZF9yZWFkX3JlcGx5KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG5AQCAtMTM3Niw2ICYjNDM7MTQwMCwxMCBAQCBzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuIFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc29jay1cdTAwM2V0eF9sb2NrKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuJiM0MztcdFx0aWYgKG5zb2NrLVx1MDAzZXBlbmRpbmcpIHtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zb2NrLVx1MDAzZXR4X2xvY2spO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiBcdFx0c2tfc2V0X21lbWFsbG9jKHNvY2stXHUwMDNlc2spO1xuIFx0XHRpZiAobmJkLVx1MDAzZXRhZ19zZXQudGltZW91dClcbiBcdFx0XHRzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX3NuZHRpbWVvID0gbmJkLVx1MDAzZXRhZ19zZXQudGltZW91dDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OQkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuYmRfc2VuZF9jbWQmIzM0OywKICAgICYjMzQ7bmJkX3BlbmRpbmdfY21kX3dvcmsmIzM0OywKICAgICYjMzQ7bmJkX3JlY29ubmVjdF9zb2NrZXQmIzM0OywKICAgICYjMzQ7bmJkX2dlbmxfcmVjb25maWd1cmUmIzM0OywKICAgICYjMzQ7bmJkX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSAoTkJEKSBkcml2ZXIgdG8gZml4IGhhbmRsaW5nIG9mIHBhcnRpYWxseSB0cmFuc21pdHRlZCByZXF1ZXN0cyBhbmQgZGVhZCBzb2NrZXRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBOQkQgZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBpb2N0bHMgYW5kIG5ldGxpbmssIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjYwOGU5NzFlMjE4NWJkMzRmYTAzZjNlMThiMTM5MDRmNDk3ODk5NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMTg6MjQ6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9uYmQuYwppbmRleCA4ZjEwNzYyZTkwZWY3Li43YTQ2MmE2MjYzMDZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL25iZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAgLTMyNyw4ICYjNDM7MzI3LDggQEAgc3RhdGljIHZvaWQgbmJkX21hcmtfbnNvY2tfZGVhZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX3NvY2sgKm5zb2NrLAogCQl9CiAJfQogCW5zb2NrLSZndDtkZWFkID0gdHJ1ZTsKLQluc29jay0mZ3Q7cGVuZGluZyA9IE5VTEw7Ci0JbnNvY2stJmd0O3NlbnQgPSAwOwomIzQzOwlpZiAoIW5zb2NrLSZndDtwZW5kaW5nKQomIzQzOwkJbnNvY2stJmd0O3NlbnQgPSAwOwogfQogCiBzdGF0aWMgaW50IG5iZF9zZXRfc2l6ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBsb2ZmX3QgYnl0ZXNpemUsIGxvZmZfdCBibGtzaXplKQpAQCAtNzkzLDggJiM0Mzs3OTMsMTAgQEAgc3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCwKIAkgKgogCSAqIFdlIG11c3QgcnVuIGZyb20gcGVuZGluZyB3b3JrIGZ1bmN0aW9uLgogCSAqICovCi0JaWYgKHRlc3RfYml0KE5CRF9DTURfUEFSVElBTF9TRU5ELCAmYW1wO2NtZC0mZ3Q7ZmxhZ3MpKQomIzQzOwlpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsICZhbXA7Y21kLSZndDtmbGFncykpIHsKJiM0MzsJCW5iZF9tYXJrX25zb2NrX2RlYWQobmJkLCBuc29jaywgMSk7CiAJCXJldHVybiBCTEtfU1RTX09LOwomIzQzOwl9CiAKIAkvKiByZXRyeSBvbiBhIGRpZmZlcmVudCBzb2NrZXQgKi8KIAlkZXZfZXJyX3JhdGVsaW1pdGVkKGRpc2tfdG9fZGV2KG5iZC0mZ3Q7ZGlzayksCkBAIC04MjYsOCAmIzQzOzgyOCwxOCBAQCBzdGF0aWMgdm9pZCBuYmRfcGVuZGluZ19jbWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWlmICghbnNvY2stJmd0O3BlbmRpbmcpCiAJCQlicmVhazsKIAomIzQzOwkJaWYgKG5zb2NrLSZndDtkZWFkKQomIzQzOwkJCWdvdG8gZGVhZDsKJiM0MzsKIAkJLyogZG9uJiMzOTt0IGJvdGhlciB0aW1lb3V0IGhhbmRsZXIgZm9yIHBhcnRpYWwgc2VuZGluZyAqLwogCQlpZiAoUkVBRF9PTkNFKGppZmZpZXMpICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMod2FpdF9tcykgJmd0Oz0gZGVhZGxpbmUpIHsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFRoZSBzb2NrZXQgY29udGFpbnMgYSBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdAomIzQzOwkJCSAqIGFuZCBjYW5ub3QgYmUgcmV1c2VkIGZvciBhbm90aGVyIE5CRCByZXF1ZXN0LgomIzQzOwkJCSAqLwomIzQzOwkJCW5iZF9tYXJrX25zb2NrX2RlYWQobmJkLCBuc29jaywgMSk7CiYjNDM7CQkJbnNvY2stJmd0O3BlbmRpbmcgPSBOVUxMOwomIzQzOwkJCW5zb2NrLSZndDtzZW50ID0gMDsKIAkJCWNtZC0mZ3Q7c3RhdHVzID0gQkxLX1NUU19JT0VSUjsKIAkJCWJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0KHJlcSk7CiAJCQlicmVhazsKQEAgLTg0MCw2ICYjNDM7ODUyLDE4IEBAIHN0YXRpYyB2b2lkIG5iZF9wZW5kaW5nX2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIG91dDoKIAltdXRleF91bmxvY2soJmFtcDtjbWQtJmd0O2xvY2spOwogCW5iZF9jb25maWdfcHV0KG5iZCk7CiYjNDM7CXJldHVybjsKJiM0MzsKJiM0MzsJLyogQ29tcGxldGUgdGhlIHJlcXVlc3QgaGVyZTsgbmJkX2NsZWFyX3JlcSgpIHdpbGwgbm90IGhhbmRsZSBpdC4gKi8KJiM0MztkZWFkOgomIzQzOwluc29jay0mZ3Q7cGVuZGluZyA9IE5VTEw7CiYjNDM7CW5zb2NrLSZndDtzZW50ID0gMDsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7bnNvY2stJmd0O3R4X2xvY2spOwomIzQzOwljbGVhcl9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsICZhbXA7Y21kLSZndDtmbGFncyk7CiYjNDM7CWNtZC0mZ3Q7c3RhdHVzID0gQkxLX1NUU19JT0VSUjsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7Y21kLSZndDtsb2NrKTsKJiM0MzsJYmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocmVxKTsKJiM0MzsJbmJkX2NvbmZpZ19wdXQobmJkKTsKIH0KIAogc3RhdGljIGludCBuYmRfcmVhZF9yZXBseShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLApAQCAtMTM3Niw2ICYjNDM7MTQwMCwxMCBAQCBzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQkJbXV0ZXhfdW5sb2NrKCZhbXA7bnNvY2stJmd0O3R4X2xvY2spOwogCQkJY29udGludWU7CiAJCX0KJiM0MzsJCWlmIChuc29jay0mZ3Q7cGVuZGluZykgewomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO25zb2NrLSZndDt0eF9sb2NrKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJc2tfc2V0X21lbWFsbG9jKHNvY2stJmd0O3NrKTsKIAkJaWYgKG5iZC0mZ3Q7dGFnX3NldC50aW1lb3V0KQogCQkJc29jay0mZ3Q7c2stJmd0O3NrX3NuZHRpbWVvID0gbmJkLSZndDt0YWdfc2V0LnRpbWVvdXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOQkQgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGRyaXZlcnMvYmxvY2svbmJkLmNgLCBkZWFsaW5nIHdpdGggcGFydGlhbCBzZW5kcyBhbmQgZGVhZCBzb2NrZXRzIGluIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBOQkQuLi4gaXMgdGhpcyBmdXp6YWJsZT8mIzM0OyBTaW5jZSBJJiMzOTttIGxvb2tpbmcgYXQgYG5iZF9tYXJrX25zb2NrX2RlYWRgLCBgbmJkX3NlbmRfY21kYCwgYG5iZF9wZW5kaW5nX2NtZF93b3JrYCwgYW5kIGBuYmRfcmVjb25uZWN0X3NvY2tldGAsIGFsbCBvZiB0aGVzZSBzZWVtIGxpa2UgZnVuY3Rpb25hbCBjaGFuZ2VzIGltcGFjdGluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIG5ldHdvcmsgaW50ZXJhY3Rpb24uIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdG9yLiBCbG9jayBkZXZpY2UgZHJpdmVycyBhcmUgdXN1YWxseSBhY2Nlc3NpYmxlIHZpYSBpb2N0bHMgb3IgbmV0bGluaywgd2hpY2ggb3BlbnMgdXAgaW50ZXJlc3RpbmcgYXZlbnVlcyBmb3IgY3JhZnRpbmcgZnV6emVkIGlucHV0cy4KCk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEl0JiMzOTtsbCBwcm9iYWJseSBiZSBpbiBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBvciBzb21ldGhpbmcgZXF1YWxseSBvYnZpb3VzLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBjcnVjaWFsIGZvciBlZmZlY3RpdmUgZnV6emluZyDigJMgSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCBob3cgdG8gYmVzdCBzZXQgdXAgdGhlIHRhcmdldCBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1enplci4gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlc2UgZnVuY3Rpb25zIC0gYG5iZF9zZW5kX2NtZGAsIGBuYmRfcGVuZGluZ19jbWRfd29ya2AsIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLiBBbnkgdnVsbmVyYWJpbGl0eSBpbiB0aGUgY29ubmVjdGlvbiBhbmQgY29tbWFuZCBoYW5kbGluZyBzaG91bGQgYmUgYSBncmVhdCBwbGFjZSB0byBzdGFydCBsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05CRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZz0xOTQ9c291cmNlIFwmIzM0O2RyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTk1LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5Njpjb25maWcgQkxLX0RFVl9OQkRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5CRCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBCTEtfREVWX05CRGAuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBzZWUgd2hlcmUgdGhlIGNoYW5nZXMgYXJlLCBhbmQgaXQgbG9va3MgbGlrZSBpdOKAmXM6IGBuYmRfbWFya19uc29ja19kZWFkYCwgYG5iZF9zZW5kX2NtZGAsIGBuYmRfcGVuZGluZ19jbWRfd29ya2AsIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLgoKUmlnaHQgb2ZmIHRoZSBiYXQsIGBuYmRfc2VuZF9jbWRgIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGFyZSBzY3JlYW1pbmcgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyB0byBtZS4gVGhleSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZGlyZWN0IGZ1enppbmcgYXR0ZW50aW9uLiBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCBtaWdodCBub3QgYmUgKmRpcmVjdGx5KiBmdXp6YWJsZSwgYnV0IGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgdGh1cyBhIHBvdGVudGlhbCB0YXJnZXQgZG93biB0aGUgbGluZS4gRmluYWxseSwgYG5iZF9tYXJrX25zb2NrX2RlYWRgIGlzIHN0YXRpYywgd2hpY2ggcmFpc2VzIHRoZSBwb3NzaWJpbGl0eSBvZiBpbmxpbmluZyDigJMgd29ydGggaW52ZXN0aWdhdGluZy4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYG5iZF9zZW5kX2NtZGAgaXMgYWN0dWFsbHkgc3RhdGljLiBCZXN0IHRvIHZlcmlmeSB0aGF0IHVwZnJvbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmJkX3NlbmRfY21kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jPTYyNT1zdGF0aWMgdm9pZCBuYmRfc2NoZWRfcGVuZGluZ193b3JrKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy02NDQtICovXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjY0NTpzdGF0aWMgYmxrX3N0YXR1c190IG5iZF9zZW5kX2NtZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX2NtZCAqY21kLFxuZHJpdmVycy9ibG9jay9uYmQuYy02NDYtXHRcdFx0XHQgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9ODEwPXN0YXRpYyB2b2lkIG5iZF9wZW5kaW5nX2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTgyNi1cdHdoaWxlICh0cnVlKSB7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjgyNzpcdFx0bmJkX3NlbmRfY21kKG5iZCwgY21kLCBjbWQtXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9ibG9jay9uYmQuYy04MjgtXHRcdGlmICghbnNvY2stXHUwMDNlcGVuZGluZylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTExNDE9c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfaGFuZGxlX2NtZChzdHJ1Y3QgbmJkX2NtZCAqY21kLCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMjAwLVx0fVxuZHJpdmVycy9ibG9jay9uYmQuYzoxMjAxOlx0cmV0ID0gbmJkX3NlbmRfY21kKG5iZCwgY21kLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDItb3V0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGF0IGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gYG5iZF9zZW5kX2NtZGAqKgoKT2theSwgc28gYG5iZF9zZW5kX2NtZGAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBtZWFuaW5nIGl0JiMzOTtzIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBjb21waWxhdGlvbiB1bml0LiBUaGF0IHN1Z2dlc3RzIGl0JiMzOTtzIGEgY3JpdGljYWwsIGludGVybmFsIGZ1bmN0aW9uLCBwcm9iYWJseSBmb3IgaGFuZGxpbmcgdGhlIGxvdy1sZXZlbCBjb21tYW5kIHNlbmRpbmcgbG9naWMuIExldCYjMzk7cyBzZWUgaG93IGl0JiMzOTtzIHVzZWQuIFJpZ2h0LCBpdCYjMzk7cyBjYWxsZWQgYnkgYG5iZF9wZW5kaW5nX2NtZF93b3JrYCBhbmQgYG5iZF9oYW5kbGVfY21kYC4gYG5iZF9oYW5kbGVfY21kYCBpcyB0aGVuIGNhbGxlZCBieSBgbmJkX3F1ZXVlX3JxYC4gU28sIGBuYmRfcXVldWVfcnFgIGxpa2VseSBpbml0aWF0ZXMgdGhlIHByb2Nlc3MsIHBhc3NpbmcgZG93biB0aGUgY29tbWFuZCB0byBgbmJkX2hhbmRsZV9jbWRgLCB3aGljaCB1bHRpbWF0ZWx5LCB0aHJvdWdoIHdoYXRldmVyIGxvZ2ljLCBlbmRzIHVwIGNhbGxpbmcgdGhhdCBjcml0aWNhbCBgbmJkX3NlbmRfY21kYCBmdW5jdGlvbi4gVGhpcyBzZWVtcyBsaWtlIGEgdHlwaWNhbCBjb21tYW5kIHByb2Nlc3NpbmcgcGlwZWxpbmUuIGBuYmRfcXVldWVfcnFgIHByb2JhYmx5IHB1dHMgdGhlIHJlcXVlc3Qgb24gYSBxdWV1ZSwgYG5iZF9oYW5kbGVfY21kYCBwcm9jZXNzZXMgdGhlIHJlcXVlc3QgYW5kIHRoZW4gYG5iZF9zZW5kX2NtZGAgYWN0dWFsbHkgc2VuZHMgaXQuIEdvb2QgdG8ga25vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuYmRfcXVldWVfcnEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmM9MTE2PXN0cnVjdCBuYmRfZGV2aWNlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzOC0vKlxuZHJpdmVycy9ibG9jay9uYmQuYzoxMzk6ICogVGhpcyBmbGFnIHdpbGwgYmUgc2V0IGlmIG5iZF9xdWV1ZV9ycSgpIHN1Y2NlZWQsIGFuZCB3aWxsIGJlIGNoZWNrZWQgYW5kXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0MC0gKiBjbGVhcmVkIGluIGNvbXBsZXRpb24uIEJvdGggc2V0dGluZyBhbmQgY2xlYXJpbmcgb2YgdGhlIGZsYWcgYXJlIHByb3RlY3RlZFxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTE0MT1zdGF0aWMgYmxrX3N0YXR1c190IG5iZF9oYW5kbGVfY21kKHN0cnVjdCBuYmRfY21kICpjbWQsIGludCBpbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDctXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEyMDg6c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfcXVldWVfcnEoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDktXHRcdFx0Y29uc3Qgc3RydWN0IGJsa19tcV9xdWV1ZV9kYXRhICpiZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE5NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBibGtfbXFfb3BzIG5iZF9tcV9vcHMgPSB7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5NjY6XHQucXVldWVfcnFcdD0gbmJkX3F1ZXVlX3JxLFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTY3LVx0LmNvbXBsZXRlXHQ9IG5iZF9jb21wbGV0ZV9ycSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODc1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIE5CRCBRdWV1ZSBhbmQgUmVjb25uZWN0aW9uIExvZ2ljKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBncm91bmQgbXlzZWxmIGluIHRoZSBjb2RlLiBgbmJkX3F1ZXVlX3JxYCwgdGhhdCYjMzk7cyB0aGUgYnJlYWQgYW5kIGJ1dHRlciwgdGhlIHdvcmtob3JzZSBvZiB0aGUgYmxvY2sgbGF5ZXIgcXVldWUgZnVuY3Rpb24gZm9yIHRoZSBOQkQgZHJpdmVyLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0aGUgYnVsayBvZiBJL08gcmVxdWVzdHMgdG8gYmUgaGFuZGxlZCwgYXMgdGhleSBnZXQgc3VibWl0dGVkLgoKTm93LCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLi4uIHRoYXQgb25lIHJpbmdzIGEgYmVsbC4gSXQmIzM5O3MgcmVsYXRlZCB0byBoYW5kbGluZyBzb2NrZXQgcmVjb25uZWN0aW9ucywgd2hpY2ggaW1wbGllcyBkZWFsaW5nIHdpdGggcG90ZW50aWFsIGRpc3J1cHRpb25zIGluIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gdG8gdGhlIE5CRCBzZXJ2ZXIuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlIGlzICp3aGVuKiB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuIElzIGl0IGp1c3QgaGFwcGVuaW5nIGluIGBuYmRfaW9jdGxgLCBvciBpcyB0aGVyZSBzb21ldGhpbmcgZWxzZSBhdCBwbGF5PyBJdCYjMzk7cyB0aW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBuZXRsaW5rIGFsc28gcGxheXMgYSBwYXJ0IGluIGNhbGxpbmcgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCwgc2luY2UgbmV0bGluayYjMzk7cyByb2xlIGluIHRoZSBkcml2ZXIgY291bGQgYmUgaW5mbHVlbmNpbmcgdGhlIHNpdHVhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmJkX3JlY29ubmVjdF9zb2NrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmM9MTMwMT1zdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTM3NDpzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzc1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTIzNzU9c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5NS1cdFx0XHRmZCA9IChpbnQpbmxhX2dldF91MzIoc29ja3NbTkJEX1NPQ0tfRkRdKTtcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjQ5NjpcdFx0XHRyZXQgPSBuYmRfcmVjb25uZWN0X3NvY2tldChuYmQsIGZkKTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5Ny1cdFx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NDEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgUmVjb25uZWN0aW9uIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCBpcyBiZWluZyB0cmlnZ2VyZWQgZnJvbSBhIGNvdXBsZSBvZiBkaWZmZXJlbnQgcGxhY2VzOiBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCB3aGljaCBpcyBuZXRsaW5rLWJhc2VkLCBhbmQgYWxzbyB0aHJvdWdoIGBuYmRfaW9jdGxgLiBJbnRlcmVzdGluZy4gVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2l0dWF0aW9uLCBteSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGBuYmRfaW9jdGxgIHBhdGggZmlyc3QuIEl0JiMzOTtzIG9mdGVuIGVhc2llciB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyB3aXRoIGlvY3RscyBiZWNhdXNlIGl04oCZcyB1c3VhbGx5IG1vcmUgc3RyYWlnaHRmb3J3YXJkLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlIGFuZCBob3cgdGhhdOKAmXMgYWZmZWN0aW5nIHRoZSByZWNvbm5lY3Rpb24gcHJvY2Vzcy4gVGhpcyBtaWdodCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHVuZGVybHlpbmcgaXNzdWUsIGFuZCB0aGVuIEkgY2FuIGNvbXBhcmUgaXQgdG8gdGhlIG5ldGxpbmsgc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmJkX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jPTE2NDg9c3RhdGljIHZvaWQgbmJkX3NldF9jbWRfdGltZW91dChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1NjQgdGltZW91dClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NTctLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBjb25maWdfbG9jayBoZWxkICovXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2NTg6c3RhdGljIGludCBfX25iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjU5LVx0XHQgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzA0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNzA1OnN0YXRpYyBpbnQgbmJkX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwNi1cdFx0ICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MjctXHQgICAgKGNtZCA9PSBOQkRfRElTQ09OTkVDVCB8fCBjbWQgPT0gTkJEX0NMRUFSX1NPQ0spKVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNzI4Olx0XHRlcnJvciA9IF9fbmJkX2lvY3RsKGJkZXYsIG5iZCwgY21kLCBhcmcpO1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNzI5LVx0ZWxzZVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTgzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIG5iZF9mb3BzID1cbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MzYtXHQucmVsZWFzZSA9XHRuYmRfcmVsZWFzZSxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTgzNzpcdC5pb2N0bCA9XHRuYmRfaW9jdGwsXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4Mzg6XHQuY29tcGF0X2lvY3RsID1cdG5iZF9pb2N0bCxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgzOS1cdC5mcmVlX2Rpc2sgPVx0bmJkX2ZyZWVfZGlzayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEzNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIElPQ1RMIGFuZCBSZWNvbm5lY3Rpb24gUGF0aCoqCgpIbW0sIGhvbGQgb24gYSBzZWNvbmQuLi4gSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgTkJEIGRyaXZlciwgYW5kIEkgbmVlZCB0byBjbGFyaWZ5IGEgZGV0YWlsIGluIHRoZSBjb250cm9sIGZsb3cuIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYF9fbmJkX2lvY3RsYCBmdW5jdGlvbiwgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGludm9rZXMgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gSXQmIzM5O3MgYSBrZXkgaW50ZXJhY3Rpb24gcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIElPQ1RMIG9wZXJhdGlvbnMsIGluIGFueSBzY2VuYXJpbywgbGVhZCB0byBhIHNvY2tldCByZWNvbm5lY3Rpb24gYXR0ZW1wdC4gQXJlIHRoZXkgdGllZCB0b2dldGhlcj8gT3IgaXMgdGhlIHJlY29ubmVjdGlvbiB0cmlnZ2VyZWQgdmlhIGEgY29tcGxldGVseSBzZXBhcmF0ZSBwYXRoPyBNeSBpbml0aWFsIGFzc3VtcHRpb24sIGJhc2VkIG9uIHByZXZpb3VzIGFuYWx5c2lzLCBpcyB0aGF0IHRoZXNlIHR3byBhcmUgcmVsYXRlZC4gQnV0IEkgaGF2ZSB0byBjb25maXJtLiBJdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWxseSB0cmFuc2llbnQgbmV0d29yayBpc3N1ZXMsIGVzcGVjaWFsbHkgZHVyaW5nIElPIG9wZXJhdGlvbnMuIFRoZSBhbnN3ZXIgaGVyZSB3aWxsIGRpY3RhdGUgaG93IEkgY29uc2lkZXIgdGhlIG92ZXJhbGwgcmVzaWxpZW5jeSBtb2RlbCBvZiB0aGUgTkJEIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmJkX3JlY29ubmVjdF9zb2NrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmM9MTMwMT1zdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTM3NDpzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzc1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTIzNzU9c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5NS1cdFx0XHRmZCA9IChpbnQpbmxhX2dldF91MzIoc29ja3NbTkJEX1NPQ0tfRkRdKTtcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjQ5NjpcdFx0XHRyZXQgPSBuYmRfcmVjb25uZWN0X3NvY2tldChuYmQsIGZkKTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5Ny1cdFx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBOQkQgU29ja2V0IFJlY29ubmVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBuYmRfcmVjb25uZWN0X3NvY2tldGAgZnVuY3Rpb24sIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIG9ubHkgaW52b2tlZCBmcm9tIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAuIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgY2FsbHNpdGU7IGdvb2QgdG8ga25vdy4gTm93LCB0aGUgbmF0dXJhbCBuZXh0IHN0ZXAgaXMgdG8gc2VlIHdoZXJlICp0aGF0KiBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSwgYnV0IGFsc28gbGV0IG1lIHF1aWNrbHkgY2hlY2sgb3V0IGBfX25iZF9pb2N0bGAgdG8gbWFrZSBzdXJlIGl0IGlzbiYjMzk7dCB1c2VkIHRoZXJlIGFzIHdlbGwgZm9yIHNvbWUgcmVhc29uLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLCBiZWNhdXNlIGlvY3RscyBhcmUgYWx3YXlzIHByb25lIHRvIHN1cnByaXNlcy4gSXQmIzM5O3MgZWFzeSB0byBtaXNzIHNvbWV0aGluZyBpbiB0aGF0IGJpZyBmdW5jdGlvbiwgeW91IGtub3c/IExldCBtZSBqdXN0IGNyb3NzLXJlZmVyZW5jZSBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuYmRfcmVjb25uZWN0X3NvY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYz0xMzAxPXN0YXRpYyBpbnQgbmJkX2FkZF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcsXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzczLVxuZHJpdmVycy9ibG9jay9uYmQuYzoxMzc0OnN0YXRpYyBpbnQgbmJkX3JlY29ubmVjdF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzNzUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MjM3NT1zdGF0aWMgaW50IG5iZF9nZW5sX3JlY29uZmlndXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNDk1LVx0XHRcdGZkID0gKGludClubGFfZ2V0X3UzMihzb2Nrc1tOQkRfU09DS19GRF0pO1xuZHJpdmVycy9ibG9jay9uYmQuYzoyNDk2Olx0XHRcdHJldCA9IG5iZF9yZWNvbm5lY3Rfc29ja2V0KG5iZCwgZmQpO1xuZHJpdmVycy9ibG9jay9uYmQuYy0yNDk3LVx0XHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE2NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrKioKCkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suIFRoZSBjb250ZXh0IHN1Z2dlc3RzIGEgcmVjb25maWd1cmF0aW9uIGV2ZW50IHJlbGF0ZWQgdG8gTkJELCBhbmQgSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgZGlyZWN0IGNhbGxlcnMuIE9rYXksIHNvIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3Mgb25seSBjYWxsZWQgYnkgYG5iZF9nZW5sX3JlY29uZmlndXJlYC4gVGltZSB0byBkaXZlIGRlZXBlciBpbnRvIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAgYW5kIHNlZSBob3cgaXQmIzM5O3Mgb3JjaGVzdHJhdGluZyB0aGVzZSByZWNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBsb2dpYyBpcyBsaWtlbHkgcmVzaWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25iZF9nZW5sX3JlY29uZmlndXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jPTIzNDA9c3RhdGljIGludCBuYmRfZ2VubF9kaXNjb25uZWN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzc0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMzc1OnN0YXRpYyBpbnQgbmJkX2dlbmxfcmVjb25maWd1cmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjM3Ni17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0yNTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmJkX2Nvbm5lY3RfZ2VubF9vcHNbXSA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI1MjctXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjUyODpcdFx0LmRvaXRcdD0gbmJkX2dlbmxfcmVjb25maWd1cmUsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI1MjktXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjI5CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE5CRCBEcml2ZXI6IEEgVGhvdWdodCBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgZHJpdmVyLCBhbmQgaXQmIzM5O3MgbG9va2luZyBwcm9taXNpbmcgYXMgYSB0YXJnZXQuIEl0JiMzOTtzIGFjY2Vzc2libGUgdmlhIG5ldGxpbmssIHdoaWNoIGlzIGdvb2QuIFRoZSBOQkQgZHJpdmVyIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgY2FuIGZ1enouCgpUaGUgY29yZSBjaGFuZ2VzIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBzZWVtIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBgbmJkX21hcmtfbnNvY2tfZGVhZGAsIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gVGhpbmtpbmcgYWJvdXQgZm9jdXMgc3ltYm9scywgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCBhbmQgYG5iZF9nZW5sX3JlY29uZmlndXJlYCBqdW1wIG91dCBhcyBnb29kIHN0YXJ0aW5nIHBvaW50cy4KCkkmIzM5O20gYSBsaXR0bGUgd2FyeSBvZiBgbmJkX3F1ZXVlX3JxYCBiZWNhdXNlIGl0IHNlZW1zIHRvIGJlIGEgaG90LXBhdGggZnVuY3Rpb247IHRoYXQgbWlnaHQgY29tcGxpY2F0ZSB0aGluZ3MuIGBuYmRfcGVuZGluZ19jbWRfd29ya2AgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24sIHdoaWNoICptaWdodCogYmUgZnV6emFibGUsIGJ1dCB0aGVuLi4uaXQmIzM5O3Mgc3RhdGljLiBIbW0uIFRoZSBpbnN0cnVjdGlvbnMgZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlcnMsIHdoaWNoIGFyZSB0eXBpY2FsbHkgaW5saW5lZC4KCkhvd2V2ZXIsIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAgKmlzKiBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBhIG5ldGxpbmsgY2FsbGJhY2ssIHNvIGl0JiMzOTtzIHByb2JhYmx5IG5vdCBpbmxpbmVkLiBMZXQgbWUgZG91YmxlLWNoZWNrLiBZZXMsIGBuYmRfcmVjb25uZWN0X3NvY2tldGAgaXMgYWxzbyBzdGF0aWMuIEFuZCBzbyBpcyBgbmJkX2dlbmxfcmVjb25maWd1cmVgLiBPa2F5LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBndWlkaW5nIG1lIGhlcmUuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBhdmFpbGFibGUgaW4gdGhpcyBkcml2ZXIuCgpXYWl0LCBsb29raW5nIGF0IGBuYmRfaW9jdGxgLCBpdCYjMzk7cyBzdGF0aWMgdG9vLiBDcmFwLCBtb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gYG5iZC5jYCBhcmUgcHJvYmFibHkgc3RhdGljLCBzaW5jZSBpdCYjMzk7cyBhIGRyaXZlci4gU28sIEkgbmVlZCB0byByZXRoaW5rIHRoaXMgYXBwcm9hY2guCgpPa2F5LCBsZXQmIzM5O3MganVzdCBpbml0aWFsbHkgaW5jbHVkZSBgbmJkX2dlbmxfcmVjb25maWd1cmVgIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLiBCdXQgaGFuZyBvbi4uLiBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGlzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGEgZmFpcmx5IGxhcmdlIGZ1bmN0aW9uLiBQcm9iYWJseSBub3QgaW5saW5lZC4gTGV0JiMzOTtzIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jPTU1PXN0YXRpYyBpbnQgbmJkX3RvdGFsX2RldmljZXMgPSAwO1xuZHJpdmVycy9ibG9jay9uYmQuYy01Ni1cbmRyaXZlcnMvYmxvY2svbmJkLmM6NTc6c3RydWN0IG5iZF9zb2NrIHtcbmRyaXZlcnMvYmxvY2svbmJkLmMtNTgtXHRzdHJ1Y3Qgc29ja2V0ICpzb2NrO1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9NzU9c3RydWN0IGxpbmtfZGVhZF9hcmdzIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTkxLVxuZHJpdmVycy9ibG9jay9uYmQuYzo5MjpzdHJ1Y3QgbmJkX2NvbmZpZyB7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTkzLVx0dTMyIGZsYWdzO1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTExPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG5iZF9ibGtzaXplKHN0cnVjdCBuYmRfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMTUtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjExNjpzdHJ1Y3QgbmJkX2RldmljZSB7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTExNy1cdHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDg6c3RydWN0IG5iZF9jbWQge1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNDktXHRzdHJ1Y3QgbmJkX2RldmljZSAqbmJkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODU3CgkJCQkJCQlvdXRwdXQ6IDYwCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJZGVudGlmeWluZyBEeW5hbWljIEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGFyZWFzIHdoZXJlIHRoZSBzeXN0ZW0gKnRydWx5KiBiZWhhdmVzIGR5bmFtaWNhbGx5LiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgZGVmaW5pdGlvbiwgcHJlZGljdGFibGUgYW5kIHRpZWQgZGlyZWN0bHkgdG8gdGhlIGNvZGUmIzM5O3Mgc3RydWN0dXJlIGF0IGNvbXBpbGUgdGltZS4gVGhleSBhcmUgdGhlIGZpeGVkIHBvaW50cy4gVGhlcmVmb3JlLCBhbnkgYW5hbHlzaXMgZm9jdXNlZCBvbiBhZGFwdGl2ZSBiZWhhdmlvciwgcnVudGltZSBtb2RpZmljYXRpb25zLCBvciB0aGUgaW1wYWN0cyBvZiBjb25maWd1cmF0aW9uIG9yIGlucHV0IGRhdGEgbmVlZHMgdG8gZXhjbHVkZSB0aG9zZS4gSSBuZWVkIHRvIGZpbHRlciBvdXQgdGhlIG5vaXNlLiBMZXQmIzM5O3MgZm9jdXMgb3VyIGF0dGVudGlvbiBieSBzZWFyY2hpbmcsIGRpcmVjdGx5LCBmb3IgdGhvc2UgZnVuY3Rpb25zIHRoYXQgYXJlICpub3QqIHN0YXRpYy4gVGhpcyB3aWxsIHF1aWNrbHkgcmV2ZWFsIHRoZSBhcmVhcyB0aGF0IGFyZSBjYW5kaWRhdGVzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb2YgdGhlIHN5c3RlbSYjMzk7cyBkeW5hbWljIGJlaGF2aW9ycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDg5CgkJCQkJCQlvdXRwdXQ6IDYyCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbnNpZGVyaW5nIGEgYHN0YXRpYyBpbnRgIFZhcmlhYmxlIGluIHRoZSBOQkQgQ29udGV4dCoqCgpIbW0sIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIE5CRCAoTmV0d29yayBCbG9jayBEZXZpY2UpIGltcGxlbWVudGF0aW9uIGhlcmUuIEkmIzM5O20gd29uZGVyaW5nIGlmIGEgYHN0YXRpYyBpbnQgbmJkXy4uLmAgaXMgYSBwb3RlbnRpYWwgc29sdXRpb24gZm9yIHNvbWV0aGluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQgYXJlIHdlIHRyeWluZyB0byBhY2hpZXZlPyBXaGF0IGlzIHRoZSBzY29wZSBvZiB0aGF0IHZhcmlhYmxlPyBXaHkgaXMgYSBgc3RhdGljIGludGAgYmVpbmcgY29uc2lkZXJlZD8gSXMgaXQgdG8gbWFpbnRhaW4gc3RhdGUgYWNyb3NzIGZ1bmN0aW9uIGNhbGxzLCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBjb25uZWN0aW9uIG9yIG9wZXJhdGlvbiB3aXRoaW4gdGhlIE5CRCBkcml2ZXI/IElzIGl0IGEgY291bnRlciwgYSBmbGFnLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGltcGxpY2F0aW9ucyBvZiB1c2luZyBgc3RhdGljYCBhcmUgaW5zdGFudGx5IGluIG15IG1pbmQ6IHNjb3BlIHJlc3RyaWN0aW9uLCBpbnRlcm5hbCBsaW5rYWdlLCBhbmQgcG90ZW50aWFsIHRocmVhZC1zYWZldHkgY29uY2VybnMsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIGNvbnRleHQgdGhhdCBsaWtlbHkgZGVhbHMgd2l0aCBtdWx0aXBsZSBjbGllbnRzIHNpbXVsdGFuZW91c2x5LiBJIG5lZWQgdG8gY29uc2lkZXIgdGhvc2UgaXNzdWVzIGNhcmVmdWxseS4gTmVlZCB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIGNvbnRleHQgYW5kIGZ1bmN0aW9uIG5hbWUgdG8ga25vdyB3aGF0IHByb2JsZW0gd2UgYXJlIGxvb2tpbmcgdG8gc29sdmUgYnkgdXNpbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYz0xNjk9c3RhdGljIGludCBwYXJ0X3NoaWZ0O1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNzAtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MTpzdGF0aWMgaW50IG5iZF9kZXZfZGJnX2luaXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MjpzdGF0aWMgdm9pZCBuYmRfZGV2X2RiZ19jbG9zZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKTtcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTczOnN0YXRpYyB2b2lkIG5iZF9jb25maWdfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpO1xuZHJpdmVycy9ibG9jay9uYmQuYzoxNzQ6c3RhdGljIHZvaWQgbmJkX2Nvbm5lY3RfcmVwbHkoc3RydWN0IGdlbmxfaW5mbyAqaW5mbywgaW50IGluZGV4KTtcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc1OnN0YXRpYyBpbnQgbmJkX2dlbmxfc3RhdHVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuZHJpdmVycy9ibG9jay9uYmQuYzoxNzY6c3RhdGljIHZvaWQgbmJkX2RlYWRfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3NzpzdGF0aWMgdm9pZCBuYmRfZGlzY29ubmVjdF9hbmRfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpO1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNzgtXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE3OT1zdGF0aWMgaW5saW5lIHN0cnVjdCBkZXZpY2UgKm5iZF90b19kZXYoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTg0OnN0YXRpYyB2b2lkIG5iZF9yZXF1ZXVlX2NtZChzdHJ1Y3QgbmJkX2NtZCAqY21kKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xODUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjA0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMDU6c3RhdGljIHU2NCBuYmRfY21kX2hhbmRsZShzdHJ1Y3QgbmJkX2NtZCAqY21kKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMDYte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEzLVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMTQ6c3RhdGljIHUzMiBuYmRfaGFuZGxlX3RvX3RhZyh1NjQgaGFuZGxlKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMTUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjE4LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMTk6c3RhdGljIHUzMiBuYmRfaGFuZGxlX3RvX2Nvb2tpZSh1NjQgaGFuZGxlKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMjAte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBiYWNrZW5kX2F0dHIgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjMtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI2NDpzdGF0aWMgdm9pZCBuYmRfZGV2X3JlbW92ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjgxLVxuZHJpdmVycy9ibG9jay9uYmQuYzoyODI6c3RhdGljIHZvaWQgbmJkX2Rldl9yZW1vdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4My17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yODYtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI4NzpzdGF0aWMgdm9pZCBuYmRfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4OC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yOTgtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI5OTpzdGF0aWMgaW50IG5iZF9kaXNjb25uZWN0ZWQoc3RydWN0IG5iZF9jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzAwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTMwNC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MzA1OnN0YXRpYyB2b2lkIG5iZF9tYXJrX25zb2NrX2RlYWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9zb2NrICpuc29jayxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzA2LVx0XHRcdFx0aW50IG5vdGlmeSlcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTMzMy1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MzM0OnN0YXRpYyBpbnQgbmJkX3NldF9zaXplKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIGxvZmZfdCBieXRlc2l6ZSwgbG9mZl90IGJsa3NpemUpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTMzNS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0zODQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjM4NTpzdGF0aWMgdm9pZCBuYmRfY29tcGxldGVfcnEoc3RydWN0IHJlcXVlc3QgKnJlcSlcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzg2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTYxMj1zdGF0aWMgaW5saW5lIGludCB3YXNfaW50ZXJydXB0ZWQoaW50IHJlc3VsdClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTYyNC0gKi9cbmRyaXZlcnMvYmxvY2svbmJkLmM6NjI1OnN0YXRpYyB2b2lkIG5iZF9zY2hlZF9wZW5kaW5nX3dvcmsoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCxcbmRyaXZlcnMvYmxvY2svbmJkLmMtNjI2LVx0XHRcdFx0ICAgc3RydWN0IG5iZF9zb2NrICpuc29jayxcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTY0NC0gKi9cbmRyaXZlcnMvYmxvY2svbmJkLmM6NjQ1OnN0YXRpYyBibGtfc3RhdHVzX3QgbmJkX3NlbmRfY21kKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCBuYmRfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTY0Ni1cdFx0XHRcdCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy04MDktLyogaGFuZGxlIHBhcnRpYWwgc2VuZGluZyAqL1xuZHJpdmVycy9ibG9jay9uYmQuYzo4MTA6c3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9ibG9jay9uYmQuYy04MTEte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtODY4LVxuZHJpdmVycy9ibG9jay9uYmQuYzo4Njk6c3RhdGljIGludCBuYmRfcmVhZF9yZXBseShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuZHJpdmVycy9ibG9jay9uYmQuYy04NzAtXHRcdFx0ICBzdHJ1Y3QgbmJkX3JlcGx5ICpyZXBseSlcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTk5ND1zdGF0aWMgdm9pZCByZWN2X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTA1NDpzdGF0aWMgYm9vbCBuYmRfY2xlYXJfcmVxKHN0cnVjdCByZXF1ZXN0ICpyZXEsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNTUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA3My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTA3NDpzdGF0aWMgdm9pZCBuYmRfY2xlYXJfcXVlKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNzUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTEyNT1zdGF0aWMgaW50IHdhaXRfZm9yX3JlY29ubmVjdChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTE0MC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTE0MTpzdGF0aWMgYmxrX3N0YXR1c190IG5iZF9oYW5kbGVfY21kKHN0cnVjdCBuYmRfY21kICpjbWQsIGludCBpbmRleClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTE0Mi17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMjA3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxMjA4OnN0YXRpYyBibGtfc3RhdHVzX3QgbmJkX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMjA5LVx0XHRcdGNvbnN0IHN0cnVjdCBibGtfbXFfcXVldWVfZGF0YSAqYmQpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xMjY3PXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbmJkX3Nsb2NrX2tleVszXTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTI2OC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTI2OTpzdGF0aWMgdm9pZCBuYmRfcmVjbGFzc2lmeV9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTI3MC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xMjk4PXN0YXRpYyBpbmxpbmUgdm9pZCBuYmRfcmVjbGFzc2lmeV9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaykge31cbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzMDAtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEzMDE6c3RhdGljIGludCBuYmRfYWRkX3NvY2tldChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1bnNpZ25lZCBsb25nIGFyZyxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTMwMi1cdFx0XHQgIGJvb2wgbmV0bGluaylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzNzMtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEzNzQ6c3RhdGljIGludCBuYmRfcmVjb25uZWN0X3NvY2tldChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1bnNpZ25lZCBsb25nIGFyZylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3NS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDM5LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDQwOnN0YXRpYyB2b2lkIG5iZF9iZGV2X3Jlc2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0NDEte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0Ni1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTQ0NzpzdGF0aWMgdm9pZCBuYmRfcGFyc2VfZmxhZ3Moc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0OC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xNDU1PXN0YXRpYyB2b2lkIHNlbmRfZGlzY29ubmVjdHMoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0NzgtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE0Nzk6c3RhdGljIGludCBuYmRfZGlzY29ubmVjdChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDgwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0ODktXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE0OTA6c3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2soc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ5MS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDk2LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDk3OnN0YXRpYyB2b2lkIG5iZF9jb25maWdfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0OTgte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTUzNS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTUzNjpzdGF0aWMgaW50IG5iZF9zdGFydF9kZXZpY2Uoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTUzNy17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjA3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjA4OnN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZV9pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjA5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2MzctXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2Mzg6c3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2tfaW9jdGwoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTYzOS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjQ3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjQ4OnN0YXRpYyB2b2lkIG5iZF9zZXRfY21kX3RpbWVvdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdTY0IHRpbWVvdXQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NDkte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTY1OD1zdGF0aWMgaW50IF9fbmJkX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzA0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNzA1OnN0YXRpYyBpbnQgbmJkX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwNi1cdFx0ICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MzQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MzU6c3RhdGljIGludCBuYmRfYWxsb2NfYW5kX2luaXRfY29uZmlnKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MzYte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTc2OS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc3MDpzdGF0aWMgaW50IG5iZF9vcGVuKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBibGtfbW9kZV90IG1vZGUpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3NzEte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgxMi1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTgxMzpzdGF0aWMgdm9pZCBuYmRfcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgxNC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xODI0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxODI1OnN0YXRpYyB2b2lkIG5iZF9mcmVlX2Rpc2soc3RydWN0IGdlbmRpc2sgKmRpc2spXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MjYte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTgzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIG5iZF9mb3BzID1cbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NDMtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4NDQ6c3RhdGljIGludCBuYmRfZGJnX3Rhc2tzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NDUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTg1ND1ERUZJTkVfU0hPV19BVFRSSUJVVEUobmJkX2RiZ190YXNrcyk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NTUtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4NTY6c3RhdGljIGludCBuYmRfZGJnX2ZsYWdzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NTcte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTg4Mz1ERUZJTkVfU0hPV19BVFRSSUJVVEUobmJkX2RiZ19mbGFncyk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4ODQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4ODU6c3RhdGljIGludCBuYmRfZGV2X2RiZ19pbml0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4ODYte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkwOS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTkxMDpzdGF0aWMgdm9pZCBuYmRfZGV2X2RiZ19jbG9zZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTExLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MTQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5MTU6c3RhdGljIGludCBuYmRfZGJnX2luaXQodm9pZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkxNi17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTI3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTI4OnN0YXRpYyB2b2lkIG5iZF9kYmdfY2xvc2Uodm9pZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkyOS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTM0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTM1OnN0YXRpYyBpbnQgbmJkX2Rldl9kYmdfaW5pdChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTM2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MzktXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5NDA6c3RhdGljIHZvaWQgbmJkX2Rldl9kYmdfY2xvc2Uoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk0MS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTQzLVxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTQ0OnN0YXRpYyBpbnQgbmJkX2RiZ19pbml0KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5NDUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk0OC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTk0OTpzdGF0aWMgdm9pZCBuYmRfZGJnX2Nsb3NlKHZvaWQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5NTAte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk1NC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTk1NTpzdGF0aWMgaW50IG5iZF9pbml0X3JlcXVlc3Qoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsIHN0cnVjdCByZXF1ZXN0ICpycSxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk1Ni1cdFx0XHQgICAgdW5zaWduZWQgaW50IGhjdHhfaWR4LCBpbnQgbnVtYV9ub2RlKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MjExNj1uYmRfZGV2aWNlX3BvbGljeVtOQkRfREVWSUNFX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEyMC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MjEyMTpzdGF0aWMgaW50IG5iZF9nZW5sX3NpemVfc2V0KHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIxMjIte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEzNy1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MjEzODpzdGF0aWMgaW50IG5iZF9nZW5sX2Nvbm5lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEzOS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzE4LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMzE5OnN0YXRpYyB2b2lkIG5iZF9kaXNjb25uZWN0X2FuZF9wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjMyMC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzM5LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMzQwOnN0YXRpYyBpbnQgbmJkX2dlbmxfZGlzY29ubmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzQxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIzNzQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjIzNzU6c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzc2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTI1ODY9c3RhdGljIGludCBzdGF0dXNfY2IoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNTkxLVxuZHJpdmVycy9ibG9jay9uYmQuYzoyNTkyOnN0YXRpYyBpbnQgbmJkX2dlbmxfc3RhdHVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI1OTMte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjY1MS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MjY1MjpzdGF0aWMgdm9pZCBuYmRfY29ubmVjdF9yZXBseShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBpbnQgaW5kZXgpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI2NTMte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjY3NS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MjY3NjpzdGF0aWMgdm9pZCBuYmRfbWNhc3RfaW5kZXgoaW50IGluZGV4KVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjc3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI2OTktXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI3MDA6c3RhdGljIHZvaWQgbmJkX2RlYWRfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjcwMS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0yNzA4PXN0YXRpYyBpbnQgX19pbml0IG5iZF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNzYwLVxuZHJpdmVycy9ibG9jay9uYmQuYzoyNzYxOnN0YXRpYyBpbnQgbmJkX2V4aXRfY2IoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI3NjIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDAwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBOQkQgS2VybmVsIE1vZHVsZSBTeW1ib2xzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkgbmVlZCB0byBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIGluIHRoaXMgTkJEIG1vZHVsZS4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBgbmJkX2dlbmxfY29ubmVjdGAsIGBuYmRfZ2VubF9kaXNjb25uZWN0YCwgYW5kIGBuYmRfaW9jdGxgIHdvdWxkIGJlIGdvb2QgY2FuZGlkYXRlcyBiZWNhdXNlIHRoZXkmIzM5O3JlIGFsbCBzdGF0aWMuIEkgZmlndXJlZCBJJiMzOTtkIHVzZSBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBgbmJkX2lvY3RsYCwgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCwgYW5kIGBuYmRfc2VuZF9jbWRgIGFzIG15IGluaXRpYWwgRm9jdXNTeW1ib2xzLgoKSG93ZXZlciwgSSBwYXVzZWQgYXQgYG5iZF9zZW5kX2NtZGAgYmVjYXVzZSBpdCYjMzk7cyBzdGF0aWMgYW5kIHRoZSBjb21waWxlciAqbWlnaHQqIGlubGluZSBpdC4gQnV0IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYG5iZF9wZW5kaW5nX2NtZF93b3JrYCBhbmQgYG5iZF9oYW5kbGVfY21kYC4gQm90aCBhcmUgYWxzbyBxdWl0ZSBsYXJnZSBmdW5jdGlvbnMsIHNvIGl0JiMzOTtzIHByb2JhYmx5IG5vdCBpbmxpbmVkLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBzaXplIHRvIGJlIGNlcnRhaW4uIFllcywgYG5iZF9zZW5kX2NtZGAgaXMgMTUwIGxpbmVzLCBzbyBsaWtlbHkgbm90IGlubGluZWQuCgpPa2F5LCBJIHdhcyBsZWFuaW5nIHRvd2FyZHMgaW5jbHVkaW5nIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBhbmQgYG5iZF9pb2N0bGAuCgpCdXQgdGhlbiBJIHJlLXJlYWQgdGhlIGluc3RydWN0aW9uczogJiMzNDtQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuJiMzNDsKCkFoLCByaWdodC4gU2luY2UgYWxsIHRoZXNlIGZ1bmN0aW9ucyBJIGxpc3RlZCAqYXJlKiBzdGF0aWMsIHRoZXkgYmVjb21lIHRoZSBlbnRyeSBwb2ludHMuIFNvLCBJIHdpbGwganVzdCBsaXN0IHRoZW0gYXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBzaW5jZSB0aGV5IGFyZSB0aGUgZW50cnkgcG9pbnRzLgoKTm93LCBsZXQmIzM5O3MgY2hlY2sgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgQkxLX0RFVl9OQkRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9OQkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTE5ND1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTUtXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk2OmNvbmZpZyBCTEtfREVWX05CRFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEJsb2NrIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyBjZXJ0YWluIGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBNeSBtZW50YWwgY2hlY2tsaXN0IHNheXMsICYjMzQ7V2hlcmUgd291bGQgSSBmaW5kIHRoZSAqY29yZSogY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBibG9jayBkcml2ZXJzPyYjMzQ7IE15IGV4cGVyaWVuY2UgaW1tZWRpYXRlbHkgc3RlZXJzIG1lIHRvd2FyZHMgdGhlIGBLY29uZmlnYCBmaWxlcywgd2hpY2ggaGFuZGxlIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjaG9pY2VzIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBkcml2ZXJzIGRpcmVjdG9yeS4gSSBrbm93IHRoYXQgYGRyaXZlcnMvYmxvY2svYCBpcyBhIGxpa2VseSBzcG90IGFuZCB0aGUgS2NvbmZpZyB0aGVyZSB3aWxsIGNvbnRhaW4gd2hhdCBJIG5lZWQuIExldCBtZSBnbyBzdHJhaWdodCB0byBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBhbmQgem9vbSBpbiBhcm91bmQgbGluZSAxOTY7IHRoYXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZXhwbG9yZS4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBmaW5kIHNvbWV0aGluZyByZWxldmFudCB0byB3aGF0IEkmIzM5O20gbG9va2luZyBhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE5MDpcdFx0ICBUaGUgaGlzdG9yaWMgZGVmYXVsdCBpcyA4LiBJZiBhIGxhdGUgMjAxMSB2ZXJzaW9uIG9mIGxvc2V0dXAoOClcbiAxOTE6XHRcdCAgaXMgdXNlZCwgaXQgY2FuIGJlIHNldCB0byAwLCBzaW5jZSBuZWVkZWQgbG9vcCBkZXZpY2VzIGNhbiBiZVxuIDE5MjpcdFx0ICBkeW5hbWljYWxseSBhbGxvY2F0ZWQgd2l0aCB0aGUgL2Rldi9sb29wLWNvbnRyb2wgaW50ZXJmYWNlLlxuIDE5MzpcdFxuIDE5NDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZ1wmIzM0O1xuIDE5NTpcdFxuIDE5NjpcdGNvbmZpZyBCTEtfREVWX05CRFxuIDE5NzpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBibG9jayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuIDE5ODpcdFx0ZGVwZW5kcyBvbiBORVRcbiAxOTk6XHRcdGhlbHBcbiAyMDA6XHRcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGFsbG93IHlvdXIgY29tcHV0ZXIgdG8gYmUgYSBjbGllbnQgZm9yIG5ldHdvcmtcbiAyMDE6XHRcdCAgYmxvY2sgZGV2aWNlcywgaS5lLiBpdCB3aWxsIGJlIGFibGUgdG8gdXNlIGJsb2NrIGRldmljZXMgZXhwb3J0ZWQgYnlcbiAyMDI6XHRcdCAgc2VydmVycyAobW91bnQgZmlsZSBzeXN0ZW1zIG9uIHRoZW0gZXRjLikuIENvbW11bmljYXRpb24gYmV0d2VlblxuIDIwMzpcdFx0ICBjbGllbnQgYW5kIHNlcnZlciB3b3JrcyBvdmVyIFRDUC9JUCBuZXR3b3JraW5nLCBidXQgdG8gdGhlIGNsaWVudFxuIDIwNDpcdFx0ICBwcm9ncmFtIHRoaXMgaXMgaGlkZGVuOiBpdCBsb29rcyBsaWtlIGEgcmVndWxhciBsb2NhbCBmaWxlIGFjY2VzcyB0b1xuIDIwNTpcdFx0ICBhIGJsb2NrIGRldmljZSBzcGVjaWFsIGZpbGUgc3VjaCBhcyAvZGV2L25kMC5cbiAyMDY6XHRcbiAyMDc6XHRcdCAgTmV0d29yayBibG9jayBkZXZpY2VzIGFsc28gYWxsb3dzIHlvdSB0byBydW4gYSBibG9jay1kZXZpY2UgaW5cbiAyMDg6XHRcdCAgdXNlcmxhbmQgKG1ha2luZyBzZXJ2ZXIgYW5kIGNsaWVudCBwaHlzaWNhbGx5IHRoZSBzYW1lIGNvbXB1dGVyLFxuIDIwOTpcdFx0ICBjb21tdW5pY2F0aW5nIHVzaW5nIHRoZSBsb29wYmFjayBuZXR3b3JrIGRldmljZSkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NDA1CgkJCQkJCQlvdXRwdXQ6IDE0NgoJCQkJCQkJdGhvdWdodHM6IDMzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgTkJEIERyaXZlcioqCgpPa2F5LCBoZXJlJiMzOTtzIGhvdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMuIFRoaXMgcGF0Y2ggaGluZ2VzIG9uIHRoZSBgTkVUYCBkZXBlbmRlbmN5LCBidXQgcmVhbGx5LCB0aGUgb25seSAqbmVjZXNzYXJ5KiBjb25maWcgSSBzZWUgaXMgYEJMS19ERVZfTkJEYC4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoYXQgYXNzdW1wdGlvbiBqdXN0IHRvIGJlIHN1cmUuCgpSaWdodCwgdGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbmJkLmNgLCBhbmQgYEJMS19ERVZfTkJEYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnLgoKU28sIGxldCBtZSBzdW1tYXJpemUgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBUaGlzIGlzIGRlZmluaXRlbHkgYFdvcnRoRnV6emluZ2AsIGJlY2F1c2UgaXQmIzM5O3MgYWRkcmVzc2luZyBpc3N1ZXMgd2l0aCBwYXJ0aWFsIHJlcXVlc3RzIGFuZCBkZWFkIHNvY2tldHMg4oCTIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBOQkQgZHJpdmVyJiMzOTtzIGludGVyYWN0aW9uIHdpdGggdXNlcnNwYWNlIHZpYSBpb2N0bHMgYW5kIE5ldGxpbmsuCgpNeSBpbml0aWFsIGZvY3VzIHN5bWJvbHMgYXJlIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBgbmJkX2lvY3RsYCwgYW5kIGBuYmRfcGVuZGluZ19jbWRfd29ya2AuIEkgaGF2ZSBgQkxLX0RFVl9OQkRgIGVuYWJsZWQgZm9yIHRoZSBmdXp6ZXIuCgpJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIHdpdGggbXkgZm9jdXMuIFRoZSB3b3JrcXVldWUgZnVuY3Rpb24sIGBuYmRfcGVuZGluZ19jbWRfd29ya2AsIGlzIGEgZ29vZCB0YXJnZXQgc2luY2UgaXQmIzM5O3Mgd2hlcmUgdGhlIG1vZGlmaWVkIGNvZGUgcmVzaWRlcy4gYG5iZF9tYXJrX25zb2NrX2RlYWRgIGlzIGFsc28gbW9kaWZpZWQsIGJ1dCBpdCYjMzk7cyBhIHNtYWxsIHN0YXRpYyBmdW5jdGlvbiB0aGF0IG1heSBiZSBpbmxpbmVkLiBJIGFtIGdvaW5nIHRvIG9taXQgaXQgZnJvbSBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuCgpOb3csIGxldCBtZSBpbnZlc3RpZ2F0ZSBgbmJkX3NlbmRfY21kYC4gQWgsIGl0JiMzOTtzIHN0YXRpYy4gQnV0IGl0JiMzOTtzIHJlYXNvbmFibHkgbGFyZ2UsIHNvIGxpa2VseSBub3QgaW5saW5lZC4gSSYjMzk7bGwgc3RpY2sgd2l0aCBpbmNsdWRpbmcgaXQgaW4gbXkgZm9jdXMgbGlzdC4KClRodXMsIG15IGZvY3VzIHN5bWJvbHMgYXJlIG5vdyBgbmJkX3NlbmRfY21kYCwgYG5iZF9wZW5kaW5nX2NtZF93b3JrYCwgYW5kIGBuYmRfcmVjb25uZWN0X3NvY2tldGAuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05CRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25iZF9zZW5kX2NtZCYjMzQ7LAogICAgJiMzNDtuYmRfcGVuZGluZ19jbWRfd29yayYjMzQ7LAogICAgJiMzNDtuYmRfcmVjb25uZWN0X3NvY2tldCYjMzQ7LAogICAgJiMzNDtuYmRfZ2VubF9yZWNvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtuYmRfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5ldHdvcmsgQmxvY2sgRGV2aWNlIChOQkQpIGRyaXZlciB0byBmaXggaGFuZGxpbmcgb2YgcGFydGlhbGx5IHRyYW5zbWl0dGVkIHJlcXVlc3RzIGFuZCBkZWFkIHNvY2tldHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlIE5CRCBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGlvY3RscyBhbmQgbmV0bGluaywgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTkJEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmJkX3NlbmRfY21kJiMzNDssCiAgICAmIzM0O25iZF9wZW5kaW5nX2NtZF93b3JrJiMzNDssCiAgICAmIzM0O25iZF9yZWNvbm5lY3Rfc29ja2V0JiMzNDssCiAgICAmIzM0O25iZF9nZW5sX3JlY29uZmlndXJlJiMzNDssCiAgICAmIzM0O25iZF9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgKE5CRCkgZHJpdmVyIHRvIGZpeCBoYW5kbGluZyBvZiBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkJEIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGxzIGFuZCBuZXRsaW5rLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI0OjE4LjQzMjM5MTIzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDg4ODkwMjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTkJEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmJkX3NlbmRfY21kXCIsXG4gICAgXCJuYmRfcGVuZGluZ19jbWRfd29ya1wiLFxuICAgIFwibmJkX3JlY29ubmVjdF9zb2NrZXRcIixcbiAgICBcIm5iZF9nZW5sX3JlY29uZmlndXJlXCIsXG4gICAgXCJuYmRfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgKE5CRCkgZHJpdmVyIHRvIGZpeCBoYW5kbGluZyBvZiBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkJEIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGxzIGFuZCBuZXRsaW5rLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6MTguNDMyMzk4OTM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTE1MTE0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNjA4ZTk3MWUyMTg1YmQzNGZhMDNmM2UxOGIxMzkwNGY0OTc4OTk2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTg6MjQ6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9uYmQuYyBiL2RyaXZlcnMvYmxvY2svbmJkLmNcXG5pbmRleCA4ZjEwNzYyZTkwZWY3Li43YTQ2MmE2MjYzMDZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbmJkLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXFxuQEAgLTMyNyw4ICszMjcsOCBAQCBzdGF0aWMgdm9pZCBuYmRfbWFya19uc29ja19kZWFkKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCBuYmRfc29jayAqbnNvY2ssXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRuc29jay1cXHUwMDNlZGVhZCA9IHRydWU7XFxuLVxcdG5zb2NrLVxcdTAwM2VwZW5kaW5nID0gTlVMTDtcXG4tXFx0bnNvY2stXFx1MDAzZXNlbnQgPSAwO1xcbitcXHRpZiAoIW5zb2NrLVxcdTAwM2VwZW5kaW5nKVxcbitcXHRcXHRuc29jay1cXHUwMDNlc2VudCA9IDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbmJkX3NldF9zaXplKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIGxvZmZfdCBieXRlc2l6ZSwgbG9mZl90IGJsa3NpemUpXFxuQEAgLTc5Myw4ICs3OTMsMTAgQEAgc3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCxcXG4gXFx0ICpcXG4gXFx0ICogV2UgbXVzdCBydW4gZnJvbSBwZW5kaW5nIHdvcmsgZnVuY3Rpb24uXFxuIFxcdCAqICovXFxuLVxcdGlmICh0ZXN0X2JpdChOQkRfQ01EX1BBUlRJQUxfU0VORCwgXFx1MDAyNmNtZC1cXHUwMDNlZmxhZ3MpKVxcbitcXHRpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFxcdTAwMjZjbWQtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRcXHRuYmRfbWFya19uc29ja19kZWFkKG5iZCwgbnNvY2ssIDEpO1xcbiBcXHRcXHRyZXR1cm4gQkxLX1NUU19PSztcXG4rXFx0fVxcbiBcXG4gXFx0LyogcmV0cnkgb24gYSBkaWZmZXJlbnQgc29ja2V0ICovXFxuIFxcdGRldl9lcnJfcmF0ZWxpbWl0ZWQoZGlza190b19kZXYobmJkLVxcdTAwM2VkaXNrKSxcXG5AQCAtODI2LDggKzgyOCwxOCBAQCBzdGF0aWMgdm9pZCBuYmRfcGVuZGluZ19jbWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdGlmICghbnNvY2stXFx1MDAzZXBlbmRpbmcpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4rXFx0XFx0aWYgKG5zb2NrLVxcdTAwM2VkZWFkKVxcbitcXHRcXHRcXHRnb3RvIGRlYWQ7XFxuK1xcbiBcXHRcXHQvKiBkb24ndCBib3RoZXIgdGltZW91dCBoYW5kbGVyIGZvciBwYXJ0aWFsIHNlbmRpbmcgKi9cXG4gXFx0XFx0aWYgKFJFQURfT05DRShqaWZmaWVzKSArIG1zZWNzX3RvX2ppZmZpZXMod2FpdF9tcykgXFx1MDAzZT0gZGVhZGxpbmUpIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogVGhlIHNvY2tldCBjb250YWlucyBhIHBhcnRpYWxseSB0cmFuc21pdHRlZCByZXF1ZXN0XFxuK1xcdFxcdFxcdCAqIGFuZCBjYW5ub3QgYmUgcmV1c2VkIGZvciBhbm90aGVyIE5CRCByZXF1ZXN0LlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0bmJkX21hcmtfbnNvY2tfZGVhZChuYmQsIG5zb2NrLCAxKTtcXG4rXFx0XFx0XFx0bnNvY2stXFx1MDAzZXBlbmRpbmcgPSBOVUxMO1xcbitcXHRcXHRcXHRuc29jay1cXHUwMDNlc2VudCA9IDA7XFxuIFxcdFxcdFxcdGNtZC1cXHUwMDNlc3RhdHVzID0gQkxLX1NUU19JT0VSUjtcXG4gXFx0XFx0XFx0YmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocmVxKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTg0MCw2ICs4NTIsMTggQEAgc3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBvdXQ6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y21kLVxcdTAwM2Vsb2NrKTtcXG4gXFx0bmJkX2NvbmZpZ19wdXQobmJkKTtcXG4rXFx0cmV0dXJuO1xcbitcXG4rXFx0LyogQ29tcGxldGUgdGhlIHJlcXVlc3QgaGVyZTsgbmJkX2NsZWFyX3JlcSgpIHdpbGwgbm90IGhhbmRsZSBpdC4gKi9cXG4rZGVhZDpcXG4rXFx0bnNvY2stXFx1MDAzZXBlbmRpbmcgPSBOVUxMO1xcbitcXHRuc29jay1cXHUwMDNlc2VudCA9IDA7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2bnNvY2stXFx1MDAzZXR4X2xvY2spO1xcbitcXHRjbGVhcl9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFxcdTAwMjZjbWQtXFx1MDAzZWZsYWdzKTtcXG4rXFx0Y21kLVxcdTAwM2VzdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmNtZC1cXHUwMDNlbG9jayk7XFxuK1xcdGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0KHJlcSk7XFxuK1xcdG5iZF9jb25maWdfcHV0KG5iZCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbmJkX3JlYWRfcmVwbHkoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IHNvY2tldCAqc29jayxcXG5AQCAtMTM3Niw2ICsxNDAwLDEwIEBAIHN0YXRpYyBpbnQgbmJkX3JlY29ubmVjdF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuIFxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNvY2stXFx1MDAzZXR4X2xvY2spO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAobnNvY2stXFx1MDAzZXBlbmRpbmcpIHtcXG4rXFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuc29jay1cXHUwMDNldHhfbG9jayk7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuIFxcdFxcdHNrX3NldF9tZW1hbGxvYyhzb2NrLVxcdTAwM2Vzayk7XFxuIFxcdFxcdGlmIChuYmQtXFx1MDAzZXRhZ19zZXQudGltZW91dClcXG4gXFx0XFx0XFx0c29jay1cXHUwMDNlc2stXFx1MDAzZXNrX3NuZHRpbWVvID0gbmJkLVxcdTAwM2V0YWdfc2V0LnRpbWVvdXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI0OjE4Ljk0NDg2NTk1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc3OTc2NDAzMjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTkJEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmJkX3NlbmRfY21kXCIsXG4gICAgXCJuYmRfcGVuZGluZ19jbWRfd29ya1wiLFxuICAgIFwibmJkX3JlY29ubmVjdF9zb2NrZXRcIixcbiAgICBcIm5iZF9nZW5sX3JlY29uZmlndXJlXCIsXG4gICAgXCJuYmRfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgKE5CRCkgZHJpdmVyIHRvIGZpeCBoYW5kbGluZyBvZiBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkJEIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGxzIGFuZCBuZXRsaW5rLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjYwOGU5NzFlMjE4NWJkMzRmYTAzZjNlMThiMTM5MDRmNDk3ODk5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTg6MjQ6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9uYmQuY1xuaW5kZXggOGYxMDc2MmU5MGVmNy4uN2E0NjJhNjI2MzA2YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbmJkLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmNcbkBAIC0zMjcsOCArMzI3LDggQEAgc3RhdGljIHZvaWQgbmJkX21hcmtfbnNvY2tfZGVhZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX3NvY2sgKm5zb2NrLFxuIFx0XHR9XG4gXHR9XG4gXHRuc29jay1cdTAwM2VkZWFkID0gdHJ1ZTtcbi1cdG5zb2NrLVx1MDAzZXBlbmRpbmcgPSBOVUxMO1xuLVx0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4rXHRpZiAoIW5zb2NrLVx1MDAzZXBlbmRpbmcpXG4rXHRcdG5zb2NrLVx1MDAzZXNlbnQgPSAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG5iZF9zZXRfc2l6ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBsb2ZmX3QgYnl0ZXNpemUsIGxvZmZfdCBibGtzaXplKVxuQEAgLTc5Myw4ICs3OTMsMTAgQEAgc3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCxcbiBcdCAqXG4gXHQgKiBXZSBtdXN0IHJ1biBmcm9tIHBlbmRpbmcgd29yayBmdW5jdGlvbi5cbiBcdCAqICovXG4tXHRpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFx1MDAyNmNtZC1cdTAwM2VmbGFncykpXG4rXHRpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFx1MDAyNmNtZC1cdTAwM2VmbGFncykpIHtcbitcdFx0bmJkX21hcmtfbnNvY2tfZGVhZChuYmQsIG5zb2NrLCAxKTtcbiBcdFx0cmV0dXJuIEJMS19TVFNfT0s7XG4rXHR9XG4gXG4gXHQvKiByZXRyeSBvbiBhIGRpZmZlcmVudCBzb2NrZXQgKi9cbiBcdGRldl9lcnJfcmF0ZWxpbWl0ZWQoZGlza190b19kZXYobmJkLVx1MDAzZWRpc2spLFxuQEAgLTgyNiw4ICs4MjgsMTggQEAgc3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRpZiAoIW5zb2NrLVx1MDAzZXBlbmRpbmcpXG4gXHRcdFx0YnJlYWs7XG4gXG4rXHRcdGlmIChuc29jay1cdTAwM2VkZWFkKVxuK1x0XHRcdGdvdG8gZGVhZDtcbitcbiBcdFx0LyogZG9uJ3QgYm90aGVyIHRpbWVvdXQgaGFuZGxlciBmb3IgcGFydGlhbCBzZW5kaW5nICovXG4gXHRcdGlmIChSRUFEX09OQ0UoamlmZmllcykgKyBtc2Vjc190b19qaWZmaWVzKHdhaXRfbXMpIFx1MDAzZT0gZGVhZGxpbmUpIHtcbitcdFx0XHQvKlxuK1x0XHRcdCAqIFRoZSBzb2NrZXQgY29udGFpbnMgYSBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdFxuK1x0XHRcdCAqIGFuZCBjYW5ub3QgYmUgcmV1c2VkIGZvciBhbm90aGVyIE5CRCByZXF1ZXN0LlxuK1x0XHRcdCAqL1xuK1x0XHRcdG5iZF9tYXJrX25zb2NrX2RlYWQobmJkLCBuc29jaywgMSk7XG4rXHRcdFx0bnNvY2stXHUwMDNlcGVuZGluZyA9IE5VTEw7XG4rXHRcdFx0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4gXHRcdFx0Y21kLVx1MDAzZXN0YXR1cyA9IEJMS19TVFNfSU9FUlI7XG4gXHRcdFx0YmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocmVxKTtcbiBcdFx0XHRicmVhaztcbkBAIC04NDAsNiArODUyLDE4IEBAIHN0YXRpYyB2b2lkIG5iZF9wZW5kaW5nX2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBvdXQ6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y21kLVx1MDAzZWxvY2spO1xuIFx0bmJkX2NvbmZpZ19wdXQobmJkKTtcbitcdHJldHVybjtcbitcbitcdC8qIENvbXBsZXRlIHRoZSByZXF1ZXN0IGhlcmU7IG5iZF9jbGVhcl9yZXEoKSB3aWxsIG5vdCBoYW5kbGUgaXQuICovXG4rZGVhZDpcbitcdG5zb2NrLVx1MDAzZXBlbmRpbmcgPSBOVUxMO1xuK1x0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2bnNvY2stXHUwMDNldHhfbG9jayk7XG4rXHRjbGVhcl9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFx1MDAyNmNtZC1cdTAwM2VmbGFncyk7XG4rXHRjbWQtXHUwMDNlc3RhdHVzID0gQkxLX1NUU19JT0VSUjtcbitcdG11dGV4X3VubG9jayhcdTAwMjZjbWQtXHUwMDNlbG9jayk7XG4rXHRibGtfbXFfY29tcGxldGVfcmVxdWVzdChyZXEpO1xuK1x0bmJkX2NvbmZpZ19wdXQobmJkKTtcbiB9XG4gXG4gc3RhdGljIGludCBuYmRfcmVhZF9yZXBseShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuQEAgLTEzNzYsNiArMTQwMCwxMCBAQCBzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuIFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc29jay1cdTAwM2V0eF9sb2NrKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuK1x0XHRpZiAobnNvY2stXHUwMDNlcGVuZGluZykge1xuK1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc29jay1cdTAwM2V0eF9sb2NrKTtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuIFx0XHRza19zZXRfbWVtYWxsb2Moc29jay1cdTAwM2Vzayk7XG4gXHRcdGlmIChuYmQtXHUwMDNldGFnX3NldC50aW1lb3V0KVxuIFx0XHRcdHNvY2stXHUwMDNlc2stXHUwMDNlc2tfc25kdGltZW8gPSBuYmQtXHUwMDNldGFnX3NldC50aW1lb3V0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6MTguOTQ0ODY3ODYyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4NzI2ODc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5CRCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGRyaXZlcnMvYmxvY2svbmJkLmNgLCBkZWFsaW5nIHdpdGggcGFydGlhbCBzZW5kcyBhbmQgZGVhZCBzb2NrZXRzIGluIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBOQkQuLi4gaXMgdGhpcyBmdXp6YWJsZT9cIiBTaW5jZSBJJ20gbG9va2luZyBhdCBgbmJkX21hcmtfbnNvY2tfZGVhZGAsIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCwgYWxsIG9mIHRoZXNlIHNlZW0gbGlrZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW1wYWN0aW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgbmV0d29yayBpbnRlcmFjdGlvbi4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRvci4gQmxvY2sgZGV2aWNlIGRyaXZlcnMgYXJlIHVzdWFsbHkgYWNjZXNzaWJsZSB2aWEgaW9jdGxzIG9yIG5ldGxpbmssIHdoaWNoIG9wZW5zIHVwIGludGVyZXN0aW5nIGF2ZW51ZXMgZm9yIGNyYWZ0aW5nIGZ1enplZCBpbnB1dHMuXG5cbk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEl0J2xsIHByb2JhYmx5IGJlIGluIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIG9yIHNvbWV0aGluZyBlcXVhbGx5IG9idmlvdXMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGJlIGNydWNpYWwgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nIOKAkyBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgaG93IHRvIGJlc3Qgc2V0IHVwIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQgZm9yIHRoZSBmdXp6ZXIuIE15IGZvY3VzIHdpbGwgYmUgb24gdGhlIGludGVyYWN0aW9ucyB3aXRoIHRoZXNlIGZ1bmN0aW9ucyAtIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gQW55IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIGNvbm5lY3Rpb24gYW5kIGNvbW1hbmQgaGFuZGxpbmcgc2hvdWxkIGJlIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQgbG9va2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2NSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI0OjI0LjUzMjE0MDc0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDU2ODYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OQkRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE5ND1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5Njpjb25maWcgQkxLX0RFVl9OQkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTk3LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDoyNC42MDY3MTcwNjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDk4NTYwMjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkJEIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgQkxLX0RFVl9OQkRgLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gc2VlIHdoZXJlIHRoZSBjaGFuZ2VzIGFyZSwgYW5kIGl0IGxvb2tzIGxpa2UgaXTigJlzOiBgbmJkX21hcmtfbnNvY2tfZGVhZGAsIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC5cblxuUmlnaHQgb2ZmIHRoZSBiYXQsIGBuYmRfc2VuZF9jbWRgIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGFyZSBzY3JlYW1pbmcgXCJGb2N1c1N5bWJvbHNcIiB0byBtZS4gVGhleSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZGlyZWN0IGZ1enppbmcgYXR0ZW50aW9uLiBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCBtaWdodCBub3QgYmUgKmRpcmVjdGx5KiBmdXp6YWJsZSwgYnV0IGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgdGh1cyBhIHBvdGVudGlhbCB0YXJnZXQgZG93biB0aGUgbGluZS4gRmluYWxseSwgYG5iZF9tYXJrX25zb2NrX2RlYWRgIGlzIHN0YXRpYywgd2hpY2ggcmFpc2VzIHRoZSBwb3NzaWJpbGl0eSBvZiBpbmxpbmluZyDigJMgd29ydGggaW52ZXN0aWdhdGluZy5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBgbmJkX3NlbmRfY21kYCBpcyBhY3R1YWxseSBzdGF0aWMuIEJlc3QgdG8gdmVyaWZ5IHRoYXQgdXBmcm9udC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDoyOS4xMDUyODAwMjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIwNzYzNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmJkX3NlbmRfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz02MjU9c3RhdGljIHZvaWQgbmJkX3NjaGVkX3BlbmRpbmdfd29yayhzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy02NDQtICovXFxuZHJpdmVycy9ibG9jay9uYmQuYzo2NDU6c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTY0Ni1cXHRcXHRcXHRcXHQgaW50IGluZGV4KVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz04MTA9c3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy04MjYtXFx0d2hpbGUgKHRydWUpIHtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjgyNzpcXHRcXHRuYmRfc2VuZF9jbWQobmJkLCBjbWQsIGNtZC1cXHUwMDNlaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtODI4LVxcdFxcdGlmICghbnNvY2stXFx1MDAzZXBlbmRpbmcpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTExNDE9c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfaGFuZGxlX2NtZChzdHJ1Y3QgbmJkX2NtZCAqY21kLCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDAtXFx0fVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTIwMTpcXHRyZXQgPSBuYmRfc2VuZF9jbWQobmJkLCBjbWQsIGluZGV4KTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDItb3V0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDoyOS4xODczNjExNTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY4MTI2OTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhhdCBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gYG5iZF9zZW5kX2NtZGAqKlxuXG5Pa2F5LCBzbyBgbmJkX3NlbmRfY21kYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgbWVhbmluZyBpdCdzIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBjb21waWxhdGlvbiB1bml0LiBUaGF0IHN1Z2dlc3RzIGl0J3MgYSBjcml0aWNhbCwgaW50ZXJuYWwgZnVuY3Rpb24sIHByb2JhYmx5IGZvciBoYW5kbGluZyB0aGUgbG93LWxldmVsIGNvbW1hbmQgc2VuZGluZyBsb2dpYy4gTGV0J3Mgc2VlIGhvdyBpdCdzIHVzZWQuIFJpZ2h0LCBpdCdzIGNhbGxlZCBieSBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGFuZCBgbmJkX2hhbmRsZV9jbWRgLiBgbmJkX2hhbmRsZV9jbWRgIGlzIHRoZW4gY2FsbGVkIGJ5IGBuYmRfcXVldWVfcnFgLiBTbywgYG5iZF9xdWV1ZV9ycWAgbGlrZWx5IGluaXRpYXRlcyB0aGUgcHJvY2VzcywgcGFzc2luZyBkb3duIHRoZSBjb21tYW5kIHRvIGBuYmRfaGFuZGxlX2NtZGAsIHdoaWNoIHVsdGltYXRlbHksIHRocm91Z2ggd2hhdGV2ZXIgbG9naWMsIGVuZHMgdXAgY2FsbGluZyB0aGF0IGNyaXRpY2FsIGBuYmRfc2VuZF9jbWRgIGZ1bmN0aW9uLiBUaGlzIHNlZW1zIGxpa2UgYSB0eXBpY2FsIGNvbW1hbmQgcHJvY2Vzc2luZyBwaXBlbGluZS4gYG5iZF9xdWV1ZV9ycWAgcHJvYmFibHkgcHV0cyB0aGUgcmVxdWVzdCBvbiBhIHF1ZXVlLCBgbmJkX2hhbmRsZV9jbWRgIHByb2Nlc3NlcyB0aGUgcmVxdWVzdCBhbmQgdGhlbiBgbmJkX3NlbmRfY21kYCBhY3R1YWxseSBzZW5kcyBpdC4gR29vZCB0byBrbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjA4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6MzMuNDU1NDkxOTc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0ODc5Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5iZF9xdWV1ZV9ycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MTE2PXN0cnVjdCBuYmRfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM4LS8qXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMzk6ICogVGhpcyBmbGFnIHdpbGwgYmUgc2V0IGlmIG5iZF9xdWV1ZV9ycSgpIHN1Y2NlZWQsIGFuZCB3aWxsIGJlIGNoZWNrZWQgYW5kXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDAtICogY2xlYXJlZCBpbiBjb21wbGV0aW9uLiBCb3RoIHNldHRpbmcgYW5kIGNsZWFyaW5nIG9mIHRoZSBmbGFnIGFyZSBwcm90ZWN0ZWRcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9MTE0MT1zdGF0aWMgYmxrX3N0YXR1c190IG5iZF9oYW5kbGVfY21kKHN0cnVjdCBuYmRfY21kICpjbWQsIGludCBpbmRleClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTIwNy1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEyMDg6c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfcXVldWVfcnEoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMjA5LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBibGtfbXFfcXVldWVfZGF0YSAqYmQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE5NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBibGtfbXFfb3BzIG5iZF9tcV9vcHMgPSB7XFxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTY2OlxcdC5xdWV1ZV9ycVxcdD0gbmJkX3F1ZXVlX3JxLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk2Ny1cXHQuY29tcGxldGVcXHQ9IG5iZF9jb21wbGV0ZV9ycSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6MzMuNTMwMzc2NzAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODExNzY0NzcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTkJEIFF1ZXVlIGFuZCBSZWNvbm5lY3Rpb24gTG9naWMqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBncm91bmQgbXlzZWxmIGluIHRoZSBjb2RlLiBgbmJkX3F1ZXVlX3JxYCwgdGhhdCdzIHRoZSBicmVhZCBhbmQgYnV0dGVyLCB0aGUgd29ya2hvcnNlIG9mIHRoZSBibG9jayBsYXllciBxdWV1ZSBmdW5jdGlvbiBmb3IgdGhlIE5CRCBkcml2ZXIuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgd2hlcmUgSSdkIGV4cGVjdCB0aGUgYnVsayBvZiBJL08gcmVxdWVzdHMgdG8gYmUgaGFuZGxlZCwgYXMgdGhleSBnZXQgc3VibWl0dGVkLlxuXG5Ob3csIGBuYmRfcmVjb25uZWN0X3NvY2tldGAuLi4gdGhhdCBvbmUgcmluZ3MgYSBiZWxsLiBJdCdzIHJlbGF0ZWQgdG8gaGFuZGxpbmcgc29ja2V0IHJlY29ubmVjdGlvbnMsIHdoaWNoIGltcGxpZXMgZGVhbGluZyB3aXRoIHBvdGVudGlhbCBkaXNydXB0aW9ucyBpbiB0aGUgbmV0d29yayBjb25uZWN0aW9uIHRvIHRoZSBOQkQgc2VydmVyLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyAqd2hlbiogdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBpbnZva2VkLiBJcyBpdCBqdXN0IGhhcHBlbmluZyBpbiBgbmJkX2lvY3RsYCwgb3IgaXMgdGhlcmUgc29tZXRoaW5nIGVsc2UgYXQgcGxheT8gSXQncyB0aW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBuZXRsaW5rIGFsc28gcGxheXMgYSBwYXJ0IGluIGNhbGxpbmcgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCwgc2luY2UgbmV0bGluaydzIHJvbGUgaW4gdGhlIGRyaXZlciBjb3VsZCBiZSBpbmZsdWVuY2luZyB0aGUgc2l0dWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODc1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6NDEuNjQ4MDI4MjUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTc2MjQ1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuYmRfcmVjb25uZWN0X3NvY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MTMwMT1zdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzczLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTM3NDpzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTIzNzU9c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNDk1LVxcdFxcdFxcdGZkID0gKGludClubGFfZ2V0X3UzMihzb2Nrc1tOQkRfU09DS19GRF0pO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjQ5NjpcXHRcXHRcXHRyZXQgPSBuYmRfcmVjb25uZWN0X3NvY2tldChuYmQsIGZkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI0OTctXFx0XFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo0MS43Mjc4MDE2NDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MDY5NDE3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gdGhlIFJlY29ubmVjdGlvbiBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGlzIGJlaW5nIHRyaWdnZXJlZCBmcm9tIGEgY291cGxlIG9mIGRpZmZlcmVudCBwbGFjZXM6IGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAsIHdoaWNoIGlzIG5ldGxpbmstYmFzZWQsIGFuZCBhbHNvIHRocm91Z2ggYG5iZF9pb2N0bGAuIEludGVyZXN0aW5nLiBUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzaXR1YXRpb24sIG15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgYG5iZF9pb2N0bGAgcGF0aCBmaXJzdC4gSXQncyBvZnRlbiBlYXNpZXIgdG8gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgd2l0aCBpb2N0bHMgYmVjYXVzZSBpdOKAmXMgdXN1YWxseSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZC4gTGV0J3Mgc2VlIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUgYW5kIGhvdyB0aGF04oCZcyBhZmZlY3RpbmcgdGhlIHJlY29ubmVjdGlvbiBwcm9jZXNzLiBUaGlzIG1pZ2h0IGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgdW5kZXJseWluZyBpc3N1ZSwgYW5kIHRoZW4gSSBjYW4gY29tcGFyZSBpdCB0byB0aGUgbmV0bGluayBzaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDQxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6NDUuMDA4NDk5MzA1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODc0Njk1OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmJkX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz0xNjQ4PXN0YXRpYyB2b2lkIG5iZF9zZXRfY21kX3RpbWVvdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdTY0IHRpbWVvdXQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NTctLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBjb25maWdfbG9jayBoZWxkICovXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjU4OnN0YXRpYyBpbnQgX19uYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IG5iZF9kZXZpY2UgKm5iZCxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NTktXFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzA0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTcwNTpzdGF0aWMgaW50IG5iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzA2LVxcdFxcdCAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MjctXFx0ICAgIChjbWQgPT0gTkJEX0RJU0NPTk5FQ1QgfHwgY21kID09IE5CRF9DTEVBUl9TT0NLKSlcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3Mjg6XFx0XFx0ZXJyb3IgPSBfX25iZF9pb2N0bChiZGV2LCBuYmQsIGNtZCwgYXJnKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MjktXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xODMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgbmJkX2ZvcHMgPVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODM2LVxcdC5yZWxlYXNlID1cXHRuYmRfcmVsZWFzZSxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4Mzc6XFx0LmlvY3RsID1cXHRuYmRfaW9jdGwsXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxODM4OlxcdC5jb21wYXRfaW9jdGwgPVxcdG5iZF9pb2N0bCxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MzktXFx0LmZyZWVfZGlzayA9XFx0bmJkX2ZyZWVfZGlzayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6NDUuMjk1OTczMDk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDgxMDYxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIElPQ1RMIGFuZCBSZWNvbm5lY3Rpb24gUGF0aCoqXG5cbkhtbSwgaG9sZCBvbiBhIHNlY29uZC4uLiBJJ20gdHJhY2luZyB0aHJvdWdoIHRoaXMga2VybmVsIGNvZGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIE5CRCBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gY2xhcmlmeSBhIGRldGFpbCBpbiB0aGUgY29udHJvbCBmbG93LiBJJ20gbG9va2luZyBhdCB0aGUgYF9fbmJkX2lvY3RsYCBmdW5jdGlvbiwgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGludm9rZXMgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gSXQncyBhIGtleSBpbnRlcmFjdGlvbiBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgSU9DVEwgb3BlcmF0aW9ucywgaW4gYW55IHNjZW5hcmlvLCBsZWFkIHRvIGEgc29ja2V0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiBBcmUgdGhleSB0aWVkIHRvZ2V0aGVyPyBPciBpcyB0aGUgcmVjb25uZWN0aW9uIHRyaWdnZXJlZCB2aWEgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIHBhdGg/IE15IGluaXRpYWwgYXNzdW1wdGlvbiwgYmFzZWQgb24gcHJldmlvdXMgYW5hbHlzaXMsIGlzIHRoYXQgdGhlc2UgdHdvIGFyZSByZWxhdGVkLiBCdXQgSSBoYXZlIHRvIGNvbmZpcm0uIEl0J3MgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcG90ZW50aWFsbHkgdHJhbnNpZW50IG5ldHdvcmsgaXNzdWVzLCBlc3BlY2lhbGx5IGR1cmluZyBJTyBvcGVyYXRpb25zLiBUaGUgYW5zd2VyIGhlcmUgd2lsbCBkaWN0YXRlIGhvdyBJIGNvbnNpZGVyIHRoZSBvdmVyYWxsIHJlc2lsaWVuY3kgbW9kZWwgb2YgdGhlIE5CRCBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo0OS4wMDQwODE0MzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0MDA4NzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5iZF9yZWNvbm5lY3Rfc29ja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz0xMzAxPXN0YXRpYyBpbnQgbmJkX2FkZF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzNzMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMzc0OnN0YXRpYyBpbnQgbmJkX3JlY29ubmVjdF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzc1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9MjM3NT1zdGF0aWMgaW50IG5iZF9nZW5sX3JlY29uZmlndXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI0OTUtXFx0XFx0XFx0ZmQgPSAoaW50KW5sYV9nZXRfdTMyKHNvY2tzW05CRF9TT0NLX0ZEXSk7XFxuZHJpdmVycy9ibG9jay9uYmQuYzoyNDk2OlxcdFxcdFxcdHJldCA9IG5iZF9yZWNvbm5lY3Rfc29ja2V0KG5iZCwgZmQpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5Ny1cXHRcXHRcXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI0OjQ5LjA5ODA5NDM0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM1Mzc2MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBOQkQgU29ja2V0IFJlY29ubmVjdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGZ1bmN0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIG9ubHkgaW52b2tlZCBmcm9tIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAuIFRoYXQncyB0aGUgcHJpbWFyeSBjYWxsc2l0ZTsgZ29vZCB0byBrbm93LiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBzZWUgd2hlcmUgKnRoYXQqIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCBidXQgYWxzbyBsZXQgbWUgcXVpY2tseSBjaGVjayBvdXQgYF9fbmJkX2lvY3RsYCB0byBtYWtlIHN1cmUgaXQgaXNuJ3QgdXNlZCB0aGVyZSBhcyB3ZWxsIGZvciBzb21lIHJlYXNvbi4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcywgYmVjYXVzZSBpb2N0bHMgYXJlIGFsd2F5cyBwcm9uZSB0byBzdXJwcmlzZXMuIEl0J3MgZWFzeSB0byBtaXNzIHNvbWV0aGluZyBpbiB0aGF0IGJpZyBmdW5jdGlvbiwgeW91IGtub3c/IExldCBtZSBqdXN0IGNyb3NzLXJlZmVyZW5jZSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjcwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6NTMuODMzNDc5NTYxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzYwNzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuYmRfcmVjb25uZWN0X3NvY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MTMwMT1zdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzczLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTM3NDpzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTIzNzU9c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNDk1LVxcdFxcdFxcdGZkID0gKGludClubGFfZ2V0X3UzMihzb2Nrc1tOQkRfU09DS19GRF0pO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjQ5NjpcXHRcXHRcXHRyZXQgPSBuYmRfcmVjb25uZWN0X3NvY2tldChuYmQsIGZkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI0OTctXFx0XFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo1My45MDcxMjI3NTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NjIzOTc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2sqKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBUaGUgY29udGV4dCBzdWdnZXN0cyBhIHJlY29uZmlndXJhdGlvbiBldmVudCByZWxhdGVkIHRvIE5CRCwgYW5kIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgZGlyZWN0IGNhbGxlcnMuIE9rYXksIHNvIGl0IGxvb2tzIGxpa2UgaXQncyBvbmx5IGNhbGxlZCBieSBgbmJkX2dlbmxfcmVjb25maWd1cmVgLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGludG8gYG5iZF9nZW5sX3JlY29uZmlndXJlYCBhbmQgc2VlIGhvdyBpdCdzIG9yY2hlc3RyYXRpbmcgdGhlc2UgcmVjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMuIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBsb2dpYyBpcyBsaWtlbHkgcmVzaWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNjQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo1Ny40NjMzNjU0NDhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDg0MDg2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuYmRfZ2VubF9yZWNvbmZpZ3VyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MjM0MD1zdGF0aWMgaW50IG5iZF9nZW5sX2Rpc2Nvbm5lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjM3NC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjIzNzU6c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjM3Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTI1MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBuYmRfY29ubmVjdF9nZW5sX29wc1tdID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNTI3LVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI1Mjg6XFx0XFx0LmRvaXRcXHQ9IG5iZF9nZW5sX3JlY29uZmlndXJlLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjUyOS1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo1Ny41ODQyMTM5NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTg1MzcyNTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE5CRCBEcml2ZXI6IEEgVGhvdWdodCBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIE5ldHdvcmsgQmxvY2sgRGV2aWNlIGRyaXZlciwgYW5kIGl0J3MgbG9va2luZyBwcm9taXNpbmcgYXMgYSB0YXJnZXQuIEl0J3MgYWNjZXNzaWJsZSB2aWEgbmV0bGluaywgd2hpY2ggaXMgZ29vZC4gVGhlIE5CRCBkcml2ZXIgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSBjYW4gZnV6ei5cblxuVGhlIGNvcmUgY2hhbmdlcyBJJ20gaW50ZXJlc3RlZCBpbiBzZWVtIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBgbmJkX21hcmtfbnNvY2tfZGVhZGAsIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gVGhpbmtpbmcgYWJvdXQgZm9jdXMgc3ltYm9scywgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCBhbmQgYG5iZF9nZW5sX3JlY29uZmlndXJlYCBqdW1wIG91dCBhcyBnb29kIHN0YXJ0aW5nIHBvaW50cy5cblxuSSdtIGEgbGl0dGxlIHdhcnkgb2YgYG5iZF9xdWV1ZV9ycWAgYmVjYXVzZSBpdCBzZWVtcyB0byBiZSBhIGhvdC1wYXRoIGZ1bmN0aW9uOyB0aGF0IG1pZ2h0IGNvbXBsaWNhdGUgdGhpbmdzLiBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCAqbWlnaHQqIGJlIGZ1enphYmxlLCBidXQgdGhlbi4uLml0J3Mgc3RhdGljLiBIbW0uIFRoZSBpbnN0cnVjdGlvbnMgZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlcnMsIHdoaWNoIGFyZSB0eXBpY2FsbHkgaW5saW5lZC5cblxuSG93ZXZlciwgYG5iZF9nZW5sX3JlY29uZmlndXJlYCAqaXMqIHN0YXRpYywgYnV0IGl0J3MgYSBuZXRsaW5rIGNhbGxiYWNrLCBzbyBpdCdzIHByb2JhYmx5IG5vdCBpbmxpbmVkLiBMZXQgbWUgZG91YmxlLWNoZWNrLiBZZXMsIGBuYmRfcmVjb25uZWN0X3NvY2tldGAgaXMgYWxzbyBzdGF0aWMuIEFuZCBzbyBpcyBgbmJkX2dlbmxfcmVjb25maWd1cmVgLiBPa2F5LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBndWlkaW5nIG1lIGhlcmUuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGF2YWlsYWJsZSBpbiB0aGlzIGRyaXZlci5cblxuV2FpdCwgbG9va2luZyBhdCBgbmJkX2lvY3RsYCwgaXQncyBzdGF0aWMgdG9vLiBDcmFwLCBtb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gYG5iZC5jYCBhcmUgcHJvYmFibHkgc3RhdGljLCBzaW5jZSBpdCdzIGEgZHJpdmVyLiBTbywgSSBuZWVkIHRvIHJldGhpbmsgdGhpcyBhcHByb2FjaC5cblxuT2theSwgbGV0J3MganVzdCBpbml0aWFsbHkgaW5jbHVkZSBgbmJkX2dlbmxfcmVjb25maWd1cmVgIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLiBCdXQgaGFuZyBvbi4uLiBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGlzIHN0YXRpYywgYnV0IGl0J3MgYSBmYWlybHkgbGFyZ2UgZnVuY3Rpb24uIFByb2JhYmx5IG5vdCBpbmxpbmVkLiBMZXQncyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYyOSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNTowNS4xNjk1ODk2MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjAxNjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIG5iZF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jPTU1PXN0YXRpYyBpbnQgbmJkX3RvdGFsX2RldmljZXMgPSAwO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtNTYtXFxuZHJpdmVycy9ibG9jay9uYmQuYzo1NzpzdHJ1Y3QgbmJkX3NvY2sge1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtNTgtXFx0c3RydWN0IHNvY2tldCAqc29jaztcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9NzU9c3RydWN0IGxpbmtfZGVhZF9hcmdzIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtOTEtXFxuZHJpdmVycy9ibG9jay9uYmQuYzo5MjpzdHJ1Y3QgbmJkX2NvbmZpZyB7XFxuZHJpdmVycy9ibG9jay9uYmQuYy05My1cXHR1MzIgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTExMT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBuYmRfYmxrc2l6ZShzdHJ1Y3QgbmJkX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMTUtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMTY6c3RydWN0IG5iZF9kZXZpY2Uge1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTE3LVxcdHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDg6c3RydWN0IG5iZF9jbWQge1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ5LVxcdHN0cnVjdCBuYmRfZGV2aWNlICpuYmQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjA1LjI0MTc5ODkwOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzY1MTQ2MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKklkZW50aWZ5aW5nIER5bmFtaWMgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBhcmVhcyB3aGVyZSB0aGUgc3lzdGVtICp0cnVseSogYmVoYXZlcyBkeW5hbWljYWxseS4gU3RhdGljIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIHByZWRpY3RhYmxlIGFuZCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBjb2RlJ3Mgc3RydWN0dXJlIGF0IGNvbXBpbGUgdGltZS4gVGhleSBhcmUgdGhlIGZpeGVkIHBvaW50cy4gVGhlcmVmb3JlLCBhbnkgYW5hbHlzaXMgZm9jdXNlZCBvbiBhZGFwdGl2ZSBiZWhhdmlvciwgcnVudGltZSBtb2RpZmljYXRpb25zLCBvciB0aGUgaW1wYWN0cyBvZiBjb25maWd1cmF0aW9uIG9yIGlucHV0IGRhdGEgbmVlZHMgdG8gZXhjbHVkZSB0aG9zZS4gSSBuZWVkIHRvIGZpbHRlciBvdXQgdGhlIG5vaXNlLiBMZXQncyBmb2N1cyBvdXIgYXR0ZW50aW9uIGJ5IHNlYXJjaGluZywgZGlyZWN0bHksIGZvciB0aG9zZSBmdW5jdGlvbnMgdGhhdCBhcmUgKm5vdCogc3RhdGljLiBUaGlzIHdpbGwgcXVpY2tseSByZXZlYWwgdGhlIGFyZWFzIHRoYXQgYXJlIGNhbmRpZGF0ZXMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvZiB0aGUgc3lzdGVtJ3MgZHluYW1pYyBiZWhhdmlvcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NTcsIk91dHB1dFRva2VucyI6NjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNTowOS42MDY5NDgxNzlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNzA4MDM0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjA5LjY5OTY2Njc4M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYxNjQ4MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgYSBgc3RhdGljIGludGAgVmFyaWFibGUgaW4gdGhlIE5CRCBDb250ZXh0KipcblxuSG1tLCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIE5CRCAoTmV0d29yayBCbG9jayBEZXZpY2UpIGltcGxlbWVudGF0aW9uIGhlcmUuIEknbSB3b25kZXJpbmcgaWYgYSBgc3RhdGljIGludCBuYmRfLi4uYCBpcyBhIHBvdGVudGlhbCBzb2x1dGlvbiBmb3Igc29tZXRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgdHJ5aW5nIHRvIGFjaGlldmU/IFdoYXQgaXMgdGhlIHNjb3BlIG9mIHRoYXQgdmFyaWFibGU/IFdoeSBpcyBhIGBzdGF0aWMgaW50YCBiZWluZyBjb25zaWRlcmVkPyBJcyBpdCB0byBtYWludGFpbiBzdGF0ZSBhY3Jvc3MgZnVuY3Rpb24gY2FsbHMsIHBlcmhhcHMgcmVsYXRlZCB0byBhIHNwZWNpZmljIGNvbm5lY3Rpb24gb3Igb3BlcmF0aW9uIHdpdGhpbiB0aGUgTkJEIGRyaXZlcj8gSXMgaXQgYSBjb3VudGVyLCBhIGZsYWcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgaW1wbGljYXRpb25zIG9mIHVzaW5nIGBzdGF0aWNgIGFyZSBpbnN0YW50bHkgaW4gbXkgbWluZDogc2NvcGUgcmVzdHJpY3Rpb24sIGludGVybmFsIGxpbmthZ2UsIGFuZCBwb3RlbnRpYWwgdGhyZWFkLXNhZmV0eSBjb25jZXJucywgZXNwZWNpYWxseSBpbiBhIG5ldHdvcmsgY29udGV4dCB0aGF0IGxpa2VseSBkZWFscyB3aXRoIG11bHRpcGxlIGNsaWVudHMgc2ltdWx0YW5lb3VzbHkuIEkgbmVlZCB0byBjb25zaWRlciB0aG9zZSBpc3N1ZXMgY2FyZWZ1bGx5LiBOZWVkIHRvIGRldGVybWluZSB0aGUgc3BlY2lmaWMgY29udGV4dCBhbmQgZnVuY3Rpb24gbmFtZSB0byBrbm93IHdoYXQgcHJvYmxlbSB3ZSBhcmUgbG9va2luZyB0byBzb2x2ZSBieSB1c2luZyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA4OSwiT3V0cHV0VG9rZW5zIjo2MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjEzLjQ2MTMxODU5MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2Mjk0MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz0xNjk9c3RhdGljIGludCBwYXJ0X3NoaWZ0O1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTcxOnN0YXRpYyBpbnQgbmJkX2Rldl9kYmdfaW5pdChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MjpzdGF0aWMgdm9pZCBuYmRfZGV2X2RiZ19jbG9zZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MzpzdGF0aWMgdm9pZCBuYmRfY29uZmlnX3B1dChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3NDpzdGF0aWMgdm9pZCBuYmRfY29ubmVjdF9yZXBseShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBpbnQgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc1OnN0YXRpYyBpbnQgbmJkX2dlbmxfc3RhdHVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc2OnN0YXRpYyB2b2lkIG5iZF9kZWFkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc3OnN0YXRpYyB2b2lkIG5iZF9kaXNjb25uZWN0X2FuZF9wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCk7XFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzgtXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xNzk9c3RhdGljIGlubGluZSBzdHJ1Y3QgZGV2aWNlICpuYmRfdG9fZGV2KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4My1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4NDpzdGF0aWMgdm9pZCBuYmRfcmVxdWV1ZV9jbWQoc3RydWN0IG5iZF9jbWQgKmNtZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIwNC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjIwNTpzdGF0aWMgdTY0IG5iZF9jbWRfaGFuZGxlKHN0cnVjdCBuYmRfY21kICpjbWQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMDYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMTMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyMTQ6c3RhdGljIHUzMiBuYmRfaGFuZGxlX3RvX3RhZyh1NjQgaGFuZGxlKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjE1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjE4LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjE5OnN0YXRpYyB1MzIgbmJkX2hhbmRsZV90b19jb29raWUodTY0IGhhbmRsZSlcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIyMC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTI1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgYmFja2VuZF9hdHRyID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyNjQ6c3RhdGljIHZvaWQgbmJkX2Rldl9yZW1vdmUoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI2NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4MS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI4MjpzdGF0aWMgdm9pZCBuYmRfZGV2X3JlbW92ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4My17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4Ni1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI4NzpzdGF0aWMgdm9pZCBuYmRfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yODgte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yOTgtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyOTk6c3RhdGljIGludCBuYmRfZGlzY29ubmVjdGVkKHN0cnVjdCBuYmRfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0zMDAte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0zMDQtXFxuZHJpdmVycy9ibG9jay9uYmQuYzozMDU6c3RhdGljIHZvaWQgbmJkX21hcmtfbnNvY2tfZGVhZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX3NvY2sgKm5zb2NrLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzA2LVxcdFxcdFxcdFxcdGludCBub3RpZnkpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTMzMy1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjMzNDpzdGF0aWMgaW50IG5iZF9zZXRfc2l6ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBsb2ZmX3QgYnl0ZXNpemUsIGxvZmZfdCBibGtzaXplKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzM1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzg0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6Mzg1OnN0YXRpYyB2b2lkIG5iZF9jb21wbGV0ZV9ycShzdHJ1Y3QgcmVxdWVzdCAqcmVxKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzg2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9NjEyPXN0YXRpYyBpbmxpbmUgaW50IHdhc19pbnRlcnJ1cHRlZChpbnQgcmVzdWx0KVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy02MjQtICovXFxuZHJpdmVycy9ibG9jay9uYmQuYzo2MjU6c3RhdGljIHZvaWQgbmJkX3NjaGVkX3BlbmRpbmdfd29yayhzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtNjI2LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuYmRfc29jayAqbnNvY2ssXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTY0NC0gKi9cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjY0NTpzdGF0aWMgYmxrX3N0YXR1c190IG5iZF9zZW5kX2NtZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtNjQ2LVxcdFxcdFxcdFxcdCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTgwOS0vKiBoYW5kbGUgcGFydGlhbCBzZW5kaW5nICovXFxuZHJpdmVycy9ibG9jay9uYmQuYzo4MTA6c3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtODExLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtODY4LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6ODY5OnN0YXRpYyBpbnQgbmJkX3JlYWRfcmVwbHkoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IHNvY2tldCAqc29jayxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTg3MC1cXHRcXHRcXHQgIHN0cnVjdCBuYmRfcmVwbHkgKnJlcGx5KVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz05OTQ9c3RhdGljIHZvaWQgcmVjdl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1My1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEwNTQ6c3RhdGljIGJvb2wgbmJkX2NsZWFyX3JlcShzdHJ1Y3QgcmVxdWVzdCAqcmVxLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNzMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMDc0OnN0YXRpYyB2b2lkIG5iZF9jbGVhcl9xdWUoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNzUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xMTI1PXN0YXRpYyBpbnQgd2FpdF9mb3JfcmVjb25uZWN0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTExNDAtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMTQxOnN0YXRpYyBibGtfc3RhdHVzX3QgbmJkX2hhbmRsZV9jbWQoc3RydWN0IG5iZF9jbWQgKmNtZCwgaW50IGluZGV4KVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTE0Mi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMjA4OnN0YXRpYyBibGtfc3RhdHVzX3QgbmJkX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTIwOS1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYmxrX21xX3F1ZXVlX2RhdGEgKmJkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xMjY3PXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbmJkX3Nsb2NrX2tleVszXTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyNjgtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMjY5OnN0YXRpYyB2b2lkIG5iZF9yZWNsYXNzaWZ5X3NvY2tldChzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTI3MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTEyOTg9c3RhdGljIGlubGluZSB2b2lkIG5iZF9yZWNsYXNzaWZ5X3NvY2tldChzdHJ1Y3Qgc29ja2V0ICpzb2NrKSB7fVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzAwLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTMwMTpzdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTMwMi1cXHRcXHRcXHQgIGJvb2wgbmV0bGluaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3My1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEzNzQ6c3RhdGljIGludCBuYmRfcmVjb25uZWN0X3NvY2tldChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1bnNpZ25lZCBsb25nIGFyZylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzNzUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDM5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTQ0MDpzdGF0aWMgdm9pZCBuYmRfYmRldl9yZXNldChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0MS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0NDYtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDQ3OnN0YXRpYyB2b2lkIG5iZF9wYXJzZV9mbGFncyhzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0OC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE0NTU9c3RhdGljIHZvaWQgc2VuZF9kaXNjb25uZWN0cyhzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDc4LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTQ3OTpzdGF0aWMgaW50IG5iZF9kaXNjb25uZWN0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDgwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ4OS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE0OTA6c3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2soc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0OTEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDk2LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTQ5NzpzdGF0aWMgdm9pZCBuYmRfY29uZmlnX3B1dChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ5OC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE1MzUtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNTM2OnN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTUzNy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2MDctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjA4OnN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZV9pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTYwOS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2MzctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjM4OnN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjM5LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY0Ny1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2NDg6c3RhdGljIHZvaWQgbmJkX3NldF9jbWRfdGltZW91dChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1NjQgdGltZW91dClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NDkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xNjU4PXN0YXRpYyBpbnQgX19uYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IG5iZF9kZXZpY2UgKm5iZCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwNC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MDU6c3RhdGljIGludCBuYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwNi1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzM0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTczNTpzdGF0aWMgaW50IG5iZF9hbGxvY19hbmRfaW5pdF9jb25maWcoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MzYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzY5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc3MDpzdGF0aWMgaW50IG5iZF9vcGVuKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBibGtfbW9kZV90IG1vZGUpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzcxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgxMi1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4MTM6c3RhdGljIHZvaWQgbmJkX3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2spXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODE0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgyNC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4MjU6c3RhdGljIHZvaWQgbmJkX2ZyZWVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MjYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xODMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgbmJkX2ZvcHMgPVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODQzLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTg0NDpzdGF0aWMgaW50IG5iZF9kYmdfdGFza3Nfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NDUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xODU0PURFRklORV9TSE9XX0FUVFJJQlVURShuYmRfZGJnX3Rhc2tzKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NTUtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxODU2OnN0YXRpYyBpbnQgbmJkX2RiZ19mbGFnc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTg1Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE4ODM9REVGSU5FX1NIT1dfQVRUUklCVVRFKG5iZF9kYmdfZmxhZ3MpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTg4NC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4ODU6c3RhdGljIGludCBuYmRfZGV2X2RiZ19pbml0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODg2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkwOS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5MTA6c3RhdGljIHZvaWQgbmJkX2Rldl9kYmdfY2xvc2Uoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MTEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTE0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTkxNTpzdGF0aWMgaW50IG5iZF9kYmdfaW5pdCh2b2lkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkxNi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MjctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTI4OnN0YXRpYyB2b2lkIG5iZF9kYmdfY2xvc2Uodm9pZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5Mjkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTM0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTkzNTpzdGF0aWMgaW50IG5iZF9kZXZfZGJnX2luaXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MzYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTM5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTk0MDpzdGF0aWMgdm9pZCBuYmRfZGV2X2RiZ19jbG9zZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk0MS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5NDMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTQ0OnN0YXRpYyBpbnQgbmJkX2RiZ19pbml0KHZvaWQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTQ1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk0OC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5NDk6c3RhdGljIHZvaWQgbmJkX2RiZ19jbG9zZSh2b2lkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk1MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5NTQtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTU1OnN0YXRpYyBpbnQgbmJkX2luaXRfcmVxdWVzdChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldCwgc3RydWN0IHJlcXVlc3QgKnJxLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk1Ni1cXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IGhjdHhfaWR4LCBpbnQgbnVtYV9ub2RlKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0yMTE2PW5iZF9kZXZpY2VfcG9saWN5W05CRF9ERVZJQ0VfQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEyMC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjIxMjE6c3RhdGljIGludCBuYmRfZ2VubF9zaXplX3NldChzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEyMi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIxMzctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyMTM4OnN0YXRpYyBpbnQgbmJkX2dlbmxfY29ubmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEzOS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIzMTgtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyMzE5OnN0YXRpYyB2b2lkIG5iZF9kaXNjb25uZWN0X2FuZF9wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIzMjAte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzM5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjM0MDpzdGF0aWMgaW50IG5iZF9nZW5sX2Rpc2Nvbm5lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIzNDEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzc0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjM3NTpzdGF0aWMgaW50IG5iZF9nZW5sX3JlY29uZmlndXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzc2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9MjU4Nj1zdGF0aWMgaW50IHN0YXR1c19jYihpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjU5MS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI1OTI6c3RhdGljIGludCBuYmRfZ2VubF9zdGF0dXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI1OTMte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjUxLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjY1MjpzdGF0aWMgdm9pZCBuYmRfY29ubmVjdF9yZXBseShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBpbnQgaW5kZXgpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjUzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjY3NS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI2NzY6c3RhdGljIHZvaWQgbmJkX21jYXN0X2luZGV4KGludCBpbmRleClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI2Nzcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjk5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjcwMDpzdGF0aWMgdm9pZCBuYmRfZGVhZF9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjcwMS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTI3MDg9c3RhdGljIGludCBfX2luaXQgbmJkX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjc2MC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI3NjE6c3RhdGljIGludCBuYmRfZXhpdF9jYihpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI3NjIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNToxMy41Nzc2MjIwMTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ2MzYxODYzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBOQkQgS2VybmVsIE1vZHVsZSBTeW1ib2xzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBJIG5lZWQgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBpbiB0aGlzIE5CRCBtb2R1bGUuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgYG5iZF9nZW5sX3JlY29uZmlndXJlYCwgYG5iZF9nZW5sX2Nvbm5lY3RgLCBgbmJkX2dlbmxfZGlzY29ubmVjdGAsIGFuZCBgbmJkX2lvY3RsYCB3b3VsZCBiZSBnb29kIGNhbmRpZGF0ZXMgYmVjYXVzZSB0aGV5J3JlIGFsbCBzdGF0aWMuIEkgZmlndXJlZCBJJ2QgdXNlIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAsIGBuYmRfaW9jdGxgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBhbmQgYG5iZF9zZW5kX2NtZGAgYXMgbXkgaW5pdGlhbCBGb2N1c1N5bWJvbHMuXG5cbkhvd2V2ZXIsIEkgcGF1c2VkIGF0IGBuYmRfc2VuZF9jbWRgIGJlY2F1c2UgaXQncyBzdGF0aWMgYW5kIHRoZSBjb21waWxlciAqbWlnaHQqIGlubGluZSBpdC4gQnV0IGl0J3MgY2FsbGVkIGZyb20gYm90aCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGFuZCBgbmJkX2hhbmRsZV9jbWRgLiBCb3RoIGFyZSBhbHNvIHF1aXRlIGxhcmdlIGZ1bmN0aW9ucywgc28gaXQncyBwcm9iYWJseSBub3QgaW5saW5lZC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgc2l6ZSB0byBiZSBjZXJ0YWluLiBZZXMsIGBuYmRfc2VuZF9jbWRgIGlzIDE1MCBsaW5lcywgc28gbGlrZWx5IG5vdCBpbmxpbmVkLlxuXG5Pa2F5LCBJIHdhcyBsZWFuaW5nIHRvd2FyZHMgaW5jbHVkaW5nIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBhbmQgYG5iZF9pb2N0bGAuXG5cbkJ1dCB0aGVuIEkgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zOiBcIlByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cIlxuXG5BaCwgcmlnaHQuIFNpbmNlIGFsbCB0aGVzZSBmdW5jdGlvbnMgSSBsaXN0ZWQgKmFyZSogc3RhdGljLCB0aGV5IGJlY29tZSB0aGUgZW50cnkgcG9pbnRzLiBTbywgSSB3aWxsIGp1c3QgbGlzdCB0aGVtIGFzIHRoZSByZWxldmFudCBmdW5jdGlvbnMgc2luY2UgdGhleSBhcmUgdGhlIGVudHJ5IHBvaW50cy5cblxuTm93LCBsZXQncyBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgZm9yIGBCTEtfREVWX05CRGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjIwLjA0MTI0MzkxNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYyOTk4NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX05CRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE5ND1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5Njpjb25maWcgQkxLX0RFVl9OQkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTk3LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNToyMC4zMDQyNDY5NDlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODYxMTU1NDk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBCbG9jayBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IGNlcnRhaW4gZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIE15IG1lbnRhbCBjaGVja2xpc3Qgc2F5cywgXCJXaGVyZSB3b3VsZCBJIGZpbmQgdGhlICpjb3JlKiBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGJsb2NrIGRyaXZlcnM/XCIgTXkgZXhwZXJpZW5jZSBpbW1lZGlhdGVseSBzdGVlcnMgbWUgdG93YXJkcyB0aGUgYEtjb25maWdgIGZpbGVzLCB3aGljaCBoYW5kbGUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNob2ljZXMgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgZHJpdmVycyBkaXJlY3RvcnkuIEkga25vdyB0aGF0IGBkcml2ZXJzL2Jsb2NrL2AgaXMgYSBsaWtlbHkgc3BvdCBhbmQgdGhlIEtjb25maWcgdGhlcmUgd2lsbCBjb250YWluIHdoYXQgSSBuZWVkLiBMZXQgbWUgZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvYmxvY2svS2NvbmZpZ2AgYW5kIHpvb20gaW4gYXJvdW5kIGxpbmUgMTk2OyB0aGF0IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGV4cGxvcmUuIEhvcGVmdWxseSwgSSdsbCBmaW5kIHNvbWV0aGluZyByZWxldmFudCB0byB3aGF0IEknbSBsb29raW5nIGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgwMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjI4LjkxNTgwNTM2OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHQgIFRoZSBoaXN0b3JpYyBkZWZhdWx0IGlzIDguIElmIGEgbGF0ZSAyMDExIHZlcnNpb24gb2YgbG9zZXR1cCg4KVxcbiAxOTE6XFx0XFx0ICBpcyB1c2VkLCBpdCBjYW4gYmUgc2V0IHRvIDAsIHNpbmNlIG5lZWRlZCBsb29wIGRldmljZXMgY2FuIGJlXFxuIDE5MjpcXHRcXHQgIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB3aXRoIHRoZSAvZGV2L2xvb3AtY29udHJvbCBpbnRlcmZhY2UuXFxuIDE5MzpcXHRcXG4gMTk0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWdcXFwiXFxuIDE5NTpcXHRcXG4gMTk2OlxcdGNvbmZpZyBCTEtfREVWX05CRFxcbiAxOTc6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuIDE5ODpcXHRcXHRkZXBlbmRzIG9uIE5FVFxcbiAxOTk6XFx0XFx0aGVscFxcbiAyMDA6XFx0XFx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgYWxsb3cgeW91ciBjb21wdXRlciB0byBiZSBhIGNsaWVudCBmb3IgbmV0d29ya1xcbiAyMDE6XFx0XFx0ICBibG9jayBkZXZpY2VzLCBpLmUuIGl0IHdpbGwgYmUgYWJsZSB0byB1c2UgYmxvY2sgZGV2aWNlcyBleHBvcnRlZCBieVxcbiAyMDI6XFx0XFx0ICBzZXJ2ZXJzIChtb3VudCBmaWxlIHN5c3RlbXMgb24gdGhlbSBldGMuKS4gQ29tbXVuaWNhdGlvbiBiZXR3ZWVuXFxuIDIwMzpcXHRcXHQgIGNsaWVudCBhbmQgc2VydmVyIHdvcmtzIG92ZXIgVENQL0lQIG5ldHdvcmtpbmcsIGJ1dCB0byB0aGUgY2xpZW50XFxuIDIwNDpcXHRcXHQgIHByb2dyYW0gdGhpcyBpcyBoaWRkZW46IGl0IGxvb2tzIGxpa2UgYSByZWd1bGFyIGxvY2FsIGZpbGUgYWNjZXNzIHRvXFxuIDIwNTpcXHRcXHQgIGEgYmxvY2sgZGV2aWNlIHNwZWNpYWwgZmlsZSBzdWNoIGFzIC9kZXYvbmQwLlxcbiAyMDY6XFx0XFxuIDIwNzpcXHRcXHQgIE5ldHdvcmsgYmxvY2sgZGV2aWNlcyBhbHNvIGFsbG93cyB5b3UgdG8gcnVuIGEgYmxvY2stZGV2aWNlIGluXFxuIDIwODpcXHRcXHQgIHVzZXJsYW5kIChtYWtpbmcgc2VydmVyIGFuZCBjbGllbnQgcGh5c2ljYWxseSB0aGUgc2FtZSBjb21wdXRlcixcXG4gMjA5OlxcdFxcdCAgY29tbXVuaWNhdGluZyB1c2luZyB0aGUgbG9vcGJhY2sgbmV0d29yayBkZXZpY2UpLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNToyOC45MTU5MTQ4MjlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg3MjI1NDc4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgTkJEIERyaXZlcioqXG5cbk9rYXksIGhlcmUncyBob3cgSSdtIHRoaW5raW5nIGFib3V0IHRoaXMuIFRoaXMgcGF0Y2ggaGluZ2VzIG9uIHRoZSBgTkVUYCBkZXBlbmRlbmN5LCBidXQgcmVhbGx5LCB0aGUgb25seSAqbmVjZXNzYXJ5KiBjb25maWcgSSBzZWUgaXMgYEJMS19ERVZfTkJEYC4gSSdsbCBkb3VibGUgY2hlY2sgdGhhdCBhc3N1bXB0aW9uIGp1c3QgdG8gYmUgc3VyZS5cblxuUmlnaHQsIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHRvdWNoaW5nIGBkcml2ZXJzL2Jsb2NrL25iZC5jYCwgYW5kIGBCTEtfREVWX05CRGAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZy5cblxuU28sIGxldCBtZSBzdW1tYXJpemUgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBUaGlzIGlzIGRlZmluaXRlbHkgYFdvcnRoRnV6emluZ2AsIGJlY2F1c2UgaXQncyBhZGRyZXNzaW5nIGlzc3VlcyB3aXRoIHBhcnRpYWwgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cyDigJMgY29yZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIE5CRCBkcml2ZXIncyBpbnRlcmFjdGlvbiB3aXRoIHVzZXJzcGFjZSB2aWEgaW9jdGxzIGFuZCBOZXRsaW5rLlxuXG5NeSBpbml0aWFsIGZvY3VzIHN5bWJvbHMgYXJlIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBgbmJkX2lvY3RsYCwgYW5kIGBuYmRfcGVuZGluZ19jbWRfd29ya2AuIEkgaGF2ZSBgQkxLX0RFVl9OQkRgIGVuYWJsZWQgZm9yIHRoZSBmdXp6ZXIuXG5cbkkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2Ugd2l0aCBteSBmb2N1cy4gVGhlIHdvcmtxdWV1ZSBmdW5jdGlvbiwgYG5iZF9wZW5kaW5nX2NtZF93b3JrYCwgaXMgYSBnb29kIHRhcmdldCBzaW5jZSBpdCdzIHdoZXJlIHRoZSBtb2RpZmllZCBjb2RlIHJlc2lkZXMuIGBuYmRfbWFya19uc29ja19kZWFkYCBpcyBhbHNvIG1vZGlmaWVkLCBidXQgaXQncyBhIHNtYWxsIHN0YXRpYyBmdW5jdGlvbiB0aGF0IG1heSBiZSBpbmxpbmVkLiBJIGFtIGdvaW5nIHRvIG9taXQgaXQgZnJvbSBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuXG5cbk5vdywgbGV0IG1lIGludmVzdGlnYXRlIGBuYmRfc2VuZF9jbWRgLiBBaCwgaXQncyBzdGF0aWMuIEJ1dCBpdCdzIHJlYXNvbmFibHkgbGFyZ2UsIHNvIGxpa2VseSBub3QgaW5saW5lZC4gSSdsbCBzdGljayB3aXRoIGluY2x1ZGluZyBpdCBpbiBteSBmb2N1cyBsaXN0LlxuXG5UaHVzLCBteSBmb2N1cyBzeW1ib2xzIGFyZSBub3cgYG5iZF9zZW5kX2NtZGAsIGBuYmRfcGVuZGluZ19jbWRfd29ya2AsIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLlxuXG5JJ20gcmVhZHkgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU0MDUsIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjU6MzYuNzg4MTcyNTUzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMDkyNTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05CRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5iZF9zZW5kX2NtZFwiLFxuICAgIFwibmJkX3BlbmRpbmdfY21kX3dvcmtcIixcbiAgICBcIm5iZF9yZWNvbm5lY3Rfc29ja2V0XCIsXG4gICAgXCJuYmRfZ2VubF9yZWNvbmZpZ3VyZVwiLFxuICAgIFwibmJkX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5ldHdvcmsgQmxvY2sgRGV2aWNlIChOQkQpIGRyaXZlciB0byBmaXggaGFuZGxpbmcgb2YgcGFydGlhbGx5IHRyYW5zbWl0dGVkIHJlcXVlc3RzIGFuZCBkZWFkIHNvY2tldHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlIE5CRCBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGlvY3RscyBhbmQgbmV0bGluaywgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OQkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuYmRfc2VuZF9jbWRcIixcbiAgICBcIm5iZF9wZW5kaW5nX2NtZF93b3JrXCIsXG4gICAgXCJuYmRfcmVjb25uZWN0X3NvY2tldFwiLFxuICAgIFwibmJkX2dlbmxfcmVjb25maWd1cmVcIixcbiAgICBcIm5iZF9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSAoTkJEKSBkcml2ZXIgdG8gZml4IGhhbmRsaW5nIG9mIHBhcnRpYWxseSB0cmFuc21pdHRlZCByZXF1ZXN0cyBhbmQgZGVhZCBzb2NrZXRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBOQkQgZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBpb2N0bHMgYW5kIG5ldGxpbmssIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowm8jpz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 17:57:33 +0000 UTC FinishedAt: 2026-08-01 18:25:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NBD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NBD" ], "series_id": "d5d6a6a9-4f5e-43ed-9d96-63f61436a669" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nbd_send_cmd", "nbd_pending_cmd_work", "nbd_reconnect_socket", "nbd_genl_reconfigure", "nbd_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTkJEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmJkX3NlbmRfY21kJiMzNDssCiAgICAmIzM0O25iZF9wZW5kaW5nX2NtZF93b3JrJiMzNDssCiAgICAmIzM0O25iZF9yZWNvbm5lY3Rfc29ja2V0JiMzNDssCiAgICAmIzM0O25iZF9nZW5sX3JlY29uZmlndXJlJiMzNDssCiAgICAmIzM0O25iZF9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgKE5CRCkgZHJpdmVyIHRvIGZpeCBoYW5kbGluZyBvZiBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkJEIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGxzIGFuZCBuZXRsaW5rLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDI2MDhlOTcxZTIxODViZDM0ZmEwM2YzZTE4YjEzOTA0ZjQ5Nzg5OTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE4OjI0OjE3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbmJkLmMgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXG5pbmRleCA4ZjEwNzYyZTkwZWY3Li43YTQ2MmE2MjYzMDZiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9uYmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9uYmQuY1xuQEAgLTMyNyw4ICYjNDM7MzI3LDggQEAgc3RhdGljIHZvaWQgbmJkX21hcmtfbnNvY2tfZGVhZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX3NvY2sgKm5zb2NrLFxuIFx0XHR9XG4gXHR9XG4gXHRuc29jay1cdTAwM2VkZWFkID0gdHJ1ZTtcbi1cdG5zb2NrLVx1MDAzZXBlbmRpbmcgPSBOVUxMO1xuLVx0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4mIzQzO1x0aWYgKCFuc29jay1cdTAwM2VwZW5kaW5nKVxuJiM0MztcdFx0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbmJkX3NldF9zaXplKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIGxvZmZfdCBieXRlc2l6ZSwgbG9mZl90IGJsa3NpemUpXG5AQCAtNzkzLDggJiM0Mzs3OTMsMTAgQEAgc3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCxcbiBcdCAqXG4gXHQgKiBXZSBtdXN0IHJ1biBmcm9tIHBlbmRpbmcgd29yayBmdW5jdGlvbi5cbiBcdCAqICovXG4tXHRpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFx1MDAyNmNtZC1cdTAwM2VmbGFncykpXG4mIzQzO1x0aWYgKHRlc3RfYml0KE5CRF9DTURfUEFSVElBTF9TRU5ELCBcdTAwMjZjbWQtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0XHRuYmRfbWFya19uc29ja19kZWFkKG5iZCwgbnNvY2ssIDEpO1xuIFx0XHRyZXR1cm4gQkxLX1NUU19PSztcbiYjNDM7XHR9XG4gXG4gXHQvKiByZXRyeSBvbiBhIGRpZmZlcmVudCBzb2NrZXQgKi9cbiBcdGRldl9lcnJfcmF0ZWxpbWl0ZWQoZGlza190b19kZXYobmJkLVx1MDAzZWRpc2spLFxuQEAgLTgyNiw4ICYjNDM7ODI4LDE4IEBAIHN0YXRpYyB2b2lkIG5iZF9wZW5kaW5nX2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0aWYgKCFuc29jay1cdTAwM2VwZW5kaW5nKVxuIFx0XHRcdGJyZWFrO1xuIFxuJiM0MztcdFx0aWYgKG5zb2NrLVx1MDAzZWRlYWQpXG4mIzQzO1x0XHRcdGdvdG8gZGVhZDtcbiYjNDM7XG4gXHRcdC8qIGRvbiYjMzk7dCBib3RoZXIgdGltZW91dCBoYW5kbGVyIGZvciBwYXJ0aWFsIHNlbmRpbmcgKi9cbiBcdFx0aWYgKFJFQURfT05DRShqaWZmaWVzKSAmIzQzOyBtc2Vjc190b19qaWZmaWVzKHdhaXRfbXMpIFx1MDAzZT0gZGVhZGxpbmUpIHtcbiYjNDM7XHRcdFx0LypcbiYjNDM7XHRcdFx0ICogVGhlIHNvY2tldCBjb250YWlucyBhIHBhcnRpYWxseSB0cmFuc21pdHRlZCByZXF1ZXN0XG4mIzQzO1x0XHRcdCAqIGFuZCBjYW5ub3QgYmUgcmV1c2VkIGZvciBhbm90aGVyIE5CRCByZXF1ZXN0LlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0bmJkX21hcmtfbnNvY2tfZGVhZChuYmQsIG5zb2NrLCAxKTtcbiYjNDM7XHRcdFx0bnNvY2stXHUwMDNlcGVuZGluZyA9IE5VTEw7XG4mIzQzO1x0XHRcdG5zb2NrLVx1MDAzZXNlbnQgPSAwO1xuIFx0XHRcdGNtZC1cdTAwM2VzdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xuIFx0XHRcdGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0KHJlcSk7XG4gXHRcdFx0YnJlYWs7XG5AQCAtODQwLDYgJiM0Mzs4NTIsMTggQEAgc3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIG91dDpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZjbWQtXHUwMDNlbG9jayk7XG4gXHRuYmRfY29uZmlnX3B1dChuYmQpO1xuJiM0MztcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0LyogQ29tcGxldGUgdGhlIHJlcXVlc3QgaGVyZTsgbmJkX2NsZWFyX3JlcSgpIHdpbGwgbm90IGhhbmRsZSBpdC4gKi9cbiYjNDM7ZGVhZDpcbiYjNDM7XHRuc29jay1cdTAwM2VwZW5kaW5nID0gTlVMTDtcbiYjNDM7XHRuc29jay1cdTAwM2VzZW50ID0gMDtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bnNvY2stXHUwMDNldHhfbG9jayk7XG4mIzQzO1x0Y2xlYXJfYml0KE5CRF9DTURfUEFSVElBTF9TRU5ELCBcdTAwMjZjbWQtXHUwMDNlZmxhZ3MpO1xuJiM0MztcdGNtZC1cdTAwM2VzdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZjbWQtXHUwMDNlbG9jayk7XG4mIzQzO1x0YmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocmVxKTtcbiYjNDM7XHRuYmRfY29uZmlnX3B1dChuYmQpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG5iZF9yZWFkX3JlcGx5KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG5AQCAtMTM3Niw2ICYjNDM7MTQwMCwxMCBAQCBzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuIFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc29jay1cdTAwM2V0eF9sb2NrKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuJiM0MztcdFx0aWYgKG5zb2NrLVx1MDAzZXBlbmRpbmcpIHtcbiYjNDM7XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zb2NrLVx1MDAzZXR4X2xvY2spO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiBcdFx0c2tfc2V0X21lbWFsbG9jKHNvY2stXHUwMDNlc2spO1xuIFx0XHRpZiAobmJkLVx1MDAzZXRhZ19zZXQudGltZW91dClcbiBcdFx0XHRzb2NrLVx1MDAzZXNrLVx1MDAzZXNrX3NuZHRpbWVvID0gbmJkLVx1MDAzZXRhZ19zZXQudGltZW91dDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OQkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuYmRfc2VuZF9jbWQmIzM0OywKICAgICYjMzQ7bmJkX3BlbmRpbmdfY21kX3dvcmsmIzM0OywKICAgICYjMzQ7bmJkX3JlY29ubmVjdF9zb2NrZXQmIzM0OywKICAgICYjMzQ7bmJkX2dlbmxfcmVjb25maWd1cmUmIzM0OywKICAgICYjMzQ7bmJkX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSAoTkJEKSBkcml2ZXIgdG8gZml4IGhhbmRsaW5nIG9mIHBhcnRpYWxseSB0cmFuc21pdHRlZCByZXF1ZXN0cyBhbmQgZGVhZCBzb2NrZXRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBOQkQgZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBpb2N0bHMgYW5kIG5ldGxpbmssIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjYwOGU5NzFlMjE4NWJkMzRmYTAzZjNlMThiMTM5MDRmNDk3ODk5NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMTg6MjQ6MTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9uYmQuYwppbmRleCA4ZjEwNzYyZTkwZWY3Li43YTQ2MmE2MjYzMDZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL25iZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbmJkLmMKQEAgLTMyNyw4ICYjNDM7MzI3LDggQEAgc3RhdGljIHZvaWQgbmJkX21hcmtfbnNvY2tfZGVhZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX3NvY2sgKm5zb2NrLAogCQl9CiAJfQogCW5zb2NrLSZndDtkZWFkID0gdHJ1ZTsKLQluc29jay0mZ3Q7cGVuZGluZyA9IE5VTEw7Ci0JbnNvY2stJmd0O3NlbnQgPSAwOwomIzQzOwlpZiAoIW5zb2NrLSZndDtwZW5kaW5nKQomIzQzOwkJbnNvY2stJmd0O3NlbnQgPSAwOwogfQogCiBzdGF0aWMgaW50IG5iZF9zZXRfc2l6ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBsb2ZmX3QgYnl0ZXNpemUsIGxvZmZfdCBibGtzaXplKQpAQCAtNzkzLDggJiM0Mzs3OTMsMTAgQEAgc3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCwKIAkgKgogCSAqIFdlIG11c3QgcnVuIGZyb20gcGVuZGluZyB3b3JrIGZ1bmN0aW9uLgogCSAqICovCi0JaWYgKHRlc3RfYml0KE5CRF9DTURfUEFSVElBTF9TRU5ELCAmYW1wO2NtZC0mZ3Q7ZmxhZ3MpKQomIzQzOwlpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsICZhbXA7Y21kLSZndDtmbGFncykpIHsKJiM0MzsJCW5iZF9tYXJrX25zb2NrX2RlYWQobmJkLCBuc29jaywgMSk7CiAJCXJldHVybiBCTEtfU1RTX09LOwomIzQzOwl9CiAKIAkvKiByZXRyeSBvbiBhIGRpZmZlcmVudCBzb2NrZXQgKi8KIAlkZXZfZXJyX3JhdGVsaW1pdGVkKGRpc2tfdG9fZGV2KG5iZC0mZ3Q7ZGlzayksCkBAIC04MjYsOCAmIzQzOzgyOCwxOCBAQCBzdGF0aWMgdm9pZCBuYmRfcGVuZGluZ19jbWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCWlmICghbnNvY2stJmd0O3BlbmRpbmcpCiAJCQlicmVhazsKIAomIzQzOwkJaWYgKG5zb2NrLSZndDtkZWFkKQomIzQzOwkJCWdvdG8gZGVhZDsKJiM0MzsKIAkJLyogZG9uJiMzOTt0IGJvdGhlciB0aW1lb3V0IGhhbmRsZXIgZm9yIHBhcnRpYWwgc2VuZGluZyAqLwogCQlpZiAoUkVBRF9PTkNFKGppZmZpZXMpICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMod2FpdF9tcykgJmd0Oz0gZGVhZGxpbmUpIHsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFRoZSBzb2NrZXQgY29udGFpbnMgYSBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdAomIzQzOwkJCSAqIGFuZCBjYW5ub3QgYmUgcmV1c2VkIGZvciBhbm90aGVyIE5CRCByZXF1ZXN0LgomIzQzOwkJCSAqLwomIzQzOwkJCW5iZF9tYXJrX25zb2NrX2RlYWQobmJkLCBuc29jaywgMSk7CiYjNDM7CQkJbnNvY2stJmd0O3BlbmRpbmcgPSBOVUxMOwomIzQzOwkJCW5zb2NrLSZndDtzZW50ID0gMDsKIAkJCWNtZC0mZ3Q7c3RhdHVzID0gQkxLX1NUU19JT0VSUjsKIAkJCWJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0KHJlcSk7CiAJCQlicmVhazsKQEAgLTg0MCw2ICYjNDM7ODUyLDE4IEBAIHN0YXRpYyB2b2lkIG5iZF9wZW5kaW5nX2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIG91dDoKIAltdXRleF91bmxvY2soJmFtcDtjbWQtJmd0O2xvY2spOwogCW5iZF9jb25maWdfcHV0KG5iZCk7CiYjNDM7CXJldHVybjsKJiM0MzsKJiM0MzsJLyogQ29tcGxldGUgdGhlIHJlcXVlc3QgaGVyZTsgbmJkX2NsZWFyX3JlcSgpIHdpbGwgbm90IGhhbmRsZSBpdC4gKi8KJiM0MztkZWFkOgomIzQzOwluc29jay0mZ3Q7cGVuZGluZyA9IE5VTEw7CiYjNDM7CW5zb2NrLSZndDtzZW50ID0gMDsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7bnNvY2stJmd0O3R4X2xvY2spOwomIzQzOwljbGVhcl9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsICZhbXA7Y21kLSZndDtmbGFncyk7CiYjNDM7CWNtZC0mZ3Q7c3RhdHVzID0gQkxLX1NUU19JT0VSUjsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7Y21kLSZndDtsb2NrKTsKJiM0MzsJYmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocmVxKTsKJiM0MzsJbmJkX2NvbmZpZ19wdXQobmJkKTsKIH0KIAogc3RhdGljIGludCBuYmRfcmVhZF9yZXBseShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLApAQCAtMTM3Niw2ICYjNDM7MTQwMCwxMCBAQCBzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQkJbXV0ZXhfdW5sb2NrKCZhbXA7bnNvY2stJmd0O3R4X2xvY2spOwogCQkJY29udGludWU7CiAJCX0KJiM0MzsJCWlmIChuc29jay0mZ3Q7cGVuZGluZykgewomIzQzOwkJCW11dGV4X3VubG9jaygmYW1wO25zb2NrLSZndDt0eF9sb2NrKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJc2tfc2V0X21lbWFsbG9jKHNvY2stJmd0O3NrKTsKIAkJaWYgKG5iZC0mZ3Q7dGFnX3NldC50aW1lb3V0KQogCQkJc29jay0mZ3Q7c2stJmd0O3NrX3NuZHRpbWVvID0gbmJkLSZndDt0YWdfc2V0LnRpbWVvdXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOQkQgRHJpdmVyIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGRyaXZlcnMvYmxvY2svbmJkLmNgLCBkZWFsaW5nIHdpdGggcGFydGlhbCBzZW5kcyBhbmQgZGVhZCBzb2NrZXRzIGluIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBOQkQuLi4gaXMgdGhpcyBmdXp6YWJsZT8mIzM0OyBTaW5jZSBJJiMzOTttIGxvb2tpbmcgYXQgYG5iZF9tYXJrX25zb2NrX2RlYWRgLCBgbmJkX3NlbmRfY21kYCwgYG5iZF9wZW5kaW5nX2NtZF93b3JrYCwgYW5kIGBuYmRfcmVjb25uZWN0X3NvY2tldGAsIGFsbCBvZiB0aGVzZSBzZWVtIGxpa2UgZnVuY3Rpb25hbCBjaGFuZ2VzIGltcGFjdGluZyBob3cgdGhlIGRyaXZlciBoYW5kbGVzIG5ldHdvcmsgaW50ZXJhY3Rpb24uIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdG9yLiBCbG9jayBkZXZpY2UgZHJpdmVycyBhcmUgdXN1YWxseSBhY2Nlc3NpYmxlIHZpYSBpb2N0bHMgb3IgbmV0bGluaywgd2hpY2ggb3BlbnMgdXAgaW50ZXJlc3RpbmcgYXZlbnVlcyBmb3IgY3JhZnRpbmcgZnV6emVkIGlucHV0cy4KCk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEl0JiMzOTtsbCBwcm9iYWJseSBiZSBpbiBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBvciBzb21ldGhpbmcgZXF1YWxseSBvYnZpb3VzLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBjcnVjaWFsIGZvciBlZmZlY3RpdmUgZnV6emluZyDigJMgSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIGFuZCBob3cgdG8gYmVzdCBzZXQgdXAgdGhlIHRhcmdldCBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1enplci4gTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlc2UgZnVuY3Rpb25zIC0gYG5iZF9zZW5kX2NtZGAsIGBuYmRfcGVuZGluZ19jbWRfd29ya2AsIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLiBBbnkgdnVsbmVyYWJpbGl0eSBpbiB0aGUgY29ubmVjdGlvbiBhbmQgY29tbWFuZCBoYW5kbGluZyBzaG91bGQgYmUgYSBncmVhdCBwbGFjZSB0byBzdGFydCBsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05CRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZz0xOTQ9c291cmNlIFwmIzM0O2RyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTk1LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5Njpjb25maWcgQkxLX0RFVl9OQkRcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTctXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1MQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5CRCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBCTEtfREVWX05CRGAuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyB0byBzZWUgd2hlcmUgdGhlIGNoYW5nZXMgYXJlLCBhbmQgaXQgbG9va3MgbGlrZSBpdOKAmXM6IGBuYmRfbWFya19uc29ja19kZWFkYCwgYG5iZF9zZW5kX2NtZGAsIGBuYmRfcGVuZGluZ19jbWRfd29ya2AsIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLgoKUmlnaHQgb2ZmIHRoZSBiYXQsIGBuYmRfc2VuZF9jbWRgIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGFyZSBzY3JlYW1pbmcgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyB0byBtZS4gVGhleSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZGlyZWN0IGZ1enppbmcgYXR0ZW50aW9uLiBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCBtaWdodCBub3QgYmUgKmRpcmVjdGx5KiBmdXp6YWJsZSwgYnV0IGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgdGh1cyBhIHBvdGVudGlhbCB0YXJnZXQgZG93biB0aGUgbGluZS4gRmluYWxseSwgYG5iZF9tYXJrX25zb2NrX2RlYWRgIGlzIHN0YXRpYywgd2hpY2ggcmFpc2VzIHRoZSBwb3NzaWJpbGl0eSBvZiBpbmxpbmluZyDigJMgd29ydGggaW52ZXN0aWdhdGluZy4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYG5iZF9zZW5kX2NtZGAgaXMgYWN0dWFsbHkgc3RhdGljLiBCZXN0IHRvIHZlcmlmeSB0aGF0IHVwZnJvbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmJkX3NlbmRfY21kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jPTYyNT1zdGF0aWMgdm9pZCBuYmRfc2NoZWRfcGVuZGluZ193b3JrKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy02NDQtICovXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjY0NTpzdGF0aWMgYmxrX3N0YXR1c190IG5iZF9zZW5kX2NtZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX2NtZCAqY21kLFxuZHJpdmVycy9ibG9jay9uYmQuYy02NDYtXHRcdFx0XHQgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9ODEwPXN0YXRpYyB2b2lkIG5iZF9wZW5kaW5nX2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTgyNi1cdHdoaWxlICh0cnVlKSB7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjgyNzpcdFx0bmJkX3NlbmRfY21kKG5iZCwgY21kLCBjbWQtXHUwMDNlaW5kZXgpO1xuZHJpdmVycy9ibG9jay9uYmQuYy04MjgtXHRcdGlmICghbnNvY2stXHUwMDNlcGVuZGluZylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTExNDE9c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfaGFuZGxlX2NtZChzdHJ1Y3QgbmJkX2NtZCAqY21kLCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMjAwLVx0fVxuZHJpdmVycy9ibG9jay9uYmQuYzoxMjAxOlx0cmV0ID0gbmJkX3NlbmRfY21kKG5iZCwgY21kLCBpbmRleCk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDItb3V0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGF0IGNvZGUgc25pcHBldDoKCioqRGl2aW5nIGludG8gYG5iZF9zZW5kX2NtZGAqKgoKT2theSwgc28gYG5iZF9zZW5kX2NtZGAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nLCBtZWFuaW5nIGl0JiMzOTtzIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBjb21waWxhdGlvbiB1bml0LiBUaGF0IHN1Z2dlc3RzIGl0JiMzOTtzIGEgY3JpdGljYWwsIGludGVybmFsIGZ1bmN0aW9uLCBwcm9iYWJseSBmb3IgaGFuZGxpbmcgdGhlIGxvdy1sZXZlbCBjb21tYW5kIHNlbmRpbmcgbG9naWMuIExldCYjMzk7cyBzZWUgaG93IGl0JiMzOTtzIHVzZWQuIFJpZ2h0LCBpdCYjMzk7cyBjYWxsZWQgYnkgYG5iZF9wZW5kaW5nX2NtZF93b3JrYCBhbmQgYG5iZF9oYW5kbGVfY21kYC4gYG5iZF9oYW5kbGVfY21kYCBpcyB0aGVuIGNhbGxlZCBieSBgbmJkX3F1ZXVlX3JxYC4gU28sIGBuYmRfcXVldWVfcnFgIGxpa2VseSBpbml0aWF0ZXMgdGhlIHByb2Nlc3MsIHBhc3NpbmcgZG93biB0aGUgY29tbWFuZCB0byBgbmJkX2hhbmRsZV9jbWRgLCB3aGljaCB1bHRpbWF0ZWx5LCB0aHJvdWdoIHdoYXRldmVyIGxvZ2ljLCBlbmRzIHVwIGNhbGxpbmcgdGhhdCBjcml0aWNhbCBgbmJkX3NlbmRfY21kYCBmdW5jdGlvbi4gVGhpcyBzZWVtcyBsaWtlIGEgdHlwaWNhbCBjb21tYW5kIHByb2Nlc3NpbmcgcGlwZWxpbmUuIGBuYmRfcXVldWVfcnFgIHByb2JhYmx5IHB1dHMgdGhlIHJlcXVlc3Qgb24gYSBxdWV1ZSwgYG5iZF9oYW5kbGVfY21kYCBwcm9jZXNzZXMgdGhlIHJlcXVlc3QgYW5kIHRoZW4gYG5iZF9zZW5kX2NtZGAgYWN0dWFsbHkgc2VuZHMgaXQuIEdvb2QgdG8ga25vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuYmRfcXVldWVfcnEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmM9MTE2PXN0cnVjdCBuYmRfZGV2aWNlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzOC0vKlxuZHJpdmVycy9ibG9jay9uYmQuYzoxMzk6ICogVGhpcyBmbGFnIHdpbGwgYmUgc2V0IGlmIG5iZF9xdWV1ZV9ycSgpIHN1Y2NlZWQsIGFuZCB3aWxsIGJlIGNoZWNrZWQgYW5kXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0MC0gKiBjbGVhcmVkIGluIGNvbXBsZXRpb24uIEJvdGggc2V0dGluZyBhbmQgY2xlYXJpbmcgb2YgdGhlIGZsYWcgYXJlIHByb3RlY3RlZFxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTE0MT1zdGF0aWMgYmxrX3N0YXR1c190IG5iZF9oYW5kbGVfY21kKHN0cnVjdCBuYmRfY21kICpjbWQsIGludCBpbmRleClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDctXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEyMDg6c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfcXVldWVfcnEoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDktXHRcdFx0Y29uc3Qgc3RydWN0IGJsa19tcV9xdWV1ZV9kYXRhICpiZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE5NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBibGtfbXFfb3BzIG5iZF9tcV9vcHMgPSB7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5NjY6XHQucXVldWVfcnFcdD0gbmJkX3F1ZXVlX3JxLFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTY3LVx0LmNvbXBsZXRlXHQ9IG5iZF9jb21wbGV0ZV9ycSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODc1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIE5CRCBRdWV1ZSBhbmQgUmVjb25uZWN0aW9uIExvZ2ljKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBncm91bmQgbXlzZWxmIGluIHRoZSBjb2RlLiBgbmJkX3F1ZXVlX3JxYCwgdGhhdCYjMzk7cyB0aGUgYnJlYWQgYW5kIGJ1dHRlciwgdGhlIHdvcmtob3JzZSBvZiB0aGUgYmxvY2sgbGF5ZXIgcXVldWUgZnVuY3Rpb24gZm9yIHRoZSBOQkQgZHJpdmVyLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0aGUgYnVsayBvZiBJL08gcmVxdWVzdHMgdG8gYmUgaGFuZGxlZCwgYXMgdGhleSBnZXQgc3VibWl0dGVkLgoKTm93LCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLi4uIHRoYXQgb25lIHJpbmdzIGEgYmVsbC4gSXQmIzM5O3MgcmVsYXRlZCB0byBoYW5kbGluZyBzb2NrZXQgcmVjb25uZWN0aW9ucywgd2hpY2ggaW1wbGllcyBkZWFsaW5nIHdpdGggcG90ZW50aWFsIGRpc3J1cHRpb25zIGluIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gdG8gdGhlIE5CRCBzZXJ2ZXIuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlIGlzICp3aGVuKiB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGludm9rZWQuIElzIGl0IGp1c3QgaGFwcGVuaW5nIGluIGBuYmRfaW9jdGxgLCBvciBpcyB0aGVyZSBzb21ldGhpbmcgZWxzZSBhdCBwbGF5PyBJdCYjMzk7cyB0aW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBuZXRsaW5rIGFsc28gcGxheXMgYSBwYXJ0IGluIGNhbGxpbmcgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCwgc2luY2UgbmV0bGluayYjMzk7cyByb2xlIGluIHRoZSBkcml2ZXIgY291bGQgYmUgaW5mbHVlbmNpbmcgdGhlIHNpdHVhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmJkX3JlY29ubmVjdF9zb2NrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmM9MTMwMT1zdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTM3NDpzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzc1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTIzNzU9c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5NS1cdFx0XHRmZCA9IChpbnQpbmxhX2dldF91MzIoc29ja3NbTkJEX1NPQ0tfRkRdKTtcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjQ5NjpcdFx0XHRyZXQgPSBuYmRfcmVjb25uZWN0X3NvY2tldChuYmQsIGZkKTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5Ny1cdFx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NDEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgUmVjb25uZWN0aW9uIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCBpcyBiZWluZyB0cmlnZ2VyZWQgZnJvbSBhIGNvdXBsZSBvZiBkaWZmZXJlbnQgcGxhY2VzOiBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCB3aGljaCBpcyBuZXRsaW5rLWJhc2VkLCBhbmQgYWxzbyB0aHJvdWdoIGBuYmRfaW9jdGxgLiBJbnRlcmVzdGluZy4gVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2l0dWF0aW9uLCBteSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhlIGBuYmRfaW9jdGxgIHBhdGggZmlyc3QuIEl0JiMzOTtzIG9mdGVuIGVhc2llciB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyB3aXRoIGlvY3RscyBiZWNhdXNlIGl04oCZcyB1c3VhbGx5IG1vcmUgc3RyYWlnaHRmb3J3YXJkLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlIGFuZCBob3cgdGhhdOKAmXMgYWZmZWN0aW5nIHRoZSByZWNvbm5lY3Rpb24gcHJvY2Vzcy4gVGhpcyBtaWdodCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHVuZGVybHlpbmcgaXNzdWUsIGFuZCB0aGVuIEkgY2FuIGNvbXBhcmUgaXQgdG8gdGhlIG5ldGxpbmsgc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmJkX2lvY3RsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jPTE2NDg9c3RhdGljIHZvaWQgbmJkX3NldF9jbWRfdGltZW91dChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1NjQgdGltZW91dClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NTctLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBjb25maWdfbG9jayBoZWxkICovXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2NTg6c3RhdGljIGludCBfX25iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjU5LVx0XHQgICAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzA0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNzA1OnN0YXRpYyBpbnQgbmJkX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwNi1cdFx0ICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MjctXHQgICAgKGNtZCA9PSBOQkRfRElTQ09OTkVDVCB8fCBjbWQgPT0gTkJEX0NMRUFSX1NPQ0spKVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNzI4Olx0XHRlcnJvciA9IF9fbmJkX2lvY3RsKGJkZXYsIG5iZCwgY21kLCBhcmcpO1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNzI5LVx0ZWxzZVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTgzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIG5iZF9mb3BzID1cbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MzYtXHQucmVsZWFzZSA9XHRuYmRfcmVsZWFzZSxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTgzNzpcdC5pb2N0bCA9XHRuYmRfaW9jdGwsXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4Mzg6XHQuY29tcGF0X2lvY3RsID1cdG5iZF9pb2N0bCxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgzOS1cdC5mcmVlX2Rpc2sgPVx0bmJkX2ZyZWVfZGlzayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEzNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIElPQ1RMIGFuZCBSZWNvbm5lY3Rpb24gUGF0aCoqCgpIbW0sIGhvbGQgb24gYSBzZWNvbmQuLi4gSSYjMzk7bSB0cmFjaW5nIHRocm91Z2ggdGhpcyBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgTkJEIGRyaXZlciwgYW5kIEkgbmVlZCB0byBjbGFyaWZ5IGEgZGV0YWlsIGluIHRoZSBjb250cm9sIGZsb3cuIEkmIzM5O20gbG9va2luZyBhdCB0aGUgYF9fbmJkX2lvY3RsYCBmdW5jdGlvbiwgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGludm9rZXMgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gSXQmIzM5O3MgYSBrZXkgaW50ZXJhY3Rpb24gcG9pbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIElPQ1RMIG9wZXJhdGlvbnMsIGluIGFueSBzY2VuYXJpbywgbGVhZCB0byBhIHNvY2tldCByZWNvbm5lY3Rpb24gYXR0ZW1wdC4gQXJlIHRoZXkgdGllZCB0b2dldGhlcj8gT3IgaXMgdGhlIHJlY29ubmVjdGlvbiB0cmlnZ2VyZWQgdmlhIGEgY29tcGxldGVseSBzZXBhcmF0ZSBwYXRoPyBNeSBpbml0aWFsIGFzc3VtcHRpb24sIGJhc2VkIG9uIHByZXZpb3VzIGFuYWx5c2lzLCBpcyB0aGF0IHRoZXNlIHR3byBhcmUgcmVsYXRlZC4gQnV0IEkgaGF2ZSB0byBjb25maXJtLiBJdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBwb3RlbnRpYWxseSB0cmFuc2llbnQgbmV0d29yayBpc3N1ZXMsIGVzcGVjaWFsbHkgZHVyaW5nIElPIG9wZXJhdGlvbnMuIFRoZSBhbnN3ZXIgaGVyZSB3aWxsIGRpY3RhdGUgaG93IEkgY29uc2lkZXIgdGhlIG92ZXJhbGwgcmVzaWxpZW5jeSBtb2RlbCBvZiB0aGUgTkJEIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmJkX3JlY29ubmVjdF9zb2NrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmM9MTMwMT1zdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTM3NDpzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzc1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTIzNzU9c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5NS1cdFx0XHRmZCA9IChpbnQpbmxhX2dldF91MzIoc29ja3NbTkJEX1NPQ0tfRkRdKTtcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjQ5NjpcdFx0XHRyZXQgPSBuYmRfcmVjb25uZWN0X3NvY2tldChuYmQsIGZkKTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5Ny1cdFx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzAKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBOQkQgU29ja2V0IFJlY29ubmVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBuYmRfcmVjb25uZWN0X3NvY2tldGAgZnVuY3Rpb24sIGFuZCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIG9ubHkgaW52b2tlZCBmcm9tIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAuIFRoYXQmIzM5O3MgdGhlIHByaW1hcnkgY2FsbHNpdGU7IGdvb2QgdG8ga25vdy4gTm93LCB0aGUgbmF0dXJhbCBuZXh0IHN0ZXAgaXMgdG8gc2VlIHdoZXJlICp0aGF0KiBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSwgYnV0IGFsc28gbGV0IG1lIHF1aWNrbHkgY2hlY2sgb3V0IGBfX25iZF9pb2N0bGAgdG8gbWFrZSBzdXJlIGl0IGlzbiYjMzk7dCB1c2VkIHRoZXJlIGFzIHdlbGwgZm9yIHNvbWUgcmVhc29uLiBHb3R0YSBjb3ZlciBhbGwgdGhlIGJhc2VzLCBiZWNhdXNlIGlvY3RscyBhcmUgYWx3YXlzIHByb25lIHRvIHN1cnByaXNlcy4gSXQmIzM5O3MgZWFzeSB0byBtaXNzIHNvbWV0aGluZyBpbiB0aGF0IGJpZyBmdW5jdGlvbiwgeW91IGtub3c/IExldCBtZSBqdXN0IGNyb3NzLXJlZmVyZW5jZSBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuYmRfcmVjb25uZWN0X3NvY2tldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYz0xMzAxPXN0YXRpYyBpbnQgbmJkX2FkZF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcsXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzczLVxuZHJpdmVycy9ibG9jay9uYmQuYzoxMzc0OnN0YXRpYyBpbnQgbmJkX3JlY29ubmVjdF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzNzUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MjM3NT1zdGF0aWMgaW50IG5iZF9nZW5sX3JlY29uZmlndXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNDk1LVx0XHRcdGZkID0gKGludClubGFfZ2V0X3UzMihzb2Nrc1tOQkRfU09DS19GRF0pO1xuZHJpdmVycy9ibG9jay9uYmQuYzoyNDk2Olx0XHRcdHJldCA9IG5iZF9yZWNvbm5lY3Rfc29ja2V0KG5iZCwgZmQpO1xuZHJpdmVycy9ibG9jay9uYmQuYy0yNDk3LVx0XHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE2NAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBDYWxsIFN0YWNrKioKCkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2suIFRoZSBjb250ZXh0IHN1Z2dlc3RzIGEgcmVjb25maWd1cmF0aW9uIGV2ZW50IHJlbGF0ZWQgdG8gTkJELCBhbmQgSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgZGlyZWN0IGNhbGxlcnMuIE9rYXksIHNvIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3Mgb25seSBjYWxsZWQgYnkgYG5iZF9nZW5sX3JlY29uZmlndXJlYC4gVGltZSB0byBkaXZlIGRlZXBlciBpbnRvIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAgYW5kIHNlZSBob3cgaXQmIzM5O3Mgb3JjaGVzdHJhdGluZyB0aGVzZSByZWNvbmZpZ3VyYXRpb24gb3BlcmF0aW9ucy4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBsb2dpYyBpcyBsaWtlbHkgcmVzaWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25iZF9nZW5sX3JlY29uZmlndXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jPTIzNDA9c3RhdGljIGludCBuYmRfZ2VubF9kaXNjb25uZWN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzc0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMzc1OnN0YXRpYyBpbnQgbmJkX2dlbmxfcmVjb25maWd1cmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjM3Ni17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0yNTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmJkX2Nvbm5lY3RfZ2VubF9vcHNbXSA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI1MjctXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjUyODpcdFx0LmRvaXRcdD0gbmJkX2dlbmxfcmVjb25maWd1cmUsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI1MjktXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjI5CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIE5CRCBEcml2ZXI6IEEgVGhvdWdodCBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgZHJpdmVyLCBhbmQgaXQmIzM5O3MgbG9va2luZyBwcm9taXNpbmcgYXMgYSB0YXJnZXQuIEl0JiMzOTtzIGFjY2Vzc2libGUgdmlhIG5ldGxpbmssIHdoaWNoIGlzIGdvb2QuIFRoZSBOQkQgZHJpdmVyIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgY2FuIGZ1enouCgpUaGUgY29yZSBjaGFuZ2VzIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBzZWVtIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBgbmJkX21hcmtfbnNvY2tfZGVhZGAsIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gVGhpbmtpbmcgYWJvdXQgZm9jdXMgc3ltYm9scywgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCBhbmQgYG5iZF9nZW5sX3JlY29uZmlndXJlYCBqdW1wIG91dCBhcyBnb29kIHN0YXJ0aW5nIHBvaW50cy4KCkkmIzM5O20gYSBsaXR0bGUgd2FyeSBvZiBgbmJkX3F1ZXVlX3JxYCBiZWNhdXNlIGl0IHNlZW1zIHRvIGJlIGEgaG90LXBhdGggZnVuY3Rpb247IHRoYXQgbWlnaHQgY29tcGxpY2F0ZSB0aGluZ3MuIGBuYmRfcGVuZGluZ19jbWRfd29ya2AgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24sIHdoaWNoICptaWdodCogYmUgZnV6emFibGUsIGJ1dCB0aGVuLi4uaXQmIzM5O3Mgc3RhdGljLiBIbW0uIFRoZSBpbnN0cnVjdGlvbnMgZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlcnMsIHdoaWNoIGFyZSB0eXBpY2FsbHkgaW5saW5lZC4KCkhvd2V2ZXIsIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAgKmlzKiBzdGF0aWMsIGJ1dCBpdCYjMzk7cyBhIG5ldGxpbmsgY2FsbGJhY2ssIHNvIGl0JiMzOTtzIHByb2JhYmx5IG5vdCBpbmxpbmVkLiBMZXQgbWUgZG91YmxlLWNoZWNrLiBZZXMsIGBuYmRfcmVjb25uZWN0X3NvY2tldGAgaXMgYWxzbyBzdGF0aWMuIEFuZCBzbyBpcyBgbmJkX2dlbmxfcmVjb25maWd1cmVgLiBPa2F5LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBndWlkaW5nIG1lIGhlcmUuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBhdmFpbGFibGUgaW4gdGhpcyBkcml2ZXIuCgpXYWl0LCBsb29raW5nIGF0IGBuYmRfaW9jdGxgLCBpdCYjMzk7cyBzdGF0aWMgdG9vLiBDcmFwLCBtb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gYG5iZC5jYCBhcmUgcHJvYmFibHkgc3RhdGljLCBzaW5jZSBpdCYjMzk7cyBhIGRyaXZlci4gU28sIEkgbmVlZCB0byByZXRoaW5rIHRoaXMgYXBwcm9hY2guCgpPa2F5LCBsZXQmIzM5O3MganVzdCBpbml0aWFsbHkgaW5jbHVkZSBgbmJkX2dlbmxfcmVjb25maWd1cmVgIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLiBCdXQgaGFuZyBvbi4uLiBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGlzIHN0YXRpYywgYnV0IGl0JiMzOTtzIGEgZmFpcmx5IGxhcmdlIGZ1bmN0aW9uLiBQcm9iYWJseSBub3QgaW5saW5lZC4gTGV0JiMzOTtzIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL25iZC5jPTU1PXN0YXRpYyBpbnQgbmJkX3RvdGFsX2RldmljZXMgPSAwO1xuZHJpdmVycy9ibG9jay9uYmQuYy01Ni1cbmRyaXZlcnMvYmxvY2svbmJkLmM6NTc6c3RydWN0IG5iZF9zb2NrIHtcbmRyaXZlcnMvYmxvY2svbmJkLmMtNTgtXHRzdHJ1Y3Qgc29ja2V0ICpzb2NrO1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9NzU9c3RydWN0IGxpbmtfZGVhZF9hcmdzIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTkxLVxuZHJpdmVycy9ibG9jay9uYmQuYzo5MjpzdHJ1Y3QgbmJkX2NvbmZpZyB7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTkzLVx0dTMyIGZsYWdzO1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTExPXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IG5iZF9ibGtzaXplKHN0cnVjdCBuYmRfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMTUtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjExNjpzdHJ1Y3QgbmJkX2RldmljZSB7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTExNy1cdHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDg6c3RydWN0IG5iZF9jbWQge1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNDktXHRzdHJ1Y3QgbmJkX2RldmljZSAqbmJkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODU3CgkJCQkJCQlvdXRwdXQ6IDYwCgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJZGVudGlmeWluZyBEeW5hbWljIEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGFyZWFzIHdoZXJlIHRoZSBzeXN0ZW0gKnRydWx5KiBiZWhhdmVzIGR5bmFtaWNhbGx5LiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgZGVmaW5pdGlvbiwgcHJlZGljdGFibGUgYW5kIHRpZWQgZGlyZWN0bHkgdG8gdGhlIGNvZGUmIzM5O3Mgc3RydWN0dXJlIGF0IGNvbXBpbGUgdGltZS4gVGhleSBhcmUgdGhlIGZpeGVkIHBvaW50cy4gVGhlcmVmb3JlLCBhbnkgYW5hbHlzaXMgZm9jdXNlZCBvbiBhZGFwdGl2ZSBiZWhhdmlvciwgcnVudGltZSBtb2RpZmljYXRpb25zLCBvciB0aGUgaW1wYWN0cyBvZiBjb25maWd1cmF0aW9uIG9yIGlucHV0IGRhdGEgbmVlZHMgdG8gZXhjbHVkZSB0aG9zZS4gSSBuZWVkIHRvIGZpbHRlciBvdXQgdGhlIG5vaXNlLiBMZXQmIzM5O3MgZm9jdXMgb3VyIGF0dGVudGlvbiBieSBzZWFyY2hpbmcsIGRpcmVjdGx5LCBmb3IgdGhvc2UgZnVuY3Rpb25zIHRoYXQgYXJlICpub3QqIHN0YXRpYy4gVGhpcyB3aWxsIHF1aWNrbHkgcmV2ZWFsIHRoZSBhcmVhcyB0aGF0IGFyZSBjYW5kaWRhdGVzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gb2YgdGhlIHN5c3RlbSYjMzk7cyBkeW5hbWljIGJlaGF2aW9ycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDg5CgkJCQkJCQlvdXRwdXQ6IDYyCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbnNpZGVyaW5nIGEgYHN0YXRpYyBpbnRgIFZhcmlhYmxlIGluIHRoZSBOQkQgQ29udGV4dCoqCgpIbW0sIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIE5CRCAoTmV0d29yayBCbG9jayBEZXZpY2UpIGltcGxlbWVudGF0aW9uIGhlcmUuIEkmIzM5O20gd29uZGVyaW5nIGlmIGEgYHN0YXRpYyBpbnQgbmJkXy4uLmAgaXMgYSBwb3RlbnRpYWwgc29sdXRpb24gZm9yIHNvbWV0aGluZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQgYXJlIHdlIHRyeWluZyB0byBhY2hpZXZlPyBXaGF0IGlzIHRoZSBzY29wZSBvZiB0aGF0IHZhcmlhYmxlPyBXaHkgaXMgYSBgc3RhdGljIGludGAgYmVpbmcgY29uc2lkZXJlZD8gSXMgaXQgdG8gbWFpbnRhaW4gc3RhdGUgYWNyb3NzIGZ1bmN0aW9uIGNhbGxzLCBwZXJoYXBzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBjb25uZWN0aW9uIG9yIG9wZXJhdGlvbiB3aXRoaW4gdGhlIE5CRCBkcml2ZXI/IElzIGl0IGEgY291bnRlciwgYSBmbGFnLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGltcGxpY2F0aW9ucyBvZiB1c2luZyBgc3RhdGljYCBhcmUgaW5zdGFudGx5IGluIG15IG1pbmQ6IHNjb3BlIHJlc3RyaWN0aW9uLCBpbnRlcm5hbCBsaW5rYWdlLCBhbmQgcG90ZW50aWFsIHRocmVhZC1zYWZldHkgY29uY2VybnMsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIGNvbnRleHQgdGhhdCBsaWtlbHkgZGVhbHMgd2l0aCBtdWx0aXBsZSBjbGllbnRzIHNpbXVsdGFuZW91c2x5LiBJIG5lZWQgdG8gY29uc2lkZXIgdGhvc2UgaXNzdWVzIGNhcmVmdWxseS4gTmVlZCB0byBkZXRlcm1pbmUgdGhlIHNwZWNpZmljIGNvbnRleHQgYW5kIGZ1bmN0aW9uIG5hbWUgdG8ga25vdyB3aGF0IHByb2JsZW0gd2UgYXJlIGxvb2tpbmcgdG8gc29sdmUgYnkgdXNpbmcgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMgW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbmJkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9uYmQuYz0xNjk9c3RhdGljIGludCBwYXJ0X3NoaWZ0O1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNzAtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MTpzdGF0aWMgaW50IG5iZF9kZXZfZGJnX2luaXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MjpzdGF0aWMgdm9pZCBuYmRfZGV2X2RiZ19jbG9zZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKTtcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTczOnN0YXRpYyB2b2lkIG5iZF9jb25maWdfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpO1xuZHJpdmVycy9ibG9jay9uYmQuYzoxNzQ6c3RhdGljIHZvaWQgbmJkX2Nvbm5lY3RfcmVwbHkoc3RydWN0IGdlbmxfaW5mbyAqaW5mbywgaW50IGluZGV4KTtcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc1OnN0YXRpYyBpbnQgbmJkX2dlbmxfc3RhdHVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xuZHJpdmVycy9ibG9jay9uYmQuYzoxNzY6c3RhdGljIHZvaWQgbmJkX2RlYWRfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3NzpzdGF0aWMgdm9pZCBuYmRfZGlzY29ubmVjdF9hbmRfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpO1xuZHJpdmVycy9ibG9jay9uYmQuYy0xNzgtXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE3OT1zdGF0aWMgaW5saW5lIHN0cnVjdCBkZXZpY2UgKm5iZF90b19kZXYoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTg0OnN0YXRpYyB2b2lkIG5iZF9yZXF1ZXVlX2NtZChzdHJ1Y3QgbmJkX2NtZCAqY21kKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xODUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjA0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMDU6c3RhdGljIHU2NCBuYmRfY21kX2hhbmRsZShzdHJ1Y3QgbmJkX2NtZCAqY21kKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMDYte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEzLVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMTQ6c3RhdGljIHUzMiBuYmRfaGFuZGxlX3RvX3RhZyh1NjQgaGFuZGxlKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMTUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjE4LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMTk6c3RhdGljIHUzMiBuYmRfaGFuZGxlX3RvX2Nvb2tpZSh1NjQgaGFuZGxlKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMjAte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBiYWNrZW5kX2F0dHIgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjMtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI2NDpzdGF0aWMgdm9pZCBuYmRfZGV2X3JlbW92ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjgxLVxuZHJpdmVycy9ibG9jay9uYmQuYzoyODI6c3RhdGljIHZvaWQgbmJkX2Rldl9yZW1vdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4My17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yODYtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI4NzpzdGF0aWMgdm9pZCBuYmRfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4OC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yOTgtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI5OTpzdGF0aWMgaW50IG5iZF9kaXNjb25uZWN0ZWQoc3RydWN0IG5iZF9jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzAwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTMwNC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MzA1OnN0YXRpYyB2b2lkIG5iZF9tYXJrX25zb2NrX2RlYWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9zb2NrICpuc29jayxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzA2LVx0XHRcdFx0aW50IG5vdGlmeSlcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTMzMy1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MzM0OnN0YXRpYyBpbnQgbmJkX3NldF9zaXplKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIGxvZmZfdCBieXRlc2l6ZSwgbG9mZl90IGJsa3NpemUpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTMzNS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0zODQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjM4NTpzdGF0aWMgdm9pZCBuYmRfY29tcGxldGVfcnEoc3RydWN0IHJlcXVlc3QgKnJlcSlcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzg2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTYxMj1zdGF0aWMgaW5saW5lIGludCB3YXNfaW50ZXJydXB0ZWQoaW50IHJlc3VsdClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTYyNC0gKi9cbmRyaXZlcnMvYmxvY2svbmJkLmM6NjI1OnN0YXRpYyB2b2lkIG5iZF9zY2hlZF9wZW5kaW5nX3dvcmsoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCxcbmRyaXZlcnMvYmxvY2svbmJkLmMtNjI2LVx0XHRcdFx0ICAgc3RydWN0IG5iZF9zb2NrICpuc29jayxcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTY0NC0gKi9cbmRyaXZlcnMvYmxvY2svbmJkLmM6NjQ1OnN0YXRpYyBibGtfc3RhdHVzX3QgbmJkX3NlbmRfY21kKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCBuYmRfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTY0Ni1cdFx0XHRcdCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy04MDktLyogaGFuZGxlIHBhcnRpYWwgc2VuZGluZyAqL1xuZHJpdmVycy9ibG9jay9uYmQuYzo4MTA6c3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9ibG9jay9uYmQuYy04MTEte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtODY4LVxuZHJpdmVycy9ibG9jay9uYmQuYzo4Njk6c3RhdGljIGludCBuYmRfcmVhZF9yZXBseShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuZHJpdmVycy9ibG9jay9uYmQuYy04NzAtXHRcdFx0ICBzdHJ1Y3QgbmJkX3JlcGx5ICpyZXBseSlcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTk5ND1zdGF0aWMgdm9pZCByZWN2X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTA1NDpzdGF0aWMgYm9vbCBuYmRfY2xlYXJfcmVxKHN0cnVjdCByZXF1ZXN0ICpyZXEsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNTUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA3My1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTA3NDpzdGF0aWMgdm9pZCBuYmRfY2xlYXJfcXVlKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNzUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTEyNT1zdGF0aWMgaW50IHdhaXRfZm9yX3JlY29ubmVjdChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTE0MC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTE0MTpzdGF0aWMgYmxrX3N0YXR1c190IG5iZF9oYW5kbGVfY21kKHN0cnVjdCBuYmRfY21kICpjbWQsIGludCBpbmRleClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTE0Mi17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xMjA3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxMjA4OnN0YXRpYyBibGtfc3RhdHVzX3QgbmJkX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMjA5LVx0XHRcdGNvbnN0IHN0cnVjdCBibGtfbXFfcXVldWVfZGF0YSAqYmQpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xMjY3PXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbmJkX3Nsb2NrX2tleVszXTtcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTI2OC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTI2OTpzdGF0aWMgdm9pZCBuYmRfcmVjbGFzc2lmeV9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTI3MC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xMjk4PXN0YXRpYyBpbmxpbmUgdm9pZCBuYmRfcmVjbGFzc2lmeV9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaykge31cbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzMDAtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEzMDE6c3RhdGljIGludCBuYmRfYWRkX3NvY2tldChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1bnNpZ25lZCBsb25nIGFyZyxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTMwMi1cdFx0XHQgIGJvb2wgbmV0bGluaylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzNzMtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEzNzQ6c3RhdGljIGludCBuYmRfcmVjb25uZWN0X3NvY2tldChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1bnNpZ25lZCBsb25nIGFyZylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3NS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDM5LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDQwOnN0YXRpYyB2b2lkIG5iZF9iZGV2X3Jlc2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0NDEte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0Ni1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTQ0NzpzdGF0aWMgdm9pZCBuYmRfcGFyc2VfZmxhZ3Moc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0OC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0xNDU1PXN0YXRpYyB2b2lkIHNlbmRfZGlzY29ubmVjdHMoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0NzgtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE0Nzk6c3RhdGljIGludCBuYmRfZGlzY29ubmVjdChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDgwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0ODktXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE0OTA6c3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2soc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ5MS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDk2LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDk3OnN0YXRpYyB2b2lkIG5iZF9jb25maWdfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0OTgte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTUzNS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTUzNjpzdGF0aWMgaW50IG5iZF9zdGFydF9kZXZpY2Uoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTUzNy17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjA3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjA4OnN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZV9pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjA5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2MzctXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2Mzg6c3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2tfaW9jdGwoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTYzOS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjQ3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjQ4OnN0YXRpYyB2b2lkIG5iZF9zZXRfY21kX3RpbWVvdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdTY0IHRpbWVvdXQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NDkte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTY1OD1zdGF0aWMgaW50IF9fbmJkX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzA0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxNzA1OnN0YXRpYyBpbnQgbmJkX2lvY3RsKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGJsa19tb2RlX3QgbW9kZSxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwNi1cdFx0ICAgICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MzQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MzU6c3RhdGljIGludCBuYmRfYWxsb2NfYW5kX2luaXRfY29uZmlnKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MzYte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTc2OS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc3MDpzdGF0aWMgaW50IG5iZF9vcGVuKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBibGtfbW9kZV90IG1vZGUpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3NzEte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgxMi1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTgxMzpzdGF0aWMgdm9pZCBuYmRfcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgxNC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xODI0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxODI1OnN0YXRpYyB2b2lkIG5iZF9mcmVlX2Rpc2soc3RydWN0IGdlbmRpc2sgKmRpc2spXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MjYte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTgzMj1zdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIG5iZF9mb3BzID1cbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NDMtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4NDQ6c3RhdGljIGludCBuYmRfZGJnX3Rhc2tzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NDUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTg1ND1ERUZJTkVfU0hPV19BVFRSSUJVVEUobmJkX2RiZ190YXNrcyk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NTUtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4NTY6c3RhdGljIGludCBuYmRfZGJnX2ZsYWdzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NTcte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MTg4Mz1ERUZJTkVfU0hPV19BVFRSSUJVVEUobmJkX2RiZ19mbGFncyk7XG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4ODQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4ODU6c3RhdGljIGludCBuYmRfZGV2X2RiZ19pbml0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4ODYte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkwOS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTkxMDpzdGF0aWMgdm9pZCBuYmRfZGV2X2RiZ19jbG9zZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTExLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MTQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5MTU6c3RhdGljIGludCBuYmRfZGJnX2luaXQodm9pZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkxNi17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTI3LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTI4OnN0YXRpYyB2b2lkIG5iZF9kYmdfY2xvc2Uodm9pZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkyOS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTM0LVxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTM1OnN0YXRpYyBpbnQgbmJkX2Rldl9kYmdfaW5pdChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTM2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MzktXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5NDA6c3RhdGljIHZvaWQgbmJkX2Rldl9kYmdfY2xvc2Uoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk0MS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTQzLVxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTQ0OnN0YXRpYyBpbnQgbmJkX2RiZ19pbml0KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5NDUte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk0OC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTk0OTpzdGF0aWMgdm9pZCBuYmRfZGJnX2Nsb3NlKHZvaWQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5NTAte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk1NC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MTk1NTpzdGF0aWMgaW50IG5iZF9pbml0X3JlcXVlc3Qoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsIHN0cnVjdCByZXF1ZXN0ICpycSxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk1Ni1cdFx0XHQgICAgdW5zaWduZWQgaW50IGhjdHhfaWR4LCBpbnQgbnVtYV9ub2RlKVxuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmM9MjExNj1uYmRfZGV2aWNlX3BvbGljeVtOQkRfREVWSUNFX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEyMC1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MjEyMTpzdGF0aWMgaW50IG5iZF9nZW5sX3NpemVfc2V0KHN0cnVjdCBnZW5sX2luZm8gKmluZm8sIHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIxMjIte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEzNy1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MjEzODpzdGF0aWMgaW50IG5iZF9nZW5sX2Nvbm5lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEzOS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzE4LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMzE5OnN0YXRpYyB2b2lkIG5iZF9kaXNjb25uZWN0X2FuZF9wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjMyMC17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzM5LVxuZHJpdmVycy9ibG9jay9uYmQuYzoyMzQwOnN0YXRpYyBpbnQgbmJkX2dlbmxfZGlzY29ubmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzQxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIzNzQtXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjIzNzU6c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzc2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTI1ODY9c3RhdGljIGludCBzdGF0dXNfY2IoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNTkxLVxuZHJpdmVycy9ibG9jay9uYmQuYzoyNTkyOnN0YXRpYyBpbnQgbmJkX2dlbmxfc3RhdHVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI1OTMte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjY1MS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MjY1MjpzdGF0aWMgdm9pZCBuYmRfY29ubmVjdF9yZXBseShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBpbnQgaW5kZXgpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI2NTMte1xuLS1cbmRyaXZlcnMvYmxvY2svbmJkLmMtMjY3NS1cbmRyaXZlcnMvYmxvY2svbmJkLmM6MjY3NjpzdGF0aWMgdm9pZCBuYmRfbWNhc3RfaW5kZXgoaW50IGluZGV4KVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjc3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI2OTktXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI3MDA6c3RhdGljIHZvaWQgbmJkX2RlYWRfbGlua193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjcwMS17XG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYz0yNzA4PXN0YXRpYyBpbnQgX19pbml0IG5iZF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9uYmQuYy0yNzYwLVxuZHJpdmVycy9ibG9jay9uYmQuYzoyNzYxOnN0YXRpYyBpbnQgbmJkX2V4aXRfY2IoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI3NjIte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDAwOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBOQkQgS2VybmVsIE1vZHVsZSBTeW1ib2xzKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkgbmVlZCB0byBpZGVudGlmeSBrZXkgZnVuY3Rpb25zIGluIHRoaXMgTkJEIG1vZHVsZS4gSW5pdGlhbGx5LCBJIHdhcyB0aGlua2luZyBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBgbmJkX2dlbmxfY29ubmVjdGAsIGBuYmRfZ2VubF9kaXNjb25uZWN0YCwgYW5kIGBuYmRfaW9jdGxgIHdvdWxkIGJlIGdvb2QgY2FuZGlkYXRlcyBiZWNhdXNlIHRoZXkmIzM5O3JlIGFsbCBzdGF0aWMuIEkgZmlndXJlZCBJJiMzOTtkIHVzZSBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBgbmJkX2lvY3RsYCwgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCwgYW5kIGBuYmRfc2VuZF9jbWRgIGFzIG15IGluaXRpYWwgRm9jdXNTeW1ib2xzLgoKSG93ZXZlciwgSSBwYXVzZWQgYXQgYG5iZF9zZW5kX2NtZGAgYmVjYXVzZSBpdCYjMzk7cyBzdGF0aWMgYW5kIHRoZSBjb21waWxlciAqbWlnaHQqIGlubGluZSBpdC4gQnV0IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGJvdGggYG5iZF9wZW5kaW5nX2NtZF93b3JrYCBhbmQgYG5iZF9oYW5kbGVfY21kYC4gQm90aCBhcmUgYWxzbyBxdWl0ZSBsYXJnZSBmdW5jdGlvbnMsIHNvIGl0JiMzOTtzIHByb2JhYmx5IG5vdCBpbmxpbmVkLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBzaXplIHRvIGJlIGNlcnRhaW4uIFllcywgYG5iZF9zZW5kX2NtZGAgaXMgMTUwIGxpbmVzLCBzbyBsaWtlbHkgbm90IGlubGluZWQuCgpPa2F5LCBJIHdhcyBsZWFuaW5nIHRvd2FyZHMgaW5jbHVkaW5nIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBhbmQgYG5iZF9pb2N0bGAuCgpCdXQgdGhlbiBJIHJlLXJlYWQgdGhlIGluc3RydWN0aW9uczogJiMzNDtQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuJiMzNDsKCkFoLCByaWdodC4gU2luY2UgYWxsIHRoZXNlIGZ1bmN0aW9ucyBJIGxpc3RlZCAqYXJlKiBzdGF0aWMsIHRoZXkgYmVjb21lIHRoZSBlbnRyeSBwb2ludHMuIFNvLCBJIHdpbGwganVzdCBsaXN0IHRoZW0gYXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBzaW5jZSB0aGV5IGFyZSB0aGUgZW50cnkgcG9pbnRzLgoKTm93LCBsZXQmIzM5O3MgY2hlY2sgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIGZvciBgQkxLX0RFVl9OQkRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9OQkQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTE5ND1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTUtXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTk2OmNvbmZpZyBCTEtfREVWX05CRFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEJsb2NrIERyaXZlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyBjZXJ0YWluIGZlYXR1cmVzIGFyZSBlbmFibGVkIG9yIGRpc2FibGVkLiBNeSBtZW50YWwgY2hlY2tsaXN0IHNheXMsICYjMzQ7V2hlcmUgd291bGQgSSBmaW5kIHRoZSAqY29yZSogY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBibG9jayBkcml2ZXJzPyYjMzQ7IE15IGV4cGVyaWVuY2UgaW1tZWRpYXRlbHkgc3RlZXJzIG1lIHRvd2FyZHMgdGhlIGBLY29uZmlnYCBmaWxlcywgd2hpY2ggaGFuZGxlIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjaG9pY2VzIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBkcml2ZXJzIGRpcmVjdG9yeS4gSSBrbm93IHRoYXQgYGRyaXZlcnMvYmxvY2svYCBpcyBhIGxpa2VseSBzcG90IGFuZCB0aGUgS2NvbmZpZyB0aGVyZSB3aWxsIGNvbnRhaW4gd2hhdCBJIG5lZWQuIExldCBtZSBnbyBzdHJhaWdodCB0byBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBhbmQgem9vbSBpbiBhcm91bmQgbGluZSAxOTY7IHRoYXQgc2VlbXMgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZXhwbG9yZS4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBmaW5kIHNvbWV0aGluZyByZWxldmFudCB0byB3aGF0IEkmIzM5O20gbG9va2luZyBhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE5MDpcdFx0ICBUaGUgaGlzdG9yaWMgZGVmYXVsdCBpcyA4LiBJZiBhIGxhdGUgMjAxMSB2ZXJzaW9uIG9mIGxvc2V0dXAoOClcbiAxOTE6XHRcdCAgaXMgdXNlZCwgaXQgY2FuIGJlIHNldCB0byAwLCBzaW5jZSBuZWVkZWQgbG9vcCBkZXZpY2VzIGNhbiBiZVxuIDE5MjpcdFx0ICBkeW5hbWljYWxseSBhbGxvY2F0ZWQgd2l0aCB0aGUgL2Rldi9sb29wLWNvbnRyb2wgaW50ZXJmYWNlLlxuIDE5MzpcdFxuIDE5NDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jsb2NrL2RyYmQvS2NvbmZpZ1wmIzM0O1xuIDE5NTpcdFxuIDE5NjpcdGNvbmZpZyBCTEtfREVWX05CRFxuIDE5NzpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0d29yayBibG9jayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuIDE5ODpcdFx0ZGVwZW5kcyBvbiBORVRcbiAxOTk6XHRcdGhlbHBcbiAyMDA6XHRcdCAgU2F5aW5nIFkgaGVyZSB3aWxsIGFsbG93IHlvdXIgY29tcHV0ZXIgdG8gYmUgYSBjbGllbnQgZm9yIG5ldHdvcmtcbiAyMDE6XHRcdCAgYmxvY2sgZGV2aWNlcywgaS5lLiBpdCB3aWxsIGJlIGFibGUgdG8gdXNlIGJsb2NrIGRldmljZXMgZXhwb3J0ZWQgYnlcbiAyMDI6XHRcdCAgc2VydmVycyAobW91bnQgZmlsZSBzeXN0ZW1zIG9uIHRoZW0gZXRjLikuIENvbW11bmljYXRpb24gYmV0d2VlblxuIDIwMzpcdFx0ICBjbGllbnQgYW5kIHNlcnZlciB3b3JrcyBvdmVyIFRDUC9JUCBuZXR3b3JraW5nLCBidXQgdG8gdGhlIGNsaWVudFxuIDIwNDpcdFx0ICBwcm9ncmFtIHRoaXMgaXMgaGlkZGVuOiBpdCBsb29rcyBsaWtlIGEgcmVndWxhciBsb2NhbCBmaWxlIGFjY2VzcyB0b1xuIDIwNTpcdFx0ICBhIGJsb2NrIGRldmljZSBzcGVjaWFsIGZpbGUgc3VjaCBhcyAvZGV2L25kMC5cbiAyMDY6XHRcbiAyMDc6XHRcdCAgTmV0d29yayBibG9jayBkZXZpY2VzIGFsc28gYWxsb3dzIHlvdSB0byBydW4gYSBibG9jay1kZXZpY2UgaW5cbiAyMDg6XHRcdCAgdXNlcmxhbmQgKG1ha2luZyBzZXJ2ZXIgYW5kIGNsaWVudCBwaHlzaWNhbGx5IHRoZSBzYW1lIGNvbXB1dGVyLFxuIDIwOTpcdFx0ICBjb21tdW5pY2F0aW5nIHVzaW5nIHRoZSBsb29wYmFjayBuZXR3b3JrIGRldmljZSkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NDA1CgkJCQkJCQlvdXRwdXQ6IDE0NgoJCQkJCQkJdGhvdWdodHM6IDMzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgTkJEIERyaXZlcioqCgpPa2F5LCBoZXJlJiMzOTtzIGhvdyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoaXMuIFRoaXMgcGF0Y2ggaGluZ2VzIG9uIHRoZSBgTkVUYCBkZXBlbmRlbmN5LCBidXQgcmVhbGx5LCB0aGUgb25seSAqbmVjZXNzYXJ5KiBjb25maWcgSSBzZWUgaXMgYEJMS19ERVZfTkJEYC4gSSYjMzk7bGwgZG91YmxlIGNoZWNrIHRoYXQgYXNzdW1wdGlvbiBqdXN0IHRvIGJlIHN1cmUuCgpSaWdodCwgdGhlIHBhdGNoIGlzIGRlZmluaXRlbHkgdG91Y2hpbmcgYGRyaXZlcnMvYmxvY2svbmJkLmNgLCBhbmQgYEJMS19ERVZfTkJEYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnLgoKU28sIGxldCBtZSBzdW1tYXJpemUgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBUaGlzIGlzIGRlZmluaXRlbHkgYFdvcnRoRnV6emluZ2AsIGJlY2F1c2UgaXQmIzM5O3MgYWRkcmVzc2luZyBpc3N1ZXMgd2l0aCBwYXJ0aWFsIHJlcXVlc3RzIGFuZCBkZWFkIHNvY2tldHMg4oCTIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBOQkQgZHJpdmVyJiMzOTtzIGludGVyYWN0aW9uIHdpdGggdXNlcnNwYWNlIHZpYSBpb2N0bHMgYW5kIE5ldGxpbmsuCgpNeSBpbml0aWFsIGZvY3VzIHN5bWJvbHMgYXJlIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBgbmJkX2lvY3RsYCwgYW5kIGBuYmRfcGVuZGluZ19jbWRfd29ya2AuIEkgaGF2ZSBgQkxLX0RFVl9OQkRgIGVuYWJsZWQgZm9yIHRoZSBmdXp6ZXIuCgpJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIHdpdGggbXkgZm9jdXMuIFRoZSB3b3JrcXVldWUgZnVuY3Rpb24sIGBuYmRfcGVuZGluZ19jbWRfd29ya2AsIGlzIGEgZ29vZCB0YXJnZXQgc2luY2UgaXQmIzM5O3Mgd2hlcmUgdGhlIG1vZGlmaWVkIGNvZGUgcmVzaWRlcy4gYG5iZF9tYXJrX25zb2NrX2RlYWRgIGlzIGFsc28gbW9kaWZpZWQsIGJ1dCBpdCYjMzk7cyBhIHNtYWxsIHN0YXRpYyBmdW5jdGlvbiB0aGF0IG1heSBiZSBpbmxpbmVkLiBJIGFtIGdvaW5nIHRvIG9taXQgaXQgZnJvbSBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuCgpOb3csIGxldCBtZSBpbnZlc3RpZ2F0ZSBgbmJkX3NlbmRfY21kYC4gQWgsIGl0JiMzOTtzIHN0YXRpYy4gQnV0IGl0JiMzOTtzIHJlYXNvbmFibHkgbGFyZ2UsIHNvIGxpa2VseSBub3QgaW5saW5lZC4gSSYjMzk7bGwgc3RpY2sgd2l0aCBpbmNsdWRpbmcgaXQgaW4gbXkgZm9jdXMgbGlzdC4KClRodXMsIG15IGZvY3VzIHN5bWJvbHMgYXJlIG5vdyBgbmJkX3NlbmRfY21kYCwgYG5iZF9wZW5kaW5nX2NtZF93b3JrYCwgYW5kIGBuYmRfcmVjb25uZWN0X3NvY2tldGAuCgpJJiMzOTttIHJlYWR5IHRvIGNhbGwgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05CRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25iZF9zZW5kX2NtZCYjMzQ7LAogICAgJiMzNDtuYmRfcGVuZGluZ19jbWRfd29yayYjMzQ7LAogICAgJiMzNDtuYmRfcmVjb25uZWN0X3NvY2tldCYjMzQ7LAogICAgJiMzNDtuYmRfZ2VubF9yZWNvbmZpZ3VyZSYjMzQ7LAogICAgJiMzNDtuYmRfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5ldHdvcmsgQmxvY2sgRGV2aWNlIChOQkQpIGRyaXZlciB0byBmaXggaGFuZGxpbmcgb2YgcGFydGlhbGx5IHRyYW5zbWl0dGVkIHJlcXVlc3RzIGFuZCBkZWFkIHNvY2tldHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlIE5CRCBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGlvY3RscyBhbmQgbmV0bGluaywgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTkJEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmJkX3NlbmRfY21kJiMzNDssCiAgICAmIzM0O25iZF9wZW5kaW5nX2NtZF93b3JrJiMzNDssCiAgICAmIzM0O25iZF9yZWNvbm5lY3Rfc29ja2V0JiMzNDssCiAgICAmIzM0O25iZF9nZW5sX3JlY29uZmlndXJlJiMzNDssCiAgICAmIzM0O25iZF9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgKE5CRCkgZHJpdmVyIHRvIGZpeCBoYW5kbGluZyBvZiBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkJEIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGxzIGFuZCBuZXRsaW5rLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI0OjE4LjQzMjM5MTIzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NDg4ODkwMjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTkJEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmJkX3NlbmRfY21kXCIsXG4gICAgXCJuYmRfcGVuZGluZ19jbWRfd29ya1wiLFxuICAgIFwibmJkX3JlY29ubmVjdF9zb2NrZXRcIixcbiAgICBcIm5iZF9nZW5sX3JlY29uZmlndXJlXCIsXG4gICAgXCJuYmRfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgKE5CRCkgZHJpdmVyIHRvIGZpeCBoYW5kbGluZyBvZiBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkJEIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGxzIGFuZCBuZXRsaW5rLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6MTguNDMyMzk4OTM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTE1MTE0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNjA4ZTk3MWUyMTg1YmQzNGZhMDNmM2UxOGIxMzkwNGY0OTc4OTk2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTg6MjQ6MTcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9uYmQuYyBiL2RyaXZlcnMvYmxvY2svbmJkLmNcXG5pbmRleCA4ZjEwNzYyZTkwZWY3Li43YTQ2MmE2MjYzMDZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbmJkLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL25iZC5jXFxuQEAgLTMyNyw4ICszMjcsOCBAQCBzdGF0aWMgdm9pZCBuYmRfbWFya19uc29ja19kZWFkKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHN0cnVjdCBuYmRfc29jayAqbnNvY2ssXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXHRuc29jay1cXHUwMDNlZGVhZCA9IHRydWU7XFxuLVxcdG5zb2NrLVxcdTAwM2VwZW5kaW5nID0gTlVMTDtcXG4tXFx0bnNvY2stXFx1MDAzZXNlbnQgPSAwO1xcbitcXHRpZiAoIW5zb2NrLVxcdTAwM2VwZW5kaW5nKVxcbitcXHRcXHRuc29jay1cXHUwMDNlc2VudCA9IDA7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbmJkX3NldF9zaXplKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIGxvZmZfdCBieXRlc2l6ZSwgbG9mZl90IGJsa3NpemUpXFxuQEAgLTc5Myw4ICs3OTMsMTAgQEAgc3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCxcXG4gXFx0ICpcXG4gXFx0ICogV2UgbXVzdCBydW4gZnJvbSBwZW5kaW5nIHdvcmsgZnVuY3Rpb24uXFxuIFxcdCAqICovXFxuLVxcdGlmICh0ZXN0X2JpdChOQkRfQ01EX1BBUlRJQUxfU0VORCwgXFx1MDAyNmNtZC1cXHUwMDNlZmxhZ3MpKVxcbitcXHRpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFxcdTAwMjZjbWQtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRcXHRuYmRfbWFya19uc29ja19kZWFkKG5iZCwgbnNvY2ssIDEpO1xcbiBcXHRcXHRyZXR1cm4gQkxLX1NUU19PSztcXG4rXFx0fVxcbiBcXG4gXFx0LyogcmV0cnkgb24gYSBkaWZmZXJlbnQgc29ja2V0ICovXFxuIFxcdGRldl9lcnJfcmF0ZWxpbWl0ZWQoZGlza190b19kZXYobmJkLVxcdTAwM2VkaXNrKSxcXG5AQCAtODI2LDggKzgyOCwxOCBAQCBzdGF0aWMgdm9pZCBuYmRfcGVuZGluZ19jbWRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdFxcdGlmICghbnNvY2stXFx1MDAzZXBlbmRpbmcpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXG4rXFx0XFx0aWYgKG5zb2NrLVxcdTAwM2VkZWFkKVxcbitcXHRcXHRcXHRnb3RvIGRlYWQ7XFxuK1xcbiBcXHRcXHQvKiBkb24ndCBib3RoZXIgdGltZW91dCBoYW5kbGVyIGZvciBwYXJ0aWFsIHNlbmRpbmcgKi9cXG4gXFx0XFx0aWYgKFJFQURfT05DRShqaWZmaWVzKSArIG1zZWNzX3RvX2ppZmZpZXMod2FpdF9tcykgXFx1MDAzZT0gZGVhZGxpbmUpIHtcXG4rXFx0XFx0XFx0LypcXG4rXFx0XFx0XFx0ICogVGhlIHNvY2tldCBjb250YWlucyBhIHBhcnRpYWxseSB0cmFuc21pdHRlZCByZXF1ZXN0XFxuK1xcdFxcdFxcdCAqIGFuZCBjYW5ub3QgYmUgcmV1c2VkIGZvciBhbm90aGVyIE5CRCByZXF1ZXN0LlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0bmJkX21hcmtfbnNvY2tfZGVhZChuYmQsIG5zb2NrLCAxKTtcXG4rXFx0XFx0XFx0bnNvY2stXFx1MDAzZXBlbmRpbmcgPSBOVUxMO1xcbitcXHRcXHRcXHRuc29jay1cXHUwMDNlc2VudCA9IDA7XFxuIFxcdFxcdFxcdGNtZC1cXHUwMDNlc3RhdHVzID0gQkxLX1NUU19JT0VSUjtcXG4gXFx0XFx0XFx0YmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocmVxKTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTg0MCw2ICs4NTIsMTggQEAgc3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBvdXQ6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2Y21kLVxcdTAwM2Vsb2NrKTtcXG4gXFx0bmJkX2NvbmZpZ19wdXQobmJkKTtcXG4rXFx0cmV0dXJuO1xcbitcXG4rXFx0LyogQ29tcGxldGUgdGhlIHJlcXVlc3QgaGVyZTsgbmJkX2NsZWFyX3JlcSgpIHdpbGwgbm90IGhhbmRsZSBpdC4gKi9cXG4rZGVhZDpcXG4rXFx0bnNvY2stXFx1MDAzZXBlbmRpbmcgPSBOVUxMO1xcbitcXHRuc29jay1cXHUwMDNlc2VudCA9IDA7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2bnNvY2stXFx1MDAzZXR4X2xvY2spO1xcbitcXHRjbGVhcl9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFxcdTAwMjZjbWQtXFx1MDAzZWZsYWdzKTtcXG4rXFx0Y21kLVxcdTAwM2VzdGF0dXMgPSBCTEtfU1RTX0lPRVJSO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmNtZC1cXHUwMDNlbG9jayk7XFxuK1xcdGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0KHJlcSk7XFxuK1xcdG5iZF9jb25maWdfcHV0KG5iZCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbmJkX3JlYWRfcmVwbHkoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IHNvY2tldCAqc29jayxcXG5AQCAtMTM3Niw2ICsxNDAwLDEwIEBAIHN0YXRpYyBpbnQgbmJkX3JlY29ubmVjdF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuIFxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNvY2stXFx1MDAzZXR4X2xvY2spO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAobnNvY2stXFx1MDAzZXBlbmRpbmcpIHtcXG4rXFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuc29jay1cXHUwMDNldHhfbG9jayk7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuIFxcdFxcdHNrX3NldF9tZW1hbGxvYyhzb2NrLVxcdTAwM2Vzayk7XFxuIFxcdFxcdGlmIChuYmQtXFx1MDAzZXRhZ19zZXQudGltZW91dClcXG4gXFx0XFx0XFx0c29jay1cXHUwMDNlc2stXFx1MDAzZXNrX3NuZHRpbWVvID0gbmJkLVxcdTAwM2V0YWdfc2V0LnRpbWVvdXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI0OjE4Ljk0NDg2NTk1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc3OTc2NDAzMjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTkJEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmJkX3NlbmRfY21kXCIsXG4gICAgXCJuYmRfcGVuZGluZ19jbWRfd29ya1wiLFxuICAgIFwibmJkX3JlY29ubmVjdF9zb2NrZXRcIixcbiAgICBcIm5iZF9nZW5sX3JlY29uZmlndXJlXCIsXG4gICAgXCJuYmRfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTmV0d29yayBCbG9jayBEZXZpY2UgKE5CRCkgZHJpdmVyIHRvIGZpeCBoYW5kbGluZyBvZiBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBsb2dpYyBvZiB0aGUgTkJEIGRyaXZlciwgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgaW9jdGxzIGFuZCBuZXRsaW5rLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjYwOGU5NzFlMjE4NWJkMzRmYTAzZjNlMThiMTM5MDRmNDk3ODk5NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTg6MjQ6MTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL25iZC5jIGIvZHJpdmVycy9ibG9jay9uYmQuY1xuaW5kZXggOGYxMDc2MmU5MGVmNy4uN2E0NjJhNjI2MzA2YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbmJkLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbmJkLmNcbkBAIC0zMjcsOCArMzI3LDggQEAgc3RhdGljIHZvaWQgbmJkX21hcmtfbnNvY2tfZGVhZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX3NvY2sgKm5zb2NrLFxuIFx0XHR9XG4gXHR9XG4gXHRuc29jay1cdTAwM2VkZWFkID0gdHJ1ZTtcbi1cdG5zb2NrLVx1MDAzZXBlbmRpbmcgPSBOVUxMO1xuLVx0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4rXHRpZiAoIW5zb2NrLVx1MDAzZXBlbmRpbmcpXG4rXHRcdG5zb2NrLVx1MDAzZXNlbnQgPSAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IG5iZF9zZXRfc2l6ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBsb2ZmX3QgYnl0ZXNpemUsIGxvZmZfdCBibGtzaXplKVxuQEAgLTc5Myw4ICs3OTMsMTAgQEAgc3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCxcbiBcdCAqXG4gXHQgKiBXZSBtdXN0IHJ1biBmcm9tIHBlbmRpbmcgd29yayBmdW5jdGlvbi5cbiBcdCAqICovXG4tXHRpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFx1MDAyNmNtZC1cdTAwM2VmbGFncykpXG4rXHRpZiAodGVzdF9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFx1MDAyNmNtZC1cdTAwM2VmbGFncykpIHtcbitcdFx0bmJkX21hcmtfbnNvY2tfZGVhZChuYmQsIG5zb2NrLCAxKTtcbiBcdFx0cmV0dXJuIEJMS19TVFNfT0s7XG4rXHR9XG4gXG4gXHQvKiByZXRyeSBvbiBhIGRpZmZlcmVudCBzb2NrZXQgKi9cbiBcdGRldl9lcnJfcmF0ZWxpbWl0ZWQoZGlza190b19kZXYobmJkLVx1MDAzZWRpc2spLFxuQEAgLTgyNiw4ICs4MjgsMTggQEAgc3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRpZiAoIW5zb2NrLVx1MDAzZXBlbmRpbmcpXG4gXHRcdFx0YnJlYWs7XG4gXG4rXHRcdGlmIChuc29jay1cdTAwM2VkZWFkKVxuK1x0XHRcdGdvdG8gZGVhZDtcbitcbiBcdFx0LyogZG9uJ3QgYm90aGVyIHRpbWVvdXQgaGFuZGxlciBmb3IgcGFydGlhbCBzZW5kaW5nICovXG4gXHRcdGlmIChSRUFEX09OQ0UoamlmZmllcykgKyBtc2Vjc190b19qaWZmaWVzKHdhaXRfbXMpIFx1MDAzZT0gZGVhZGxpbmUpIHtcbitcdFx0XHQvKlxuK1x0XHRcdCAqIFRoZSBzb2NrZXQgY29udGFpbnMgYSBwYXJ0aWFsbHkgdHJhbnNtaXR0ZWQgcmVxdWVzdFxuK1x0XHRcdCAqIGFuZCBjYW5ub3QgYmUgcmV1c2VkIGZvciBhbm90aGVyIE5CRCByZXF1ZXN0LlxuK1x0XHRcdCAqL1xuK1x0XHRcdG5iZF9tYXJrX25zb2NrX2RlYWQobmJkLCBuc29jaywgMSk7XG4rXHRcdFx0bnNvY2stXHUwMDNlcGVuZGluZyA9IE5VTEw7XG4rXHRcdFx0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4gXHRcdFx0Y21kLVx1MDAzZXN0YXR1cyA9IEJMS19TVFNfSU9FUlI7XG4gXHRcdFx0YmxrX21xX2NvbXBsZXRlX3JlcXVlc3QocmVxKTtcbiBcdFx0XHRicmVhaztcbkBAIC04NDAsNiArODUyLDE4IEBAIHN0YXRpYyB2b2lkIG5iZF9wZW5kaW5nX2NtZF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBvdXQ6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2Y21kLVx1MDAzZWxvY2spO1xuIFx0bmJkX2NvbmZpZ19wdXQobmJkKTtcbitcdHJldHVybjtcbitcbitcdC8qIENvbXBsZXRlIHRoZSByZXF1ZXN0IGhlcmU7IG5iZF9jbGVhcl9yZXEoKSB3aWxsIG5vdCBoYW5kbGUgaXQuICovXG4rZGVhZDpcbitcdG5zb2NrLVx1MDAzZXBlbmRpbmcgPSBOVUxMO1xuK1x0bnNvY2stXHUwMDNlc2VudCA9IDA7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2bnNvY2stXHUwMDNldHhfbG9jayk7XG4rXHRjbGVhcl9iaXQoTkJEX0NNRF9QQVJUSUFMX1NFTkQsIFx1MDAyNmNtZC1cdTAwM2VmbGFncyk7XG4rXHRjbWQtXHUwMDNlc3RhdHVzID0gQkxLX1NUU19JT0VSUjtcbitcdG11dGV4X3VubG9jayhcdTAwMjZjbWQtXHUwMDNlbG9jayk7XG4rXHRibGtfbXFfY29tcGxldGVfcmVxdWVzdChyZXEpO1xuK1x0bmJkX2NvbmZpZ19wdXQobmJkKTtcbiB9XG4gXG4gc3RhdGljIGludCBuYmRfcmVhZF9yZXBseShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxuQEAgLTEzNzYsNiArMTQwMCwxMCBAQCBzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxuIFx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc29jay1cdTAwM2V0eF9sb2NrKTtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuK1x0XHRpZiAobnNvY2stXHUwMDNlcGVuZGluZykge1xuK1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc29jay1cdTAwM2V0eF9sb2NrKTtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuIFx0XHRza19zZXRfbWVtYWxsb2Moc29jay1cdTAwM2Vzayk7XG4gXHRcdGlmIChuYmQtXHUwMDNldGFnX3NldC50aW1lb3V0KVxuIFx0XHRcdHNvY2stXHUwMDNlc2stXHUwMDNlc2tfc25kdGltZW8gPSBuYmQtXHUwMDNldGFnX3NldC50aW1lb3V0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6MTguOTQ0ODY3ODYyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU4NzI2ODc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5CRCBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBhZmZlY3RpbmcgYGRyaXZlcnMvYmxvY2svbmJkLmNgLCBkZWFsaW5nIHdpdGggcGFydGlhbCBzZW5kcyBhbmQgZGVhZCBzb2NrZXRzIGluIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSBkcml2ZXIuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBOQkQuLi4gaXMgdGhpcyBmdXp6YWJsZT9cIiBTaW5jZSBJJ20gbG9va2luZyBhdCBgbmJkX21hcmtfbnNvY2tfZGVhZGAsIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCwgYWxsIG9mIHRoZXNlIHNlZW0gbGlrZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW1wYWN0aW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgbmV0d29yayBpbnRlcmFjdGlvbi4gVGhhdCdzIGEgc3Ryb25nIGluZGljYXRvci4gQmxvY2sgZGV2aWNlIGRyaXZlcnMgYXJlIHVzdWFsbHkgYWNjZXNzaWJsZSB2aWEgaW9jdGxzIG9yIG5ldGxpbmssIHdoaWNoIG9wZW5zIHVwIGludGVyZXN0aW5nIGF2ZW51ZXMgZm9yIGNyYWZ0aW5nIGZ1enplZCBpbnB1dHMuXG5cbk5vdywgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMuIEl0J2xsIHByb2JhYmx5IGJlIGluIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIG9yIHNvbWV0aGluZyBlcXVhbGx5IG9idmlvdXMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIGJlIGNydWNpYWwgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nIOKAkyBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgaG93IHRvIGJlc3Qgc2V0IHVwIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQgZm9yIHRoZSBmdXp6ZXIuIE15IGZvY3VzIHdpbGwgYmUgb24gdGhlIGludGVyYWN0aW9ucyB3aXRoIHRoZXNlIGZ1bmN0aW9ucyAtIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gQW55IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIGNvbm5lY3Rpb24gYW5kIGNvbW1hbmQgaGFuZGxpbmcgc2hvdWxkIGJlIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQgbG9va2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2NSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI0OjI0LjUzMjE0MDc0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDU2ODYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OQkRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE5ND1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5Njpjb25maWcgQkxLX0RFVl9OQkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTk3LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDoyNC42MDY3MTcwNjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDk4NTYwMjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkJEIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgQkxLX0RFVl9OQkRgLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gc2VlIHdoZXJlIHRoZSBjaGFuZ2VzIGFyZSwgYW5kIGl0IGxvb2tzIGxpa2UgaXTigJlzOiBgbmJkX21hcmtfbnNvY2tfZGVhZGAsIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC5cblxuUmlnaHQgb2ZmIHRoZSBiYXQsIGBuYmRfc2VuZF9jbWRgIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGFyZSBzY3JlYW1pbmcgXCJGb2N1c1N5bWJvbHNcIiB0byBtZS4gVGhleSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZGlyZWN0IGZ1enppbmcgYXR0ZW50aW9uLiBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCBtaWdodCBub3QgYmUgKmRpcmVjdGx5KiBmdXp6YWJsZSwgYnV0IGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgdGh1cyBhIHBvdGVudGlhbCB0YXJnZXQgZG93biB0aGUgbGluZS4gRmluYWxseSwgYG5iZF9tYXJrX25zb2NrX2RlYWRgIGlzIHN0YXRpYywgd2hpY2ggcmFpc2VzIHRoZSBwb3NzaWJpbGl0eSBvZiBpbmxpbmluZyDigJMgd29ydGggaW52ZXN0aWdhdGluZy5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gd2hldGhlciBgbmJkX3NlbmRfY21kYCBpcyBhY3R1YWxseSBzdGF0aWMuIEJlc3QgdG8gdmVyaWZ5IHRoYXQgdXBmcm9udC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ1MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDoyOS4xMDUyODAwMjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIwNzYzNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmJkX3NlbmRfY21kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz02MjU9c3RhdGljIHZvaWQgbmJkX3NjaGVkX3BlbmRpbmdfd29yayhzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy02NDQtICovXFxuZHJpdmVycy9ibG9jay9uYmQuYzo2NDU6c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfc2VuZF9jbWQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IG5iZF9jbWQgKmNtZCxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTY0Ni1cXHRcXHRcXHRcXHQgaW50IGluZGV4KVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz04MTA9c3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy04MjYtXFx0d2hpbGUgKHRydWUpIHtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjgyNzpcXHRcXHRuYmRfc2VuZF9jbWQobmJkLCBjbWQsIGNtZC1cXHUwMDNlaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtODI4LVxcdFxcdGlmICghbnNvY2stXFx1MDAzZXBlbmRpbmcpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTExNDE9c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfaGFuZGxlX2NtZChzdHJ1Y3QgbmJkX2NtZCAqY21kLCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDAtXFx0fVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTIwMTpcXHRyZXQgPSBuYmRfc2VuZF9jbWQobmJkLCBjbWQsIGluZGV4KTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDItb3V0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDoyOS4xODczNjExNTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjY4MTI2OTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhhdCBjb2RlIHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gYG5iZF9zZW5kX2NtZGAqKlxuXG5Pa2F5LCBzbyBgbmJkX3NlbmRfY21kYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgbWVhbmluZyBpdCdzIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBjb21waWxhdGlvbiB1bml0LiBUaGF0IHN1Z2dlc3RzIGl0J3MgYSBjcml0aWNhbCwgaW50ZXJuYWwgZnVuY3Rpb24sIHByb2JhYmx5IGZvciBoYW5kbGluZyB0aGUgbG93LWxldmVsIGNvbW1hbmQgc2VuZGluZyBsb2dpYy4gTGV0J3Mgc2VlIGhvdyBpdCdzIHVzZWQuIFJpZ2h0LCBpdCdzIGNhbGxlZCBieSBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGFuZCBgbmJkX2hhbmRsZV9jbWRgLiBgbmJkX2hhbmRsZV9jbWRgIGlzIHRoZW4gY2FsbGVkIGJ5IGBuYmRfcXVldWVfcnFgLiBTbywgYG5iZF9xdWV1ZV9ycWAgbGlrZWx5IGluaXRpYXRlcyB0aGUgcHJvY2VzcywgcGFzc2luZyBkb3duIHRoZSBjb21tYW5kIHRvIGBuYmRfaGFuZGxlX2NtZGAsIHdoaWNoIHVsdGltYXRlbHksIHRocm91Z2ggd2hhdGV2ZXIgbG9naWMsIGVuZHMgdXAgY2FsbGluZyB0aGF0IGNyaXRpY2FsIGBuYmRfc2VuZF9jbWRgIGZ1bmN0aW9uLiBUaGlzIHNlZW1zIGxpa2UgYSB0eXBpY2FsIGNvbW1hbmQgcHJvY2Vzc2luZyBwaXBlbGluZS4gYG5iZF9xdWV1ZV9ycWAgcHJvYmFibHkgcHV0cyB0aGUgcmVxdWVzdCBvbiBhIHF1ZXVlLCBgbmJkX2hhbmRsZV9jbWRgIHByb2Nlc3NlcyB0aGUgcmVxdWVzdCBhbmQgdGhlbiBgbmJkX3NlbmRfY21kYCBhY3R1YWxseSBzZW5kcyBpdC4gR29vZCB0byBrbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjA4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6MzMuNDU1NDkxOTc3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0ODc5Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5iZF9xdWV1ZV9ycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MTE2PXN0cnVjdCBuYmRfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM4LS8qXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMzk6ICogVGhpcyBmbGFnIHdpbGwgYmUgc2V0IGlmIG5iZF9xdWV1ZV9ycSgpIHN1Y2NlZWQsIGFuZCB3aWxsIGJlIGNoZWNrZWQgYW5kXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDAtICogY2xlYXJlZCBpbiBjb21wbGV0aW9uLiBCb3RoIHNldHRpbmcgYW5kIGNsZWFyaW5nIG9mIHRoZSBmbGFnIGFyZSBwcm90ZWN0ZWRcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9MTE0MT1zdGF0aWMgYmxrX3N0YXR1c190IG5iZF9oYW5kbGVfY21kKHN0cnVjdCBuYmRfY21kICpjbWQsIGludCBpbmRleClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTIwNy1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEyMDg6c3RhdGljIGJsa19zdGF0dXNfdCBuYmRfcXVldWVfcnEoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMjA5LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBibGtfbXFfcXVldWVfZGF0YSAqYmQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE5NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBibGtfbXFfb3BzIG5iZF9tcV9vcHMgPSB7XFxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTY2OlxcdC5xdWV1ZV9ycVxcdD0gbmJkX3F1ZXVlX3JxLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk2Ny1cXHQuY29tcGxldGVcXHQ9IG5iZF9jb21wbGV0ZV9ycSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6MzMuNTMwMzc2NzAzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODExNzY0NzcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTkJEIFF1ZXVlIGFuZCBSZWNvbm5lY3Rpb24gTG9naWMqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBncm91bmQgbXlzZWxmIGluIHRoZSBjb2RlLiBgbmJkX3F1ZXVlX3JxYCwgdGhhdCdzIHRoZSBicmVhZCBhbmQgYnV0dGVyLCB0aGUgd29ya2hvcnNlIG9mIHRoZSBibG9jayBsYXllciBxdWV1ZSBmdW5jdGlvbiBmb3IgdGhlIE5CRCBkcml2ZXIuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgd2hlcmUgSSdkIGV4cGVjdCB0aGUgYnVsayBvZiBJL08gcmVxdWVzdHMgdG8gYmUgaGFuZGxlZCwgYXMgdGhleSBnZXQgc3VibWl0dGVkLlxuXG5Ob3csIGBuYmRfcmVjb25uZWN0X3NvY2tldGAuLi4gdGhhdCBvbmUgcmluZ3MgYSBiZWxsLiBJdCdzIHJlbGF0ZWQgdG8gaGFuZGxpbmcgc29ja2V0IHJlY29ubmVjdGlvbnMsIHdoaWNoIGltcGxpZXMgZGVhbGluZyB3aXRoIHBvdGVudGlhbCBkaXNydXB0aW9ucyBpbiB0aGUgbmV0d29yayBjb25uZWN0aW9uIHRvIHRoZSBOQkQgc2VydmVyLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcyAqd2hlbiogdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBpbnZva2VkLiBJcyBpdCBqdXN0IGhhcHBlbmluZyBpbiBgbmJkX2lvY3RsYCwgb3IgaXMgdGhlcmUgc29tZXRoaW5nIGVsc2UgYXQgcGxheT8gSXQncyB0aW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSBpZiBuZXRsaW5rIGFsc28gcGxheXMgYSBwYXJ0IGluIGNhbGxpbmcgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCwgc2luY2UgbmV0bGluaydzIHJvbGUgaW4gdGhlIGRyaXZlciBjb3VsZCBiZSBpbmZsdWVuY2luZyB0aGUgc2l0dWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODc1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6NDEuNjQ4MDI4MjUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTc2MjQ1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuYmRfcmVjb25uZWN0X3NvY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MTMwMT1zdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzczLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTM3NDpzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTIzNzU9c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNDk1LVxcdFxcdFxcdGZkID0gKGludClubGFfZ2V0X3UzMihzb2Nrc1tOQkRfU09DS19GRF0pO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjQ5NjpcXHRcXHRcXHRyZXQgPSBuYmRfcmVjb25uZWN0X3NvY2tldChuYmQsIGZkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI0OTctXFx0XFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo0MS43Mjc4MDE2NDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MDY5NDE3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDpcblxuKipEaWdnaW5nIGludG8gdGhlIFJlY29ubmVjdGlvbiBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGlzIGJlaW5nIHRyaWdnZXJlZCBmcm9tIGEgY291cGxlIG9mIGRpZmZlcmVudCBwbGFjZXM6IGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAsIHdoaWNoIGlzIG5ldGxpbmstYmFzZWQsIGFuZCBhbHNvIHRocm91Z2ggYG5iZF9pb2N0bGAuIEludGVyZXN0aW5nLiBUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzaXR1YXRpb24sIG15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgYG5iZF9pb2N0bGAgcGF0aCBmaXJzdC4gSXQncyBvZnRlbiBlYXNpZXIgdG8gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgd2l0aCBpb2N0bHMgYmVjYXVzZSBpdOKAmXMgdXN1YWxseSBtb3JlIHN0cmFpZ2h0Zm9yd2FyZC4gTGV0J3Mgc2VlIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUgYW5kIGhvdyB0aGF04oCZcyBhZmZlY3RpbmcgdGhlIHJlY29ubmVjdGlvbiBwcm9jZXNzLiBUaGlzIG1pZ2h0IGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgdW5kZXJseWluZyBpc3N1ZSwgYW5kIHRoZW4gSSBjYW4gY29tcGFyZSBpdCB0byB0aGUgbmV0bGluayBzaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDQxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6NDUuMDA4NDk5MzA1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODc0Njk1OTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmJkX2lvY3RsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz0xNjQ4PXN0YXRpYyB2b2lkIG5iZF9zZXRfY21kX3RpbWVvdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdTY0IHRpbWVvdXQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NTctLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBjb25maWdfbG9jayBoZWxkICovXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjU4OnN0YXRpYyBpbnQgX19uYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IG5iZF9kZXZpY2UgKm5iZCxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NTktXFx0XFx0ICAgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzA0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTcwNTpzdGF0aWMgaW50IG5iZF9pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzA2LVxcdFxcdCAgICAgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MjctXFx0ICAgIChjbWQgPT0gTkJEX0RJU0NPTk5FQ1QgfHwgY21kID09IE5CRF9DTEVBUl9TT0NLKSlcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3Mjg6XFx0XFx0ZXJyb3IgPSBfX25iZF9pb2N0bChiZGV2LCBuYmQsIGNtZCwgYXJnKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MjktXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xODMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgbmJkX2ZvcHMgPVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODM2LVxcdC5yZWxlYXNlID1cXHRuYmRfcmVsZWFzZSxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4Mzc6XFx0LmlvY3RsID1cXHRuYmRfaW9jdGwsXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxODM4OlxcdC5jb21wYXRfaW9jdGwgPVxcdG5iZF9pb2N0bCxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MzktXFx0LmZyZWVfZGlzayA9XFx0bmJkX2ZyZWVfZGlzayxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6NDUuMjk1OTczMDk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDgxMDYxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIElPQ1RMIGFuZCBSZWNvbm5lY3Rpb24gUGF0aCoqXG5cbkhtbSwgaG9sZCBvbiBhIHNlY29uZC4uLiBJJ20gdHJhY2luZyB0aHJvdWdoIHRoaXMga2VybmVsIGNvZGUsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggdGhlIE5CRCBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gY2xhcmlmeSBhIGRldGFpbCBpbiB0aGUgY29udHJvbCBmbG93LiBJJ20gbG9va2luZyBhdCB0aGUgYF9fbmJkX2lvY3RsYCBmdW5jdGlvbiwgYW5kIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGludm9rZXMgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gSXQncyBhIGtleSBpbnRlcmFjdGlvbiBwb2ludC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgSU9DVEwgb3BlcmF0aW9ucywgaW4gYW55IHNjZW5hcmlvLCBsZWFkIHRvIGEgc29ja2V0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiBBcmUgdGhleSB0aWVkIHRvZ2V0aGVyPyBPciBpcyB0aGUgcmVjb25uZWN0aW9uIHRyaWdnZXJlZCB2aWEgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIHBhdGg/IE15IGluaXRpYWwgYXNzdW1wdGlvbiwgYmFzZWQgb24gcHJldmlvdXMgYW5hbHlzaXMsIGlzIHRoYXQgdGhlc2UgdHdvIGFyZSByZWxhdGVkLiBCdXQgSSBoYXZlIHRvIGNvbmZpcm0uIEl0J3MgYSBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcG90ZW50aWFsbHkgdHJhbnNpZW50IG5ldHdvcmsgaXNzdWVzLCBlc3BlY2lhbGx5IGR1cmluZyBJTyBvcGVyYXRpb25zLiBUaGUgYW5zd2VyIGhlcmUgd2lsbCBkaWN0YXRlIGhvdyBJIGNvbnNpZGVyIHRoZSBvdmVyYWxsIHJlc2lsaWVuY3kgbW9kZWwgb2YgdGhlIE5CRCBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo0OS4wMDQwODE0MzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0MDA4NzM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5iZF9yZWNvbm5lY3Rfc29ja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz0xMzAxPXN0YXRpYyBpbnQgbmJkX2FkZF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzNzMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMzc0OnN0YXRpYyBpbnQgbmJkX3JlY29ubmVjdF9zb2NrZXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzc1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9MjM3NT1zdGF0aWMgaW50IG5iZF9nZW5sX3JlY29uZmlndXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI0OTUtXFx0XFx0XFx0ZmQgPSAoaW50KW5sYV9nZXRfdTMyKHNvY2tzW05CRF9TT0NLX0ZEXSk7XFxuZHJpdmVycy9ibG9jay9uYmQuYzoyNDk2OlxcdFxcdFxcdHJldCA9IG5iZF9yZWNvbm5lY3Rfc29ja2V0KG5iZCwgZmQpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjQ5Ny1cXHRcXHRcXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI0OjQ5LjA5ODA5NDM0M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzM1Mzc2MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBOQkQgU29ja2V0IFJlY29ubmVjdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGZ1bmN0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBpdCdzIG9ubHkgaW52b2tlZCBmcm9tIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAuIFRoYXQncyB0aGUgcHJpbWFyeSBjYWxsc2l0ZTsgZ29vZCB0byBrbm93LiBOb3csIHRoZSBuYXR1cmFsIG5leHQgc3RlcCBpcyB0byBzZWUgd2hlcmUgKnRoYXQqIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCBidXQgYWxzbyBsZXQgbWUgcXVpY2tseSBjaGVjayBvdXQgYF9fbmJkX2lvY3RsYCB0byBtYWtlIHN1cmUgaXQgaXNuJ3QgdXNlZCB0aGVyZSBhcyB3ZWxsIGZvciBzb21lIHJlYXNvbi4gR290dGEgY292ZXIgYWxsIHRoZSBiYXNlcywgYmVjYXVzZSBpb2N0bHMgYXJlIGFsd2F5cyBwcm9uZSB0byBzdXJwcmlzZXMuIEl0J3MgZWFzeSB0byBtaXNzIHNvbWV0aGluZyBpbiB0aGF0IGJpZyBmdW5jdGlvbiwgeW91IGtub3c/IExldCBtZSBqdXN0IGNyb3NzLXJlZmVyZW5jZSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjcwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjQ6NTMuODMzNDc5NTYxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzYwNzk0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuYmRfcmVjb25uZWN0X3NvY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MTMwMT1zdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzczLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTM3NDpzdGF0aWMgaW50IG5iZF9yZWNvbm5lY3Rfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTIzNzU9c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNDk1LVxcdFxcdFxcdGZkID0gKGludClubGFfZ2V0X3UzMihzb2Nrc1tOQkRfU09DS19GRF0pO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjQ5NjpcXHRcXHRcXHRyZXQgPSBuYmRfcmVjb25uZWN0X3NvY2tldChuYmQsIGZkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI0OTctXFx0XFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo1My45MDcxMjI3NTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1NjIzOTc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIENhbGwgU3RhY2sqKlxuXG5BbHJpZ2h0LCBoYW5nIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBUaGUgY29udGV4dCBzdWdnZXN0cyBhIHJlY29uZmlndXJhdGlvbiBldmVudCByZWxhdGVkIHRvIE5CRCwgYW5kIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhpcyBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgZGlyZWN0IGNhbGxlcnMuIE9rYXksIHNvIGl0IGxvb2tzIGxpa2UgaXQncyBvbmx5IGNhbGxlZCBieSBgbmJkX2dlbmxfcmVjb25maWd1cmVgLiBUaW1lIHRvIGRpdmUgZGVlcGVyIGludG8gYG5iZF9nZW5sX3JlY29uZmlndXJlYCBhbmQgc2VlIGhvdyBpdCdzIG9yY2hlc3RyYXRpbmcgdGhlc2UgcmVjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMuIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBsb2dpYyBpcyBsaWtlbHkgcmVzaWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNjQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo1Ny40NjMzNjU0NDhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDg0MDg2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuYmRfZ2VubF9yZWNvbmZpZ3VyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmM9MjM0MD1zdGF0aWMgaW50IG5iZF9nZW5sX2Rpc2Nvbm5lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjM3NC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjIzNzU6c3RhdGljIGludCBuYmRfZ2VubF9yZWNvbmZpZ3VyZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjM3Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTI1MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBuYmRfY29ubmVjdF9nZW5sX29wc1tdID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNTI3LVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI1Mjg6XFx0XFx0LmRvaXRcXHQ9IG5iZF9nZW5sX3JlY29uZmlndXJlLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjUyOS1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNDo1Ny41ODQyMTM5NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTg1MzcyNTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE5CRCBEcml2ZXI6IEEgVGhvdWdodCBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIE5ldHdvcmsgQmxvY2sgRGV2aWNlIGRyaXZlciwgYW5kIGl0J3MgbG9va2luZyBwcm9taXNpbmcgYXMgYSB0YXJnZXQuIEl0J3MgYWNjZXNzaWJsZSB2aWEgbmV0bGluaywgd2hpY2ggaXMgZ29vZC4gVGhlIE5CRCBkcml2ZXIgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSBjYW4gZnV6ei5cblxuVGhlIGNvcmUgY2hhbmdlcyBJJ20gaW50ZXJlc3RlZCBpbiBzZWVtIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBgbmJkX21hcmtfbnNvY2tfZGVhZGAsIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgLCBhbmQgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YC4gVGhpbmtpbmcgYWJvdXQgZm9jdXMgc3ltYm9scywgYG5iZF9yZWNvbm5lY3Rfc29ja2V0YCBhbmQgYG5iZF9nZW5sX3JlY29uZmlndXJlYCBqdW1wIG91dCBhcyBnb29kIHN0YXJ0aW5nIHBvaW50cy5cblxuSSdtIGEgbGl0dGxlIHdhcnkgb2YgYG5iZF9xdWV1ZV9ycWAgYmVjYXVzZSBpdCBzZWVtcyB0byBiZSBhIGhvdC1wYXRoIGZ1bmN0aW9uOyB0aGF0IG1pZ2h0IGNvbXBsaWNhdGUgdGhpbmdzLiBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uLCB3aGljaCAqbWlnaHQqIGJlIGZ1enphYmxlLCBidXQgdGhlbi4uLml0J3Mgc3RhdGljLiBIbW0uIFRoZSBpbnN0cnVjdGlvbnMgZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnRzIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlcnMsIHdoaWNoIGFyZSB0eXBpY2FsbHkgaW5saW5lZC5cblxuSG93ZXZlciwgYG5iZF9nZW5sX3JlY29uZmlndXJlYCAqaXMqIHN0YXRpYywgYnV0IGl0J3MgYSBuZXRsaW5rIGNhbGxiYWNrLCBzbyBpdCdzIHByb2JhYmx5IG5vdCBpbmxpbmVkLiBMZXQgbWUgZG91YmxlLWNoZWNrLiBZZXMsIGBuYmRfcmVjb25uZWN0X3NvY2tldGAgaXMgYWxzbyBzdGF0aWMuIEFuZCBzbyBpcyBgbmJkX2dlbmxfcmVjb25maWd1cmVgLiBPa2F5LCB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBndWlkaW5nIG1lIGhlcmUuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGF2YWlsYWJsZSBpbiB0aGlzIGRyaXZlci5cblxuV2FpdCwgbG9va2luZyBhdCBgbmJkX2lvY3RsYCwgaXQncyBzdGF0aWMgdG9vLiBDcmFwLCBtb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gYG5iZC5jYCBhcmUgcHJvYmFibHkgc3RhdGljLCBzaW5jZSBpdCdzIGEgZHJpdmVyLiBTbywgSSBuZWVkIHRvIHJldGhpbmsgdGhpcyBhcHByb2FjaC5cblxuT2theSwgbGV0J3MganVzdCBpbml0aWFsbHkgaW5jbHVkZSBgbmJkX2dlbmxfcmVjb25maWd1cmVgIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLiBCdXQgaGFuZyBvbi4uLiBgbmJkX3JlY29ubmVjdF9zb2NrZXRgIGlzIHN0YXRpYywgYnV0IGl0J3MgYSBmYWlybHkgbGFyZ2UgZnVuY3Rpb24uIFByb2JhYmx5IG5vdCBpbmxpbmVkLiBMZXQncyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzYyOSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNTowNS4xNjk1ODk2MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjAxNjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qIG5iZF9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL25iZC5jPTU1PXN0YXRpYyBpbnQgbmJkX3RvdGFsX2RldmljZXMgPSAwO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtNTYtXFxuZHJpdmVycy9ibG9jay9uYmQuYzo1NzpzdHJ1Y3QgbmJkX3NvY2sge1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtNTgtXFx0c3RydWN0IHNvY2tldCAqc29jaztcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9NzU9c3RydWN0IGxpbmtfZGVhZF9hcmdzIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtOTEtXFxuZHJpdmVycy9ibG9jay9uYmQuYzo5MjpzdHJ1Y3QgbmJkX2NvbmZpZyB7XFxuZHJpdmVycy9ibG9jay9uYmQuYy05My1cXHR1MzIgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTExMT1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBuYmRfYmxrc2l6ZShzdHJ1Y3QgbmJkX2NvbmZpZyAqY29uZmlnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMTUtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMTY6c3RydWN0IG5iZF9kZXZpY2Uge1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTE3LVxcdHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDg6c3RydWN0IG5iZF9jbWQge1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ5LVxcdHN0cnVjdCBuYmRfZGV2aWNlICpuYmQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjA1LjI0MTc5ODkwOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzY1MTQ2MjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKklkZW50aWZ5aW5nIER5bmFtaWMgRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZSBhcmVhcyB3aGVyZSB0aGUgc3lzdGVtICp0cnVseSogYmVoYXZlcyBkeW5hbWljYWxseS4gU3RhdGljIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIHByZWRpY3RhYmxlIGFuZCB0aWVkIGRpcmVjdGx5IHRvIHRoZSBjb2RlJ3Mgc3RydWN0dXJlIGF0IGNvbXBpbGUgdGltZS4gVGhleSBhcmUgdGhlIGZpeGVkIHBvaW50cy4gVGhlcmVmb3JlLCBhbnkgYW5hbHlzaXMgZm9jdXNlZCBvbiBhZGFwdGl2ZSBiZWhhdmlvciwgcnVudGltZSBtb2RpZmljYXRpb25zLCBvciB0aGUgaW1wYWN0cyBvZiBjb25maWd1cmF0aW9uIG9yIGlucHV0IGRhdGEgbmVlZHMgdG8gZXhjbHVkZSB0aG9zZS4gSSBuZWVkIHRvIGZpbHRlciBvdXQgdGhlIG5vaXNlLiBMZXQncyBmb2N1cyBvdXIgYXR0ZW50aW9uIGJ5IHNlYXJjaGluZywgZGlyZWN0bHksIGZvciB0aG9zZSBmdW5jdGlvbnMgdGhhdCBhcmUgKm5vdCogc3RhdGljLiBUaGlzIHdpbGwgcXVpY2tseSByZXZlYWwgdGhlIGFyZWFzIHRoYXQgYXJlIGNhbmRpZGF0ZXMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBvZiB0aGUgc3lzdGVtJ3MgZHluYW1pYyBiZWhhdmlvcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4NTcsIk91dHB1dFRva2VucyI6NjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNTowOS42MDY5NDgxNzlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNzA4MDM0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjA5LjY5OTY2Njc4M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYxNjQ4MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgYSBgc3RhdGljIGludGAgVmFyaWFibGUgaW4gdGhlIE5CRCBDb250ZXh0KipcblxuSG1tLCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIE5CRCAoTmV0d29yayBCbG9jayBEZXZpY2UpIGltcGxlbWVudGF0aW9uIGhlcmUuIEknbSB3b25kZXJpbmcgaWYgYSBgc3RhdGljIGludCBuYmRfLi4uYCBpcyBhIHBvdGVudGlhbCBzb2x1dGlvbiBmb3Igc29tZXRoaW5nLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgdHJ5aW5nIHRvIGFjaGlldmU/IFdoYXQgaXMgdGhlIHNjb3BlIG9mIHRoYXQgdmFyaWFibGU/IFdoeSBpcyBhIGBzdGF0aWMgaW50YCBiZWluZyBjb25zaWRlcmVkPyBJcyBpdCB0byBtYWludGFpbiBzdGF0ZSBhY3Jvc3MgZnVuY3Rpb24gY2FsbHMsIHBlcmhhcHMgcmVsYXRlZCB0byBhIHNwZWNpZmljIGNvbm5lY3Rpb24gb3Igb3BlcmF0aW9uIHdpdGhpbiB0aGUgTkJEIGRyaXZlcj8gSXMgaXQgYSBjb3VudGVyLCBhIGZsYWcsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgaW1wbGljYXRpb25zIG9mIHVzaW5nIGBzdGF0aWNgIGFyZSBpbnN0YW50bHkgaW4gbXkgbWluZDogc2NvcGUgcmVzdHJpY3Rpb24sIGludGVybmFsIGxpbmthZ2UsIGFuZCBwb3RlbnRpYWwgdGhyZWFkLXNhZmV0eSBjb25jZXJucywgZXNwZWNpYWxseSBpbiBhIG5ldHdvcmsgY29udGV4dCB0aGF0IGxpa2VseSBkZWFscyB3aXRoIG11bHRpcGxlIGNsaWVudHMgc2ltdWx0YW5lb3VzbHkuIEkgbmVlZCB0byBjb25zaWRlciB0aG9zZSBpc3N1ZXMgY2FyZWZ1bGx5LiBOZWVkIHRvIGRldGVybWluZSB0aGUgc3BlY2lmaWMgY29udGV4dCBhbmQgZnVuY3Rpb24gbmFtZSB0byBrbm93IHdoYXQgcHJvYmxlbSB3ZSBhcmUgbG9va2luZyB0byBzb2x2ZSBieSB1c2luZyBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA4OSwiT3V0cHV0VG9rZW5zIjo2MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjEzLjQ2MTMxODU5MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2Mjk0MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMgW2EtekEtWl9dW2EtekEtWjAtOV9dKiBuYmRfW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbmJkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9uYmQuYz0xNjk9c3RhdGljIGludCBwYXJ0X3NoaWZ0O1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTcxOnN0YXRpYyBpbnQgbmJkX2Rldl9kYmdfaW5pdChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MjpzdGF0aWMgdm9pZCBuYmRfZGV2X2RiZ19jbG9zZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MzpzdGF0aWMgdm9pZCBuYmRfY29uZmlnX3B1dChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3NDpzdGF0aWMgdm9pZCBuYmRfY29ubmVjdF9yZXBseShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBpbnQgaW5kZXgpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc1OnN0YXRpYyBpbnQgbmJkX2dlbmxfc3RhdHVzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc2OnN0YXRpYyB2b2lkIG5iZF9kZWFkX2xpbmtfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc3OnN0YXRpYyB2b2lkIG5iZF9kaXNjb25uZWN0X2FuZF9wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCk7XFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzgtXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xNzk9c3RhdGljIGlubGluZSBzdHJ1Y3QgZGV2aWNlICpuYmRfdG9fZGV2KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4My1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4NDpzdGF0aWMgdm9pZCBuYmRfcmVxdWV1ZV9jbWQoc3RydWN0IG5iZF9jbWQgKmNtZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIwNC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjIwNTpzdGF0aWMgdTY0IG5iZF9jbWRfaGFuZGxlKHN0cnVjdCBuYmRfY21kICpjbWQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMDYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMTMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyMTQ6c3RhdGljIHUzMiBuYmRfaGFuZGxlX3RvX3RhZyh1NjQgaGFuZGxlKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjE1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjE4LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjE5OnN0YXRpYyB1MzIgbmJkX2hhbmRsZV90b19jb29raWUodTY0IGhhbmRsZSlcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIyMC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTI1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgYmFja2VuZF9hdHRyID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyNjQ6c3RhdGljIHZvaWQgbmJkX2Rldl9yZW1vdmUoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI2NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4MS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI4MjpzdGF0aWMgdm9pZCBuYmRfZGV2X3JlbW92ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4My17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI4Ni1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI4NzpzdGF0aWMgdm9pZCBuYmRfcHV0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yODgte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yOTgtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyOTk6c3RhdGljIGludCBuYmRfZGlzY29ubmVjdGVkKHN0cnVjdCBuYmRfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0zMDAte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0zMDQtXFxuZHJpdmVycy9ibG9jay9uYmQuYzozMDU6c3RhdGljIHZvaWQgbmJkX21hcmtfbnNvY2tfZGVhZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX3NvY2sgKm5zb2NrLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzA2LVxcdFxcdFxcdFxcdGludCBub3RpZnkpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTMzMy1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjMzNDpzdGF0aWMgaW50IG5iZF9zZXRfc2l6ZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBsb2ZmX3QgYnl0ZXNpemUsIGxvZmZfdCBibGtzaXplKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzM1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzg0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6Mzg1OnN0YXRpYyB2b2lkIG5iZF9jb21wbGV0ZV9ycShzdHJ1Y3QgcmVxdWVzdCAqcmVxKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMzg2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9NjEyPXN0YXRpYyBpbmxpbmUgaW50IHdhc19pbnRlcnJ1cHRlZChpbnQgcmVzdWx0KVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy02MjQtICovXFxuZHJpdmVycy9ibG9jay9uYmQuYzo2MjU6c3RhdGljIHZvaWQgbmJkX3NjaGVkX3BlbmRpbmdfd29yayhzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtNjI2LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuYmRfc29jayAqbnNvY2ssXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTY0NC0gKi9cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjY0NTpzdGF0aWMgYmxrX3N0YXR1c190IG5iZF9zZW5kX2NtZChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCBzdHJ1Y3QgbmJkX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtNjQ2LVxcdFxcdFxcdFxcdCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTgwOS0vKiBoYW5kbGUgcGFydGlhbCBzZW5kaW5nICovXFxuZHJpdmVycy9ibG9jay9uYmQuYzo4MTA6c3RhdGljIHZvaWQgbmJkX3BlbmRpbmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtODExLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtODY4LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6ODY5OnN0YXRpYyBpbnQgbmJkX3JlYWRfcmVwbHkoc3RydWN0IG5iZF9kZXZpY2UgKm5iZCwgc3RydWN0IHNvY2tldCAqc29jayxcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTg3MC1cXHRcXHRcXHQgIHN0cnVjdCBuYmRfcmVwbHkgKnJlcGx5KVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz05OTQ9c3RhdGljIHZvaWQgcmVjdl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1My1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEwNTQ6c3RhdGljIGJvb2wgbmJkX2NsZWFyX3JlcShzdHJ1Y3QgcmVxdWVzdCAqcmVxLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTA1NS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNzMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMDc0OnN0YXRpYyB2b2lkIG5iZF9jbGVhcl9xdWUoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEwNzUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xMTI1PXN0YXRpYyBpbnQgd2FpdF9mb3JfcmVjb25uZWN0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTExNDAtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMTQxOnN0YXRpYyBibGtfc3RhdHVzX3QgbmJkX2hhbmRsZV9jbWQoc3RydWN0IG5iZF9jbWQgKmNtZCwgaW50IGluZGV4KVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTE0Mi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyMDctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMjA4OnN0YXRpYyBibGtfc3RhdHVzX3QgbmJkX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTIwOS1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgYmxrX21xX3F1ZXVlX2RhdGEgKmJkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xMjY3PXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbmJkX3Nsb2NrX2tleVszXTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEyNjgtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxMjY5OnN0YXRpYyB2b2lkIG5iZF9yZWNsYXNzaWZ5X3NvY2tldChzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTI3MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTEyOTg9c3RhdGljIGlubGluZSB2b2lkIG5iZF9yZWNsYXNzaWZ5X3NvY2tldChzdHJ1Y3Qgc29ja2V0ICpzb2NrKSB7fVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xMzAwLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTMwMTpzdGF0aWMgaW50IG5iZF9hZGRfc29ja2V0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQsIHVuc2lnbmVkIGxvbmcgYXJnLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTMwMi1cXHRcXHRcXHQgIGJvb2wgbmV0bGluaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTM3My1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjEzNzQ6c3RhdGljIGludCBuYmRfcmVjb25uZWN0X3NvY2tldChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1bnNpZ25lZCBsb25nIGFyZylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTEzNzUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDM5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTQ0MDpzdGF0aWMgdm9pZCBuYmRfYmRldl9yZXNldChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0MS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0NDYtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNDQ3OnN0YXRpYyB2b2lkIG5iZF9wYXJzZV9mbGFncyhzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ0OC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE0NTU9c3RhdGljIHZvaWQgc2VuZF9kaXNjb25uZWN0cyhzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDc4LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTQ3OTpzdGF0aWMgaW50IG5iZF9kaXNjb25uZWN0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDgwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ4OS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE0OTA6c3RhdGljIHZvaWQgbmJkX2NsZWFyX3NvY2soc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE0OTEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNDk2LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTQ5NzpzdGF0aWMgdm9pZCBuYmRfY29uZmlnX3B1dChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTQ5OC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE1MzUtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNTM2OnN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTUzNy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2MDctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjA4OnN0YXRpYyBpbnQgbmJkX3N0YXJ0X2RldmljZV9pb2N0bChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTYwOS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2MzctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxNjM4OnN0YXRpYyB2b2lkIG5iZF9jbGVhcl9zb2NrX2lvY3RsKHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNjM5LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTY0Ny1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE2NDg6c3RhdGljIHZvaWQgbmJkX3NldF9jbWRfdGltZW91dChzdHJ1Y3QgbmJkX2RldmljZSAqbmJkLCB1NjQgdGltZW91dClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE2NDkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xNjU4PXN0YXRpYyBpbnQgX19uYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IG5iZF9kZXZpY2UgKm5iZCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwNC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE3MDU6c3RhdGljIGludCBuYmRfaW9jdGwoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgYmxrX21vZGVfdCBtb2RlLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTcwNi1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzM0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTczNTpzdGF0aWMgaW50IG5iZF9hbGxvY19hbmRfaW5pdF9jb25maWcoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE3MzYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzY5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTc3MDpzdGF0aWMgaW50IG5iZF9vcGVuKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBibGtfbW9kZV90IG1vZGUpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xNzcxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgxMi1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4MTM6c3RhdGljIHZvaWQgbmJkX3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2spXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODE0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTgyNC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4MjU6c3RhdGljIHZvaWQgbmJkX2ZyZWVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4MjYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xODMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgbmJkX2ZvcHMgPVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODQzLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTg0NDpzdGF0aWMgaW50IG5iZF9kYmdfdGFza3Nfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NDUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0xODU0PURFRklORV9TSE9XX0FUVFJJQlVURShuYmRfZGJnX3Rhc2tzKTtcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE4NTUtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxODU2OnN0YXRpYyBpbnQgbmJkX2RiZ19mbGFnc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTg1Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTE4ODM9REVGSU5FX1NIT1dfQVRUUklCVVRFKG5iZF9kYmdfZmxhZ3MpO1xcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTg4NC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE4ODU6c3RhdGljIGludCBuYmRfZGV2X2RiZ19pbml0KHN0cnVjdCBuYmRfZGV2aWNlICpuYmQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xODg2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkwOS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5MTA6c3RhdGljIHZvaWQgbmJkX2Rldl9kYmdfY2xvc2Uoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MTEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTE0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTkxNTpzdGF0aWMgaW50IG5iZF9kYmdfaW5pdCh2b2lkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTkxNi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MjctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTI4OnN0YXRpYyB2b2lkIG5iZF9kYmdfY2xvc2Uodm9pZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5Mjkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTM0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTkzNTpzdGF0aWMgaW50IG5iZF9kZXZfZGJnX2luaXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5MzYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTM5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MTk0MDpzdGF0aWMgdm9pZCBuYmRfZGV2X2RiZ19jbG9zZShzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk0MS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5NDMtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTQ0OnN0YXRpYyBpbnQgbmJkX2RiZ19pbml0KHZvaWQpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0xOTQ1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk0OC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjE5NDk6c3RhdGljIHZvaWQgbmJkX2RiZ19jbG9zZSh2b2lkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk1MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTE5NTQtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoxOTU1OnN0YXRpYyBpbnQgbmJkX2luaXRfcmVxdWVzdChzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgKnNldCwgc3RydWN0IHJlcXVlc3QgKnJxLFxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMTk1Ni1cXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IGhjdHhfaWR4LCBpbnQgbnVtYV9ub2RlKVxcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYz0yMTE2PW5iZF9kZXZpY2VfcG9saWN5W05CRF9ERVZJQ0VfQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEyMC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjIxMjE6c3RhdGljIGludCBuYmRfZ2VubF9zaXplX3NldChzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBzdHJ1Y3QgbmJkX2RldmljZSAqbmJkKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEyMi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIxMzctXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyMTM4OnN0YXRpYyBpbnQgbmJkX2dlbmxfY29ubmVjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjEzOS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIzMTgtXFxuZHJpdmVycy9ibG9jay9uYmQuYzoyMzE5OnN0YXRpYyB2b2lkIG5iZF9kaXNjb25uZWN0X2FuZF9wdXQoc3RydWN0IG5iZF9kZXZpY2UgKm5iZClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIzMjAte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzM5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjM0MDpzdGF0aWMgaW50IG5iZF9nZW5sX2Rpc2Nvbm5lY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTIzNDEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzc0LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjM3NTpzdGF0aWMgaW50IG5iZF9nZW5sX3JlY29uZmlndXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yMzc2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM9MjU4Nj1zdGF0aWMgaW50IHN0YXR1c19jYihpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjU5MS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI1OTI6c3RhdGljIGludCBuYmRfZ2VubF9zdGF0dXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI1OTMte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjUxLVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjY1MjpzdGF0aWMgdm9pZCBuYmRfY29ubmVjdF9yZXBseShzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBpbnQgaW5kZXgpXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjUzLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjY3NS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI2NzY6c3RhdGljIHZvaWQgbmJkX21jYXN0X2luZGV4KGludCBpbmRleClcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI2Nzcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9uYmQuYy0yNjk5LVxcbmRyaXZlcnMvYmxvY2svbmJkLmM6MjcwMDpzdGF0aWMgdm9pZCBuYmRfZGVhZF9saW5rX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjcwMS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jPTI3MDg9c3RhdGljIGludCBfX2luaXQgbmJkX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbmJkLmMtMjc2MC1cXG5kcml2ZXJzL2Jsb2NrL25iZC5jOjI3NjE6c3RhdGljIGludCBuYmRfZXhpdF9jYihpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL2Jsb2NrL25iZC5jLTI3NjIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNToxMy41Nzc2MjIwMTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ2MzYxODYzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBOQkQgS2VybmVsIE1vZHVsZSBTeW1ib2xzKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBJIG5lZWQgdG8gaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBpbiB0aGlzIE5CRCBtb2R1bGUuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgYG5iZF9nZW5sX3JlY29uZmlndXJlYCwgYG5iZF9nZW5sX2Nvbm5lY3RgLCBgbmJkX2dlbmxfZGlzY29ubmVjdGAsIGFuZCBgbmJkX2lvY3RsYCB3b3VsZCBiZSBnb29kIGNhbmRpZGF0ZXMgYmVjYXVzZSB0aGV5J3JlIGFsbCBzdGF0aWMuIEkgZmlndXJlZCBJJ2QgdXNlIGBuYmRfZ2VubF9yZWNvbmZpZ3VyZWAsIGBuYmRfaW9jdGxgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBhbmQgYG5iZF9zZW5kX2NtZGAgYXMgbXkgaW5pdGlhbCBGb2N1c1N5bWJvbHMuXG5cbkhvd2V2ZXIsIEkgcGF1c2VkIGF0IGBuYmRfc2VuZF9jbWRgIGJlY2F1c2UgaXQncyBzdGF0aWMgYW5kIHRoZSBjb21waWxlciAqbWlnaHQqIGlubGluZSBpdC4gQnV0IGl0J3MgY2FsbGVkIGZyb20gYm90aCBgbmJkX3BlbmRpbmdfY21kX3dvcmtgIGFuZCBgbmJkX2hhbmRsZV9jbWRgLiBCb3RoIGFyZSBhbHNvIHF1aXRlIGxhcmdlIGZ1bmN0aW9ucywgc28gaXQncyBwcm9iYWJseSBub3QgaW5saW5lZC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgc2l6ZSB0byBiZSBjZXJ0YWluLiBZZXMsIGBuYmRfc2VuZF9jbWRgIGlzIDE1MCBsaW5lcywgc28gbGlrZWx5IG5vdCBpbmxpbmVkLlxuXG5Pa2F5LCBJIHdhcyBsZWFuaW5nIHRvd2FyZHMgaW5jbHVkaW5nIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBhbmQgYG5iZF9pb2N0bGAuXG5cbkJ1dCB0aGVuIEkgcmUtcmVhZCB0aGUgaW5zdHJ1Y3Rpb25zOiBcIlByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cIlxuXG5BaCwgcmlnaHQuIFNpbmNlIGFsbCB0aGVzZSBmdW5jdGlvbnMgSSBsaXN0ZWQgKmFyZSogc3RhdGljLCB0aGV5IGJlY29tZSB0aGUgZW50cnkgcG9pbnRzLiBTbywgSSB3aWxsIGp1c3QgbGlzdCB0aGVtIGFzIHRoZSByZWxldmFudCBmdW5jdGlvbnMgc2luY2UgdGhleSBhcmUgdGhlIGVudHJ5IHBvaW50cy5cblxuTm93LCBsZXQncyBjaGVjayB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgZm9yIGBCTEtfREVWX05CRGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MDA5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjIwLjA0MTI0MzkxNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYyOTk4NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX05CRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE5ND1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svZHJiZC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xOTUtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5Njpjb25maWcgQkxLX0RFVl9OQkRcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTk3LVxcdHRyaXN0YXRlIFxcXCJOZXR3b3JrIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNToyMC4zMDQyNDY5NDlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODYxMTU1NDk3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBCbG9jayBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgaW50byBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgaG93IGNlcnRhaW4gZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIE15IG1lbnRhbCBjaGVja2xpc3Qgc2F5cywgXCJXaGVyZSB3b3VsZCBJIGZpbmQgdGhlICpjb3JlKiBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGJsb2NrIGRyaXZlcnM/XCIgTXkgZXhwZXJpZW5jZSBpbW1lZGlhdGVseSBzdGVlcnMgbWUgdG93YXJkcyB0aGUgYEtjb25maWdgIGZpbGVzLCB3aGljaCBoYW5kbGUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNob2ljZXMgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgZHJpdmVycyBkaXJlY3RvcnkuIEkga25vdyB0aGF0IGBkcml2ZXJzL2Jsb2NrL2AgaXMgYSBsaWtlbHkgc3BvdCBhbmQgdGhlIEtjb25maWcgdGhlcmUgd2lsbCBjb250YWluIHdoYXQgSSBuZWVkLiBMZXQgbWUgZ28gc3RyYWlnaHQgdG8gYGRyaXZlcnMvYmxvY2svS2NvbmZpZ2AgYW5kIHpvb20gaW4gYXJvdW5kIGxpbmUgMTk2OyB0aGF0IHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGV4cGxvcmUuIEhvcGVmdWxseSwgSSdsbCBmaW5kIHNvbWV0aGluZyByZWxldmFudCB0byB3aGF0IEknbSBsb29raW5nIGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgwMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE4OjI1OjI4LjkxNTgwNTM2OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHQgIFRoZSBoaXN0b3JpYyBkZWZhdWx0IGlzIDguIElmIGEgbGF0ZSAyMDExIHZlcnNpb24gb2YgbG9zZXR1cCg4KVxcbiAxOTE6XFx0XFx0ICBpcyB1c2VkLCBpdCBjYW4gYmUgc2V0IHRvIDAsIHNpbmNlIG5lZWRlZCBsb29wIGRldmljZXMgY2FuIGJlXFxuIDE5MjpcXHRcXHQgIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCB3aXRoIHRoZSAvZGV2L2xvb3AtY29udHJvbCBpbnRlcmZhY2UuXFxuIDE5MzpcXHRcXG4gMTk0OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9ibG9jay9kcmJkL0tjb25maWdcXFwiXFxuIDE5NTpcXHRcXG4gMTk2OlxcdGNvbmZpZyBCTEtfREVWX05CRFxcbiAxOTc6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgYmxvY2sgZGV2aWNlIHN1cHBvcnRcXFwiXFxuIDE5ODpcXHRcXHRkZXBlbmRzIG9uIE5FVFxcbiAxOTk6XFx0XFx0aGVscFxcbiAyMDA6XFx0XFx0ICBTYXlpbmcgWSBoZXJlIHdpbGwgYWxsb3cgeW91ciBjb21wdXRlciB0byBiZSBhIGNsaWVudCBmb3IgbmV0d29ya1xcbiAyMDE6XFx0XFx0ICBibG9jayBkZXZpY2VzLCBpLmUuIGl0IHdpbGwgYmUgYWJsZSB0byB1c2UgYmxvY2sgZGV2aWNlcyBleHBvcnRlZCBieVxcbiAyMDI6XFx0XFx0ICBzZXJ2ZXJzIChtb3VudCBmaWxlIHN5c3RlbXMgb24gdGhlbSBldGMuKS4gQ29tbXVuaWNhdGlvbiBiZXR3ZWVuXFxuIDIwMzpcXHRcXHQgIGNsaWVudCBhbmQgc2VydmVyIHdvcmtzIG92ZXIgVENQL0lQIG5ldHdvcmtpbmcsIGJ1dCB0byB0aGUgY2xpZW50XFxuIDIwNDpcXHRcXHQgIHByb2dyYW0gdGhpcyBpcyBoaWRkZW46IGl0IGxvb2tzIGxpa2UgYSByZWd1bGFyIGxvY2FsIGZpbGUgYWNjZXNzIHRvXFxuIDIwNTpcXHRcXHQgIGEgYmxvY2sgZGV2aWNlIHNwZWNpYWwgZmlsZSBzdWNoIGFzIC9kZXYvbmQwLlxcbiAyMDY6XFx0XFxuIDIwNzpcXHRcXHQgIE5ldHdvcmsgYmxvY2sgZGV2aWNlcyBhbHNvIGFsbG93cyB5b3UgdG8gcnVuIGEgYmxvY2stZGV2aWNlIGluXFxuIDIwODpcXHRcXHQgIHVzZXJsYW5kIChtYWtpbmcgc2VydmVyIGFuZCBjbGllbnQgcGh5c2ljYWxseSB0aGUgc2FtZSBjb21wdXRlcixcXG4gMjA5OlxcdFxcdCAgY29tbXVuaWNhdGluZyB1c2luZyB0aGUgbG9vcGJhY2sgbmV0d29yayBkZXZpY2UpLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxODoyNToyOC45MTU5MTQ4MjlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg3MjI1NDc4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgTkJEIERyaXZlcioqXG5cbk9rYXksIGhlcmUncyBob3cgSSdtIHRoaW5raW5nIGFib3V0IHRoaXMuIFRoaXMgcGF0Y2ggaGluZ2VzIG9uIHRoZSBgTkVUYCBkZXBlbmRlbmN5LCBidXQgcmVhbGx5LCB0aGUgb25seSAqbmVjZXNzYXJ5KiBjb25maWcgSSBzZWUgaXMgYEJMS19ERVZfTkJEYC4gSSdsbCBkb3VibGUgY2hlY2sgdGhhdCBhc3N1bXB0aW9uIGp1c3QgdG8gYmUgc3VyZS5cblxuUmlnaHQsIHRoZSBwYXRjaCBpcyBkZWZpbml0ZWx5IHRvdWNoaW5nIGBkcml2ZXJzL2Jsb2NrL25iZC5jYCwgYW5kIGBCTEtfREVWX05CRGAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZy5cblxuU28sIGxldCBtZSBzdW1tYXJpemUgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBUaGlzIGlzIGRlZmluaXRlbHkgYFdvcnRoRnV6emluZ2AsIGJlY2F1c2UgaXQncyBhZGRyZXNzaW5nIGlzc3VlcyB3aXRoIHBhcnRpYWwgcmVxdWVzdHMgYW5kIGRlYWQgc29ja2V0cyDigJMgY29yZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIE5CRCBkcml2ZXIncyBpbnRlcmFjdGlvbiB3aXRoIHVzZXJzcGFjZSB2aWEgaW9jdGxzIGFuZCBOZXRsaW5rLlxuXG5NeSBpbml0aWFsIGZvY3VzIHN5bWJvbHMgYXJlIGBuYmRfc2VuZF9jbWRgLCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLCBgbmJkX2dlbmxfcmVjb25maWd1cmVgLCBgbmJkX2lvY3RsYCwgYW5kIGBuYmRfcGVuZGluZ19jbWRfd29ya2AuIEkgaGF2ZSBgQkxLX0RFVl9OQkRgIGVuYWJsZWQgZm9yIHRoZSBmdXp6ZXIuXG5cbkkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2Ugd2l0aCBteSBmb2N1cy4gVGhlIHdvcmtxdWV1ZSBmdW5jdGlvbiwgYG5iZF9wZW5kaW5nX2NtZF93b3JrYCwgaXMgYSBnb29kIHRhcmdldCBzaW5jZSBpdCdzIHdoZXJlIHRoZSBtb2RpZmllZCBjb2RlIHJlc2lkZXMuIGBuYmRfbWFya19uc29ja19kZWFkYCBpcyBhbHNvIG1vZGlmaWVkLCBidXQgaXQncyBhIHNtYWxsIHN0YXRpYyBmdW5jdGlvbiB0aGF0IG1heSBiZSBpbmxpbmVkLiBJIGFtIGdvaW5nIHRvIG9taXQgaXQgZnJvbSBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuXG5cbk5vdywgbGV0IG1lIGludmVzdGlnYXRlIGBuYmRfc2VuZF9jbWRgLiBBaCwgaXQncyBzdGF0aWMuIEJ1dCBpdCdzIHJlYXNvbmFibHkgbGFyZ2UsIHNvIGxpa2VseSBub3QgaW5saW5lZC4gSSdsbCBzdGljayB3aXRoIGluY2x1ZGluZyBpdCBpbiBteSBmb2N1cyBsaXN0LlxuXG5UaHVzLCBteSBmb2N1cyBzeW1ib2xzIGFyZSBub3cgYG5iZF9zZW5kX2NtZGAsIGBuYmRfcGVuZGluZ19jbWRfd29ya2AsIGFuZCBgbmJkX3JlY29ubmVjdF9zb2NrZXRgLlxuXG5JJ20gcmVhZHkgdG8gY2FsbCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU0MDUsIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTg6MjU6MzYuNzg4MTcyNTUzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMDkyNTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05CRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5iZF9zZW5kX2NtZFwiLFxuICAgIFwibmJkX3BlbmRpbmdfY21kX3dvcmtcIixcbiAgICBcIm5iZF9yZWNvbm5lY3Rfc29ja2V0XCIsXG4gICAgXCJuYmRfZ2VubF9yZWNvbmZpZ3VyZVwiLFxuICAgIFwibmJkX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5ldHdvcmsgQmxvY2sgRGV2aWNlIChOQkQpIGRyaXZlciB0byBmaXggaGFuZGxpbmcgb2YgcGFydGlhbGx5IHRyYW5zbWl0dGVkIHJlcXVlc3RzIGFuZCBkZWFkIHNvY2tldHMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIGNvcmUgbG9naWMgb2YgdGhlIE5CRCBkcml2ZXIsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIGlvY3RscyBhbmQgbmV0bGluaywgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OQkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuYmRfc2VuZF9jbWRcIixcbiAgICBcIm5iZF9wZW5kaW5nX2NtZF93b3JrXCIsXG4gICAgXCJuYmRfcmVjb25uZWN0X3NvY2tldFwiLFxuICAgIFwibmJkX2dlbmxfcmVjb25maWd1cmVcIixcbiAgICBcIm5iZF9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOZXR3b3JrIEJsb2NrIERldmljZSAoTkJEKSBkcml2ZXIgdG8gZml4IGhhbmRsaW5nIG9mIHBhcnRpYWxseSB0cmFuc21pdHRlZCByZXF1ZXN0cyBhbmQgZGVhZCBzb2NrZXRzLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBOQkQgZHJpdmVyLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBpb2N0bHMgYW5kIG5ldGxpbmssIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowm8jpz[1] Phase: Succeeded StartedAt: 2026-08-01 18:25:48 +0000 UTC FinishedAt: 2026-08-01 18:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 18:25:48 +0000 UTC FinishedAt: 2026-08-01 18:25:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2] Phase: Succeeded StartedAt: 2026-08-01 18:25:48 +0000 UTC FinishedAt: 2026-08-01 22:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:25:48 +0000 UTC FinishedAt: 2026-08-01 22:10:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:25:48 +0000 UTC FinishedAt: 2026-08-01 18:25:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:25:48 +0000 UTC FinishedAt: 2026-08-01 18:25:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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-workflowm8jpz/series-workflowm8jpz-convert-artifact-3979577428/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:25:58 +0000 UTC FinishedAt: 2026-08-01 18:44:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:25:58 +0000 UTC FinishedAt: 2026-08-01 18:44:21 +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:*3729e652-51e4-4340-95f8-e6ba53d85fd5,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-workflowm8jpz/series-workflowm8jpz-convert-artifact-3979577428/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": "030a42a8-c2ae-4dca-81c3-f21b993b7597", "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-workflowm8jpz/series-workflowm8jpz-build-action-1836827602/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:25:58 +0000 UTC FinishedAt: 2026-08-01 18:44:11 +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:*3729e652-51e4-4340-95f8-e6ba53d85fd5,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-workflowm8jpz/series-workflowm8jpz-convert-artifact-3979577428/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": "030a42a8-c2ae-4dca-81c3-f21b993b7597", "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-workflowm8jpz/series-workflowm8jpz-build-action-1836827602/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:44:21 +0000 UTC FinishedAt: 2026-08-01 18:44:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:44:21 +0000 UTC FinishedAt: 2026-08-01 18:44:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:44:21 +0000 UTC FinishedAt: 2026-08-01 18:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:44:21 +0000 UTC FinishedAt: 2026-08-01 18:44:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-workflowm8jpz/series-workflowm8jpz-convert-artifact-3252503315/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:44:31 +0000 UTC FinishedAt: 2026-08-01 18:46:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:44:31 +0000 UTC FinishedAt: 2026-08-01 18:46:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*030a42a8-c2ae-4dca-81c3-f21b993b7597,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-workflowm8jpz/series-workflowm8jpz-build-action-1836827602/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-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:46:23 +0000 UTC FinishedAt: 2026-08-01 18:46:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:46:23 +0000 UTC FinishedAt: 2026-08-01 18:46:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:46:23 +0000 UTC FinishedAt: 2026-08-01 19:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:46:23 +0000 UTC FinishedAt: 2026-08-01 19:05:21 +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:*3729e652-51e4-4340-95f8-e6ba53d85fd5,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-workflowm8jpz/series-workflowm8jpz-convert-artifact-3252503315/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": "fb2862ad-d251-4001-9f17-61b95538df35", "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-workflowm8jpz/series-workflowm8jpz-build-action-2612795719/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 18:46:23 +0000 UTC FinishedAt: 2026-08-01 19:05:11 +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:*3729e652-51e4-4340-95f8-e6ba53d85fd5,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-workflowm8jpz/series-workflowm8jpz-convert-artifact-3252503315/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": "fb2862ad-d251-4001-9f17-61b95538df35", "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-workflowm8jpz/series-workflowm8jpz-build-action-2612795719/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:05:21 +0000 UTC FinishedAt: 2026-08-01 19:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:05:21 +0000 UTC FinishedAt: 2026-08-01 19:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:05:21 +0000 UTC FinishedAt: 2026-08-01 19:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:05:21 +0000 UTC FinishedAt: 2026-08-01 19:07:12 +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:*fb2862ad-d251-4001-9f17-61b95538df35,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-workflowm8jpz/series-workflowm8jpz-build-action-2612795719/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-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:21 +0000 UTC FinishedAt: 2026-08-01 22:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:21 +0000 UTC FinishedAt: 2026-08-01 22:10:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"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:*030a42a8-c2ae-4dca-81c3-f21b993b7597,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb2862ad-d251-4001-9f17-61b95538df35,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-workflowm8jpz/series-workflowm8jpz-build-action-1836827602/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-workflowm8jpz/series-workflowm8jpz-build-action-2612795719/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:21 +0000 UTC FinishedAt: 2026-08-01 19:07:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:21 +0000 UTC FinishedAt: 2026-08-01 19:07:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"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-workflowm8jpz/series-workflowm8jpz-convert-artifact-2031432844/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:21 +0000 UTC FinishedAt: 2026-08-01 19:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:21 +0000 UTC FinishedAt: 2026-08-01 19:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:21 +0000 UTC FinishedAt: 2026-08-01 19:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:31 +0000 UTC FinishedAt: 2026-08-01 22:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm8jpz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nbd_send_cmd","nbd_pending_cmd_work","nbd_reconnect_socket","nbd_genl_reconfigure","nbd_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b36c780ae0038c1a82c4a1eb3a4c81afc5d6312b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NBD"],"series_id":"d5d6a6a9-4f5e-43ed-9d96-63f61436a669","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-08-01 19:07:31 +0000 UTC FinishedAt: 2026-08-01 22:10:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*030a42a8-c2ae-4dca-81c3-f21b993b7597,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb2862ad-d251-4001-9f17-61b95538df35,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-workflowm8jpz/series-workflowm8jpz-build-action-1836827602/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-workflowm8jpz/series-workflowm8jpz-build-action-2612795719/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-workflowm8jpz/series-workflowm8jpz-convert-artifact-2031432844/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,}