Name: series-workflow7vl6h Phase: Succeeded StartedAt: 2026-07-13 14:16:50 +0000 UTC FinishedAt: 2026-07-13 19:38:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[0] Phase: Succeeded StartedAt: 2026-07-13 14:16:50 +0000 UTC FinishedAt: 2026-07-13 14:58:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 14:16:50 +0000 UTC FinishedAt: 2026-07-13 14:58:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "b17f3ff2-59f0-4d58-a8b8-7085278c35fc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macvlan_common_newlink", "macvlan_changelink", "macvlan_uninit", "macvlan_fdb_add", "macvlan_fdb_del" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "d5d14725-5a48-484c-876d-026175d0b21a" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDttYWN2bGFuX3VuaW5pdCYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2ZkYl9hZGQmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9mZGJfZGVsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNDo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVmYzk0OTFhOTYwY2Q1NzkyOWM3YzBlYjU5YzI4MDNkZDBiYWJlNGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNDo1NzoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWN2bGFuLmMgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbmluZGV4IDlhNGJjOTlkYmY1M2I1Li40MDVmMmNjMGU1MzYzMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5AQCAtODMsNiAmIzQzOzgzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX3NldF9wYXNzdGhydShzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuIFx0cG9ydC1cdTAwM2VmbGFncyB8PSBNQUNWTEFOX0ZfUEFTU1RIUlU7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgbWFjdmxhbl9jbGVhcl9wYXNzdGhydShzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuJiM0Mzt7XG4mIzQzO1x0cG9ydC1cdTAwM2VmbGFncyBcdTAwMjY9IH5NQUNWTEFOX0ZfUEFTU1RIUlU7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSBib29sIG1hY3ZsYW5fYWRkcl9jaGFuZ2UoY29uc3Qgc3RydWN0IG1hY3ZsYW5fcG9ydCAqcG9ydClcbiB7XG4gXHRyZXR1cm4gcG9ydC1cdTAwM2VmbGFncyBcdTAwMjYgTUFDVkxBTl9GX0FERFJDSEFOR0U7XG5AQCAtNjM3LDcgJiM0Mzs2NDIsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyZGV2ID0gdmxhbi1cdTAwM2Vsb3dlcmRldjtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAobWFjdmxhbl9wYXNzdGhydSh2bGFuLVx1MDAzZXBvcnQpKSB7XG4mIzQzO1x0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcbiBcdFx0aWYgKCEodmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQykpIHtcbiBcdFx0XHRlcnIgPSBkZXZfc2V0X3Byb21pc2N1aXR5KGxvd2VyZGV2LCAxKTtcbiBcdFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuQEAgLTcxMiw3ICYjNDM7NzE3LDcgQEAgc3RhdGljIGludCBtYWN2bGFuX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRldl91Y191bnN5bmMobG93ZXJkZXYsIGRldik7XG4gXHRkZXZfbWNfdW5zeW5jKGxvd2VyZGV2LCBkZXYpO1xuIFxuLVx0aWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSkge1xuJiM0MztcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4gXHRcdGlmICghKHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IE1BQ1ZMQU5fRkxBR19OT1BST01JU0MpKVxuIFx0XHRcdGRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIC0xKTtcbiBcdFx0Z290byBoYXNoX2RlbDtcbkBAIC05NjgsNiAmIzQzOzk3MywyMSBAQCBzdGF0aWMgaW50IG1hY3ZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBtYWN2bGFuX3Jlc3RvcmVfbWFjKHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpXG4mIzQzO3tcbiYjNDM7XHQvKiBJZiB0aGUgbG93ZXIgZGV2aWNlIGFkZHJlc3MgaGFzIGJlZW4gY2hhbmdlZCBieSBwYXNzdGhydVxuJiM0MztcdCAqIG1hY3ZsYW4sIHB1dCBpdCBiYWNrLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhZXRoZXJfYWRkcl9lcXVhbChwb3J0LVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkciwgcG9ydC1cdTAwM2VwZXJtX2FkZHIpKSB7XG4mIzQzO1x0XHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbiYjNDM7XG4mIzQzO1x0XHRzcy5zc19mYW1pbHkgPSBwb3J0LVx1MDAzZWRldi1cdTAwM2V0eXBlO1xuJiM0MztcdFx0bWVtY3B5KFx1MDAyNnNzLl9fZGF0YSwgcG9ydC1cdTAwM2VwZXJtX2FkZHIsIHBvcnQtXHUwMDNlZGV2LVx1MDAzZWFkZHJfbGVuKTtcbiYjNDM7XHRcdGRldl9zZXRfbWFjX2FkZHJlc3MocG9ydC1cdTAwM2VkZXYsIFx1MDAyNnNzLCBOVUxMKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xuQEAgLTk3Nyw4ICYjNDM7OTk3LDE5IEBAIHN0YXRpYyB2b2lkIG1hY3ZsYW5fdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRtYWN2bGFuX2ZsdXNoX3NvdXJjZXMocG9ydCwgdmxhbik7XG4gXHRwb3J0LVx1MDAzZWNvdW50IC09IDE7XG4tXHRpZiAoIXBvcnQtXHUwMDNlY291bnQpXG4tXHRcdG1hY3ZsYW5fcG9ydF9kZXN0cm95KHBvcnQtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAocG9ydC1cdTAwM2Vjb3VudCkge1xuJiM0MztcdFx0LyogSW4gY2FzZSBvZiByZW1haW5pbmcgc291cmNlIGludGVyZmFjZXMgdW5kb1xuJiM0MztcdFx0ICogcGFzc3RocnUtc3BlY2lmaWMgcHJvcGVydGllcy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcbiYjNDM7XHRcdFx0LyogT3JkZXIgaXMgaW1wb3J0YW50LCBkbyBub3QgdHJpZ2dlciBtYWN2bGFuX2RldmljZV9ldmVudCgpLiAqL1xuJiM0MztcdFx0XHRtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1KHBvcnQpO1xuJiM0MztcdFx0XHRtYWN2bGFuX3Jlc3RvcmVfbWFjKHBvcnQpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bWFjdmxhbl9wb3J0X2Rlc3Ryb3kocG9ydC1cdTAwM2VkZXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX2Rldl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTEwNTIsNyAmIzQzOzEwODMsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fZmRiX2FkZChzdHJ1Y3QgbmRtc2cgKm5kbSwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdC8qIFN1cHBvcnQgdW5pY2FzdCBmaWx0ZXIgb25seSBvbiBwYXNzdGhydSBkZXZpY2VzLlxuIFx0ICogTXVsdGljYXN0IGZpbHRlciBzaG91bGQgYmUgYWxsb3dlZCBvbiBhbGwgZGV2aWNlcy5cbiBcdCAqL1xuLVx0aWYgKCFtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tXHUwMDNlcG9ydCkgXHUwMDI2XHUwMDI2IGlzX3VuaWNhc3RfZXRoZXJfYWRkcihhZGRyKSlcbiYjNDM7XHRpZiAodmxhbi1cdTAwM2Vtb2RlICE9IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSBcdTAwMjZcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IE5MTV9GX1JFUExBQ0UpXG5AQCAtMTA3Nyw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfZGVsKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXG4gXHQgKiBNdWx0aWNhc3QgZmlsdGVyIHNob3VsZCBiZSBhbGxvd2VkIG9uIGFsbCBkZXZpY2VzLlxuIFx0ICovXG4tXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSBcdTAwMjZcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxuJiM0MztcdGlmICh2bGFuLVx1MDAzZW1vZGUgIT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVIFx1MDAyNlx1MDAyNiBpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbiBcdGlmIChpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpXG5AQCAtMTMwOCwxNyAmIzQzOzEzMzksNyBAQCBzdGF0aWMgdm9pZCBtYWN2bGFuX3BvcnRfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdH1cbiBcbi1cdC8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1XG4tXHQgKiBtYWN2bGFuLCBwdXQgaXQgYmFjay5cbi1cdCAqL1xuLVx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXHUwMDI2XHUwMDI2XG4tXHQgICAgIWV0aGVyX2FkZHJfZXF1YWwocG9ydC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIsIHBvcnQtXHUwMDNlcGVybV9hZGRyKSkge1xuLVx0XHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbi1cbi1cdFx0c3Muc3NfZmFtaWx5ID0gcG9ydC1cdTAwM2VkZXYtXHUwMDNldHlwZTtcbi1cdFx0bWVtY3B5KFx1MDAyNnNzLl9fZGF0YSwgcG9ydC1cdTAwM2VwZXJtX2FkZHIsIHBvcnQtXHUwMDNlZGV2LVx1MDAzZWFkZHJfbGVuKTtcbi1cdFx0ZGV2X3NldF9tYWNfYWRkcmVzcyhwb3J0LVx1MDAzZWRldiwgXHUwMDI2c3MsIE5VTEwpO1xuLVx0fVxuJiM0MztcdG1hY3ZsYW5fcmVzdG9yZV9tYWMocG9ydCk7XG4gXG4gXHRrZnJlZShwb3J0KTtcbiB9XG5AQCAtMTUwNiwxNSAmIzQzOzE1MjcsNiBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0fVxuIFx0cG9ydCA9IG1hY3ZsYW5fcG9ydF9nZXRfcnRubChsb3dlcmRldik7XG4gXG4tXHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZSAqL1xuLVx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkpIHtcbi1cdFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcbi1cdFx0ICogc3RpbGwgZ290byBkZXN0cm95X21hY3ZsYW5fcG9ydCBmb3IgcmVhZGFiaWxpdHkuXG4tXHRcdCAqL1xuLVx0XHRlcnIgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuLVx0fVxuLVxuIFx0dmxhbi1cdTAwM2Vsb3dlcmRldiA9IGxvd2VyZGV2O1xuIFx0dmxhbi1cdTAwM2VkZXYgICAgICA9IGRldjtcbiBcdHZsYW4tXHUwMDNlcG9ydCAgICAgPSBwb3J0O1xuQEAgLTE1MjcsMTIgJiM0MzsxNTM5LDMxIEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKVxuIFx0XHR2bGFuLVx1MDAzZWZsYWdzID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKTtcbiBcbiYjNDM7XHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZS4gVGhlcmUgbWF5IGJlXG4mIzQzO1x0ICogYWRkaXRpb25hbCBzb3VyY2UgbW9kZSBkZXZpY2VzIGJ1dCBub3RoaW5nIGVsc2UgYXQgdGhlIG1vbWVudC5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIEZpcnN0IGNoZWNrIGlmIGFkZGluZyBhIHNvdXJjZSBtb2RlIGRldmljZSB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpIFx1MDAyNlx1MDAyNiB2bGFuLVx1MDAzZW1vZGUgIT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkge1xuJiM0MztcdFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcbiYjNDM7XHRcdCAqIHN0aWxsIGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQgZm9yIHJlYWRhYmlsaXR5LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRlcnIgPSAtRUlOVkFMO1xuJiM0MztcdFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIE5vdyBjaGVjayBpZiBhZGRpbmcgYSBwYXNzdGhydSBkZXZpY2UgdG8gYW4gZXhpc3Rpbmcgc2V0IG9mIHNvdXJjZSBtb2RlXG4mIzQzO1x0ICogZGV2aWNlcy5cbiYjNDM7XHQgKi9cbiBcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4tXHRcdGlmIChwb3J0LVx1MDAzZWNvdW50KSB7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuJiM0MztcdFx0c3RydWN0IG1hY3ZsYW5fZGV2ICpwO1xuJiM0MztcbiYjNDM7XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucywgbGlzdCkge1xuJiM0MztcdFx0XHRpZiAocC1cdTAwM2Vtb2RlICE9IE1BQ1ZMQU5fTU9ERV9TT1VSQ0UpIHtcbiYjNDM7XHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fVxuLVx0XHRtYWN2bGFuX3NldF9wYXNzdGhydShwb3J0KTtcbiBcdFx0ZXRoX2h3X2FkZHJfaW5oZXJpdChkZXYsIGxvd2VyZGV2KTtcbiBcdH1cbiBcbkBAIC0xNTY0LDcgJiM0MzsxNTk1LDEyIEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIHVucmVnaXN0ZXJfbmV0ZGV2O1xuIFxuLVx0bGlzdF9hZGRfdGFpbF9yY3UoXHUwMDI2dmxhbi1cdTAwM2VsaXN0LCBcdTAwMjZwb3J0LVx1MDAzZXZsYW5zKTtcbiYjNDM7XHQvKiBtYWN2bGFuX2hhbmRsZV9mcmFtZSBleHBlY3RzIHRoZSAob25lIGFuZCBvbmx5KSBwYXNzdGhydSBkZXZpY2UgZmlyc3QuICovXG4mIzQzO1x0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcbiYjNDM7XHRcdG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpO1xuJiM0MztcdFx0bGlzdF9hZGRfcmN1KFx1MDAyNnZsYW4tXHUwMDNlbGlzdCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucyk7XG4mIzQzO1x0fSBlbHNlXG4mIzQzO1x0XHRsaXN0X2FkZF90YWlsX3JjdShcdTAwMjZ2bGFuLVx1MDAzZWxpc3QsIFx1MDAyNnBvcnQtXHUwMDNldmxhbnMpO1xuIFx0dXBkYXRlX3BvcnRfYmNfcXVldWVfbGVuKHZsYW4tXHUwMDNlcG9ydCk7XG4gXHRuZXRpZl9zdGFja2VkX3RyYW5zZmVyX29wZXJzdGF0ZShsb3dlcmRldiwgZGV2KTtcbiBcdGxpbmt3YXRjaF9maXJlX2V2ZW50KGRldik7XG5AQCAtMTYyNywxOSAmIzQzOzE2NjMsMjMgQEAgc3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkYXRhIFx1MDAyNlx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSkge1xuIFx0XHRzZXRfbW9kZSA9IHRydWU7XG4gXHRcdG1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7XG4tXHRcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJiMzOTt0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5ICovXG4tXHRcdGlmICgobW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpICE9XG4tXHRcdCAgICAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkpXG4tXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1NPVVJDRSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHZsYW4tXHUwMDNlbW9kZSAhPSBtb2RlKVxuLVx0XHRcdG1hY3ZsYW5fZmx1c2hfc291cmNlcyh2bGFuLVx1MDAzZXBvcnQsIHZsYW4pO1xuJiM0MztcdFx0aWYgKG1vZGUgIT0gdmxhbi1cdTAwM2Vtb2RlKSB7XG4mIzQzO1x0XHRcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJiMzOTt0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5LFxuJiM0MztcdFx0XHQgKiByZWdhcmRsZXNzIG9mIGV4aXN0aW5nIHNvdXJjZSBpbnRlcmZhY2VzLiBGdXJ0aGVybW9yZSwgc291cmNlXG4mIzQzO1x0XHRcdCAqIGludGVyZmFjZXMgY2FuJiMzOTt0IHN3aXRjaCBtb2RlcyB3aXRoaW4gYSBwYXNzaHRyb3VnaCBwb3J0LlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgfHxcbiYjNDM7XHRcdFx0ICAgIG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFKVxuJiM0MztcdFx0XHRcdG1hY3ZsYW5fZmx1c2hfc291cmNlcyh2bGFuLVx1MDAzZXBvcnQsIHZsYW4pO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSkge1xuIFx0XHRfX3UxNiBmbGFncyA9IG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSk7XG4gXHRcdGJvb2wgcHJvbWlzYyA9IChmbGFncyBeIHZsYW4tXHUwMDNlZmxhZ3MpIFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDO1xuLVx0XHRpZiAobWFjdmxhbl9wYXNzdGhydSh2bGFuLVx1MDAzZXBvcnQpIFx1MDAyNlx1MDAyNiBwcm9taXNjKSB7XG4mIzQzO1x0XHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSBcdTAwMjZcdTAwMjYgcHJvbWlzYykge1xuIFx0XHRcdGludCBlcnI7XG4gXG4gXHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDttYWN2bGFuX3VuaW5pdCYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2ZkYl9hZGQmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9mZGJfZGVsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWZjOTQ5MWE5NjBjZDU3OTI5YzdjMGViNTljMjgwM2RkMGJhYmU0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDE0OjU3OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jCmluZGV4IDlhNGJjOTlkYmY1M2I1Li40MDVmMmNjMGU1MzYzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwpAQCAtODMsNiAmIzQzOzgzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX3NldF9wYXNzdGhydShzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KQogCXBvcnQtJmd0O2ZsYWdzIHw9IE1BQ1ZMQU5fRl9QQVNTVEhSVTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1KHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpCiYjNDM7ewomIzQzOwlwb3J0LSZndDtmbGFncyAmYW1wOz0gfk1BQ1ZMQU5fRl9QQVNTVEhSVTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIGJvb2wgbWFjdmxhbl9hZGRyX2NoYW5nZShjb25zdCBzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KQogewogCXJldHVybiBwb3J0LSZndDtmbGFncyAmYW1wOyBNQUNWTEFOX0ZfQUREUkNIQU5HRTsKQEAgLTYzNyw3ICYjNDM7NjQyLDcgQEAgc3RhdGljIGludCBtYWN2bGFuX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbG93ZXJkZXYgPSB2bGFuLSZndDtsb3dlcmRldjsKIAlpbnQgZXJyOwogCi0JaWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi0mZ3Q7cG9ydCkpIHsKJiM0MzsJaWYgKHZsYW4tJmd0O21vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7CiAJCWlmICghKHZsYW4tJmd0O2ZsYWdzICZhbXA7IE1BQ1ZMQU5fRkxBR19OT1BST01JU0MpKSB7CiAJCQllcnIgPSBkZXZfc2V0X3Byb21pc2N1aXR5KGxvd2VyZGV2LCAxKTsKIAkJCWlmIChlcnIgJmx0OyAwKQpAQCAtNzEyLDcgJiM0Mzs3MTcsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldl91Y191bnN5bmMobG93ZXJkZXYsIGRldik7CiAJZGV2X21jX3Vuc3luYyhsb3dlcmRldiwgZGV2KTsKIAotCWlmIChtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tJmd0O3BvcnQpKSB7CiYjNDM7CWlmICh2bGFuLSZndDttb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkgewogCQlpZiAoISh2bGFuLSZndDtmbGFncyAmYW1wOyBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKSkKIAkJCWRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIC0xKTsKIAkJZ290byBoYXNoX2RlbDsKQEAgLTk2OCw2ICYjNDM7OTczLDIxIEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBtYWN2bGFuX3Jlc3RvcmVfbWFjKHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpCiYjNDM7ewomIzQzOwkvKiBJZiB0aGUgbG93ZXIgZGV2aWNlIGFkZHJlc3MgaGFzIGJlZW4gY2hhbmdlZCBieSBwYXNzdGhydQomIzQzOwkgKiBtYWN2bGFuLCBwdXQgaXQgYmFjay4KJiM0MzsJICovCiYjNDM7CWlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpICZhbXA7JmFtcDsKJiM0MzsJICAgICFldGhlcl9hZGRyX2VxdWFsKHBvcnQtJmd0O2Rldi0mZ3Q7ZGV2X2FkZHIsIHBvcnQtJmd0O3Blcm1fYWRkcikpIHsKJiM0MzsJCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOwomIzQzOwomIzQzOwkJc3Muc3NfZmFtaWx5ID0gcG9ydC0mZ3Q7ZGV2LSZndDt0eXBlOwomIzQzOwkJbWVtY3B5KCZhbXA7c3MuX19kYXRhLCBwb3J0LSZndDtwZXJtX2FkZHIsIHBvcnQtJmd0O2Rldi0mZ3Q7YWRkcl9sZW4pOwomIzQzOwkJZGV2X3NldF9tYWNfYWRkcmVzcyhwb3J0LSZndDtkZXYsICZhbXA7c3MsIE5VTEwpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4gPSBuZXRkZXZfcHJpdihkZXYpOwpAQCAtOTc3LDggJiM0Mzs5OTcsMTkgQEAgc3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCW1hY3ZsYW5fZmx1c2hfc291cmNlcyhwb3J0LCB2bGFuKTsKIAlwb3J0LSZndDtjb3VudCAtPSAxOwotCWlmICghcG9ydC0mZ3Q7Y291bnQpCi0JCW1hY3ZsYW5fcG9ydF9kZXN0cm95KHBvcnQtJmd0O2Rldik7CiYjNDM7CWlmIChwb3J0LSZndDtjb3VudCkgewomIzQzOwkJLyogSW4gY2FzZSBvZiByZW1haW5pbmcgc291cmNlIGludGVyZmFjZXMgdW5kbwomIzQzOwkJICogcGFzc3RocnUtc3BlY2lmaWMgcHJvcGVydGllcy4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKHZsYW4tJmd0O21vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7CiYjNDM7CQkJLyogT3JkZXIgaXMgaW1wb3J0YW50LCBkbyBub3QgdHJpZ2dlciBtYWN2bGFuX2RldmljZV9ldmVudCgpLiAqLwomIzQzOwkJCW1hY3ZsYW5fY2xlYXJfcGFzc3RocnUocG9ydCk7CiYjNDM7CQkJbWFjdmxhbl9yZXN0b3JlX21hYyhwb3J0KTsKJiM0MzsJCX0KJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwltYWN2bGFuX3BvcnRfZGVzdHJveShwb3J0LSZndDtkZXYpOwogfQogCiBzdGF0aWMgdm9pZCBtYWN2bGFuX2Rldl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApAQCAtMTA1Miw3ICYjNDM7MTA4Myw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfYWRkKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCS8qIFN1cHBvcnQgdW5pY2FzdCBmaWx0ZXIgb25seSBvbiBwYXNzdGhydSBkZXZpY2VzLgogCSAqIE11bHRpY2FzdCBmaWx0ZXIgc2hvdWxkIGJlIGFsbG93ZWQgb24gYWxsIGRldmljZXMuCiAJICovCi0JaWYgKCFtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tJmd0O3BvcnQpICZhbXA7JmFtcDsgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKQomIzQzOwlpZiAodmxhbi0mZ3Q7bW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgJmFtcDsmYW1wOyBpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChmbGFncyAmYW1wOyBOTE1fRl9SRVBMQUNFKQpAQCAtMTA3Nyw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfZGVsKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCS8qIFN1cHBvcnQgdW5pY2FzdCBmaWx0ZXIgb25seSBvbiBwYXNzdGhydSBkZXZpY2VzLgogCSAqIE11bHRpY2FzdCBmaWx0ZXIgc2hvdWxkIGJlIGFsbG93ZWQgb24gYWxsIGRldmljZXMuCiAJICovCi0JaWYgKCFtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tJmd0O3BvcnQpICZhbXA7JmFtcDsgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKQomIzQzOwlpZiAodmxhbi0mZ3Q7bW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgJmFtcDsmYW1wOyBpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpCkBAIC0xMzA4LDE3ICYjNDM7MTMzOSw3IEBAIHN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCWtmcmVlX3NrYihza2IpOwogCX0KIAotCS8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1Ci0JICogbWFjdmxhbiwgcHV0IGl0IGJhY2suCi0JICovCi0JaWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgJmFtcDsmYW1wOwotCSAgICAhZXRoZXJfYWRkcl9lcXVhbChwb3J0LSZndDtkZXYtJmd0O2Rldl9hZGRyLCBwb3J0LSZndDtwZXJtX2FkZHIpKSB7Ci0JCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOwotCi0JCXNzLnNzX2ZhbWlseSA9IHBvcnQtJmd0O2Rldi0mZ3Q7dHlwZTsKLQkJbWVtY3B5KCZhbXA7c3MuX19kYXRhLCBwb3J0LSZndDtwZXJtX2FkZHIsIHBvcnQtJmd0O2Rldi0mZ3Q7YWRkcl9sZW4pOwotCQlkZXZfc2V0X21hY19hZGRyZXNzKHBvcnQtJmd0O2RldiwgJmFtcDtzcywgTlVMTCk7Ci0JfQomIzQzOwltYWN2bGFuX3Jlc3RvcmVfbWFjKHBvcnQpOwogCiAJa2ZyZWUocG9ydCk7CiB9CkBAIC0xNTA2LDE1ICYjNDM7MTUyNyw2IEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJfQogCXBvcnQgPSBtYWN2bGFuX3BvcnRfZ2V0X3J0bmwobG93ZXJkZXYpOwogCi0JLyogT25seSAxIG1hY3ZsYW4gZGV2aWNlIGNhbiBiZSBjcmVhdGVkIGluIHBhc3N0aHJ1IG1vZGUgKi8KLQlpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSkgewotCQkvKiBUaGUgbWFjdmxhbiBwb3J0IG11c3QgYmUgbm90IGNyZWF0ZWQgdGhpcyB0aW1lLAotCQkgKiBzdGlsbCBnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0IGZvciByZWFkYWJpbGl0eS4KLQkJICovCi0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7Ci0JfQotCiAJdmxhbi0mZ3Q7bG93ZXJkZXYgPSBsb3dlcmRldjsKIAl2bGFuLSZndDtkZXYgICAgICA9IGRldjsKIAl2bGFuLSZndDtwb3J0ICAgICA9IHBvcnQ7CkBAIC0xNTI3LDEyICYjNDM7MTUzOSwzMSBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChkYXRhICZhbXA7JmFtcDsgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKQogCQl2bGFuLSZndDtmbGFncyA9IG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSk7CiAKJiM0MzsJLyogT25seSAxIG1hY3ZsYW4gZGV2aWNlIGNhbiBiZSBjcmVhdGVkIGluIHBhc3N0aHJ1IG1vZGUuIFRoZXJlIG1heSBiZQomIzQzOwkgKiBhZGRpdGlvbmFsIHNvdXJjZSBtb2RlIGRldmljZXMgYnV0IG5vdGhpbmcgZWxzZSBhdCB0aGUgbW9tZW50LgomIzQzOwkgKgomIzQzOwkgKiBGaXJzdCBjaGVjayBpZiBhZGRpbmcgYSBzb3VyY2UgbW9kZSBkZXZpY2UgdG8gYW4gZXhpc3RpbmcgcGFzc3RocnUgdmxhbi4KJiM0MzsJICovCiYjNDM7CWlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpICZhbXA7JmFtcDsgdmxhbi0mZ3Q7bW9kZSAhPSBNQUNWTEFOX01PREVfU09VUkNFKSB7CiYjNDM7CQkvKiBUaGUgbWFjdmxhbiBwb3J0IG11c3QgYmUgbm90IGNyZWF0ZWQgdGhpcyB0aW1lLAomIzQzOwkJICogc3RpbGwgZ290byBkZXN0cm95X21hY3ZsYW5fcG9ydCBmb3IgcmVhZGFiaWxpdHkuCiYjNDM7CQkgKi8KJiM0MzsJCWVyciA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0OwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIE5vdyBjaGVjayBpZiBhZGRpbmcgYSBwYXNzdGhydSBkZXZpY2UgdG8gYW4gZXhpc3Rpbmcgc2V0IG9mIHNvdXJjZSBtb2RlCiYjNDM7CSAqIGRldmljZXMuCiYjNDM7CSAqLwogCWlmICh2bGFuLSZndDttb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkgewotCQlpZiAocG9ydC0mZ3Q7Y291bnQpIHsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0OwomIzQzOwkJc3RydWN0IG1hY3ZsYW5fZGV2ICpwOwomIzQzOwomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwLCAmYW1wO3BvcnQtJmd0O3ZsYW5zLCBsaXN0KSB7CiYjNDM7CQkJaWYgKHAtJmd0O21vZGUgIT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkgewomIzQzOwkJCQllcnIgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0OwomIzQzOwkJCX0KIAkJfQotCQltYWN2bGFuX3NldF9wYXNzdGhydShwb3J0KTsKIAkJZXRoX2h3X2FkZHJfaW5oZXJpdChkZXYsIGxvd2VyZGV2KTsKIAl9CiAKQEAgLTE1NjQsNyAmIzQzOzE1OTUsMTIgQEAgaW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlpZiAoZXJyKQogCQlnb3RvIHVucmVnaXN0ZXJfbmV0ZGV2OwogCi0JbGlzdF9hZGRfdGFpbF9yY3UoJmFtcDt2bGFuLSZndDtsaXN0LCAmYW1wO3BvcnQtJmd0O3ZsYW5zKTsKJiM0MzsJLyogbWFjdmxhbl9oYW5kbGVfZnJhbWUgZXhwZWN0cyB0aGUgKG9uZSBhbmQgb25seSkgcGFzc3RocnUgZGV2aWNlIGZpcnN0LiAqLwomIzQzOwlpZiAodmxhbi0mZ3Q7bW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHsKJiM0MzsJCW1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpOwomIzQzOwkJbGlzdF9hZGRfcmN1KCZhbXA7dmxhbi0mZ3Q7bGlzdCwgJmFtcDtwb3J0LSZndDt2bGFucyk7CiYjNDM7CX0gZWxzZQomIzQzOwkJbGlzdF9hZGRfdGFpbF9yY3UoJmFtcDt2bGFuLSZndDtsaXN0LCAmYW1wO3BvcnQtJmd0O3ZsYW5zKTsKIAl1cGRhdGVfcG9ydF9iY19xdWV1ZV9sZW4odmxhbi0mZ3Q7cG9ydCk7CiAJbmV0aWZfc3RhY2tlZF90cmFuc2Zlcl9vcGVyc3RhdGUobG93ZXJkZXYsIGRldik7CiAJbGlua3dhdGNoX2ZpcmVfZXZlbnQoZGV2KTsKQEAgLTE2MjcsMTkgJiM0MzsxNjYzLDIzIEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKGRhdGEgJmFtcDsmYW1wOyBkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSkgewogCQlzZXRfbW9kZSA9IHRydWU7CiAJCW1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7Ci0JCS8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJiMzOTt0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5ICovCi0JCWlmICgobW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpICE9Ci0JCSAgICAodmxhbi0mZ3Q7bW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpKQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCWlmICh2bGFuLSZndDttb2RlID09IE1BQ1ZMQU5fTU9ERV9TT1VSQ0UgJmFtcDsmYW1wOwotCQkgICAgdmxhbi0mZ3Q7bW9kZSAhPSBtb2RlKQotCQkJbWFjdmxhbl9mbHVzaF9zb3VyY2VzKHZsYW4tJmd0O3BvcnQsIHZsYW4pOwomIzQzOwkJaWYgKG1vZGUgIT0gdmxhbi0mZ3Q7bW9kZSkgewomIzQzOwkJCS8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJiMzOTt0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5LAomIzQzOwkJCSAqIHJlZ2FyZGxlc3Mgb2YgZXhpc3Rpbmcgc291cmNlIGludGVyZmFjZXMuIEZ1cnRoZXJtb3JlLCBzb3VyY2UKJiM0MzsJCQkgKiBpbnRlcmZhY2VzIGNhbiYjMzk7dCBzd2l0Y2ggbW9kZXMgd2l0aGluIGEgcGFzc2h0cm91Z2ggcG9ydC4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAodmxhbi0mZ3Q7bW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgfHwKJiM0MzsJCQkgICAgbWFjdmxhbl9wYXNzdGhydSh2bGFuLSZndDtwb3J0KSkKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJaWYgKHZsYW4tJmd0O21vZGUgPT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkKJiM0MzsJCQkJbWFjdmxhbl9mbHVzaF9zb3VyY2VzKHZsYW4tJmd0O3BvcnQsIHZsYW4pOwomIzQzOwkJfQogCX0KIAogCWlmIChkYXRhICZhbXA7JmFtcDsgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKSB7CiAJCV9fdTE2IGZsYWdzID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKTsKIAkJYm9vbCBwcm9taXNjID0gKGZsYWdzIF4gdmxhbi0mZ3Q7ZmxhZ3MpICZhbXA7IE1BQ1ZMQU5fRkxBR19OT1BST01JU0M7Ci0JCWlmIChtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tJmd0O3BvcnQpICZhbXA7JmFtcDsgcHJvbWlzYykgewomIzQzOwkJaWYgKHZsYW4tJmd0O21vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVICZhbXA7JmFtcDsgcHJvbWlzYykgewogCQkJaW50IGVycjsKIAogCQkJaWYgKGZsYWdzICZhbXA7IE1BQ1ZMQU5fRkxBR19OT1BST01JU0MpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1ODcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTWFjdmxhbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBtb2RpZnlpbmcgdGhlIGNvcmUgbG9naWMsIHNwZWNpZmljYWxseSBhcm91bmQgYWRkaW5nIHNvdXJjZSBtb2RlIGRldmljZXMgdG8gYSBwYXNzdGhydSBWTEFOIG9yIHZpY2UtdmVyc2EuIFRoZXkmIzM5O3ZlIGdvbmUgaW4gYW5kIHR3ZWFrZWQgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fb3BlbmAsIGBtYWN2bGFuX3N0b3BgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBUaGF0JiMzOTtzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgbWFjdmxhbiBkcml2ZXIuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGZ1bmRhbWVudGFsIG5ldHdvcmtpbmcgYmVoYXZpb3IsIEkgbmVlZCB0byBmbGFnIHRoaXMgZm9yIGZ1enppbmcuIFRoaXMgaXMgZGVmaW5pdGVseSB0aGUgc29ydCBvZiB0aGluZyB0aGF0IGNhbiBpbnRyb2R1Y2Ugc3VidGxlIGJ1Z3MsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggVkxBTiBjb25maWd1cmF0aW9ucy4KCk5leHQsIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFdlIGtub3cgdGhpcyBjb2RlIGlzIHRpZWQgdG8gYENPTkZJR19NQUNWTEFOYCwgYW5kIHRoYXQgaXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgIHRvIGJlIGJ1aWx0LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDVkxBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTE4PW9iai0kKENPTkZJR19BTVQpICYjNDM7PSBhbXQub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX01BQ1ZMQU4pICYjNDM7PSBtYWN2bGFuLm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19NQUNWVEFQKSAmIzQzOz0gbWFjdnRhcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBNQUNWTEFOIE1vZHVsZSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBmdXp6aW5nIHRoZSBNQUNWTEFOIG1vZHVsZSwgYW5kIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGlzIGRlZmluaXRlbHkgYENPTkZJR19NQUNWTEFOYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzOiB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgaW50ZXJlc3RpbmcgZm9yIGZ1enppbmc/IFRoZSBwYXRjaCBJJiMzOTttIGV4YW1pbmluZyBtb2RpZmllcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucy4gQmFzZWQgb24gdGhlIGRpZmYsIGl0IGxvb2tzIGxpa2U6IGBtYWN2bGFuX3NldF9wYXNzdGhydWAsIGBtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1YCwgYG1hY3ZsYW5fb3BlbmAsIGBtYWN2bGFuX3N0b3BgLCBgbWFjdmxhbl9pbml0YCwgYG1hY3ZsYW5fcmVzdG9yZV9tYWNgLCBgbWFjdmxhbl91bmluaXRgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYG1hY3ZsYW5fZmRiX2RlbGAsIGBtYWN2bGFuX3BvcnRfZGVzdHJveWAsIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgIGFsbCBuZWVkIGEgY2xvc2VyIGxvb2suCgpJJiMzOTt2ZSBnb3QgYSBwcmVsaW1pbmFyeSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBwcmlvcml0aXplOiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBgbWFjdmxhbl91bmluaXRgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBKdXN0IHRvIGJlIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYE1BQ1ZMQU5gIGlzIHRoZSBvbmx5IGNvbmZpZyB3ZSBuZWVkLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBBbmQsIGlzIHRoZSBwYXRjaCBpc29sYXRlZCB0byBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYD8gWWVwLCBqdXN0IHRoYXQgb25lIGZpbGUuCgpPa2F5LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgcmUtZXZhbHVhdGUgb3VyIGZvY3VzIGxpc3QgYW5kIGFkZCBgbWFjdmxhbl9vcGVuYCBhbmQgYG1hY3ZsYW5fc3RvcGAgdG8gdGhlIGV2YWx1YXRpb24gbGlzdC4gVGhpcyBpcyBrZXk6IEFyZSB0aGVzZSBmdW5jdGlvbnMgcmVhbGx5ICYjMzQ7aG90LXBhdGhzJiMzNDs/IE5vLCBub25lIG9mIHRoZW0gYXJlIHBlcmZvcm1hbmNlLWNyaXRpY2FsLCBsaWtlIGBtYWN2bGFuX2hhbmRsZV9mcmFtZWAgb3IgYG1hY3ZsYW5fc3RhcnRfeG1pdGAuIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX29wZW5gLCBgbWFjdmxhbl9zdG9wYCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGBtYWN2bGFuX2ZkYl9kZWxgLCBhbGwgYXBwZWFyIHRvIGJlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMuIFRoZXkgc2hvdWxkIGJlIGdvb2QgdGFyZ2V0cy4KClNvLCB0aGUgYEZvY3VzU3ltYm9sc2AgZm9yIG91ciBmdXp6ZXIgc2hvdWxkIGJlOiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBgbWFjdmxhbl91bmluaXRgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB0aG9zZSBmdW5jdGlvbiBuYW1lcyBhcmUgZXhhY3RseSByaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDI3PXN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ4Mi1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDgzOmludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ4NC1cdFx0XHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjI5LX1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjMwOkVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fY29tbW9uX25ld2xpbmspO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MzEtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTYzMj1zdGF0aWMgaW50IG1hY3ZsYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjM1LXtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjM2Olx0cmV0dXJuIG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoZGV2LCBwYXJhbXMsIGV4dGFjayk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYzNy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUzOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHByb2Nlc3NpbmcgdGhpcyBpbmZvcm1hdGlvbjoKCioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIEZ1bmN0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTt2ZSBnb3QgYSBzZXQgb2YgbWFjdmxhbi1yZWxhdGVkIGZ1bmN0aW9ucyB0byBjb25zaWRlcjogYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGFuZCBgbWFjdmxhbl9mZGJfZGVsYC4gTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHBpZWNlcyBmaXQgdG9nZXRoZXIuIEdpdmVuIHRoYXQgSSYjMzk7bSBsb29raW5nIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdmlldywgSSYjMzk7bGwgc3RhcnQgd2l0aCBgbWFjdmxhbl9jaGFuZ2VsaW5rYC4gSSYjMzk7bSBndWVzc2luZyB0aGF0IHRoaXMgaXMgYSBjb3JlIGZ1bmN0aW9uLCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGFwcGx5aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gSXQmIzM5O3MgYSBrZXkgcGllY2UgSSBuZWVkIHRvIHVuZGVyc3RhbmQsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgYmVnaW4gbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMzQ3PXN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MjYtICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTQyNzpzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiwgdTMyIG1vZGUsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQyOC1cdFx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKmRhdGFbXSlcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTQ4Mz1pbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTc1LVx0XHRtYWNtb2RlID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9NT0RFXSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU3NjpcdFx0ZXJyID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU3Ny1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTY1MD1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2RlbGxpbmspO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NTEtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY1MjpzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NTMtXHRcdFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzEwLVx0XHRtYWNtb2RlID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9NT0RFXSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTcxMTpcdFx0cmV0ID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTcxMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTgzMj1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE4MzctXHRvcHMtXHUwMDNlcG9saWN5XHRcdD0gbWFjdmxhbl9wb2xpY3k7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTgzODpcdG9wcy1cdTAwM2VjaGFuZ2VsaW5rXHRcdD0gbWFjdmxhbl9jaGFuZ2VsaW5rO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE4MzktXHRvcHMtXHUwMDNlZ2V0X3NpemVcdFx0PSBtYWN2bGFuX2dldF9zaXplO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBwb2ludHM6CgoqKkFuYWx5emluZyB0aGUgTWFjdmxhbiBNb2R1bGVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgcmV2aXNpdGVkIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBhbmQgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIGxvZ2ljIHRoZXJlLiBTZWVtcyBsaWtlIHRoZSBhZGp1c3RtZW50cyBhbmQgbGluayBzdGF0ZSBoYW5kbGluZyBhcmUgc291bmQuIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoYXQmIzM5O3MgbmV4dD8gV2hhdCBpcyB0aGUgY29ycmVzcG9uZGluZyBkZS1pbml0aWFsaXphdGlvbiByb3V0aW5lIGFuZCB3aGF0IGlzIGl0cyByb2xlPwoKTGV0JiMzOTtzIHNoaWZ0IG91ciBmb2N1cyB0byBgbWFjdmxhbl91bmluaXRgLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRoZSBjbGVhbnVwIG9wZXJhdGlvbnMgaGFuZGxlZCB0aGVyZSBhcmUgcm9idXN0IGFuZCB0aG9yb3VnaC4gV2UgbXVzdCBlbnN1cmUgdGhlcmUgYXJlIG5vIHJlc291cmNlIGxlYWtzIG9yIGRhbmdsaW5nIHBvaW50ZXJzLiBUaGlzIGlzIGxpa2VseSB3aGVyZSBhbnkgc3VidGxlLCBoYXJkLXRvLXJlcHJvZHVjZSBpc3N1ZXMgd2lsbCBtYW5pZmVzdC4gTGV0JiMzOTtzIGRpZyBkZWVwIGludG8gdGhhdCBmdW5jdGlvbiYjMzk7cyBpbXBsZW1lbnRhdGlvbiwgYW5kIGhvdyB0aGUgY2hhbmdlcyBpbiBgbWFjdmxhbl9jaGFuZ2VsaW5rYCB3b3VsZCBpbmZsdWVuY2UgdGhlIHVuaW5pdGlhbGl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fdW5pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz05NzY9c3RhdGljIHZvaWQgbWFjdmxhbl9yZXN0b3JlX21hYyhzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy05OTAtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6OTkxOnN0YXRpYyB2b2lkIG1hY3ZsYW5fdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTkyLXtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTIyMj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY3ZsYW5fbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjIzLVx0Lm5kb19pbml0XHRcdD0gbWFjdmxhbl9pbml0LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjEyMjQ6XHQubmRvX3VuaW5pdFx0XHQ9IG1hY3ZsYW5fdW5pbml0LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMjUtXHQubmRvX29wZW5cdFx0PSBtYWN2bGFuX29wZW4sXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0ODM9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYxMC11bnJlZ2lzdGVyX25ldGRldjpcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjExOlx0LyogbWFjdmxhbl91bmluaXQgd291bGQgZnJlZSB0aGUgbWFjdmxhbiBwb3J0ICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYxMi1cdHVucmVnaXN0ZXJfbmV0ZGV2aWNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MTQtZGVzdHJveV9tYWN2bGFuX3BvcnQ6XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTYxNTpcdC8qIHRoZSBtYWN2bGFuIHBvcnQgbWF5IGJlIGZyZWVkIGJ5IG1hY3ZsYW5fdW5pbml0IHdoZW4gZmFpbCB0byByZWdpc3Rlci5cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjE2LVx0ICogc28gd2UgZGVzdHJveSB0aGUgbWFjdmxhbiBwb3J0IG9ubHkgd2hlbiBpdCYjMzk7cyB2YWxpZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODExMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIHJ1bmRvd24gb2Ygd2hhdCBJJiMzOTttIHRoaW5raW5nOgoKKipDaGVja2luZyB0aGUgTWFjdmxhbiBGREIgRnVuY3Rpb25zKioKCkFscmlnaHQsIHNvIHRoZSBgbWFjdmxhbl91bmluaXRgIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byBzaGlmdCBteSBmb2N1cyB0byB0aGUgY29yZSBvZiB0aGUgTUFDIGFkZHJlc3MgbGVhcm5pbmcgYW5kIGZvcndhcmRpbmcgYmVoYXZpb3IuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGBtYWN2bGFuX2ZkYl9hZGRgIGFuZCBgbWFjdmxhbl9mZGJfZGVsYCBmdW5jdGlvbnMuIFRoZXNlIGFyZSBjcml0aWNhbDsgdGhleSBoYW5kbGUgdGhlIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIE1BQyBhZGRyZXNzIGVudHJpZXMgaW4gdGhlIEZvcndhcmRpbmcgRGF0YWJhc2UgKEZEQikuIEFueSBpc3N1ZXMgaGVyZSwgc3VjaCBhcyBpbmNvcnJlY3QgZGF0YSBzdHJ1Y3R1cmVzLCByYWNlIGNvbmRpdGlvbnMsIG9yIGluY29ycmVjdCBGREIgZW50cnkgdXBkYXRlcywgY291bGQgbGVhZCB0byBzZXJpb3VzIGNvbm5lY3Rpdml0eSBwcm9ibGVtcy4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXhhbWluZSB0aGVpciBsb2dpYywgcGFydGljdWxhcmx5IGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgbmV0d29yayBkZXZpY2UgYW5kIGhvdyB0aGV5IGhhbmRsZSBjb25jdXJyZW5jeS4gSSB3aWxsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBlcnJvcnMgaW4gbXkgdGhpbmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fZmRiX2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTA2ND1zdGF0aWMgaW50IG1hY3ZsYW5fdmxhbl9yeF9raWxsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMDczLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjEwNzQ6c3RhdGljIGludCBtYWN2bGFuX2ZkYl9hZGQoc3RydWN0IG5kbXNnICpuZG0sIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTA3NS1cdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMjIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWFjdmxhbl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjM2LVx0Lm5kb192bGFuX3J4X2tpbGxfdmlkXHQ9IG1hY3ZsYW5fdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMjM3Olx0Lm5kb19mZGJfYWRkXHRcdD0gbWFjdmxhbl9mZGJfYWRkLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMzgtXHQubmRvX2ZkYl9kZWxcdFx0PSBtYWN2bGFuX2ZkYl9kZWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjUKCQkJCQkJCW91dHB1dDogMTk4CgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1hY3ZsYW4gUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYG1hY3ZsYW5fZmRiX2FkZGAgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgIGFyZSBpbmRlZWQgY29ycmVjdCwgYmFzZWQgb24gbXkgYW5hbHlzaXMgb2YgdGhlIGNvZGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBteSBrZXkgZm9jdXMgYXJlYXMgZm9yIGZ1enppbmcgdGhpcyBwYXRjaCBhcmUgZ29pbmcgdG8gYmUgdGhlc2UgY29yZSBmdW5jdGlvbnM6IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX2ZkYl9hZGRgLCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIHRvdWNoZXMuCgpFbmFibGluZyBmdXp6aW5nIGZvciB0aGlzIHdpbGwgcmVxdWlyZSBgTUFDVkxBTmAgdG8gYmUgc2V0IHRvIHRydWUuCgpBbmQgeWVzLCB0aGlzICphYnNvbHV0ZWx5KiB3YXJyYW50cyBmdXp6aW5nLiBUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgZnVuZGFtZW50YWxseSBhbHRlcmluZyB0aGUgTWFjdmxhbiBkcml2ZXImIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgbG9naWMgdG8gaGFuZGxlIHNvdXJjZSBtb2RlIGRldmljZXMgd2l0aGluIGV4aXN0aW5nIHBhc3N0aHJ1IFZMQU5zIGFuZCB2aWNlIHZlcnNhLiBJdCBhbHRlcnMgc2V2ZXJhbCBjb250cm9sIHBhdGhzLCBpbmNsdWRpbmcgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGFuZCBgbWFjdmxhbl9mZGJfZGVsYC4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljLCBpdCBuZWVkcyBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24uIFRoZSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIGFuZCB2dWxuZXJhYmlsaXRpZXMgaXMgcHJlc2VudCwgYW5kIHdlIG5lZWQgdG8gcHJvYmUgdGhlIGNoYW5nZXMgZm9yIHRoYXQgcG9zc2liaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl9jb21tb25fbmV3bGluayYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2NoYW5nZWxpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl91bmluaXQmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9mZGJfYWRkJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fZmRiX2RlbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2dpYyBvZiB0aGUgbWFjdmxhbiBkcml2ZXIsIHNwZWNpZmljYWxseSBhbGxvd2luZyB0aGUgYWRkaXRpb24gb2Ygc291cmNlIG1vZGUgZGV2aWNlcyB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLCBvciBhZGRpbmcgYSBwYXNzdGhydSBkZXZpY2UgdG8gYW4gZXhpc3Rpbmcgc2V0IG9mIHNvdXJjZSBtb2RlIGRldmljZXMuIEl0IG1vZGlmaWVzIHNldmVyYWwgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyBsaWtlIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIG1hY3ZsYW5fY2hhbmdlbGluaywgbWFjdmxhbl91bmluaXQsIG1hY3ZsYW5fZmRiX2FkZCwgYW5kIG1hY3ZsYW5fZmRiX2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDttYWN2bGFuX3VuaW5pdCYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2ZkYl9hZGQmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9mZGJfZGVsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE0OjU3OjI1Ljc5MzExNjQ5MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDU3NTQ2OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX2NvbW1vbl9uZXdsaW5rXCIsXG4gICAgXCJtYWN2bGFuX2NoYW5nZWxpbmtcIixcbiAgICBcIm1hY3ZsYW5fdW5pbml0XCIsXG4gICAgXCJtYWN2bGFuX2ZkYl9hZGRcIixcbiAgICBcIm1hY3ZsYW5fZmRiX2RlbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6MjUuNzkzMTIyMjExWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTM5MjAzMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZmM5NDkxYTk2MGNkNTc5MjljN2MwZWI1OWMyODAzZGQwYmFiZTRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDE0OjU3OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbmluZGV4IDlhNGJjOTlkYmY1M2I1Li40MDVmMmNjMGU1MzYzMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcXG5AQCAtODMsNiArODMsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpXFxuIFxcdHBvcnQtXFx1MDAzZWZsYWdzIHw9IE1BQ1ZMQU5fRl9QQVNTVEhSVTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkIG1hY3ZsYW5fY2xlYXJfcGFzc3RocnUoc3RydWN0IG1hY3ZsYW5fcG9ydCAqcG9ydClcXG4re1xcbitcXHRwb3J0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+TUFDVkxBTl9GX1BBU1NUSFJVO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgbWFjdmxhbl9hZGRyX2NoYW5nZShjb25zdCBzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxcbiB7XFxuIFxcdHJldHVybiBwb3J0LVxcdTAwM2VmbGFncyBcXHUwMDI2IE1BQ1ZMQU5fRl9BRERSQ0hBTkdFO1xcbkBAIC02MzcsNyArNjQyLDcgQEAgc3RhdGljIGludCBtYWN2bGFuX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyZGV2ID0gdmxhbi1cXHUwMDNlbG93ZXJkZXY7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAobWFjdmxhbl9wYXNzdGhydSh2bGFuLVxcdTAwM2Vwb3J0KSkge1xcbitcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcXG4gXFx0XFx0aWYgKCEodmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKSkge1xcbiBcXHRcXHRcXHRlcnIgPSBkZXZfc2V0X3Byb21pc2N1aXR5KGxvd2VyZGV2LCAxKTtcXG4gXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuQEAgLTcxMiw3ICs3MTcsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRkZXZfdWNfdW5zeW5jKGxvd2VyZGV2LCBkZXYpO1xcbiBcXHRkZXZfbWNfdW5zeW5jKGxvd2VyZGV2LCBkZXYpO1xcbiBcXG4tXFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkpIHtcXG4rXFx0aWYgKHZsYW4tXFx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XFxuIFxcdFxcdGlmICghKHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQykpXFxuIFxcdFxcdFxcdGRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIC0xKTtcXG4gXFx0XFx0Z290byBoYXNoX2RlbDtcXG5AQCAtOTY4LDYgKzk3MywyMSBAQCBzdGF0aWMgaW50IG1hY3ZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgbWFjdmxhbl9yZXN0b3JlX21hYyhzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxcbit7XFxuK1xcdC8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1XFxuK1xcdCAqIG1hY3ZsYW4sIHB1dCBpdCBiYWNrLlxcbitcXHQgKi9cXG4rXFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFldGhlcl9hZGRyX2VxdWFsKHBvcnQtXFx1MDAzZWRldi1cXHUwMDNlZGV2X2FkZHIsIHBvcnQtXFx1MDAzZXBlcm1fYWRkcikpIHtcXG4rXFx0XFx0c3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7XFxuK1xcbitcXHRcXHRzcy5zc19mYW1pbHkgPSBwb3J0LVxcdTAwM2VkZXYtXFx1MDAzZXR5cGU7XFxuK1xcdFxcdG1lbWNweShcXHUwMDI2c3MuX19kYXRhLCBwb3J0LVxcdTAwM2VwZXJtX2FkZHIsIHBvcnQtXFx1MDAzZWRldi1cXHUwMDNlYWRkcl9sZW4pO1xcbitcXHRcXHRkZXZfc2V0X21hY19hZGRyZXNzKHBvcnQtXFx1MDAzZWRldiwgXFx1MDAyNnNzLCBOVUxMKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XFxuQEAgLTk3Nyw4ICs5OTcsMTkgQEAgc3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdG1hY3ZsYW5fZmx1c2hfc291cmNlcyhwb3J0LCB2bGFuKTtcXG4gXFx0cG9ydC1cXHUwMDNlY291bnQgLT0gMTtcXG4tXFx0aWYgKCFwb3J0LVxcdTAwM2Vjb3VudClcXG4tXFx0XFx0bWFjdmxhbl9wb3J0X2Rlc3Ryb3kocG9ydC1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKHBvcnQtXFx1MDAzZWNvdW50KSB7XFxuK1xcdFxcdC8qIEluIGNhc2Ugb2YgcmVtYWluaW5nIHNvdXJjZSBpbnRlcmZhY2VzIHVuZG9cXG4rXFx0XFx0ICogcGFzc3RocnUtc3BlY2lmaWMgcHJvcGVydGllcy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmICh2bGFuLVxcdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xcbitcXHRcXHRcXHQvKiBPcmRlciBpcyBpbXBvcnRhbnQsIGRvIG5vdCB0cmlnZ2VyIG1hY3ZsYW5fZGV2aWNlX2V2ZW50KCkuICovXFxuK1xcdFxcdFxcdG1hY3ZsYW5fY2xlYXJfcGFzc3RocnUocG9ydCk7XFxuK1xcdFxcdFxcdG1hY3ZsYW5fcmVzdG9yZV9tYWMocG9ydCk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRtYWN2bGFuX3BvcnRfZGVzdHJveShwb3J0LVxcdTAwM2VkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX2Rldl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0xMDUyLDcgKzEwODMsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fZmRiX2FkZChzdHJ1Y3QgbmRtc2cgKm5kbSwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4gXFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXFxuIFxcdCAqIE11bHRpY2FzdCBmaWx0ZXIgc2hvdWxkIGJlIGFsbG93ZWQgb24gYWxsIGRldmljZXMuXFxuIFxcdCAqL1xcbi1cXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkgXFx1MDAyNlxcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbitcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXFx1MDAyNlxcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbiBcXHRpZiAoZmxhZ3MgXFx1MDAyNiBOTE1fRl9SRVBMQUNFKVxcbkBAIC0xMDc3LDcgKzExMDgsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fZmRiX2RlbChzdHJ1Y3QgbmRtc2cgKm5kbSwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4gXFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXFxuIFxcdCAqIE11bHRpY2FzdCBmaWx0ZXIgc2hvdWxkIGJlIGFsbG93ZWQgb24gYWxsIGRldmljZXMuXFxuIFxcdCAqL1xcbi1cXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkgXFx1MDAyNlxcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbitcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXFx1MDAyNlxcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbiBcXHRpZiAoaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbkBAIC0xMzA4LDE3ICsxMzM5LDcgQEAgc3RhdGljIHZvaWQgbWFjdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1XFxuLVxcdCAqIG1hY3ZsYW4sIHB1dCBpdCBiYWNrLlxcbi1cXHQgKi9cXG4tXFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICFldGhlcl9hZGRyX2VxdWFsKHBvcnQtXFx1MDAzZWRldi1cXHUwMDNlZGV2X2FkZHIsIHBvcnQtXFx1MDAzZXBlcm1fYWRkcikpIHtcXG4tXFx0XFx0c3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7XFxuLVxcbi1cXHRcXHRzcy5zc19mYW1pbHkgPSBwb3J0LVxcdTAwM2VkZXYtXFx1MDAzZXR5cGU7XFxuLVxcdFxcdG1lbWNweShcXHUwMDI2c3MuX19kYXRhLCBwb3J0LVxcdTAwM2VwZXJtX2FkZHIsIHBvcnQtXFx1MDAzZWRldi1cXHUwMDNlYWRkcl9sZW4pO1xcbi1cXHRcXHRkZXZfc2V0X21hY19hZGRyZXNzKHBvcnQtXFx1MDAzZWRldiwgXFx1MDAyNnNzLCBOVUxMKTtcXG4tXFx0fVxcbitcXHRtYWN2bGFuX3Jlc3RvcmVfbWFjKHBvcnQpO1xcbiBcXG4gXFx0a2ZyZWUocG9ydCk7XFxuIH1cXG5AQCAtMTUwNiwxNSArMTUyNyw2IEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdH1cXG4gXFx0cG9ydCA9IG1hY3ZsYW5fcG9ydF9nZXRfcnRubChsb3dlcmRldik7XFxuIFxcbi1cXHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZSAqL1xcbi1cXHRpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSkge1xcbi1cXHRcXHQvKiBUaGUgbWFjdmxhbiBwb3J0IG11c3QgYmUgbm90IGNyZWF0ZWQgdGhpcyB0aW1lLFxcbi1cXHRcXHQgKiBzdGlsbCBnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0IGZvciByZWFkYWJpbGl0eS5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGVyciA9IC1FSU5WQUw7XFxuLVxcdFxcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XFxuLVxcdH1cXG4tXFxuIFxcdHZsYW4tXFx1MDAzZWxvd2VyZGV2ID0gbG93ZXJkZXY7XFxuIFxcdHZsYW4tXFx1MDAzZWRldiAgICAgID0gZGV2O1xcbiBcXHR2bGFuLVxcdTAwM2Vwb3J0ICAgICA9IHBvcnQ7XFxuQEAgLTE1MjcsMTIgKzE1MzksMzEgQEAgaW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKVxcbiBcXHRcXHR2bGFuLVxcdTAwM2VmbGFncyA9IG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSk7XFxuIFxcbitcXHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZS4gVGhlcmUgbWF5IGJlXFxuK1xcdCAqIGFkZGl0aW9uYWwgc291cmNlIG1vZGUgZGV2aWNlcyBidXQgbm90aGluZyBlbHNlIGF0IHRoZSBtb21lbnQuXFxuK1xcdCAqXFxuK1xcdCAqIEZpcnN0IGNoZWNrIGlmIGFkZGluZyBhIHNvdXJjZSBtb2RlIGRldmljZSB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLlxcbitcXHQgKi9cXG4rXFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXFx1MDAyNlxcdTAwMjYgdmxhbi1cXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfU09VUkNFKSB7XFxuK1xcdFxcdC8qIFRoZSBtYWN2bGFuIHBvcnQgbXVzdCBiZSBub3QgY3JlYXRlZCB0aGlzIHRpbWUsXFxuK1xcdFxcdCAqIHN0aWxsIGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQgZm9yIHJlYWRhYmlsaXR5LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4rXFx0fVxcbitcXG4rXFx0LyogTm93IGNoZWNrIGlmIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGVcXG4rXFx0ICogZGV2aWNlcy5cXG4rXFx0ICovXFxuIFxcdGlmICh2bGFuLVxcdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xcbi1cXHRcXHRpZiAocG9ydC1cXHUwMDNlY291bnQpIHtcXG4tXFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4tXFx0XFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4rXFx0XFx0c3RydWN0IG1hY3ZsYW5fZGV2ICpwO1xcbitcXG4rXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwLCBcXHUwMDI2cG9ydC1cXHUwMDNldmxhbnMsIGxpc3QpIHtcXG4rXFx0XFx0XFx0aWYgKHAtXFx1MDAzZW1vZGUgIT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkge1xcbitcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4tXFx0XFx0bWFjdmxhbl9zZXRfcGFzc3RocnUocG9ydCk7XFxuIFxcdFxcdGV0aF9od19hZGRyX2luaGVyaXQoZGV2LCBsb3dlcmRldik7XFxuIFxcdH1cXG4gXFxuQEAgLTE1NjQsNyArMTU5NSwxMiBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIHVucmVnaXN0ZXJfbmV0ZGV2O1xcbiBcXG4tXFx0bGlzdF9hZGRfdGFpbF9yY3UoXFx1MDAyNnZsYW4tXFx1MDAzZWxpc3QsIFxcdTAwMjZwb3J0LVxcdTAwM2V2bGFucyk7XFxuK1xcdC8qIG1hY3ZsYW5faGFuZGxlX2ZyYW1lIGV4cGVjdHMgdGhlIChvbmUgYW5kIG9ubHkpIHBhc3N0aHJ1IGRldmljZSBmaXJzdC4gKi9cXG4rXFx0aWYgKHZsYW4tXFx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XFxuK1xcdFxcdG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpO1xcbitcXHRcXHRsaXN0X2FkZF9yY3UoXFx1MDAyNnZsYW4tXFx1MDAzZWxpc3QsIFxcdTAwMjZwb3J0LVxcdTAwM2V2bGFucyk7XFxuK1xcdH0gZWxzZVxcbitcXHRcXHRsaXN0X2FkZF90YWlsX3JjdShcXHUwMDI2dmxhbi1cXHUwMDNlbGlzdCwgXFx1MDAyNnBvcnQtXFx1MDAzZXZsYW5zKTtcXG4gXFx0dXBkYXRlX3BvcnRfYmNfcXVldWVfbGVuKHZsYW4tXFx1MDAzZXBvcnQpO1xcbiBcXHRuZXRpZl9zdGFja2VkX3RyYW5zZmVyX29wZXJzdGF0ZShsb3dlcmRldiwgZGV2KTtcXG4gXFx0bGlua3dhdGNoX2ZpcmVfZXZlbnQoZGV2KTtcXG5AQCAtMTYyNywxOSArMTY2MywyMyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZGF0YSBcXHUwMDI2XFx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSkge1xcbiBcXHRcXHRzZXRfbW9kZSA9IHRydWU7XFxuIFxcdFxcdG1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7XFxuLVxcdFxcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJ3QgYmUgc2V0IG9yIGNsZWFyZWQgZHluYW1pY2FsbHkgKi9cXG4tXFx0XFx0aWYgKChtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkgIT1cXG4tXFx0XFx0ICAgICh2bGFuLVxcdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkpXFxuLVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICB2bGFuLVxcdTAwM2Vtb2RlICE9IG1vZGUpXFxuLVxcdFxcdFxcdG1hY3ZsYW5fZmx1c2hfc291cmNlcyh2bGFuLVxcdTAwM2Vwb3J0LCB2bGFuKTtcXG4rXFx0XFx0aWYgKG1vZGUgIT0gdmxhbi1cXHUwMDNlbW9kZSkge1xcbitcXHRcXHRcXHQvKiBQYXNzdGhyb3VnaCBtb2RlIGNhbid0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5LFxcbitcXHRcXHRcXHQgKiByZWdhcmRsZXNzIG9mIGV4aXN0aW5nIHNvdXJjZSBpbnRlcmZhY2VzLiBGdXJ0aGVybW9yZSwgc291cmNlXFxuK1xcdFxcdFxcdCAqIGludGVyZmFjZXMgY2FuJ3Qgc3dpdGNoIG1vZGVzIHdpdGhpbiBhIHBhc3NodHJvdWdoIHBvcnQuXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgfHxcXG4rXFx0XFx0XFx0ICAgIG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFKVxcbitcXHRcXHRcXHRcXHRtYWN2bGFuX2ZsdXNoX3NvdXJjZXModmxhbi1cXHUwMDNlcG9ydCwgdmxhbik7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKSB7XFxuIFxcdFxcdF9fdTE2IGZsYWdzID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKTtcXG4gXFx0XFx0Ym9vbCBwcm9taXNjID0gKGZsYWdzIF4gdmxhbi1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQztcXG4tXFx0XFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkgXFx1MDAyNlxcdTAwMjYgcHJvbWlzYykge1xcbitcXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXFx1MDAyNlxcdTAwMjYgcHJvbWlzYykge1xcbiBcXHRcXHRcXHRpbnQgZXJyO1xcbiBcXG4gXFx0XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6MjYuMTQ3ODQwNzA1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjEwMjgxMzEwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjdmxhbl9jb21tb25fbmV3bGlua1wiLFxuICAgIFwibWFjdmxhbl9jaGFuZ2VsaW5rXCIsXG4gICAgXCJtYWN2bGFuX3VuaW5pdFwiLFxuICAgIFwibWFjdmxhbl9mZGJfYWRkXCIsXG4gICAgXCJtYWN2bGFuX2ZkYl9kZWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2dpYyBvZiB0aGUgbWFjdmxhbiBkcml2ZXIsIHNwZWNpZmljYWxseSBhbGxvd2luZyB0aGUgYWRkaXRpb24gb2Ygc291cmNlIG1vZGUgZGV2aWNlcyB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLCBvciBhZGRpbmcgYSBwYXNzdGhydSBkZXZpY2UgdG8gYW4gZXhpc3Rpbmcgc2V0IG9mIHNvdXJjZSBtb2RlIGRldmljZXMuIEl0IG1vZGlmaWVzIHNldmVyYWwgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyBsaWtlIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIG1hY3ZsYW5fY2hhbmdlbGluaywgbWFjdmxhbl91bmluaXQsIG1hY3ZsYW5fZmRiX2FkZCwgYW5kIG1hY3ZsYW5fZmRiX2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWZjOTQ5MWE5NjBjZDU3OTI5YzdjMGViNTljMjgwM2RkMGJhYmU0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDE0OjU3OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5pbmRleCA5YTRiYzk5ZGJmNTNiNS4uNDA1ZjJjYzBlNTM2MzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuQEAgLTgzLDYgKzgzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX3NldF9wYXNzdGhydShzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuIFx0cG9ydC1cdTAwM2VmbGFncyB8PSBNQUNWTEFOX0ZfUEFTU1RIUlU7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1KHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpXG4re1xuK1x0cG9ydC1cdTAwM2VmbGFncyBcdTAwMjY9IH5NQUNWTEFOX0ZfUEFTU1RIUlU7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgYm9vbCBtYWN2bGFuX2FkZHJfY2hhbmdlKGNvbnN0IHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpXG4ge1xuIFx0cmV0dXJuIHBvcnQtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BQ1ZMQU5fRl9BRERSQ0hBTkdFO1xuQEAgLTYzNyw3ICs2NDIsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyZGV2ID0gdmxhbi1cdTAwM2Vsb3dlcmRldjtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAobWFjdmxhbl9wYXNzdGhydSh2bGFuLVx1MDAzZXBvcnQpKSB7XG4rXHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xuIFx0XHRpZiAoISh2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKSkge1xuIFx0XHRcdGVyciA9IGRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIDEpO1xuIFx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG5AQCAtNzEyLDcgKzcxNyw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXZfdWNfdW5zeW5jKGxvd2VyZGV2LCBkZXYpO1xuIFx0ZGV2X21jX3Vuc3luYyhsb3dlcmRldiwgZGV2KTtcbiBcbi1cdGlmIChtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tXHUwMDNlcG9ydCkpIHtcbitcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4gXHRcdGlmICghKHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IE1BQ1ZMQU5fRkxBR19OT1BST01JU0MpKVxuIFx0XHRcdGRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIC0xKTtcbiBcdFx0Z290byBoYXNoX2RlbDtcbkBAIC05NjgsNiArOTczLDIxIEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgbWFjdmxhbl9yZXN0b3JlX21hYyhzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuK3tcbitcdC8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1XG4rXHQgKiBtYWN2bGFuLCBwdXQgaXQgYmFjay5cbitcdCAqL1xuK1x0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIWV0aGVyX2FkZHJfZXF1YWwocG9ydC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIsIHBvcnQtXHUwMDNlcGVybV9hZGRyKSkge1xuK1x0XHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbitcbitcdFx0c3Muc3NfZmFtaWx5ID0gcG9ydC1cdTAwM2VkZXYtXHUwMDNldHlwZTtcbitcdFx0bWVtY3B5KFx1MDAyNnNzLl9fZGF0YSwgcG9ydC1cdTAwM2VwZXJtX2FkZHIsIHBvcnQtXHUwMDNlZGV2LVx1MDAzZWFkZHJfbGVuKTtcbitcdFx0ZGV2X3NldF9tYWNfYWRkcmVzcyhwb3J0LVx1MDAzZWRldiwgXHUwMDI2c3MsIE5VTEwpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XG5AQCAtOTc3LDggKzk5NywxOSBAQCBzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0bWFjdmxhbl9mbHVzaF9zb3VyY2VzKHBvcnQsIHZsYW4pO1xuIFx0cG9ydC1cdTAwM2Vjb3VudCAtPSAxO1xuLVx0aWYgKCFwb3J0LVx1MDAzZWNvdW50KVxuLVx0XHRtYWN2bGFuX3BvcnRfZGVzdHJveShwb3J0LVx1MDAzZWRldik7XG4rXHRpZiAocG9ydC1cdTAwM2Vjb3VudCkge1xuK1x0XHQvKiBJbiBjYXNlIG9mIHJlbWFpbmluZyBzb3VyY2UgaW50ZXJmYWNlcyB1bmRvXG4rXHRcdCAqIHBhc3N0aHJ1LXNwZWNpZmljIHByb3BlcnRpZXMuXG4rXHRcdCAqL1xuK1x0XHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xuK1x0XHRcdC8qIE9yZGVyIGlzIGltcG9ydGFudCwgZG8gbm90IHRyaWdnZXIgbWFjdmxhbl9kZXZpY2VfZXZlbnQoKS4gKi9cbitcdFx0XHRtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1KHBvcnQpO1xuK1x0XHRcdG1hY3ZsYW5fcmVzdG9yZV9tYWMocG9ydCk7XG4rXHRcdH1cbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0bWFjdmxhbl9wb3J0X2Rlc3Ryb3kocG9ydC1cdTAwM2VkZXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX2Rldl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTEwNTIsNyArMTA4Myw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfYWRkKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXG4gXHQgKiBNdWx0aWNhc3QgZmlsdGVyIHNob3VsZCBiZSBhbGxvd2VkIG9uIGFsbCBkZXZpY2VzLlxuIFx0ICovXG4tXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSBcdTAwMjZcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxuK1x0aWYgKHZsYW4tXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXHUwMDI2XHUwMDI2IGlzX3VuaWNhc3RfZXRoZXJfYWRkcihhZGRyKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKGZsYWdzIFx1MDAyNiBOTE1fRl9SRVBMQUNFKVxuQEAgLTEwNzcsNyArMTEwOCw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfZGVsKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXG4gXHQgKiBNdWx0aWNhc3QgZmlsdGVyIHNob3VsZCBiZSBhbGxvd2VkIG9uIGFsbCBkZXZpY2VzLlxuIFx0ICovXG4tXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSBcdTAwMjZcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxuK1x0aWYgKHZsYW4tXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXHUwMDI2XHUwMDI2IGlzX3VuaWNhc3RfZXRoZXJfYWRkcihhZGRyKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKGlzX3VuaWNhc3RfZXRoZXJfYWRkcihhZGRyKSlcbkBAIC0xMzA4LDE3ICsxMzM5LDcgQEAgc3RhdGljIHZvaWQgbWFjdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHR9XG4gXG4tXHQvKiBJZiB0aGUgbG93ZXIgZGV2aWNlIGFkZHJlc3MgaGFzIGJlZW4gY2hhbmdlZCBieSBwYXNzdGhydVxuLVx0ICogbWFjdmxhbiwgcHV0IGl0IGJhY2suXG4tXHQgKi9cbi1cdGlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICFldGhlcl9hZGRyX2VxdWFsKHBvcnQtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyLCBwb3J0LVx1MDAzZXBlcm1fYWRkcikpIHtcbi1cdFx0c3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7XG4tXG4tXHRcdHNzLnNzX2ZhbWlseSA9IHBvcnQtXHUwMDNlZGV2LVx1MDAzZXR5cGU7XG4tXHRcdG1lbWNweShcdTAwMjZzcy5fX2RhdGEsIHBvcnQtXHUwMDNlcGVybV9hZGRyLCBwb3J0LVx1MDAzZWRldi1cdTAwM2VhZGRyX2xlbik7XG4tXHRcdGRldl9zZXRfbWFjX2FkZHJlc3MocG9ydC1cdTAwM2VkZXYsIFx1MDAyNnNzLCBOVUxMKTtcbi1cdH1cbitcdG1hY3ZsYW5fcmVzdG9yZV9tYWMocG9ydCk7XG4gXG4gXHRrZnJlZShwb3J0KTtcbiB9XG5AQCAtMTUwNiwxNSArMTUyNyw2IEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR9XG4gXHRwb3J0ID0gbWFjdmxhbl9wb3J0X2dldF9ydG5sKGxvd2VyZGV2KTtcbiBcbi1cdC8qIE9ubHkgMSBtYWN2bGFuIGRldmljZSBjYW4gYmUgY3JlYXRlZCBpbiBwYXNzdGhydSBtb2RlICovXG4tXHRpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSkge1xuLVx0XHQvKiBUaGUgbWFjdmxhbiBwb3J0IG11c3QgYmUgbm90IGNyZWF0ZWQgdGhpcyB0aW1lLFxuLVx0XHQgKiBzdGlsbCBnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0IGZvciByZWFkYWJpbGl0eS5cbi1cdFx0ICovXG4tXHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XG4tXHR9XG4tXG4gXHR2bGFuLVx1MDAzZWxvd2VyZGV2ID0gbG93ZXJkZXY7XG4gXHR2bGFuLVx1MDAzZWRldiAgICAgID0gZGV2O1xuIFx0dmxhbi1cdTAwM2Vwb3J0ICAgICA9IHBvcnQ7XG5AQCAtMTUyNywxMiArMTUzOSwzMSBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSlcbiBcdFx0dmxhbi1cdTAwM2VmbGFncyA9IG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSk7XG4gXG4rXHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZS4gVGhlcmUgbWF5IGJlXG4rXHQgKiBhZGRpdGlvbmFsIHNvdXJjZSBtb2RlIGRldmljZXMgYnV0IG5vdGhpbmcgZWxzZSBhdCB0aGUgbW9tZW50LlxuK1x0ICpcbitcdCAqIEZpcnN0IGNoZWNrIGlmIGFkZGluZyBhIHNvdXJjZSBtb2RlIGRldmljZSB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLlxuK1x0ICovXG4rXHRpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSBcdTAwMjZcdTAwMjYgdmxhbi1cdTAwM2Vtb2RlICE9IE1BQ1ZMQU5fTU9ERV9TT1VSQ0UpIHtcbitcdFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcbitcdFx0ICogc3RpbGwgZ290byBkZXN0cm95X21hY3ZsYW5fcG9ydCBmb3IgcmVhZGFiaWxpdHkuXG4rXHRcdCAqL1xuK1x0XHRlcnIgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuK1x0fVxuK1xuK1x0LyogTm93IGNoZWNrIGlmIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGVcbitcdCAqIGRldmljZXMuXG4rXHQgKi9cbiBcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4tXHRcdGlmIChwb3J0LVx1MDAzZWNvdW50KSB7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuK1x0XHRzdHJ1Y3QgbWFjdmxhbl9kZXYgKnA7XG4rXG4rXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucywgbGlzdCkge1xuK1x0XHRcdGlmIChwLVx1MDAzZW1vZGUgIT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkge1xuK1x0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XG4rXHRcdFx0fVxuIFx0XHR9XG4tXHRcdG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpO1xuIFx0XHRldGhfaHdfYWRkcl9pbmhlcml0KGRldiwgbG93ZXJkZXYpO1xuIFx0fVxuIFxuQEAgLTE1NjQsNyArMTU5NSwxMiBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0Z290byB1bnJlZ2lzdGVyX25ldGRldjtcbiBcbi1cdGxpc3RfYWRkX3RhaWxfcmN1KFx1MDAyNnZsYW4tXHUwMDNlbGlzdCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucyk7XG4rXHQvKiBtYWN2bGFuX2hhbmRsZV9mcmFtZSBleHBlY3RzIHRoZSAob25lIGFuZCBvbmx5KSBwYXNzdGhydSBkZXZpY2UgZmlyc3QuICovXG4rXHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xuK1x0XHRtYWN2bGFuX3NldF9wYXNzdGhydShwb3J0KTtcbitcdFx0bGlzdF9hZGRfcmN1KFx1MDAyNnZsYW4tXHUwMDNlbGlzdCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucyk7XG4rXHR9IGVsc2VcbitcdFx0bGlzdF9hZGRfdGFpbF9yY3UoXHUwMDI2dmxhbi1cdTAwM2VsaXN0LCBcdTAwMjZwb3J0LVx1MDAzZXZsYW5zKTtcbiBcdHVwZGF0ZV9wb3J0X2JjX3F1ZXVlX2xlbih2bGFuLVx1MDAzZXBvcnQpO1xuIFx0bmV0aWZfc3RhY2tlZF90cmFuc2Zlcl9vcGVyc3RhdGUobG93ZXJkZXYsIGRldik7XG4gXHRsaW5rd2F0Y2hfZmlyZV9ldmVudChkZXYpO1xuQEAgLTE2MjcsMTkgKzE2NjMsMjMgQEAgc3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkYXRhIFx1MDAyNlx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSkge1xuIFx0XHRzZXRfbW9kZSA9IHRydWU7XG4gXHRcdG1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7XG4tXHRcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJ3QgYmUgc2V0IG9yIGNsZWFyZWQgZHluYW1pY2FsbHkgKi9cbi1cdFx0aWYgKChtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkgIT1cbi1cdFx0ICAgICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSlcbi1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgdmxhbi1cdTAwM2Vtb2RlICE9IG1vZGUpXG4tXHRcdFx0bWFjdmxhbl9mbHVzaF9zb3VyY2VzKHZsYW4tXHUwMDNlcG9ydCwgdmxhbik7XG4rXHRcdGlmIChtb2RlICE9IHZsYW4tXHUwMDNlbW9kZSkge1xuK1x0XHRcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJ3QgYmUgc2V0IG9yIGNsZWFyZWQgZHluYW1pY2FsbHksXG4rXHRcdFx0ICogcmVnYXJkbGVzcyBvZiBleGlzdGluZyBzb3VyY2UgaW50ZXJmYWNlcy4gRnVydGhlcm1vcmUsIHNvdXJjZVxuK1x0XHRcdCAqIGludGVyZmFjZXMgY2FuJ3Qgc3dpdGNoIG1vZGVzIHdpdGhpbiBhIHBhc3NodHJvdWdoIHBvcnQuXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgfHxcbitcdFx0XHQgICAgbWFjdmxhbl9wYXNzdGhydSh2bGFuLVx1MDAzZXBvcnQpKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFKVxuK1x0XHRcdFx0bWFjdmxhbl9mbHVzaF9zb3VyY2VzKHZsYW4tXHUwMDNlcG9ydCwgdmxhbik7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdGlmIChkYXRhIFx1MDAyNlx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pIHtcbiBcdFx0X191MTYgZmxhZ3MgPSBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pO1xuIFx0XHRib29sIHByb21pc2MgPSAoZmxhZ3MgXiB2bGFuLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQztcbi1cdFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSBcdTAwMjZcdTAwMjYgcHJvbWlzYykge1xuK1x0XHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSBcdTAwMjZcdTAwMjYgcHJvbWlzYykge1xuIFx0XHRcdGludCBlcnI7XG4gXG4gXHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6MjYuMTQ3ODQxOTQ1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzNTMzNjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNYWN2bGFuIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AuIEl0IHNlZW1zIHRoZXkncmUgbW9kaWZ5aW5nIHRoZSBjb3JlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGFkZGluZyBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGEgcGFzc3RocnUgVkxBTiBvciB2aWNlLXZlcnNhLiBUaGV5J3ZlIGdvbmUgaW4gYW5kIHR3ZWFrZWQgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fb3BlbmAsIGBtYWN2bGFuX3N0b3BgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBUaGF0J3MgYSBwcmV0dHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBtYWN2bGFuIGRyaXZlci4gR2l2ZW4gdGhhdCBpdCdzIGFsdGVyaW5nIHRoZSBmdW5kYW1lbnRhbCBuZXR3b3JraW5nIGJlaGF2aW9yLCBJIG5lZWQgdG8gZmxhZyB0aGlzIGZvciBmdXp6aW5nLiBUaGlzIGlzIGRlZmluaXRlbHkgdGhlIHNvcnQgb2YgdGhpbmcgdGhhdCBjYW4gaW50cm9kdWNlIHN1YnRsZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIFZMQU4gY29uZmlndXJhdGlvbnMuXG5cbk5leHQsIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFdlIGtub3cgdGhpcyBjb2RlIGlzIHRpZWQgdG8gYENPTkZJR19NQUNWTEFOYCwgYW5kIHRoYXQgaXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgIHRvIGJlIGJ1aWx0LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1NzozMS40ODMxODAzNjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczMDkyNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfQU1UKSArPSBhbXQub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19NQUNWTEFOKSArPSBtYWN2bGFuLm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfTUFDVlRBUCkgKz0gbWFjdnRhcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE0OjU3OjMxLjU1MDQ5NzY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwNzU1OTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZvY3VzOiBNQUNWTEFOIE1vZHVsZSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgZnV6emluZyB0aGUgTUFDVkxBTiBtb2R1bGUsIGFuZCB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBpcyBkZWZpbml0ZWx5IGBDT05GSUdfTUFDVkxBTmAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IHdoaWNoIGZ1bmN0aW9ucyBhcmUgbW9zdCBpbnRlcmVzdGluZyBmb3IgZnV6emluZz8gVGhlIHBhdGNoIEknbSBleGFtaW5pbmcgbW9kaWZpZXMgYSBidW5jaCBvZiBmdW5jdGlvbnMuIEJhc2VkIG9uIHRoZSBkaWZmLCBpdCBsb29rcyBsaWtlOiBgbWFjdmxhbl9zZXRfcGFzc3RocnVgLCBgbWFjdmxhbl9jbGVhcl9wYXNzdGhydWAsIGBtYWN2bGFuX29wZW5gLCBgbWFjdmxhbl9zdG9wYCwgYG1hY3ZsYW5faW5pdGAsIGBtYWN2bGFuX3Jlc3RvcmVfbWFjYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGBtYWN2bGFuX2ZkYl9kZWxgLCBgbWFjdmxhbl9wb3J0X2Rlc3Ryb3lgLCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGFuZCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBhbGwgbmVlZCBhIGNsb3NlciBsb29rLlxuXG5JJ3ZlIGdvdCBhIHByZWxpbWluYXJ5IGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHByaW9yaXRpemU6IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX2ZkYl9hZGRgLCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAuIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBNQUNWTEFOYCBpcyB0aGUgb25seSBjb25maWcgd2UgbmVlZC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQW5kLCBpcyB0aGUgcGF0Y2ggaXNvbGF0ZWQgdG8gYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2A/IFllcCwganVzdCB0aGF0IG9uZSBmaWxlLlxuXG5Pa2F5LCBsZXQncyBnbyBiYWNrIGFuZCByZS1ldmFsdWF0ZSBvdXIgZm9jdXMgbGlzdCBhbmQgYWRkIGBtYWN2bGFuX29wZW5gIGFuZCBgbWFjdmxhbl9zdG9wYCB0byB0aGUgZXZhbHVhdGlvbiBsaXN0LiBUaGlzIGlzIGtleTogQXJlIHRoZXNlIGZ1bmN0aW9ucyByZWFsbHkgXCJob3QtcGF0aHNcIj8gTm8sIG5vbmUgb2YgdGhlbSBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwsIGxpa2UgYG1hY3ZsYW5faGFuZGxlX2ZyYW1lYCBvciBgbWFjdmxhbl9zdGFydF94bWl0YC4gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fb3BlbmAsIGBtYWN2bGFuX3N0b3BgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYG1hY3ZsYW5fZmRiX2RlbGAsIGFsbCBhcHBlYXIgdG8gYmUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucy4gVGhleSBzaG91bGQgYmUgZ29vZCB0YXJnZXRzLlxuXG5TbywgdGhlIGBGb2N1c1N5bWJvbHNgIGZvciBvdXIgZnV6emVyIHNob3VsZCBiZTogYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGFuZCBgbWFjdmxhbl9mZGJfZGVsYC4gTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aG9zZSBmdW5jdGlvbiBuYW1lcyBhcmUgZXhhY3RseSByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEyNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1NzozOS4zNTgwNTg4MDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5NzYyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjdmxhbl9jb21tb25fbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0Mjc9c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyhzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4sIHUzMiBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0ODItXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE0ODM6aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ4NC1cXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MjktfVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjMwOkVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fY29tbW9uX25ld2xpbmspO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjMxLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNjMyPXN0YXRpYyBpbnQgbWFjdmxhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYzNS17XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MzY6XFx0cmV0dXJuIG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoZGV2LCBwYXJhbXMsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MzctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1NzozOS40MTYwNDAwNjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQxMTY3MzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSBwcm9jZXNzaW5nIHRoaXMgaW5mb3JtYXRpb246XG5cbioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEkndmUgZ290IGEgc2V0IG9mIG1hY3ZsYW4tcmVsYXRlZCBmdW5jdGlvbnMgdG8gY29uc2lkZXI6IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX2ZkYl9hZGRgLCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAuIE15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyLiBHaXZlbiB0aGF0IEknbSBsb29raW5nIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdmlldywgSSdsbCBzdGFydCB3aXRoIGBtYWN2bGFuX2NoYW5nZWxpbmtgLiBJJ20gZ3Vlc3NpbmcgdGhhdCB0aGlzIGlzIGEgY29yZSBmdW5jdGlvbiwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBhcHBseWluZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuIEl0J3MgYSBrZXkgcGllY2UgSSBuZWVkIHRvIHVuZGVyc3RhbmQsIHNvIHRoYXQncyB3aGVyZSBJJ2xsIGJlZ2luIG15IGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTM4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6NDMuMDU3MjA5MTU4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTU3MDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEzNDc9c3RhdGljIGludCBtYWN2bGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDI2LSAqL1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDI3OnN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQyOC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10pXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTQ4Mz1pbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NzUtXFx0XFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNTc2OlxcdFxcdGVyciA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTc3LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTY1MD1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2RlbGxpbmspO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjUxLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjUyOnN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NTMtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3MTAtXFx0XFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzExOlxcdFxcdHJldCA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzEyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTgzMj1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTgzNy1cXHRvcHMtXFx1MDAzZXBvbGljeVxcdFxcdD0gbWFjdmxhbl9wb2xpY3k7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE4Mzg6XFx0b3BzLVxcdTAwM2VjaGFuZ2VsaW5rXFx0XFx0PSBtYWN2bGFuX2NoYW5nZWxpbms7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE4MzktXFx0b3BzLVxcdTAwM2VnZXRfc2l6ZVxcdFxcdD0gbWFjdmxhbl9nZXRfc2l6ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6NDMuMTEzMzcxODczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg2OTk5Mjc0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRob3NlIHBvaW50czpcblxuKipBbmFseXppbmcgdGhlIE1hY3ZsYW4gTW9kdWxlcyoqXG5cbk9rYXksIHNvIEkndmUganVzdCByZXZpc2l0ZWQgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGFuZCBJJ20gY29uZmlkZW50IGluIHRoZSBsb2dpYyB0aGVyZS4gU2VlbXMgbGlrZSB0aGUgYWRqdXN0bWVudHMgYW5kIGxpbmsgc3RhdGUgaGFuZGxpbmcgYXJlIHNvdW5kLiBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGF0J3MgbmV4dD8gV2hhdCBpcyB0aGUgY29ycmVzcG9uZGluZyBkZS1pbml0aWFsaXphdGlvbiByb3V0aW5lIGFuZCB3aGF0IGlzIGl0cyByb2xlP1xuXG5MZXQncyBzaGlmdCBvdXIgZm9jdXMgdG8gYG1hY3ZsYW5fdW5pbml0YC4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGUgY2xlYW51cCBvcGVyYXRpb25zIGhhbmRsZWQgdGhlcmUgYXJlIHJvYnVzdCBhbmQgdGhvcm91Z2guIFdlIG11c3QgZW5zdXJlIHRoZXJlIGFyZSBubyByZXNvdXJjZSBsZWFrcyBvciBkYW5nbGluZyBwb2ludGVycy4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgYW55IHN1YnRsZSwgaGFyZC10by1yZXByb2R1Y2UgaXNzdWVzIHdpbGwgbWFuaWZlc3QuIExldCdzIGRpZyBkZWVwIGludG8gdGhhdCBmdW5jdGlvbidzIGltcGxlbWVudGF0aW9uLCBhbmQgaG93IHRoZSBjaGFuZ2VzIGluIGBtYWN2bGFuX2NoYW5nZWxpbmtgIHdvdWxkIGluZmx1ZW5jZSB0aGUgdW5pbml0aWFsaXphdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE0OjU3OjQ3Ljk4MzM2NjU5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3NzA5NjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fdW5pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmM9OTc2PXN0YXRpYyB2b2lkIG1hY3ZsYW5fcmVzdG9yZV9tYWMoc3RydWN0IG1hY3ZsYW5fcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy05OTAtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjk5MTpzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy05OTIte1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEyMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMjMtXFx0Lm5kb19pbml0XFx0XFx0PSBtYWN2bGFuX2luaXQsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjEyMjQ6XFx0Lm5kb191bmluaXRcXHRcXHQ9IG1hY3ZsYW5fdW5pbml0LFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjI1LVxcdC5uZG9fb3BlblxcdFxcdD0gbWFjdmxhbl9vcGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0ODM9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjEwLXVucmVnaXN0ZXJfbmV0ZGV2OlxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjExOlxcdC8qIG1hY3ZsYW5fdW5pbml0IHdvdWxkIGZyZWUgdGhlIG1hY3ZsYW4gcG9ydCAqL1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjEyLVxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYxNC1kZXN0cm95X21hY3ZsYW5fcG9ydDpcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTYxNTpcXHQvKiB0aGUgbWFjdmxhbiBwb3J0IG1heSBiZSBmcmVlZCBieSBtYWN2bGFuX3VuaW5pdCB3aGVuIGZhaWwgdG8gcmVnaXN0ZXIuXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MTYtXFx0ICogc28gd2UgZGVzdHJveSB0aGUgbWFjdmxhbiBwb3J0IG9ubHkgd2hlbiBpdCdzIHZhbGlkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1Nzo0OC4zMDEwODM4NjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyOTQ5NDk2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHF1aWNrIHJ1bmRvd24gb2Ygd2hhdCBJJ20gdGhpbmtpbmc6XG5cbioqQ2hlY2tpbmcgdGhlIE1hY3ZsYW4gRkRCIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIHNvIHRoZSBgbWFjdmxhbl91bmluaXRgIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHNoaWZ0IG15IGZvY3VzIHRvIHRoZSBjb3JlIG9mIHRoZSBNQUMgYWRkcmVzcyBsZWFybmluZyBhbmQgZm9yd2FyZGluZyBiZWhhdmlvci4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgYG1hY3ZsYW5fZmRiX2FkZGAgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGNyaXRpY2FsOyB0aGV5IGhhbmRsZSB0aGUgYWRkaXRpb24gYW5kIHJlbW92YWwgb2YgTUFDIGFkZHJlc3MgZW50cmllcyBpbiB0aGUgRm9yd2FyZGluZyBEYXRhYmFzZSAoRkRCKS4gQW55IGlzc3VlcyBoZXJlLCBzdWNoIGFzIGluY29ycmVjdCBkYXRhIHN0cnVjdHVyZXMsIHJhY2UgY29uZGl0aW9ucywgb3IgaW5jb3JyZWN0IEZEQiBlbnRyeSB1cGRhdGVzLCBjb3VsZCBsZWFkIHRvIHNlcmlvdXMgY29ubmVjdGl2aXR5IHByb2JsZW1zLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhlaXIgbG9naWMsIHBhcnRpY3VsYXJseSBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgZGV2aWNlIGFuZCBob3cgdGhleSBoYW5kbGUgY29uY3VycmVuY3kuIEkgd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZXJyb3JzIGluIG15IHRoaW5raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTExLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6NTEuNzMwNTgwOTkzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTI0MTE0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWN2bGFuX2ZkYl9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMDY0PXN0YXRpYyBpbnQgbWFjdmxhbl92bGFuX3J4X2tpbGxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTA3My1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTA3NDpzdGF0aWMgaW50IG1hY3ZsYW5fZmRiX2FkZChzdHJ1Y3QgbmRtc2cgKm5kbSwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTA3NS1cXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEyMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIzNi1cXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcXHQ9IG1hY3ZsYW5fdmxhbl9yeF9raWxsX3ZpZCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTIzNzpcXHQubmRvX2ZkYl9hZGRcXHRcXHQ9IG1hY3ZsYW5fZmRiX2FkZCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIzOC1cXHQubmRvX2ZkYl9kZWxcXHRcXHQ9IG1hY3ZsYW5fZmRiX2RlbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6NTEuNzkxODI3MzQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNzkzMDE2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTWFjdmxhbiBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gSSd2ZSBjb25maXJtZWQgdGhhdCBgbWFjdmxhbl9mZGJfYWRkYCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAgYXJlIGluZGVlZCBjb3JyZWN0LCBiYXNlZCBvbiBteSBhbmFseXNpcyBvZiB0aGUgY29kZS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCBteSBrZXkgZm9jdXMgYXJlYXMgZm9yIGZ1enppbmcgdGhpcyBwYXRjaCBhcmUgZ29pbmcgdG8gYmUgdGhlc2UgY29yZSBmdW5jdGlvbnM6IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX2ZkYl9hZGRgLCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIHRvdWNoZXMuXG5cbkVuYWJsaW5nIGZ1enppbmcgZm9yIHRoaXMgd2lsbCByZXF1aXJlIGBNQUNWTEFOYCB0byBiZSBzZXQgdG8gdHJ1ZS5cblxuQW5kIHllcywgdGhpcyAqYWJzb2x1dGVseSogd2FycmFudHMgZnV6emluZy4gVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIE1hY3ZsYW4gZHJpdmVyJ3MgY29yZSBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIHRoZSBsb2dpYyB0byBoYW5kbGUgc291cmNlIG1vZGUgZGV2aWNlcyB3aXRoaW4gZXhpc3RpbmcgcGFzc3RocnUgVkxBTnMgYW5kIHZpY2UgdmVyc2EuIEl0IGFsdGVycyBzZXZlcmFsIGNvbnRyb2wgcGF0aHMsIGluY2x1ZGluZyBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBgbWFjdmxhbl91bmluaXRgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBHaXZlbiB0aGF0IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYywgaXQgbmVlZHMgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBhbmQgdnVsbmVyYWJpbGl0aWVzIGlzIHByZXNlbnQsIGFuZCB3ZSBuZWVkIHRvIHByb2JlIHRoZSBjaGFuZ2VzIGZvciB0aGF0IHBvc3NpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjY1LCJPdXRwdXRUb2tlbnMiOjE5OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1Nzo1OC4xNzExMzE2NzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTUxNjkxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiLFxuICAgIFwibWFjdmxhbl91bmluaXRcIixcbiAgICBcIm1hY3ZsYW5fZmRiX2FkZFwiLFxuICAgIFwibWFjdmxhbl9mZGJfZGVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgdGhlIG1hY3ZsYW4gZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgdGhlIGFkZGl0aW9uIG9mIHNvdXJjZSBtb2RlIGRldmljZXMgdG8gYW4gZXhpc3RpbmcgcGFzc3RocnUgdmxhbiwgb3IgYWRkaW5nIGEgcGFzc3RocnUgZGV2aWNlIHRvIGFuIGV4aXN0aW5nIHNldCBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzLiBJdCBtb2RpZmllcyBzZXZlcmFsIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMgbGlrZSBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCBtYWN2bGFuX2NoYW5nZWxpbmssIG1hY3ZsYW5fdW5pbml0LCBtYWN2bGFuX2ZkYl9hZGQsIGFuZCBtYWN2bGFuX2ZkYl9kZWwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX2NvbW1vbl9uZXdsaW5rXCIsXG4gICAgXCJtYWN2bGFuX2NoYW5nZWxpbmtcIixcbiAgICBcIm1hY3ZsYW5fdW5pbml0XCIsXG4gICAgXCJtYWN2bGFuX2ZkYl9hZGRcIixcbiAgICBcIm1hY3ZsYW5fZmRiX2RlbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 14:16:50 +0000 UTC FinishedAt: 2026-07-13 14:58:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "b17f3ff2-59f0-4d58-a8b8-7085278c35fc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macvlan_common_newlink", "macvlan_changelink", "macvlan_uninit", "macvlan_fdb_add", "macvlan_fdb_del" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": { "findings": [ "d5d14725-5a48-484c-876d-026175d0b21a" ] } } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDttYWN2bGFuX3VuaW5pdCYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2ZkYl9hZGQmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9mZGJfZGVsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNDo1NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVmYzk0OTFhOTYwY2Q1NzkyOWM3YzBlYjU5YzI4MDNkZDBiYWJlNGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAxMyAxNDo1NzoyNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tYWN2bGFuLmMgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbmluZGV4IDlhNGJjOTlkYmY1M2I1Li40MDVmMmNjMGU1MzYzMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5AQCAtODMsNiAmIzQzOzgzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX3NldF9wYXNzdGhydShzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuIFx0cG9ydC1cdTAwM2VmbGFncyB8PSBNQUNWTEFOX0ZfUEFTU1RIUlU7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgbWFjdmxhbl9jbGVhcl9wYXNzdGhydShzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuJiM0Mzt7XG4mIzQzO1x0cG9ydC1cdTAwM2VmbGFncyBcdTAwMjY9IH5NQUNWTEFOX0ZfUEFTU1RIUlU7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGlubGluZSBib29sIG1hY3ZsYW5fYWRkcl9jaGFuZ2UoY29uc3Qgc3RydWN0IG1hY3ZsYW5fcG9ydCAqcG9ydClcbiB7XG4gXHRyZXR1cm4gcG9ydC1cdTAwM2VmbGFncyBcdTAwMjYgTUFDVkxBTl9GX0FERFJDSEFOR0U7XG5AQCAtNjM3LDcgJiM0Mzs2NDIsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyZGV2ID0gdmxhbi1cdTAwM2Vsb3dlcmRldjtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAobWFjdmxhbl9wYXNzdGhydSh2bGFuLVx1MDAzZXBvcnQpKSB7XG4mIzQzO1x0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcbiBcdFx0aWYgKCEodmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQykpIHtcbiBcdFx0XHRlcnIgPSBkZXZfc2V0X3Byb21pc2N1aXR5KGxvd2VyZGV2LCAxKTtcbiBcdFx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuQEAgLTcxMiw3ICYjNDM7NzE3LDcgQEAgc3RhdGljIGludCBtYWN2bGFuX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRldl91Y191bnN5bmMobG93ZXJkZXYsIGRldik7XG4gXHRkZXZfbWNfdW5zeW5jKGxvd2VyZGV2LCBkZXYpO1xuIFxuLVx0aWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSkge1xuJiM0MztcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4gXHRcdGlmICghKHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IE1BQ1ZMQU5fRkxBR19OT1BST01JU0MpKVxuIFx0XHRcdGRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIC0xKTtcbiBcdFx0Z290byBoYXNoX2RlbDtcbkBAIC05NjgsNiAmIzQzOzk3MywyMSBAQCBzdGF0aWMgaW50IG1hY3ZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCBtYWN2bGFuX3Jlc3RvcmVfbWFjKHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpXG4mIzQzO3tcbiYjNDM7XHQvKiBJZiB0aGUgbG93ZXIgZGV2aWNlIGFkZHJlc3MgaGFzIGJlZW4gY2hhbmdlZCBieSBwYXNzdGhydVxuJiM0MztcdCAqIG1hY3ZsYW4sIHB1dCBpdCBiYWNrLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhZXRoZXJfYWRkcl9lcXVhbChwb3J0LVx1MDAzZWRldi1cdTAwM2VkZXZfYWRkciwgcG9ydC1cdTAwM2VwZXJtX2FkZHIpKSB7XG4mIzQzO1x0XHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbiYjNDM7XG4mIzQzO1x0XHRzcy5zc19mYW1pbHkgPSBwb3J0LVx1MDAzZWRldi1cdTAwM2V0eXBlO1xuJiM0MztcdFx0bWVtY3B5KFx1MDAyNnNzLl9fZGF0YSwgcG9ydC1cdTAwM2VwZXJtX2FkZHIsIHBvcnQtXHUwMDNlZGV2LVx1MDAzZWFkZHJfbGVuKTtcbiYjNDM7XHRcdGRldl9zZXRfbWFjX2FkZHJlc3MocG9ydC1cdTAwM2VkZXYsIFx1MDAyNnNzLCBOVUxMKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xuQEAgLTk3Nyw4ICYjNDM7OTk3LDE5IEBAIHN0YXRpYyB2b2lkIG1hY3ZsYW5fdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRtYWN2bGFuX2ZsdXNoX3NvdXJjZXMocG9ydCwgdmxhbik7XG4gXHRwb3J0LVx1MDAzZWNvdW50IC09IDE7XG4tXHRpZiAoIXBvcnQtXHUwMDNlY291bnQpXG4tXHRcdG1hY3ZsYW5fcG9ydF9kZXN0cm95KHBvcnQtXHUwMDNlZGV2KTtcbiYjNDM7XHRpZiAocG9ydC1cdTAwM2Vjb3VudCkge1xuJiM0MztcdFx0LyogSW4gY2FzZSBvZiByZW1haW5pbmcgc291cmNlIGludGVyZmFjZXMgdW5kb1xuJiM0MztcdFx0ICogcGFzc3RocnUtc3BlY2lmaWMgcHJvcGVydGllcy5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcbiYjNDM7XHRcdFx0LyogT3JkZXIgaXMgaW1wb3J0YW50LCBkbyBub3QgdHJpZ2dlciBtYWN2bGFuX2RldmljZV9ldmVudCgpLiAqL1xuJiM0MztcdFx0XHRtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1KHBvcnQpO1xuJiM0MztcdFx0XHRtYWN2bGFuX3Jlc3RvcmVfbWFjKHBvcnQpO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bWFjdmxhbl9wb3J0X2Rlc3Ryb3kocG9ydC1cdTAwM2VkZXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX2Rldl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTEwNTIsNyAmIzQzOzEwODMsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fZmRiX2FkZChzdHJ1Y3QgbmRtc2cgKm5kbSwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbiBcdC8qIFN1cHBvcnQgdW5pY2FzdCBmaWx0ZXIgb25seSBvbiBwYXNzdGhydSBkZXZpY2VzLlxuIFx0ICogTXVsdGljYXN0IGZpbHRlciBzaG91bGQgYmUgYWxsb3dlZCBvbiBhbGwgZGV2aWNlcy5cbiBcdCAqL1xuLVx0aWYgKCFtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tXHUwMDNlcG9ydCkgXHUwMDI2XHUwMDI2IGlzX3VuaWNhc3RfZXRoZXJfYWRkcihhZGRyKSlcbiYjNDM7XHRpZiAodmxhbi1cdTAwM2Vtb2RlICE9IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSBcdTAwMjZcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxuIFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4gXG4gXHRpZiAoZmxhZ3MgXHUwMDI2IE5MTV9GX1JFUExBQ0UpXG5AQCAtMTA3Nyw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfZGVsKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXG4gXHQgKiBNdWx0aWNhc3QgZmlsdGVyIHNob3VsZCBiZSBhbGxvd2VkIG9uIGFsbCBkZXZpY2VzLlxuIFx0ICovXG4tXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSBcdTAwMjZcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxuJiM0MztcdGlmICh2bGFuLVx1MDAzZW1vZGUgIT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVIFx1MDAyNlx1MDAyNiBpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbiBcdGlmIChpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpXG5AQCAtMTMwOCwxNyAmIzQzOzEzMzksNyBAQCBzdGF0aWMgdm9pZCBtYWN2bGFuX3BvcnRfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdH1cbiBcbi1cdC8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1XG4tXHQgKiBtYWN2bGFuLCBwdXQgaXQgYmFjay5cbi1cdCAqL1xuLVx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXHUwMDI2XHUwMDI2XG4tXHQgICAgIWV0aGVyX2FkZHJfZXF1YWwocG9ydC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIsIHBvcnQtXHUwMDNlcGVybV9hZGRyKSkge1xuLVx0XHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbi1cbi1cdFx0c3Muc3NfZmFtaWx5ID0gcG9ydC1cdTAwM2VkZXYtXHUwMDNldHlwZTtcbi1cdFx0bWVtY3B5KFx1MDAyNnNzLl9fZGF0YSwgcG9ydC1cdTAwM2VwZXJtX2FkZHIsIHBvcnQtXHUwMDNlZGV2LVx1MDAzZWFkZHJfbGVuKTtcbi1cdFx0ZGV2X3NldF9tYWNfYWRkcmVzcyhwb3J0LVx1MDAzZWRldiwgXHUwMDI2c3MsIE5VTEwpO1xuLVx0fVxuJiM0MztcdG1hY3ZsYW5fcmVzdG9yZV9tYWMocG9ydCk7XG4gXG4gXHRrZnJlZShwb3J0KTtcbiB9XG5AQCAtMTUwNiwxNSAmIzQzOzE1MjcsNiBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0fVxuIFx0cG9ydCA9IG1hY3ZsYW5fcG9ydF9nZXRfcnRubChsb3dlcmRldik7XG4gXG4tXHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZSAqL1xuLVx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkpIHtcbi1cdFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcbi1cdFx0ICogc3RpbGwgZ290byBkZXN0cm95X21hY3ZsYW5fcG9ydCBmb3IgcmVhZGFiaWxpdHkuXG4tXHRcdCAqL1xuLVx0XHRlcnIgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuLVx0fVxuLVxuIFx0dmxhbi1cdTAwM2Vsb3dlcmRldiA9IGxvd2VyZGV2O1xuIFx0dmxhbi1cdTAwM2VkZXYgICAgICA9IGRldjtcbiBcdHZsYW4tXHUwMDNlcG9ydCAgICAgPSBwb3J0O1xuQEAgLTE1MjcsMTIgJiM0MzsxNTM5LDMxIEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKVxuIFx0XHR2bGFuLVx1MDAzZWZsYWdzID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKTtcbiBcbiYjNDM7XHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZS4gVGhlcmUgbWF5IGJlXG4mIzQzO1x0ICogYWRkaXRpb25hbCBzb3VyY2UgbW9kZSBkZXZpY2VzIGJ1dCBub3RoaW5nIGVsc2UgYXQgdGhlIG1vbWVudC5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIEZpcnN0IGNoZWNrIGlmIGFkZGluZyBhIHNvdXJjZSBtb2RlIGRldmljZSB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpIFx1MDAyNlx1MDAyNiB2bGFuLVx1MDAzZW1vZGUgIT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkge1xuJiM0MztcdFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcbiYjNDM7XHRcdCAqIHN0aWxsIGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQgZm9yIHJlYWRhYmlsaXR5LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRlcnIgPSAtRUlOVkFMO1xuJiM0MztcdFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdC8qIE5vdyBjaGVjayBpZiBhZGRpbmcgYSBwYXNzdGhydSBkZXZpY2UgdG8gYW4gZXhpc3Rpbmcgc2V0IG9mIHNvdXJjZSBtb2RlXG4mIzQzO1x0ICogZGV2aWNlcy5cbiYjNDM7XHQgKi9cbiBcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4tXHRcdGlmIChwb3J0LVx1MDAzZWNvdW50KSB7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuJiM0MztcdFx0c3RydWN0IG1hY3ZsYW5fZGV2ICpwO1xuJiM0MztcbiYjNDM7XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucywgbGlzdCkge1xuJiM0MztcdFx0XHRpZiAocC1cdTAwM2Vtb2RlICE9IE1BQ1ZMQU5fTU9ERV9TT1VSQ0UpIHtcbiYjNDM7XHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XG4mIzQzO1x0XHRcdH1cbiBcdFx0fVxuLVx0XHRtYWN2bGFuX3NldF9wYXNzdGhydShwb3J0KTtcbiBcdFx0ZXRoX2h3X2FkZHJfaW5oZXJpdChkZXYsIGxvd2VyZGV2KTtcbiBcdH1cbiBcbkBAIC0xNTY0LDcgJiM0MzsxNTk1LDEyIEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIHVucmVnaXN0ZXJfbmV0ZGV2O1xuIFxuLVx0bGlzdF9hZGRfdGFpbF9yY3UoXHUwMDI2dmxhbi1cdTAwM2VsaXN0LCBcdTAwMjZwb3J0LVx1MDAzZXZsYW5zKTtcbiYjNDM7XHQvKiBtYWN2bGFuX2hhbmRsZV9mcmFtZSBleHBlY3RzIHRoZSAob25lIGFuZCBvbmx5KSBwYXNzdGhydSBkZXZpY2UgZmlyc3QuICovXG4mIzQzO1x0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcbiYjNDM7XHRcdG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpO1xuJiM0MztcdFx0bGlzdF9hZGRfcmN1KFx1MDAyNnZsYW4tXHUwMDNlbGlzdCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucyk7XG4mIzQzO1x0fSBlbHNlXG4mIzQzO1x0XHRsaXN0X2FkZF90YWlsX3JjdShcdTAwMjZ2bGFuLVx1MDAzZWxpc3QsIFx1MDAyNnBvcnQtXHUwMDNldmxhbnMpO1xuIFx0dXBkYXRlX3BvcnRfYmNfcXVldWVfbGVuKHZsYW4tXHUwMDNlcG9ydCk7XG4gXHRuZXRpZl9zdGFja2VkX3RyYW5zZmVyX29wZXJzdGF0ZShsb3dlcmRldiwgZGV2KTtcbiBcdGxpbmt3YXRjaF9maXJlX2V2ZW50KGRldik7XG5AQCAtMTYyNywxOSAmIzQzOzE2NjMsMjMgQEAgc3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkYXRhIFx1MDAyNlx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSkge1xuIFx0XHRzZXRfbW9kZSA9IHRydWU7XG4gXHRcdG1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7XG4tXHRcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJiMzOTt0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5ICovXG4tXHRcdGlmICgobW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpICE9XG4tXHRcdCAgICAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkpXG4tXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4tXHRcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1NPVVJDRSBcdTAwMjZcdTAwMjZcbi1cdFx0ICAgIHZsYW4tXHUwMDNlbW9kZSAhPSBtb2RlKVxuLVx0XHRcdG1hY3ZsYW5fZmx1c2hfc291cmNlcyh2bGFuLVx1MDAzZXBvcnQsIHZsYW4pO1xuJiM0MztcdFx0aWYgKG1vZGUgIT0gdmxhbi1cdTAwM2Vtb2RlKSB7XG4mIzQzO1x0XHRcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJiMzOTt0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5LFxuJiM0MztcdFx0XHQgKiByZWdhcmRsZXNzIG9mIGV4aXN0aW5nIHNvdXJjZSBpbnRlcmZhY2VzLiBGdXJ0aGVybW9yZSwgc291cmNlXG4mIzQzO1x0XHRcdCAqIGludGVyZmFjZXMgY2FuJiMzOTt0IHN3aXRjaCBtb2RlcyB3aXRoaW4gYSBwYXNzaHRyb3VnaCBwb3J0LlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgfHxcbiYjNDM7XHRcdFx0ICAgIG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFKVxuJiM0MztcdFx0XHRcdG1hY3ZsYW5fZmx1c2hfc291cmNlcyh2bGFuLVx1MDAzZXBvcnQsIHZsYW4pO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSkge1xuIFx0XHRfX3UxNiBmbGFncyA9IG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSk7XG4gXHRcdGJvb2wgcHJvbWlzYyA9IChmbGFncyBeIHZsYW4tXHUwMDNlZmxhZ3MpIFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDO1xuLVx0XHRpZiAobWFjdmxhbl9wYXNzdGhydSh2bGFuLVx1MDAzZXBvcnQpIFx1MDAyNlx1MDAyNiBwcm9taXNjKSB7XG4mIzQzO1x0XHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSBcdTAwMjZcdTAwMjYgcHJvbWlzYykge1xuIFx0XHRcdGludCBlcnI7XG4gXG4gXHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDttYWN2bGFuX3VuaW5pdCYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2ZkYl9hZGQmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9mZGJfZGVsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZWZjOTQ5MWE5NjBjZDU3OTI5YzdjMGViNTljMjgwM2RkMGJhYmU0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDEzIDE0OjU3OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jCmluZGV4IDlhNGJjOTlkYmY1M2I1Li40MDVmMmNjMGU1MzYzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwpAQCAtODMsNiAmIzQzOzgzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX3NldF9wYXNzdGhydShzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KQogCXBvcnQtJmd0O2ZsYWdzIHw9IE1BQ1ZMQU5fRl9QQVNTVEhSVTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1KHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpCiYjNDM7ewomIzQzOwlwb3J0LSZndDtmbGFncyAmYW1wOz0gfk1BQ1ZMQU5fRl9QQVNTVEhSVTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW5saW5lIGJvb2wgbWFjdmxhbl9hZGRyX2NoYW5nZShjb25zdCBzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KQogewogCXJldHVybiBwb3J0LSZndDtmbGFncyAmYW1wOyBNQUNWTEFOX0ZfQUREUkNIQU5HRTsKQEAgLTYzNyw3ICYjNDM7NjQyLDcgQEAgc3RhdGljIGludCBtYWN2bGFuX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbG93ZXJkZXYgPSB2bGFuLSZndDtsb3dlcmRldjsKIAlpbnQgZXJyOwogCi0JaWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi0mZ3Q7cG9ydCkpIHsKJiM0MzsJaWYgKHZsYW4tJmd0O21vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7CiAJCWlmICghKHZsYW4tJmd0O2ZsYWdzICZhbXA7IE1BQ1ZMQU5fRkxBR19OT1BST01JU0MpKSB7CiAJCQllcnIgPSBkZXZfc2V0X3Byb21pc2N1aXR5KGxvd2VyZGV2LCAxKTsKIAkJCWlmIChlcnIgJmx0OyAwKQpAQCAtNzEyLDcgJiM0Mzs3MTcsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldl91Y191bnN5bmMobG93ZXJkZXYsIGRldik7CiAJZGV2X21jX3Vuc3luYyhsb3dlcmRldiwgZGV2KTsKIAotCWlmIChtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tJmd0O3BvcnQpKSB7CiYjNDM7CWlmICh2bGFuLSZndDttb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkgewogCQlpZiAoISh2bGFuLSZndDtmbGFncyAmYW1wOyBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKSkKIAkJCWRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIC0xKTsKIAkJZ290byBoYXNoX2RlbDsKQEAgLTk2OCw2ICYjNDM7OTczLDIxIEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCBtYWN2bGFuX3Jlc3RvcmVfbWFjKHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpCiYjNDM7ewomIzQzOwkvKiBJZiB0aGUgbG93ZXIgZGV2aWNlIGFkZHJlc3MgaGFzIGJlZW4gY2hhbmdlZCBieSBwYXNzdGhydQomIzQzOwkgKiBtYWN2bGFuLCBwdXQgaXQgYmFjay4KJiM0MzsJICovCiYjNDM7CWlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpICZhbXA7JmFtcDsKJiM0MzsJICAgICFldGhlcl9hZGRyX2VxdWFsKHBvcnQtJmd0O2Rldi0mZ3Q7ZGV2X2FkZHIsIHBvcnQtJmd0O3Blcm1fYWRkcikpIHsKJiM0MzsJCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOwomIzQzOwomIzQzOwkJc3Muc3NfZmFtaWx5ID0gcG9ydC0mZ3Q7ZGV2LSZndDt0eXBlOwomIzQzOwkJbWVtY3B5KCZhbXA7c3MuX19kYXRhLCBwb3J0LSZndDtwZXJtX2FkZHIsIHBvcnQtJmd0O2Rldi0mZ3Q7YWRkcl9sZW4pOwomIzQzOwkJZGV2X3NldF9tYWNfYWRkcmVzcyhwb3J0LSZndDtkZXYsICZhbXA7c3MsIE5VTEwpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4gPSBuZXRkZXZfcHJpdihkZXYpOwpAQCAtOTc3LDggJiM0Mzs5OTcsMTkgQEAgc3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCW1hY3ZsYW5fZmx1c2hfc291cmNlcyhwb3J0LCB2bGFuKTsKIAlwb3J0LSZndDtjb3VudCAtPSAxOwotCWlmICghcG9ydC0mZ3Q7Y291bnQpCi0JCW1hY3ZsYW5fcG9ydF9kZXN0cm95KHBvcnQtJmd0O2Rldik7CiYjNDM7CWlmIChwb3J0LSZndDtjb3VudCkgewomIzQzOwkJLyogSW4gY2FzZSBvZiByZW1haW5pbmcgc291cmNlIGludGVyZmFjZXMgdW5kbwomIzQzOwkJICogcGFzc3RocnUtc3BlY2lmaWMgcHJvcGVydGllcy4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKHZsYW4tJmd0O21vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7CiYjNDM7CQkJLyogT3JkZXIgaXMgaW1wb3J0YW50LCBkbyBub3QgdHJpZ2dlciBtYWN2bGFuX2RldmljZV9ldmVudCgpLiAqLwomIzQzOwkJCW1hY3ZsYW5fY2xlYXJfcGFzc3RocnUocG9ydCk7CiYjNDM7CQkJbWFjdmxhbl9yZXN0b3JlX21hYyhwb3J0KTsKJiM0MzsJCX0KJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwomIzQzOwltYWN2bGFuX3BvcnRfZGVzdHJveShwb3J0LSZndDtkZXYpOwogfQogCiBzdGF0aWMgdm9pZCBtYWN2bGFuX2Rldl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApAQCAtMTA1Miw3ICYjNDM7MTA4Myw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfYWRkKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCS8qIFN1cHBvcnQgdW5pY2FzdCBmaWx0ZXIgb25seSBvbiBwYXNzdGhydSBkZXZpY2VzLgogCSAqIE11bHRpY2FzdCBmaWx0ZXIgc2hvdWxkIGJlIGFsbG93ZWQgb24gYWxsIGRldmljZXMuCiAJICovCi0JaWYgKCFtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tJmd0O3BvcnQpICZhbXA7JmFtcDsgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKQomIzQzOwlpZiAodmxhbi0mZ3Q7bW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgJmFtcDsmYW1wOyBpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChmbGFncyAmYW1wOyBOTE1fRl9SRVBMQUNFKQpAQCAtMTA3Nyw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfZGVsKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLAogCS8qIFN1cHBvcnQgdW5pY2FzdCBmaWx0ZXIgb25seSBvbiBwYXNzdGhydSBkZXZpY2VzLgogCSAqIE11bHRpY2FzdCBmaWx0ZXIgc2hvdWxkIGJlIGFsbG93ZWQgb24gYWxsIGRldmljZXMuCiAJICovCi0JaWYgKCFtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tJmd0O3BvcnQpICZhbXA7JmFtcDsgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKQomIzQzOwlpZiAodmxhbi0mZ3Q7bW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgJmFtcDsmYW1wOyBpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAogCWlmIChpc191bmljYXN0X2V0aGVyX2FkZHIoYWRkcikpCkBAIC0xMzA4LDE3ICYjNDM7MTMzOSw3IEBAIHN0YXRpYyB2b2lkIG1hY3ZsYW5fcG9ydF9kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCWtmcmVlX3NrYihza2IpOwogCX0KIAotCS8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1Ci0JICogbWFjdmxhbiwgcHV0IGl0IGJhY2suCi0JICovCi0JaWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgJmFtcDsmYW1wOwotCSAgICAhZXRoZXJfYWRkcl9lcXVhbChwb3J0LSZndDtkZXYtJmd0O2Rldl9hZGRyLCBwb3J0LSZndDtwZXJtX2FkZHIpKSB7Ci0JCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNzOwotCi0JCXNzLnNzX2ZhbWlseSA9IHBvcnQtJmd0O2Rldi0mZ3Q7dHlwZTsKLQkJbWVtY3B5KCZhbXA7c3MuX19kYXRhLCBwb3J0LSZndDtwZXJtX2FkZHIsIHBvcnQtJmd0O2Rldi0mZ3Q7YWRkcl9sZW4pOwotCQlkZXZfc2V0X21hY19hZGRyZXNzKHBvcnQtJmd0O2RldiwgJmFtcDtzcywgTlVMTCk7Ci0JfQomIzQzOwltYWN2bGFuX3Jlc3RvcmVfbWFjKHBvcnQpOwogCiAJa2ZyZWUocG9ydCk7CiB9CkBAIC0xNTA2LDE1ICYjNDM7MTUyNyw2IEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJfQogCXBvcnQgPSBtYWN2bGFuX3BvcnRfZ2V0X3J0bmwobG93ZXJkZXYpOwogCi0JLyogT25seSAxIG1hY3ZsYW4gZGV2aWNlIGNhbiBiZSBjcmVhdGVkIGluIHBhc3N0aHJ1IG1vZGUgKi8KLQlpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSkgewotCQkvKiBUaGUgbWFjdmxhbiBwb3J0IG11c3QgYmUgbm90IGNyZWF0ZWQgdGhpcyB0aW1lLAotCQkgKiBzdGlsbCBnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0IGZvciByZWFkYWJpbGl0eS4KLQkJICovCi0JCWVyciA9IC1FSU5WQUw7Ci0JCWdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7Ci0JfQotCiAJdmxhbi0mZ3Q7bG93ZXJkZXYgPSBsb3dlcmRldjsKIAl2bGFuLSZndDtkZXYgICAgICA9IGRldjsKIAl2bGFuLSZndDtwb3J0ICAgICA9IHBvcnQ7CkBAIC0xNTI3LDEyICYjNDM7MTUzOSwzMSBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWlmIChkYXRhICZhbXA7JmFtcDsgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKQogCQl2bGFuLSZndDtmbGFncyA9IG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSk7CiAKJiM0MzsJLyogT25seSAxIG1hY3ZsYW4gZGV2aWNlIGNhbiBiZSBjcmVhdGVkIGluIHBhc3N0aHJ1IG1vZGUuIFRoZXJlIG1heSBiZQomIzQzOwkgKiBhZGRpdGlvbmFsIHNvdXJjZSBtb2RlIGRldmljZXMgYnV0IG5vdGhpbmcgZWxzZSBhdCB0aGUgbW9tZW50LgomIzQzOwkgKgomIzQzOwkgKiBGaXJzdCBjaGVjayBpZiBhZGRpbmcgYSBzb3VyY2UgbW9kZSBkZXZpY2UgdG8gYW4gZXhpc3RpbmcgcGFzc3RocnUgdmxhbi4KJiM0MzsJICovCiYjNDM7CWlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpICZhbXA7JmFtcDsgdmxhbi0mZ3Q7bW9kZSAhPSBNQUNWTEFOX01PREVfU09VUkNFKSB7CiYjNDM7CQkvKiBUaGUgbWFjdmxhbiBwb3J0IG11c3QgYmUgbm90IGNyZWF0ZWQgdGhpcyB0aW1lLAomIzQzOwkJICogc3RpbGwgZ290byBkZXN0cm95X21hY3ZsYW5fcG9ydCBmb3IgcmVhZGFiaWxpdHkuCiYjNDM7CQkgKi8KJiM0MzsJCWVyciA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0OwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIE5vdyBjaGVjayBpZiBhZGRpbmcgYSBwYXNzdGhydSBkZXZpY2UgdG8gYW4gZXhpc3Rpbmcgc2V0IG9mIHNvdXJjZSBtb2RlCiYjNDM7CSAqIGRldmljZXMuCiYjNDM7CSAqLwogCWlmICh2bGFuLSZndDttb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkgewotCQlpZiAocG9ydC0mZ3Q7Y291bnQpIHsKLQkJCWVyciA9IC1FSU5WQUw7Ci0JCQlnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0OwomIzQzOwkJc3RydWN0IG1hY3ZsYW5fZGV2ICpwOwomIzQzOwomIzQzOwkJbGlzdF9mb3JfZWFjaF9lbnRyeShwLCAmYW1wO3BvcnQtJmd0O3ZsYW5zLCBsaXN0KSB7CiYjNDM7CQkJaWYgKHAtJmd0O21vZGUgIT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkgewomIzQzOwkJCQllcnIgPSAtRUlOVkFMOwomIzQzOwkJCQlnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0OwomIzQzOwkJCX0KIAkJfQotCQltYWN2bGFuX3NldF9wYXNzdGhydShwb3J0KTsKIAkJZXRoX2h3X2FkZHJfaW5oZXJpdChkZXYsIGxvd2VyZGV2KTsKIAl9CiAKQEAgLTE1NjQsNyAmIzQzOzE1OTUsMTIgQEAgaW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlpZiAoZXJyKQogCQlnb3RvIHVucmVnaXN0ZXJfbmV0ZGV2OwogCi0JbGlzdF9hZGRfdGFpbF9yY3UoJmFtcDt2bGFuLSZndDtsaXN0LCAmYW1wO3BvcnQtJmd0O3ZsYW5zKTsKJiM0MzsJLyogbWFjdmxhbl9oYW5kbGVfZnJhbWUgZXhwZWN0cyB0aGUgKG9uZSBhbmQgb25seSkgcGFzc3RocnUgZGV2aWNlIGZpcnN0LiAqLwomIzQzOwlpZiAodmxhbi0mZ3Q7bW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHsKJiM0MzsJCW1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpOwomIzQzOwkJbGlzdF9hZGRfcmN1KCZhbXA7dmxhbi0mZ3Q7bGlzdCwgJmFtcDtwb3J0LSZndDt2bGFucyk7CiYjNDM7CX0gZWxzZQomIzQzOwkJbGlzdF9hZGRfdGFpbF9yY3UoJmFtcDt2bGFuLSZndDtsaXN0LCAmYW1wO3BvcnQtJmd0O3ZsYW5zKTsKIAl1cGRhdGVfcG9ydF9iY19xdWV1ZV9sZW4odmxhbi0mZ3Q7cG9ydCk7CiAJbmV0aWZfc3RhY2tlZF90cmFuc2Zlcl9vcGVyc3RhdGUobG93ZXJkZXYsIGRldik7CiAJbGlua3dhdGNoX2ZpcmVfZXZlbnQoZGV2KTsKQEAgLTE2MjcsMTkgJiM0MzsxNjYzLDIzIEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKGRhdGEgJmFtcDsmYW1wOyBkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSkgewogCQlzZXRfbW9kZSA9IHRydWU7CiAJCW1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7Ci0JCS8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJiMzOTt0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5ICovCi0JCWlmICgobW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpICE9Ci0JCSAgICAodmxhbi0mZ3Q7bW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpKQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCWlmICh2bGFuLSZndDttb2RlID09IE1BQ1ZMQU5fTU9ERV9TT1VSQ0UgJmFtcDsmYW1wOwotCQkgICAgdmxhbi0mZ3Q7bW9kZSAhPSBtb2RlKQotCQkJbWFjdmxhbl9mbHVzaF9zb3VyY2VzKHZsYW4tJmd0O3BvcnQsIHZsYW4pOwomIzQzOwkJaWYgKG1vZGUgIT0gdmxhbi0mZ3Q7bW9kZSkgewomIzQzOwkJCS8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJiMzOTt0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5LAomIzQzOwkJCSAqIHJlZ2FyZGxlc3Mgb2YgZXhpc3Rpbmcgc291cmNlIGludGVyZmFjZXMuIEZ1cnRoZXJtb3JlLCBzb3VyY2UKJiM0MzsJCQkgKiBpbnRlcmZhY2VzIGNhbiYjMzk7dCBzd2l0Y2ggbW9kZXMgd2l0aGluIGEgcGFzc2h0cm91Z2ggcG9ydC4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAodmxhbi0mZ3Q7bW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgfHwKJiM0MzsJCQkgICAgbWFjdmxhbl9wYXNzdGhydSh2bGFuLSZndDtwb3J0KSkKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJaWYgKHZsYW4tJmd0O21vZGUgPT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkKJiM0MzsJCQkJbWFjdmxhbl9mbHVzaF9zb3VyY2VzKHZsYW4tJmd0O3BvcnQsIHZsYW4pOwomIzQzOwkJfQogCX0KIAogCWlmIChkYXRhICZhbXA7JmFtcDsgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKSB7CiAJCV9fdTE2IGZsYWdzID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKTsKIAkJYm9vbCBwcm9taXNjID0gKGZsYWdzIF4gdmxhbi0mZ3Q7ZmxhZ3MpICZhbXA7IE1BQ1ZMQU5fRkxBR19OT1BST01JU0M7Ci0JCWlmIChtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tJmd0O3BvcnQpICZhbXA7JmFtcDsgcHJvbWlzYykgewomIzQzOwkJaWYgKHZsYW4tJmd0O21vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVICZhbXA7JmFtcDsgcHJvbWlzYykgewogCQkJaW50IGVycjsKIAogCQkJaWYgKGZsYWdzICZhbXA7IE1BQ1ZMQU5fRkxBR19OT1BST01JU0MpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1ODcKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTWFjdmxhbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBtb2RpZnlpbmcgdGhlIGNvcmUgbG9naWMsIHNwZWNpZmljYWxseSBhcm91bmQgYWRkaW5nIHNvdXJjZSBtb2RlIGRldmljZXMgdG8gYSBwYXNzdGhydSBWTEFOIG9yIHZpY2UtdmVyc2EuIFRoZXkmIzM5O3ZlIGdvbmUgaW4gYW5kIHR3ZWFrZWQgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fb3BlbmAsIGBtYWN2bGFuX3N0b3BgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBUaGF0JiMzOTtzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgbWFjdmxhbiBkcml2ZXIuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYWx0ZXJpbmcgdGhlIGZ1bmRhbWVudGFsIG5ldHdvcmtpbmcgYmVoYXZpb3IsIEkgbmVlZCB0byBmbGFnIHRoaXMgZm9yIGZ1enppbmcuIFRoaXMgaXMgZGVmaW5pdGVseSB0aGUgc29ydCBvZiB0aGluZyB0aGF0IGNhbiBpbnRyb2R1Y2Ugc3VidGxlIGJ1Z3MsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggVkxBTiBjb25maWd1cmF0aW9ucy4KCk5leHQsIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFdlIGtub3cgdGhpcyBjb2RlIGlzIHRpZWQgdG8gYENPTkZJR19NQUNWTEFOYCwgYW5kIHRoYXQgaXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgIHRvIGJlIGJ1aWx0LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDVkxBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L01ha2VmaWxlPTE4PW9iai0kKENPTkZJR19BTVQpICYjNDM7PSBhbXQub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX01BQ1ZMQU4pICYjNDM7PSBtYWN2bGFuLm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19NQUNWVEFQKSAmIzQzOz0gbWFjdnRhcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEyNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDUyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIEZvY3VzOiBNQUNWTEFOIE1vZHVsZSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBmdXp6aW5nIHRoZSBNQUNWTEFOIG1vZHVsZSwgYW5kIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGlzIGRlZmluaXRlbHkgYENPTkZJR19NQUNWTEFOYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzOiB3aGljaCBmdW5jdGlvbnMgYXJlIG1vc3QgaW50ZXJlc3RpbmcgZm9yIGZ1enppbmc/IFRoZSBwYXRjaCBJJiMzOTttIGV4YW1pbmluZyBtb2RpZmllcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucy4gQmFzZWQgb24gdGhlIGRpZmYsIGl0IGxvb2tzIGxpa2U6IGBtYWN2bGFuX3NldF9wYXNzdGhydWAsIGBtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1YCwgYG1hY3ZsYW5fb3BlbmAsIGBtYWN2bGFuX3N0b3BgLCBgbWFjdmxhbl9pbml0YCwgYG1hY3ZsYW5fcmVzdG9yZV9tYWNgLCBgbWFjdmxhbl91bmluaXRgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYG1hY3ZsYW5fZmRiX2RlbGAsIGBtYWN2bGFuX3BvcnRfZGVzdHJveWAsIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYW5kIGBtYWN2bGFuX2NoYW5nZWxpbmtgIGFsbCBuZWVkIGEgY2xvc2VyIGxvb2suCgpJJiMzOTt2ZSBnb3QgYSBwcmVsaW1pbmFyeSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBwcmlvcml0aXplOiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBgbWFjdmxhbl91bmluaXRgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBKdXN0IHRvIGJlIHN1cmUsIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYE1BQ1ZMQU5gIGlzIHRoZSBvbmx5IGNvbmZpZyB3ZSBuZWVkLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBBbmQsIGlzIHRoZSBwYXRjaCBpc29sYXRlZCB0byBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYD8gWWVwLCBqdXN0IHRoYXQgb25lIGZpbGUuCgpPa2F5LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgcmUtZXZhbHVhdGUgb3VyIGZvY3VzIGxpc3QgYW5kIGFkZCBgbWFjdmxhbl9vcGVuYCBhbmQgYG1hY3ZsYW5fc3RvcGAgdG8gdGhlIGV2YWx1YXRpb24gbGlzdC4gVGhpcyBpcyBrZXk6IEFyZSB0aGVzZSBmdW5jdGlvbnMgcmVhbGx5ICYjMzQ7aG90LXBhdGhzJiMzNDs/IE5vLCBub25lIG9mIHRoZW0gYXJlIHBlcmZvcm1hbmNlLWNyaXRpY2FsLCBsaWtlIGBtYWN2bGFuX2hhbmRsZV9mcmFtZWAgb3IgYG1hY3ZsYW5fc3RhcnRfeG1pdGAuIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX29wZW5gLCBgbWFjdmxhbl9zdG9wYCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGBtYWN2bGFuX2ZkYl9kZWxgLCBhbGwgYXBwZWFyIHRvIGJlIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMuIFRoZXkgc2hvdWxkIGJlIGdvb2QgdGFyZ2V0cy4KClNvLCB0aGUgYEZvY3VzU3ltYm9sc2AgZm9yIG91ciBmdXp6ZXIgc2hvdWxkIGJlOiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBgbWFjdmxhbl91bmluaXRgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB0aG9zZSBmdW5jdGlvbiBuYW1lcyBhcmUgZXhhY3RseSByaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDI3PXN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ4Mi1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDgzOmludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ4NC1cdFx0XHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjI5LX1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjMwOkVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fY29tbW9uX25ld2xpbmspO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MzEtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTYzMj1zdGF0aWMgaW50IG1hY3ZsYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjM1LXtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjM2Olx0cmV0dXJuIG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoZGV2LCBwYXJhbXMsIGV4dGFjayk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYzNy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUzOAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHByb2Nlc3NpbmcgdGhpcyBpbmZvcm1hdGlvbjoKCioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIEZ1bmN0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTt2ZSBnb3QgYSBzZXQgb2YgbWFjdmxhbi1yZWxhdGVkIGZ1bmN0aW9ucyB0byBjb25zaWRlcjogYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGFuZCBgbWFjdmxhbl9mZGJfZGVsYC4gTXkgaW1tZWRpYXRlIGluY2xpbmF0aW9uIGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHBpZWNlcyBmaXQgdG9nZXRoZXIuIEdpdmVuIHRoYXQgSSYjMzk7bSBsb29raW5nIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdmlldywgSSYjMzk7bGwgc3RhcnQgd2l0aCBgbWFjdmxhbl9jaGFuZ2VsaW5rYC4gSSYjMzk7bSBndWVzc2luZyB0aGF0IHRoaXMgaXMgYSBjb3JlIGZ1bmN0aW9uLCBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGFwcGx5aW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gSXQmIzM5O3MgYSBrZXkgcGllY2UgSSBuZWVkIHRvIHVuZGVyc3RhbmQsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgYmVnaW4gbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjdmxhbl9jaGFuZ2VsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMzQ3PXN0YXRpYyBpbnQgbWFjdmxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0MjYtICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTQyNzpzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiwgdTMyIG1vZGUsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQyOC1cdFx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKmRhdGFbXSlcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTQ4Mz1pbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTc1LVx0XHRtYWNtb2RlID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9NT0RFXSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU3NjpcdFx0ZXJyID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU3Ny1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTY1MD1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2RlbGxpbmspO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NTEtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTY1MjpzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NTMtXHRcdFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzEwLVx0XHRtYWNtb2RlID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fTUFDQUREUl9NT0RFXSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTcxMTpcdFx0cmV0ID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTcxMi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTgzMj1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE4MzctXHRvcHMtXHUwMDNlcG9saWN5XHRcdD0gbWFjdmxhbl9wb2xpY3k7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTgzODpcdG9wcy1cdTAwM2VjaGFuZ2VsaW5rXHRcdD0gbWFjdmxhbl9jaGFuZ2VsaW5rO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE4MzktXHRvcHMtXHUwMDNlZ2V0X3NpemVcdFx0PSBtYWN2bGFuX2dldF9zaXplO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0MjIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBwb2ludHM6CgoqKkFuYWx5emluZyB0aGUgTWFjdmxhbiBNb2R1bGVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgcmV2aXNpdGVkIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBhbmQgSSYjMzk7bSBjb25maWRlbnQgaW4gdGhlIGxvZ2ljIHRoZXJlLiBTZWVtcyBsaWtlIHRoZSBhZGp1c3RtZW50cyBhbmQgbGluayBzdGF0ZSBoYW5kbGluZyBhcmUgc291bmQuIE5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHdoYXQmIzM5O3MgbmV4dD8gV2hhdCBpcyB0aGUgY29ycmVzcG9uZGluZyBkZS1pbml0aWFsaXphdGlvbiByb3V0aW5lIGFuZCB3aGF0IGlzIGl0cyByb2xlPwoKTGV0JiMzOTtzIHNoaWZ0IG91ciBmb2N1cyB0byBgbWFjdmxhbl91bmluaXRgLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IHRoZSBjbGVhbnVwIG9wZXJhdGlvbnMgaGFuZGxlZCB0aGVyZSBhcmUgcm9idXN0IGFuZCB0aG9yb3VnaC4gV2UgbXVzdCBlbnN1cmUgdGhlcmUgYXJlIG5vIHJlc291cmNlIGxlYWtzIG9yIGRhbmdsaW5nIHBvaW50ZXJzLiBUaGlzIGlzIGxpa2VseSB3aGVyZSBhbnkgc3VidGxlLCBoYXJkLXRvLXJlcHJvZHVjZSBpc3N1ZXMgd2lsbCBtYW5pZmVzdC4gTGV0JiMzOTtzIGRpZyBkZWVwIGludG8gdGhhdCBmdW5jdGlvbiYjMzk7cyBpbXBsZW1lbnRhdGlvbiwgYW5kIGhvdyB0aGUgY2hhbmdlcyBpbiBgbWFjdmxhbl9jaGFuZ2VsaW5rYCB3b3VsZCBpbmZsdWVuY2UgdGhlIHVuaW5pdGlhbGl6YXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fdW5pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz05NzY9c3RhdGljIHZvaWQgbWFjdmxhbl9yZXN0b3JlX21hYyhzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy05OTAtXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6OTkxOnN0YXRpYyB2b2lkIG1hY3ZsYW5fdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTkyLXtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTIyMj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIG1hY3ZsYW5fbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjIzLVx0Lm5kb19pbml0XHRcdD0gbWFjdmxhbl9pbml0LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjEyMjQ6XHQubmRvX3VuaW5pdFx0XHQ9IG1hY3ZsYW5fdW5pbml0LFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMjUtXHQubmRvX29wZW5cdFx0PSBtYWN2bGFuX29wZW4sXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0ODM9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYxMC11bnJlZ2lzdGVyX25ldGRldjpcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjExOlx0LyogbWFjdmxhbl91bmluaXQgd291bGQgZnJlZSB0aGUgbWFjdmxhbiBwb3J0ICovXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYxMi1cdHVucmVnaXN0ZXJfbmV0ZGV2aWNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MTQtZGVzdHJveV9tYWN2bGFuX3BvcnQ6XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTYxNTpcdC8qIHRoZSBtYWN2bGFuIHBvcnQgbWF5IGJlIGZyZWVkIGJ5IG1hY3ZsYW5fdW5pbml0IHdoZW4gZmFpbCB0byByZWdpc3Rlci5cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjE2LVx0ICogc28gd2UgZGVzdHJveSB0aGUgbWFjdmxhbiBwb3J0IG9ubHkgd2hlbiBpdCYjMzk7cyB2YWxpZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODExMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIHJ1bmRvd24gb2Ygd2hhdCBJJiMzOTttIHRoaW5raW5nOgoKKipDaGVja2luZyB0aGUgTWFjdmxhbiBGREIgRnVuY3Rpb25zKioKCkFscmlnaHQsIHNvIHRoZSBgbWFjdmxhbl91bmluaXRgIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byBzaGlmdCBteSBmb2N1cyB0byB0aGUgY29yZSBvZiB0aGUgTUFDIGFkZHJlc3MgbGVhcm5pbmcgYW5kIGZvcndhcmRpbmcgYmVoYXZpb3IuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGBtYWN2bGFuX2ZkYl9hZGRgIGFuZCBgbWFjdmxhbl9mZGJfZGVsYCBmdW5jdGlvbnMuIFRoZXNlIGFyZSBjcml0aWNhbDsgdGhleSBoYW5kbGUgdGhlIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIE1BQyBhZGRyZXNzIGVudHJpZXMgaW4gdGhlIEZvcndhcmRpbmcgRGF0YWJhc2UgKEZEQikuIEFueSBpc3N1ZXMgaGVyZSwgc3VjaCBhcyBpbmNvcnJlY3QgZGF0YSBzdHJ1Y3R1cmVzLCByYWNlIGNvbmRpdGlvbnMsIG9yIGluY29ycmVjdCBGREIgZW50cnkgdXBkYXRlcywgY291bGQgbGVhZCB0byBzZXJpb3VzIGNvbm5lY3Rpdml0eSBwcm9ibGVtcy4gSSYjMzk7bGwgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXhhbWluZSB0aGVpciBsb2dpYywgcGFydGljdWxhcmx5IGhvdyB0aGV5IGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgbmV0d29yayBkZXZpY2UgYW5kIGhvdyB0aGV5IGhhbmRsZSBjb25jdXJyZW5jeS4gSSB3aWxsIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBlcnJvcnMgaW4gbXkgdGhpbmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fZmRiX2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTA2ND1zdGF0aWMgaW50IG1hY3ZsYW5fdmxhbl9yeF9raWxsX3ZpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMDczLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjEwNzQ6c3RhdGljIGludCBtYWN2bGFuX2ZkYl9hZGQoc3RydWN0IG5kbXNnICpuZG0sIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTA3NS1cdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMjIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWFjdmxhbl9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjM2LVx0Lm5kb192bGFuX3J4X2tpbGxfdmlkXHQ9IG1hY3ZsYW5fdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMjM3Olx0Lm5kb19mZGJfYWRkXHRcdD0gbWFjdmxhbl9mZGJfYWRkLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMzgtXHQubmRvX2ZkYl9kZWxcdFx0PSBtYWN2bGFuX2ZkYl9kZWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjUKCQkJCQkJCW91dHB1dDogMTk4CgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE1hY3ZsYW4gUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYG1hY3ZsYW5fZmRiX2FkZGAgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgIGFyZSBpbmRlZWQgY29ycmVjdCwgYmFzZWQgb24gbXkgYW5hbHlzaXMgb2YgdGhlIGNvZGUuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKTm93LCBteSBrZXkgZm9jdXMgYXJlYXMgZm9yIGZ1enppbmcgdGhpcyBwYXRjaCBhcmUgZ29pbmcgdG8gYmUgdGhlc2UgY29yZSBmdW5jdGlvbnM6IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX2ZkYl9hZGRgLCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIHRvdWNoZXMuCgpFbmFibGluZyBmdXp6aW5nIGZvciB0aGlzIHdpbGwgcmVxdWlyZSBgTUFDVkxBTmAgdG8gYmUgc2V0IHRvIHRydWUuCgpBbmQgeWVzLCB0aGlzICphYnNvbHV0ZWx5KiB3YXJyYW50cyBmdXp6aW5nLiBUaGUgcmVhc29uaW5nIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgZnVuZGFtZW50YWxseSBhbHRlcmluZyB0aGUgTWFjdmxhbiBkcml2ZXImIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgbG9naWMgdG8gaGFuZGxlIHNvdXJjZSBtb2RlIGRldmljZXMgd2l0aGluIGV4aXN0aW5nIHBhc3N0aHJ1IFZMQU5zIGFuZCB2aWNlIHZlcnNhLiBJdCBhbHRlcnMgc2V2ZXJhbCBjb250cm9sIHBhdGhzLCBpbmNsdWRpbmcgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGFuZCBgbWFjdmxhbl9mZGJfZGVsYC4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljLCBpdCBuZWVkcyBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24uIFRoZSBwb3RlbnRpYWwgZm9yIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIGFuZCB2dWxuZXJhYmlsaXRpZXMgaXMgcHJlc2VudCwgYW5kIHdlIG5lZWQgdG8gcHJvYmUgdGhlIGNoYW5nZXMgZm9yIHRoYXQgcG9zc2liaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl9jb21tb25fbmV3bGluayYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2NoYW5nZWxpbmsmIzM0OywKICAgICYjMzQ7bWFjdmxhbl91bmluaXQmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9mZGJfYWRkJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fZmRiX2RlbCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2dpYyBvZiB0aGUgbWFjdmxhbiBkcml2ZXIsIHNwZWNpZmljYWxseSBhbGxvd2luZyB0aGUgYWRkaXRpb24gb2Ygc291cmNlIG1vZGUgZGV2aWNlcyB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLCBvciBhZGRpbmcgYSBwYXNzdGhydSBkZXZpY2UgdG8gYW4gZXhpc3Rpbmcgc2V0IG9mIHNvdXJjZSBtb2RlIGRldmljZXMuIEl0IG1vZGlmaWVzIHNldmVyYWwgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyBsaWtlIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIG1hY3ZsYW5fY2hhbmdlbGluaywgbWFjdmxhbl91bmluaXQsIG1hY3ZsYW5fZmRiX2FkZCwgYW5kIG1hY3ZsYW5fZmRiX2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgICAmIzM0O21hY3ZsYW5fY2hhbmdlbGluayYjMzQ7LAogICAgJiMzNDttYWN2bGFuX3VuaW5pdCYjMzQ7LAogICAgJiMzNDttYWN2bGFuX2ZkYl9hZGQmIzM0OywKICAgICYjMzQ7bWFjdmxhbl9mZGJfZGVsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE0OjU3OjI1Ljc5MzExNjQ5MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDU3NTQ2OTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX2NvbW1vbl9uZXdsaW5rXCIsXG4gICAgXCJtYWN2bGFuX2NoYW5nZWxpbmtcIixcbiAgICBcIm1hY3ZsYW5fdW5pbml0XCIsXG4gICAgXCJtYWN2bGFuX2ZkYl9hZGRcIixcbiAgICBcIm1hY3ZsYW5fZmRiX2RlbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6MjUuNzkzMTIyMjExWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTM5MjAzMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBlZmM5NDkxYTk2MGNkNTc5MjljN2MwZWI1OWMyODAzZGQwYmFiZTRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDEzIDE0OjU3OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbmluZGV4IDlhNGJjOTlkYmY1M2I1Li40MDVmMmNjMGU1MzYzMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcXG4rKysgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcXG5AQCAtODMsNiArODMsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpXFxuIFxcdHBvcnQtXFx1MDAzZWZsYWdzIHw9IE1BQ1ZMQU5fRl9QQVNTVEhSVTtcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSB2b2lkIG1hY3ZsYW5fY2xlYXJfcGFzc3RocnUoc3RydWN0IG1hY3ZsYW5fcG9ydCAqcG9ydClcXG4re1xcbitcXHRwb3J0LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+TUFDVkxBTl9GX1BBU1NUSFJVO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lIGJvb2wgbWFjdmxhbl9hZGRyX2NoYW5nZShjb25zdCBzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxcbiB7XFxuIFxcdHJldHVybiBwb3J0LVxcdTAwM2VmbGFncyBcXHUwMDI2IE1BQ1ZMQU5fRl9BRERSQ0hBTkdFO1xcbkBAIC02MzcsNyArNjQyLDcgQEAgc3RhdGljIGludCBtYWN2bGFuX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyZGV2ID0gdmxhbi1cXHUwMDNlbG93ZXJkZXY7XFxuIFxcdGludCBlcnI7XFxuIFxcbi1cXHRpZiAobWFjdmxhbl9wYXNzdGhydSh2bGFuLVxcdTAwM2Vwb3J0KSkge1xcbitcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcXG4gXFx0XFx0aWYgKCEodmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKSkge1xcbiBcXHRcXHRcXHRlcnIgPSBkZXZfc2V0X3Byb21pc2N1aXR5KGxvd2VyZGV2LCAxKTtcXG4gXFx0XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuQEAgLTcxMiw3ICs3MTcsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRkZXZfdWNfdW5zeW5jKGxvd2VyZGV2LCBkZXYpO1xcbiBcXHRkZXZfbWNfdW5zeW5jKGxvd2VyZGV2LCBkZXYpO1xcbiBcXG4tXFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkpIHtcXG4rXFx0aWYgKHZsYW4tXFx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XFxuIFxcdFxcdGlmICghKHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQykpXFxuIFxcdFxcdFxcdGRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIC0xKTtcXG4gXFx0XFx0Z290byBoYXNoX2RlbDtcXG5AQCAtOTY4LDYgKzk3MywyMSBAQCBzdGF0aWMgaW50IG1hY3ZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgbWFjdmxhbl9yZXN0b3JlX21hYyhzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxcbit7XFxuK1xcdC8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1XFxuK1xcdCAqIG1hY3ZsYW4sIHB1dCBpdCBiYWNrLlxcbitcXHQgKi9cXG4rXFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFldGhlcl9hZGRyX2VxdWFsKHBvcnQtXFx1MDAzZWRldi1cXHUwMDNlZGV2X2FkZHIsIHBvcnQtXFx1MDAzZXBlcm1fYWRkcikpIHtcXG4rXFx0XFx0c3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7XFxuK1xcbitcXHRcXHRzcy5zc19mYW1pbHkgPSBwb3J0LVxcdTAwM2VkZXYtXFx1MDAzZXR5cGU7XFxuK1xcdFxcdG1lbWNweShcXHUwMDI2c3MuX19kYXRhLCBwb3J0LVxcdTAwM2VwZXJtX2FkZHIsIHBvcnQtXFx1MDAzZWRldi1cXHUwMDNlYWRkcl9sZW4pO1xcbitcXHRcXHRkZXZfc2V0X21hY19hZGRyZXNzKHBvcnQtXFx1MDAzZWRldiwgXFx1MDAyNnNzLCBOVUxMKTtcXG4rXFx0fVxcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XFxuQEAgLTk3Nyw4ICs5OTcsMTkgQEAgc3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdG1hY3ZsYW5fZmx1c2hfc291cmNlcyhwb3J0LCB2bGFuKTtcXG4gXFx0cG9ydC1cXHUwMDNlY291bnQgLT0gMTtcXG4tXFx0aWYgKCFwb3J0LVxcdTAwM2Vjb3VudClcXG4tXFx0XFx0bWFjdmxhbl9wb3J0X2Rlc3Ryb3kocG9ydC1cXHUwMDNlZGV2KTtcXG4rXFx0aWYgKHBvcnQtXFx1MDAzZWNvdW50KSB7XFxuK1xcdFxcdC8qIEluIGNhc2Ugb2YgcmVtYWluaW5nIHNvdXJjZSBpbnRlcmZhY2VzIHVuZG9cXG4rXFx0XFx0ICogcGFzc3RocnUtc3BlY2lmaWMgcHJvcGVydGllcy5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmICh2bGFuLVxcdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xcbitcXHRcXHRcXHQvKiBPcmRlciBpcyBpbXBvcnRhbnQsIGRvIG5vdCB0cmlnZ2VyIG1hY3ZsYW5fZGV2aWNlX2V2ZW50KCkuICovXFxuK1xcdFxcdFxcdG1hY3ZsYW5fY2xlYXJfcGFzc3RocnUocG9ydCk7XFxuK1xcdFxcdFxcdG1hY3ZsYW5fcmVzdG9yZV9tYWMocG9ydCk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0cmV0dXJuO1xcbitcXHR9XFxuK1xcbitcXHRtYWN2bGFuX3BvcnRfZGVzdHJveShwb3J0LVxcdTAwM2VkZXYpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX2Rldl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0xMDUyLDcgKzEwODMsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fZmRiX2FkZChzdHJ1Y3QgbmRtc2cgKm5kbSwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4gXFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXFxuIFxcdCAqIE11bHRpY2FzdCBmaWx0ZXIgc2hvdWxkIGJlIGFsbG93ZWQgb24gYWxsIGRldmljZXMuXFxuIFxcdCAqL1xcbi1cXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkgXFx1MDAyNlxcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbitcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXFx1MDAyNlxcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbiBcXHRpZiAoZmxhZ3MgXFx1MDAyNiBOTE1fRl9SRVBMQUNFKVxcbkBAIC0xMDc3LDcgKzExMDgsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fZmRiX2RlbChzdHJ1Y3QgbmRtc2cgKm5kbSwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4gXFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXFxuIFxcdCAqIE11bHRpY2FzdCBmaWx0ZXIgc2hvdWxkIGJlIGFsbG93ZWQgb24gYWxsIGRldmljZXMuXFxuIFxcdCAqL1xcbi1cXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkgXFx1MDAyNlxcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbitcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXFx1MDAyNlxcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbiBcXHRpZiAoaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxcbkBAIC0xMzA4LDE3ICsxMzM5LDcgQEAgc3RhdGljIHZvaWQgbWFjdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1XFxuLVxcdCAqIG1hY3ZsYW4sIHB1dCBpdCBiYWNrLlxcbi1cXHQgKi9cXG4tXFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICFldGhlcl9hZGRyX2VxdWFsKHBvcnQtXFx1MDAzZWRldi1cXHUwMDNlZGV2X2FkZHIsIHBvcnQtXFx1MDAzZXBlcm1fYWRkcikpIHtcXG4tXFx0XFx0c3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7XFxuLVxcbi1cXHRcXHRzcy5zc19mYW1pbHkgPSBwb3J0LVxcdTAwM2VkZXYtXFx1MDAzZXR5cGU7XFxuLVxcdFxcdG1lbWNweShcXHUwMDI2c3MuX19kYXRhLCBwb3J0LVxcdTAwM2VwZXJtX2FkZHIsIHBvcnQtXFx1MDAzZWRldi1cXHUwMDNlYWRkcl9sZW4pO1xcbi1cXHRcXHRkZXZfc2V0X21hY19hZGRyZXNzKHBvcnQtXFx1MDAzZWRldiwgXFx1MDAyNnNzLCBOVUxMKTtcXG4tXFx0fVxcbitcXHRtYWN2bGFuX3Jlc3RvcmVfbWFjKHBvcnQpO1xcbiBcXG4gXFx0a2ZyZWUocG9ydCk7XFxuIH1cXG5AQCAtMTUwNiwxNSArMTUyNyw2IEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdH1cXG4gXFx0cG9ydCA9IG1hY3ZsYW5fcG9ydF9nZXRfcnRubChsb3dlcmRldik7XFxuIFxcbi1cXHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZSAqL1xcbi1cXHRpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSkge1xcbi1cXHRcXHQvKiBUaGUgbWFjdmxhbiBwb3J0IG11c3QgYmUgbm90IGNyZWF0ZWQgdGhpcyB0aW1lLFxcbi1cXHRcXHQgKiBzdGlsbCBnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0IGZvciByZWFkYWJpbGl0eS5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGVyciA9IC1FSU5WQUw7XFxuLVxcdFxcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XFxuLVxcdH1cXG4tXFxuIFxcdHZsYW4tXFx1MDAzZWxvd2VyZGV2ID0gbG93ZXJkZXY7XFxuIFxcdHZsYW4tXFx1MDAzZWRldiAgICAgID0gZGV2O1xcbiBcXHR2bGFuLVxcdTAwM2Vwb3J0ICAgICA9IHBvcnQ7XFxuQEAgLTE1MjcsMTIgKzE1MzksMzEgQEAgaW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKVxcbiBcXHRcXHR2bGFuLVxcdTAwM2VmbGFncyA9IG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSk7XFxuIFxcbitcXHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZS4gVGhlcmUgbWF5IGJlXFxuK1xcdCAqIGFkZGl0aW9uYWwgc291cmNlIG1vZGUgZGV2aWNlcyBidXQgbm90aGluZyBlbHNlIGF0IHRoZSBtb21lbnQuXFxuK1xcdCAqXFxuK1xcdCAqIEZpcnN0IGNoZWNrIGlmIGFkZGluZyBhIHNvdXJjZSBtb2RlIGRldmljZSB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLlxcbitcXHQgKi9cXG4rXFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXFx1MDAyNlxcdTAwMjYgdmxhbi1cXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfU09VUkNFKSB7XFxuK1xcdFxcdC8qIFRoZSBtYWN2bGFuIHBvcnQgbXVzdCBiZSBub3QgY3JlYXRlZCB0aGlzIHRpbWUsXFxuK1xcdFxcdCAqIHN0aWxsIGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQgZm9yIHJlYWRhYmlsaXR5LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4rXFx0fVxcbitcXG4rXFx0LyogTm93IGNoZWNrIGlmIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGVcXG4rXFx0ICogZGV2aWNlcy5cXG4rXFx0ICovXFxuIFxcdGlmICh2bGFuLVxcdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xcbi1cXHRcXHRpZiAocG9ydC1cXHUwMDNlY291bnQpIHtcXG4tXFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4tXFx0XFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4rXFx0XFx0c3RydWN0IG1hY3ZsYW5fZGV2ICpwO1xcbitcXG4rXFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShwLCBcXHUwMDI2cG9ydC1cXHUwMDNldmxhbnMsIGxpc3QpIHtcXG4rXFx0XFx0XFx0aWYgKHAtXFx1MDAzZW1vZGUgIT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkge1xcbitcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbitcXHRcXHRcXHRcXHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xcbitcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4tXFx0XFx0bWFjdmxhbl9zZXRfcGFzc3RocnUocG9ydCk7XFxuIFxcdFxcdGV0aF9od19hZGRyX2luaGVyaXQoZGV2LCBsb3dlcmRldik7XFxuIFxcdH1cXG4gXFxuQEAgLTE1NjQsNyArMTU5NSwxMiBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIHVucmVnaXN0ZXJfbmV0ZGV2O1xcbiBcXG4tXFx0bGlzdF9hZGRfdGFpbF9yY3UoXFx1MDAyNnZsYW4tXFx1MDAzZWxpc3QsIFxcdTAwMjZwb3J0LVxcdTAwM2V2bGFucyk7XFxuK1xcdC8qIG1hY3ZsYW5faGFuZGxlX2ZyYW1lIGV4cGVjdHMgdGhlIChvbmUgYW5kIG9ubHkpIHBhc3N0aHJ1IGRldmljZSBmaXJzdC4gKi9cXG4rXFx0aWYgKHZsYW4tXFx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XFxuK1xcdFxcdG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpO1xcbitcXHRcXHRsaXN0X2FkZF9yY3UoXFx1MDAyNnZsYW4tXFx1MDAzZWxpc3QsIFxcdTAwMjZwb3J0LVxcdTAwM2V2bGFucyk7XFxuK1xcdH0gZWxzZVxcbitcXHRcXHRsaXN0X2FkZF90YWlsX3JjdShcXHUwMDI2dmxhbi1cXHUwMDNlbGlzdCwgXFx1MDAyNnBvcnQtXFx1MDAzZXZsYW5zKTtcXG4gXFx0dXBkYXRlX3BvcnRfYmNfcXVldWVfbGVuKHZsYW4tXFx1MDAzZXBvcnQpO1xcbiBcXHRuZXRpZl9zdGFja2VkX3RyYW5zZmVyX29wZXJzdGF0ZShsb3dlcmRldiwgZGV2KTtcXG4gXFx0bGlua3dhdGNoX2ZpcmVfZXZlbnQoZGV2KTtcXG5AQCAtMTYyNywxOSArMTY2MywyMyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZGF0YSBcXHUwMDI2XFx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSkge1xcbiBcXHRcXHRzZXRfbW9kZSA9IHRydWU7XFxuIFxcdFxcdG1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7XFxuLVxcdFxcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJ3QgYmUgc2V0IG9yIGNsZWFyZWQgZHluYW1pY2FsbHkgKi9cXG4tXFx0XFx0aWYgKChtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkgIT1cXG4tXFx0XFx0ICAgICh2bGFuLVxcdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkpXFxuLVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi1cXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICB2bGFuLVxcdTAwM2Vtb2RlICE9IG1vZGUpXFxuLVxcdFxcdFxcdG1hY3ZsYW5fZmx1c2hfc291cmNlcyh2bGFuLVxcdTAwM2Vwb3J0LCB2bGFuKTtcXG4rXFx0XFx0aWYgKG1vZGUgIT0gdmxhbi1cXHUwMDNlbW9kZSkge1xcbitcXHRcXHRcXHQvKiBQYXNzdGhyb3VnaCBtb2RlIGNhbid0IGJlIHNldCBvciBjbGVhcmVkIGR5bmFtaWNhbGx5LFxcbitcXHRcXHRcXHQgKiByZWdhcmRsZXNzIG9mIGV4aXN0aW5nIHNvdXJjZSBpbnRlcmZhY2VzLiBGdXJ0aGVybW9yZSwgc291cmNlXFxuK1xcdFxcdFxcdCAqIGludGVyZmFjZXMgY2FuJ3Qgc3dpdGNoIG1vZGVzIHdpdGhpbiBhIHBhc3NodHJvdWdoIHBvcnQuXFxuK1xcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgfHxcXG4rXFx0XFx0XFx0ICAgIG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFKVxcbitcXHRcXHRcXHRcXHRtYWN2bGFuX2ZsdXNoX3NvdXJjZXModmxhbi1cXHUwMDNlcG9ydCwgdmxhbik7XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKSB7XFxuIFxcdFxcdF9fdTE2IGZsYWdzID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKTtcXG4gXFx0XFx0Ym9vbCBwcm9taXNjID0gKGZsYWdzIF4gdmxhbi1cXHUwMDNlZmxhZ3MpIFxcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQztcXG4tXFx0XFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cXHUwMDNlcG9ydCkgXFx1MDAyNlxcdTAwMjYgcHJvbWlzYykge1xcbitcXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXFx1MDAyNlxcdTAwMjYgcHJvbWlzYykge1xcbiBcXHRcXHRcXHRpbnQgZXJyO1xcbiBcXG4gXFx0XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6MjYuMTQ3ODQwNzA1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjEwMjgxMzEwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjdmxhbl9jb21tb25fbmV3bGlua1wiLFxuICAgIFwibWFjdmxhbl9jaGFuZ2VsaW5rXCIsXG4gICAgXCJtYWN2bGFuX3VuaW5pdFwiLFxuICAgIFwibWFjdmxhbl9mZGJfYWRkXCIsXG4gICAgXCJtYWN2bGFuX2ZkYl9kZWxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2dpYyBvZiB0aGUgbWFjdmxhbiBkcml2ZXIsIHNwZWNpZmljYWxseSBhbGxvd2luZyB0aGUgYWRkaXRpb24gb2Ygc291cmNlIG1vZGUgZGV2aWNlcyB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLCBvciBhZGRpbmcgYSBwYXNzdGhydSBkZXZpY2UgdG8gYW4gZXhpc3Rpbmcgc2V0IG9mIHNvdXJjZSBtb2RlIGRldmljZXMuIEl0IG1vZGlmaWVzIHNldmVyYWwgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyBsaWtlIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIG1hY3ZsYW5fY2hhbmdlbGluaywgbWFjdmxhbl91bmluaXQsIG1hY3ZsYW5fZmRiX2FkZCwgYW5kIG1hY3ZsYW5fZmRiX2RlbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWZjOTQ5MWE5NjBjZDU3OTI5YzdjMGViNTljMjgwM2RkMGJhYmU0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDEzIDE0OjU3OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5pbmRleCA5YTRiYzk5ZGJmNTNiNS4uNDA1ZjJjYzBlNTM2MzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuQEAgLTgzLDYgKzgzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX3NldF9wYXNzdGhydShzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuIFx0cG9ydC1cdTAwM2VmbGFncyB8PSBNQUNWTEFOX0ZfUEFTU1RIUlU7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1KHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpXG4re1xuK1x0cG9ydC1cdTAwM2VmbGFncyBcdTAwMjY9IH5NQUNWTEFOX0ZfUEFTU1RIUlU7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgYm9vbCBtYWN2bGFuX2FkZHJfY2hhbmdlKGNvbnN0IHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQpXG4ge1xuIFx0cmV0dXJuIHBvcnQtXHUwMDNlZmxhZ3MgXHUwMDI2IE1BQ1ZMQU5fRl9BRERSQ0hBTkdFO1xuQEAgLTYzNyw3ICs2NDIsNyBAQCBzdGF0aWMgaW50IG1hY3ZsYW5fb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyZGV2ID0gdmxhbi1cdTAwM2Vsb3dlcmRldjtcbiBcdGludCBlcnI7XG4gXG4tXHRpZiAobWFjdmxhbl9wYXNzdGhydSh2bGFuLVx1MDAzZXBvcnQpKSB7XG4rXHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xuIFx0XHRpZiAoISh2bGFuLVx1MDAzZWZsYWdzIFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKSkge1xuIFx0XHRcdGVyciA9IGRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIDEpO1xuIFx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG5AQCAtNzEyLDcgKzcxNyw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXZfdWNfdW5zeW5jKGxvd2VyZGV2LCBkZXYpO1xuIFx0ZGV2X21jX3Vuc3luYyhsb3dlcmRldiwgZGV2KTtcbiBcbi1cdGlmIChtYWN2bGFuX3Bhc3N0aHJ1KHZsYW4tXHUwMDNlcG9ydCkpIHtcbitcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4gXHRcdGlmICghKHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IE1BQ1ZMQU5fRkxBR19OT1BST01JU0MpKVxuIFx0XHRcdGRldl9zZXRfcHJvbWlzY3VpdHkobG93ZXJkZXYsIC0xKTtcbiBcdFx0Z290byBoYXNoX2RlbDtcbkBAIC05NjgsNiArOTczLDIxIEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgbWFjdmxhbl9yZXN0b3JlX21hYyhzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0KVxuK3tcbitcdC8qIElmIHRoZSBsb3dlciBkZXZpY2UgYWRkcmVzcyBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHBhc3N0aHJ1XG4rXHQgKiBtYWN2bGFuLCBwdXQgaXQgYmFjay5cbitcdCAqL1xuK1x0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkgXHUwMDI2XHUwMDI2XG4rXHQgICAgIWV0aGVyX2FkZHJfZXF1YWwocG9ydC1cdTAwM2VkZXYtXHUwMDNlZGV2X2FkZHIsIHBvcnQtXHUwMDNlcGVybV9hZGRyKSkge1xuK1x0XHRzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBzcztcbitcbitcdFx0c3Muc3NfZmFtaWx5ID0gcG9ydC1cdTAwM2VkZXYtXHUwMDNldHlwZTtcbitcdFx0bWVtY3B5KFx1MDAyNnNzLl9fZGF0YSwgcG9ydC1cdTAwM2VwZXJtX2FkZHIsIHBvcnQtXHUwMDNlZGV2LVx1MDAzZWFkZHJfbGVuKTtcbitcdFx0ZGV2X3NldF9tYWNfYWRkcmVzcyhwb3J0LVx1MDAzZWRldiwgXHUwMDI2c3MsIE5VTEwpO1xuK1x0fVxuK31cbitcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XG5AQCAtOTc3LDggKzk5NywxOSBAQCBzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0bWFjdmxhbl9mbHVzaF9zb3VyY2VzKHBvcnQsIHZsYW4pO1xuIFx0cG9ydC1cdTAwM2Vjb3VudCAtPSAxO1xuLVx0aWYgKCFwb3J0LVx1MDAzZWNvdW50KVxuLVx0XHRtYWN2bGFuX3BvcnRfZGVzdHJveShwb3J0LVx1MDAzZWRldik7XG4rXHRpZiAocG9ydC1cdTAwM2Vjb3VudCkge1xuK1x0XHQvKiBJbiBjYXNlIG9mIHJlbWFpbmluZyBzb3VyY2UgaW50ZXJmYWNlcyB1bmRvXG4rXHRcdCAqIHBhc3N0aHJ1LXNwZWNpZmljIHByb3BlcnRpZXMuXG4rXHRcdCAqL1xuK1x0XHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xuK1x0XHRcdC8qIE9yZGVyIGlzIGltcG9ydGFudCwgZG8gbm90IHRyaWdnZXIgbWFjdmxhbl9kZXZpY2VfZXZlbnQoKS4gKi9cbitcdFx0XHRtYWN2bGFuX2NsZWFyX3Bhc3N0aHJ1KHBvcnQpO1xuK1x0XHRcdG1hY3ZsYW5fcmVzdG9yZV9tYWMocG9ydCk7XG4rXHRcdH1cbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuK1x0bWFjdmxhbl9wb3J0X2Rlc3Ryb3kocG9ydC1cdTAwM2VkZXYpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBtYWN2bGFuX2Rldl9nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTEwNTIsNyArMTA4Myw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfYWRkKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXG4gXHQgKiBNdWx0aWNhc3QgZmlsdGVyIHNob3VsZCBiZSBhbGxvd2VkIG9uIGFsbCBkZXZpY2VzLlxuIFx0ICovXG4tXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSBcdTAwMjZcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxuK1x0aWYgKHZsYW4tXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXHUwMDI2XHUwMDI2IGlzX3VuaWNhc3RfZXRoZXJfYWRkcihhZGRyKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKGZsYWdzIFx1MDAyNiBOTE1fRl9SRVBMQUNFKVxuQEAgLTEwNzcsNyArMTEwOCw3IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9mZGJfZGVsKHN0cnVjdCBuZG1zZyAqbmRtLCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuIFx0LyogU3VwcG9ydCB1bmljYXN0IGZpbHRlciBvbmx5IG9uIHBhc3N0aHJ1IGRldmljZXMuXG4gXHQgKiBNdWx0aWNhc3QgZmlsdGVyIHNob3VsZCBiZSBhbGxvd2VkIG9uIGFsbCBkZXZpY2VzLlxuIFx0ICovXG4tXHRpZiAoIW1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSBcdTAwMjZcdTAwMjYgaXNfdW5pY2FzdF9ldGhlcl9hZGRyKGFkZHIpKVxuK1x0aWYgKHZsYW4tXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfUEFTU1RIUlUgXHUwMDI2XHUwMDI2IGlzX3VuaWNhc3RfZXRoZXJfYWRkcihhZGRyKSlcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKGlzX3VuaWNhc3RfZXRoZXJfYWRkcihhZGRyKSlcbkBAIC0xMzA4LDE3ICsxMzM5LDcgQEAgc3RhdGljIHZvaWQgbWFjdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHR9XG4gXG4tXHQvKiBJZiB0aGUgbG93ZXIgZGV2aWNlIGFkZHJlc3MgaGFzIGJlZW4gY2hhbmdlZCBieSBwYXNzdGhydVxuLVx0ICogbWFjdmxhbiwgcHV0IGl0IGJhY2suXG4tXHQgKi9cbi1cdGlmIChtYWN2bGFuX3Bhc3N0aHJ1KHBvcnQpIFx1MDAyNlx1MDAyNlxuLVx0ICAgICFldGhlcl9hZGRyX2VxdWFsKHBvcnQtXHUwMDNlZGV2LVx1MDAzZWRldl9hZGRyLCBwb3J0LVx1MDAzZXBlcm1fYWRkcikpIHtcbi1cdFx0c3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3M7XG4tXG4tXHRcdHNzLnNzX2ZhbWlseSA9IHBvcnQtXHUwMDNlZGV2LVx1MDAzZXR5cGU7XG4tXHRcdG1lbWNweShcdTAwMjZzcy5fX2RhdGEsIHBvcnQtXHUwMDNlcGVybV9hZGRyLCBwb3J0LVx1MDAzZWRldi1cdTAwM2VhZGRyX2xlbik7XG4tXHRcdGRldl9zZXRfbWFjX2FkZHJlc3MocG9ydC1cdTAwM2VkZXYsIFx1MDAyNnNzLCBOVUxMKTtcbi1cdH1cbitcdG1hY3ZsYW5fcmVzdG9yZV9tYWMocG9ydCk7XG4gXG4gXHRrZnJlZShwb3J0KTtcbiB9XG5AQCAtMTUwNiwxNSArMTUyNyw2IEBAIGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR9XG4gXHRwb3J0ID0gbWFjdmxhbl9wb3J0X2dldF9ydG5sKGxvd2VyZGV2KTtcbiBcbi1cdC8qIE9ubHkgMSBtYWN2bGFuIGRldmljZSBjYW4gYmUgY3JlYXRlZCBpbiBwYXNzdGhydSBtb2RlICovXG4tXHRpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSkge1xuLVx0XHQvKiBUaGUgbWFjdmxhbiBwb3J0IG11c3QgYmUgbm90IGNyZWF0ZWQgdGhpcyB0aW1lLFxuLVx0XHQgKiBzdGlsbCBnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0IGZvciByZWFkYWJpbGl0eS5cbi1cdFx0ICovXG4tXHRcdGVyciA9IC1FSU5WQUw7XG4tXHRcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XG4tXHR9XG4tXG4gXHR2bGFuLVx1MDAzZWxvd2VyZGV2ID0gbG93ZXJkZXY7XG4gXHR2bGFuLVx1MDAzZWRldiAgICAgID0gZGV2O1xuIFx0dmxhbi1cdTAwM2Vwb3J0ICAgICA9IHBvcnQ7XG5AQCAtMTUyNywxMiArMTUzOSwzMSBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSlcbiBcdFx0dmxhbi1cdTAwM2VmbGFncyA9IG5sYV9nZXRfdTE2KGRhdGFbSUZMQV9NQUNWTEFOX0ZMQUdTXSk7XG4gXG4rXHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZS4gVGhlcmUgbWF5IGJlXG4rXHQgKiBhZGRpdGlvbmFsIHNvdXJjZSBtb2RlIGRldmljZXMgYnV0IG5vdGhpbmcgZWxzZSBhdCB0aGUgbW9tZW50LlxuK1x0ICpcbitcdCAqIEZpcnN0IGNoZWNrIGlmIGFkZGluZyBhIHNvdXJjZSBtb2RlIGRldmljZSB0byBhbiBleGlzdGluZyBwYXNzdGhydSB2bGFuLlxuK1x0ICovXG4rXHRpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSBcdTAwMjZcdTAwMjYgdmxhbi1cdTAwM2Vtb2RlICE9IE1BQ1ZMQU5fTU9ERV9TT1VSQ0UpIHtcbitcdFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcbitcdFx0ICogc3RpbGwgZ290byBkZXN0cm95X21hY3ZsYW5fcG9ydCBmb3IgcmVhZGFiaWxpdHkuXG4rXHRcdCAqL1xuK1x0XHRlcnIgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuK1x0fVxuK1xuK1x0LyogTm93IGNoZWNrIGlmIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGVcbitcdCAqIGRldmljZXMuXG4rXHQgKi9cbiBcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4tXHRcdGlmIChwb3J0LVx1MDAzZWNvdW50KSB7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuK1x0XHRzdHJ1Y3QgbWFjdmxhbl9kZXYgKnA7XG4rXG4rXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucywgbGlzdCkge1xuK1x0XHRcdGlmIChwLVx1MDAzZW1vZGUgIT0gTUFDVkxBTl9NT0RFX1NPVVJDRSkge1xuK1x0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbitcdFx0XHRcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XG4rXHRcdFx0fVxuIFx0XHR9XG4tXHRcdG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpO1xuIFx0XHRldGhfaHdfYWRkcl9pbmhlcml0KGRldiwgbG93ZXJkZXYpO1xuIFx0fVxuIFxuQEAgLTE1NjQsNyArMTU5NSwxMiBAQCBpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKGVycilcbiBcdFx0Z290byB1bnJlZ2lzdGVyX25ldGRldjtcbiBcbi1cdGxpc3RfYWRkX3RhaWxfcmN1KFx1MDAyNnZsYW4tXHUwMDNlbGlzdCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucyk7XG4rXHQvKiBtYWN2bGFuX2hhbmRsZV9mcmFtZSBleHBlY3RzIHRoZSAob25lIGFuZCBvbmx5KSBwYXNzdGhydSBkZXZpY2UgZmlyc3QuICovXG4rXHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkge1xuK1x0XHRtYWN2bGFuX3NldF9wYXNzdGhydShwb3J0KTtcbitcdFx0bGlzdF9hZGRfcmN1KFx1MDAyNnZsYW4tXHUwMDNlbGlzdCwgXHUwMDI2cG9ydC1cdTAwM2V2bGFucyk7XG4rXHR9IGVsc2VcbitcdFx0bGlzdF9hZGRfdGFpbF9yY3UoXHUwMDI2dmxhbi1cdTAwM2VsaXN0LCBcdTAwMjZwb3J0LVx1MDAzZXZsYW5zKTtcbiBcdHVwZGF0ZV9wb3J0X2JjX3F1ZXVlX2xlbih2bGFuLVx1MDAzZXBvcnQpO1xuIFx0bmV0aWZfc3RhY2tlZF90cmFuc2Zlcl9vcGVyc3RhdGUobG93ZXJkZXYsIGRldik7XG4gXHRsaW5rd2F0Y2hfZmlyZV9ldmVudChkZXYpO1xuQEAgLTE2MjcsMTkgKzE2NjMsMjMgQEAgc3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkYXRhIFx1MDAyNlx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSkge1xuIFx0XHRzZXRfbW9kZSA9IHRydWU7XG4gXHRcdG1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7XG4tXHRcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJ3QgYmUgc2V0IG9yIGNsZWFyZWQgZHluYW1pY2FsbHkgKi9cbi1cdFx0aWYgKChtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSkgIT1cbi1cdFx0ICAgICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSlcbi1cdFx0XHRyZXR1cm4gLUVJTlZBTDtcbi1cdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgdmxhbi1cdTAwM2Vtb2RlICE9IG1vZGUpXG4tXHRcdFx0bWFjdmxhbl9mbHVzaF9zb3VyY2VzKHZsYW4tXHUwMDNlcG9ydCwgdmxhbik7XG4rXHRcdGlmIChtb2RlICE9IHZsYW4tXHUwMDNlbW9kZSkge1xuK1x0XHRcdC8qIFBhc3N0aHJvdWdoIG1vZGUgY2FuJ3QgYmUgc2V0IG9yIGNsZWFyZWQgZHluYW1pY2FsbHksXG4rXHRcdFx0ICogcmVnYXJkbGVzcyBvZiBleGlzdGluZyBzb3VyY2UgaW50ZXJmYWNlcy4gRnVydGhlcm1vcmUsIHNvdXJjZVxuK1x0XHRcdCAqIGludGVyZmFjZXMgY2FuJ3Qgc3dpdGNoIG1vZGVzIHdpdGhpbiBhIHBhc3NodHJvdWdoIHBvcnQuXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUgfHxcbitcdFx0XHQgICAgbWFjdmxhbl9wYXNzdGhydSh2bGFuLVx1MDAzZXBvcnQpKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfU09VUkNFKVxuK1x0XHRcdFx0bWFjdmxhbl9mbHVzaF9zb3VyY2VzKHZsYW4tXHUwMDNlcG9ydCwgdmxhbik7XG4rXHRcdH1cbiBcdH1cbiBcbiBcdGlmIChkYXRhIFx1MDAyNlx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pIHtcbiBcdFx0X191MTYgZmxhZ3MgPSBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pO1xuIFx0XHRib29sIHByb21pc2MgPSAoZmxhZ3MgXiB2bGFuLVx1MDAzZWZsYWdzKSBcdTAwMjYgTUFDVkxBTl9GTEFHX05PUFJPTUlTQztcbi1cdFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUodmxhbi1cdTAwM2Vwb3J0KSBcdTAwMjZcdTAwMjYgcHJvbWlzYykge1xuK1x0XHRpZiAodmxhbi1cdTAwM2Vtb2RlID09IE1BQ1ZMQU5fTU9ERV9QQVNTVEhSVSBcdTAwMjZcdTAwMjYgcHJvbWlzYykge1xuIFx0XHRcdGludCBlcnI7XG4gXG4gXHRcdFx0aWYgKGZsYWdzIFx1MDAyNiBNQUNWTEFOX0ZMQUdfTk9QUk9NSVNDKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6MjYuMTQ3ODQxOTQ1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzNTMzNjMyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNYWN2bGFuIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AuIEl0IHNlZW1zIHRoZXkncmUgbW9kaWZ5aW5nIHRoZSBjb3JlIGxvZ2ljLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGFkZGluZyBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGEgcGFzc3RocnUgVkxBTiBvciB2aWNlLXZlcnNhLiBUaGV5J3ZlIGdvbmUgaW4gYW5kIHR3ZWFrZWQgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fb3BlbmAsIGBtYWN2bGFuX3N0b3BgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBUaGF0J3MgYSBwcmV0dHkgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBtYWN2bGFuIGRyaXZlci4gR2l2ZW4gdGhhdCBpdCdzIGFsdGVyaW5nIHRoZSBmdW5kYW1lbnRhbCBuZXR3b3JraW5nIGJlaGF2aW9yLCBJIG5lZWQgdG8gZmxhZyB0aGlzIGZvciBmdXp6aW5nLiBUaGlzIGlzIGRlZmluaXRlbHkgdGhlIHNvcnQgb2YgdGhpbmcgdGhhdCBjYW4gaW50cm9kdWNlIHN1YnRsZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIFZMQU4gY29uZmlndXJhdGlvbnMuXG5cbk5leHQsIEkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFdlIGtub3cgdGhpcyBjb2RlIGlzIHRpZWQgdG8gYENPTkZJR19NQUNWTEFOYCwgYW5kIHRoYXQgaXQgc2hvdWxkIGJlIGVuYWJsZWQgZm9yIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgIHRvIGJlIGJ1aWx0LiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODcsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1NzozMS40ODMxODAzNjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczMDkyNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfQU1UKSArPSBhbXQub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19NQUNWTEFOKSArPSBtYWN2bGFuLm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfTUFDVlRBUCkgKz0gbWFjdnRhcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE0OjU3OjMxLjU1MDQ5NzY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwNzU1OTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZvY3VzOiBNQUNWTEFOIE1vZHVsZSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgZnV6emluZyB0aGUgTUFDVkxBTiBtb2R1bGUsIGFuZCB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBpcyBkZWZpbml0ZWx5IGBDT05GSUdfTUFDVkxBTmAuIFRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIE5vdywgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IHdoaWNoIGZ1bmN0aW9ucyBhcmUgbW9zdCBpbnRlcmVzdGluZyBmb3IgZnV6emluZz8gVGhlIHBhdGNoIEknbSBleGFtaW5pbmcgbW9kaWZpZXMgYSBidW5jaCBvZiBmdW5jdGlvbnMuIEJhc2VkIG9uIHRoZSBkaWZmLCBpdCBsb29rcyBsaWtlOiBgbWFjdmxhbl9zZXRfcGFzc3RocnVgLCBgbWFjdmxhbl9jbGVhcl9wYXNzdGhydWAsIGBtYWN2bGFuX29wZW5gLCBgbWFjdmxhbl9zdG9wYCwgYG1hY3ZsYW5faW5pdGAsIGBtYWN2bGFuX3Jlc3RvcmVfbWFjYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGBtYWN2bGFuX2ZkYl9kZWxgLCBgbWFjdmxhbl9wb3J0X2Rlc3Ryb3lgLCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGFuZCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCBhbGwgbmVlZCBhIGNsb3NlciBsb29rLlxuXG5JJ3ZlIGdvdCBhIHByZWxpbWluYXJ5IGxpc3Qgb2YgZnVuY3Rpb25zIHRvIHByaW9yaXRpemU6IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX2ZkYl9hZGRgLCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAuIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBNQUNWTEFOYCBpcyB0aGUgb25seSBjb25maWcgd2UgbmVlZC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQW5kLCBpcyB0aGUgcGF0Y2ggaXNvbGF0ZWQgdG8gYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2A/IFllcCwganVzdCB0aGF0IG9uZSBmaWxlLlxuXG5Pa2F5LCBsZXQncyBnbyBiYWNrIGFuZCByZS1ldmFsdWF0ZSBvdXIgZm9jdXMgbGlzdCBhbmQgYWRkIGBtYWN2bGFuX29wZW5gIGFuZCBgbWFjdmxhbl9zdG9wYCB0byB0aGUgZXZhbHVhdGlvbiBsaXN0LiBUaGlzIGlzIGtleTogQXJlIHRoZXNlIGZ1bmN0aW9ucyByZWFsbHkgXCJob3QtcGF0aHNcIj8gTm8sIG5vbmUgb2YgdGhlbSBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwsIGxpa2UgYG1hY3ZsYW5faGFuZGxlX2ZyYW1lYCBvciBgbWFjdmxhbl9zdGFydF94bWl0YC4gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fb3BlbmAsIGBtYWN2bGFuX3N0b3BgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYG1hY3ZsYW5fZmRiX2RlbGAsIGFsbCBhcHBlYXIgdG8gYmUgY29udHJvbCBwYXRoIGZ1bmN0aW9ucy4gVGhleSBzaG91bGQgYmUgZ29vZCB0YXJnZXRzLlxuXG5TbywgdGhlIGBGb2N1c1N5bWJvbHNgIGZvciBvdXIgZnV6emVyIHNob3VsZCBiZTogYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBgbWFjdmxhbl9jaGFuZ2VsaW5rYCwgYG1hY3ZsYW5fdW5pbml0YCwgYG1hY3ZsYW5fZmRiX2FkZGAsIGFuZCBgbWFjdmxhbl9mZGJfZGVsYC4gTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aG9zZSBmdW5jdGlvbiBuYW1lcyBhcmUgZXhhY3RseSByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEyNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1NzozOS4zNTgwNTg4MDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5NzYyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjdmxhbl9jb21tb25fbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0Mjc9c3RhdGljIGludCBtYWN2bGFuX2NoYW5nZWxpbmtfc291cmNlcyhzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4sIHUzMiBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0ODItXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE0ODM6aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ4NC1cXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MjktfVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjMwOkVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fY29tbW9uX25ld2xpbmspO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjMxLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNjMyPXN0YXRpYyBpbnQgbWFjdmxhbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYzNS17XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE2MzY6XFx0cmV0dXJuIG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoZGV2LCBwYXJhbXMsIGV4dGFjayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MzctfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1NzozOS40MTYwNDAwNjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQxMTY3MzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSBwcm9jZXNzaW5nIHRoaXMgaW5mb3JtYXRpb246XG5cbioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIHNvIEkndmUgZ290IGEgc2V0IG9mIG1hY3ZsYW4tcmVsYXRlZCBmdW5jdGlvbnMgdG8gY29uc2lkZXI6IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX2ZkYl9hZGRgLCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAuIE15IGltbWVkaWF0ZSBpbmNsaW5hdGlvbiBpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyLiBHaXZlbiB0aGF0IEknbSBsb29raW5nIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdmlldywgSSdsbCBzdGFydCB3aXRoIGBtYWN2bGFuX2NoYW5nZWxpbmtgLiBJJ20gZ3Vlc3NpbmcgdGhhdCB0aGlzIGlzIGEgY29yZSBmdW5jdGlvbiwgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBhcHBseWluZyBjb25maWd1cmF0aW9uIGNoYW5nZXMuIEl0J3MgYSBrZXkgcGllY2UgSSBuZWVkIHRvIHVuZGVyc3RhbmQsIHNvIHRoYXQncyB3aGVyZSBJJ2xsIGJlZ2luIG15IGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTM4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6NDMuMDU3MjA5MTU4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTU3MDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEzNDc9c3RhdGljIGludCBtYWN2bGFuX3ZhbGlkYXRlKHN0cnVjdCBubGF0dHIgKnRiW10sIHN0cnVjdCBubGF0dHIgKmRhdGFbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDI2LSAqL1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDI3OnN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQyOC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10pXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTQ4Mz1pbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1NzUtXFx0XFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNTc2OlxcdFxcdGVyciA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTc3LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTY1MD1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2RlbGxpbmspO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjUxLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjUyOnN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2NTMtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqdGJbXSwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE3MTAtXFx0XFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNzExOlxcdFxcdHJldCA9IG1hY3ZsYW5fY2hhbmdlbGlua19zb3VyY2VzKHZsYW4sIG1hY21vZGUsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNzEyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTgzMj1pbnQgbWFjdmxhbl9saW5rX3JlZ2lzdGVyKHN0cnVjdCBydG5sX2xpbmtfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTgzNy1cXHRvcHMtXFx1MDAzZXBvbGljeVxcdFxcdD0gbWFjdmxhbl9wb2xpY3k7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE4Mzg6XFx0b3BzLVxcdTAwM2VjaGFuZ2VsaW5rXFx0XFx0PSBtYWN2bGFuX2NoYW5nZWxpbms7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE4MzktXFx0b3BzLVxcdTAwM2VnZXRfc2l6ZVxcdFxcdD0gbWFjdmxhbl9nZXRfc2l6ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6NDMuMTEzMzcxODczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg2OTk5Mjc0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRob3NlIHBvaW50czpcblxuKipBbmFseXppbmcgdGhlIE1hY3ZsYW4gTW9kdWxlcyoqXG5cbk9rYXksIHNvIEkndmUganVzdCByZXZpc2l0ZWQgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGFuZCBJJ20gY29uZmlkZW50IGluIHRoZSBsb2dpYyB0aGVyZS4gU2VlbXMgbGlrZSB0aGUgYWRqdXN0bWVudHMgYW5kIGxpbmsgc3RhdGUgaGFuZGxpbmcgYXJlIHNvdW5kLiBOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB3aGF0J3MgbmV4dD8gV2hhdCBpcyB0aGUgY29ycmVzcG9uZGluZyBkZS1pbml0aWFsaXphdGlvbiByb3V0aW5lIGFuZCB3aGF0IGlzIGl0cyByb2xlP1xuXG5MZXQncyBzaGlmdCBvdXIgZm9jdXMgdG8gYG1hY3ZsYW5fdW5pbml0YC4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGUgY2xlYW51cCBvcGVyYXRpb25zIGhhbmRsZWQgdGhlcmUgYXJlIHJvYnVzdCBhbmQgdGhvcm91Z2guIFdlIG11c3QgZW5zdXJlIHRoZXJlIGFyZSBubyByZXNvdXJjZSBsZWFrcyBvciBkYW5nbGluZyBwb2ludGVycy4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgYW55IHN1YnRsZSwgaGFyZC10by1yZXByb2R1Y2UgaXNzdWVzIHdpbGwgbWFuaWZlc3QuIExldCdzIGRpZyBkZWVwIGludG8gdGhhdCBmdW5jdGlvbidzIGltcGxlbWVudGF0aW9uLCBhbmQgaG93IHRoZSBjaGFuZ2VzIGluIGBtYWN2bGFuX2NoYW5nZWxpbmtgIHdvdWxkIGluZmx1ZW5jZSB0aGUgdW5pbml0aWFsaXphdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQyMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE0OjU3OjQ3Ljk4MzM2NjU5N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3NzA5NjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fdW5pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmM9OTc2PXN0YXRpYyB2b2lkIG1hY3ZsYW5fcmVzdG9yZV9tYWMoc3RydWN0IG1hY3ZsYW5fcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy05OTAtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjk5MTpzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy05OTIte1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEyMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyMjMtXFx0Lm5kb19pbml0XFx0XFx0PSBtYWN2bGFuX2luaXQsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjEyMjQ6XFx0Lm5kb191bmluaXRcXHRcXHQ9IG1hY3ZsYW5fdW5pbml0LFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjI1LVxcdC5uZG9fb3BlblxcdFxcdD0gbWFjdmxhbl9vcGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE0ODM9aW50IG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjEwLXVucmVnaXN0ZXJfbmV0ZGV2OlxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjExOlxcdC8qIG1hY3ZsYW5fdW5pbml0IHdvdWxkIGZyZWUgdGhlIG1hY3ZsYW4gcG9ydCAqL1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjEyLVxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYxNC1kZXN0cm95X21hY3ZsYW5fcG9ydDpcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTYxNTpcXHQvKiB0aGUgbWFjdmxhbiBwb3J0IG1heSBiZSBmcmVlZCBieSBtYWN2bGFuX3VuaW5pdCB3aGVuIGZhaWwgdG8gcmVnaXN0ZXIuXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MTYtXFx0ICogc28gd2UgZGVzdHJveSB0aGUgbWFjdmxhbiBwb3J0IG9ubHkgd2hlbiBpdCdzIHZhbGlkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1Nzo0OC4zMDEwODM4NjRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyOTQ5NDk2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHF1aWNrIHJ1bmRvd24gb2Ygd2hhdCBJJ20gdGhpbmtpbmc6XG5cbioqQ2hlY2tpbmcgdGhlIE1hY3ZsYW4gRkRCIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIHNvIHRoZSBgbWFjdmxhbl91bmluaXRgIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5vdywgSSBuZWVkIHRvIHNoaWZ0IG15IGZvY3VzIHRvIHRoZSBjb3JlIG9mIHRoZSBNQUMgYWRkcmVzcyBsZWFybmluZyBhbmQgZm9yd2FyZGluZyBiZWhhdmlvci4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgYG1hY3ZsYW5fZmRiX2FkZGAgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgIGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGNyaXRpY2FsOyB0aGV5IGhhbmRsZSB0aGUgYWRkaXRpb24gYW5kIHJlbW92YWwgb2YgTUFDIGFkZHJlc3MgZW50cmllcyBpbiB0aGUgRm9yd2FyZGluZyBEYXRhYmFzZSAoRkRCKS4gQW55IGlzc3VlcyBoZXJlLCBzdWNoIGFzIGluY29ycmVjdCBkYXRhIHN0cnVjdHVyZXMsIHJhY2UgY29uZGl0aW9ucywgb3IgaW5jb3JyZWN0IEZEQiBlbnRyeSB1cGRhdGVzLCBjb3VsZCBsZWFkIHRvIHNlcmlvdXMgY29ubmVjdGl2aXR5IHByb2JsZW1zLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgdGhlaXIgbG9naWMsIHBhcnRpY3VsYXJseSBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgZGV2aWNlIGFuZCBob3cgdGhleSBoYW5kbGUgY29uY3VycmVuY3kuIEkgd2lsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZXJyb3JzIGluIG15IHRoaW5raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTExLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6NTEuNzMwNTgwOTkzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTI0MTE0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYWN2bGFuX2ZkYl9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMDY0PXN0YXRpYyBpbnQgbWFjdmxhbl92bGFuX3J4X2tpbGxfdmlkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTA3My1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTA3NDpzdGF0aWMgaW50IG1hY3ZsYW5fZmRiX2FkZChzdHJ1Y3QgbmRtc2cgKm5kbSwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTA3NS1cXHRcXHRcXHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEyMjI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIzNi1cXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcXHQ9IG1hY3ZsYW5fdmxhbl9yeF9raWxsX3ZpZCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTIzNzpcXHQubmRvX2ZkYl9hZGRcXHRcXHQ9IG1hY3ZsYW5fZmRiX2FkZCxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIzOC1cXHQubmRvX2ZkYl9kZWxcXHRcXHQ9IG1hY3ZsYW5fZmRiX2RlbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTQ6NTc6NTEuNzkxODI3MzQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNzkzMDE2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTWFjdmxhbiBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gSSd2ZSBjb25maXJtZWQgdGhhdCBgbWFjdmxhbl9mZGJfYWRkYCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAgYXJlIGluZGVlZCBjb3JyZWN0LCBiYXNlZCBvbiBteSBhbmFseXNpcyBvZiB0aGUgY29kZS4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCBteSBrZXkgZm9jdXMgYXJlYXMgZm9yIGZ1enppbmcgdGhpcyBwYXRjaCBhcmUgZ29pbmcgdG8gYmUgdGhlc2UgY29yZSBmdW5jdGlvbnM6IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgYG1hY3ZsYW5fY2hhbmdlbGlua2AsIGBtYWN2bGFuX3VuaW5pdGAsIGBtYWN2bGFuX2ZkYl9hZGRgLCBhbmQgYG1hY3ZsYW5fZmRiX2RlbGAuIFRoZXNlIGFyZSB0aGUgY3JpdGljYWwgY29udHJvbCBwYXRoIGZ1bmN0aW9ucyB0aGlzIHBhdGNoIHRvdWNoZXMuXG5cbkVuYWJsaW5nIGZ1enppbmcgZm9yIHRoaXMgd2lsbCByZXF1aXJlIGBNQUNWTEFOYCB0byBiZSBzZXQgdG8gdHJ1ZS5cblxuQW5kIHllcywgdGhpcyAqYWJzb2x1dGVseSogd2FycmFudHMgZnV6emluZy4gVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJpbmcgdGhlIE1hY3ZsYW4gZHJpdmVyJ3MgY29yZSBmdW5jdGlvbmFsaXR5LiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIHRoZSBsb2dpYyB0byBoYW5kbGUgc291cmNlIG1vZGUgZGV2aWNlcyB3aXRoaW4gZXhpc3RpbmcgcGFzc3RocnUgVkxBTnMgYW5kIHZpY2UgdmVyc2EuIEl0IGFsdGVycyBzZXZlcmFsIGNvbnRyb2wgcGF0aHMsIGluY2x1ZGluZyBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGBtYWN2bGFuX2NoYW5nZWxpbmtgLCBgbWFjdmxhbl91bmluaXRgLCBgbWFjdmxhbl9mZGJfYWRkYCwgYW5kIGBtYWN2bGFuX2ZkYl9kZWxgLiBHaXZlbiB0aGF0IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYywgaXQgbmVlZHMgYSB0aG9yb3VnaCBmdXp6aW5nIGNhbXBhaWduLiBUaGUgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGludGVyYWN0aW9ucyBhbmQgdnVsbmVyYWJpbGl0aWVzIGlzIHByZXNlbnQsIGFuZCB3ZSBuZWVkIHRvIHByb2JlIHRoZSBjaGFuZ2VzIGZvciB0aGF0IHBvc3NpYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjY1LCJPdXRwdXRUb2tlbnMiOjE5OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxNDo1Nzo1OC4xNzExMzE2NzJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTUxNjkxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgICBcIm1hY3ZsYW5fY2hhbmdlbGlua1wiLFxuICAgIFwibWFjdmxhbl91bmluaXRcIixcbiAgICBcIm1hY3ZsYW5fZmRiX2FkZFwiLFxuICAgIFwibWFjdmxhbl9mZGJfZGVsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgdGhlIG1hY3ZsYW4gZHJpdmVyLCBzcGVjaWZpY2FsbHkgYWxsb3dpbmcgdGhlIGFkZGl0aW9uIG9mIHNvdXJjZSBtb2RlIGRldmljZXMgdG8gYW4gZXhpc3RpbmcgcGFzc3RocnUgdmxhbiwgb3IgYWRkaW5nIGEgcGFzc3RocnUgZGV2aWNlIHRvIGFuIGV4aXN0aW5nIHNldCBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzLiBJdCBtb2RpZmllcyBzZXZlcmFsIGNvbnRyb2wgcGF0aCBmdW5jdGlvbnMgbGlrZSBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCBtYWN2bGFuX2NoYW5nZWxpbmssIG1hY3ZsYW5fdW5pbml0LCBtYWN2bGFuX2ZkYl9hZGQsIGFuZCBtYWN2bGFuX2ZkYl9kZWwuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQ1ZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYWN2bGFuX2NvbW1vbl9uZXdsaW5rXCIsXG4gICAgXCJtYWN2bGFuX2NoYW5nZWxpbmtcIixcbiAgICBcIm1hY3ZsYW5fdW5pbml0XCIsXG4gICAgXCJtYWN2bGFuX2ZkYl9hZGRcIixcbiAgICBcIm1hY3ZsYW5fZmRiX2RlbFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBtYWN2bGFuIGRyaXZlciwgc3BlY2lmaWNhbGx5IGFsbG93aW5nIHRoZSBhZGRpdGlvbiBvZiBzb3VyY2UgbW9kZSBkZXZpY2VzIHRvIGFuIGV4aXN0aW5nIHBhc3N0aHJ1IHZsYW4sIG9yIGFkZGluZyBhIHBhc3N0aHJ1IGRldmljZSB0byBhbiBleGlzdGluZyBzZXQgb2Ygc291cmNlIG1vZGUgZGV2aWNlcy4gSXQgbW9kaWZpZXMgc2V2ZXJhbCBjb250cm9sIHBhdGggZnVuY3Rpb25zIGxpa2UgbWFjdmxhbl9jb21tb25fbmV3bGluaywgbWFjdmxhbl9jaGFuZ2VsaW5rLCBtYWN2bGFuX3VuaW5pdCwgbWFjdmxhbl9mZGJfYWRkLCBhbmQgbWFjdmxhbl9mZGJfZGVsLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[1] Phase: Succeeded StartedAt: 2026-07-13 14:58:41 +0000 UTC FinishedAt: 2026-07-13 14:58:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 14:58:42 +0000 UTC FinishedAt: 2026-07-13 14:58:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2] Phase: Succeeded StartedAt: 2026-07-13 14:58:42 +0000 UTC FinishedAt: 2026-07-13 19:38:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN) Phase: Failed StartedAt: 2026-07-13 14:58:55 +0000 UTC FinishedAt: 2026-07-13 19:38:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 14:58:55 +0000 UTC FinishedAt: 2026-07-13 14:59:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 14:58:56 +0000 UTC FinishedAt: 2026-07-13 14:59:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflow7vl6h/series-workflow7vl6h-convert-artifact-2518846566/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 14:59:49 +0000 UTC FinishedAt: 2026-07-13 16:02:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 14:59:49 +0000 UTC FinishedAt: 2026-07-13 16:02:58 +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:*d6822070-681e-4716-ad0b-08a31b91b40b,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-workflow7vl6h/series-workflow7vl6h-convert-artifact-2518846566/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": "592fd323-af20-4c1f-8730-5427d089100f", "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-workflow7vl6h/series-workflow7vl6h-build-action-1847798780/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 14:59:53 +0000 UTC FinishedAt: 2026-07-13 16:02:48 +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:*d6822070-681e-4716-ad0b-08a31b91b40b,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-workflow7vl6h/series-workflow7vl6h-convert-artifact-2518846566/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": "592fd323-af20-4c1f-8730-5427d089100f", "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-workflow7vl6h/series-workflow7vl6h-build-action-1847798780/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 16:02:58 +0000 UTC FinishedAt: 2026-07-13 16:02:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 16:02:58 +0000 UTC FinishedAt: 2026-07-13 16:02:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 16:02:58 +0000 UTC FinishedAt: 2026-07-13 16:03:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 16:02:58 +0000 UTC FinishedAt: 2026-07-13 16:03:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflow7vl6h/series-workflow7vl6h-convert-artifact-3873344697/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 16:03:19 +0000 UTC FinishedAt: 2026-07-13 16:05:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 16:03:19 +0000 UTC FinishedAt: 2026-07-13 16:05:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*592fd323-af20-4c1f-8730-5427d089100f,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-workflow7vl6h/series-workflow7vl6h-build-action-1847798780/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-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 16:05:41 +0000 UTC FinishedAt: 2026-07-13 16:05:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 16:05:41 +0000 UTC FinishedAt: 2026-07-13 16:05:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 16:05:41 +0000 UTC FinishedAt: 2026-07-13 16:33:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 16:05:41 +0000 UTC FinishedAt: 2026-07-13 16:33:16 +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:*d6822070-681e-4716-ad0b-08a31b91b40b,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-workflow7vl6h/series-workflow7vl6h-convert-artifact-3873344697/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": "db58dc1c-0bd3-4c09-9190-a36d55d849bc", "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-workflow7vl6h/series-workflow7vl6h-build-action-2879022485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 16:05:41 +0000 UTC FinishedAt: 2026-07-13 16:33:06 +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:*d6822070-681e-4716-ad0b-08a31b91b40b,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-workflow7vl6h/series-workflow7vl6h-convert-artifact-3873344697/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": "db58dc1c-0bd3-4c09-9190-a36d55d849bc", "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-workflow7vl6h/series-workflow7vl6h-build-action-2879022485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 16:33:16 +0000 UTC FinishedAt: 2026-07-13 16:33:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 16:33:16 +0000 UTC FinishedAt: 2026-07-13 16:33:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 16:33:16 +0000 UTC FinishedAt: 2026-07-13 16:35:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 16:33:16 +0000 UTC FinishedAt: 2026-07-13 16:35:20 +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:*db58dc1c-0bd3-4c09-9190-a36d55d849bc,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-workflow7vl6h/series-workflow7vl6h-build-action-2879022485/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-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10] Phase: Failed StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 19:38:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 19:38:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"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:*592fd323-af20-4c1f-8730-5427d089100f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db58dc1c-0bd3-4c09-9190-a36d55d849bc,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-workflow7vl6h/series-workflow7vl6h-build-action-1847798780/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-workflow7vl6h/series-workflow7vl6h-build-action-2879022485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 16:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 16:35:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"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-workflow7vl6h/series-workflow7vl6h-convert-artifact-155822638/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-retest Phase: Failed StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 16:36:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:retest-data,Default:nil,Value:*{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*{{=steps['base-build'].outputs.parameters.result ? jsonpath(steps['base-build'].outputs.parameters.result, '$.build_id') : ''}},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db58dc1c-0bd3-4c09-9190-a36d55d849bc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7vl6h/series-workflow7vl6h-build-action-1847798780/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-workflow7vl6h/series-workflow7vl6h-build-action-2879022485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-retest[0] Phase: Succeeded StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 16:35:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-retest[0].save-retest-task Phase: Succeeded StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 16:35:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},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-workflow7vl6h/series-workflow7vl6h-convert-artifact-109400565/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 16:35:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 16:35:30 +0000 UTC FinishedAt: 2026-07-13 16:35:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 16:35:40 +0000 UTC FinishedAt: 2026-07-13 19:38:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 16:35:40 +0000 UTC FinishedAt: 2026-07-13 19:38:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*592fd323-af20-4c1f-8730-5427d089100f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db58dc1c-0bd3-4c09-9190-a36d55d849bc,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-workflow7vl6h/series-workflow7vl6h-build-action-1847798780/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-workflow7vl6h/series-workflow7vl6h-build-action-2879022485/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-workflow7vl6h/series-workflow7vl6h-convert-artifact-155822638/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-retest[1] Phase: Failed StartedAt: 2026-07-13 16:35:40 +0000 UTC FinishedAt: 2026-07-13 16:36:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7vl6h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink","macvlan_changelink","macvlan_uninit","macvlan_fdb_add","macvlan_fdb_del"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"b17f3ff2-59f0-4d58-a8b8-7085278c35fc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:{"findings":["d5d14725-5a48-484c-876d-026175d0b21a"]},track:KASAN)[10].run-retest[1].retest Phase: Failed StartedAt: 2026-07-13 16:35:40 +0000 UTC FinishedAt: 2026-07-13 16:36:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*{{=steps['base-build'].outputs.parameters.result ? jsonpath(steps['base-build'].outputs.parameters.result, '$.build_id') : ''}},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*db58dc1c-0bd3-4c09-9190-a36d55d849bc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Previous reproducers,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7vl6h/series-workflow7vl6h-build-action-1847798780/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-workflow7vl6h/series-workflow7vl6h-build-action-2879022485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:retest-task,Path:/data/retest.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7vl6h/series-workflow7vl6h-convert-artifact-109400565/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:*1,}