Name: series-workflowqqc87 Phase: Succeeded StartedAt: 2026-06-23 19:10:39 +0000 UTC FinishedAt: 2026-06-23 23:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[0] Phase: Succeeded StartedAt: 2026-06-23 19:10:39 +0000 UTC FinishedAt: 2026-06-23 19:18:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 19:10:39 +0000 UTC FinishedAt: 2026-06-23 19:18:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "12091470c6b4c1c14b2de12dcbae2ada6cb6d20b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "12091470c6b4c1c14b2de12dcbae2ada6cb6d20b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "07ec6cb3-1bc2-41be-ab1f-e058db27674e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "udp_bpf_update_proto" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE5OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX2JwZl91cGRhdGVfcHJvdG8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIFVEUCBzb2NrZXRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gYSBCUEYgc29ja21hcCBieSBzZXR0aW5nIHRoZSBTT0NLX1JDVV9GUkVFIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYvVURQIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE5OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmQxNmEyZDI2NzViMTIyMzFlMTM1MWNkOWMzMTVmZDdlMWE4OThjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDE5OjE3OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF9icGYuYyBiL25ldC9pcHY0L3VkcF9icGYuY1xuaW5kZXggYWQ1N2M0YzllYWFiNmYuLjk3MDMyN2I1OTU4MjY5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdWRwX2JwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC91ZHBfYnBmLmNcbkBAIC0xNzMsNiAmIzQzOzE3Myw5IEBAIGludCB1ZHBfYnBmX3VwZGF0ZV9wcm90byhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssIGJvb2wgcmVzdG9yZSlcbiBcdGlmIChzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG4gXHRcdHVkcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChwc29jay1cdTAwM2Vza19wcm90byk7XG4gXG4mIzQzO1x0LyogVHJlYXQgYWxsIHNvY2tldHMgYXMgbm9uLXJlZmNvdW50ZWQsIHJlZ2FyZGxlc3Mgb2YgYmluZGluZyBzdGF0ZS4gKi9cbiYjNDM7XHRzb2NrX3NldF9mbGFnKHNrLCBTT0NLX1JDVV9GUkVFKTtcbiYjNDM7XG4gXHRzb2NrX3JlcGxhY2VfcHJvdG8oc2ssIFx1MDAyNnVkcF9icGZfcHJvdHNbZmFtaWx5XSk7XG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMTE5NzJmZmRiMTZlZDMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTcsNiAmIzQzOzcsNyBAQFxuIFxuICNpbmNsdWRlIFwmIzM0O3Rlc3RfcHJvZ3MuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3Rfc2ttc2dfbG9hZF9oZWxwZXJzLnNrZWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfdXBkYXRlLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfYXR0YWNoLnNrZWwuaFwmIzM0O1xuQEAgLTE3LDYgJiM0MzsxOCw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7dGVzdF9zb2NrbWFwX21zZ19wb3BfZGF0YS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDticGZfaXRlcl9zb2NrbWFwLnNrZWwuaFwmIzM0O1xuIFxuJiM0MzsjaW5jbHVkZSBcJiMzNDtjZ3JvdXBfaGVscGVycy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c29ja21hcF9oZWxwZXJzLmhcJiMzNDtcbiBcbiAjZGVmaW5lIFRDUF9SRVBBSVJcdFx0MTlcdC8qIFRDUCBzb2NrIGlzIHVuZGVyIHJlcGFpciByaWdodCBub3cgKi9cbkBAIC0xMzczLDYgJiM0MzsxMzc1LDUyIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9tdWx0aV9jaGFubmVscyhpbnQgc290eXBlKVxuIFx0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcbiB9XG4gXG4mIzQzOyNkZWZpbmUgTE9PS1VQX0JJTkRfUkVMRUFTRV9DR1x0XCYjMzQ7L3NvY2ttYXBfbG9va3VwLWJpbmQtcmVsZWFzZVwmIzM0O1xuJiM0MzsjZGVmaW5lIExPT0tVUF9CSU5EX1JFTEVBU0VfUkVQXHQ2NFxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2Uodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSAqc2tlbDtcbiYjNDM7XHRzdHJ1Y3Qgc29ja2FkZHJfaW4gc2E7XG4mIzQzO1x0aW50IGNnLCBpO1xuJiM0MztcbiYjNDM7XHRjZyA9IGNncm91cF9zZXR1cF9hbmRfam9pbihMT09LVVBfQklORF9SRUxFQVNFX0NHKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19GRChjZywgXCYjMzQ7Y2dyb3VwX3NldHVwX2FuZF9qb2luXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlX19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O29wZW5fYW5kX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWxpbmtzLmNvbm5lY3QgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2Nncm91cChza2VsLVx1MDAzZXByb2dzLmNvbm5lY3QsIGNnKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cdTAwM2VsaW5rcy5jb25uZWN0LCBcJiMzNDthdHRhY2hfY2dyb3VwXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZGVzdHJveTtcbiYjNDM7XG4mIzQzO1x0c2Euc2luX2ZhbWlseSA9IEFGX0lORVQ7XG4mIzQzO1x0c2Euc2luX3BvcnQgPSBicGZfaHRvbnMoMTIzNCk7XG4mIzQzO1x0c2Euc2luX2FkZHIuc19hZGRyID0gYnBmX2h0b25sKElOQUREUl9MT09QQkFDSyk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIExPT0tVUF9CSU5EX1JFTEVBU0VfUkVQOyAmIzQzOyYjNDM7aSkge1xuJiM0MztcdFx0X19jbG9zZV9mZCBpbnQgc2s7XG4mIzQzO1xuJiM0MztcdFx0c2sgPSB4c29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApO1xuJiM0MztcdFx0aWYgKHNrIFx1MDAzYyAwKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoeGJwZl9tYXBfdXBkYXRlX2VsZW0oYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnNvY2ttYXApLCBcdTAwMjZ1MzIoMCksXG4mIzQzO1x0XHRcdFx0XHQgXHUwMDI2c2ssIEJQRl9BTlkpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoeGNvbm5lY3Qoc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKilcdTAwMjZzYSwgc2l6ZW9mKHNhKSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO2Rlc3Ryb3k6XG4mIzQzO1x0dGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2VfX2Rlc3Ryb3koc2tlbCk7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0Y2xlYW51cF9jZ3JvdXBfZW52aXJvbm1lbnQoKTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgY3JlYXRlX3VwZGF0ZV9mcmVlXCYjMzQ7KSlcbkBAIC0xNDUxLDQgJiM0MzsxNDk5LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiBcdFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgdWRwIG11bHRpIGNoYW5uZWxzXCYjMzQ7KSlcbiBcdFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfREdSQU0pO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgbG9va3VwLWJpbmQtcmVsZWFzZVwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNjNzdiMTkzODkzYmQ1XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuY1xuQEAgLTAsMCAmIzQzOzEsMzcgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW4uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IHtcbiYjNDM7XHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xuJiM0MztcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4mIzQzO1x0X190eXBlKGtleSwgaW50KTtcbiYjNDM7XHRfX3R5cGUodmFsdWUsIGludCk7XG4mIzQzO30gc29ja21hcCBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2Nncm91cC9jb25uZWN0NFwmIzM0OylcbiYjNDM7aW50IGNvbm5lY3Qoc3RydWN0IGJwZl9zb2NrX2FkZHIgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfc29jayAqc2s7XG4mIzQzO1x0aW50IHJldCA9IFNLX0RST1A7XG4mIzQzO1xuJiM0MztcdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb2NrbWFwLCBcdTAwMjYoaW50KXswfSk7XG4mIzQzO1x0aWYgKHNrKSB7XG4mIzQzO1x0XHRpZiAoc2sgPT0gY3R4LVx1MDAzZXNrKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBzb2NrYWRkcl9pbiBzYSA9IHtcbiYjNDM7XHRcdFx0XHQuc2luX2ZhbWlseSA9IGN0eC1cdTAwM2V1c2VyX2ZhbWlseSxcbiYjNDM7XHRcdFx0XHQuc2luX3BvcnQgPSBjdHgtXHUwMDNldXNlcl9wb3J0LFxuJiM0MztcdFx0XHRcdC5zaW5fYWRkci5zX2FkZHIgPSBjdHgtXHUwMDNldXNlcl9pcDRcbiYjNDM7XHRcdFx0fTtcbiYjNDM7XG4mIzQzO1x0XHRcdHJldCA9ICFicGZfYmluZChjdHgsIChzdHJ1Y3Qgc29ja2FkZHIgKilcdTAwMjZzYSwgc2l6ZW9mKHNhKSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YnBmX3NrX3JlbGVhc2Uoc2spO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxOToxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF9icGZfdXBkYXRlX3Byb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBVRFAgc29ja2V0cyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIGEgQlBGIHNvY2ttYXAgYnkgc2V0dGluZyB0aGUgU09DS19SQ1VfRlJFRSBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGL1VEUCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmQxNmEyZDI2NzViMTIyMzFlMTM1MWNkOWMzMTVmZDdlMWE4OThjOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDE5OjE3OjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX2JwZi5jIGIvbmV0L2lwdjQvdWRwX2JwZi5jCmluZGV4IGFkNTdjNGM5ZWFhYjZmLi45NzAzMjdiNTk1ODI2OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdWRwX2JwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3VkcF9icGYuYwpAQCAtMTczLDYgJiM0MzsxNzMsOSBAQCBpbnQgdWRwX2JwZl91cGRhdGVfcHJvdG8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBib29sIHJlc3RvcmUpCiAJaWYgKHNrLSZndDtza19mYW1pbHkgPT0gQUZfSU5FVDYpCiAJCXVkcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChwc29jay0mZ3Q7c2tfcHJvdG8pOwogCiYjNDM7CS8qIFRyZWF0IGFsbCBzb2NrZXRzIGFzIG5vbi1yZWZjb3VudGVkLCByZWdhcmRsZXNzIG9mIGJpbmRpbmcgc3RhdGUuICovCiYjNDM7CXNvY2tfc2V0X2ZsYWcoc2ssIFNPQ0tfUkNVX0ZSRUUpOwomIzQzOwogCXNvY2tfcmVwbGFjZV9wcm90byhzaywgJmFtcDt1ZHBfYnBmX3Byb3RzW2ZhbWlseV0pOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCmluZGV4IGNiMzIyOTcxMWY5M2EzLi4xMTk3MmZmZGIxNmVkMyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwpAQCAtNyw2ICYjNDM7Nyw3IEBACiAKICNpbmNsdWRlICYjMzQ7dGVzdF9wcm9ncy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGVzdF9za21zZ19sb2FkX2hlbHBlcnMuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3Rlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3Rlc3Rfc29ja21hcF91cGRhdGUuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3Rlc3Rfc29ja21hcF9za2JfdmVyZGljdF9hdHRhY2guc2tlbC5oJiMzNDsKQEAgLTE3LDYgJiM0MzsxOCw3IEBACiAjaW5jbHVkZSAmIzM0O3Rlc3Rfc29ja21hcF9tc2dfcG9wX2RhdGEuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7YnBmX2l0ZXJfc29ja21hcC5za2VsLmgmIzM0OwogCiYjNDM7I2luY2x1ZGUgJiMzNDtjZ3JvdXBfaGVscGVycy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7c29ja21hcF9oZWxwZXJzLmgmIzM0OwogCiAjZGVmaW5lIFRDUF9SRVBBSVIJCTE5CS8qIFRDUCBzb2NrIGlzIHVuZGVyIHJlcGFpciByaWdodCBub3cgKi8KQEAgLTEzNzMsNiAmIzQzOzEzNzUsNTIgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpCiAJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKIH0KIAomIzQzOyNkZWZpbmUgTE9PS1VQX0JJTkRfUkVMRUFTRV9DRwkmIzM0Oy9zb2NrbWFwX2xvb2t1cC1iaW5kLXJlbGVhc2UmIzM0OwomIzQzOyNkZWZpbmUgTE9PS1VQX0JJTkRfUkVMRUFTRV9SRVAJNjQKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlICpza2VsOwomIzQzOwlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2E7CiYjNDM7CWludCBjZywgaTsKJiM0MzsKJiM0MzsJY2cgPSBjZ3JvdXBfc2V0dXBfYW5kX2pvaW4oTE9PS1VQX0JJTkRfUkVMRUFTRV9DRyk7CiYjNDM7CWlmICghQVNTRVJUX09LX0ZEKGNnLCAmIzM0O2Nncm91cF9zZXR1cF9hbmRfam9pbiYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbCA9IHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CXNrZWwtJmd0O2xpbmtzLmNvbm5lY3QgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2Nncm91cChza2VsLSZndDtwcm9ncy5jb25uZWN0LCBjZyk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLSZndDtsaW5rcy5jb25uZWN0LCAmIzM0O2F0dGFjaF9jZ3JvdXAmIzM0OykpCiYjNDM7CQlnb3RvIGRlc3Ryb3k7CiYjNDM7CiYjNDM7CXNhLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwomIzQzOwlzYS5zaW5fcG9ydCA9IGJwZl9odG9ucygxMjM0KTsKJiM0MzsJc2Euc2luX2FkZHIuc19hZGRyID0gYnBmX2h0b25sKElOQUREUl9MT09QQkFDSyk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBMT09LVVBfQklORF9SRUxFQVNFX1JFUDsgJiM0MzsmIzQzO2kpIHsKJiM0MzsJCV9fY2xvc2VfZmQgaW50IHNrOwomIzQzOwomIzQzOwkJc2sgPSB4c29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOwomIzQzOwkJaWYgKHNrICZsdDsgMCkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCWlmICh4YnBmX21hcF91cGRhdGVfZWxlbShicGZfbWFwX19mZChza2VsLSZndDttYXBzLnNvY2ttYXApLCAmYW1wO3UzMigwKSwKJiM0MzsJCQkJCSAmYW1wO3NrLCBCUEZfQU5ZKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCWlmICh4Y29ubmVjdChzaywgKHN0cnVjdCBzb2NrYWRkciAqKSZhbXA7c2EsIHNpemVvZihzYSkpKQomIzQzOwkJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiYjNDM7ZGVzdHJveToKJiM0MzsJdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2VfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7Y2xlYW51cDoKJiM0MzsJY2xlYW51cF9jZ3JvdXBfZW52aXJvbm1lbnQoKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWUmIzM0OykpCkBAIC0xNDUxLDQgJiM0MzsxNDk5LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZCkKIAkJdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgdWRwIG11bHRpIGNoYW5uZWxzJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoU09DS19ER1JBTSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBsb29rdXAtYmluZC1yZWxlYXNlJiMzNDspKQomIzQzOwkJdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNjNzdiMTkzODkzYmQ1Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLmMKQEAgLTAsMCAmIzQzOzEsMzcgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9icGYuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW4uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IHsKJiM0MzsJX191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTsKJiM0MzsJX191aW50KG1heF9lbnRyaWVzLCAxKTsKJiM0MzsJX190eXBlKGtleSwgaW50KTsKJiM0MzsJX190eXBlKHZhbHVlLCBpbnQpOwomIzQzO30gc29ja21hcCBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKJiM0MzsKJiM0MztTRUMoJiMzNDtjZ3JvdXAvY29ubmVjdDQmIzM0OykKJiM0MztpbnQgY29ubmVjdChzdHJ1Y3QgYnBmX3NvY2tfYWRkciAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9zb2NrICpzazsKJiM0MzsJaW50IHJldCA9IFNLX0RST1A7CiYjNDM7CiYjNDM7CXNrID0gYnBmX21hcF9sb29rdXBfZWxlbSgmYW1wO3NvY2ttYXAsICZhbXA7KGludCl7MH0pOwomIzQzOwlpZiAoc2spIHsKJiM0MzsJCWlmIChzayA9PSBjdHgtJmd0O3NrKSB7CiYjNDM7CQkJc3RydWN0IHNvY2thZGRyX2luIHNhID0gewomIzQzOwkJCQkuc2luX2ZhbWlseSA9IGN0eC0mZ3Q7dXNlcl9mYW1pbHksCiYjNDM7CQkJCS5zaW5fcG9ydCA9IGN0eC0mZ3Q7dXNlcl9wb3J0LAomIzQzOwkJCQkuc2luX2FkZHIuc19hZGRyID0gY3R4LSZndDt1c2VyX2lwNAomIzQzOwkJCX07CiYjNDM7CiYjNDM7CQkJcmV0ID0gIWJwZl9iaW5kKGN0eCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhbXA7c2EsIHNpemVvZihzYSkpOwomIzQzOwkJfQomIzQzOwomIzQzOwkJYnBmX3NrX3JlbGVhc2Uoc2spOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQzNQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYFNPQ0tfUkNVX0ZSRUVgIEZsYWcgaW4gVURQIEJQRioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjQvdWRwX2JwZi5jYCBhbmQgYWRkcyBhIHNlbGYtdGVzdCBpbiB0aGUgQlBGIHNlbGZ0ZXN0cy4gVGhlIGNvcmUgY2hhbmdlIGluIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYgaXMgc2V0dGluZyB0aGUgYFNPQ0tfUkNVX0ZSRUVgIGZsYWcgb24gdGhlIHNvY2tldCAoYHNrYCkgd2l0aGluIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBUaGUgY29udGV4dCBwb2ludHMgdG93YXJkcyBzb21ldGhpbmcgaGFwcGVuaW5nIHdoZW4gYW4gQUZfSU5FVDYgc29ja2V0IGlzIGJlaW5nIHVwZGF0ZWQuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogV2hhdCYjMzk7cyB0aGUgKnB1cnBvc2UqIG9mIHRoaXMgYHVkcF9icGZfdXBkYXRlX3Byb3RvYCBmdW5jdGlvbj8gV2h5IGFyZSB3ZSBzZXR0aW5nIGBTT0NLX1JDVV9GUkVFYCBoZXJlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zPyBEb2VzIHRoaXMgaW50cm9kdWNlIGEgc3VidGxlIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCBvciBzb2NrZXQgYmVoYXZpb3IsIHBhcnRpY3VsYXJseSBjb25jZXJuaW5nIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgZnJlZWluZz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIGNvbnRleHQuCgpUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgLiBJJiMzOTtsbCBydW4gYSBzZWFyY2ggZm9yIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIFRoaXMgc2hvdWxkIHJldmVhbCB0aGUgY2FsbCBzaXRlcyBhbmQgcG90ZW50aWFsbHkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGNoYW5nZS4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB3aWRlbHkgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFRoZSBnb2FsIGlzIHRvIGRldGVybWluZSB0aGUgY29tcGxldGUgZnVuY3Rpb25hbCBpbXBhY3QgYW5kIGFueSBkZXBlbmRlbmNpZXMgaW52b2x2ZWQuIEkgbmVlZCB0byBmdWxseSBncmFzcCB0aGUgJiMzOTt3aHkmIzM5OyBiZWhpbmQgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX2JwZl91cGRhdGVfcHJvdG8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdWRwLmg9NjUyPXN0cnVjdCBza19wc29jaztcbmluY2x1ZGUvbmV0L3VkcC5oOjY1MzppbnQgdWRwX2JwZl91cGRhdGVfcHJvdG8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBib29sIHJlc3RvcmUpO1xuaW5jbHVkZS9uZXQvdWRwLmgtNjU0LSNlbmRpZlxuLS1cbm5ldC9pcHY0L3VkcC5jPTMxMTA9c3RydWN0IHByb3RvIHVkcF9wcm90ID0ge1xuLS1cbm5ldC9pcHY0L3VkcC5jLTMxMzEtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjQvdWRwLmM6MzEzMjpcdC5wc29ja191cGRhdGVfc2tfcHJvdFx0PSB1ZHBfYnBmX3VwZGF0ZV9wcm90byxcbm5ldC9pcHY0L3VkcC5jLTMxMzMtI2VuZGlmXG4tLVxubmV0L2lwdjQvdWRwX2JwZi5jPTE2MT1sYXRlX2luaXRjYWxsKHVkcF9icGZfdjRfYnVpbGRfcHJvdG8pO1xubmV0L2lwdjQvdWRwX2JwZi5jLTE2Mi1cbm5ldC9pcHY0L3VkcF9icGYuYzoxNjM6aW50IHVkcF9icGZfdXBkYXRlX3Byb3RvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywgYm9vbCByZXN0b3JlKVxubmV0L2lwdjQvdWRwX2JwZi5jLTE2NC17XG4tLVxubmV0L2lwdjQvdWRwX2JwZi5jLTE4MS19XG5uZXQvaXB2NC91ZHBfYnBmLmM6MTgyOkVYUE9SVF9TWU1CT0xfR1BMKHVkcF9icGZfdXBkYXRlX3Byb3RvKTtcbi0tXG5uZXQvaXB2Ni91ZHAuYz0xODc5PXN0cnVjdCBwcm90byB1ZHB2Nl9wcm90ID0ge1xuLS1cbm5ldC9pcHY2L3VkcC5jLTE5MDAtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjYvdWRwLmM6MTkwMTpcdC5wc29ja191cGRhdGVfc2tfcHJvdFx0PSB1ZHBfYnBmX3VwZGF0ZV9wcm90byxcbm5ldC9pcHY2L3VkcC5jLTE5MDItI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ3MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgQlBGIGFuZCBVRFAgUHJvdG9jb2wgSW50ZXJhY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHNwZWNpZmljYWxseSwgYHVkcF9icGZfdXBkYXRlX3Byb3RvYCBpcyBiZWluZyBob29rZWQgaW50byB0aGUgYC5wc29ja191cGRhdGVfc2tfcHJvdGAgZmllbGQgZm9yIGB1ZHBfcHJvdGAgYW5kIGB1ZHB2Nl9wcm90YC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY29uZGl0aW9uYWwsIG9ubHkgaGFwcGVuaW5nIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGUgQlBGIHN5c2NhbGwgaW50ZWdyYXRpb24gaXMgd2hhdCYjMzk7cyBkcml2aW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gTm93LCBJIG5lZWQgdG8gY29uZmlybSB3aGVyZSBgdWRwX2JwZi5jYCBpcyBhY3R1YWxseSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwuIEkgKnRoaW5rKiBpdCYjMzk7cyBpbiBgbmV0L2lwdjQvYCwgYnV0IEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeS4gR290dGEgYmUgc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhcyBJIGV4cGVjdCB0aGVtIHRvIGJlLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICYjNDM7PSB0Y3BfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHVkcF9icGYub1xubmV0L2lwdjQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVExBQkVMKSAmIzQzOz0gY2lwc29faXB2NC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVEUCBCUEYgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBjb25maWcgb3B0aW9uIHRoYXQgZW5hYmxlcyB0aGUgZW50aXJlIGZ1bmN0aW9uYWxpdHkuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBJIG5lZWQgdG8gYmUgc3VyZSBhbnkgc3lzdGVtcyB1dGlsaXppbmcgdGhpcyBoYXZlIHRoYXQgc2V0IGNvcnJlY3RseS4KClRoZSBmdW5jdGlvbiBgdWRwX2JwZl91cGRhdGVfcHJvdG9gIGlzIHRoZSBvbmUgdGhhdCYjMzk7cyBjYWxsZWQgd2hlbmV2ZXIgYSBVRFAgc29ja2V0IGlzIGFkZGVkIHRvIGEgc29ja21hcCBvciBhIGNvbXBhcmFibGUgQlBGIHN0cnVjdHVyZS4gSW50ZXJlc3RpbmcuIEkgc2VlIHRoZXkmIzM5O3JlIHNldHRpbmcgYFNPQ0tfUkNVX0ZSRUVgIG9uIHRoZSBzb2NrZXQuIFRoYXQmIzM5O3MgYSBwYXR0ZXJuLCB1c3VhbGx5IHJlbGF0ZWQgdG8gaG93IHRoZSBzb2NrZXQgaXMgaGFuZGxlZCBkdXJpbmcgZGUtYWxsb2NhdGlvbiwgYW5kIGVuc3VyaW5nIHRoYXQgYW55IEJQRiBjb250ZXh0IHVzaW5nIHRoZSBzb2NrZXQgaGFzIHRpbWUgdG8gZmluYWxpemUuIFRoYXQmIzM5O3MgaW1wb3J0YW50IGZvciB0aGUgY29ycmVjdG5lc3Mgb2YgQlBGIHByb2dyYW1zLgoKUmlnaHQsIHNvLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSBJIGhhdmUgYWxsIHRoZSBjb25maWdzIHJpZ2h0LiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBubyBxdWVzdGlvbi4gQnV0IGFyZSB0aGVyZSAqYW55KiBvdGhlciBkZXBlbmRlbmNpZXM/IExldCBtZSBkb3VibGUtY2hlY2suIE9rYXksIGl0IGxvb2tzIGxpa2UgYHVkcF9icGYub2AgaXMgY29tcGlsZWQgZGlyZWN0bHkgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgc28gYENPTkZJR19ORVRfU09DS19NU0dgIGlzIG5vdCByZXF1aXJlZC4gVGhhdCBlbGltaW5hdGVzIGEgcG90ZW50aWFsIHBvaW50IG9mIGZhaWx1cmUuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgbm93IGRyaWxsIGRvd24gaW50byBgbmV0L2lwdjQvdWRwX2JwZi5jYCBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgYHVkcF9icGZfdXBkYXRlX3Byb3RvYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgd29ya3MgYW5kIHdoYXQgdGhlIHNvY2tldCBsaWZlY3ljbGUgaW1wbGljYXRpb25zIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxOToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF9icGYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYzOlx0aW50IHVkcF9icGZfdXBkYXRlX3Byb3RvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywgYm9vbCByZXN0b3JlKVxuIDE2NDpcdHtcbiAxNjU6XHRcdGludCBmYW1pbHkgPSBzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVCA/IFVEUF9CUEZfSVBWNCA6IFVEUF9CUEZfSVBWNjtcbiAxNjY6XHRcbiAxNjc6XHRcdGlmIChyZXN0b3JlKSB7XG4gMTY4Olx0XHRcdFdSSVRFX09OQ0Uoc2stXHUwMDNlc2tfd3JpdGVfc3BhY2UsIHBzb2NrLVx1MDAzZXNhdmVkX3dyaXRlX3NwYWNlKTtcbiAxNjk6XHRcdFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBwc29jay1cdTAwM2Vza19wcm90byk7XG4gMTcwOlx0XHRcdHJldHVybiAwO1xuIDE3MTpcdFx0fVxuIDE3MjpcdFxuIDE3MzpcdFx0aWYgKHNrLVx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNilcbiAxNzQ6XHRcdFx0dWRwX2JwZl9jaGVja192Nl9uZWVkc19yZWJ1aWxkKHBzb2NrLVx1MDAzZXNrX3Byb3RvKTtcbiAxNzU6XHRcbiAxNzY6XHRcdC8qIFRyZWF0IGFsbCBzb2NrZXRzIGFzIG5vbi1yZWZjb3VudGVkLCByZWdhcmRsZXNzIG9mIGJpbmRpbmcgc3RhdGUuICovXG4gMTc3Olx0XHRzb2NrX3NldF9mbGFnKHNrLCBTT0NLX1JDVV9GUkVFKTtcbiAxNzg6XHRcbiAxNzk6XHRcdHNvY2tfcmVwbGFjZV9wcm90byhzaywgXHUwMDI2dWRwX2JwZl9wcm90c1tmYW1pbHldKTtcbiAxODA6XHRcdHJldHVybiAwO1xuIDE4MTpcdH1cbiAxODI6XHRFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfYnBmX3VwZGF0ZV9wcm90byk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3MwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgVURQIEJQRiBQcm90b2NvbCBVcGRhdGUqKgoKT2theSwgc28gdGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgbm90aGluZyBlYXJ0aC1zaGF0dGVyaW5nLiBUaGUgY29yZSBvZiBpdCBpbnZvbHZlcyBzZXR0aW5nIHRoZSBgU09DS19SQ1VfRlJFRWAgZmxhZyBvbiB0aGUgc29ja2V0LiBUaGUgcHJpbWFyeSBmdW5jdGlvbiBvZiBpbnRlcmVzdCBpcyBgdWRwX2JwZl91cGRhdGVfcHJvdG9gLiBNeSBmb2N1cyBpcyB6ZXJvZWQgaW4gb24gdGhhdCBzcGVjaWZpYyBzeW1ib2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgdGhvcm91Z2hseS4KClJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgYENPTkZJR19CUEZfU1lTQ0FMTGAgY29uZmlnIGlzIGludm9sdmVkLiBCdXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgY29tZSBpbnRvIHBsYXksIHBvdGVudGlhbGx5IGFzIGRlcGVuZGVuY2llcyBvciBiZWNhdXNlIG9mIHJlbGF0ZWQgZnVuY3Rpb25hbGl0aWVzLiBUaGUgc2VsZnRlc3RzIGltbWVkaWF0ZWx5IG9mZmVyIHNvbWUgY2x1ZXMsIHRoZXkmIzM5O3JlIHVzaW5nIGBzb2NrbWFwYCBhbmQgYGJwZl9iaW5kYCwgdGhhdCBnZXRzIG15IGF0dGVudGlvbi4gRG9lcyB0aGlzIGNoYW5nZSByZXF1aXJlIGBDT05GSUdfQ0dST1VQX0JQRmAgYXMgd2VsbD8gQWgsIHllcywgbG9va2luZyBhdCB0aGUgc2VsZnRlc3Qgc291cmNlIGl0IHVzZXMgYFNFQygmIzM0O2Nncm91cC9jb25uZWN0NCYjMzQ7KWAgYW5kIGBicGZfcHJvZ3JhbV9fYXR0YWNoX2Nncm91cGAuCgpIb3dldmVyLCB0aGUgY2VudHJhbCBtb2RpZmljYXRpb24gaXMgd2l0aGluIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AsIGFuZCB0aGF04oCZcyBidWlsdCB3aXRoIGBDT05GSUdfQlBGX1NZU0NBTExgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGlzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGBzb2NrbWFwYCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwuIEFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG1heSBiZSBuZWNlc3Nhcnkgb3IgcmVjb21tZW5kZWQgdG8gdXNlIGFsb25nIHNpZGUgdGhpcyBjaGFuZ2U/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE5OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c29ja21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMxNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCYjMzk7cyBOZXR3b3JrIENvcmU6IExvY2F0aW5nIGBzb2NrX21hcGAqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYHNvY2tfbWFwYCwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBuZXR3b3JraW5nIGNvcmUgaXMgdXN1YWxseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgYG5ldC9jb3JlL01ha2VmaWxlYCBpcyBhbG1vc3QgY2VydGFpbmx5IHdoZXJlIGNydWNpYWwgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIHJlbGF0aW9uc2hpcHMgZm9yIGNvcmUgbmV0d29ya2luZyBjb21wb25lbnRzIGFyZSBkZWZpbmVkLiBJdCYjMzk7cyB0aGUgTWFrZWZpbGUgdGhhdCBvcmNoZXN0cmF0ZXMgbXVjaCBvZiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmsgbW9kdWxlIGNvbXBpbGF0aW9uLiBTbywgY2hlY2tpbmcgdGhhdCBmaWxlIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAuIEkgc3VzcGVjdCB0aGF0IGBzb2NrX21hcGAsIHdoYXRldmVyIGl0IGlzIHJlbGF0ZWQgdG8sIGxpa2VseSBoYXMgaXRzIGNvbXBpbGF0aW9uIGFuZCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIGxpc3RlZCB0aGVyZS4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgZWZmaWNpZW50IHdheSB0byBuYXZpZ2F0ZSB0aGUga2VybmVsIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c29ja19tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZT00ND1vYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gc2ttc2cub1xubmV0L2NvcmUvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc29ja19tYXAub1xubmV0L2NvcmUvTWFrZWZpbGUtNDYtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3NrX3N0b3JhZ2Uub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjQwCgkJCQkJCQlvdXRwdXQ6IDkyCgkJCQkJCQl0aG91Z2h0czogMzYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFVEUCBTb2NrbWFwIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gVURQIHNvY2tldHMgd2l0aGluIHRoZSBzb2NrbWFwIGZyYW1ld29yay4gVGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBrbm9iIGhlcmUgaXMgY2xlYXJseSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYW5kIEkgbmVlZCB0byBjaGVjayBpZiBhbnkgb3RoZXIgY29uZmlncyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBpc3N1ZS4gVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIGhvdyBVRFAgc29ja2V0cyBiZWhhdmUgaW4gdGhlIGNvbnRleHQgb2YgYSBzb2NrbWFwLiBUaGUgc2VsZnRlc3QgdXNlcyBzdGFuZGFyZCBCUEYgbWFwIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBgYnBmX21hcF9sb29rdXBfZWxlbWAsIGBicGZfYmluZGAsIGFuZCBgYnBmX3NrX3JlbGVhc2VgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIHByb2JsZW0gcHJvYmFibHkgc3RlbW1lZCBmcm9tIHRoZSB3YXkgc29ja2V0cyBhcmUgYmVpbmcgcmVsZWFzZWQgYWZ0ZXIgYmVpbmcgcmV0cmlldmVkIGZyb20gdGhlIHNvY2ttYXAsIGVzcGVjaWFsbHkgaWYgYGJwZl9iaW5kYCB3YXMgc3Vic2VxdWVudGx5IGNhbGxlZCBvbiBhIHNvY2tldCBhZnRlciBsb29rdXAuIFRoZSBwYXRjaCByZXNvbHZlcyB0aGlzIGJ5IHNldHRpbmcgdGhlIGBTT0NLX1JDVV9GUkVFYCBmbGFnIG9uIHRoZSBzb2NrZXQgd2hlbiBpdCBnZXRzIGFkZGVkIHRvIHRoZSBzb2NrbWFwLCBhbmQgdGhpcyBjYWxscyBgdWRwX2JwZl91cGRhdGVfcHJvdG9gLiBUaGlzIHJlYWxseSBzY3JlYW1zICYjMzQ7d29ydGggZnV6emluZyYjMzQ7IHRvIG1lLCByaWdodCBhd2F5LgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGNoYW5nZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBgdWRwX2JwZl91cGRhdGVfcHJvdG9gIGFuZCB0aGVuIEkmIzM5O2xsIGxvb2sgYXQgdGhlIGJyb2FkZXIgYHNvY2tfbWFwX3VwZGF0ZV9lbGVtYCBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB3aGV0aGVyIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgaXMgYSBob3QgcGF0aC4gSXQmIzM5O3MgdHJpZ2dlcmVkIHdoZW4gYSBVRFAgc29ja2V0IGlzIGFkZGVkIHRvIHRoZSBzb2NrbWFwLiBJdCYjMzk7cyBub3QgaW4gdGhlIHBhdGggb2YgYWN0dWFsIHBhY2tldCBwcm9jZXNzaW5nOyBzbyB0aGlzIGlzIG5vdCBhIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHBhdGgsIHdoaWNoIGNoYW5nZXMgaG93IEkgdmlldyB0aGUgcmlzay4KCkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gZ29pbmcgdG8gc2V0IHNvbWUgcGFyYW1ldGVycyBmb3IgdGhpcyBhbmFseXNpczoKCiogICAqKldvcnRoRnV6emluZyoqOiBgdHJ1ZWAgKEFic29sdXRlbHkuIFRoaXMgaXMgYSBwb3RlbnRpYWwgZnVuY3Rpb25hbCBidWcpCiogICAqKkZvY3VzU3ltYm9scyoqOiBgWyYjMzQ7dWRwX2JwZl91cGRhdGVfcHJvdG8mIzM0O11gIChUaGlzIGlzIHRoZSBrZXkgZnVuY3Rpb24gaW4gdGhlIGNvcmUgbG9naWMpCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYFsmIzM0O0JQRl9TWVNDQUxMJiMzNDtdYCAoVGhpcyBpcyB0aGUgcHJpbWFyeSBkZXBlbmRlbmN5KQoqICAgKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIFVEUCBzb2NrZXRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gYSBCUEYgc29ja21hcCBieSBzZXR0aW5nIHRoZSBTT0NLXF9SQ1VcX0ZSRUUgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRi9VRFAgbG9naWMsIHdoaWNoIG1ha2VzIGl0IGltcG9ydGFudCB0byByZXZpZXcuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX2JwZl91cGRhdGVfcHJvdG8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIFVEUCBzb2NrZXRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gYSBCUEYgc29ja21hcCBieSBzZXR0aW5nIHRoZSBTT0NLX1JDVV9GUkVFIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYvVURQIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF9icGZfdXBkYXRlX3Byb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBVRFAgc29ja2V0cyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIGEgQlBGIHNvY2ttYXAgYnkgc2V0dGluZyB0aGUgU09DS19SQ1VfRlJFRSBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGL1VEUCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjIyLjk5NzI5NDkwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzA4NDg1ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX2JwZl91cGRhdGVfcHJvdG9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgVURQIHNvY2tldHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBhIEJQRiBzb2NrbWFwIGJ5IHNldHRpbmcgdGhlIFNPQ0tfUkNVX0ZSRUUgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRi9VRFAgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjIyLjk5NzI5OTg2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc3OTAyMDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmQxNmEyZDI2NzViMTIyMzFlMTM1MWNkOWMzMTVmZDdlMWE4OThjOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxOToxNzoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHBfYnBmLmMgYi9uZXQvaXB2NC91ZHBfYnBmLmNcXG5pbmRleCBhZDU3YzRjOWVhYWI2Zi4uOTcwMzI3YjU5NTgyNjkgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdWRwX2JwZi5jXFxuKysrIGIvbmV0L2lwdjQvdWRwX2JwZi5jXFxuQEAgLTE3Myw2ICsxNzMsOSBAQCBpbnQgdWRwX2JwZl91cGRhdGVfcHJvdG8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBib29sIHJlc3RvcmUpXFxuIFxcdGlmIChzay1cXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxcbiBcXHRcXHR1ZHBfYnBmX2NoZWNrX3Y2X25lZWRzX3JlYnVpbGQocHNvY2stXFx1MDAzZXNrX3Byb3RvKTtcXG4gXFxuK1xcdC8qIFRyZWF0IGFsbCBzb2NrZXRzIGFzIG5vbi1yZWZjb3VudGVkLCByZWdhcmRsZXNzIG9mIGJpbmRpbmcgc3RhdGUuICovXFxuK1xcdHNvY2tfc2V0X2ZsYWcoc2ssIFNPQ0tfUkNVX0ZSRUUpO1xcbitcXG4gXFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBcXHUwMDI2dWRwX2JwZl9wcm90c1tmYW1pbHldKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuaW5kZXggY2IzMjI5NzExZjkzYTMuLjExOTcyZmZkYjE2ZWQzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbkBAIC03LDYgKzcsNyBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcInRlc3RfcHJvZ3MuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc2ttc2dfbG9hZF9oZWxwZXJzLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF91cGRhdGUuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9hdHRhY2guc2tlbC5oXFxcIlxcbkBAIC0xNyw2ICsxOCw3IEBAXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3NvY2ttYXBfbXNnX3BvcF9kYXRhLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImJwZl9pdGVyX3NvY2ttYXAuc2tlbC5oXFxcIlxcbiBcXG4rI2luY2x1ZGUgXFxcImNncm91cF9oZWxwZXJzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJzb2NrbWFwX2hlbHBlcnMuaFxcXCJcXG4gXFxuICNkZWZpbmUgVENQX1JFUEFJUlxcdFxcdDE5XFx0LyogVENQIHNvY2sgaXMgdW5kZXIgcmVwYWlyIHJpZ2h0IG5vdyAqL1xcbkBAIC0xMzczLDYgKzEzNzUsNTIgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXFxuIFxcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuKyNkZWZpbmUgTE9PS1VQX0JJTkRfUkVMRUFTRV9DR1xcdFxcXCIvc29ja21hcF9sb29rdXAtYmluZC1yZWxlYXNlXFxcIlxcbisjZGVmaW5lIExPT0tVUF9CSU5EX1JFTEVBU0VfUkVQXFx0NjRcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlICpza2VsO1xcbitcXHRzdHJ1Y3Qgc29ja2FkZHJfaW4gc2E7XFxuK1xcdGludCBjZywgaTtcXG4rXFxuK1xcdGNnID0gY2dyb3VwX3NldHVwX2FuZF9qb2luKExPT0tVUF9CSU5EX1JFTEVBU0VfQ0cpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19GRChjZywgXFxcImNncm91cF9zZXR1cF9hbmRfam9pblxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRza2VsID0gdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2VfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJvcGVuX2FuZF9sb2FkXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFxuK1xcdHNrZWwtXFx1MDAzZWxpbmtzLmNvbm5lY3QgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2Nncm91cChza2VsLVxcdTAwM2Vwcm9ncy5jb25uZWN0LCBjZyk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVxcdTAwM2VsaW5rcy5jb25uZWN0LCBcXFwiYXR0YWNoX2Nncm91cFxcXCIpKVxcbitcXHRcXHRnb3RvIGRlc3Ryb3k7XFxuK1xcbitcXHRzYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDtcXG4rXFx0c2Euc2luX3BvcnQgPSBicGZfaHRvbnMoMTIzNCk7XFxuK1xcdHNhLnNpbl9hZGRyLnNfYWRkciA9IGJwZl9odG9ubChJTkFERFJfTE9PUEJBQ0spO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIExPT0tVUF9CSU5EX1JFTEVBU0VfUkVQOyArK2kpIHtcXG4rXFx0XFx0X19jbG9zZV9mZCBpbnQgc2s7XFxuK1xcbitcXHRcXHRzayA9IHhzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7XFxuK1xcdFxcdGlmIChzayBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0aWYgKHhicGZfbWFwX3VwZGF0ZV9lbGVtKGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc29ja21hcCksIFxcdTAwMjZ1MzIoMCksXFxuK1xcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2ssIEJQRl9BTlkpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdGlmICh4Y29ubmVjdChzaywgKHN0cnVjdCBzb2NrYWRkciAqKVxcdTAwMjZzYSwgc2l6ZW9mKHNhKSkpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitkZXN0cm95OlxcbitcXHR0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZV9fZGVzdHJveShza2VsKTtcXG4rY2xlYW51cDpcXG4rXFx0Y2xlYW51cF9jZ3JvdXBfZW52aXJvbm1lbnQoKTtcXG4rfVxcbitcXG4gdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4ge1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcXFwiKSlcXG5AQCAtMTQ1MSw0ICsxNDk5LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4gXFx0XFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgdWRwIG11bHRpIGNoYW5uZWxzXFxcIikpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9tdWx0aV9jaGFubmVscyhTT0NLX0RHUkFNKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgbG9va3VwLWJpbmQtcmVsZWFzZVxcXCIpKVxcbitcXHRcXHR0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSgpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5jYzc3YjE5Mzg5M2JkNVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuY1xcbkBAIC0wLDAgKzEsMzcgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW4uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbitcXG4rc3RydWN0IHtcXG4rXFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcXG4rXFx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcXG4rXFx0X190eXBlKGtleSwgaW50KTtcXG4rXFx0X190eXBlKHZhbHVlLCBpbnQpO1xcbit9IHNvY2ttYXAgU0VDKFxcXCIubWFwc1xcXCIpO1xcbitcXG4rU0VDKFxcXCJjZ3JvdXAvY29ubmVjdDRcXFwiKVxcbitpbnQgY29ubmVjdChzdHJ1Y3QgYnBmX3NvY2tfYWRkciAqY3R4KVxcbit7XFxuK1xcdHN0cnVjdCBicGZfc29jayAqc2s7XFxuK1xcdGludCByZXQgPSBTS19EUk9QO1xcbitcXG4rXFx0c2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKFxcdTAwMjZzb2NrbWFwLCBcXHUwMDI2KGludCl7MH0pO1xcbitcXHRpZiAoc2spIHtcXG4rXFx0XFx0aWYgKHNrID09IGN0eC1cXHUwMDNlc2spIHtcXG4rXFx0XFx0XFx0c3RydWN0IHNvY2thZGRyX2luIHNhID0ge1xcbitcXHRcXHRcXHRcXHQuc2luX2ZhbWlseSA9IGN0eC1cXHUwMDNldXNlcl9mYW1pbHksXFxuK1xcdFxcdFxcdFxcdC5zaW5fcG9ydCA9IGN0eC1cXHUwMDNldXNlcl9wb3J0LFxcbitcXHRcXHRcXHRcXHQuc2luX2FkZHIuc19hZGRyID0gY3R4LVxcdTAwM2V1c2VyX2lwNFxcbitcXHRcXHRcXHR9O1xcbitcXG4rXFx0XFx0XFx0cmV0ID0gIWJwZl9iaW5kKGN0eCwgKHN0cnVjdCBzb2NrYWRkciAqKVxcdTAwMjZzYSwgc2l6ZW9mKHNhKSk7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGJwZl9za19yZWxlYXNlKHNrKTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjIzLjc3NjA5MzQxOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5Mjk2NzU3ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZHBfYnBmX3VwZGF0ZV9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBVRFAgc29ja2V0cyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIGEgQlBGIHNvY2ttYXAgYnkgc2V0dGluZyB0aGUgU09DS19SQ1VfRlJFRSBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGL1VEUCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZDE2YTJkMjY3NWIxMjIzMWUxMzUxY2Q5YzMxNWZkN2UxYTg5OGM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTk6MTc6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHBfYnBmLmMgYi9uZXQvaXB2NC91ZHBfYnBmLmNcbmluZGV4IGFkNTdjNGM5ZWFhYjZmLi45NzAzMjdiNTk1ODI2OSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3VkcF9icGYuY1xuKysrIGIvbmV0L2lwdjQvdWRwX2JwZi5jXG5AQCAtMTczLDYgKzE3Myw5IEBAIGludCB1ZHBfYnBmX3VwZGF0ZV9wcm90byhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssIGJvb2wgcmVzdG9yZSlcbiBcdGlmIChzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG4gXHRcdHVkcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChwc29jay1cdTAwM2Vza19wcm90byk7XG4gXG4rXHQvKiBUcmVhdCBhbGwgc29ja2V0cyBhcyBub24tcmVmY291bnRlZCwgcmVnYXJkbGVzcyBvZiBiaW5kaW5nIHN0YXRlLiAqL1xuK1x0c29ja19zZXRfZmxhZyhzaywgU09DS19SQ1VfRlJFRSk7XG4rXG4gXHRzb2NrX3JlcGxhY2VfcHJvdG8oc2ssIFx1MDAyNnVkcF9icGZfcHJvdHNbZmFtaWx5XSk7XG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMTE5NzJmZmRiMTZlZDMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTcsNiArNyw3IEBAXG4gXG4gI2luY2x1ZGUgXCJ0ZXN0X3Byb2dzLmhcIlxuICNpbmNsdWRlIFwidGVzdF9za21zZ19sb2FkX2hlbHBlcnMuc2tlbC5oXCJcbisjaW5jbHVkZSBcInRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ0ZXN0X3NvY2ttYXBfdXBkYXRlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9hdHRhY2guc2tlbC5oXCJcbkBAIC0xNyw2ICsxOCw3IEBAXG4gI2luY2x1ZGUgXCJ0ZXN0X3NvY2ttYXBfbXNnX3BvcF9kYXRhLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJicGZfaXRlcl9zb2NrbWFwLnNrZWwuaFwiXG4gXG4rI2luY2x1ZGUgXCJjZ3JvdXBfaGVscGVycy5oXCJcbiAjaW5jbHVkZSBcInNvY2ttYXBfaGVscGVycy5oXCJcbiBcbiAjZGVmaW5lIFRDUF9SRVBBSVJcdFx0MTlcdC8qIFRDUCBzb2NrIGlzIHVuZGVyIHJlcGFpciByaWdodCBub3cgKi9cbkBAIC0xMzczLDYgKzEzNzUsNTIgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbisjZGVmaW5lIExPT0tVUF9CSU5EX1JFTEVBU0VfQ0dcdFwiL3NvY2ttYXBfbG9va3VwLWJpbmQtcmVsZWFzZVwiXG4rI2RlZmluZSBMT09LVVBfQklORF9SRUxFQVNFX1JFUFx0NjRcbitcbitzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSh2b2lkKVxuK3tcbitcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSAqc2tlbDtcbitcdHN0cnVjdCBzb2NrYWRkcl9pbiBzYTtcbitcdGludCBjZywgaTtcbitcbitcdGNnID0gY2dyb3VwX3NldHVwX2FuZF9qb2luKExPT0tVUF9CSU5EX1JFTEVBU0VfQ0cpO1xuK1x0aWYgKCFBU1NFUlRfT0tfRkQoY2csIFwiY2dyb3VwX3NldHVwX2FuZF9qb2luXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRza2VsID0gdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2VfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcIm9wZW5fYW5kX2xvYWRcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdHNrZWwtXHUwMDNlbGlua3MuY29ubmVjdCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfY2dyb3VwKHNrZWwtXHUwMDNlcHJvZ3MuY29ubmVjdCwgY2cpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MuY29ubmVjdCwgXCJhdHRhY2hfY2dyb3VwXCIpKVxuK1x0XHRnb3RvIGRlc3Ryb3k7XG4rXG4rXHRzYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDtcbitcdHNhLnNpbl9wb3J0ID0gYnBmX2h0b25zKDEyMzQpO1xuK1x0c2Euc2luX2FkZHIuc19hZGRyID0gYnBmX2h0b25sKElOQUREUl9MT09QQkFDSyk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBMT09LVVBfQklORF9SRUxFQVNFX1JFUDsgKytpKSB7XG4rXHRcdF9fY2xvc2VfZmQgaW50IHNrO1xuK1xuK1x0XHRzayA9IHhzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7XG4rXHRcdGlmIChzayBcdTAwM2MgMClcbitcdFx0XHRicmVhaztcbitcbitcdFx0aWYgKHhicGZfbWFwX3VwZGF0ZV9lbGVtKGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zb2NrbWFwKSwgXHUwMDI2dTMyKDApLFxuK1x0XHRcdFx0XHQgXHUwMDI2c2ssIEJQRl9BTlkpKVxuK1x0XHRcdGJyZWFrO1xuK1xuK1x0XHRpZiAoeGNvbm5lY3Qoc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKilcdTAwMjZzYSwgc2l6ZW9mKHNhKSkpXG4rXHRcdFx0YnJlYWs7XG4rXHR9XG4rXG4rZGVzdHJveTpcbitcdHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlX19kZXN0cm95KHNrZWwpO1xuK2NsZWFudXA6XG4rXHRjbGVhbnVwX2Nncm91cF9lbnZpcm9ubWVudCgpO1xuK31cbitcbiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcIikpXG5AQCAtMTQ1MSw0ICsxNDk5LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiBcdFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCB1ZHAgbXVsdGkgY2hhbm5lbHNcIikpXG4gXHRcdHRlc3Rfc29ja21hcF9tdWx0aV9jaGFubmVscyhTT0NLX0RHUkFNKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBsb29rdXAtYmluZC1yZWxlYXNlXCIpKVxuK1x0XHR0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNjNzdiMTkzODkzYmQ1XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuY1xuQEAgLTAsMCArMSwzNyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pbi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbitcbitzdHJ1Y3Qge1xuK1x0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbitcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4rXHRfX3R5cGUoa2V5LCBpbnQpO1xuK1x0X190eXBlKHZhbHVlLCBpbnQpO1xuK30gc29ja21hcCBTRUMoXCIubWFwc1wiKTtcbitcbitTRUMoXCJjZ3JvdXAvY29ubmVjdDRcIilcbitpbnQgY29ubmVjdChzdHJ1Y3QgYnBmX3NvY2tfYWRkciAqY3R4KVxuK3tcbitcdHN0cnVjdCBicGZfc29jayAqc2s7XG4rXHRpbnQgcmV0ID0gU0tfRFJPUDtcbitcbitcdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb2NrbWFwLCBcdTAwMjYoaW50KXswfSk7XG4rXHRpZiAoc2spIHtcbitcdFx0aWYgKHNrID09IGN0eC1cdTAwM2Vzaykge1xuK1x0XHRcdHN0cnVjdCBzb2NrYWRkcl9pbiBzYSA9IHtcbitcdFx0XHRcdC5zaW5fZmFtaWx5ID0gY3R4LVx1MDAzZXVzZXJfZmFtaWx5LFxuK1x0XHRcdFx0LnNpbl9wb3J0ID0gY3R4LVx1MDAzZXVzZXJfcG9ydCxcbitcdFx0XHRcdC5zaW5fYWRkci5zX2FkZHIgPSBjdHgtXHUwMDNldXNlcl9pcDRcbitcdFx0XHR9O1xuK1xuK1x0XHRcdHJldCA9ICFicGZfYmluZChjdHgsIChzdHJ1Y3Qgc29ja2FkZHIgKilcdTAwMjZzYSwgc2l6ZW9mKHNhKSk7XG4rXHRcdH1cbitcbitcdFx0YnBmX3NrX3JlbGVhc2Uoc2spO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTc6MjMuNzc2MDk1Mjg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE2NTQ5NTc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYFNPQ0tfUkNVX0ZSRUVgIEZsYWcgaW4gVURQIEJQRioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY0L3VkcF9icGYuY2AgYW5kIGFkZHMgYSBzZWxmLXRlc3QgaW4gdGhlIEJQRiBzZWxmdGVzdHMuIFRoZSBjb3JlIGNoYW5nZSBpbiB0aGUga2VybmVsIGNvZGUgaXRzZWxmIGlzIHNldHRpbmcgdGhlIGBTT0NLX1JDVV9GUkVFYCBmbGFnIG9uIHRoZSBzb2NrZXQgKGBza2ApIHdpdGhpbiBgdWRwX2JwZl91cGRhdGVfcHJvdG9gLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBUaGUgY29udGV4dCBwb2ludHMgdG93YXJkcyBzb21ldGhpbmcgaGFwcGVuaW5nIHdoZW4gYW4gQUZfSU5FVDYgc29ja2V0IGlzIGJlaW5nIHVwZGF0ZWQuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBXaGF0J3MgdGhlICpwdXJwb3NlKiBvZiB0aGlzIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgZnVuY3Rpb24/IFdoeSBhcmUgd2Ugc2V0dGluZyBgU09DS19SQ1VfRlJFRWAgaGVyZT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucz8gRG9lcyB0aGlzIGludHJvZHVjZSBhIHN1YnRsZSBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgb3Igc29ja2V0IGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgY29uY2VybmluZyByZWZlcmVuY2UgY291bnRpbmcgYW5kIGZyZWVpbmc/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB1c2FnZSBjb250ZXh0LlxuXG5UaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgLiBJJ2xsIHJ1biBhIHNlYXJjaCBmb3IgYHVkcF9icGZfdXBkYXRlX3Byb3RvYCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gVGhpcyBzaG91bGQgcmV2ZWFsIHRoZSBjYWxsIHNpdGVzIGFuZCBwb3RlbnRpYWxseSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgY2hhbmdlLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgd2lkZWx5IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWwgaW1wYWN0IGFuZCBhbnkgZGVwZW5kZW5jaWVzIGludm9sdmVkLiBJIG5lZWQgdG8gZnVsbHkgZ3Jhc3AgdGhlICd3aHknIGJlaGluZCB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjI4Ljk0MTU5MzU4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjkxNjkyNDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF9icGZfdXBkYXRlX3Byb3RvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3VkcC5oPTY1Mj1zdHJ1Y3Qgc2tfcHNvY2s7XFxuaW5jbHVkZS9uZXQvdWRwLmg6NjUzOmludCB1ZHBfYnBmX3VwZGF0ZV9wcm90byhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssIGJvb2wgcmVzdG9yZSk7XFxuaW5jbHVkZS9uZXQvdWRwLmgtNjU0LSNlbmRpZlxcbi0tXFxubmV0L2lwdjQvdWRwLmM9MzExMD1zdHJ1Y3QgcHJvdG8gdWRwX3Byb3QgPSB7XFxuLS1cXG5uZXQvaXB2NC91ZHAuYy0zMTMxLSNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC91ZHAuYzozMTMyOlxcdC5wc29ja191cGRhdGVfc2tfcHJvdFxcdD0gdWRwX2JwZl91cGRhdGVfcHJvdG8sXFxubmV0L2lwdjQvdWRwLmMtMzEzMy0jZW5kaWZcXG4tLVxcbm5ldC9pcHY0L3VkcF9icGYuYz0xNjE9bGF0ZV9pbml0Y2FsbCh1ZHBfYnBmX3Y0X2J1aWxkX3Byb3RvKTtcXG5uZXQvaXB2NC91ZHBfYnBmLmMtMTYyLVxcbm5ldC9pcHY0L3VkcF9icGYuYzoxNjM6aW50IHVkcF9icGZfdXBkYXRlX3Byb3RvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywgYm9vbCByZXN0b3JlKVxcbm5ldC9pcHY0L3VkcF9icGYuYy0xNjQte1xcbi0tXFxubmV0L2lwdjQvdWRwX2JwZi5jLTE4MS19XFxubmV0L2lwdjQvdWRwX2JwZi5jOjE4MjpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfYnBmX3VwZGF0ZV9wcm90byk7XFxuLS1cXG5uZXQvaXB2Ni91ZHAuYz0xODc5PXN0cnVjdCBwcm90byB1ZHB2Nl9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjYvdWRwLmMtMTkwMC0jaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxubmV0L2lwdjYvdWRwLmM6MTkwMTpcXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcXHQ9IHVkcF9icGZfdXBkYXRlX3Byb3RvLFxcbm5ldC9pcHY2L3VkcC5jLTE5MDItI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjMyLjYzMzI5MjEyOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NDIyMzc3MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgQlBGIGFuZCBVRFAgUHJvdG9jb2wgSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBzcGVjaWZpY2FsbHksIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgaXMgYmVpbmcgaG9va2VkIGludG8gdGhlIGAucHNvY2tfdXBkYXRlX3NrX3Byb3RgIGZpZWxkIGZvciBgdWRwX3Byb3RgIGFuZCBgdWRwdjZfcHJvdGAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBjb25kaXRpb25hbCwgb25seSBoYXBwZW5pbmcgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRoZSBCUEYgc3lzY2FsbCBpbnRlZ3JhdGlvbiBpcyB3aGF0J3MgZHJpdmluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gd2hlcmUgYHVkcF9icGYuY2AgaXMgYWN0dWFsbHkgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBJICp0aGluayogaXQncyBpbiBgbmV0L2lwdjQvYCwgYnV0IEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5LiBHb3R0YSBiZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFzIEkgZXhwZWN0IHRoZW0gdG8gYmUuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDcyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTc6NDguMDU1NjcxOTU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzExMjkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxubmV0L2lwdjQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVExBQkVMKSArPSBjaXBzb19pcHY0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTc6NDguMjMyNzkxNjY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzNjkwMDI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVEUCBCUEYgSW50ZWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIGNydWNpYWwgY29uZmlnIG9wdGlvbiB0aGF0IGVuYWJsZXMgdGhlIGVudGlyZSBmdW5jdGlvbmFsaXR5LiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBJIG5lZWQgdG8gYmUgc3VyZSBhbnkgc3lzdGVtcyB1dGlsaXppbmcgdGhpcyBoYXZlIHRoYXQgc2V0IGNvcnJlY3RseS5cblxuVGhlIGZ1bmN0aW9uIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgaXMgdGhlIG9uZSB0aGF0J3MgY2FsbGVkIHdoZW5ldmVyIGEgVURQIHNvY2tldCBpcyBhZGRlZCB0byBhIHNvY2ttYXAgb3IgYSBjb21wYXJhYmxlIEJQRiBzdHJ1Y3R1cmUuIEludGVyZXN0aW5nLiBJIHNlZSB0aGV5J3JlIHNldHRpbmcgYFNPQ0tfUkNVX0ZSRUVgIG9uIHRoZSBzb2NrZXQuIFRoYXQncyBhIHBhdHRlcm4sIHVzdWFsbHkgcmVsYXRlZCB0byBob3cgdGhlIHNvY2tldCBpcyBoYW5kbGVkIGR1cmluZyBkZS1hbGxvY2F0aW9uLCBhbmQgZW5zdXJpbmcgdGhhdCBhbnkgQlBGIGNvbnRleHQgdXNpbmcgdGhlIHNvY2tldCBoYXMgdGltZSB0byBmaW5hbGl6ZS4gVGhhdCdzIGltcG9ydGFudCBmb3IgdGhlIGNvcnJlY3RuZXNzIG9mIEJQRiBwcm9ncmFtcy5cblxuUmlnaHQsIHNvLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSBJIGhhdmUgYWxsIHRoZSBjb25maWdzIHJpZ2h0LiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBubyBxdWVzdGlvbi4gQnV0IGFyZSB0aGVyZSAqYW55KiBvdGhlciBkZXBlbmRlbmNpZXM/IExldCBtZSBkb3VibGUtY2hlY2suIE9rYXksIGl0IGxvb2tzIGxpa2UgYHVkcF9icGYub2AgaXMgY29tcGlsZWQgZGlyZWN0bHkgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgc28gYENPTkZJR19ORVRfU09DS19NU0dgIGlzIG5vdCByZXF1aXJlZC4gVGhhdCBlbGltaW5hdGVzIGEgcG90ZW50aWFsIHBvaW50IG9mIGZhaWx1cmUuXG5cbkFscmlnaHQsIGxldCdzIG5vdyBkcmlsbCBkb3duIGludG8gYG5ldC9pcHY0L3VkcF9icGYuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0IHdvcmtzIGFuZCB3aGF0IHRoZSBzb2NrZXQgbGlmZWN5Y2xlIGltcGxpY2F0aW9ucyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4ODIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTc6NTMuMjY5Njk1NDM1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3VkcF9icGYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjMsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjM6XFx0aW50IHVkcF9icGZfdXBkYXRlX3Byb3RvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywgYm9vbCByZXN0b3JlKVxcbiAxNjQ6XFx0e1xcbiAxNjU6XFx0XFx0aW50IGZhbWlseSA9IHNrLVxcdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVCA/IFVEUF9CUEZfSVBWNCA6IFVEUF9CUEZfSVBWNjtcXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0aWYgKHJlc3RvcmUpIHtcXG4gMTY4OlxcdFxcdFxcdFdSSVRFX09OQ0Uoc2stXFx1MDAzZXNrX3dyaXRlX3NwYWNlLCBwc29jay1cXHUwMDNlc2F2ZWRfd3JpdGVfc3BhY2UpO1xcbiAxNjk6XFx0XFx0XFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBwc29jay1cXHUwMDNlc2tfcHJvdG8pO1xcbiAxNzA6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDE3MTpcXHRcXHR9XFxuIDE3MjpcXHRcXG4gMTczOlxcdFxcdGlmIChzay1cXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxcbiAxNzQ6XFx0XFx0XFx0dWRwX2JwZl9jaGVja192Nl9uZWVkc19yZWJ1aWxkKHBzb2NrLVxcdTAwM2Vza19wcm90byk7XFxuIDE3NTpcXHRcXG4gMTc2OlxcdFxcdC8qIFRyZWF0IGFsbCBzb2NrZXRzIGFzIG5vbi1yZWZjb3VudGVkLCByZWdhcmRsZXNzIG9mIGJpbmRpbmcgc3RhdGUuICovXFxuIDE3NzpcXHRcXHRzb2NrX3NldF9mbGFnKHNrLCBTT0NLX1JDVV9GUkVFKTtcXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBcXHUwMDI2dWRwX2JwZl9wcm90c1tmYW1pbHldKTtcXG4gMTgwOlxcdFxcdHJldHVybiAwO1xcbiAxODE6XFx0fVxcbiAxODI6XFx0RVhQT1JUX1NZTUJPTF9HUEwodWRwX2JwZl91cGRhdGVfcHJvdG8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxOToxNzo1My4yNjk4NjQ1MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTM3NjUyNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBVRFAgQlBGIFByb3RvY29sIFVwZGF0ZSoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIG5vdGhpbmcgZWFydGgtc2hhdHRlcmluZy4gVGhlIGNvcmUgb2YgaXQgaW52b2x2ZXMgc2V0dGluZyB0aGUgYFNPQ0tfUkNVX0ZSRUVgIGZsYWcgb24gdGhlIHNvY2tldC4gVGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaXMgYHVkcF9icGZfdXBkYXRlX3Byb3RvYC4gTXkgZm9jdXMgaXMgemVyb2VkIGluIG9uIHRoYXQgc3BlY2lmaWMgc3ltYm9sLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zIHRob3JvdWdobHkuXG5cblJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgYENPTkZJR19CUEZfU1lTQ0FMTGAgY29uZmlnIGlzIGludm9sdmVkLiBCdXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgY29tZSBpbnRvIHBsYXksIHBvdGVudGlhbGx5IGFzIGRlcGVuZGVuY2llcyBvciBiZWNhdXNlIG9mIHJlbGF0ZWQgZnVuY3Rpb25hbGl0aWVzLiBUaGUgc2VsZnRlc3RzIGltbWVkaWF0ZWx5IG9mZmVyIHNvbWUgY2x1ZXMsIHRoZXkncmUgdXNpbmcgYHNvY2ttYXBgIGFuZCBgYnBmX2JpbmRgLCB0aGF0IGdldHMgbXkgYXR0ZW50aW9uLiBEb2VzIHRoaXMgY2hhbmdlIHJlcXVpcmUgYENPTkZJR19DR1JPVVBfQlBGYCBhcyB3ZWxsPyBBaCwgeWVzLCBsb29raW5nIGF0IHRoZSBzZWxmdGVzdCBzb3VyY2UgaXQgdXNlcyBgU0VDKFwiY2dyb3VwL2Nvbm5lY3Q0XCIpYCBhbmQgYGJwZl9wcm9ncmFtX19hdHRhY2hfY2dyb3VwYC5cblxuSG93ZXZlciwgdGhlIGNlbnRyYWwgbW9kaWZpY2F0aW9uIGlzIHdpdGhpbiBgdWRwX2JwZl91cGRhdGVfcHJvdG9gLCBhbmQgdGhhdOKAmXMgYnVpbHQgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhpcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGBzb2NrbWFwYCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgdG8gYmUgc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbC4gQXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSBvciByZWNvbW1lbmRlZCB0byB1c2UgYWxvbmcgc2lkZSB0aGlzIGNoYW5nZT9cblxuXG4iLCJJbnB1dFRva2VucyI6NTc3MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjU4LjQwNzUyMDc5NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzg2OTI4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb2NrbWFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxOToxNzo1OC41MTAzMTkxMDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2MjYzNjIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwncyBOZXR3b3JrIENvcmU6IExvY2F0aW5nIGBzb2NrX21hcGAqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGBzb2NrX21hcGAsIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBUaGUgbmV0d29ya2luZyBjb3JlIGlzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIGBuZXQvY29yZS9NYWtlZmlsZWAgaXMgYWxtb3N0IGNlcnRhaW5seSB3aGVyZSBjcnVjaWFsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCByZWxhdGlvbnNoaXBzIGZvciBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cyBhcmUgZGVmaW5lZC4gSXQncyB0aGUgTWFrZWZpbGUgdGhhdCBvcmNoZXN0cmF0ZXMgbXVjaCBvZiB0aGUga2VybmVsJ3MgbmV0d29yayBtb2R1bGUgY29tcGlsYXRpb24uIFNvLCBjaGVja2luZyB0aGF0IGZpbGUgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcC4gSSBzdXNwZWN0IHRoYXQgYHNvY2tfbWFwYCwgd2hhdGV2ZXIgaXQgaXMgcmVsYXRlZCB0bywgbGlrZWx5IGhhcyBpdHMgY29tcGlsYXRpb24gYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgbGlzdGVkIHRoZXJlLiBUaGlzIGlzIGEgY29tbW9uIGFuZCBlZmZpY2llbnQgd2F5IHRvIG5hdmlnYXRlIHRoZSBrZXJuZWwgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzE3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTg6MDIuMDcyOTU5NzU2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ3Njc2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic29ja19tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvTWFrZWZpbGU9NDQ9b2JqLSQoQ09ORklHX05FVF9TT0NLX01TRykgKz0gc2ttc2cub1xcbm5ldC9jb3JlL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc29ja19tYXAub1xcbm5ldC9jb3JlL01ha2VmaWxlLTQ2LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX3NrX3N0b3JhZ2Uub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxOToxODowMi4yMDc3MzUzODNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM2OTg2Mzk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVRFAgU29ja21hcCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBVRFAgc29ja2V0cyB3aXRoaW4gdGhlIHNvY2ttYXAgZnJhbWV3b3JrLiBUaGUgY2VudHJhbCBjb25maWd1cmF0aW9uIGtub2IgaGVyZSBpcyBjbGVhcmx5IGBDT05GSUdfQlBGX1NZU0NBTExgLCBhbmQgSSBuZWVkIHRvIGNoZWNrIGlmIGFueSBvdGhlciBjb25maWdzIGFyZSByZWxldmFudCB0byB0aGlzIGlzc3VlLiBUaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggaG93IFVEUCBzb2NrZXRzIGJlaGF2ZSBpbiB0aGUgY29udGV4dCBvZiBhIHNvY2ttYXAuIFRoZSBzZWxmdGVzdCB1c2VzIHN0YW5kYXJkIEJQRiBtYXAgb3BlcmF0aW9ucywgc3BlY2lmaWNhbGx5IGBicGZfbWFwX2xvb2t1cF9lbGVtYCwgYGJwZl9iaW5kYCwgYW5kIGBicGZfc2tfcmVsZWFzZWAuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBwcm9ibGVtIHByb2JhYmx5IHN0ZW1tZWQgZnJvbSB0aGUgd2F5IHNvY2tldHMgYXJlIGJlaW5nIHJlbGVhc2VkIGFmdGVyIGJlaW5nIHJldHJpZXZlZCBmcm9tIHRoZSBzb2NrbWFwLCBlc3BlY2lhbGx5IGlmIGBicGZfYmluZGAgd2FzIHN1YnNlcXVlbnRseSBjYWxsZWQgb24gYSBzb2NrZXQgYWZ0ZXIgbG9va3VwLiBUaGUgcGF0Y2ggcmVzb2x2ZXMgdGhpcyBieSBzZXR0aW5nIHRoZSBgU09DS19SQ1VfRlJFRWAgZmxhZyBvbiB0aGUgc29ja2V0IHdoZW4gaXQgZ2V0cyBhZGRlZCB0byB0aGUgc29ja21hcCwgYW5kIHRoaXMgY2FsbHMgYHVkcF9icGZfdXBkYXRlX3Byb3RvYC4gVGhpcyByZWFsbHkgc2NyZWFtcyBcIndvcnRoIGZ1enppbmdcIiB0byBtZSwgcmlnaHQgYXdheS5cblxuSSBuZWVkIHRvIG5haWwgZG93biB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGNoYW5nZS4gSSdtIGZvY3VzaW5nIG9uIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgYW5kIHRoZW4gSSdsbCBsb29rIGF0IHRoZSBicm9hZGVyIGBzb2NrX21hcF91cGRhdGVfZWxlbWAgYXMgd2VsbCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gd2hldGhlciBgdWRwX2JwZl91cGRhdGVfcHJvdG9gIGlzIGEgaG90IHBhdGguIEl0J3MgdHJpZ2dlcmVkIHdoZW4gYSBVRFAgc29ja2V0IGlzIGFkZGVkIHRvIHRoZSBzb2NrbWFwLiBJdCdzIG5vdCBpbiB0aGUgcGF0aCBvZiBhY3R1YWwgcGFja2V0IHByb2Nlc3Npbmc7IHNvIHRoaXMgaXMgbm90IGEgcGVyZm9ybWFuY2UgY3JpdGljYWwgcGF0aCwgd2hpY2ggY2hhbmdlcyBob3cgSSB2aWV3IHRoZSByaXNrLlxuXG5CYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJ20gZ29pbmcgdG8gc2V0IHNvbWUgcGFyYW1ldGVycyBmb3IgdGhpcyBhbmFseXNpczpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYCAoQWJzb2x1dGVseS4gVGhpcyBpcyBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGJ1ZylcbiogICAqKkZvY3VzU3ltYm9scyoqOiBgW1widWRwX2JwZl91cGRhdGVfcHJvdG9cIl1gIChUaGlzIGlzIHRoZSBrZXkgZnVuY3Rpb24gaW4gdGhlIGNvcmUgbG9naWMpXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJCUEZfU1lTQ0FMTFwiXWAgKFRoaXMgaXMgdGhlIHByaW1hcnkgZGVwZW5kZW5jeSlcbiogICAqKlJlYXNvbmluZyoqOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgVURQIHNvY2tldHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBhIEJQRiBzb2NrbWFwIGJ5IHNldHRpbmcgdGhlIFNPQ0tcXF9SQ1VcXF9GUkVFIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYvVURQIGxvZ2ljLCB3aGljaCBtYWtlcyBpdCBpbXBvcnRhbnQgdG8gcmV2aWV3LlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NDAsIk91dHB1dFRva2VucyI6OTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTg6MDkuNTc3NjAzNTE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4MTUzNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF9icGZfdXBkYXRlX3Byb3RvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIFVEUCBzb2NrZXRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gYSBCUEYgc29ja21hcCBieSBzZXR0aW5nIHRoZSBTT0NLX1JDVV9GUkVFIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYvVURQIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX2JwZl91cGRhdGVfcHJvdG9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgVURQIHNvY2tldHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBhIEJQRiBzb2NrbWFwIGJ5IHNldHRpbmcgdGhlIFNPQ0tfUkNVX0ZSRUUgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRi9VRFAgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowqqc87[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 19:10:39 +0000 UTC FinishedAt: 2026-06-23 19:18:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "12091470c6b4c1c14b2de12dcbae2ada6cb6d20b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "12091470c6b4c1c14b2de12dcbae2ada6cb6d20b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "07ec6cb3-1bc2-41be-ab1f-e058db27674e" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "udp_bpf_update_proto" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE5OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX2JwZl91cGRhdGVfcHJvdG8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIFVEUCBzb2NrZXRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gYSBCUEYgc29ja21hcCBieSBzZXR0aW5nIHRoZSBTT0NLX1JDVV9GUkVFIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYvVURQIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE5OjE3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmQxNmEyZDI2NzViMTIyMzFlMTM1MWNkOWMzMTVmZDdlMWE4OThjOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDE5OjE3OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF9icGYuYyBiL25ldC9pcHY0L3VkcF9icGYuY1xuaW5kZXggYWQ1N2M0YzllYWFiNmYuLjk3MDMyN2I1OTU4MjY5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdWRwX2JwZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC91ZHBfYnBmLmNcbkBAIC0xNzMsNiAmIzQzOzE3Myw5IEBAIGludCB1ZHBfYnBmX3VwZGF0ZV9wcm90byhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssIGJvb2wgcmVzdG9yZSlcbiBcdGlmIChzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG4gXHRcdHVkcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChwc29jay1cdTAwM2Vza19wcm90byk7XG4gXG4mIzQzO1x0LyogVHJlYXQgYWxsIHNvY2tldHMgYXMgbm9uLXJlZmNvdW50ZWQsIHJlZ2FyZGxlc3Mgb2YgYmluZGluZyBzdGF0ZS4gKi9cbiYjNDM7XHRzb2NrX3NldF9mbGFnKHNrLCBTT0NLX1JDVV9GUkVFKTtcbiYjNDM7XG4gXHRzb2NrX3JlcGxhY2VfcHJvdG8oc2ssIFx1MDAyNnVkcF9icGZfcHJvdHNbZmFtaWx5XSk7XG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMTE5NzJmZmRiMTZlZDMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTcsNiAmIzQzOzcsNyBAQFxuIFxuICNpbmNsdWRlIFwmIzM0O3Rlc3RfcHJvZ3MuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3Rfc2ttc2dfbG9hZF9oZWxwZXJzLnNrZWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfdXBkYXRlLnNrZWwuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3Rlc3Rfc29ja21hcF9pbnZhbGlkX3VwZGF0ZS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0ZXN0X3NvY2ttYXBfc2tiX3ZlcmRpY3RfYXR0YWNoLnNrZWwuaFwmIzM0O1xuQEAgLTE3LDYgJiM0MzsxOCw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7dGVzdF9zb2NrbWFwX21zZ19wb3BfZGF0YS5za2VsLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDticGZfaXRlcl9zb2NrbWFwLnNrZWwuaFwmIzM0O1xuIFxuJiM0MzsjaW5jbHVkZSBcJiMzNDtjZ3JvdXBfaGVscGVycy5oXCYjMzQ7XG4gI2luY2x1ZGUgXCYjMzQ7c29ja21hcF9oZWxwZXJzLmhcJiMzNDtcbiBcbiAjZGVmaW5lIFRDUF9SRVBBSVJcdFx0MTlcdC8qIFRDUCBzb2NrIGlzIHVuZGVyIHJlcGFpciByaWdodCBub3cgKi9cbkBAIC0xMzczLDYgJiM0MzsxMzc1LDUyIEBAIHN0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9tdWx0aV9jaGFubmVscyhpbnQgc290eXBlKVxuIFx0dGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTtcbiB9XG4gXG4mIzQzOyNkZWZpbmUgTE9PS1VQX0JJTkRfUkVMRUFTRV9DR1x0XCYjMzQ7L3NvY2ttYXBfbG9va3VwLWJpbmQtcmVsZWFzZVwmIzM0O1xuJiM0MzsjZGVmaW5lIExPT0tVUF9CSU5EX1JFTEVBU0VfUkVQXHQ2NFxuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2Uodm9pZClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSAqc2tlbDtcbiYjNDM7XHRzdHJ1Y3Qgc29ja2FkZHJfaW4gc2E7XG4mIzQzO1x0aW50IGNnLCBpO1xuJiM0MztcbiYjNDM7XHRjZyA9IGNncm91cF9zZXR1cF9hbmRfam9pbihMT09LVVBfQklORF9SRUxFQVNFX0NHKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19GRChjZywgXCYjMzQ7Y2dyb3VwX3NldHVwX2FuZF9qb2luXCYjMzQ7KSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0c2tlbCA9IHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlX19vcGVuX2FuZF9sb2FkKCk7XG4mIzQzO1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFwmIzM0O29wZW5fYW5kX2xvYWRcJiMzNDspKVxuJiM0MztcdFx0Z290byBjbGVhbnVwO1xuJiM0MztcbiYjNDM7XHRza2VsLVx1MDAzZWxpbmtzLmNvbm5lY3QgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2Nncm91cChza2VsLVx1MDAzZXByb2dzLmNvbm5lY3QsIGNnKTtcbiYjNDM7XHRpZiAoIUFTU0VSVF9PS19QVFIoc2tlbC1cdTAwM2VsaW5rcy5jb25uZWN0LCBcJiMzNDthdHRhY2hfY2dyb3VwXCYjMzQ7KSlcbiYjNDM7XHRcdGdvdG8gZGVzdHJveTtcbiYjNDM7XG4mIzQzO1x0c2Euc2luX2ZhbWlseSA9IEFGX0lORVQ7XG4mIzQzO1x0c2Euc2luX3BvcnQgPSBicGZfaHRvbnMoMTIzNCk7XG4mIzQzO1x0c2Euc2luX2FkZHIuc19hZGRyID0gYnBmX2h0b25sKElOQUREUl9MT09QQkFDSyk7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIExPT0tVUF9CSU5EX1JFTEVBU0VfUkVQOyAmIzQzOyYjNDM7aSkge1xuJiM0MztcdFx0X19jbG9zZV9mZCBpbnQgc2s7XG4mIzQzO1xuJiM0MztcdFx0c2sgPSB4c29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApO1xuJiM0MztcdFx0aWYgKHNrIFx1MDAzYyAwKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoeGJwZl9tYXBfdXBkYXRlX2VsZW0oYnBmX21hcF9fZmQoc2tlbC1cdTAwM2VtYXBzLnNvY2ttYXApLCBcdTAwMjZ1MzIoMCksXG4mIzQzO1x0XHRcdFx0XHQgXHUwMDI2c2ssIEJQRl9BTlkpKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHRpZiAoeGNvbm5lY3Qoc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKilcdTAwMjZzYSwgc2l6ZW9mKHNhKSkpXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO2Rlc3Ryb3k6XG4mIzQzO1x0dGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2VfX2Rlc3Ryb3koc2tlbCk7XG4mIzQzO2NsZWFudXA6XG4mIzQzO1x0Y2xlYW51cF9jZ3JvdXBfZW52aXJvbm1lbnQoKTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgY3JlYXRlX3VwZGF0ZV9mcmVlXCYjMzQ7KSlcbkBAIC0xNDUxLDQgJiM0MzsxNDk5LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiBcdFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgdWRwIG11bHRpIGNoYW5uZWxzXCYjMzQ7KSlcbiBcdFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfREdSQU0pO1xuJiM0MztcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwmIzM0O3NvY2ttYXAgbG9va3VwLWJpbmQtcmVsZWFzZVwmIzM0OykpXG4mIzQzO1x0XHR0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNjNzdiMTkzODkzYmQ1XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuY1xuQEAgLTAsMCAmIzQzOzEsMzcgQEBcbiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvaW4uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NicGYvYnBmX2hlbHBlcnMuaFx1MDAzZVxuJiM0MztcbiYjNDM7c3RydWN0IHtcbiYjNDM7XHRfX3VpbnQodHlwZSwgQlBGX01BUF9UWVBFX1NPQ0tNQVApO1xuJiM0MztcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4mIzQzO1x0X190eXBlKGtleSwgaW50KTtcbiYjNDM7XHRfX3R5cGUodmFsdWUsIGludCk7XG4mIzQzO30gc29ja21hcCBTRUMoXCYjMzQ7Lm1hcHNcJiMzNDspO1xuJiM0MztcbiYjNDM7U0VDKFwmIzM0O2Nncm91cC9jb25uZWN0NFwmIzM0OylcbiYjNDM7aW50IGNvbm5lY3Qoc3RydWN0IGJwZl9zb2NrX2FkZHIgKmN0eClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBicGZfc29jayAqc2s7XG4mIzQzO1x0aW50IHJldCA9IFNLX0RST1A7XG4mIzQzO1xuJiM0MztcdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb2NrbWFwLCBcdTAwMjYoaW50KXswfSk7XG4mIzQzO1x0aWYgKHNrKSB7XG4mIzQzO1x0XHRpZiAoc2sgPT0gY3R4LVx1MDAzZXNrKSB7XG4mIzQzO1x0XHRcdHN0cnVjdCBzb2NrYWRkcl9pbiBzYSA9IHtcbiYjNDM7XHRcdFx0XHQuc2luX2ZhbWlseSA9IGN0eC1cdTAwM2V1c2VyX2ZhbWlseSxcbiYjNDM7XHRcdFx0XHQuc2luX3BvcnQgPSBjdHgtXHUwMDNldXNlcl9wb3J0LFxuJiM0MztcdFx0XHRcdC5zaW5fYWRkci5zX2FkZHIgPSBjdHgtXHUwMDNldXNlcl9pcDRcbiYjNDM7XHRcdFx0fTtcbiYjNDM7XG4mIzQzO1x0XHRcdHJldCA9ICFicGZfYmluZChjdHgsIChzdHJ1Y3Qgc29ja2FkZHIgKilcdTAwMjZzYSwgc2l6ZW9mKHNhKSk7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0YnBmX3NrX3JlbGVhc2Uoc2spO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxOToxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF9icGZfdXBkYXRlX3Byb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBVRFAgc29ja2V0cyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIGEgQlBGIHNvY2ttYXAgYnkgc2V0dGluZyB0aGUgU09DS19SQ1VfRlJFRSBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGL1VEUCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmQxNmEyZDI2NzViMTIyMzFlMTM1MWNkOWMzMTVmZDdlMWE4OThjOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDIzIDE5OjE3OjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX2JwZi5jIGIvbmV0L2lwdjQvdWRwX2JwZi5jCmluZGV4IGFkNTdjNGM5ZWFhYjZmLi45NzAzMjdiNTk1ODI2OSAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdWRwX2JwZi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3VkcF9icGYuYwpAQCAtMTczLDYgJiM0MzsxNzMsOSBAQCBpbnQgdWRwX2JwZl91cGRhdGVfcHJvdG8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBib29sIHJlc3RvcmUpCiAJaWYgKHNrLSZndDtza19mYW1pbHkgPT0gQUZfSU5FVDYpCiAJCXVkcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChwc29jay0mZ3Q7c2tfcHJvdG8pOwogCiYjNDM7CS8qIFRyZWF0IGFsbCBzb2NrZXRzIGFzIG5vbi1yZWZjb3VudGVkLCByZWdhcmRsZXNzIG9mIGJpbmRpbmcgc3RhdGUuICovCiYjNDM7CXNvY2tfc2V0X2ZsYWcoc2ssIFNPQ0tfUkNVX0ZSRUUpOwomIzQzOwogCXNvY2tfcmVwbGFjZV9wcm90byhzaywgJmFtcDt1ZHBfYnBmX3Byb3RzW2ZhbWlseV0pOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCmluZGV4IGNiMzIyOTcxMWY5M2EzLi4xMTk3MmZmZGIxNmVkMyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuYwpAQCAtNyw2ICYjNDM7Nyw3IEBACiAKICNpbmNsdWRlICYjMzQ7dGVzdF9wcm9ncy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGVzdF9za21zZ19sb2FkX2hlbHBlcnMuc2tlbC5oJiMzNDsKJiM0MzsjaW5jbHVkZSAmIzM0O3Rlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3Rlc3Rfc29ja21hcF91cGRhdGUuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7dGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlLnNrZWwuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3Rlc3Rfc29ja21hcF9za2JfdmVyZGljdF9hdHRhY2guc2tlbC5oJiMzNDsKQEAgLTE3LDYgJiM0MzsxOCw3IEBACiAjaW5jbHVkZSAmIzM0O3Rlc3Rfc29ja21hcF9tc2dfcG9wX2RhdGEuc2tlbC5oJiMzNDsKICNpbmNsdWRlICYjMzQ7YnBmX2l0ZXJfc29ja21hcC5za2VsLmgmIzM0OwogCiYjNDM7I2luY2x1ZGUgJiMzNDtjZ3JvdXBfaGVscGVycy5oJiMzNDsKICNpbmNsdWRlICYjMzQ7c29ja21hcF9oZWxwZXJzLmgmIzM0OwogCiAjZGVmaW5lIFRDUF9SRVBBSVIJCTE5CS8qIFRDUCBzb2NrIGlzIHVuZGVyIHJlcGFpciByaWdodCBub3cgKi8KQEAgLTEzNzMsNiAmIzQzOzEzNzUsNTIgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpCiAJdGVzdF9zb2NrbWFwX3Bhc3NfcHJvZ19fZGVzdHJveShza2VsKTsKIH0KIAomIzQzOyNkZWZpbmUgTE9PS1VQX0JJTkRfUkVMRUFTRV9DRwkmIzM0Oy9zb2NrbWFwX2xvb2t1cC1iaW5kLXJlbGVhc2UmIzM0OwomIzQzOyNkZWZpbmUgTE9PS1VQX0JJTkRfUkVMRUFTRV9SRVAJNjQKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSh2b2lkKQomIzQzO3sKJiM0MzsJc3RydWN0IHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlICpza2VsOwomIzQzOwlzdHJ1Y3Qgc29ja2FkZHJfaW4gc2E7CiYjNDM7CWludCBjZywgaTsKJiM0MzsKJiM0MzsJY2cgPSBjZ3JvdXBfc2V0dXBfYW5kX2pvaW4oTE9PS1VQX0JJTkRfUkVMRUFTRV9DRyk7CiYjNDM7CWlmICghQVNTRVJUX09LX0ZEKGNnLCAmIzM0O2Nncm91cF9zZXR1cF9hbmRfam9pbiYjMzQ7KSkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJc2tlbCA9IHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlX19vcGVuX2FuZF9sb2FkKCk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLCAmIzM0O29wZW5fYW5kX2xvYWQmIzM0OykpCiYjNDM7CQlnb3RvIGNsZWFudXA7CiYjNDM7CiYjNDM7CXNrZWwtJmd0O2xpbmtzLmNvbm5lY3QgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2Nncm91cChza2VsLSZndDtwcm9ncy5jb25uZWN0LCBjZyk7CiYjNDM7CWlmICghQVNTRVJUX09LX1BUUihza2VsLSZndDtsaW5rcy5jb25uZWN0LCAmIzM0O2F0dGFjaF9jZ3JvdXAmIzM0OykpCiYjNDM7CQlnb3RvIGRlc3Ryb3k7CiYjNDM7CiYjNDM7CXNhLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwomIzQzOwlzYS5zaW5fcG9ydCA9IGJwZl9odG9ucygxMjM0KTsKJiM0MzsJc2Euc2luX2FkZHIuc19hZGRyID0gYnBmX2h0b25sKElOQUREUl9MT09QQkFDSyk7CiYjNDM7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBMT09LVVBfQklORF9SRUxFQVNFX1JFUDsgJiM0MzsmIzQzO2kpIHsKJiM0MzsJCV9fY2xvc2VfZmQgaW50IHNrOwomIzQzOwomIzQzOwkJc2sgPSB4c29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOwomIzQzOwkJaWYgKHNrICZsdDsgMCkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCWlmICh4YnBmX21hcF91cGRhdGVfZWxlbShicGZfbWFwX19mZChza2VsLSZndDttYXBzLnNvY2ttYXApLCAmYW1wO3UzMigwKSwKJiM0MzsJCQkJCSAmYW1wO3NrLCBCUEZfQU5ZKSkKJiM0MzsJCQlicmVhazsKJiM0MzsKJiM0MzsJCWlmICh4Y29ubmVjdChzaywgKHN0cnVjdCBzb2NrYWRkciAqKSZhbXA7c2EsIHNpemVvZihzYSkpKQomIzQzOwkJCWJyZWFrOwomIzQzOwl9CiYjNDM7CiYjNDM7ZGVzdHJveToKJiM0MzsJdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2VfX2Rlc3Ryb3koc2tlbCk7CiYjNDM7Y2xlYW51cDoKJiM0MzsJY2xlYW51cF9jZ3JvdXBfZW52aXJvbm1lbnQoKTsKJiM0Mzt9CiYjNDM7CiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKQogewogCWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWUmIzM0OykpCkBAIC0xNDUxLDQgJiM0MzsxNDk5LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZCkKIAkJdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTsKIAlpZiAodGVzdF9fc3RhcnRfc3VidGVzdCgmIzM0O3NvY2ttYXAgdWRwIG11bHRpIGNoYW5uZWxzJiMzNDspKQogCQl0ZXN0X3NvY2ttYXBfbXVsdGlfY2hhbm5lbHMoU09DS19ER1JBTSk7CiYjNDM7CWlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KCYjMzQ7c29ja21hcCBsb29rdXAtYmluZC1yZWxlYXNlJiMzNDspKQomIzQzOwkJdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNjNzdiMTkzODkzYmQ1Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLmMKQEAgLTAsMCAmIzQzOzEsMzcgQEAKJiM0MzsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9icGYuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW4uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7YnBmL2JwZl9oZWxwZXJzLmgmZ3Q7CiYjNDM7CiYjNDM7c3RydWN0IHsKJiM0MzsJX191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTsKJiM0MzsJX191aW50KG1heF9lbnRyaWVzLCAxKTsKJiM0MzsJX190eXBlKGtleSwgaW50KTsKJiM0MzsJX190eXBlKHZhbHVlLCBpbnQpOwomIzQzO30gc29ja21hcCBTRUMoJiMzNDsubWFwcyYjMzQ7KTsKJiM0MzsKJiM0MztTRUMoJiMzNDtjZ3JvdXAvY29ubmVjdDQmIzM0OykKJiM0MztpbnQgY29ubmVjdChzdHJ1Y3QgYnBmX3NvY2tfYWRkciAqY3R4KQomIzQzO3sKJiM0MzsJc3RydWN0IGJwZl9zb2NrICpzazsKJiM0MzsJaW50IHJldCA9IFNLX0RST1A7CiYjNDM7CiYjNDM7CXNrID0gYnBmX21hcF9sb29rdXBfZWxlbSgmYW1wO3NvY2ttYXAsICZhbXA7KGludCl7MH0pOwomIzQzOwlpZiAoc2spIHsKJiM0MzsJCWlmIChzayA9PSBjdHgtJmd0O3NrKSB7CiYjNDM7CQkJc3RydWN0IHNvY2thZGRyX2luIHNhID0gewomIzQzOwkJCQkuc2luX2ZhbWlseSA9IGN0eC0mZ3Q7dXNlcl9mYW1pbHksCiYjNDM7CQkJCS5zaW5fcG9ydCA9IGN0eC0mZ3Q7dXNlcl9wb3J0LAomIzQzOwkJCQkuc2luX2FkZHIuc19hZGRyID0gY3R4LSZndDt1c2VyX2lwNAomIzQzOwkJCX07CiYjNDM7CiYjNDM7CQkJcmV0ID0gIWJwZl9iaW5kKGN0eCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhbXA7c2EsIHNpemVvZihzYSkpOwomIzQzOwkJfQomIzQzOwomIzQzOwkJYnBmX3NrX3JlbGVhc2Uoc2spOwomIzQzOwl9CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiYjNDM7fQomIzQzOwomIzQzO2NoYXIgX2xpY2Vuc2VbXSBTRUMoJiMzNDtsaWNlbnNlJiMzNDspID0gJiMzNDtHUEwmIzM0OzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQzNQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYFNPQ0tfUkNVX0ZSRUVgIEZsYWcgaW4gVURQIEJQRioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbmV0L2lwdjQvdWRwX2JwZi5jYCBhbmQgYWRkcyBhIHNlbGYtdGVzdCBpbiB0aGUgQlBGIHNlbGZ0ZXN0cy4gVGhlIGNvcmUgY2hhbmdlIGluIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYgaXMgc2V0dGluZyB0aGUgYFNPQ0tfUkNVX0ZSRUVgIGZsYWcgb24gdGhlIHNvY2tldCAoYHNrYCkgd2l0aGluIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBUaGUgY29udGV4dCBwb2ludHMgdG93YXJkcyBzb21ldGhpbmcgaGFwcGVuaW5nIHdoZW4gYW4gQUZfSU5FVDYgc29ja2V0IGlzIGJlaW5nIHVwZGF0ZWQuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogV2hhdCYjMzk7cyB0aGUgKnB1cnBvc2UqIG9mIHRoaXMgYHVkcF9icGZfdXBkYXRlX3Byb3RvYCBmdW5jdGlvbj8gV2h5IGFyZSB3ZSBzZXR0aW5nIGBTT0NLX1JDVV9GUkVFYCBoZXJlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zPyBEb2VzIHRoaXMgaW50cm9kdWNlIGEgc3VidGxlIGNoYW5nZSBpbiBtZW1vcnkgbWFuYWdlbWVudCBvciBzb2NrZXQgYmVoYXZpb3IsIHBhcnRpY3VsYXJseSBjb25jZXJuaW5nIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgZnJlZWluZz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIGNvbnRleHQuCgpUaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgLiBJJiMzOTtsbCBydW4gYSBzZWFyY2ggZm9yIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuIFRoaXMgc2hvdWxkIHJldmVhbCB0aGUgY2FsbCBzaXRlcyBhbmQgcG90ZW50aWFsbHkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIGNoYW5nZS4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB3aWRlbHkgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuIFRoZSBnb2FsIGlzIHRvIGRldGVybWluZSB0aGUgY29tcGxldGUgZnVuY3Rpb25hbCBpbXBhY3QgYW5kIGFueSBkZXBlbmRlbmNpZXMgaW52b2x2ZWQuIEkgbmVlZCB0byBmdWxseSBncmFzcCB0aGUgJiMzOTt3aHkmIzM5OyBiZWhpbmQgdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX2JwZl91cGRhdGVfcHJvdG8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvdWRwLmg9NjUyPXN0cnVjdCBza19wc29jaztcbmluY2x1ZGUvbmV0L3VkcC5oOjY1MzppbnQgdWRwX2JwZl91cGRhdGVfcHJvdG8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBib29sIHJlc3RvcmUpO1xuaW5jbHVkZS9uZXQvdWRwLmgtNjU0LSNlbmRpZlxuLS1cbm5ldC9pcHY0L3VkcC5jPTMxMTA9c3RydWN0IHByb3RvIHVkcF9wcm90ID0ge1xuLS1cbm5ldC9pcHY0L3VkcC5jLTMxMzEtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjQvdWRwLmM6MzEzMjpcdC5wc29ja191cGRhdGVfc2tfcHJvdFx0PSB1ZHBfYnBmX3VwZGF0ZV9wcm90byxcbm5ldC9pcHY0L3VkcC5jLTMxMzMtI2VuZGlmXG4tLVxubmV0L2lwdjQvdWRwX2JwZi5jPTE2MT1sYXRlX2luaXRjYWxsKHVkcF9icGZfdjRfYnVpbGRfcHJvdG8pO1xubmV0L2lwdjQvdWRwX2JwZi5jLTE2Mi1cbm5ldC9pcHY0L3VkcF9icGYuYzoxNjM6aW50IHVkcF9icGZfdXBkYXRlX3Byb3RvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywgYm9vbCByZXN0b3JlKVxubmV0L2lwdjQvdWRwX2JwZi5jLTE2NC17XG4tLVxubmV0L2lwdjQvdWRwX2JwZi5jLTE4MS19XG5uZXQvaXB2NC91ZHBfYnBmLmM6MTgyOkVYUE9SVF9TWU1CT0xfR1BMKHVkcF9icGZfdXBkYXRlX3Byb3RvKTtcbi0tXG5uZXQvaXB2Ni91ZHAuYz0xODc5PXN0cnVjdCBwcm90byB1ZHB2Nl9wcm90ID0ge1xuLS1cbm5ldC9pcHY2L3VkcC5jLTE5MDAtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxubmV0L2lwdjYvdWRwLmM6MTkwMTpcdC5wc29ja191cGRhdGVfc2tfcHJvdFx0PSB1ZHBfYnBmX3VwZGF0ZV9wcm90byxcbm5ldC9pcHY2L3VkcC5jLTE5MDItI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ3MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgQlBGIGFuZCBVRFAgUHJvdG9jb2wgSW50ZXJhY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHNwZWNpZmljYWxseSwgYHVkcF9icGZfdXBkYXRlX3Byb3RvYCBpcyBiZWluZyBob29rZWQgaW50byB0aGUgYC5wc29ja191cGRhdGVfc2tfcHJvdGAgZmllbGQgZm9yIGB1ZHBfcHJvdGAgYW5kIGB1ZHB2Nl9wcm90YC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY29uZGl0aW9uYWwsIG9ubHkgaGFwcGVuaW5nIHdoZW4gYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgZW5hYmxlZC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGUgQlBGIHN5c2NhbGwgaW50ZWdyYXRpb24gaXMgd2hhdCYjMzk7cyBkcml2aW5nIHRoaXMgZnVuY3Rpb25hbGl0eS4gTm93LCBJIG5lZWQgdG8gY29uZmlybSB3aGVyZSBgdWRwX2JwZi5jYCBpcyBhY3R1YWxseSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwuIEkgKnRoaW5rKiBpdCYjMzk7cyBpbiBgbmV0L2lwdjQvYCwgYnV0IEkmIzM5O2QgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYE1ha2VmaWxlYCBpbiB0aGF0IGRpcmVjdG9yeS4gR290dGEgYmUgc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSBhcyBJIGV4cGVjdCB0aGVtIHRvIGJlLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICYjNDM7PSB0Y3BfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHVkcF9icGYub1xubmV0L2lwdjQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVExBQkVMKSAmIzQzOz0gY2lwc29faXB2NC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg4MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVEUCBCUEYgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgdGhhdCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgY3J1Y2lhbCBjb25maWcgb3B0aW9uIHRoYXQgZW5hYmxlcyB0aGUgZW50aXJlIGZ1bmN0aW9uYWxpdHkuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBJIG5lZWQgdG8gYmUgc3VyZSBhbnkgc3lzdGVtcyB1dGlsaXppbmcgdGhpcyBoYXZlIHRoYXQgc2V0IGNvcnJlY3RseS4KClRoZSBmdW5jdGlvbiBgdWRwX2JwZl91cGRhdGVfcHJvdG9gIGlzIHRoZSBvbmUgdGhhdCYjMzk7cyBjYWxsZWQgd2hlbmV2ZXIgYSBVRFAgc29ja2V0IGlzIGFkZGVkIHRvIGEgc29ja21hcCBvciBhIGNvbXBhcmFibGUgQlBGIHN0cnVjdHVyZS4gSW50ZXJlc3RpbmcuIEkgc2VlIHRoZXkmIzM5O3JlIHNldHRpbmcgYFNPQ0tfUkNVX0ZSRUVgIG9uIHRoZSBzb2NrZXQuIFRoYXQmIzM5O3MgYSBwYXR0ZXJuLCB1c3VhbGx5IHJlbGF0ZWQgdG8gaG93IHRoZSBzb2NrZXQgaXMgaGFuZGxlZCBkdXJpbmcgZGUtYWxsb2NhdGlvbiwgYW5kIGVuc3VyaW5nIHRoYXQgYW55IEJQRiBjb250ZXh0IHVzaW5nIHRoZSBzb2NrZXQgaGFzIHRpbWUgdG8gZmluYWxpemUuIFRoYXQmIzM5O3MgaW1wb3J0YW50IGZvciB0aGUgY29ycmVjdG5lc3Mgb2YgQlBGIHByb2dyYW1zLgoKUmlnaHQsIHNvLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSBJIGhhdmUgYWxsIHRoZSBjb25maWdzIHJpZ2h0LiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBubyBxdWVzdGlvbi4gQnV0IGFyZSB0aGVyZSAqYW55KiBvdGhlciBkZXBlbmRlbmNpZXM/IExldCBtZSBkb3VibGUtY2hlY2suIE9rYXksIGl0IGxvb2tzIGxpa2UgYHVkcF9icGYub2AgaXMgY29tcGlsZWQgZGlyZWN0bHkgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgc28gYENPTkZJR19ORVRfU09DS19NU0dgIGlzIG5vdCByZXF1aXJlZC4gVGhhdCBlbGltaW5hdGVzIGEgcG90ZW50aWFsIHBvaW50IG9mIGZhaWx1cmUuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgbm93IGRyaWxsIGRvd24gaW50byBgbmV0L2lwdjQvdWRwX2JwZi5jYCBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoYXQgYHVkcF9icGZfdXBkYXRlX3Byb3RvYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQgd29ya3MgYW5kIHdoYXQgdGhlIHNvY2tldCBsaWZlY3ljbGUgaW1wbGljYXRpb25zIGFyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxOToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF9icGYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYzOlx0aW50IHVkcF9icGZfdXBkYXRlX3Byb3RvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywgYm9vbCByZXN0b3JlKVxuIDE2NDpcdHtcbiAxNjU6XHRcdGludCBmYW1pbHkgPSBzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVCA/IFVEUF9CUEZfSVBWNCA6IFVEUF9CUEZfSVBWNjtcbiAxNjY6XHRcbiAxNjc6XHRcdGlmIChyZXN0b3JlKSB7XG4gMTY4Olx0XHRcdFdSSVRFX09OQ0Uoc2stXHUwMDNlc2tfd3JpdGVfc3BhY2UsIHBzb2NrLVx1MDAzZXNhdmVkX3dyaXRlX3NwYWNlKTtcbiAxNjk6XHRcdFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBwc29jay1cdTAwM2Vza19wcm90byk7XG4gMTcwOlx0XHRcdHJldHVybiAwO1xuIDE3MTpcdFx0fVxuIDE3MjpcdFxuIDE3MzpcdFx0aWYgKHNrLVx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNilcbiAxNzQ6XHRcdFx0dWRwX2JwZl9jaGVja192Nl9uZWVkc19yZWJ1aWxkKHBzb2NrLVx1MDAzZXNrX3Byb3RvKTtcbiAxNzU6XHRcbiAxNzY6XHRcdC8qIFRyZWF0IGFsbCBzb2NrZXRzIGFzIG5vbi1yZWZjb3VudGVkLCByZWdhcmRsZXNzIG9mIGJpbmRpbmcgc3RhdGUuICovXG4gMTc3Olx0XHRzb2NrX3NldF9mbGFnKHNrLCBTT0NLX1JDVV9GUkVFKTtcbiAxNzg6XHRcbiAxNzk6XHRcdHNvY2tfcmVwbGFjZV9wcm90byhzaywgXHUwMDI2dWRwX2JwZl9wcm90c1tmYW1pbHldKTtcbiAxODA6XHRcdHJldHVybiAwO1xuIDE4MTpcdH1cbiAxODI6XHRFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfYnBmX3VwZGF0ZV9wcm90byk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc3MwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgVURQIEJQRiBQcm90b2NvbCBVcGRhdGUqKgoKT2theSwgc28gdGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgbm90aGluZyBlYXJ0aC1zaGF0dGVyaW5nLiBUaGUgY29yZSBvZiBpdCBpbnZvbHZlcyBzZXR0aW5nIHRoZSBgU09DS19SQ1VfRlJFRWAgZmxhZyBvbiB0aGUgc29ja2V0LiBUaGUgcHJpbWFyeSBmdW5jdGlvbiBvZiBpbnRlcmVzdCBpcyBgdWRwX2JwZl91cGRhdGVfcHJvdG9gLiBNeSBmb2N1cyBpcyB6ZXJvZWQgaW4gb24gdGhhdCBzcGVjaWZpYyBzeW1ib2wuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgdGhvcm91Z2hseS4KClJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgYENPTkZJR19CUEZfU1lTQ0FMTGAgY29uZmlnIGlzIGludm9sdmVkLiBCdXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgY29tZSBpbnRvIHBsYXksIHBvdGVudGlhbGx5IGFzIGRlcGVuZGVuY2llcyBvciBiZWNhdXNlIG9mIHJlbGF0ZWQgZnVuY3Rpb25hbGl0aWVzLiBUaGUgc2VsZnRlc3RzIGltbWVkaWF0ZWx5IG9mZmVyIHNvbWUgY2x1ZXMsIHRoZXkmIzM5O3JlIHVzaW5nIGBzb2NrbWFwYCBhbmQgYGJwZl9iaW5kYCwgdGhhdCBnZXRzIG15IGF0dGVudGlvbi4gRG9lcyB0aGlzIGNoYW5nZSByZXF1aXJlIGBDT05GSUdfQ0dST1VQX0JQRmAgYXMgd2VsbD8gQWgsIHllcywgbG9va2luZyBhdCB0aGUgc2VsZnRlc3Qgc291cmNlIGl0IHVzZXMgYFNFQygmIzM0O2Nncm91cC9jb25uZWN0NCYjMzQ7KWAgYW5kIGBicGZfcHJvZ3JhbV9fYXR0YWNoX2Nncm91cGAuCgpIb3dldmVyLCB0aGUgY2VudHJhbCBtb2RpZmljYXRpb24gaXMgd2l0aGluIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AsIGFuZCB0aGF04oCZcyBidWlsdCB3aXRoIGBDT05GSUdfQlBGX1NZU0NBTExgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGlzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGBzb2NrbWFwYCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNydWNpYWwuIEFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG1heSBiZSBuZWNlc3Nhcnkgb3IgcmVjb21tZW5kZWQgdG8gdXNlIGFsb25nIHNpZGUgdGhpcyBjaGFuZ2U/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDE5OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c29ja21hcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMxNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIEtlcm5lbCYjMzk7cyBOZXR3b3JrIENvcmU6IExvY2F0aW5nIGBzb2NrX21hcGAqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYHNvY2tfbWFwYCwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGdvIGRpcmVjdGx5IHRvIHRoZSBzb3VyY2UuIFRoZSBuZXR3b3JraW5nIGNvcmUgaXMgdXN1YWxseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgYG5ldC9jb3JlL01ha2VmaWxlYCBpcyBhbG1vc3QgY2VydGFpbmx5IHdoZXJlIGNydWNpYWwgYnVpbGQgY29uZmlndXJhdGlvbnMgYW5kIHJlbGF0aW9uc2hpcHMgZm9yIGNvcmUgbmV0d29ya2luZyBjb21wb25lbnRzIGFyZSBkZWZpbmVkLiBJdCYjMzk7cyB0aGUgTWFrZWZpbGUgdGhhdCBvcmNoZXN0cmF0ZXMgbXVjaCBvZiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmsgbW9kdWxlIGNvbXBpbGF0aW9uLiBTbywgY2hlY2tpbmcgdGhhdCBmaWxlIGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAuIEkgc3VzcGVjdCB0aGF0IGBzb2NrX21hcGAsIHdoYXRldmVyIGl0IGlzIHJlbGF0ZWQgdG8sIGxpa2VseSBoYXMgaXRzIGNvbXBpbGF0aW9uIGFuZCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIGxpc3RlZCB0aGVyZS4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgZWZmaWNpZW50IHdheSB0byBuYXZpZ2F0ZSB0aGUga2VybmVsIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c29ja19tYXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9NYWtlZmlsZT00ND1vYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gc2ttc2cub1xubmV0L2NvcmUvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc29ja19tYXAub1xubmV0L2NvcmUvTWFrZWZpbGUtNDYtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3NrX3N0b3JhZ2Uub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxOToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjQwCgkJCQkJCQlvdXRwdXQ6IDkyCgkJCQkJCQl0aG91Z2h0czogMzYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFVEUCBTb2NrbWFwIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gVURQIHNvY2tldHMgd2l0aGluIHRoZSBzb2NrbWFwIGZyYW1ld29yay4gVGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBrbm9iIGhlcmUgaXMgY2xlYXJseSBgQ09ORklHX0JQRl9TWVNDQUxMYCwgYW5kIEkgbmVlZCB0byBjaGVjayBpZiBhbnkgb3RoZXIgY29uZmlncyBhcmUgcmVsZXZhbnQgdG8gdGhpcyBpc3N1ZS4gVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIGhvdyBVRFAgc29ja2V0cyBiZWhhdmUgaW4gdGhlIGNvbnRleHQgb2YgYSBzb2NrbWFwLiBUaGUgc2VsZnRlc3QgdXNlcyBzdGFuZGFyZCBCUEYgbWFwIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBgYnBmX21hcF9sb29rdXBfZWxlbWAsIGBicGZfYmluZGAsIGFuZCBgYnBmX3NrX3JlbGVhc2VgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIHByb2JsZW0gcHJvYmFibHkgc3RlbW1lZCBmcm9tIHRoZSB3YXkgc29ja2V0cyBhcmUgYmVpbmcgcmVsZWFzZWQgYWZ0ZXIgYmVpbmcgcmV0cmlldmVkIGZyb20gdGhlIHNvY2ttYXAsIGVzcGVjaWFsbHkgaWYgYGJwZl9iaW5kYCB3YXMgc3Vic2VxdWVudGx5IGNhbGxlZCBvbiBhIHNvY2tldCBhZnRlciBsb29rdXAuIFRoZSBwYXRjaCByZXNvbHZlcyB0aGlzIGJ5IHNldHRpbmcgdGhlIGBTT0NLX1JDVV9GUkVFYCBmbGFnIG9uIHRoZSBzb2NrZXQgd2hlbiBpdCBnZXRzIGFkZGVkIHRvIHRoZSBzb2NrbWFwLCBhbmQgdGhpcyBjYWxscyBgdWRwX2JwZl91cGRhdGVfcHJvdG9gLiBUaGlzIHJlYWxseSBzY3JlYW1zICYjMzQ7d29ydGggZnV6emluZyYjMzQ7IHRvIG1lLCByaWdodCBhd2F5LgoKSSBuZWVkIHRvIG5haWwgZG93biB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGNoYW5nZS4gSSYjMzk7bSBmb2N1c2luZyBvbiBgdWRwX2JwZl91cGRhdGVfcHJvdG9gIGFuZCB0aGVuIEkmIzM5O2xsIGxvb2sgYXQgdGhlIGJyb2FkZXIgYHNvY2tfbWFwX3VwZGF0ZV9lbGVtYCBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB3aGV0aGVyIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgaXMgYSBob3QgcGF0aC4gSXQmIzM5O3MgdHJpZ2dlcmVkIHdoZW4gYSBVRFAgc29ja2V0IGlzIGFkZGVkIHRvIHRoZSBzb2NrbWFwLiBJdCYjMzk7cyBub3QgaW4gdGhlIHBhdGggb2YgYWN0dWFsIHBhY2tldCBwcm9jZXNzaW5nOyBzbyB0aGlzIGlzIG5vdCBhIHBlcmZvcm1hbmNlIGNyaXRpY2FsIHBhdGgsIHdoaWNoIGNoYW5nZXMgaG93IEkgdmlldyB0aGUgcmlzay4KCkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gZ29pbmcgdG8gc2V0IHNvbWUgcGFyYW1ldGVycyBmb3IgdGhpcyBhbmFseXNpczoKCiogICAqKldvcnRoRnV6emluZyoqOiBgdHJ1ZWAgKEFic29sdXRlbHkuIFRoaXMgaXMgYSBwb3RlbnRpYWwgZnVuY3Rpb25hbCBidWcpCiogICAqKkZvY3VzU3ltYm9scyoqOiBgWyYjMzQ7dWRwX2JwZl91cGRhdGVfcHJvdG8mIzM0O11gIChUaGlzIGlzIHRoZSBrZXkgZnVuY3Rpb24gaW4gdGhlIGNvcmUgbG9naWMpCiogICAqKkVuYWJsZUNvbmZpZ3MqKjogYFsmIzM0O0JQRl9TWVNDQUxMJiMzNDtdYCAoVGhpcyBpcyB0aGUgcHJpbWFyeSBkZXBlbmRlbmN5KQoqICAgKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIFVEUCBzb2NrZXRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gYSBCUEYgc29ja21hcCBieSBzZXR0aW5nIHRoZSBTT0NLXF9SQ1VcX0ZSRUUgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRi9VRFAgbG9naWMsIHdoaWNoIG1ha2VzIGl0IGltcG9ydGFudCB0byByZXZpZXcuJiMzNDsKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTk6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX2JwZl91cGRhdGVfcHJvdG8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIFVEUCBzb2NrZXRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gYSBCUEYgc29ja21hcCBieSBzZXR0aW5nIHRoZSBTT0NLX1JDVV9GUkVFIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYvVURQIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF9icGZfdXBkYXRlX3Byb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBVRFAgc29ja2V0cyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIGEgQlBGIHNvY2ttYXAgYnkgc2V0dGluZyB0aGUgU09DS19SQ1VfRlJFRSBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGL1VEUCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjIyLjk5NzI5NDkwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzA4NDg1ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX2JwZl91cGRhdGVfcHJvdG9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgVURQIHNvY2tldHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBhIEJQRiBzb2NrbWFwIGJ5IHNldHRpbmcgdGhlIFNPQ0tfUkNVX0ZSRUUgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRi9VRFAgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjIyLjk5NzI5OTg2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc3OTAyMDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmQxNmEyZDI2NzViMTIyMzFlMTM1MWNkOWMzMTVmZDdlMWE4OThjOFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxOToxNzoyMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHBfYnBmLmMgYi9uZXQvaXB2NC91ZHBfYnBmLmNcXG5pbmRleCBhZDU3YzRjOWVhYWI2Zi4uOTcwMzI3YjU5NTgyNjkgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdWRwX2JwZi5jXFxuKysrIGIvbmV0L2lwdjQvdWRwX2JwZi5jXFxuQEAgLTE3Myw2ICsxNzMsOSBAQCBpbnQgdWRwX2JwZl91cGRhdGVfcHJvdG8oc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLCBib29sIHJlc3RvcmUpXFxuIFxcdGlmIChzay1cXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxcbiBcXHRcXHR1ZHBfYnBmX2NoZWNrX3Y2X25lZWRzX3JlYnVpbGQocHNvY2stXFx1MDAzZXNrX3Byb3RvKTtcXG4gXFxuK1xcdC8qIFRyZWF0IGFsbCBzb2NrZXRzIGFzIG5vbi1yZWZjb3VudGVkLCByZWdhcmRsZXNzIG9mIGJpbmRpbmcgc3RhdGUuICovXFxuK1xcdHNvY2tfc2V0X2ZsYWcoc2ssIFNPQ0tfUkNVX0ZSRUUpO1xcbitcXG4gXFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBcXHUwMDI2dWRwX2JwZl9wcm90c1tmYW1pbHldKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXFxuaW5kZXggY2IzMjI5NzExZjkzYTMuLjExOTcyZmZkYjE2ZWQzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xcbkBAIC03LDYgKzcsNyBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcInRlc3RfcHJvZ3MuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc2ttc2dfbG9hZF9oZWxwZXJzLnNrZWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF91cGRhdGUuc2tlbC5oXFxcIlxcbiAjaW5jbHVkZSBcXFwidGVzdF9zb2NrbWFwX2ludmFsaWRfdXBkYXRlLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9hdHRhY2guc2tlbC5oXFxcIlxcbkBAIC0xNyw2ICsxOCw3IEBAXFxuICNpbmNsdWRlIFxcXCJ0ZXN0X3NvY2ttYXBfbXNnX3BvcF9kYXRhLnNrZWwuaFxcXCJcXG4gI2luY2x1ZGUgXFxcImJwZl9pdGVyX3NvY2ttYXAuc2tlbC5oXFxcIlxcbiBcXG4rI2luY2x1ZGUgXFxcImNncm91cF9oZWxwZXJzLmhcXFwiXFxuICNpbmNsdWRlIFxcXCJzb2NrbWFwX2hlbHBlcnMuaFxcXCJcXG4gXFxuICNkZWZpbmUgVENQX1JFUEFJUlxcdFxcdDE5XFx0LyogVENQIHNvY2sgaXMgdW5kZXIgcmVwYWlyIHJpZ2h0IG5vdyAqL1xcbkBAIC0xMzczLDYgKzEzNzUsNTIgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXFxuIFxcdHRlc3Rfc29ja21hcF9wYXNzX3Byb2dfX2Rlc3Ryb3koc2tlbCk7XFxuIH1cXG4gXFxuKyNkZWZpbmUgTE9PS1VQX0JJTkRfUkVMRUFTRV9DR1xcdFxcXCIvc29ja21hcF9sb29rdXAtYmluZC1yZWxlYXNlXFxcIlxcbisjZGVmaW5lIExPT0tVUF9CSU5EX1JFTEVBU0VfUkVQXFx0NjRcXG4rXFxuK3N0YXRpYyB2b2lkIHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlKHZvaWQpXFxuK3tcXG4rXFx0c3RydWN0IHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlICpza2VsO1xcbitcXHRzdHJ1Y3Qgc29ja2FkZHJfaW4gc2E7XFxuK1xcdGludCBjZywgaTtcXG4rXFxuK1xcdGNnID0gY2dyb3VwX3NldHVwX2FuZF9qb2luKExPT0tVUF9CSU5EX1JFTEVBU0VfQ0cpO1xcbitcXHRpZiAoIUFTU0VSVF9PS19GRChjZywgXFxcImNncm91cF9zZXR1cF9hbmRfam9pblxcXCIpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRza2VsID0gdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2VfX29wZW5fYW5kX2xvYWQoKTtcXG4rXFx0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwsIFxcXCJvcGVuX2FuZF9sb2FkXFxcIikpXFxuK1xcdFxcdGdvdG8gY2xlYW51cDtcXG4rXFxuK1xcdHNrZWwtXFx1MDAzZWxpbmtzLmNvbm5lY3QgPSBicGZfcHJvZ3JhbV9fYXR0YWNoX2Nncm91cChza2VsLVxcdTAwM2Vwcm9ncy5jb25uZWN0LCBjZyk7XFxuK1xcdGlmICghQVNTRVJUX09LX1BUUihza2VsLVxcdTAwM2VsaW5rcy5jb25uZWN0LCBcXFwiYXR0YWNoX2Nncm91cFxcXCIpKVxcbitcXHRcXHRnb3RvIGRlc3Ryb3k7XFxuK1xcbitcXHRzYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDtcXG4rXFx0c2Euc2luX3BvcnQgPSBicGZfaHRvbnMoMTIzNCk7XFxuK1xcdHNhLnNpbl9hZGRyLnNfYWRkciA9IGJwZl9odG9ubChJTkFERFJfTE9PUEJBQ0spO1xcbitcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIExPT0tVUF9CSU5EX1JFTEVBU0VfUkVQOyArK2kpIHtcXG4rXFx0XFx0X19jbG9zZV9mZCBpbnQgc2s7XFxuK1xcbitcXHRcXHRzayA9IHhzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7XFxuK1xcdFxcdGlmIChzayBcXHUwMDNjIDApXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXG4rXFx0XFx0aWYgKHhicGZfbWFwX3VwZGF0ZV9lbGVtKGJwZl9tYXBfX2ZkKHNrZWwtXFx1MDAzZW1hcHMuc29ja21hcCksIFxcdTAwMjZ1MzIoMCksXFxuK1xcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2ssIEJQRl9BTlkpKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdGlmICh4Y29ubmVjdChzaywgKHN0cnVjdCBzb2NrYWRkciAqKVxcdTAwMjZzYSwgc2l6ZW9mKHNhKSkpXFxuK1xcdFxcdFxcdGJyZWFrO1xcbitcXHR9XFxuK1xcbitkZXN0cm95OlxcbitcXHR0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZV9fZGVzdHJveShza2VsKTtcXG4rY2xlYW51cDpcXG4rXFx0Y2xlYW51cF9jZ3JvdXBfZW52aXJvbm1lbnQoKTtcXG4rfVxcbitcXG4gdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4ge1xcbiBcXHRpZiAodGVzdF9fc3RhcnRfc3VidGVzdChcXFwic29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcXFwiKSlcXG5AQCAtMTQ1MSw0ICsxNDk5LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcXG4gXFx0XFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcXG4gXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgdWRwIG11bHRpIGNoYW5uZWxzXFxcIikpXFxuIFxcdFxcdHRlc3Rfc29ja21hcF9tdWx0aV9jaGFubmVscyhTT0NLX0RHUkFNKTtcXG4rXFx0aWYgKHRlc3RfX3N0YXJ0X3N1YnRlc3QoXFxcInNvY2ttYXAgbG9va3VwLWJpbmQtcmVsZWFzZVxcXCIpKVxcbitcXHRcXHR0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSgpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3Rlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5jYzc3YjE5Mzg5M2JkNVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuY1xcbkBAIC0wLDAgKzEsMzcgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JwZi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaW4uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2JwZi9icGZfaGVscGVycy5oXFx1MDAzZVxcbitcXG4rc3RydWN0IHtcXG4rXFx0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcXG4rXFx0X191aW50KG1heF9lbnRyaWVzLCAxKTtcXG4rXFx0X190eXBlKGtleSwgaW50KTtcXG4rXFx0X190eXBlKHZhbHVlLCBpbnQpO1xcbit9IHNvY2ttYXAgU0VDKFxcXCIubWFwc1xcXCIpO1xcbitcXG4rU0VDKFxcXCJjZ3JvdXAvY29ubmVjdDRcXFwiKVxcbitpbnQgY29ubmVjdChzdHJ1Y3QgYnBmX3NvY2tfYWRkciAqY3R4KVxcbit7XFxuK1xcdHN0cnVjdCBicGZfc29jayAqc2s7XFxuK1xcdGludCByZXQgPSBTS19EUk9QO1xcbitcXG4rXFx0c2sgPSBicGZfbWFwX2xvb2t1cF9lbGVtKFxcdTAwMjZzb2NrbWFwLCBcXHUwMDI2KGludCl7MH0pO1xcbitcXHRpZiAoc2spIHtcXG4rXFx0XFx0aWYgKHNrID09IGN0eC1cXHUwMDNlc2spIHtcXG4rXFx0XFx0XFx0c3RydWN0IHNvY2thZGRyX2luIHNhID0ge1xcbitcXHRcXHRcXHRcXHQuc2luX2ZhbWlseSA9IGN0eC1cXHUwMDNldXNlcl9mYW1pbHksXFxuK1xcdFxcdFxcdFxcdC5zaW5fcG9ydCA9IGN0eC1cXHUwMDNldXNlcl9wb3J0LFxcbitcXHRcXHRcXHRcXHQuc2luX2FkZHIuc19hZGRyID0gY3R4LVxcdTAwM2V1c2VyX2lwNFxcbitcXHRcXHRcXHR9O1xcbitcXG4rXFx0XFx0XFx0cmV0ID0gIWJwZl9iaW5kKGN0eCwgKHN0cnVjdCBzb2NrYWRkciAqKVxcdTAwMjZzYSwgc2l6ZW9mKHNhKSk7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGJwZl9za19yZWxlYXNlKHNrKTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4rfVxcbitcXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcXFwibGljZW5zZVxcXCIpID0gXFxcIkdQTFxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjIzLjc3NjA5MzQxOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5Mjk2NzU3ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZHBfYnBmX3VwZGF0ZV9wcm90b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBiZWhhdmlvciBvZiBVRFAgc29ja2V0cyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIGEgQlBGIHNvY2ttYXAgYnkgc2V0dGluZyB0aGUgU09DS19SQ1VfRlJFRSBmbGFnLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGL1VEUCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZDE2YTJkMjY3NWIxMjIzMWUxMzUxY2Q5YzMxNWZkN2UxYTg5OGM4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTk6MTc6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHBfYnBmLmMgYi9uZXQvaXB2NC91ZHBfYnBmLmNcbmluZGV4IGFkNTdjNGM5ZWFhYjZmLi45NzAzMjdiNTk1ODI2OSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3VkcF9icGYuY1xuKysrIGIvbmV0L2lwdjQvdWRwX2JwZi5jXG5AQCAtMTczLDYgKzE3Myw5IEBAIGludCB1ZHBfYnBmX3VwZGF0ZV9wcm90byhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssIGJvb2wgcmVzdG9yZSlcbiBcdGlmIChzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG4gXHRcdHVkcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChwc29jay1cdTAwM2Vza19wcm90byk7XG4gXG4rXHQvKiBUcmVhdCBhbGwgc29ja2V0cyBhcyBub24tcmVmY291bnRlZCwgcmVnYXJkbGVzcyBvZiBiaW5kaW5nIHN0YXRlLiAqL1xuK1x0c29ja19zZXRfZmxhZyhzaywgU09DS19SQ1VfRlJFRSk7XG4rXG4gXHRzb2NrX3JlcGxhY2VfcHJvdG8oc2ssIFx1MDAyNnVkcF9icGZfcHJvdHNbZmFtaWx5XSk7XG4gXHRyZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvc29ja21hcF9iYXNpYy5jXG5pbmRleCBjYjMyMjk3MTFmOTNhMy4uMTE5NzJmZmRiMTZlZDMgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy9zb2NrbWFwX2Jhc2ljLmNcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3NvY2ttYXBfYmFzaWMuY1xuQEAgLTcsNiArNyw3IEBAXG4gXG4gI2luY2x1ZGUgXCJ0ZXN0X3Byb2dzLmhcIlxuICNpbmNsdWRlIFwidGVzdF9za21zZ19sb2FkX2hlbHBlcnMuc2tlbC5oXCJcbisjaW5jbHVkZSBcInRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ0ZXN0X3NvY2ttYXBfdXBkYXRlLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJ0ZXN0X3NvY2ttYXBfaW52YWxpZF91cGRhdGUuc2tlbC5oXCJcbiAjaW5jbHVkZSBcInRlc3Rfc29ja21hcF9za2JfdmVyZGljdF9hdHRhY2guc2tlbC5oXCJcbkBAIC0xNyw2ICsxOCw3IEBAXG4gI2luY2x1ZGUgXCJ0ZXN0X3NvY2ttYXBfbXNnX3BvcF9kYXRhLnNrZWwuaFwiXG4gI2luY2x1ZGUgXCJicGZfaXRlcl9zb2NrbWFwLnNrZWwuaFwiXG4gXG4rI2luY2x1ZGUgXCJjZ3JvdXBfaGVscGVycy5oXCJcbiAjaW5jbHVkZSBcInNvY2ttYXBfaGVscGVycy5oXCJcbiBcbiAjZGVmaW5lIFRDUF9SRVBBSVJcdFx0MTlcdC8qIFRDUCBzb2NrIGlzIHVuZGVyIHJlcGFpciByaWdodCBub3cgKi9cbkBAIC0xMzczLDYgKzEzNzUsNTIgQEAgc3RhdGljIHZvaWQgdGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKGludCBzb3R5cGUpXG4gXHR0ZXN0X3NvY2ttYXBfcGFzc19wcm9nX19kZXN0cm95KHNrZWwpO1xuIH1cbiBcbisjZGVmaW5lIExPT0tVUF9CSU5EX1JFTEVBU0VfQ0dcdFwiL3NvY2ttYXBfbG9va3VwLWJpbmQtcmVsZWFzZVwiXG4rI2RlZmluZSBMT09LVVBfQklORF9SRUxFQVNFX1JFUFx0NjRcbitcbitzdGF0aWMgdm9pZCB0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSh2b2lkKVxuK3tcbitcdHN0cnVjdCB0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSAqc2tlbDtcbitcdHN0cnVjdCBzb2NrYWRkcl9pbiBzYTtcbitcdGludCBjZywgaTtcbitcbitcdGNnID0gY2dyb3VwX3NldHVwX2FuZF9qb2luKExPT0tVUF9CSU5EX1JFTEVBU0VfQ0cpO1xuK1x0aWYgKCFBU1NFUlRfT0tfRkQoY2csIFwiY2dyb3VwX3NldHVwX2FuZF9qb2luXCIpKVxuK1x0XHRyZXR1cm47XG4rXG4rXHRza2VsID0gdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2VfX29wZW5fYW5kX2xvYWQoKTtcbitcdGlmICghQVNTRVJUX09LX1BUUihza2VsLCBcIm9wZW5fYW5kX2xvYWRcIikpXG4rXHRcdGdvdG8gY2xlYW51cDtcbitcbitcdHNrZWwtXHUwMDNlbGlua3MuY29ubmVjdCA9IGJwZl9wcm9ncmFtX19hdHRhY2hfY2dyb3VwKHNrZWwtXHUwMDNlcHJvZ3MuY29ubmVjdCwgY2cpO1xuK1x0aWYgKCFBU1NFUlRfT0tfUFRSKHNrZWwtXHUwMDNlbGlua3MuY29ubmVjdCwgXCJhdHRhY2hfY2dyb3VwXCIpKVxuK1x0XHRnb3RvIGRlc3Ryb3k7XG4rXG4rXHRzYS5zaW5fZmFtaWx5ID0gQUZfSU5FVDtcbitcdHNhLnNpbl9wb3J0ID0gYnBmX2h0b25zKDEyMzQpO1xuK1x0c2Euc2luX2FkZHIuc19hZGRyID0gYnBmX2h0b25sKElOQUREUl9MT09QQkFDSyk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBMT09LVVBfQklORF9SRUxFQVNFX1JFUDsgKytpKSB7XG4rXHRcdF9fY2xvc2VfZmQgaW50IHNrO1xuK1xuK1x0XHRzayA9IHhzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7XG4rXHRcdGlmIChzayBcdTAwM2MgMClcbitcdFx0XHRicmVhaztcbitcbitcdFx0aWYgKHhicGZfbWFwX3VwZGF0ZV9lbGVtKGJwZl9tYXBfX2ZkKHNrZWwtXHUwMDNlbWFwcy5zb2NrbWFwKSwgXHUwMDI2dTMyKDApLFxuK1x0XHRcdFx0XHQgXHUwMDI2c2ssIEJQRl9BTlkpKVxuK1x0XHRcdGJyZWFrO1xuK1xuK1x0XHRpZiAoeGNvbm5lY3Qoc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKilcdTAwMjZzYSwgc2l6ZW9mKHNhKSkpXG4rXHRcdFx0YnJlYWs7XG4rXHR9XG4rXG4rZGVzdHJveTpcbitcdHRlc3Rfc29ja21hcF9sb29rdXBfYmluZF9yZWxlYXNlX19kZXN0cm95KHNrZWwpO1xuK2NsZWFudXA6XG4rXHRjbGVhbnVwX2Nncm91cF9lbnZpcm9ubWVudCgpO1xuK31cbitcbiB2b2lkIHRlc3Rfc29ja21hcF9iYXNpYyh2b2lkKVxuIHtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBjcmVhdGVfdXBkYXRlX2ZyZWVcIikpXG5AQCAtMTQ1MSw0ICsxNDk5LDYgQEAgdm9pZCB0ZXN0X3NvY2ttYXBfYmFzaWModm9pZClcbiBcdFx0dGVzdF9zb2NrbWFwX211bHRpX2NoYW5uZWxzKFNPQ0tfU1RSRUFNKTtcbiBcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCB1ZHAgbXVsdGkgY2hhbm5lbHNcIikpXG4gXHRcdHRlc3Rfc29ja21hcF9tdWx0aV9jaGFubmVscyhTT0NLX0RHUkFNKTtcbitcdGlmICh0ZXN0X19zdGFydF9zdWJ0ZXN0KFwic29ja21hcCBsb29rdXAtYmluZC1yZWxlYXNlXCIpKVxuK1x0XHR0ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZSgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90ZXN0X3NvY2ttYXBfbG9va3VwX2JpbmRfcmVsZWFzZS5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmNjNzdiMTkzODkzYmQ1XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGVzdF9zb2NrbWFwX2xvb2t1cF9iaW5kX3JlbGVhc2UuY1xuQEAgLTAsMCArMSwzNyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvYnBmLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9pbi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjYnBmL2JwZl9oZWxwZXJzLmhcdTAwM2VcbitcbitzdHJ1Y3Qge1xuK1x0X191aW50KHR5cGUsIEJQRl9NQVBfVFlQRV9TT0NLTUFQKTtcbitcdF9fdWludChtYXhfZW50cmllcywgMSk7XG4rXHRfX3R5cGUoa2V5LCBpbnQpO1xuK1x0X190eXBlKHZhbHVlLCBpbnQpO1xuK30gc29ja21hcCBTRUMoXCIubWFwc1wiKTtcbitcbitTRUMoXCJjZ3JvdXAvY29ubmVjdDRcIilcbitpbnQgY29ubmVjdChzdHJ1Y3QgYnBmX3NvY2tfYWRkciAqY3R4KVxuK3tcbitcdHN0cnVjdCBicGZfc29jayAqc2s7XG4rXHRpbnQgcmV0ID0gU0tfRFJPUDtcbitcbitcdHNrID0gYnBmX21hcF9sb29rdXBfZWxlbShcdTAwMjZzb2NrbWFwLCBcdTAwMjYoaW50KXswfSk7XG4rXHRpZiAoc2spIHtcbitcdFx0aWYgKHNrID09IGN0eC1cdTAwM2Vzaykge1xuK1x0XHRcdHN0cnVjdCBzb2NrYWRkcl9pbiBzYSA9IHtcbitcdFx0XHRcdC5zaW5fZmFtaWx5ID0gY3R4LVx1MDAzZXVzZXJfZmFtaWx5LFxuK1x0XHRcdFx0LnNpbl9wb3J0ID0gY3R4LVx1MDAzZXVzZXJfcG9ydCxcbitcdFx0XHRcdC5zaW5fYWRkci5zX2FkZHIgPSBjdHgtXHUwMDNldXNlcl9pcDRcbitcdFx0XHR9O1xuK1xuK1x0XHRcdHJldCA9ICFicGZfYmluZChjdHgsIChzdHJ1Y3Qgc29ja2FkZHIgKilcdTAwMjZzYSwgc2l6ZW9mKHNhKSk7XG4rXHRcdH1cbitcbitcdFx0YnBmX3NrX3JlbGVhc2Uoc2spO1xuK1x0fVxuK1xuK1x0cmV0dXJuIHJldDtcbit9XG4rXG4rY2hhciBfbGljZW5zZVtdIFNFQyhcImxpY2Vuc2VcIikgPSBcIkdQTFwiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTc6MjMuNzc2MDk1Mjg5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE2NTQ5NTc4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYFNPQ0tfUkNVX0ZSRUVgIEZsYWcgaW4gVURQIEJQRioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY0L3VkcF9icGYuY2AgYW5kIGFkZHMgYSBzZWxmLXRlc3QgaW4gdGhlIEJQRiBzZWxmdGVzdHMuIFRoZSBjb3JlIGNoYW5nZSBpbiB0aGUga2VybmVsIGNvZGUgaXRzZWxmIGlzIHNldHRpbmcgdGhlIGBTT0NLX1JDVV9GUkVFYCBmbGFnIG9uIHRoZSBzb2NrZXQgKGBza2ApIHdpdGhpbiBgdWRwX2JwZl91cGRhdGVfcHJvdG9gLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBUaGUgY29udGV4dCBwb2ludHMgdG93YXJkcyBzb21ldGhpbmcgaGFwcGVuaW5nIHdoZW4gYW4gQUZfSU5FVDYgc29ja2V0IGlzIGJlaW5nIHVwZGF0ZWQuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBXaGF0J3MgdGhlICpwdXJwb3NlKiBvZiB0aGlzIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgZnVuY3Rpb24/IFdoeSBhcmUgd2Ugc2V0dGluZyBgU09DS19SQ1VfRlJFRWAgaGVyZT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucz8gRG9lcyB0aGlzIGludHJvZHVjZSBhIHN1YnRsZSBjaGFuZ2UgaW4gbWVtb3J5IG1hbmFnZW1lbnQgb3Igc29ja2V0IGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgY29uY2VybmluZyByZWZlcmVuY2UgY291bnRpbmcgYW5kIGZyZWVpbmc/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSB1c2FnZSBjb250ZXh0LlxuXG5UaW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgLiBJJ2xsIHJ1biBhIHNlYXJjaCBmb3IgYHVkcF9icGZfdXBkYXRlX3Byb3RvYCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gVGhpcyBzaG91bGQgcmV2ZWFsIHRoZSBjYWxsIHNpdGVzIGFuZCBwb3RlbnRpYWxseSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIHRoaXMgY2hhbmdlLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgd2lkZWx5IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWwgaW1wYWN0IGFuZCBhbnkgZGVwZW5kZW5jaWVzIGludm9sdmVkLiBJIG5lZWQgdG8gZnVsbHkgZ3Jhc3AgdGhlICd3aHknIGJlaGluZCB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjI4Ljk0MTU5MzU4OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjkxNjkyNDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF9icGZfdXBkYXRlX3Byb3RvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L3VkcC5oPTY1Mj1zdHJ1Y3Qgc2tfcHNvY2s7XFxuaW5jbHVkZS9uZXQvdWRwLmg6NjUzOmludCB1ZHBfYnBmX3VwZGF0ZV9wcm90byhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssIGJvb2wgcmVzdG9yZSk7XFxuaW5jbHVkZS9uZXQvdWRwLmgtNjU0LSNlbmRpZlxcbi0tXFxubmV0L2lwdjQvdWRwLmM9MzExMD1zdHJ1Y3QgcHJvdG8gdWRwX3Byb3QgPSB7XFxuLS1cXG5uZXQvaXB2NC91ZHAuYy0zMTMxLSNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC91ZHAuYzozMTMyOlxcdC5wc29ja191cGRhdGVfc2tfcHJvdFxcdD0gdWRwX2JwZl91cGRhdGVfcHJvdG8sXFxubmV0L2lwdjQvdWRwLmMtMzEzMy0jZW5kaWZcXG4tLVxcbm5ldC9pcHY0L3VkcF9icGYuYz0xNjE9bGF0ZV9pbml0Y2FsbCh1ZHBfYnBmX3Y0X2J1aWxkX3Byb3RvKTtcXG5uZXQvaXB2NC91ZHBfYnBmLmMtMTYyLVxcbm5ldC9pcHY0L3VkcF9icGYuYzoxNjM6aW50IHVkcF9icGZfdXBkYXRlX3Byb3RvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywgYm9vbCByZXN0b3JlKVxcbm5ldC9pcHY0L3VkcF9icGYuYy0xNjQte1xcbi0tXFxubmV0L2lwdjQvdWRwX2JwZi5jLTE4MS19XFxubmV0L2lwdjQvdWRwX2JwZi5jOjE4MjpFWFBPUlRfU1lNQk9MX0dQTCh1ZHBfYnBmX3VwZGF0ZV9wcm90byk7XFxuLS1cXG5uZXQvaXB2Ni91ZHAuYz0xODc5PXN0cnVjdCBwcm90byB1ZHB2Nl9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjYvdWRwLmMtMTkwMC0jaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxubmV0L2lwdjYvdWRwLmM6MTkwMTpcXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcXHQ9IHVkcF9icGZfdXBkYXRlX3Byb3RvLFxcbm5ldC9pcHY2L3VkcC5jLTE5MDItI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjMyLjYzMzI5MjEyOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NDIyMzc3MTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgQlBGIGFuZCBVRFAgUHJvdG9jb2wgSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBzcGVjaWZpY2FsbHksIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgaXMgYmVpbmcgaG9va2VkIGludG8gdGhlIGAucHNvY2tfdXBkYXRlX3NrX3Byb3RgIGZpZWxkIGZvciBgdWRwX3Byb3RgIGFuZCBgdWRwdjZfcHJvdGAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBjb25kaXRpb25hbCwgb25seSBoYXBwZW5pbmcgd2hlbiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBlbmFibGVkLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHRoZSBCUEYgc3lzY2FsbCBpbnRlZ3JhdGlvbiBpcyB3aGF0J3MgZHJpdmluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gd2hlcmUgYHVkcF9icGYuY2AgaXMgYWN0dWFsbHkgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBJICp0aGluayogaXQncyBpbiBgbmV0L2lwdjQvYCwgYnV0IEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgTWFrZWZpbGVgIGluIHRoYXQgZGlyZWN0b3J5LiBHb3R0YSBiZSBzdXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGFzIEkgZXhwZWN0IHRoZW0gdG8gYmUuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDcyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTc6NDguMDU1NjcxOTU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzExMjkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxubmV0L2lwdjQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVExBQkVMKSArPSBjaXBzb19pcHY0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTc6NDguMjMyNzkxNjY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzNjkwMDI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVEUCBCUEYgSW50ZWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoYXQgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIGNydWNpYWwgY29uZmlnIG9wdGlvbiB0aGF0IGVuYWJsZXMgdGhlIGVudGlyZSBmdW5jdGlvbmFsaXR5LiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBJIG5lZWQgdG8gYmUgc3VyZSBhbnkgc3lzdGVtcyB1dGlsaXppbmcgdGhpcyBoYXZlIHRoYXQgc2V0IGNvcnJlY3RseS5cblxuVGhlIGZ1bmN0aW9uIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgaXMgdGhlIG9uZSB0aGF0J3MgY2FsbGVkIHdoZW5ldmVyIGEgVURQIHNvY2tldCBpcyBhZGRlZCB0byBhIHNvY2ttYXAgb3IgYSBjb21wYXJhYmxlIEJQRiBzdHJ1Y3R1cmUuIEludGVyZXN0aW5nLiBJIHNlZSB0aGV5J3JlIHNldHRpbmcgYFNPQ0tfUkNVX0ZSRUVgIG9uIHRoZSBzb2NrZXQuIFRoYXQncyBhIHBhdHRlcm4sIHVzdWFsbHkgcmVsYXRlZCB0byBob3cgdGhlIHNvY2tldCBpcyBoYW5kbGVkIGR1cmluZyBkZS1hbGxvY2F0aW9uLCBhbmQgZW5zdXJpbmcgdGhhdCBhbnkgQlBGIGNvbnRleHQgdXNpbmcgdGhlIHNvY2tldCBoYXMgdGltZSB0byBmaW5hbGl6ZS4gVGhhdCdzIGltcG9ydGFudCBmb3IgdGhlIGNvcnJlY3RuZXNzIG9mIEJQRiBwcm9ncmFtcy5cblxuUmlnaHQsIHNvLCBteSBmaXJzdCB0aG91Z2h0IGlzIHRvIGVuc3VyZSBJIGhhdmUgYWxsIHRoZSBjb25maWdzIHJpZ2h0LiBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBubyBxdWVzdGlvbi4gQnV0IGFyZSB0aGVyZSAqYW55KiBvdGhlciBkZXBlbmRlbmNpZXM/IExldCBtZSBkb3VibGUtY2hlY2suIE9rYXksIGl0IGxvb2tzIGxpa2UgYHVkcF9icGYub2AgaXMgY29tcGlsZWQgZGlyZWN0bHkgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYCwgc28gYENPTkZJR19ORVRfU09DS19NU0dgIGlzIG5vdCByZXF1aXJlZC4gVGhhdCBlbGltaW5hdGVzIGEgcG90ZW50aWFsIHBvaW50IG9mIGZhaWx1cmUuXG5cbkFscmlnaHQsIGxldCdzIG5vdyBkcmlsbCBkb3duIGludG8gYG5ldC9pcHY0L3VkcF9icGYuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0IHdvcmtzIGFuZCB3aGF0IHRoZSBzb2NrZXQgbGlmZWN5Y2xlIGltcGxpY2F0aW9ucyBhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4ODIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTc6NTMuMjY5Njk1NDM1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3VkcF9icGYuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjMsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjM6XFx0aW50IHVkcF9icGZfdXBkYXRlX3Byb3RvKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywgYm9vbCByZXN0b3JlKVxcbiAxNjQ6XFx0e1xcbiAxNjU6XFx0XFx0aW50IGZhbWlseSA9IHNrLVxcdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVCA/IFVEUF9CUEZfSVBWNCA6IFVEUF9CUEZfSVBWNjtcXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0aWYgKHJlc3RvcmUpIHtcXG4gMTY4OlxcdFxcdFxcdFdSSVRFX09OQ0Uoc2stXFx1MDAzZXNrX3dyaXRlX3NwYWNlLCBwc29jay1cXHUwMDNlc2F2ZWRfd3JpdGVfc3BhY2UpO1xcbiAxNjk6XFx0XFx0XFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBwc29jay1cXHUwMDNlc2tfcHJvdG8pO1xcbiAxNzA6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDE3MTpcXHRcXHR9XFxuIDE3MjpcXHRcXG4gMTczOlxcdFxcdGlmIChzay1cXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxcbiAxNzQ6XFx0XFx0XFx0dWRwX2JwZl9jaGVja192Nl9uZWVkc19yZWJ1aWxkKHBzb2NrLVxcdTAwM2Vza19wcm90byk7XFxuIDE3NTpcXHRcXG4gMTc2OlxcdFxcdC8qIFRyZWF0IGFsbCBzb2NrZXRzIGFzIG5vbi1yZWZjb3VudGVkLCByZWdhcmRsZXNzIG9mIGJpbmRpbmcgc3RhdGUuICovXFxuIDE3NzpcXHRcXHRzb2NrX3NldF9mbGFnKHNrLCBTT0NLX1JDVV9GUkVFKTtcXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0c29ja19yZXBsYWNlX3Byb3RvKHNrLCBcXHUwMDI2dWRwX2JwZl9wcm90c1tmYW1pbHldKTtcXG4gMTgwOlxcdFxcdHJldHVybiAwO1xcbiAxODE6XFx0fVxcbiAxODI6XFx0RVhQT1JUX1NZTUJPTF9HUEwodWRwX2JwZl91cGRhdGVfcHJvdG8pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxOToxNzo1My4yNjk4NjQ1MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTM3NjUyNzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBVRFAgQlBGIFByb3RvY29sIFVwZGF0ZSoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIG5vdGhpbmcgZWFydGgtc2hhdHRlcmluZy4gVGhlIGNvcmUgb2YgaXQgaW52b2x2ZXMgc2V0dGluZyB0aGUgYFNPQ0tfUkNVX0ZSRUVgIGZsYWcgb24gdGhlIHNvY2tldC4gVGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgaW50ZXJlc3QgaXMgYHVkcF9icGZfdXBkYXRlX3Byb3RvYC4gTXkgZm9jdXMgaXMgemVyb2VkIGluIG9uIHRoYXQgc3BlY2lmaWMgc3ltYm9sLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zIHRob3JvdWdobHkuXG5cblJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgYENPTkZJR19CUEZfU1lTQ0FMTGAgY29uZmlnIGlzIGludm9sdmVkLiBCdXQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgY29tZSBpbnRvIHBsYXksIHBvdGVudGlhbGx5IGFzIGRlcGVuZGVuY2llcyBvciBiZWNhdXNlIG9mIHJlbGF0ZWQgZnVuY3Rpb25hbGl0aWVzLiBUaGUgc2VsZnRlc3RzIGltbWVkaWF0ZWx5IG9mZmVyIHNvbWUgY2x1ZXMsIHRoZXkncmUgdXNpbmcgYHNvY2ttYXBgIGFuZCBgYnBmX2JpbmRgLCB0aGF0IGdldHMgbXkgYXR0ZW50aW9uLiBEb2VzIHRoaXMgY2hhbmdlIHJlcXVpcmUgYENPTkZJR19DR1JPVVBfQlBGYCBhcyB3ZWxsPyBBaCwgeWVzLCBsb29raW5nIGF0IHRoZSBzZWxmdGVzdCBzb3VyY2UgaXQgdXNlcyBgU0VDKFwiY2dyb3VwL2Nvbm5lY3Q0XCIpYCBhbmQgYGJwZl9wcm9ncmFtX19hdHRhY2hfY2dyb3VwYC5cblxuSG93ZXZlciwgdGhlIGNlbnRyYWwgbW9kaWZpY2F0aW9uIGlzIHdpdGhpbiBgdWRwX2JwZl91cGRhdGVfcHJvdG9gLCBhbmQgdGhhdOKAmXMgYnVpbHQgd2l0aCBgQ09ORklHX0JQRl9TWVNDQUxMYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhpcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBleGFjdCByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIGBzb2NrbWFwYCBhbmQgYENPTkZJR19CUEZfU1lTQ0FMTGAgdG8gYmUgc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3J1Y2lhbC4gQXJlIHRoZXJlIGFueSBvdGhlciBkZXBlbmRlbmNpZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWF5IGJlIG5lY2Vzc2FyeSBvciByZWNvbW1lbmRlZCB0byB1c2UgYWxvbmcgc2lkZSB0aGlzIGNoYW5nZT9cblxuXG4iLCJJbnB1dFRva2VucyI6NTc3MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDE5OjE3OjU4LjQwNzUyMDc5NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzg2OTI4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb2NrbWFwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxOToxNzo1OC41MTAzMTkxMDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2MjYzNjIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCdzIHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLZXJuZWwncyBOZXR3b3JrIENvcmU6IExvY2F0aW5nIGBzb2NrX21hcGAqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGBzb2NrX21hcGAsIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBUaGUgbmV0d29ya2luZyBjb3JlIGlzIHVzdWFsbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIGBuZXQvY29yZS9NYWtlZmlsZWAgaXMgYWxtb3N0IGNlcnRhaW5seSB3aGVyZSBjcnVjaWFsIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIGFuZCByZWxhdGlvbnNoaXBzIGZvciBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50cyBhcmUgZGVmaW5lZC4gSXQncyB0aGUgTWFrZWZpbGUgdGhhdCBvcmNoZXN0cmF0ZXMgbXVjaCBvZiB0aGUga2VybmVsJ3MgbmV0d29yayBtb2R1bGUgY29tcGlsYXRpb24uIFNvLCBjaGVja2luZyB0aGF0IGZpbGUgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcC4gSSBzdXNwZWN0IHRoYXQgYHNvY2tfbWFwYCwgd2hhdGV2ZXIgaXQgaXMgcmVsYXRlZCB0bywgbGlrZWx5IGhhcyBpdHMgY29tcGlsYXRpb24gYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgbGlzdGVkIHRoZXJlLiBUaGlzIGlzIGEgY29tbW9uIGFuZCBlZmZpY2llbnQgd2F5IHRvIG5hdmlnYXRlIHRoZSBrZXJuZWwgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzE3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTg6MDIuMDcyOTU5NzU2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ3Njc2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic29ja19tYXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvTWFrZWZpbGU9NDQ9b2JqLSQoQ09ORklHX05FVF9TT0NLX01TRykgKz0gc2ttc2cub1xcbm5ldC9jb3JlL01ha2VmaWxlOjQ1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc29ja19tYXAub1xcbm5ldC9jb3JlL01ha2VmaWxlLTQ2LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnBmX3NrX3N0b3JhZ2Uub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxOToxODowMi4yMDc3MzUzODNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM2OTg2Mzk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBVRFAgU29ja21hcCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBVRFAgc29ja2V0cyB3aXRoaW4gdGhlIHNvY2ttYXAgZnJhbWV3b3JrLiBUaGUgY2VudHJhbCBjb25maWd1cmF0aW9uIGtub2IgaGVyZSBpcyBjbGVhcmx5IGBDT05GSUdfQlBGX1NZU0NBTExgLCBhbmQgSSBuZWVkIHRvIGNoZWNrIGlmIGFueSBvdGhlciBjb25maWdzIGFyZSByZWxldmFudCB0byB0aGlzIGlzc3VlLiBUaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggaG93IFVEUCBzb2NrZXRzIGJlaGF2ZSBpbiB0aGUgY29udGV4dCBvZiBhIHNvY2ttYXAuIFRoZSBzZWxmdGVzdCB1c2VzIHN0YW5kYXJkIEJQRiBtYXAgb3BlcmF0aW9ucywgc3BlY2lmaWNhbGx5IGBicGZfbWFwX2xvb2t1cF9lbGVtYCwgYGJwZl9iaW5kYCwgYW5kIGBicGZfc2tfcmVsZWFzZWAuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoZSBwcm9ibGVtIHByb2JhYmx5IHN0ZW1tZWQgZnJvbSB0aGUgd2F5IHNvY2tldHMgYXJlIGJlaW5nIHJlbGVhc2VkIGFmdGVyIGJlaW5nIHJldHJpZXZlZCBmcm9tIHRoZSBzb2NrbWFwLCBlc3BlY2lhbGx5IGlmIGBicGZfYmluZGAgd2FzIHN1YnNlcXVlbnRseSBjYWxsZWQgb24gYSBzb2NrZXQgYWZ0ZXIgbG9va3VwLiBUaGUgcGF0Y2ggcmVzb2x2ZXMgdGhpcyBieSBzZXR0aW5nIHRoZSBgU09DS19SQ1VfRlJFRWAgZmxhZyBvbiB0aGUgc29ja2V0IHdoZW4gaXQgZ2V0cyBhZGRlZCB0byB0aGUgc29ja21hcCwgYW5kIHRoaXMgY2FsbHMgYHVkcF9icGZfdXBkYXRlX3Byb3RvYC4gVGhpcyByZWFsbHkgc2NyZWFtcyBcIndvcnRoIGZ1enppbmdcIiB0byBtZSwgcmlnaHQgYXdheS5cblxuSSBuZWVkIHRvIG5haWwgZG93biB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGNoYW5nZS4gSSdtIGZvY3VzaW5nIG9uIGB1ZHBfYnBmX3VwZGF0ZV9wcm90b2AgYW5kIHRoZW4gSSdsbCBsb29rIGF0IHRoZSBicm9hZGVyIGBzb2NrX21hcF91cGRhdGVfZWxlbWAgYXMgd2VsbCB0byBtYWtlIHN1cmUgSSBkb24ndCBtaXNzIGFueXRoaW5nLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gd2hldGhlciBgdWRwX2JwZl91cGRhdGVfcHJvdG9gIGlzIGEgaG90IHBhdGguIEl0J3MgdHJpZ2dlcmVkIHdoZW4gYSBVRFAgc29ja2V0IGlzIGFkZGVkIHRvIHRoZSBzb2NrbWFwLiBJdCdzIG5vdCBpbiB0aGUgcGF0aCBvZiBhY3R1YWwgcGFja2V0IHByb2Nlc3Npbmc7IHNvIHRoaXMgaXMgbm90IGEgcGVyZm9ybWFuY2UgY3JpdGljYWwgcGF0aCwgd2hpY2ggY2hhbmdlcyBob3cgSSB2aWV3IHRoZSByaXNrLlxuXG5CYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJJ20gZ29pbmcgdG8gc2V0IHNvbWUgcGFyYW1ldGVycyBmb3IgdGhpcyBhbmFseXNpczpcblxuKiAgICoqV29ydGhGdXp6aW5nKio6IGB0cnVlYCAoQWJzb2x1dGVseS4gVGhpcyBpcyBhIHBvdGVudGlhbCBmdW5jdGlvbmFsIGJ1ZylcbiogICAqKkZvY3VzU3ltYm9scyoqOiBgW1widWRwX2JwZl91cGRhdGVfcHJvdG9cIl1gIChUaGlzIGlzIHRoZSBrZXkgZnVuY3Rpb24gaW4gdGhlIGNvcmUgbG9naWMpXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJCUEZfU1lTQ0FMTFwiXWAgKFRoaXMgaXMgdGhlIHByaW1hcnkgZGVwZW5kZW5jeSlcbiogICAqKlJlYXNvbmluZyoqOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgVURQIHNvY2tldHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBhIEJQRiBzb2NrbWFwIGJ5IHNldHRpbmcgdGhlIFNPQ0tcXF9SQ1VcXF9GUkVFIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYvVURQIGxvZ2ljLCB3aGljaCBtYWtlcyBpdCBpbXBvcnRhbnQgdG8gcmV2aWV3LlwiXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NDAsIk91dHB1dFRva2VucyI6OTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTk6MTg6MDkuNTc3NjAzNTE1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4MTUzNjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF9icGZfdXBkYXRlX3Byb3RvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIFVEUCBzb2NrZXRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gYSBCUEYgc29ja21hcCBieSBzZXR0aW5nIHRoZSBTT0NLX1JDVV9GUkVFIGZsYWcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYvVURQIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX2JwZl91cGRhdGVfcHJvdG9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgVURQIHNvY2tldHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBhIEJQRiBzb2NrbWFwIGJ5IHNldHRpbmcgdGhlIFNPQ0tfUkNVX0ZSRUUgZmxhZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRi9VRFAgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowqqc87[1] Phase: Succeeded StartedAt: 2026-06-23 19:18:39 +0000 UTC FinishedAt: 2026-06-23 19:18:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 19:18:39 +0000 UTC FinishedAt: 2026-06-23 19:18:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2] Phase: Succeeded StartedAt: 2026-06-23 19:18:39 +0000 UTC FinishedAt: 2026-06-23 23:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 19:18:39 +0000 UTC FinishedAt: 2026-06-23 23:25:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-23 19:18:39 +0000 UTC FinishedAt: 2026-06-23 19:19:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-23 19:18:39 +0000 UTC FinishedAt: 2026-06-23 19:18:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowqqc87/series-workflowqqc87-convert-artifact-3394357614/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-23 19:19:05 +0000 UTC FinishedAt: 2026-06-23 19:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-23 19:19:05 +0000 UTC FinishedAt: 2026-06-23 19:47:04 +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:*4f96e33e-41ae-424c-bfde-6863efd1a307,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-workflowqqc87/series-workflowqqc87-convert-artifact-3394357614/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": "f26d23ac-ef95-4970-9dd6-d38ad656f476", "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-workflowqqc87/series-workflowqqc87-build-action-1251086548/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-23 19:19:05 +0000 UTC FinishedAt: 2026-06-23 19:46:54 +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:*4f96e33e-41ae-424c-bfde-6863efd1a307,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-workflowqqc87/series-workflowqqc87-convert-artifact-3394357614/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": "f26d23ac-ef95-4970-9dd6-d38ad656f476", "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-workflowqqc87/series-workflowqqc87-build-action-1251086548/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-23 19:47:04 +0000 UTC FinishedAt: 2026-06-23 19:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-23 19:47:04 +0000 UTC FinishedAt: 2026-06-23 19:47:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-23 19:47:04 +0000 UTC FinishedAt: 2026-06-23 19:47:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-23 19:47:04 +0000 UTC FinishedAt: 2026-06-23 19:47:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowqqc87/series-workflowqqc87-convert-artifact-139199073/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-23 19:47:37 +0000 UTC FinishedAt: 2026-06-23 19:49:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-23 19:47:37 +0000 UTC FinishedAt: 2026-06-23 19:49:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f26d23ac-ef95-4970-9dd6-d38ad656f476,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-workflowqqc87/series-workflowqqc87-build-action-1251086548/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-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-23 19:49:26 +0000 UTC FinishedAt: 2026-06-23 19:49:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-23 19:49:26 +0000 UTC FinishedAt: 2026-06-23 19:49:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-23 19:49:26 +0000 UTC FinishedAt: 2026-06-23 20:20:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-23 19:49:26 +0000 UTC FinishedAt: 2026-06-23 20:20:26 +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:*4f96e33e-41ae-424c-bfde-6863efd1a307,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-workflowqqc87/series-workflowqqc87-convert-artifact-139199073/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": "34f5b88e-577c-424f-a1c2-b4e131c6aae4", "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-workflowqqc87/series-workflowqqc87-build-action-690193261/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-23 19:49:26 +0000 UTC FinishedAt: 2026-06-23 20:20: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:*4f96e33e-41ae-424c-bfde-6863efd1a307,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-workflowqqc87/series-workflowqqc87-convert-artifact-139199073/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": "34f5b88e-577c-424f-a1c2-b4e131c6aae4", "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-workflowqqc87/series-workflowqqc87-build-action-690193261/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-23 20:20:26 +0000 UTC FinishedAt: 2026-06-23 20:20:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-23 20:20:26 +0000 UTC FinishedAt: 2026-06-23 20:20:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-23 20:20:26 +0000 UTC FinishedAt: 2026-06-23 20:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-23 20:20:26 +0000 UTC FinishedAt: 2026-06-23 20:22:14 +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:*34f5b88e-577c-424f-a1c2-b4e131c6aae4,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-workflowqqc87/series-workflowqqc87-build-action-690193261/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-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-23 20:22:24 +0000 UTC FinishedAt: 2026-06-23 23:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-23 20:22:24 +0000 UTC FinishedAt: 2026-06-23 23:25:23 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"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:*f26d23ac-ef95-4970-9dd6-d38ad656f476,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*34f5b88e-577c-424f-a1c2-b4e131c6aae4,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-workflowqqc87/series-workflowqqc87-build-action-1251086548/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-workflowqqc87/series-workflowqqc87-build-action-690193261/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-23 20:22:24 +0000 UTC FinishedAt: 2026-06-23 20:22:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-23 20:22:24 +0000 UTC FinishedAt: 2026-06-23 20:22:29 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"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-workflowqqc87/series-workflowqqc87-convert-artifact-2946629622/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-23 20:22:24 +0000 UTC FinishedAt: 2026-06-23 20:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-23 20:22:24 +0000 UTC FinishedAt: 2026-06-23 20:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-23 20:22:24 +0000 UTC FinishedAt: 2026-06-23 20:22:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-23 20:22:34 +0000 UTC FinishedAt: 2026-06-23 23:25:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqqc87[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["udp_bpf_update_proto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"12091470c6b4c1c14b2de12dcbae2ada6cb6d20b","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"07ec6cb3-1bc2-41be-ab1f-e058db27674e","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-23 20:22:34 +0000 UTC FinishedAt: 2026-06-23 23:25:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f26d23ac-ef95-4970-9dd6-d38ad656f476,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*34f5b88e-577c-424f-a1c2-b4e131c6aae4,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-workflowqqc87/series-workflowqqc87-build-action-1251086548/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-workflowqqc87/series-workflowqqc87-build-action-690193261/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-workflowqqc87/series-workflowqqc87-convert-artifact-2946629622/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,}